Browse Source

feat: 对接优惠券

linwenxin 1 năm trước cách đây
mục cha
commit
eb132625f8

+ 422 - 72
src/views/mallManagement/activity/coupon_index/index.vue

@@ -2,21 +2,24 @@
   <template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents"
     :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters" :column-parsing="columnParsing"
     :operation="operation" :exportList="exportList">
-    <el-dialog title="" width="500px" custom-class="diy-dialog" append-to-body :modal="true" :visible.sync="formDialog"
+    <el-dialog title="" width="1000px" custom-class="diy-dialog" append-to-body :modal="true" :visible.sync="formDialog"
       :show-close="true" :close-on-click-modal="false" :modal-append-to-body="false" :before-close="formCancel">
       <zj-form-container ref="formRef" :form-data="formData" :styleSwitch="false">
-        <zj-form-module :title="formDialogTitles[formDialogType]" label-width="100px" :showPackUp="false"
-          :form-data="formData" :form-items="formItems">
+        <zj-form-module :title="formDialogTitles[formDialogType]" label-width="120px" :showPackUp="false"
+          :form-data="formData" :form-items="formItems" :bodyViewStyle="{
+            'max-height': '600px',
+            'overflow-y': 'auto'
+          }">
         </zj-form-module>
       </zj-form-container>
       <div slot="footer" class="dialog-footer">
         <el-button size="mini" @click="formCancel">取 消</el-button>
-        <el-button size="mini" @click="formConfirm" type="primary">确 定</el-button>
+        <el-button v-if="this.formDialogType !== 2" size="mini" @click="formConfirm" type="primary">确 定</el-button>
       </div>
     </el-dialog>
-    <selectMember v-if="showSelectMember" :memberList="memberList" @cancelSelectMember="showSelectMember = false"
+    <selectMember v-if="showSelectMember" :memberList="formData.userList" @cancelSelectMember="showSelectMember = false"
       @selectMemberPass="selectMemberPass" />
-    <selectGoods v-if="showSelectGoods" :goodsList="goodsList" @cancelSelectGoods="showSelectGoods = false"
+    <selectGoods v-if="showSelectGoods" :goodsList="formData.goodsList" @cancelSelectGoods="showSelectGoods = false"
       @selectGoodsPass="selectGoodsPass" />
   </template-page>
 </template>
@@ -25,12 +28,13 @@
 import TemplatePage from '@/components/template/template-page-1.vue'
 import import_mixin from '@/components/template/import_mixin.js'
 import { required, mobileRequired, mobile } from '@/components/template/rules_verify.js'
-import { couponListPageV2, couponListPageV2Export, addCoupon, changeCouponFlag, editCoupon, getCouponDetail, getClassifyList, getGoodsList, getTagList, getMemberList, reissueCoupon } from "@/api/coupon";
-import { storageListPageV2, storagePageExport, addStorage, deleteStorage, editStorage, getList, getStorageDetail } from "@/api/storage";
+import { couponListPageV2, couponListPageV2Export, addCoupon, changeCouponFlag, editCoupon, getCouponDetail, getTagList, reissueCoupon } from "@/api/coupon";
 import selectMember from "@/components/selectComponent/selectMember.vue"
 import selectGoods from "@/components/selectComponent/selectGoods.vue"
+import { MEMBER_CURRENT_TYPE_FILTER } from "@/filters/index.js"
+import ImageUpload from '@/components/file-upload'
 export default {
-  components: { TemplatePage, selectMember, selectGoods },
+  components: { TemplatePage, selectMember, selectGoods, ImageUpload },
   mixins: [import_mixin],
   data() {
     return {
@@ -41,7 +45,7 @@ export default {
             {
               name: '新建',
               isRole: true,
-              click: () => { this.showSelectGoods = true }//this.addData
+              click: this.addData
             }
           ],
         ],
@@ -59,22 +63,53 @@ export default {
       recordSelected: [],
       /** 表单变量 */
       formDialogType: 0,
-      formDialogTitles: ["新增"],
+      formDialogTitles: ["新增", "编辑", "查看"],
       formDialog: false,
       formData: {
-        storageName: '',
-        storageMobile: '',
-        storageAddress: '',
+        couponName: "",
+        couponAmount: "",
+        couponType: "",
+        orderAmount: "",
+        activeType: 1,
+        receiveCrowd: "",
+        receiveLimitCount: "",
+        shareTimes: "",
+        couponValue: "",
+        note: "",
+        remark: "",
+        flag: "",
+        displayTime: "",
+        activeDay: "",
+        receiveDate: [],
+        activeDate: [],
+        imgSrc: [],
+        userList: [],
+        goodsList: [],
+        tagList: []
       },
       tagList: [],
       // 选择会员弹窗
       showSelectMember: false,
-      memberList: [],
       showSelectGoods: false,
-      goodsList: []
     }
   },
   computed: {
+    isService() {
+      if (this.formData.receiveCrowd == 3) {
+        return true;
+      }
+      if (this.formData.receiveCrowd == 2 && this.memberType == 'SERVICE') {
+        return true;
+      }
+      return false;
+    },
+    memberType() {
+      if (this.formData.userList.length > 0) {
+        return this.formData.userList[0].type;
+      } else {
+        return '';
+      }
+    },
     // 更多参数
     moreParameters() {
       return []
@@ -84,7 +119,7 @@ export default {
         md: 24,
         isShow: true,
         name: 'el-input',
-        attributes: { placeholder: '请输入' },
+        attributes: { placeholder: '请输入', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
         formItemAttributes: {
           label: '优惠券名称',
           prop: 'couponName',
@@ -96,11 +131,11 @@ export default {
         isShow: true,
         name: 'el-radio',
         options: [{ label: "满减券", value: "SATISFY" }, { label: "商品券", value: "GOODS" }],
-        attributes: { filterable: true, placeholder: '请选择' },
+        attributes: { filterable: true, placeholder: '请选择', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
         formItemAttributes: {
           label: '优惠券类型',
           prop: 'couponType',
-          rules: []
+          rules: [...required]
         }
       },
       {
@@ -114,11 +149,11 @@ export default {
           { label: "指定标签", value: 1 },
           { label: "指定会员", value: 2 },
         ],
-        attributes: { filterable: true, placeholder: '请选择' },
+        attributes: { filterable: true, placeholder: '请选择', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
         formItemAttributes: {
           label: '领取条件',
           prop: 'receiveCrowd',
-          rules: []
+          rules: [...required]
         }
       },
       {
@@ -126,53 +161,322 @@ export default {
         isShow: this.formData.receiveCrowd === 1,
         name: 'el-select',
         options: this.tagList,
-        attributes: { filterable: true, placeholder: '请选择', disabled: this.formData.flag === 'START' },
+        attributes: { filterable: true, placeholder: '请选择', disabled: this.formData.flag === 'START' || this.formDialogType == 2, multiple: true },
         formItemAttributes: {
           label: '选择标签',
-          prop: 'tagValue',
-          rules: []
+          prop: 'tagList',
+          rules: [...required]
         }
       },
       {
         md: 24,
         isShow: this.formData.receiveCrowd === 2,
-        name: 'el-select',
-        options: this.tagList,
-        attributes: { filterable: true, placeholder: '请选择'},
+        name: 'slot-component',
         formItemAttributes: {
           label: '选择会员',
           prop: 'userList',
-          rules: []
+          rules: [...required]
+        },
+        render: (h, { props, onInput }) => {
+          var { value } = props
+          return (
+            <div>
+              <zj-table
+                columns={[
+                  {
+                    columnAttributes: {
+                      label: '头像',
+                      prop: 'avatar',
+                      width: '60px'
+                    },
+                    render: (h, { row, column, index }) => {
+                      return <div style="width: 60px; height: 60px; overflow: hidden">
+                        <el-image style="width: 60px; height: 60px" src={row.avatar} fit="fit"></el-image>
+                      </div>
+                    }
+                  }, {
+                    columnAttributes: {
+                      label: '名称',
+                      prop: 'nickName',
+                    }
+                  }, {
+                    columnAttributes: {
+                      label: '电话',
+                      prop: 'mobile',
+                    }
+                  }, {
+                    columnAttributes: {
+                      label: '性别',
+                      prop: 'sex',
+                    }
+                  }, {
+                    columnAttributes: {
+                      label: '地区',
+                      prop: '',
+                    },
+                    render: (h, { row, column, index }) => {
+                      return <div style="box-sizing: border-box; padding: 6px;">
+                        {row.province + row.city}
+                      </div>
+                    }
+                  }, {
+                    columnAttributes: {
+                      label: '角色',
+                      prop: '',
+                    },
+                    render: (h, { row, column, index }) => {
+                      return <div style="box-sizing: border-box; padding: 6px;">
+                        {MEMBER_CURRENT_TYPE_FILTER(row.memberName)}
+                      </div>
+                    }
+                  },
+                  ...(() => {
+                    if (this.formDialogType !== 2) {
+                      return [
+                        {
+                          columnAttributes: {
+                            label: '删除',
+                            prop: '',
+                            width: '100px'
+                          },
+                          render: (h, { row, column, index }) => {
+                            return <div style="box-sizing: border-box; padding: 6px;">
+                              <el-button type="text" onClick={() => {
+                                this.formData.userList.splice(index, 1)
+                              }}>删除</el-button>
+                            </div>
+                          }
+                        }
+                      ]
+                    }
+                    return []
+                  })()
+                ]}
+                tableData={this.formData.userList}
+                tableAttributes={{
+                  size: 'mini',
+                  border: true,
+                }} />
+              {this.formDialogType !== 2 ? <div style="display: flex;align-items: center;justify-content: center;border: 1px solid #EBEEF5;border-top: none;height: 50px;">
+                <el-button type="text" onClick={() => {
+                  this.showSelectMember = true
+                }}>
+                  添加会员
+                </el-button>
+              </div> : null}
+            </div>
+          )
         }
       },
+      {
+        md: 24,
+        isShow: this.formData.couponType == 'GOODS',
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '指定商品',
+          prop: 'goodsList',
+          rules: [...required]
+        },
+        render: (h, { props, onInput }) => {
+          var { value } = props
+          return (
+            <div>
+              <zj-table
+                columns={[
+                  {
+                    columnAttributes: {
+                      label: '图片',
+                      prop: '',
+                      width: '60px'
+                    },
+                    render: (h, { row, column, index }) => {
+                      return <div style="width: 60px; height: 60px; overflow: hidden">
+                        <el-image style="width: 60px; height: 60px" src={row.imgUrl} fit="fit"></el-image>
+                      </div>
+                    }
+                  }, {
+                    columnAttributes: {
+                      label: '名称',
+                      prop: 'goodsName',
+                    }
+                  },
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+                  ...(() => {
+                    if (this.formDialogType !== 2) {
+                      return [
+                        {
+                          columnAttributes: {
+                            label: '删除',
+                            prop: '',
+                            width: '100px'
+                          },
+                          render: (h, { row, column, index }) => {
+                            return <div style="box-sizing: border-box; padding: 6px;">
+                              <el-button type="text" onClick={() => {
+                                this.formData.goodsList.splice(index, 1)
+                              }}>删除</el-button>
+                            </div>
+                          }
+                        }
+                      ]
+                    }
+                    return []
+                  })()
+                ]}
+                tableData={this.formData.goodsList}
+                tableAttributes={{
+                  size: 'mini',
+                  border: true,
+                }} />
+              {this.formDialogType !== 2 ? <div style="display: flex;align-items: center;justify-content: center;border: 1px solid #EBEEF5;border-top: none;height: 50px;">
+                <el-button type="text" onClick={() => {
+                  this.showSelectGoods = true
+                }}>
+                  添加商品
+                </el-button>
+              </div> : null}
+            </div>
+          )
+        }
+      },
+      {
+        md: 12,
+        isShow: this.formData.couponType == 'SATISFY',
+        name: 'el-input',
+        attributes: { style: "width:100%", placeholder: '请输入', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '订单满足金额',
+          prop: 'orderAmount',
+          rules: [...required]
+        }
+      },
+      {
+        md: 12,
+        isShow: true,
+        name: 'el-input',
+        attributes: { style: "width:100%", placeholder: '请输入', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '优惠券面值',
+          prop: 'couponValue',
+          rules: [...required]
+        }
+      },
+      {
+        md: 12,
+        isShow: !this.isService,
+        name: 'el-input',
+        attributes: { style: "width:100%", placeholder: '请输入', disabled: this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '发放数量',
+          prop: 'couponAmount',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: this.isService,
+        name: 'el-input',
+        attributes: { style: "width:100%", placeholder: '请输入', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '每人分享次数',
+          prop: 'shareTimes',
+          rules: [...required]
+        }
+      }, {
+        md: 12,
+        isShow: !this.isService,
+        name: 'el-input',
+        attributes: { style: "width:100%", placeholder: '请输入', disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '每人领用张数',
+          prop: 'receiveLimitCount',
+          rules: [...required]
+        }
+      },
+      {
+        md: 12,
+        isShow: true,
+        name: 'el-date-picker',
+        attributes: { style: "width:100%", placeholder: '请输入', type: "datetime", "value-format": "yyyy-MM-dd HH:mm:ss", disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '显示时间',
+          prop: 'displayTime',
+          rules: [...required]
+        }
+      },
+      {
+        md: 12,
+        isShow: true,
+        name: 'el-date-picker',
+        attributes: { style: "width:100%", placeholder: '请输入', type: "daterange", "value-format": "yyyy-MM-dd HH:mm:ss", disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '领取时间',
+          prop: 'receiveDate',
+          rules: [...required]
+        }
+      },
+      {
+        md: 12,
+        isShow: true,
+        name: 'el-date-picker',
+        attributes: { style: "width:100%", placeholder: '请输入', type: "daterange", "value-format": "yyyy-MM-dd HH:mm:ss", disabled: this.formData.flag === 'START' || this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '使用时间',
+          prop: 'activeDate',
+          rules: []
+        }
+      },
+      {
+        md: 12,
+        isShow: true,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '有效时间',
+          prop: 'activeDay',
+          rules: []
+        },
+        render: (h, { props, onInput }) => {
+          var { value } = props
+          return <el-input style="width:100%" value={value} onInput={onInput} autocomplete="off" placeholder="请输入" disabled={this.formDialogType == 2}>
+            <template slot="prepend">自领优惠券后</template>
+            <template slot="append">天内有效</template>
+          </el-input>
+        }
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-input',
+        attributes: { style: "width:100%", placeholder: '请输入', type: "textarea", autosize: { minRows: 3, maxRows: 6 }, maxlength: "100", 'show-word-limit': true, disabled: this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '使用说明',
+          prop: 'note',
+          rules: [...required]
+        }
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'el-input',
+        attributes: { placeholder: '请输入', type: "textarea", autosize: { minRows: 3, maxRows: 6 }, maxlength: "100", 'show-word-limit': true, disabled: this.formDialogType == 2 },
+        formItemAttributes: {
+          label: '备注',
+          prop: 'remark',
+          rules: []
+        }
+      }, {
+        md: 24,
+        isShow: true,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '弹窗图片',
+          prop: 'imgSrc',
+          rules: []
+        },
+        render: (h, { props, onInput }) => {
+          var { value } = props
+          return (
+            <ImageUpload fileList={this.formData.imgSrc} uid="imgSrc666_materials_drawing_images" limit={1} isEdit={this.formDialogType !== 2} />
+          )
+        }
+      },
       ]
     }
   },
@@ -194,23 +498,45 @@ export default {
       return (
         <div class='operation-btns'>
           <el-button type="text" onClick={() => {
-            getStorageDetail({ id: row.storageId }).then(res => {
-              Object.assign(this.formData, res.data)
+            getCouponDetail({ couponId: row.couponId }).then(res => {
+              Object.assign(this.formData, res.data, {
+                receiveDate: res.data.obtainStartTime ? [res.data.obtainStartTime, res.data.obtainEndTime] : [],
+                activeDate: res.data.activeStartTime ? [res.data.activeStartTime, res.data.activeEndTime] : [],
+                imgSrc: res.data.imgSrc ? [{ url: res.data.imgSrc }] : [],
+                tagList: res.data.tagList.map(item => item.tagId)
+              })
+              this.formDialogType = 2
+              this.openForm()
+            })
+          }}>查看</el-button>
+          {row.releaseFlag === 'WAIT' ? <el-button type="text" onClick={() => {
+            getCouponDetail({ couponId: row.couponId }).then(res => {
+              Object.assign(this.formData, res.data, {
+                receiveDate: res.data.obtainStartTime ? [res.data.obtainStartTime, res.data.obtainEndTime] : [],
+                activeDate: res.data.activeStartTime ? [res.data.activeStartTime, res.data.activeEndTime] : [],
+                imgSrc: res.data.imgSrc ? [{ url: res.data.imgSrc }] : [],
+                tagList: res.data.tagList.map(item => item.tagId)
+              })
               this.formDialogType = 1
               this.openForm()
             })
-          }}>编辑</el-button>
-          <el-popconfirm
-            title="确定删除吗?"
+          }}>编辑</el-button> : null}
+          {row.releaseFlag === 'START' ? <el-popconfirm
+            title="确定取消吗?"
             onConfirm={() => {
-              deleteStorage({ storageId: row.storageId }).then(() => {
-                this.$message({ type: 'success', message: '删除成功!' })
-                this.$refs.pageRef.refreshList()
-              })
+              changeFlag(row.couponId)
             }}
           >
-            <el-button type="text" slot="reference">删除</el-button>
-          </el-popconfirm>
+            <el-button type="text" slot="reference">取消</el-button>
+          </el-popconfirm> : null}
+          {row.releaseFlag === 'START' ? <el-popconfirm
+            title="确定补发业务员优惠券吗?"
+            onConfirm={() => {
+              reissueCoupon(row.couponId)
+            }}
+          >
+            <el-button type="text" slot="reference">补发业务员优惠券</el-button>
+          </el-popconfirm> : null}
         </div>
       )
     },
@@ -239,7 +565,16 @@ export default {
     formConfirm() {
       this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
         if (valid) {
-          ([addStorage, editStorage][this.formDialogType])(this.formData).then(res => {
+          var pam = {
+            ...this.formData,
+            imgSrc: this.formData.imgSrc.map(item => item.url).join(","),
+            activeStartTime: (this.formData.activeDate && this.formData.activeDate[0]) ? this.formData.activeDate[0].split(' ')[0] + ' 00:00:00' : '',
+            activeEndTime: (this.formData.activeDate && this.formData.activeDate[1]) ? this.formData.activeDate[1].split(' ')[0] + ' 23:59:59' : '',
+            obtainStartTime: this.formData.receiveDate[0].split(' ')[0] + ' 00:00:00',
+            obtainEndTime: this.formData.receiveDate[1].split(' ')[0] + ' 23:59:59',
+            tagList: this.formData.tagList.length ? this.tagList.filter(item => !!~this.formData.tagList.indexOf(item.value)).map(item => item.data) : []
+          };
+          ([addCoupon, editCoupon][this.formDialogType])(pam).then(res => {
             this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
             this.formCancel()
             this.$refs.pageRef.refreshList()
@@ -248,13 +583,28 @@ export default {
       })
     },
     selectMemberPass(val) {
-      this.memberList = val
-      console.log(val)
+      this.formData.userList.push(...val)
     },
     selectGoodsPass(val) {
-      this.goodsList = val
-      console.log(val)
-    }
+      this.formData.goodsList.push(...val)
+    },
+    // 操作 - 更改优惠券标志为取消
+    changeFlag(couponId) {
+      let params = {
+        couponId: couponId,
+        flag: 'CANCEL',
+      }
+      changeCouponFlag(params).then(() => {
+        this.$message({ type: 'success', message: `取消成功` })
+        this.$refs.pageRef.refreshList()
+      })
+    },
+    reissueCoupon(couponId) {
+      reissueCoupon({ couponId }).then(res => {
+        this.$message({ type: 'success', message: `设置成功` })
+        this.$refs.pageRef.refreshList()
+      })
+    },
   }
 }
 </script>

+ 0 - 1251
src/views/mallManagement/activity/coupon_index/index_cp.vue

@@ -1,1251 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <div class="top clearfix">
-        <div class="title fl">条件筛选</div>
-      </div>
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="small" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="优惠券名称" prop="couponName">
-              <el-input v-model="screenForm.couponName" placeholder="请输入优惠券名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="12" :sm="12" :lg="6">
-            <el-form-item label="发布状态" prop="flag">
-              <el-select v-model="screenForm.flag" placeholder="全部发布状态" size="small">
-                <el-option label="全部" value=""></el-option>
-                <el-option :label="item.label" :value="item.value" v-for="(item, index) in select_flag"
-                  :key="index"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button size="small" @click="resetScreenForm">清空</el-button>
-              <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </div>
-
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fl">
-          <el-button size="small" type="primary" icon="el-icon-plus" @click="addOrEdit('add')">新增优惠券</el-button>
-        </div>
-        <div class="fr">
-          <el-button size="small" type="primary" icon="el-icon-download" @click="handleExport">导出</el-button>
-        </div>
-      </div>
-
-      <div class="table">
-        <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row
-          stripe>
-          <el-table-column align="center" label="券名称" prop="couponName" min-width="120"></el-table-column>
-          <el-table-column align="center" label="券类型" prop="couponType" min-width="120">
-            <template slot-scope="scope">
-              {{ scope.row.couponType | typeFilter }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="券面额" prop="couponValue"></el-table-column>
-          <el-table-column align="center" label="满足金额" prop="orderAmount"></el-table-column>
-          <el-table-column align="center" label="发放总量" prop="couponAmount"></el-table-column>
-          <el-table-column align="center" label="限领次数" prop="receiveLimitCount"></el-table-column>
-          <el-table-column align="center" label="领取数量" prop="receivedCount"></el-table-column>
-          <el-table-column align="center" label="使用数量" prop="usedCount"></el-table-column>
-          <el-table-column align="center" label="显示时间" min-width="160">
-            <template slot-scope="scope">
-              {{ scope.row.displayTime }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="领取时间" min-width="200">
-            <template slot-scope="scope">
-              {{ scope.row.obtainStartTime | dateToDayFilter }} 至 {{ scope.row.obtainEndTime | dateToDayFilter }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="使用时间" min-width="200">
-            <template slot-scope="scope">
-              {{ scope.row.activeStartTime | dateToDayFilter }} 至 {{ scope.row.activeEndTime | dateToDayFilter }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="商户" prop="companyName" min-width="120"></el-table-column>
-          <el-table-column align="center" label="状态" class-name="status-col">
-            <template slot-scope="scope">
-              {{ scope.row.releaseFlag | COUPON_CURRENT_FLAG_FILTER }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="创建时间" prop="createTime" min-width="160"></el-table-column>
-          <el-table-column align="center" label="操作" fixed="right" width="220">
-            <template slot-scope="scope">
-              <el-button type="text" @click="checkCoupon(scope.row.couponId)">查看</el-button>
-              <el-button v-if="scope.row.releaseFlag === 'WAIT'" type="text"
-                @click="addOrEdit('edit', scope.row.couponId)">编辑</el-button>
-              <el-popconfirm v-if="scope.row.releaseFlag === 'START'" style="margin-left: 10px;" title="确定取消吗?"
-                @onConfirm="changeFlag(scope.row.couponId)">
-                <el-button slot="reference" type="text">取消</el-button>
-              </el-popconfirm>
-              <el-popconfirm v-if="scope.row.releaseFlag === 'START'" style="margin-left: 10px;" title="确定补发业务员优惠券吗?"
-                @onConfirm="reissueCoupon(scope.row.couponId)">
-                <el-button slot="reference" type="text">补发业务员优惠券</el-button>
-              </el-popconfirm>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-
-      <div class="pagination clearfix">
-        <div class="fr">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 50]" :page-size="10" layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal">
-          </el-pagination>
-        </div>
-      </div>
-    </div>
-
-    <!-- 新增编辑 -->
-    <el-dialog :title="addFormType === 'add' ? '新增优惠券' : '编辑优惠券'" :visible.sync="addFormVisible" :show-close="false"
-      width="50%" :close-on-click-modal="false" top="5vh">
-      <el-form ref="addForm" :model="addForm" :rules="addFormRules" label-position="right" label-width="110px"
-        style="height: 70vh; overflow-y: scroll; padding-right: 20px;">
-        <el-form-item label="优惠券名称" prop="couponName">
-          <el-input v-model="addForm.couponName" autocomplete="off" placeholder="请输入优惠券名称"
-            :disabled="addForm.flag === 'START'"></el-input>
-        </el-form-item>
-        <el-form-item label="优惠券类型" prop="couponType">
-          <el-radio-group v-model="addForm.couponType" :disabled="addForm.flag === 'START'">
-            <el-radio label="SATISFY">满减券</el-radio>
-            <el-radio label="GOODS">商品券</el-radio>
-          </el-radio-group>
-        </el-form-item>
-
-        <el-form-item label="领取条件" prop="receiveCrowd">
-          <el-radio-group v-model="addForm.receiveCrowd" :disabled="addForm.flag === 'START'">
-            <el-radio :label="0">所有用户</el-radio>
-            <el-radio :label="4">所有会员</el-radio>
-            <el-radio :label="3">所有业务员</el-radio>
-            <el-radio :label="1">指定标签</el-radio>
-            <el-radio :label="2">指定会员</el-radio>
-          </el-radio-group>
-        </el-form-item>
-
-        <el-form-item label="选择标签" prop="tagValue" v-if="addForm.receiveCrowd === 1">
-          <el-select v-model="tagValue" multiple placeholder="请选择标签" style="width: 100%"
-            :disabled="addForm.flag === 'START'">
-            <el-option v-for="item in tagList" :value-key="item.value" :key="item.value" :label="item.name" :value="item">
-              <span style="float: left; color: #999999;">{{ item.groupName }}</span>
-              <span style="float: left; margin: 0 5px; color: #999999;">-</span>
-              <span style="float: left;">{{ item.name }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="选择会员" prop="memberList" v-if="addForm.receiveCrowd === 2">
-          <el-table :data="memberList" element-loading-text="Loading" border fit highlight-current-row stripe
-            max-height="300px">
-            <el-table-column align="center" label="头像" prop="avatar">
-              <template slot-scope="scope">
-                <el-image style="width: 40px; height: 40px; border-radius: 50%;" :src="scope.row.avatar"
-                  :preview-src-list="[scope.row.avatar]" fit="cover"></el-image>
-              </template>
-            </el-table-column>
-            <el-table-column align="center" label="名称" prop="nickName"></el-table-column>
-            <el-table-column align="center" label="电话" prop="mobile" min-width="120"></el-table-column>
-            <el-table-column align="center" label="性别" prop="sex"></el-table-column>
-            <el-table-column align="center" label="地区" prop="city" min-width="100">
-              <template slot-scope="scope">
-                {{ scope.row.province }}{{ scope.row.city }}
-              </template>
-            </el-table-column>
-            <el-table-column align="center" label="角色" prop="memberName" min-width="100">
-              <template slot-scope="scope">
-                {{ scope.row.type | MEMBER_CURRENT_TYPE_FILTER }}
-              </template>
-            </el-table-column>
-
-            <el-table-column align="center" label="操作" fixed="right">
-              <template slot-scope="scope">
-                <el-popconfirm title="确定删除吗?" @onConfirm="deleteMember(scope.$index)">
-                  <el-button slot="reference" type="text">删除</el-button>
-                </el-popconfirm>
-              </template>
-            </el-table-column>
-          </el-table>
-          <div class="addMember"><el-button type="text" @click="addMember">添加会员</el-button></div>
-        </el-form-item>
-
-        <el-form-item label="指定商品" prop="goodsList" v-if="addForm.couponType == 'GOODS'">
-          <div class="goods-container">
-            <div class="item clearfix" v-for="(item, index) in goodsList" :key='index'>
-              <el-input class="fl" style="width: 70%; margin-right: 10px;" readonly :value="item.goodsName"></el-input>
-              <el-button class="fl" @click="deleteGoods(index)">删除</el-button>
-            </div>
-            <div class="item clearfix" v-if="goodsList.length < maxGoodsCount">
-              <el-input class="fl" style="width: 70%; margin-right: 10px;" readonly></el-input>
-              <el-button type="primary" class="fl" @click="addGoods">选择</el-button>
-            </div>
-          </div>
-        </el-form-item>
-
-        <el-form-item label="订单满足金额" prop="orderAmount" v-if="addForm.couponType == 'SATISFY'">
-          <el-input v-model="addForm.orderAmount" autocomplete="off" placeholder="请输入订单满足金额"
-            :disabled="addForm.flag === 'START'"></el-input>
-        </el-form-item>
-
-        <el-form-item label="优惠券面值" prop="couponValue">
-          <el-input v-model="addForm.couponValue" autocomplete="off" placeholder="请输入优惠券面值"
-            :disabled="addForm.flag === 'START'"></el-input>
-        </el-form-item>
-
-        <el-form-item label="发放数量" prop="couponAmount" v-if="!isService">
-          <el-input v-model="addForm.couponAmount" autocomplete="off" placeholder="请输入发放数量"></el-input>
-        </el-form-item>
-
-        <el-form-item label="每人分享次数" prop="shareTimes" v-if="isService">
-          <el-input v-model="addForm.shareTimes" autocomplete="off" placeholder="请输入每人分享次数"
-            :disabled="addForm.flag === 'START'"></el-input>
-        </el-form-item>
-
-        <el-form-item label="每人领用张数" prop="receiveLimitCount" v-if="!isService">
-          <el-input v-model="addForm.receiveLimitCount" autocomplete="off" placeholder="请输入每人领用张数"
-            :disabled="addForm.flag === 'START'"></el-input>
-        </el-form-item>
-
-        <el-form-item label="显示时间" prop="displayDate">
-          <el-date-picker v-model="addForm.displayDate" style="width: 100%" type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间" :disabled="addForm.flag === 'START'">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="领取时间" prop="receiveDate">
-          <el-date-picker v-model="addForm.receiveDate" style="width: 100%" type="daterange" value-format="yyyy-MM-dd"
-            range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :disabled="addForm.flag === 'START'">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="使用时间" prop="activeDate">
-          <el-date-picker v-model="addForm.activeDate" style="width: 100%" type="daterange" value-format="yyyy-MM-dd"
-            range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :disabled="addForm.flag === 'START'">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="有效时间" prop="activeDay">
-          <div style="display: flex;">
-            自领优惠券后<el-input v-model="addForm.activeDay" autocomplete="off" placeholder="请输入"
-              style="width: 100px; margin: 0 10px"></el-input>天内有效
-          </div>
-        </el-form-item>
-        <el-form-item label="使用说明" prop="note">
-          <el-input type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" autocomplete="off" placeholder="请输入使用说明"
-            v-model="addForm.note" maxlength="100" show-word-limit>
-          </el-input>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" autocomplete="off" placeholder="备注"
-            v-model="addForm.remark" maxlength="100" show-word-limit>
-          </el-input>
-        </el-form-item>
-        <el-upload class="avatar-uploader" style="height: 0;" :action="baseURL + 'common/upload'" :headers="myHeaders"
-          :show-file-list="false" :on-success="uploadSuccess" :before-upload="beforeUpload">
-        </el-upload>
-        <el-form-item label="弹窗图片" prop="imgUrl">
-          <div class="images">
-            <div class="main-img">
-              <div class="img" v-if="addForm.imgUrl" @mouseover="addForm.imgHover = true;"
-                @mouseout="addForm.imgHover = false;">
-                <el-image ref="img" :src="addForm.imgUrl" :preview-src-list="[addForm.imgUrl]"
-                  style="width: 120px; height: 120px" fit="contain"></el-image>
-                <div class="mask" v-show="addForm.imgHover">
-                  <i class="el-icon-zoom-in" @click="previewImage()"></i>
-                  <i class="el-icon-upload2" @click="uploadImage()"></i>
-                </div>
-              </div>
-              <div class="add" v-else @click="uploadImage()">
-                <i class="el-icon-plus avatar-uploader-icon"></i>
-              </div>
-            </div>
-          </div>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="cancelAddForm">取 消</el-button>
-        <el-button type="primary" @click="submitAddForm">确 定</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 查看优惠券 -->
-    <el-dialog title="查看优惠券" :visible.sync="checkCouponVisible" :show-close="false" width="50%" top="10vh"
-      :close-on-click-modal="false">
-      <div class="couponDetail">
-        <div class="item clearfix">
-          <span>优惠券名称:</span>
-          <span>{{ couponDetail.couponName }}</span>
-        </div>
-        <div class="item clearfix">
-          <span>优惠券类型:</span>
-          <span v-if="couponDetail.couponType == 'SATISFY'">满减券</span>
-          <span v-if="couponDetail.couponType == 'GOODS'">商品券</span>
-        </div>
-        <div class="item clearfix">
-          <span>领取条件:</span>
-          <!-- <span v-if="couponDetail.receiveCrowd == 0">所有用户</span> -->
-          <span v-if="couponDetail.receiveCrowd == 3">所有业务员</span>
-          <span v-if="couponDetail.receiveCrowd == 4">所有会员</span>
-          <span v-if="couponDetail.receiveCrowd == 1">指定标签</span>
-          <span v-if="couponDetail.receiveCrowd == 2">指定会员</span>
-        </div>
-        <div class="item clearfix" v-if="couponDetail.receiveCrowd === 1">
-          <span>选择标签:</span>
-          <span>
-            <el-tag size="small" v-for="(item, index) in couponDetail.tagList" :key="index"
-              style="margin-right: 5px">{{ item.tagName }}</el-tag>
-          </span>
-        </div>
-        <div class="item clearfix" v-if="couponDetail.receiveCrowd === 2">
-          <span>选择会员:</span>
-          <span class="table-span">
-            <el-table :data="couponDetail.userList" element-loading-text="Loading" border fit highlight-current-row stripe
-              max-height="300px">
-              <el-table-column align="center" label="头像" prop="avatar">
-                <template slot-scope="scope">
-                  <el-image style="width: 40px; height: 40px; border-radius: 50%;" :src="scope.row.avatar"
-                    :preview-src-list="[scope.row.avatar]" fit="cover"></el-image>
-                </template>
-              </el-table-column>
-              <el-table-column align="center" label="名称" prop="nickName"></el-table-column>
-              <el-table-column align="center" label="电话" prop="mobile" min-width="120"></el-table-column>
-              <el-table-column align="center" label="性别" prop="sex"></el-table-column>
-              <el-table-column align="center" label="地区" prop="city" min-width="100">
-                <template slot-scope="scope">
-                  {{ scope.row.province }}{{ scope.row.city }}
-                </template>
-              </el-table-column>
-              <el-table-column align="center" label="角色" prop="memberName" min-width="100">
-                <template slot-scope="scope">
-                  {{ scope.row.type | MEMBER_CURRENT_TYPE_FILTER }}
-                </template>
-              </el-table-column>
-            </el-table>
-          </span>
-        </div>
-        <div class="item clearfix" v-if="couponDetail.couponType == 'SATISFY'">
-          <span>订单满足金额:</span>
-          <span>{{ couponDetail.orderAmount }}</span>
-        </div>
-        <div class="item clearfix" v-if="couponDetail.couponType == 'GOODS'">
-          <span>指定商品:</span>
-          <span>
-            <div v-for="(item, index) in couponDetail.goodsList" :key="index" style="margin-bottom: 10px;">
-              {{ item.goodsName }}
-            </div>
-          </span>
-        </div>
-        <div class="item clearfix">
-          <span>优惠券面值:</span>
-          <span>{{ couponDetail.couponValue }}</span>
-        </div>
-
-        <template
-          v-if="couponDetail.receiveCrowd == 3 || (couponDetail.receiveCrowd == 2 && couponDetail.userList.length > 0 && couponDetail.userList[0].type == 'SERVICE')">
-          <div class="item clearfix">
-            <span>每人分享次数:</span>
-            <span>{{ couponDetail.shareTimes }}</span>
-          </div>
-        </template>
-        <template v-else>
-          <div class="item clearfix">
-            <span>发放数量:</span>
-            <span>{{ couponDetail.couponAmount }}</span>
-          </div>
-          <div class="item clearfix">
-            <span>每人领用张数:</span>
-            <span>{{ couponDetail.receiveLimitCount }}</span>
-          </div>
-        </template>
-        <div class="item clearfix">
-          <span>显示时间:</span>
-          <span>{{ couponDetail.displayTime }}</span>
-        </div>
-        <div class="item clearfix">
-          <span>领取时间:</span>
-          <span>{{ couponDetail.obtainStartTime.slice(0, 10) }} - {{ couponDetail.obtainEndTime.slice(0, 10) }}</span>
-        </div>
-        <div class="item clearfix">
-          <span>使用时间:</span>
-          <span>{{ couponDetail.activeStartTime.slice(0, 10) }} - {{ couponDetail.activeEndTime.slice(0, 10) }}</span>
-        </div>
-        <div class="item clearfix">
-          <span>使用说明:</span>
-          <span>{{ couponDetail.note }}</span>
-        </div>
-        <div class="item clearfix">
-          <span>备注:</span>
-          <span>{{ couponDetail.remark }}</span>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="checkCouponVisible = false">关 闭</el-button>
-      </span>
-    </el-dialog>
-
-    <!-- 选择商品 -->
-    <el-dialog title="选择商品" :visible.sync="addGoodsVisible" :show-close="false" width="50%" :close-on-click-modal="false">
-      <div class="dialog-container clearfix">
-        <div class="left fl">
-          <div class="item" @click="changeClassify('')">全部分类</div>
-          <div class="group" v-for="(item, index) in classifyList" :key="index">
-            <div class="item" @click="toggleOpen(index)">
-              <i :class="item.isOpen ? 'el-icon-caret-bottom' : 'el-icon-caret-right'"></i> {{ item.name }}
-            </div>
-            <div class="child" v-if="item.isOpen">
-              <div class="item" v-for="(childItem, childIndex) in item.children" :key="childIndex"
-                @click="changeClassify(childItem.categoryId)">{{ childItem.name }}</div>
-            </div>
-          </div>
-        </div>
-        <div class="right fl">
-          <div class="search">
-            <el-input placeholder="请输入商品名称进行搜索" v-model="goods_keyword" class="input-with-select" clearable size="small"
-              style="width: 250px">
-              <el-button slot="append" icon="el-icon-search" size="small" @click="getGoodsListByScreen"></el-button>
-            </el-input>
-          </div>
-          <div class="table" style="margin: 10px 0 20px;">
-            <el-table v-loading="goodsTable_listLoading" :data="goodsTable_dataList" element-loading-text="Loading"
-              tooltip-effect="dark" style="width: 100%" max-height="270" @selection-change="handleChooseGoods">
-              <el-table-column align="center" type="selection" :selectable='checkboxSelect' width="45"></el-table-column>
-              <el-table-column align="center" prop="goodsName" label="商品名称" min-width="200"
-                show-overflow-tooltip></el-table-column>
-              <el-table-column align="center" prop="goodsPrice" label="价格" width="80"></el-table-column>
-              <el-table-column align="center" prop="stockNum" label="库存" width="80"></el-table-column>
-            </el-table>
-          </div>
-          <div class="pagination clearfix">
-            <div class="fr">
-              <el-pagination @current-change="goodsTableCurrentChange" :current-page="goodsTable_currentPage"
-                :page-size="goodsTable_pageSize" background layout="prev, pager, next" :total="goodsTable_listTotal">
-              </el-pagination>
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitAddGoods">保 存</el-button>
-        <el-button @click="cancelAddGoods">取 消</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 选择会员 -->
-    <el-dialog title="选择会员" :visible.sync="addMemberVisible" :show-close="false" width="65%"
-      :close-on-click-modal="false">
-      <div class="dialog-container2 clearfix">
-        <el-form ref="screenForm" :model="member_screenForm" size="small" label-position="left">
-          <el-row :gutter="20">
-            <el-col :xs="24" :sm="12" :lg="7">
-              <el-form-item label="关键词" prop="keyword" label-width="55px">
-                <el-input v-model="member_screenForm.keyword" placeholder="请输入会员名称/电话"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :xs="24" :sm="12" :lg="7">
-              <el-form-item label="注册日期" prop="registerDate" label-width="70px">
-                <el-date-picker style="width: 100%" v-model="member_screenForm.registerDate" type="daterange"
-                  value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
-                </el-date-picker>
-              </el-form-item>
-            </el-col>
-            <el-col :xs="24" :sm="12" :lg="7">
-              <el-form-item label="" prop="type" label-width="20px">
-                <el-radio-group v-model="member_screenForm.type" :disabled="memberList.length > 0 ? true : false">
-                  <el-radio :label="'SERVICE'">业务员</el-radio>
-                  <el-radio :label="'GENERAL'">普通用户</el-radio>
-                </el-radio-group>
-              </el-form-item>
-            </el-col>
-            <el-col :xs="24" :sm="12" :lg="2" class="tr">
-              <el-button size="small" type="primary" @click="getMemberListByScreen">搜索</el-button>
-            </el-col>
-          </el-row>
-        </el-form>
-        <div class="table memberTable" style="margin: 10px 0 20px;">
-          <el-table v-loading="memberTable_listLoading" :data="memberTable_dataList" element-loading-text="Loading"
-            tooltip-effect="dark" style="width: 100%" max-height="360" @selection-change="handleChooseMember">
-            <el-table-column align="center" type="selection" :selectable='checkboxSelect' width="45"></el-table-column>
-            <el-table-column align="center" prop="nickName" label="会员名称" min-width="150"></el-table-column>
-            <el-table-column align="center" prop="sex" label="性别" min-width="100"></el-table-column>
-            <!-- <el-table-column align="center" label="地区" prop="city" min-width="100">
-              <template slot-scope="scope">
-                {{ scope.row.province }}{{ scope.row.city }}
-              </template>
-            </el-table-column> -->
-            <el-table-column align="center" prop="mobile" label="注册手机" min-width="100"></el-table-column>
-            <!-- <el-table-column align="center" prop="createTime" label="注册时间" min-width="100"></el-table-column> -->
-            <el-table-column align="center" prop="memberName" label="角色" min-width="100">
-              <template slot-scope="scope">
-                {{ scope.row.type | MEMBER_CURRENT_TYPE_FILTER }}
-              </template>
-            </el-table-column>
-            <el-table-column align="center" prop="memberName" label="状态" min-width="100">
-              <template slot-scope="scope">
-                <el-tag :type="scope.row.status ? 'success' : 'danger'">{{ scope.row.status | MEMBER_CURRENT_STATUS_FILTER
-                }}</el-tag>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-        <div class="pagination clearfix">
-          <div class="fr">
-            <el-pagination @current-change="memberTableCurrentChange" :current-page="memberTable_currentPage"
-              :page-size="memberTable_pageSize" background layout="prev, pager, next" :total="memberTable_listTotal">
-            </el-pagination>
-          </div>
-        </div>
-      </div>
-
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitAddMember">保 存</el-button>
-        <el-button @click="cancelAddMember">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { addCoupon, changeCouponFlag, editCoupon, getCouponDetail, getList, getClassifyList, getGoodsList, getTagList, getMemberList, reissueCoupon } from "@/api/coupon";
-import { MEMBER_CURRENT_TYPE, COUPON_CURRENT_FLAG } from "@/utils/select_data";
-import { downloadFiles } from '@/utils/util'
-import { getToken } from '@/utils/auth'
-
-export default {
-  filters: {
-    typeFilter(type) {
-      const typeMap = {
-        'SATISFY': '满减券',
-        'DISCOUNT': '折扣券',
-        'RANDOM': '随机金额券',
-        'GOODS': '商品券',
-      }
-      return typeMap[type]
-    }
-  },
-  data() {
-    return {
-      baseURL: process.env.VUE_APP_BASE_API,
-      myHeaders: { 'x-token': getToken() },
-      tagList: [],
-      tagValue: [],
-      dataList: null, // 列表数据
-      listLoading: true, // 列表加载loading
-      screenForm: { // 筛选表单数据
-        couponName: '', // 优惠券名称
-        flag: '' // 标志
-      },
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      select_flag: COUPON_CURRENT_FLAG,
-      editId: null,
-      addFormType: 'add',
-      addFormVisible: false,
-      addForm: {
-        activeDay: '', // 有效时间
-        activeDate: [], // 使用时间
-        receiveDate: [], // 领取时间
-        displayDate: '', // 显示时间
-        couponId: '',
-        couponName: '', // 优惠券名称
-        couponAmount: 0, // 发放数量
-        couponType: 'SATISFY', // 优惠券类型
-        receiveCrowd: 3, // 领取条件
-        orderAmount: 0, // 订单满足金额
-        activeType: 1, // 用券时间类型(不需要填)
-        receiveLimitCount: 1, // 每人领用张数
-        shareTimes: 1, // 每人分享次数
-        couponValue: 0, // 优惠券面值
-        note: '', // 使用说明
-        remark: '', // 备注
-        flag: '',
-        imgUrl: '',
-        imgHover: false,
-      },
-      addFormRules: {
-        couponName: [
-          { required: true, message: '请填写优惠券名称', trigger: 'blur' }
-        ],
-        couponType: [
-          { required: true, message: '请选择优惠券类型', trigger: 'change' }
-        ],
-        receiveCrowd: [
-          { required: true, message: '请选择领取条件', trigger: 'change' }
-        ],
-        receiveLimitCount: [
-          { required: true, message: '请填写每人领用张数', trigger: 'blur' }
-        ],
-        shareTimes: [
-          { required: true, message: '请填写每人分享次数', trigger: 'blur' }
-        ],
-        couponValue: [
-          { required: true, message: '请填写优惠券面值', trigger: 'blur' }
-        ],
-        couponAmount: [
-          { required: true, message: '请填写发放数量', trigger: 'blur' }
-        ],
-        orderAmount: [
-          { required: true, message: '请输填写订单满足金额', trigger: 'blur' }
-        ],
-        // activeDate: [
-        //   { required: true, message: '请选择使用时间', trigger: 'change' }
-        // ],
-        receiveDate: [
-          { required: true, message: '请选择领取时间', trigger: 'change' }
-        ],
-        displayDate: [
-          { required: true, message: '请选择显示时间', trigger: 'change' }
-        ],
-        note: [
-          { required: true, message: '请填写使用说明', trigger: 'blur' }
-        ]
-      },
-
-      goodsList: [], // 商品数据
-      addGoodsVisible: false,
-      maxGoodsCount: 10000000,
-      classifyList: [],
-      classifyCurrent: '',
-      goods_keyword: '',
-      goodsTable_dataList: null, // 列表数据
-      goodsTable_listLoading: true, // 列表加载loading
-      goodsTable_currentPage: 1, // 当前页码
-      goodsTable_pageSize: 10, // 每页数量
-      goodsTable_listTotal: 0, // 列表总数
-      goodsTable_choose: [], // table中 当前选择商品
-
-      memberList: [], // 会员数据
-      addMemberVisible: false,
-      member_screenForm: { // 筛选表单数据
-        keyword: '', // 名称
-        registerDate: [],
-        type: 'SERVICE',
-      },
-      memberTable_dataList: null, // 列表数据
-      memberTable_listLoading: true, // 列表加载loading
-      memberTable_currentPage: 1, // 当前页码
-      memberTable_pageSize: 10, // 每页数量
-      memberTable_listTotal: 0, // 列表总数
-      memberTable_choose: [], // table中 当前选择会员
-
-      checkCouponVisible: false, // 查看优惠券弹窗
-      couponDetail: {
-        activeStartTime: '',
-        activeEndTime: '',
-        obtainStartTime: '',
-        obtainEndTime: '',
-      }, // 优惠券详情
-
-      select_type: MEMBER_CURRENT_TYPE
-    }
-  },
-  computed: {
-    isService() {
-      if (this.addForm.receiveCrowd == 3) {
-        return true;
-      }
-      if (this.addForm.receiveCrowd == 2 && this.memberType == 'SERVICE') {
-        return true;
-      }
-      return false;
-    },
-
-    memberType() {
-      if (this.memberList.length > 0) {
-        return this.memberList[0].type;
-      } else {
-        return '';
-      }
-    }
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    getList() {
-      this.listLoading = true;
-
-      let params = {
-        couponName: this.screenForm.couponName,
-        flag: this.screenForm.flag,
-        pageNum: this.currentPage,
-        pageSize: this.pageSize
-      }
-
-      getList(params).then(res => {
-        this.dataList = res.data.records;
-        this.listTotal = res.data.total;
-        this.listLoading = false;
-      })
-    },
-
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-
-    dateCompute(row, type) {
-      if (type === 1) {
-        return row.activeStartTime.split(' ')[0].replaceAll('-', '.') + ' - ' + row.activeEndTime.split(' ')[0].replaceAll('-', '.')
-      } else {
-        if (row.releaseStartTime) {
-          return row.releaseStartTime.split(' ')[0].replaceAll('-', '.') + ' - ' + row.releaseEndTime.split(' ')[0].replaceAll('-', '.')
-        }
-        return ''
-      }
-    },
-
-    // 获取标签列表
-    getTagList() {
-      getTagList({
-        pageNum: 1,
-        pageSize: 1000,
-      }).then(res => {
-        res.data.records.forEach(item => {
-          item.value = item.tagId;
-          item.tagName = item.name;
-        });
-        this.tagList = res.data.records;
-      })
-    },
-
-    addOrEdit(type, id) {
-      this.addFormType = type;
-      this.addFormVisible = true;
-      this.getTagList();
-      if (type == 'edit') {
-        this.editId = id;
-        getCouponDetail({ couponId: id }).then(res => {
-          this.addForm = {
-            couponId: res.data.couponId,
-            couponName: res.data.couponName,
-            couponAmount: res.data.couponAmount,
-            couponType: res.data.couponType,
-            orderAmount: res.data.orderAmount,
-            activeType: res.data.activeType,
-            receiveCrowd: res.data.receiveCrowd,
-            receiveLimitCount: res.data.receiveLimitCount,
-            shareTimes: res.data.shareTimes,
-            couponValue: res.data.couponValue,
-            note: res.data.note,
-            remark: res.data.remark,
-            flag: res.data.flag,
-            displayDate: res.data.displayTime,
-            activeDay: res.data.activeDay,
-            imgUrl: res.data.imgSrc,
-            imgHover: false,
-          }
-          this.$set(this.addForm, 'activeDate', [res.data.activeStartTime.split(' ')[0], res.data.activeEndTime.split(' ')[0]])
-          this.$set(this.addForm, 'receiveDate', [res.data.obtainStartTime.split(' ')[0], res.data.obtainEndTime.split(' ')[0]])
-          this.goodsList = res.data.goodsList;
-          this.memberList = res.data.userList;
-          res.data.tagList.forEach(item => {
-            item.value = item.tagId;
-          });
-          this.tagValue = res.data.tagList;
-        })
-      } else {
-        this.addForm.flag = '';
-      }
-    },
-
-    // 取消 新增编辑
-    cancelAddForm() {
-      this.addFormVisible = false;
-      this.$refs.addForm.resetFields();
-    },
-
-    // 提交 新增编辑
-    submitAddForm() {
-      this.$refs.addForm.validate((valid) => {
-        if (valid) {
-          if (!this.addForm.activeDay && (!this.addForm.activeDate || !this.addForm.activeDate.length)) {
-            return this.$errorMsg('请选择使用时间 或 填写有效时间');
-          }
-          let params = {
-            couponName: this.addForm.couponName,
-            couponAmount: this.addForm.couponAmount,
-            couponType: this.addForm.couponType,
-            activeType: this.addForm.activeType,
-            activeDay: this.addForm.activeDay,
-            activeStartTime: (this.addForm.activeDate && this.addForm.activeDate[0]) ? this.addForm.activeDate[0] + ' 00:00:00' : '',
-            activeEndTime: (this.addForm.activeDate && this.addForm.activeDate[1]) ? this.addForm.activeDate[1] + ' 23:59:59' : '',
-            obtainStartTime: this.addForm.receiveDate[0] + ' 00:00:00',
-            obtainEndTime: this.addForm.receiveDate[1] + ' 23:59:59',
-            displayTime: this.addForm.displayDate + ' 00:00:00',
-            receiveCrowd: this.addForm.receiveCrowd,
-            receiveLimitCount: this.addForm.receiveLimitCount,
-            shareTimes: this.addForm.shareTimes,
-            couponValue: this.addForm.couponValue,
-            note: this.addForm.note,
-            remark: this.addForm.remark,
-            imgSrc: this.addForm.imgUrl,
-          }
-          if (this.addForm.couponType == 'SATISFY') {
-            params.orderAmount = this.addForm.orderAmount;
-          } else if (this.addForm.couponType == 'GOODS') {
-            params.goodsList = this.goodsList;
-          }
-          if (this.addForm.receiveCrowd === 1) {
-            if (this.tagValue.length < 1) {
-              return this.$errorMsg('请选择标签');
-            }
-            params.tagList = this.tagValue;
-          } else if (this.addForm.receiveCrowd === 2) {
-            if (this.memberList.length < 1) {
-              return this.$errorMsg('请选择会员');
-            }
-            params.userList = this.memberList;
-          }
-          if (this.addFormType == 'edit') {
-            params.couponId = this.editId;
-            editCoupon(params).then(res => {
-              this.$successMsg('编辑成功');
-              this.getList();
-              this.cancelAddForm();
-            })
-          } else {
-            addCoupon(params).then(res => {
-              this.$successMsg('新增成功');
-              this.getList();
-              this.cancelAddForm();
-            })
-          }
-        }
-      })
-    },
-
-    // 获取分类列表
-    getClassifyList() {
-      getClassifyList({ categoryLevel: 1, status: true }).then(res => {
-        res.data.forEach(item => {
-          item.isOpen = false;
-        });
-        this.classifyList = res.data;
-        this.classifyCurrent = '';
-        this.getGoodsList();
-      })
-    },
-
-    // 展开/收起 分类
-    toggleOpen(index) {
-      this.classifyList[index].isOpen = !this.classifyList[index].isOpen;
-    },
-
-    // 切换分类
-    changeClassify(cid) {
-      if (this.goodsTable_choose.length > 0) {
-        return this.$errorMsg('当前已选择商品,不可切换分类');
-      }
-      this.classifyCurrent = cid;
-      this.goodsTable_currentPage = 1;
-      this.getGoodsList();
-    },
-
-    // 搜索
-    getGoodsListByScreen() {
-      if (this.goodsTable_choose.length > 0) {
-        return this.$errorMsg('当前已选择商品,不可搜索');
-      }
-      this.goodsTable_currentPage = 1;
-      this.getGoodsList();
-    },
-
-    // 获取商品列表
-    getGoodsList() {
-      getGoodsList({
-        pageNum: this.goodsTable_currentPage,
-        pageSize: this.goodsTable_pageSize,
-        keyword: this.goods_keyword,
-        categoryId: this.classifyCurrent,
-      }).then(res => {
-        let oldGoodsList = this.goodsList;
-        let newGoodsList = res.data.records;
-        for (let i = 0; i < oldGoodsList.length; i++) {
-          let oldItem = oldGoodsList[i]
-          for (let j = 0; j < newGoodsList.length; j++) {
-            let newItem = newGoodsList[j]
-            if (newItem.goodsId === oldItem.goodsId) {
-              newGoodsList[j].selected = true;
-              break;
-            }
-          }
-        }
-        this.goodsTable_dataList = newGoodsList;
-        this.goodsTable_listTotal = res.data.total;
-        this.goodsTable_listLoading = false;
-      })
-    },
-
-    // 查询重复值并禁选
-    checkboxSelect(row, rowIndex) {
-      if (row.selected) {
-        return false // 禁用
-      } else {
-        return true // 不禁用
-      }
-    },
-
-    // 更改列表当前页
-    goodsTableCurrentChange(val) {
-      if (this.goodsTable_choose.length > 0) {
-        return this.$errorMsg('当前已选择商品,不可切换分页');
-      }
-      this.goodsTable_currentPage = val;
-      this.getGoodsList();
-    },
-
-    // table点击选择商品
-    handleChooseGoods(val) {
-      this.goodsTable_choose = val;
-    },
-
-    // 添加商品
-    addGoods() {
-      this.addGoodsVisible = true;
-      this.getGoodsList();
-    },
-
-    // 删除商品
-    deleteGoods(index) {
-      this.goodsList.splice(index, 1);
-    },
-
-    // 取消 选择商品
-    cancelAddGoods() {
-      this.addGoodsVisible = false;
-    },
-
-    // 提交 选择商品
-    submitAddGoods() {
-      // if(this.goodsTable_choose.length > 1) {
-      //   return this.$errorMsg('每次只能选择一个商品');
-      // }
-      let oldGoodsList = this.goodsList;
-      let newGoodsList = this.goodsTable_choose;
-      this.goodsList = oldGoodsList.concat(newGoodsList);
-      this.addGoodsVisible = false;
-    },
-
-    // 搜索
-    getMemberListByScreen() {
-      if (this.memberTable_choose.length > 0) {
-        return this.$errorMsg('当前已选择会员,不可搜索');
-      }
-      this.memberTable_currentPage = 1;
-      this.getMemberList();
-    },
-
-    // 获取会员列表
-    getMemberList() {
-      getMemberList({
-        pageNum: this.memberTable_currentPage,
-        pageSize: this.memberTable_pageSize,
-        keyword: this.member_screenForm.keyword,
-        type: this.member_screenForm.type,
-        startTime: this.member_screenForm.registerDate && this.member_screenForm.registerDate[0] ? this.member_screenForm.registerDate[0] + ' 00:00:00' : null,
-        endTime: this.member_screenForm.registerDate && this.member_screenForm.registerDate[1] ? this.member_screenForm.registerDate[1] + ' 23:59:59' : null,
-      }).then(res => {
-        let oldMemberList = this.memberList;
-        let newMemberList = res.data.records;
-        for (let i = 0; i < oldMemberList.length; i++) {
-          let oldItem = oldMemberList[i]
-          for (let j = 0; j < newMemberList.length; j++) {
-            let newItem = newMemberList[j]
-            if (newItem.userId === oldItem.userId) {
-              newMemberList[j].selected = true;
-              break;
-            }
-          }
-        }
-        this.memberTable_dataList = newMemberList;
-        this.memberTable_listTotal = res.data.total;
-        this.memberTable_listLoading = false;
-      })
-    },
-
-    // 更改列表当前页
-    memberTableCurrentChange(val) {
-      if (this.memberTable_choose.length > 0) {
-        return this.$errorMsg('当前已选择会员,不可切换分页');
-      }
-      this.memberTable_currentPage = val;
-      this.getMemberList();
-    },
-
-    // table点击选择会员
-    handleChooseMember(val) {
-      this.memberTable_choose = val;
-    },
-
-    // 添加会员
-    addMember() {
-      this.addMemberVisible = true;
-
-      if (this.memberList.length > 0) {
-        this.member_screenForm.type = this.memberList[0].type;
-      }
-
-      this.getMemberList();
-    },
-
-    // 删除会员
-    deleteMember(index) {
-      this.memberList.splice(index, 1);
-    },
-
-    // 取消 选择会员
-    cancelAddMember() {
-      this.addMemberVisible = false;
-    },
-
-    // 提交 选择会员
-    submitAddMember() {
-      // if(this.memberTable_choose.length > 1) {
-      //   return this.$errorMsg('每次只能选择一个会员');
-      // }
-      let oldMemberList = this.memberList;
-      let newMemberList = this.memberTable_choose;
-      this.memberList = oldMemberList.concat(newMemberList);
-      this.addMemberVisible = false;
-    },
-
-    // 操作 - 更改优惠券标志为取消
-    changeFlag(couponId) {
-      let params = {
-        couponId: couponId,
-        flag: 'CANCEL',
-      }
-      changeCouponFlag(params).then(() => {
-        this.getList();
-        this.$successMsg('取消成功');
-      })
-    },
-
-    // 查看优惠券
-    checkCoupon(couponId) {
-      this.checkCouponVisible = true;
-      getCouponDetail({ couponId }).then(res => {
-        this.couponDetail = res.data;
-      })
-    },
-
-    // 导出
-    handleExport() {
-      let screenData = {
-        couponName: this.screenForm.couponName,
-        flag: this.screenForm.flag,
-      };
-      downloadFiles('coupon/list/export', screenData);
-    },
-
-    // 补发业务员优惠券
-    reissueCoupon(couponId) {
-      reissueCoupon({ couponId }).then(res => {
-        this.getList();
-        this.$successMsg();
-      })
-    },
-
-    uploadImage() {
-      document.querySelector('.avatar-uploader input').click();
-    },
-
-    // 上传图片
-    uploadSuccess(res, file) {
-      this.addForm.imgUrl = res.data.url;
-    },
-
-    beforeUpload(file) {
-      const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
-      const whiteList = ['jpg', 'jpeg', 'png'];
-      if (whiteList.indexOf(fileSuffix) === -1) {
-        this.$errorMsg('只支持上传jpg/jpeg/png文件!');
-        return false;
-      }
-    },
-
-    // 预览图片
-    previewImage() {
-      this.$refs.img.showViewer = true;
-    },
-  }
-}
-</script>
-
-<style scoped lang="scss">
-.dialog-container {
-  .left {
-    width: 140px;
-    height: 350px;
-    overflow-y: scroll;
-
-    .group {
-      margin-top: 10px;
-    }
-
-    .child {
-      margin-top: 5px;
-
-      .item {
-        padding-left: 18px;
-      }
-    }
-
-    .item {
-      cursor: pointer;
-      line-height: 24px;
-    }
-  }
-
-  .right {
-    width: calc(100% - 140px);
-    height: 350px;
-    box-sizing: border-box;
-    padding-left: 20px;
-  }
-}
-
-.goods-container {
-  .item {
-    margin-bottom: 10px;
-
-    &:last-child {
-      margin-bottom: 0;
-    }
-  }
-}
-
-.couponDetail {
-  height: 60vh;
-  overflow-y: scroll;
-  padding-right: 20px;
-
-  .item {
-    font-size: 16px;
-    margin-bottom: 20px;
-
-    &>span {
-      float: left;
-
-      &:first-child {
-        width: 140px;
-        text-align: right;
-        margin-right: 10px;
-        font-weight: 500;
-      }
-    }
-
-    .table-span {
-      width: calc(100% - 170px);
-    }
-  }
-}
-
-.addMember {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  border: 1px solid #EBEEF5;
-  border-top: none;
-  height: 50px;
-}
-
-// .memberTable {
-//   ::v-deep .el-table__header-wrapper .el-checkbox {
-//     display: none;
-//   }
-// }
-
-.images {
-  display: flex;
-  flex-wrap: wrap;
-
-  .main-img {
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    width: 120px;
-    margin-right: 20px;
-
-    .img {
-      border: 1px dashed #eaeaea;
-      border-radius: 5px;
-      overflow: hidden;
-      position: relative;
-
-      .el-image {
-        display: block;
-      }
-
-      .mask {
-        position: absolute;
-        left: 0;
-        top: 0;
-        width: 120px;
-        height: 120px;
-        background: rgba($color: #000000, $alpha: 0.3);
-        display: flex;
-        align-items: center;
-        justify-content: center;
-
-        i {
-          font-size: 20px;
-          color: #ffffff;
-          cursor: pointer;
-          margin: 0 8px;
-        }
-      }
-    }
-
-    .text {
-      font-size: 14px;
-      color: #666666;
-    }
-  }
-
-  .add {
-    width: 120px;
-    height: 120px;
-    border: 1px dashed #eaeaea;
-    border-radius: 5px;
-    cursor: pointer;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-
-    i {
-      font-size: 30px;
-      color: #999;
-    }
-  }
-}
-</style>