|
@@ -1,10 +1,24 @@
|
|
|
<template>
|
|
|
- <template-page ref="pageRef" :get-list="getList" :exportList="exportList" :table-attributes="tableAttributes"
|
|
|
- :table-events="tableEvents" :options-evens-group="optionsEvensGroup" :column-parsing="columnParsing"
|
|
|
- :operation="operation()" :operationColumnWidth="250" :moreParameters="moreParameters">
|
|
|
+ <template-page
|
|
|
+ ref="pageRef"
|
|
|
+ :get-list="getList"
|
|
|
+ :exportList="exportList"
|
|
|
+ :table-attributes="tableAttributes"
|
|
|
+ :table-events="tableEvents"
|
|
|
+ :options-evens-group="optionsEvensGroup"
|
|
|
+ :column-parsing="columnParsing"
|
|
|
+ :operation="operation()"
|
|
|
+ :operationColumnWidth="250"
|
|
|
+ :moreParameters="moreParameters"
|
|
|
+ >
|
|
|
<div class="cartographer">
|
|
|
- <el-dialog :title="formData.id ? '详情' : '新增'" width="100%" :modal="false" :visible.sync="formDialog"
|
|
|
- :before-close="formCancel">
|
|
|
+ <el-dialog
|
|
|
+ :title="formData.id ? '详情' : '新增'"
|
|
|
+ width="100%"
|
|
|
+ :modal="false"
|
|
|
+ :visible.sync="formDialog"
|
|
|
+ :before-close="formCancel"
|
|
|
+ >
|
|
|
<zj-form-container v-if="formDialog" ref="formRef" :form-data="formData" :styleSwitch="false">
|
|
|
<zj-form-module title="活动信息" label-width="120px" :form-data="formData" :form-items="formItems">
|
|
|
</zj-form-module>
|
|
@@ -26,11 +40,18 @@
|
|
|
import TemplatePage from '@/components/template/template-page-1.vue'
|
|
|
import import_mixin from '@/components/template/import_mixin.js'
|
|
|
import operation_mixin from '@/components/template/operation_mixin.js'
|
|
|
-import { promotionQuestionnaireList, promotionQuestionnaireExport, promotionQuestionnaireAdd, promotionQuestionnaireStop, promotionQuestionnaireDetail, promotionQuestionnaireShow } from "@/api/setActivity.js"
|
|
|
-import answer from "./answer.vue"
|
|
|
+import {
|
|
|
+ promotionQuestionnaireList,
|
|
|
+ promotionQuestionnaireExport,
|
|
|
+ promotionQuestionnaireAdd,
|
|
|
+ promotionQuestionnaireStop,
|
|
|
+ promotionQuestionnaireDetail,
|
|
|
+ promotionQuestionnaireShow
|
|
|
+} from '@/api/setActivity.js'
|
|
|
+import answer from './answer.vue'
|
|
|
import ImageUpload from '@/components/file-upload'
|
|
|
import quillEditor from '@/components/v-quill-editor'
|
|
|
-import editTable from "@/components/template/editTable.js"
|
|
|
+import editTable from '@/components/template/editTable.js'
|
|
|
import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
|
|
|
export default {
|
|
|
components: { TemplatePage, answer, ImageUpload, quillEditor },
|
|
@@ -43,20 +64,20 @@ export default {
|
|
|
rowIndex: -1
|
|
|
},
|
|
|
formData: {
|
|
|
- "companyWechatId": "",
|
|
|
- "companyWechatName": JSON.parse(localStorage.getItem('greemall_user')).companyName,
|
|
|
- "startTime": "",
|
|
|
- "endTime": "",
|
|
|
- "name": "",
|
|
|
- "submitLimit": '',
|
|
|
- "submitLimitBool": 0,
|
|
|
- "qrcode": "",
|
|
|
- "title": "",
|
|
|
- "content": "",
|
|
|
- "banner": [],
|
|
|
- "detailImgs": [],
|
|
|
- "promotionQuestionnaireItems": [],
|
|
|
- "promotionQuestionnaireUsers": [],
|
|
|
+ companyWechatId: '',
|
|
|
+ companyWechatName: JSON.parse(localStorage.getItem('greemall_user')).companyName,
|
|
|
+ startTime: '',
|
|
|
+ endTime: '',
|
|
|
+ name: '',
|
|
|
+ submitLimit: '',
|
|
|
+ submitLimitBool: 0,
|
|
|
+ qrcode: '',
|
|
|
+ title: '',
|
|
|
+ content: '',
|
|
|
+ banner: [],
|
|
|
+ detailImgs: [],
|
|
|
+ promotionQuestionnaireItems: [],
|
|
|
+ promotionQuestionnaireUsers: []
|
|
|
},
|
|
|
// 表格属性
|
|
|
tableAttributes: {
|
|
@@ -65,7 +86,7 @@ export default {
|
|
|
},
|
|
|
// 表格事件
|
|
|
tableEvents: {},
|
|
|
- typeView: 0,
|
|
|
+ typeView: 0
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -75,22 +96,28 @@ export default {
|
|
|
name: '状态',
|
|
|
key: 'status',
|
|
|
value: '',
|
|
|
- conditions: [{
|
|
|
- label: "生效中",
|
|
|
- value: "1"
|
|
|
- }, {
|
|
|
- label: "待生效",
|
|
|
- value: "0"
|
|
|
- }, {
|
|
|
- label: "已过期",
|
|
|
- value: "2"
|
|
|
- }, {
|
|
|
- label: "已终止",
|
|
|
- value: "3"
|
|
|
- }, {
|
|
|
- label: "全部",
|
|
|
- value: ""
|
|
|
- }]
|
|
|
+ conditions: [
|
|
|
+ {
|
|
|
+ label: '生效中',
|
|
|
+ value: '1'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '待生效',
|
|
|
+ value: '0'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '已过期',
|
|
|
+ value: '2'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '已终止',
|
|
|
+ value: '3'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '全部',
|
|
|
+ value: ''
|
|
|
+ }
|
|
|
+ ]
|
|
|
}
|
|
|
]
|
|
|
},
|
|
@@ -124,7 +151,7 @@ export default {
|
|
|
'value-format': 'yyyy-MM-dd HH:mm:ss',
|
|
|
'picker-options': {
|
|
|
disabledDate: time => {
|
|
|
- return time.getTime() < (Date.now() - 86400000)
|
|
|
+ return time.getTime() < Date.now() - 86400000
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -150,7 +177,7 @@ export default {
|
|
|
'picker-options': {
|
|
|
disabledDate: time => {
|
|
|
if (this.formData.startTime) {
|
|
|
- return time.getTime() < (new Date(this.formData.startTime)).getTime()
|
|
|
+ return time.getTime() < new Date(this.formData.startTime).getTime()
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
@@ -196,11 +223,33 @@ export default {
|
|
|
console.log(value)
|
|
|
return (
|
|
|
<div class="redbordererr" style="">
|
|
|
- <el-form-item label="" label-width="0px" prop="submitLimit" rules={value ? [{ required: true, message: '请填写', trigger: 'blur' }] : []}>
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ label-width="0px"
|
|
|
+ prop="submitLimit"
|
|
|
+ rules={value ? [{ required: true, message: '请填写', trigger: 'blur' }] : []}
|
|
|
+ >
|
|
|
<el-radio-group disabled={!this.qx(this.formData)} value={value} onInput={onInput}>
|
|
|
- <el-radio disabled={!this.qx(this.formData)} label={0}>不限制</el-radio>
|
|
|
+ <el-radio disabled={!this.qx(this.formData)} label={0}>
|
|
|
+ 不限制
|
|
|
+ </el-radio>
|
|
|
<el-radio disabled={!this.qx(this.formData)} label={1}>
|
|
|
- 限制{value ? [<el-input disabled={!this.qx(this.formData)} style="margin: 0 10px;width:100px;" value={this.formData.submitLimit} onInput={(val) => { this.formData.submitLimit = val }} type="number" placeholder="请输入内容"></el-input>, <span>次</span>] : null}
|
|
|
+ 限制
|
|
|
+ {value
|
|
|
+ ? [
|
|
|
+ <el-input
|
|
|
+ disabled={!this.qx(this.formData)}
|
|
|
+ style="margin: 0 10px;width:100px;"
|
|
|
+ value={this.formData.submitLimit}
|
|
|
+ onInput={val => {
|
|
|
+ this.formData.submitLimit = val
|
|
|
+ }}
|
|
|
+ type="number"
|
|
|
+ placeholder="请输入内容"
|
|
|
+ ></el-input>,
|
|
|
+ <span>次</span>
|
|
|
+ ]
|
|
|
+ : null}
|
|
|
</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
@@ -220,7 +269,13 @@ export default {
|
|
|
render: (h, { props, onInput }) => {
|
|
|
var { value } = props
|
|
|
return (
|
|
|
- <ImageUpload isEdit={this.qx(this.formData)} fileList={this.formData.banner} uid={`questionFiles_bananner`} limit={1} isUpdate={false} />
|
|
|
+ <ImageUpload
|
|
|
+ isEdit={this.qx(this.formData)}
|
|
|
+ fileList={this.formData.banner}
|
|
|
+ uid={`questionFiles_bananner`}
|
|
|
+ limit={1}
|
|
|
+ isUpdate={false}
|
|
|
+ />
|
|
|
)
|
|
|
}
|
|
|
},
|
|
@@ -236,7 +291,13 @@ export default {
|
|
|
render: (h, { props, onInput }) => {
|
|
|
var { value } = props
|
|
|
return (
|
|
|
- <ImageUpload isEdit={this.qx(this.formData)} fileList={this.formData.detailImgs} uid={`questionFiles_detaidetailImgsdetailImgs`} limit={100} isUpdate={false} />
|
|
|
+ <ImageUpload
|
|
|
+ isEdit={this.qx(this.formData)}
|
|
|
+ fileList={this.formData.detailImgs}
|
|
|
+ uid={`questionFiles_detaidetailImgsdetailImgs`}
|
|
|
+ limit={100}
|
|
|
+ isUpdate={false}
|
|
|
+ />
|
|
|
)
|
|
|
}
|
|
|
},
|
|
@@ -251,9 +312,7 @@ export default {
|
|
|
},
|
|
|
render: (h, { props, onInput }) => {
|
|
|
var { value } = props
|
|
|
- return (
|
|
|
- <quillEditor disabled={!this.qx(this.formData)} value={value} onInput={onInput}></quillEditor>
|
|
|
- )
|
|
|
+ return <quillEditor disabled={!this.qx(this.formData)} value={value} onInput={onInput}></quillEditor>
|
|
|
}
|
|
|
},
|
|
|
{
|
|
@@ -266,225 +325,337 @@ export default {
|
|
|
},
|
|
|
render: (h, { props, onInput }) => {
|
|
|
var { value } = props
|
|
|
- return this.convertTableJson(value, [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '*姓名',
|
|
|
- prop: 'name',
|
|
|
- },
|
|
|
- editRender: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px" prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`} rules={[{ required: true, message: '请填写', trigger: 'blur' }]}>
|
|
|
- <el-input value={row[column.columnAttributes.prop]} onInput={val => { row[column.columnAttributes.prop] = val }} placeholder="请输入内容"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- )
|
|
|
+ return this.convertTableJson(
|
|
|
+ value,
|
|
|
+ [
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '*姓名',
|
|
|
+ prop: 'name'
|
|
|
+ },
|
|
|
+ editRender: (h, { row, column, index }) => {
|
|
|
+ return (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ label-width="0px"
|
|
|
+ prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ placeholder="请输入内容"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ viewRender: (h, { row, column, index }) => {
|
|
|
+ return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
+ }
|
|
|
},
|
|
|
- viewRender: (h, { row, column, index }) => {
|
|
|
- return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '*电话',
|
|
|
- prop: 'mobile',
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '*电话',
|
|
|
+ prop: 'mobile'
|
|
|
+ },
|
|
|
+ editRender: (h, { row, column, index }) => {
|
|
|
+ return (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ label-width="0px"
|
|
|
+ prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={mobileRequired}
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ placeholder="请输入内容"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ viewRender: (h, { row, column, index }) => {
|
|
|
+ return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
+ }
|
|
|
},
|
|
|
- editRender: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px" prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`} rules={mobileRequired}>
|
|
|
- <el-input value={row[column.columnAttributes.prop]} onInput={val => { row[column.columnAttributes.prop] = val }} placeholder="请输入内容"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- )
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '*时间(分钟)',
|
|
|
+ prop: 'min'
|
|
|
+ },
|
|
|
+ editRender: (h, { row, column, index }) => {
|
|
|
+ return (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ label-width="0px"
|
|
|
+ prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ type="number"
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ placeholder="请输入内容"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ viewRender: (h, { row, column, index }) => {
|
|
|
+ return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
+ }
|
|
|
},
|
|
|
- viewRender: (h, { row, column, index }) => {
|
|
|
- return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '*备注',
|
|
|
+ prop: 'remark'
|
|
|
+ },
|
|
|
+ editRender: (h, { row, column, index }) => {
|
|
|
+ return (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ label-width="0px"
|
|
|
+ prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ placeholder="请输入内容"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ viewRender: (h, { row, column, index }) => {
|
|
|
+ return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
+ }
|
|
|
}
|
|
|
- },
|
|
|
+ ],
|
|
|
{
|
|
|
- columnAttributes: {
|
|
|
- label: '*时间(分钟)',
|
|
|
- prop: 'min',
|
|
|
- },
|
|
|
- editRender: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px" prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`} rules={[{ required: true, message: '请填写', trigger: 'blur' }]}>
|
|
|
- <el-input type="number" value={row[column.columnAttributes.prop]} onInput={val => { row[column.columnAttributes.prop] = val }} placeholder="请输入内容"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- )
|
|
|
- },
|
|
|
- viewRender: (h, { row, column, index }) => {
|
|
|
- return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
- }
|
|
|
+ isEdit: this.qx(this.formData),
|
|
|
+ isAdd: this.qx(this.formData),
|
|
|
+ isDel: this.qx(this.formData)
|
|
|
},
|
|
|
{
|
|
|
- columnAttributes: {
|
|
|
- label: '*备注',
|
|
|
- prop: 'remark',
|
|
|
+ add: () => {
|
|
|
+ this.formData.promotionQuestionnaireUsers.push({
|
|
|
+ min: '',
|
|
|
+ mobile: '',
|
|
|
+ name: '',
|
|
|
+ promotionQuestionnaireId: '',
|
|
|
+ remark: ''
|
|
|
+ })
|
|
|
+ this.isEditTableIndex = this.formData.promotionQuestionnaireUsers.length - 1
|
|
|
},
|
|
|
- editRender: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px" prop={`promotionQuestionnaireUsers.${index}.${column.columnAttributes.prop}`} rules={[{ required: true, message: '请填写', trigger: 'blur' }]}>
|
|
|
- <el-input value={row[column.columnAttributes.prop]} onInput={val => { row[column.columnAttributes.prop] = val }} placeholder="请输入内容"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- )
|
|
|
+ delete: ({ row, column, index }, cb) => {
|
|
|
+ if (this.isEditTableIndex == index) {
|
|
|
+ this.isEditTableIndex = -1
|
|
|
+ } else if (this.isEditTableIndex > index) {
|
|
|
+ this.isEditTableIndex--
|
|
|
+ }
|
|
|
+ cb && cb()
|
|
|
},
|
|
|
- viewRender: (h, { row, column, index }) => {
|
|
|
- return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
|
|
|
- }
|
|
|
- },
|
|
|
- ], {
|
|
|
- isEdit: this.qx(this.formData),
|
|
|
- isAdd: this.qx(this.formData),
|
|
|
- isDel: this.qx(this.formData),
|
|
|
- }, {
|
|
|
- add: () => {
|
|
|
- this.formData.promotionQuestionnaireUsers.push({
|
|
|
- "min": '',
|
|
|
- "mobile": "",
|
|
|
- "name": "",
|
|
|
- "promotionQuestionnaireId": "",
|
|
|
- "remark": ""
|
|
|
- })
|
|
|
- this.isEditTableIndex = this.formData.promotionQuestionnaireUsers.length - 1
|
|
|
- },
|
|
|
- delete: ({ row, column, index }, cb) => {
|
|
|
- if (this.isEditTableIndex == index) {
|
|
|
- this.isEditTableIndex = -1
|
|
|
- } else if (this.isEditTableIndex > index) {
|
|
|
- this.isEditTableIndex--
|
|
|
+ verify: ({ row, column, index }, isEditTableIndex) => {
|
|
|
+ return new Promise(r => {
|
|
|
+ if (isEditTableIndex > -1) {
|
|
|
+ this.$refs.formRef.validateField(
|
|
|
+ [
|
|
|
+ `promotionQuestionnaireUsers.${isEditTableIndex}.min`,
|
|
|
+ `promotionQuestionnaireUsers.${isEditTableIndex}.mobile`,
|
|
|
+ `promotionQuestionnaireUsers.${isEditTableIndex}.name`,
|
|
|
+ `promotionQuestionnaireUsers.${isEditTableIndex}.remark`
|
|
|
+ ],
|
|
|
+ v => {
|
|
|
+ if (v) {
|
|
|
+ r(true)
|
|
|
+ } else {
|
|
|
+ r(false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
+ } else {
|
|
|
+ r(true)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
- cb && cb()
|
|
|
- },
|
|
|
- verify: ({ row, column, index }, isEditTableIndex) => {
|
|
|
- return new Promise(r => {
|
|
|
- if (isEditTableIndex > -1) {
|
|
|
- this.$refs.formRef.validateField([
|
|
|
- `promotionQuestionnaireUsers.${isEditTableIndex}.min`,
|
|
|
- `promotionQuestionnaireUsers.${isEditTableIndex}.mobile`,
|
|
|
- `promotionQuestionnaireUsers.${isEditTableIndex}.name`,
|
|
|
- `promotionQuestionnaireUsers.${isEditTableIndex}.remark`,
|
|
|
- ], (v) => {
|
|
|
- if (v) {
|
|
|
- r(true)
|
|
|
- } else {
|
|
|
- r(false)
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- r(true)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- })
|
|
|
+ }
|
|
|
+ )
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
]
|
|
|
},
|
|
|
formItems2() {
|
|
|
- return [{
|
|
|
- md: 24,
|
|
|
- name: 'slot-component',
|
|
|
- attributes: { placeholder: '请输入' },
|
|
|
- formItemAttributes: {
|
|
|
- label: '',
|
|
|
- 'label-width': '0px',
|
|
|
- prop: 'promotionQuestionnaireItems',
|
|
|
- rules: [{ required: true, message: '请设置', trigger: 'blur' }]
|
|
|
- },
|
|
|
- render: (h, { props, onInput }) => {
|
|
|
- return (
|
|
|
- <div>
|
|
|
- <div>
|
|
|
- {this.qx(this.formData) ? <el-button type="primary" onClick={() => { this.showQuestion = true }}>新增</el-button> : null}
|
|
|
- </div>
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ md: 24,
|
|
|
+ name: 'slot-component',
|
|
|
+ attributes: { placeholder: '请输入' },
|
|
|
+ formItemAttributes: {
|
|
|
+ label: '',
|
|
|
+ 'label-width': '0px',
|
|
|
+ prop: 'promotionQuestionnaireItems',
|
|
|
+ rules: [{ required: true, message: '请设置', trigger: 'blur' }]
|
|
|
+ },
|
|
|
+ render: (h, { props, onInput }) => {
|
|
|
+ return (
|
|
|
<div>
|
|
|
- <zj-table
|
|
|
- columns={[{
|
|
|
- columnAttributes: {
|
|
|
- label: '填写内容',
|
|
|
- prop: '',
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div style="padding:6px;">
|
|
|
- <div style="font-weight:bold;">{row.isRequire ? <span style="color:red">*</span> : null}{index + 1}、{row.question}({['单选', '多选', '填写', '图片', '视频'][row.type - 1]})</div>
|
|
|
- {[
|
|
|
- <div style="display: flex">
|
|
|
- {row.answer.map(item => {
|
|
|
- return <div style="margin-right:10px">
|
|
|
- <el-radio disabled label="">{item.option_value}</el-radio>
|
|
|
- <div>
|
|
|
- {item.option_files.map(v => <el-image src={v.url} preview-src-list={[v.url]} fit="fit" style="width:80px;height:80px;" />)}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- })}
|
|
|
- </div>,
|
|
|
- <div style="display: flex">
|
|
|
- {row.answer.map(item => {
|
|
|
- return <div style="margin-right:10px">
|
|
|
- <el-checkbox disabled label="">{item.option_value}</el-checkbox>
|
|
|
- <div>
|
|
|
- {item.option_files.map(v => <el-image src={v.url} preview-src-list={[v.url]} fit="fit" style="width:80px;height:80px;" />)}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- })}
|
|
|
- </div>,
|
|
|
- <div>
|
|
|
- <el-input disabled placeholder="请输入内容"></el-input>
|
|
|
- </div>,
|
|
|
- null
|
|
|
- ][row.type - 1]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- },
|
|
|
- },
|
|
|
- ...(() => {
|
|
|
- if (this.qx(this.formData)) {
|
|
|
- return [{
|
|
|
+ <div>
|
|
|
+ {this.qx(this.formData) ? (
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ onClick={() => {
|
|
|
+ this.showQuestion = true
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 新增
|
|
|
+ </el-button>
|
|
|
+ ) : null}
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <zj-table
|
|
|
+ columns={[
|
|
|
+ {
|
|
|
columnAttributes: {
|
|
|
- label: '操作',
|
|
|
- prop: '',
|
|
|
- width: '200px'
|
|
|
+ label: '填写内容',
|
|
|
+ prop: ''
|
|
|
},
|
|
|
render: (h, { row, column, index }) => {
|
|
|
return (
|
|
|
- <div style="padding-left:5px">
|
|
|
- <el-button size="mini" onClick={() => {
|
|
|
- this.questionData = {
|
|
|
- ...JSON.parse(JSON.stringify(row)),
|
|
|
- rowIndex: index
|
|
|
- }
|
|
|
- this.$nextTick(() => {
|
|
|
- this.showQuestion = true
|
|
|
- })
|
|
|
- }}>编辑</el-button>
|
|
|
- <el-button size="mini" onClick={() => {
|
|
|
- this.formData.promotionQuestionnaireItems.push({ ...JSON.parse(JSON.stringify(row)) })
|
|
|
- }}>复制</el-button>
|
|
|
- <el-button size="mini" onClick={() => {
|
|
|
- this.formData.promotionQuestionnaireItems.splice(index, 1)
|
|
|
- }}>删除</el-button>
|
|
|
+ <div style="padding:6px;">
|
|
|
+ <div style="font-weight:bold;">
|
|
|
+ {row.isRequire ? <span style="color:red">*</span> : null}
|
|
|
+ {index + 1}、{row.question}({['单选', '多选', '填写', '图片', '视频'][row.type - 1]})
|
|
|
+ </div>
|
|
|
+ {
|
|
|
+ [
|
|
|
+ <div style="display: flex">
|
|
|
+ {row.answer.map(item => {
|
|
|
+ return (
|
|
|
+ <div style="margin-right:10px">
|
|
|
+ <el-radio disabled label="">
|
|
|
+ {item.option_value}
|
|
|
+ </el-radio>
|
|
|
+ <div>
|
|
|
+ {item.option_files.map(v => (
|
|
|
+ <el-image
|
|
|
+ src={v.url}
|
|
|
+ preview-src-list={[v.url]}
|
|
|
+ fit="fit"
|
|
|
+ style="width:80px;height:80px;"
|
|
|
+ />
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </div>,
|
|
|
+ <div style="display: flex">
|
|
|
+ {row.answer.map(item => {
|
|
|
+ return (
|
|
|
+ <div style="margin-right:10px">
|
|
|
+ <el-checkbox disabled label="">
|
|
|
+ {item.option_value}
|
|
|
+ </el-checkbox>
|
|
|
+ <div>
|
|
|
+ {item.option_files.map(v => (
|
|
|
+ <el-image
|
|
|
+ src={v.url}
|
|
|
+ preview-src-list={[v.url]}
|
|
|
+ fit="fit"
|
|
|
+ style="width:80px;height:80px;"
|
|
|
+ />
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </div>,
|
|
|
+ <div>
|
|
|
+ <el-input disabled placeholder="请输入内容"></el-input>
|
|
|
+ </div>,
|
|
|
+ null
|
|
|
+ ][row.type - 1]
|
|
|
+ }
|
|
|
</div>
|
|
|
)
|
|
|
- },
|
|
|
- }]
|
|
|
- }
|
|
|
- return []
|
|
|
- })()]}
|
|
|
- table-data={this.formData.promotionQuestionnaireItems}
|
|
|
- />
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ...(() => {
|
|
|
+ if (this.qx(this.formData)) {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '操作',
|
|
|
+ prop: '',
|
|
|
+ width: '200px'
|
|
|
+ },
|
|
|
+ render: (h, { row, column, index }) => {
|
|
|
+ return (
|
|
|
+ <div style="padding-left:5px">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ onClick={() => {
|
|
|
+ this.questionData = {
|
|
|
+ ...JSON.parse(JSON.stringify(row)),
|
|
|
+ rowIndex: index
|
|
|
+ }
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.showQuestion = true
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 编辑
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ onClick={() => {
|
|
|
+ this.formData.promotionQuestionnaireItems.push({
|
|
|
+ ...JSON.parse(JSON.stringify(row))
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 复制
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ onClick={() => {
|
|
|
+ this.formData.promotionQuestionnaireItems.splice(index, 1)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ return []
|
|
|
+ })()
|
|
|
+ ]}
|
|
|
+ table-data={this.formData.promotionQuestionnaireItems}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- )
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
- }]
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
@@ -498,40 +669,25 @@ export default {
|
|
|
defaultData.render = (h, { row, index, column }) => {
|
|
|
return (
|
|
|
<div style="padding:0 6px;cursor: pointer;">
|
|
|
- {row.qrcode ? row.qrcode.split(",").map(url => <el-image src={url} preview-src-list={[url]} fit="fit" style="width:80px;height:80px;" />) : null}
|
|
|
+ {row.qrcode
|
|
|
+ ? row.qrcode
|
|
|
+ .split(',')
|
|
|
+ .map(url => (
|
|
|
+ <el-image src={url} preview-src-list={[url]} fit="fit" style="width:80px;height:80px;" />
|
|
|
+ ))
|
|
|
+ : null}
|
|
|
</div>
|
|
|
)
|
|
|
- //if(!!~[0, 2].indexOf(row.status) || !!~['待生效','生效中'].indexOf(row.statusText)){
|
|
|
- // return (
|
|
|
- // <div style="padding:0 6px;cursor: pointer;">
|
|
|
- // {row.qrcode ? row.qrcode.split(",").map(url => <el-image src={url} preview-src-list={[url]} fit="fit" style="width:80px;height:80px;" />) : null}
|
|
|
- // </div>
|
|
|
- // )
|
|
|
- //}else{
|
|
|
- // return (
|
|
|
- // <div style="padding:0 6px;cursor: pointer;opacity: 0.3;">
|
|
|
- // {row.qrcode ? row.qrcode.split(",").map(url => <el-image src={url} fit="fit" style="width:80px;height:80px;" />) : null}
|
|
|
- // </div>
|
|
|
- // )
|
|
|
- //}
|
|
|
}
|
|
|
}
|
|
|
if (item.jname == 'startTime') {
|
|
|
defaultData.render = (h, { row, index, column }) => {
|
|
|
- return (
|
|
|
- <div style="padding:0 6px;cursor: pointer;">
|
|
|
- {row.startTime && row.startTime.split(" ")[0]}
|
|
|
- </div>
|
|
|
- )
|
|
|
+ return <div style="padding:0 6px;cursor: pointer;">{row.startTime && row.startTime.split(' ')[0]}</div>
|
|
|
}
|
|
|
}
|
|
|
if (item.jname == 'endTime') {
|
|
|
defaultData.render = (h, { row, index, column }) => {
|
|
|
- return (
|
|
|
- <div style="padding:0 6px;cursor: pointer;">
|
|
|
- {row.endTime && row.endTime.split(" ")[0]}
|
|
|
- </div>
|
|
|
- )
|
|
|
+ return <div style="padding:0 6px;cursor: pointer;">{row.endTime && row.endTime.split(' ')[0]}</div>
|
|
|
}
|
|
|
}
|
|
|
return defaultData
|
|
@@ -550,11 +706,11 @@ export default {
|
|
|
promotionQuestionnaireItems: res.data.promotionQuestionnaireItems.map(item => {
|
|
|
return {
|
|
|
...item,
|
|
|
- answer: JSON.parse(item?.answer || "[]")
|
|
|
+ answer: JSON.parse(item?.answer || '[]')
|
|
|
}
|
|
|
}),
|
|
|
- banner: res.data?.banner?.split(",").map(url => ({ url })),
|
|
|
- detailImgs: res.data?.detailImgs?.split(",").map(url => ({ url }))
|
|
|
+ banner: res.data?.banner?.split(',').map(url => ({ url })),
|
|
|
+ detailImgs: res.data?.detailImgs?.split(',').map(url => ({ url }))
|
|
|
}
|
|
|
this.$nextTick(() => {
|
|
|
this.formDialog = true
|
|
@@ -577,11 +733,11 @@ export default {
|
|
|
promotionQuestionnaireItems: res.data.promotionQuestionnaireItems.map(item => {
|
|
|
return {
|
|
|
...item,
|
|
|
- answer: JSON.parse(item?.answer || "[]")
|
|
|
+ answer: JSON.parse(item?.answer || '[]')
|
|
|
}
|
|
|
}),
|
|
|
- banner: res.data?.banner?.split(",").map(url => ({ url })),
|
|
|
- detailImgs: res.data?.detailImgs?.split(",").map(url => ({ url }))
|
|
|
+ banner: res.data?.banner?.split(',').map(url => ({ url })),
|
|
|
+ detailImgs: res.data?.detailImgs?.split(',').map(url => ({ url }))
|
|
|
}
|
|
|
this.$nextTick(() => {
|
|
|
this.formDialog = true
|
|
@@ -595,50 +751,52 @@ export default {
|
|
|
},
|
|
|
click: ({ row, index, column }) => {
|
|
|
this.$router.push({
|
|
|
- name: "activityOrder",
|
|
|
+ name: 'activityOrder',
|
|
|
params: {
|
|
|
pageName: row.id,
|
|
|
pageType: 'detail',
|
|
|
- pageCode: row.id,
|
|
|
- },
|
|
|
+ pageCode: row.id
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
viewActivity: {
|
|
|
click: ({ row, index, column }) => {
|
|
|
this.$router.push({
|
|
|
- name: "activityOrder",
|
|
|
+ name: 'activityOrder',
|
|
|
params: {
|
|
|
pageName: row.id,
|
|
|
pageType: 'list',
|
|
|
- pageCode: row.id,
|
|
|
- },
|
|
|
+ pageCode: row.id
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
isView: {
|
|
|
name: ({ row, index, column }) => {
|
|
|
- return row.isShow ? "隐藏" : "显示"
|
|
|
+ return row.isShow ? '隐藏' : '显示'
|
|
|
},
|
|
|
click: ({ row, index, column }) => {
|
|
|
- this.$confirm(`是否确定${row.isShow ? "隐藏" : "显示"}?`, '提示', {
|
|
|
+ this.$confirm(`是否确定${row.isShow ? '隐藏' : '显示'}?`, '提示', {
|
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '取消',
|
|
|
type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- promotionQuestionnaireShow({
|
|
|
- id: row.id,
|
|
|
- isShow: !row.isShow
|
|
|
- }).then(res => {
|
|
|
- this.$message({
|
|
|
- type: 'success',
|
|
|
- message: `设置成功!`,
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ promotionQuestionnaireShow({
|
|
|
+ id: row.id,
|
|
|
+ isShow: !row.isShow
|
|
|
+ }).then(res => {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: `设置成功!`
|
|
|
+ })
|
|
|
+ this.$refs.pageRef.refreshList()
|
|
|
})
|
|
|
- this.$refs.pageRef.refreshList()
|
|
|
})
|
|
|
- }).catch(() => {});
|
|
|
+ .catch(() => {})
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
})
|
|
|
},
|
|
|
// 新增
|
|
@@ -658,9 +816,9 @@ export default {
|
|
|
if (valid) {
|
|
|
var data = {
|
|
|
...this.formData,
|
|
|
- endTime: this.formData.endTime ? `${this.formData.endTime.split(" ")[0]} 23:59:59` : '',
|
|
|
- banner: this.formData.banner.map(item => item.url).join(","),
|
|
|
- detailImgs: this.formData.detailImgs.map(item => item.url).join(","),
|
|
|
+ endTime: this.formData.endTime ? `${this.formData.endTime.split(' ')[0]} 23:59:59` : '',
|
|
|
+ banner: this.formData.banner.map(item => item.url).join(','),
|
|
|
+ detailImgs: this.formData.detailImgs.map(item => item.url).join(','),
|
|
|
promotionQuestionnaireItems: this.formData.promotionQuestionnaireItems.map(item => {
|
|
|
return {
|
|
|
...item,
|
|
@@ -672,7 +830,7 @@ export default {
|
|
|
promotionQuestionnaireAdd(data).then(res => {
|
|
|
this.$message({
|
|
|
type: 'success',
|
|
|
- message: `添加成功!`,
|
|
|
+ message: `添加成功!`
|
|
|
})
|
|
|
this.$refs.pageRef.refreshList()
|
|
|
this.formCancel()
|
|
@@ -687,7 +845,7 @@ export default {
|
|
|
}).then(res => {
|
|
|
this.$message({
|
|
|
type: 'success',
|
|
|
- message: `终止成功!`,
|
|
|
+ message: `终止成功!`
|
|
|
})
|
|
|
this.$refs.pageRef.refreshList()
|
|
|
this.formCancel()
|
|
@@ -709,11 +867,14 @@ export default {
|
|
|
}
|
|
|
this.questionClose()
|
|
|
this.$nextTick(() => {
|
|
|
- this.$refs.formRef.validateField(["promotionQuestionnaireItems"], (v) => { })
|
|
|
+ this.$refs.formRef.validateField(['promotionQuestionnaireItems'], v => {})
|
|
|
})
|
|
|
},
|
|
|
qx(item) {
|
|
|
- return this.typeView && (!item.id || !!~[0, 1].indexOf(item.status) || !!~['待生效', '生效中'].indexOf(item.statusText))
|
|
|
+ return (
|
|
|
+ this.typeView &&
|
|
|
+ (!item.id || !!~[0, 1].indexOf(item.status) || !!~['待生效', '生效中'].indexOf(item.statusText))
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
}
|