|
|
|
@ -37,30 +37,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column header-align="center" field="name" width="160" title="产品名称"
|
|
|
|
<vxe-column header-align="center" field="name" width="160" title="产品名称"
|
|
|
|
:edit-render="{ name: 'input', attrs: { type: 'text' } }" />
|
|
|
|
:edit-render="{ name: 'input', attrs: { type: 'text' } }" />
|
|
|
|
<vxe-column header-align="center" field="price" width="160" title="价格"
|
|
|
|
<vxe-column header-align="center" field="price" width="160" title="价格"
|
|
|
|
:edit-render="{ name: 'input', attrs: { type: 'text' } }" />
|
|
|
|
:edit-render="{ name: 'input', attrs: { type: 'text' } }" />
|
|
|
|
<vxe-column align="center" field="status" width="140" title="状态"
|
|
|
|
<vxe-column align="center" field="status" width="140" title="状态"
|
|
|
|
:edit-render="{ name: 'VxeSelect', options: [{ label: '启用', value: 1 },{ label: '禁用', value: 0 }] }" />
|
|
|
|
:edit-render="{ name: 'VxeSelect', options: [{ label: '启用', value: 1 },{ label: '禁用', value: 0 }] }" />
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column
|
|
|
|
<vxe-column align="center" field="can_multi_num" width="120" title="数量显示"
|
|
|
|
align="center"
|
|
|
|
:edit-render="{ name: 'VxeSelect', options: [{ label: '不显示', value: 0 },{ label: '显示', value: 1 }] }" />
|
|
|
|
field="site_id"
|
|
|
|
|
|
|
|
width="160"
|
|
|
|
<vxe-column
|
|
|
|
title="关联站点"
|
|
|
|
align="center"
|
|
|
|
:edit-render="{ name: 'VxeTreeSelect', options: siteType, props: { multiple: true }, optionProps: { value: 'id', label: 'name' } }"
|
|
|
|
field="site_id"
|
|
|
|
/>
|
|
|
|
width="160"
|
|
|
|
|
|
|
|
title="关联站点"
|
|
|
|
<vxe-column field="cover_id" min-width="180" title="标题图片" header-align="center" align="left" :edit-render="{}">
|
|
|
|
:edit-render="{ name: 'VxeTreeSelect', options: siteType, props: { multiple: true }, optionProps: { value: 'id', label: 'name' } }"
|
|
|
|
<template #default="{ row }">
|
|
|
|
/>
|
|
|
|
<vxe-upload mode='image' :image-config="{width:40,height:40}" v-model="row['cover']" name-field="original_name" readonly progress-text="{percent}%"
|
|
|
|
|
|
|
|
:more-config="{ maxCount: 1, layout: 'horizontal' }" :show-button-text="false" />
|
|
|
|
<vxe-column field="cover_id" min-width="180" title="标题图片" header-align="center" align="left" :edit-render="{}">
|
|
|
|
</template>
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<vxe-upload mode='image' :image-config="{width:40,height:40}" v-model="row['cover']" name-field="original_name" readonly progress-text="{percent}%"
|
|
|
|
<vxe-upload mode='image' :image-config="{width:40,height:40}" v-model="row['cover']" name-field="original_name" progress-text="{percent}%"
|
|
|
|
:more-config="{ maxCount: 1, layout: 'horizontal' }" :show-button-text="false" />
|
|
|
|
:more-config="{ maxCount: 1, layout: 'horizontal' }" :limit-size="uploadSize / 1024 / 1024"
|
|
|
|
</template>
|
|
|
|
:show-button-text="false" :upload-method="({file}) => uploadMethod(file)" />
|
|
|
|
<template #edit="{ row }">
|
|
|
|
</template>
|
|
|
|
<vxe-upload mode='image' :image-config="{width:40,height:40}" v-model="row['cover']" name-field="original_name" progress-text="{percent}%"
|
|
|
|
</vxe-column>
|
|
|
|
:more-config="{ maxCount: 1, layout: 'horizontal' }" :limit-size="uploadSize / 1024 / 1024"
|
|
|
|
|
|
|
|
:show-button-text="false" :upload-method="({file}) => uploadMethod(file)" />
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</vxe-column>
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column field="images_ids" min-width="180" title="产品图集" header-align="center" align="left" :edit-render="{}">
|
|
|
|
<vxe-column field="images_ids" min-width="180" title="产品图集" header-align="center" align="left" :edit-render="{}">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
|
@ -72,55 +75,55 @@
|
|
|
|
:more-config="{maxCount:1,layout: 'horizontal' }" :limit-size="uploadSize / 1024 / 1024"
|
|
|
|
:more-config="{maxCount:1,layout: 'horizontal' }" :limit-size="uploadSize / 1024 / 1024"
|
|
|
|
:show-button-text="false" :upload-method="({file}) => uploadMethod(file)" />
|
|
|
|
:show-button-text="false" :upload-method="({file}) => uploadMethod(file)" />
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</vxe-column>
|
|
|
|
</vxe-column>
|
|
|
|
<vxe-column header-align="center" field="introduce" width="160" title="产品简介"
|
|
|
|
<vxe-column header-align="center" field="introduce" width="160" title="产品简介"
|
|
|
|
:edit-render="{ name: 'input', attrs: { type: 'textarea' } }" />
|
|
|
|
:edit-render="{ name: 'input', attrs: { type: 'textarea' } }" />
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column v-if="false" align="center" header-align="center" field="content" width="120" title="适用人群" :edit-render="{}">
|
|
|
|
<vxe-column v-if="false" align="center" header-align="center" field="content" width="120" title="适用人群" :edit-render="{}">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['content'], readonly: true, fieldName: 'content', row })">查看</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['content'], readonly: true, fieldName: 'content', row })">查看</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['content'], readonly: false, fieldName: 'content', row })">编辑</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['content'], readonly: false, fieldName: 'content', row })">编辑</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</vxe-column>
|
|
|
|
</vxe-column>
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column align="center" header-align="center" field="flow_content" width="120" title="服务流程" :edit-render="{}">
|
|
|
|
<vxe-column align="center" header-align="center" field="flow_content" width="120" title="服务流程" :edit-render="{}">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['flow_content'], readonly: true, fieldName: 'flow_content', row })">查看</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['flow_content'], readonly: true, fieldName: 'flow_content', row })">查看</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['flow_content'], readonly: false, fieldName: 'flow_content', row })">编辑</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['flow_content'], readonly: false, fieldName: 'flow_content', row })">编辑</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</vxe-column>
|
|
|
|
</vxe-column>
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column align="center" header-align="center" field="price_content" width="120" title="注意事项" :edit-render="{}">
|
|
|
|
<vxe-column align="center" header-align="center" field="price_content" width="120" title="注意事项" :edit-render="{}">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['price_content'], readonly: true, fieldName: 'price_content', row })">查看</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['price_content'], readonly: true, fieldName: 'price_content', row })">查看</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['price_content'], readonly: false, fieldName: 'price_content', row })">编辑</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['price_content'], readonly: false, fieldName: 'price_content', row })">编辑</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</vxe-column>
|
|
|
|
</vxe-column>
|
|
|
|
<vxe-column v-if="false" align="center" header-align="center" field="appoint_content" width="120" title="预约须知" :edit-render="{}">
|
|
|
|
<vxe-column v-if="false" align="center" header-align="center" field="appoint_content" width="120" title="预约须知" :edit-render="{}">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-search"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['appoint_content'], readonly: true, fieldName: 'appoint_content', row })">查看</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['appoint_content'], readonly: true, fieldName: 'appoint_content', row })">查看</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<template #edit="{ row }">
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
<el-button slot="reference" size="small" type="primary" icon="el-icon-edit"
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['appoint_content'], readonly: false, fieldName: 'appoint_content', row })">编辑</el-button>
|
|
|
|
@click="$refs['RichTextModal'].open({ text: row['appoint_content'], readonly: false, fieldName: 'appoint_content', row })">编辑</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</vxe-column>
|
|
|
|
</vxe-column>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<vxe-column field="operate" header-align="center" title="操作" min-width="220">
|
|
|
|
<vxe-column field="operate" header-align="center" title="操作" min-width="220">
|
|
|
|
@ -188,7 +191,7 @@
|
|
|
|
import axios from 'axios'
|
|
|
|
import axios from 'axios'
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
getToken
|
|
|
|
getToken
|
|
|
|
} from '@/utils/auth'
|
|
|
|
} from '@/utils/auth'
|
|
|
|
import { index as siteIndex } from '@/api/site/site'
|
|
|
|
import { index as siteIndex } from '@/api/site/site'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -213,7 +216,7 @@
|
|
|
|
select: {
|
|
|
|
select: {
|
|
|
|
page: 1,
|
|
|
|
page: 1,
|
|
|
|
page_size: 20,
|
|
|
|
page_size: 20,
|
|
|
|
keyword: '',
|
|
|
|
keyword: '',
|
|
|
|
type:1,
|
|
|
|
type:1,
|
|
|
|
show_relation: ['cover']
|
|
|
|
show_relation: ['cover']
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -228,6 +231,7 @@
|
|
|
|
images_ids: [],
|
|
|
|
images_ids: [],
|
|
|
|
introduce: '',
|
|
|
|
introduce: '',
|
|
|
|
status: 1,
|
|
|
|
status: 1,
|
|
|
|
|
|
|
|
can_multi_num: 0,
|
|
|
|
content: '',
|
|
|
|
content: '',
|
|
|
|
flow_content: '',
|
|
|
|
flow_content: '',
|
|
|
|
price_content: '',
|
|
|
|
price_content: '',
|
|
|
|
@ -242,7 +246,7 @@
|
|
|
|
'message': '产品名称必填'
|
|
|
|
'message': '产品名称必填'
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
siteType:[]
|
|
|
|
siteType:[]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -262,11 +266,11 @@
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
created() {
|
|
|
|
if(this.$route.path){
|
|
|
|
if(this.$route.path){
|
|
|
|
this.select.type = this.$route.path.split("_")[1]
|
|
|
|
this.select.type = this.$route.path.split("_")[1]
|
|
|
|
this.form.type = this.$route.path.split("_")[1]
|
|
|
|
this.form.type = this.$route.path.split("_")[1]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.getSite()
|
|
|
|
this.getSite()
|
|
|
|
this.getList()
|
|
|
|
this.getList()
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -357,30 +361,30 @@
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
async getSite() {
|
|
|
|
async getSite() {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const res = await siteIndex({
|
|
|
|
const res = await siteIndex({
|
|
|
|
page: 1,
|
|
|
|
page: 1,
|
|
|
|
page_size: 999,
|
|
|
|
page_size: 999,
|
|
|
|
}, false)
|
|
|
|
}, false)
|
|
|
|
this.siteType = res.data
|
|
|
|
this.siteType = res.data
|
|
|
|
} catch (err) {
|
|
|
|
} catch (err) {
|
|
|
|
console.error(err)
|
|
|
|
console.error(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
async getList() {
|
|
|
|
async getList() {
|
|
|
|
this.loading = true
|
|
|
|
this.loading = true
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const res = await index({
|
|
|
|
const res = await index({
|
|
|
|
...this.select,
|
|
|
|
...this.select,
|
|
|
|
filter:[{
|
|
|
|
filter:[{
|
|
|
|
key:'type',
|
|
|
|
key:'type',
|
|
|
|
op:'eq',
|
|
|
|
op:'eq',
|
|
|
|
value:this.select.type
|
|
|
|
value:this.select.type
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
}, false)
|
|
|
|
}, false)
|
|
|
|
res.data.map(item=>{
|
|
|
|
res.data.map(item=>{
|
|
|
|
item.site_id = item.site_id.split(",")
|
|
|
|
item.site_id = item.site_id.split(",")
|
|
|
|
})
|
|
|
|
})
|
|
|
|
this.tableData = res.data
|
|
|
|
this.tableData = res.data
|
|
|
|
this.total = res.total
|
|
|
|
this.total = res.total
|
|
|
|
@ -409,29 +413,29 @@
|
|
|
|
const form = deepCopy(this.form)
|
|
|
|
const form = deepCopy(this.form)
|
|
|
|
for (const key in form) {
|
|
|
|
for (const key in form) {
|
|
|
|
form[key] = row[key]
|
|
|
|
form[key] = row[key]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log("this.row",row)
|
|
|
|
console.log("this.row",row)
|
|
|
|
if(Array.isArray(row['cover']) && row['cover'].length>0){
|
|
|
|
if(Array.isArray(row['cover']) && row['cover'].length>0){
|
|
|
|
form['cover_id'] = row['cover'][0]?.response?.id ?? ''
|
|
|
|
form['cover_id'] = row['cover'][0]?.response?.id ?? ''
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(row['images'].length>0){
|
|
|
|
|
|
|
|
let arr = []
|
|
|
|
|
|
|
|
row['images'].map(item=>{
|
|
|
|
|
|
|
|
if(item.response){
|
|
|
|
|
|
|
|
console.log("item.response.id",item.response.id)
|
|
|
|
|
|
|
|
arr.push(item.response.id)
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
arr.push(item.id)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
form['images_ids'] = arr
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
form['images_ids'] = []
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(row['images'].length>0){
|
|
|
|
if(row.site_id.length>0){
|
|
|
|
let arr = []
|
|
|
|
form.site_id = row.site_id.join(",")
|
|
|
|
row['images'].map(item=>{
|
|
|
|
|
|
|
|
if(item.response){
|
|
|
|
|
|
|
|
console.log("item.response.id",item.response.id)
|
|
|
|
|
|
|
|
arr.push(item.response.id)
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
arr.push(item.id)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
form['images_ids'] = arr
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
form['images_ids'] = []
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(row.site_id.length>0){
|
|
|
|
|
|
|
|
form.site_id = row.site_id.join(",")
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log("this.form",form)
|
|
|
|
console.log("this.form",form)
|
|
|
|
// return
|
|
|
|
// return
|
|
|
|
this.loading = true
|
|
|
|
this.loading = true
|
|
|
|
await save(form, false)
|
|
|
|
await save(form, false)
|
|
|
|
@ -478,4 +482,4 @@
|
|
|
|
::v-deep .el-tag+.el-tag {
|
|
|
|
::v-deep .el-tag+.el-tag {
|
|
|
|
margin-left: 4px;
|
|
|
|
margin-left: 4px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|
|
|
|
|