Forráskód Böngészése

添加注释和id

chenrui 10 hónapja
szülő
commit
c4e2a44dba

+ 24 - 34
src/views/promotionRulesManagement/promotionManagement/addModal.vue

@@ -1,7 +1,7 @@
 <template>
   <a-modal
     centered
-    class="promotion-modal"
+    class="promotionAdd-modal"
     :footer="null"
     :maskClosable="false"
     :title="isEdit?'编辑':'新增'"
@@ -10,7 +10,7 @@
     :width="900">
     <a-spin :spinning="spinning" tip="Loading...">
       <a-form-model
-        id="promotion-form"
+        id="promotionAdd-form"
         ref="ruleForm"
         :model="form"
         :rules="rules"
@@ -18,11 +18,12 @@
         :wrapper-col="formItemLayout.wrapperCol"
       >
         <a-form-model-item label="促销名称" prop="name">
-          <a-input v-model="form.name" placeholder="请输入促销名称(最多30个字符)" :maxLength="30"></a-input>
+          <a-input id="promotionAdd-name" v-model="form.name" placeholder="请输入促销名称(最多30个字符)" :maxLength="30"></a-input>
         </a-form-model-item>
         <a-form-model-item label="促销时间" prop="time">
           <a-range-picker
             style="width:100%"
+            id="promotionAdd-time"
             v-model="form.time"
             :format="dateFormat"
             :disabled-date="disabledDate"
@@ -31,24 +32,15 @@
         </a-form-model-item>
         <a-form-model-item label="参与经销商" prop="dealerSnList">
           <a-row :gutter="15">
-            <!-- <a-col :md="15" :sm="24">
-              <a-select
-                v-model="form.buyerLimitEnable"
-                placeholder="请选择参与经销商"
-              >
-                <a-select-option :value="0">全部经销商</a-select-option>
-                <a-select-option :value="1">部分经销商</a-select-option>
-              </a-select>
-            </a-col> -->
             <a-col :md="5" :sm="24">
-              <a-button type="primary" :loading="spinning" @click="handleDealerModal">选择经销商</a-button>
+              <a-button type="primary" id="promotionAdd-addDealer" :loading="spinning" @click="handleDealerModal">选择经销商</a-button>
             </a-col>
             <a-col :md="6" :sm="24" v-show="chooseDealerList && chooseDealerList.length>0">
               已{{ chooseDealerList.length }}选项
             </a-col>
             <a-col :md="24" :sm="24" v-show="chooseDealerList && chooseDealerList.length>0">
               <div class="buyerBox">
-                <a-tag closable v-for="con in chooseDealerList" :key="con.dealerSn" @close="delBuyerName(con)">
+                <a-tag closable :id="'promotionAdd-dealerList'+con.dealerSn" v-for="con in chooseDealerList" :key="con.dealerSn" @close="delBuyerName(con)">
                   {{ con.dealerName }}
                 </a-tag>
               </div>
@@ -58,7 +50,7 @@
         <a-form-model-item style="margin-bottom:10px;" label="促销描述" prop="description" :wrapperCol="{ span: 16 }" :labelCol="{ span: 4 }">
           <a-textarea
             :rows="5"
-            id="promotion-remark"
+            id="promotionAdd-remark"
             :maxLength="500"
             v-model="form.description"
             placeholder="请输入备注(最多500个字符)"
@@ -66,7 +58,7 @@
         </a-form-model-item>
       </a-form-model>
       <div class="btn-cont">
-        <a-button id="promotion-modal-back" @click="isShow = false" >取消</a-button>
+        <a-button id="promotionAdd-modal-cancel" @click="isShow = false" >取消</a-button>
         <a-button
           v-if="!isEdit"
           type="primary"
@@ -107,51 +99,49 @@ import moment from 'moment'
 import chooseDealer from './chooseDealer'
 // 接口
 import { promoActiveCreate, promoActiveDetail, promoActiveUpdate } from '@/api/promoActive'
-
 export default {
   name: 'PromotionAddModal',
   mixins: [commonMixin],
   components: { chooseDealer },
   props: {
-    openModal: {
-      //  弹框显示状态
+    openModal: {//  弹框显示状态
       type: Boolean,
       default: false
     },
-    itemId: {
-      //  弹框显示状态
+    itemId: {// 当前活动sn
       type: String,
       default: ''
     }
   },
   data () {
     return {
-      isShow: this.openModal, //  是否打开弹框
-      openDealerModal: false,
       spinning: false,
-      formItemLayout: {
+      isShow: this.openModal, //  是否打开弹框
+      openDealerModal: false, // 打开经销商弹窗
+      formItemLayout: {// form表单  label布局设置
         labelCol: { span: 4 },
         wrapperCol: { span: 16 }
       },
+      // 提交数据
       form: {
-        promoActiveSn: undefined,
-        name: '',
-        time: [],
-        activeDateStart: undefined,
-        activeDateEnd: undefined,
+        promoActiveSn: undefined, // 活动sn
+        name: '', // 促销名称
+        time: [], // 促销时间
+        activeDateStart: undefined, // 活动开始时间
+        activeDateEnd: undefined, // 活动结束时间
         activeDateEnable: '1',
-        buyerLimitEnable: '1',
-        description: '',
-        dealerSnList: []
+        description: '', // 促销描述
+        dealerSnList: []// 参与经销商列表sn
       },
+      // 表单必填项规则验证
       rules: {
         dealerSnList: [{ required: true, message: '请选择参与经销商', trigger: 'change' }],
         time: [{ required: true, message: '请选择促销时间', trigger: 'change' }],
         name: [{ required: true, message: '请输入促销名称', trigger: 'blur' }],
         description: [{ required: true, message: '请输入促销描述', trigger: 'blur' }]
       },
-      dateFormat: 'YYYY-MM-DD',
-      isEdit: false,
+      dateFormat: 'YYYY-MM-DD', // 促销时间显示格式
+      isEdit: false, // 是否可编辑
       chooseDealerList: []// 选择经销商列表
     }
   },

+ 43 - 22
src/views/promotionRulesManagement/promotionManagement/chooseDealer.vue

@@ -2,11 +2,11 @@
   <a-spin :spinning="spinning" tip="Loading...">
     <!-- 搜索条件 -->
     <div ref="tableSearch" class="table-page-search-wrapper newTableSearchName">
-      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+      <a-form id="chooseDealer-form" layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
         <a-row :gutter="15">
           <a-col :md="8" :sm="24" v-if="pageType=='dealerPromotion'">
             <a-form-model-item label="地区">
-              <AreaList id="viewDealers-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
+              <AreaList id="chooseDealer-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
             </a-form-model-item>
           </a-col>
           <a-col :md="8" :sm="24">
@@ -21,7 +21,12 @@
           </a-col>
           <a-col :md="8" :sm="24">
             <a-form-model-item label="商户级别" prop="dealerLevel">
-              <v-select code="DEALER_LEVEL" id="ucModal-dealerLevel" v-model="queryParam.dealerLevel" allowClear placeholder="请选择商户级别"></v-select>
+              <v-select
+                id="chooseDealer-dealerLevel"
+                code="DEALER_LEVEL"
+                v-model="queryParam.dealerLevel"
+                allowClear
+                placeholder="请选择商户级别"></v-select>
             </a-form-model-item>
           </a-col>
           <a-col :md="8" :sm="24" v-if="pageType!='viewDealers'">
@@ -32,12 +37,12 @@
           <div v-else>
             <a-col :md="8" :sm="24">
               <a-form-item label="审核状态">
-                <v-select code="AUDIT_STATE" id="viewDealers-auditState" v-model="queryParam.auditState" allowClear placeholder="请选择审核状态"></v-select>
+                <v-select code="AUDIT_STATE" id="chooseDealer-auditState" v-model="queryParam.auditState" allowClear placeholder="请选择审核状态"></v-select>
               </a-form-item>
             </a-col>
             <a-col :md="8" :sm="24">
               <a-form-model-item label="地区">
-                <AreaList id="viewDealers-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
+                <AreaList id="chooseDealer-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
               </a-form-model-item>
             </a-col>
           </div>
@@ -49,7 +54,7 @@
       </a-form>
       <!-- 列表 -->
       <div style="margin-bottom: 10px">
-        <a-button type="primary" ghost :loading="loading" @click="handleBatchAudit">批量添加</a-button>
+        <a-button type="primary" ghost id="chooseDealer-add-btn" :loading="loading" @click="handleBatchAudit">批量添加</a-button>
         <span style="margin-left: 5px">
           <template v-if="selectCount"> {{ `已选 ${selectCount} 项` }} </template>
         </span>
@@ -75,27 +80,29 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+// 组件
 import { STable, VSelect } from '@/components'
 import AreaList from '@/views/common/areaList.js'
-import { dealerQueryList, getDealerListInfo } from '@/api/dealer'
 import subarea from '@/views/common/subarea.js'
 import dealerType from '@/views/common/dealerType.js'
+// 接口
+import { dealerQueryList, getDealerListInfo } from '@/api/dealer'
 export default {
   name: 'ChooseDealer',
   mixins: [commonMixin],
   components: { STable, VSelect, subarea, AreaList, dealerType },
   props: {
-    pageType: {
+    pageType: {// 页面类型
       type: String,
       default: ''
     },
-    parentData: {
+    parentData: {// 父级数据
       type: Object,
       default: function () {
         return null
       }
     },
-    itemSn: {
+    itemSn: {// 当前活动sn
       type: String,
       default: ''
     }
@@ -103,39 +110,43 @@ export default {
   data () {
     return {
       spinning: false,
-      dealerType: [],
-      queryParam: { //  查询条件
-        nameLike: '',
+      dealerType: [], // 商户类型
+      //  查询条件
+      queryParam: {
+        nameLike: '', // 经销商名称/别名
         dealerType1: undefined, //  商户类型
         dealerType2: undefined, //  商户类型
-        dealerLevel: null,
+        dealerLevel: null, // 商户级别
         subareaArea: {
           subareaSn: undefined, //  区域
           subareaAreaSn: undefined // 分区
         },
-        auditState: undefined,
-        provinceSn: undefined,
-        citySn: undefined,
-        districtSn: undefined
+        auditState: undefined, // 审核状态
+        provinceSn: undefined, // 省份sn
+        citySn: undefined, // 市sn
+        districtSn: undefined// 区sn
       },
+      // 分页
       pagination: {
         pageSize: 20,
         showSizeChanger: true,
         pageSizeOptions: ['20', '50', '100', '200', '500']
       },
       pageFlag: false,
-      chooseInfo: [],
-      selectedRowKeys: [],
-      dealerList: [],
-      tableHeight: 0,
+      chooseInfo: [], // 已选经销商列表
+      selectedRowKeys: [], // 已选活动数据
+      dealerList: [], // 经销商列表数据
+      tableHeight: 0, // 表格高度
       disabled: false, //  查询、重置按钮是否可操作
       loading: false // 批量添加loading
     }
   },
   computed: {
+    // 计算选择活动条数
     selectCount () {
       return this.selectedRowKeys && this.selectedRowKeys.length
     },
+    // 表头
     columns () {
       const arr = [
         { title: '经销商名称', dataIndex: 'dealerName', width: '25%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
@@ -152,9 +163,11 @@ export default {
     }
   },
   methods: {
+    // 已选活动数据
     onSelectChange (selectedRowKeys) {
       this.selectedRowKeys = selectedRowKeys
     },
+    // 分页
     handlePage (pagination, filters, sorter) {
       const pager = { ...this.pagination }
       pager.pageNo = pagination.pageSize != pager.pageSize ? 1 : pagination.current
@@ -163,6 +176,7 @@ export default {
       this.pagination = pager
       this.loadData()
     },
+    // 获取列表数据
     loadData () {
       this.spinning = true
       const params = { pageSize: 20, pageNo: 1, ...this.pagination }
@@ -194,19 +208,23 @@ export default {
     rowSelectionFun (obj) {
       this.rowSelectionInfo = obj || null
     },
+    // 地区
     areaChange (val) {
       this.queryParam.provinceSn = val[0] ? val[0] : ''
       this.queryParam.citySn = val[1] ? val[1] : ''
       this.queryParam.districtSn = val[2] ? val[2] : ''
     },
+    // 查询
     searchForm () {
       this.loadData()
       this.spinning = false
     },
+    // 区域分区
     subareaChange (val) {
       this.queryParam.subareaArea.subareaSn = val[0] ? val[0] : undefined
       this.queryParam.subareaArea.subareaAreaSn = val[1] ? val[1] : undefined
     },
+    // 获取商户类型
     getDealerType (v, o) {
       this.queryParam.dealerType1 = v[0]
       this.queryParam.dealerType2 = v[1]
@@ -253,6 +271,7 @@ export default {
       this.spinning = false
       this.$emit('plAdd', dealerInfoList.data)
     },
+    // 确定
     handleAdd (row) {
       if (row.subareaArea) {
         const _this = this
@@ -270,6 +289,7 @@ export default {
         this.$emit('add', row)
       }
     },
+    // 初始化
     pageInit (data) {
       const _this = this
       this.$nextTick(() => { // 页面渲染完成后的回调
@@ -279,6 +299,7 @@ export default {
       this.chooseInfo = data || []
       this.resetSearchForm()
     },
+    // 计算表格高度
     setTableH () {
       const tableSearchH = this.$refs.tableSearch.offsetHeight
       this.tableHeight = window.innerHeight - tableSearchH - 285

+ 18 - 13
src/views/promotionRulesManagement/promotionManagement/chooseProductsModal.vue

@@ -19,22 +19,23 @@
             class="form-model-con"
             layout="inline"
             :model="queryParam"
+            id="chooseProducts-form"
             :label-col="formItemLayout.labelCol"
             :wrapper-col="formItemLayout.wrapperCol">
             <a-row :gutter="15">
               <a-col :md="8" :sm="24">
                 <a-form-model-item label="产品编码">
-                  <a-input id="chooseProducts-code" v-model.trim="queryParam.productCode" allowClear placeholder="请输入产品编码"/>
+                  <a-input id="chooseProducts-productCode" v-model.trim="queryParam.productCode" allowClear placeholder="请输入产品编码"/>
                 </a-form-model-item>
               </a-col>
               <a-col :md="8" :sm="24">
                 <a-form-model-item label="原厂编码">
-                  <a-input id="chooseProducts-code" v-model.trim="queryParam.origCode" allowClear placeholder="请输入原厂编码"/>
+                  <a-input id="chooseProducts-origCode" v-model.trim="queryParam.origCode" allowClear placeholder="请输入原厂编码"/>
                 </a-form-model-item>
               </a-col>
               <a-col :md="8" :sm="24">
                 <a-form-model-item label="产品名称">
-                  <a-input id="chooseProducts-name" v-model.trim="queryParam.productName" allowClear placeholder="请输入产品名称"/>
+                  <a-input id="chooseProducts-productName" v-model.trim="queryParam.productName" allowClear placeholder="请输入产品名称"/>
                 </a-form-model-item>
               </a-col>
               <a-col :md="8" :sm="24">
@@ -55,7 +56,7 @@
           </a-form-model>
         </div>
         <div style="margin-bottom: 10px">
-          <a-button type="primary" ghost :loading="loading" @click="handleSave">批量添加</a-button>
+          <a-button type="primary" ghost id="chooseProducts-add-btn" :loading="loading" @click="handleSave">批量添加</a-button>
           <span style="margin-left: 5px">
             <template v-if="selectCount"> {{ `已选 ${selectCount} 项` }} </template>
           </span>
@@ -96,10 +97,12 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+// 组件
 import { STable } from '@/components'
-import { queryWaitingProductPage } from '@/api/promoActive'
 import ProductBrand from '@/views/common/productBrand.js'
 import productTypeAll from '@/views/common/productTypeAll.js'
+// 接口
+import { queryWaitingProductPage } from '@/api/promoActive'
 export default {
   name: 'ChooseProductsModal',
   components: { STable, ProductBrand, productTypeAll },
@@ -127,7 +130,7 @@ export default {
         return []
       }
     },
-    itemSn: {
+    itemSn: {// 活动sn
       type: String,
       default: ''
     },
@@ -141,26 +144,27 @@ export default {
     return {
       spinning: false,
       isShow: this.openModal, //  是否打开弹框
+      // form 表单中label布局
       formItemLayout: {
         labelCol: { span: 4 },
         wrapperCol: { span: 20 }
       },
-      queryParam: { //  查询条件
+      //  查询条件
+      queryParam: {
         productName: '', // 产品名称
         productCode: '', //  产品编码
         origCode: '', // 原厂编码
         productBrandSn: undefined, //  产品品牌
-        productType: [],
+        productType: [], // 产品分类
         productTypeSn1: '', //  产品一级分类
         productTypeSn2: '', //  产品二级分类
         productTypeSn3: '', //  产品三级分类
-        hideProductSnList: [],
-        productTypeSnList: []
+        hideProductSnList: [], // 已选中产品数据
+        productTypeSnList: []// 已选中分类数据
       },
-      chooseDataList: [],
       disabled: false, //  查询、重置按钮是否可操作
       loading: false, //  表格加载中
-      columns: [
+      columns: [// 表头
         { title: '序号', dataIndex: 'no', width: 60, align: 'center' },
         { title: '产品编码', dataIndex: 'code', align: 'center', width: '12%' },
         { title: '产品名称', dataIndex: 'name', align: 'left', width: '18%', ellipsis: true, customRender: function (text) { return text || '--' } },
@@ -211,10 +215,11 @@ export default {
           return data
         })
       },
-      rowSelectionInfo: null
+      rowSelectionInfo: null// 选中数据
     }
   },
   computed: {
+    // 计算选中产品条数
     selectCount () {
       return this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys.length
     }

+ 13 - 7
src/views/promotionRulesManagement/promotionManagement/detailModal.vue

@@ -130,7 +130,7 @@
           </div>
         </a-form-model>
         <div class="btn-cont">
-          <a-button id="promotion-basicInfo-modal-back" @click="isShow = false">关闭</a-button>
+          <a-button id="promotion-basicInfo-modal-close" @click="isShow = false">关闭</a-button>
         </div>
       </div>
     </a-spin>
@@ -139,7 +139,9 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+// 组件
 import { STable } from '@/components'
+// 接口
 import { productTypeQuery } from '@/api/productType'
 import { promoActiveDetail, promoRuleProductList } from '@/api/promoActive'
 
@@ -152,7 +154,7 @@ export default {
       type: Boolean,
       default: false
     },
-    itemSn: {
+    itemSn: {// 活动sn
       type: String,
       default: ''
     }
@@ -161,12 +163,13 @@ export default {
     return {
       isShow: this.openModal, //  是否打开弹框
       spinning: false,
+      // form表单label布局
       formItemLayout: {
         labelCol: { span: 4 },
         wrapperCol: { span: 18 }
       },
-      productTypeList: [],
-      productRangeList: [],
+      productTypeList: [], // 产品范围数据
+      productRangeList: [], // 已选产品范围
       form: {
         promoActiveSn: undefined, // 促销活动sn
         title: '', // 标题
@@ -176,7 +179,7 @@ export default {
         contentLink: '', // 链接内容
         sort: undefined, // 排序
         ruleEnableFlag: '1', // 参数配置 1勾选配置  0不能配置
-        publishFlag: '0',
+        publishFlag: '0', // 是否发布 0 否 1是
         dealerEditFlag: '0', // 加盟商编辑 1是 0否
         promoRule: {
           ruleType: 'ticket', // 基本规则类型
@@ -193,8 +196,8 @@ export default {
           range: '1'
         }
       },
-      imageSet: [],
-      columns: [
+      imageSet: [], // 封面图
+      columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
@@ -203,6 +206,7 @@ export default {
         { title: '返券金额', dataIndex: 'ruleValue', width: '10%', align: 'right', customRender: text => { return ((text || text == 0) ? this.toThousands(text) : '--') } },
         { title: '参考终端价', dataIndex: 'terminalPrice', width: '10%', align: 'right', customRender: text => { return ((text || text == 0) ? this.toThousands(text) : '--') } }
       ],
+      // 表单验证规则
       rules: {
         title: [{ required: true, message: '请输入标题名称', trigger: 'blur' }],
         imageSet: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
@@ -224,10 +228,12 @@ export default {
         this.spinning = true
         const params = Object.assign(parameter, this.queryParam)
         params.promoActiveSn = this.itemSn
+        // 获取详情  已选参与活动产品数据
         return promoRuleProductList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
+            // 计算表格序号
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1

+ 26 - 10
src/views/promotionRulesManagement/promotionManagement/edit.vue

@@ -72,7 +72,7 @@
               <a-form-model-item label="内容类型" prop="contentType">
                 <v-select
                   v-model="form.contentType"
-                  id="promotion-saleStatus"
+                  id="promotion-contentType"
                   code="PROMO_CONTENT_TYPE"
                   showType="radio"
                   :disabled="isDisabled"
@@ -95,7 +95,7 @@
                 <Upload
                   v-if="pageType==='add'||(pageType==='edit'&&!isDisabled)"
                   class="upload"
-                  id="promotionEdit-imageSet"
+                  id="promotionEdit-videoSet"
                   v-model="form.content"
                   fileType="video/mp4"
                   ref="videoSet"
@@ -120,14 +120,14 @@
                 <a-input
                   style="width:50%;"
                   :disabled="form.linkType==='1'||(pageType==='edit'&&isDisabled)"
-                  id="promotionEdit-title"
+                  id="promotionEdit-contentLink"
                   :maxLength="100"
                   v-model.trim="form.contentLink"
                   placeholder="请输入跳转链接"
                   @blur="handleLink"
                   allowClear />
                 <a-select
-                  id="promotionEdit-title"
+                  id="promotionEdit-linkType"
                   :disabled="isDisabled"
                   default-value="货架促销"
                   @change="handleLinkType"
@@ -149,7 +149,7 @@
           <a-row v-if="form.contentType !='LINK' ||(form.contentType ==='LINK'&&form.linkType==='2') ">
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
               <a-form-model-item label="是否发布" prop="publishFlag">
-                <a-radio-group button-style="solid" v-model="form.publishFlag">
+                <a-radio-group button-style="solid" id="promotionEdit-publishFlag" v-model="form.publishFlag">
                   <a-radio-button value="1">
                   </a-radio-button>
@@ -222,6 +222,7 @@
                   style="width:40%;margin-left:10px;"
                   v-model="time"
                   :format="dateFormat"
+                  id="promotionEdit-time"
                   @change="dateChange"
                   :disabled="isDisabled"
                   :disabled-date="disabledDate"
@@ -231,6 +232,7 @@
                     style="margin:0 5px;"
                     v-model="form.promoRule.validDays"
                     :step="1"
+                    id="promotionEdit-validDays"
                     :max="99999999"
                     :min="1"
                     :disabled="isDisabled"
@@ -249,6 +251,7 @@
                   v-model="form.promoRule.ruleExplain"
                   :disabled="isDisabled"
                   type="textarea"
+                  id="promotionEdit-ruleExplain"
                   placeholder="请输入使用说明(最多50个字符)"
                   :maxLength="50" />
               </a-form-model-item>
@@ -264,6 +267,7 @@
                       :tree-data="productTypeList"
                       tree-checkable
                       :disabled="isDisabled"
+                      id="promotionEdit-productTypeList"
                       :getPopupContainer="triggerNode => triggerNode.parentNode"
                       :replaceFields="{children:'children',title: 'productTypeName',key: 'productTypeSn',value: 'productTypeSn'}"
                       @change="onChangeTree"
@@ -282,11 +286,18 @@
                         :step="1"
                         :precision="2"
                         :max="99999999"
+                        id="promotionEdit-ruleValue"
                         :disabled="isDisabled"
                         size="small"/> 元
-                      <a-button type="primary" :disabled="isDisabled" class="button-primary" size="small" @click="handleBatchAdd">批量设置</a-button>
+                      <a-button
+                        type="primary"
+                        id="promotionEdit-addSet-btn"
+                        :disabled="isDisabled"
+                        class="button-primary"
+                        size="small"
+                        @click="handleBatchAdd">批量设置</a-button>
                     </div>
-                    <a-button type="primary" :disabled="isDisabled" @click="handleAddProduct" size="small">添加产品</a-button>
+                    <a-button type="primary" id="promotionEdit-add-btn" :disabled="isDisabled" @click="handleAddProduct" size="small">添加产品</a-button>
                   </div>
                 </a-form-model-item>
               </a-col>
@@ -302,7 +313,7 @@
                 :lg="24"
                 :xl="24">
                 <a-form-model-item label="加盟商编辑" prop="promoRule.dealerEditFlag">
-                  <a-radio-group button-style="solid" :disabled="isDisabled" v-model="form.promoRule.dealerEditFlag">
+                  <a-radio-group button-style="solid" id="promotionEdit-dealerEditFlag" :disabled="isDisabled" v-model="form.promoRule.dealerEditFlag">
                     <a-radio-button value="1">
                     </a-radio-button>
@@ -314,7 +325,7 @@
               </a-col>
               <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
                 <a-form-model-item label="是否发布" prop="promoRule.publishFlag">
-                  <a-radio-group button-style="solid" v-model="form.promoRule.publishFlag">
+                  <a-radio-group button-style="solid" id="promotionEdit-publishFlag" v-model="form.promoRule.publishFlag">
                     <a-radio-button value="1">
                     </a-radio-button>
@@ -370,7 +381,7 @@ export default {
   data () {
     return {
       spinning: false,
-      // 第一个表单 label 设置
+      // 表单 label 设置
       formItemLayout: {
         labelCol: { span: 2 },
         wrapperCol: { span: 20 }
@@ -413,6 +424,7 @@ export default {
       chooseTypeList: [], // 已选中产品范围
       imageSet: [], // 回显显示图片数据
       productTypeList: [], // 产品范围    列表数据
+      // 表单验证规则
       rules: {
         title: [{ required: true, message: '请输入标题名称', trigger: 'blur' }],
         imageSet: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
@@ -437,6 +449,7 @@ export default {
     disabledDate (current) {
       return current && current < moment().startOf('day')
     },
+    // 券有效期时间
     dateChange (date, dateString) {
       this.time = date
       if (dateString[0] != '' && dateString[1] != '') {
@@ -451,6 +464,7 @@ export default {
       }
       this.showProModal = true
     },
+    // 关闭产品弹窗
     closeProductModal () {
       this.showProModal = false
     },
@@ -722,6 +736,7 @@ export default {
         }
       })
     },
+    // 选择产品范围
     onChangeTree (e) {
       deleteByProductType({ promoActiveSn: this.$route.params.sn, productTypeSnList: this.productRangeList || [] }).then(res => {
         if (res.status == 200) {
@@ -742,6 +757,7 @@ export default {
         }
       })
     },
+    // 初始化
     pageInit () {
       this.pageType = this.$route.params.pageType
       if (this.pageType === 'edit') {

+ 0 - 410
src/views/promotionRulesManagement/promotionManagement/editModal.vue

@@ -1,410 +0,0 @@
-<template>
-  <a-modal
-    centered
-    id="promotionEdit-modal"
-    class="promotionEdit-modal"
-    :footer="null"
-    :maskClosable="false"
-    :title="modalTit"
-    v-model="isShow"
-    @cancel="isShow=false"
-    width="76%">
-    <!-- 表单 -->
-    <div class="promotionEdit-content" ref="formBox">
-      <a-spin :spinning="spinning" tip="Loading...">
-        <a-form-model
-          id="promotionEdit-form"
-          ref="ruleForm"
-          :model="form"
-          :rules="rules"
-          :label-col="formItemLayout.labelCol"
-          :wrapper-col="formItemLayout.wrapperCol"
-        >
-          <a-form-model-item label="标题名称" prop="title">
-            <a-input
-              id="promotionEdit-title"
-              :maxLength="30"
-              v-model.trim="form.title"
-              placeholder="请输入标题名称(最多30个字符)"
-              v-if="!isDisabled"
-              allowClear/>
-            <span v-else>{{ form.title }}</span>
-          </a-form-model-item>
-          <a-form-model-item label="封面图片" prop="imageSet">
-            <Upload
-              v-if="pageType==='add' || (pageType==='edit'&&!isDisabled)"
-              class="upload"
-              id="promotionEdit-imageSet"
-              v-model="form.imageSet"
-              ref="imageSet"
-              :fileSize="10"
-              :maxNums="10"
-              @change="changeImage"
-              listType="picture-card"></Upload>
-            <div v-else>
-              <img
-                :src="con"
-                alt="图片走丢了"
-                width="80"
-                height="80"
-                v-for="(con,i) in images"
-                style="margin-right:10px;"
-                :key="i" />
-            </div>
-            <span class="upload-desc">说明:单张大小小于10Mb,最多10张;建议尺寸:宽(420px)*高(230px)</span>
-          </a-form-model-item>
-          <a-form-model-item label="排序" prop="sort">
-            <a-input-number
-              style="width:300px;"
-              id="promotionEdit-sort"
-              v-if="!isDisabled"
-              allowClear
-              placeholder="请输入排序数字(数字越大越靠后)"
-              v-model="form.sort"
-              :min="0"
-              :max="999999"/>
-            <span v-else>{{ form.sort }}</span>
-          </a-form-model-item>
-          <a-form-model-item label="内容类型" prop="contentType">
-            <v-select
-              v-model="form.contentType"
-              ref="saleStatus"
-              id="promotion-saleStatus"
-              code="PROMO_CONTENT_TYPE"
-              showType="radio"
-              :disabled="isDisabled"
-              allowClear></v-select>
-          </a-form-model-item>
-          <a-form-model-item label="内容" prop="content" v-show="form.contentType =='IMAGE_CONTENT'">
-            <editor
-              v-if="pageType === 'add' || (pageType === 'edit'&&!isDisabled)"
-              id="promotionEdit-editor"
-              ref="editor"
-              class="promotionEdit-editor"
-              @on-change="editorChange"
-              :cache="false"></editor>
-            <div v-show="pageType === 'edit'&&isDisabled" class="box" v-html="form.content"></div>
-          </a-form-model-item>
-          <a-form-model-item label="上传视频" prop="content" v-show="form.contentType =='VIDEO'">
-            <Upload
-              v-if="pageType==='add'||(pageType==='edit'&&!isDisabled)"
-              class="upload"
-              id="promotionEdit-imageSet"
-              v-model="form.content"
-              fileType="video/mp4"
-              ref="videoSet"
-              :fileSize="100"
-              :maxNums="1"
-              @change="changeVideo"
-            ></Upload>
-            <div v-else>
-              <video width="230" height="150" controls loop controlsList="nodownload">
-                <source :src="form.content" type="video/mp4">
-              </video>
-            </div>
-            <span class="upload-desc">说明:文件最大100M;视频:mp4.avi.flv</span>
-          </a-form-model-item>
-          <a-form-model-item label="跳转链接" prop="contentLink" v-if="form.contentType =='LINK'">
-            <a-input
-              id="promotionEdit-title"
-              v-if="!isDisabled"
-              :maxLength="100"
-              v-model.trim="form.contentLink"
-              placeholder="请输入跳转链接"
-              allowClear />
-            <span v-else>{{ form.contentLink }}</span>
-          </a-form-model-item>
-          <a-form-model-item label="是否发布" prop="enabledFlag">
-            <a-radio-group id="promotionEdit-enabledFlag" button-style="solid" v-model="form.enabledFlag">
-              <a-radio-button value="1">
-                是
-              </a-radio-button>
-              <a-radio-button value="0">
-                否
-              </a-radio-button>
-            </a-radio-group>
-          </a-form-model-item>
-          <a-form-model-item label="是否显示" prop="showFlag" v-if="form.enabledFlag == 1">
-            <a-radio-group id="promotionEdit-showFlag" button-style="solid" v-model="form.showFlag">
-              <a-radio-button value="1">
-                显示
-              </a-radio-button>
-              <a-radio-button value="0">
-                隐藏
-              </a-radio-button>
-            </a-radio-group>
-          </a-form-model-item>
-        </a-form-model>
-      </a-spin>
-      <div class="btn-cont">
-        <a-button id="promotionEdit-cancel" @click="isShow = false" style="margin-right:15px;">取消</a-button>
-        <a-button
-          style="margin-right:15px;color: #fff;background-color: #39f;border-color: #39f;"
-          id="promotionEdit-views"
-          @click="handleSee"
-          v-if="form.contentType !='LINK'">预览</a-button>
-        <a-button type="primary" id="promotionEdit-save" @click="handleSave">确定</a-button>
-      </div>
-    </div>
-    <!-- 预览 -->
-    <promotion-show-modal ref="showModal" :openModal="openShowModal" @close="openShowModal = false"></promotion-show-modal>
-  </a-modal>
-</template>
-
-<script>
-import { commonMixin } from '@/utils/mixin'
-// 组件
-import { VSelect, Upload } from '@/components'
-import Editor from '@/components/WEeditor'
-import promotionShowModal from './promotionShowModal'
-// 接口
-import { saveActive, promoTerminalDetail } from '@/api/promoTerminal'
-export default {
-  name: 'PromotionEditModal',
-  mixins: [commonMixin],
-  components: { VSelect, Upload, Editor, promotionShowModal },
-  props: {
-    openModal: { //  弹框显示状态
-      type: Boolean,
-      default: false
-    },
-    itemId: { // 单据id
-      type: [Number, String],
-      default: ''
-    },
-    pageType: { // 新增or编辑
-      type: String,
-      default: 'add'
-    }
-  },
-  computed: {
-    // 弹窗标题
-    modalTit () {
-      return this.pageType != 'add' ? '发布修改' : '促销发布'
-    }
-  },
-  data () {
-    return {
-      spinning: false,
-      isShow: this.openModal, //  是否打开弹框
-      // 表单label布局
-      formItemLayout: {
-        labelCol: { span: 4 },
-        wrapperCol: { span: 18 }
-      },
-      // 提交参数
-      form: {
-        promoActiveSn: undefined, // 活动sn
-        title: '', // 标题
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        imageSet: '', // 图片
-        showFlag: '0', // 是否显示
-        content: '', // 内容
-        enabledFlag: '0', // 启用禁用
-        sort: undefined, // 排序
-        contentLink: '' // 跳转链接
-      },
-      images: [], // 图片
-      openShowModal: false, // 预览弹框
-      isDisabled: false, // 控制是否能编辑
-      // 规则校验
-      rules: {
-        title: [
-          { required: true, message: '请输入标题名称', trigger: 'blur' }
-        ],
-        imageSet: [
-          { required: true, message: '请选择要上传的封面图片', trigger: 'change' }
-        ],
-        sort: [
-          { required: true, message: '请输入排序数字', trigger: 'blur' }
-        ],
-        contentType: [
-          { required: true, message: '请选择内容类型', trigger: 'change' }
-        ],
-        content: [
-          { required: true, message: '请输入对应内容', trigger: ['blur', 'change'] }
-        ],
-        contentLink: [
-          { required: true, message: '请输入对应内容', trigger: 'blur' }
-        ],
-        enabledFlag: [
-          { required: true, message: '请选择是否发布', trigger: 'change' }
-        ],
-        showFlag: [
-          { required: true, message: '请选择是否显示', trigger: 'change' }
-        ]
-      }
-    }
-  },
-  methods: {
-    // 预览
-    handleSee () {
-      if (this.form.content) {
-        this.openShowModal = true
-        this.$refs.showModal.pageInit({ type: this.form.contentType, con: this.form.content })
-      } else {
-        this.$message.error('请输入预览内容!')
-      }
-    },
-    //  详情
-    getDetail () {
-      promoTerminalDetail({ sn: this.itemId }).then(res => {
-        if (res.status == 200) {
-          this.isDisabled = res.data.state === 'PUBLISH'
-          this.form.promoActiveSn = res.data.promoActiveSn
-          this.form.title = res.data.title
-          this.form.contentType = res.data.contentType
-          this.form.showFlag = res.data.showFlag
-          this.form.enabledFlag = res.data.enabledFlag
-          this.form.sort = res.data.sort
-          this.images = res.data.imageSet
-          this.form.imageSet = res.data.images
-          this.form.content = res.data.content
-          this.$refs.imageSet.setFileList(res.data.images)
-          if (res.data.contentType == 'IMAGE_CONTENT') {
-            this.$refs.editor.setHtml(res.data.content)
-          } else if (res.data.contentType == 'VIDEO') {
-            if (res.data.state != 'PUBLISH') {
-              this.$refs.videoSet.setFileList(res.data.content)
-            }
-          } else if (res.data.contentType == 'LINK') {
-            this.form.contentLink = res.data.content
-          }
-        }
-      })
-    },
-    //  确定发布
-    handleSave () {
-      const _this = this
-      if (_this.form.contentType == 'LINK') {
-        _this.form.content = _this.form.contentLink
-      }
-      _this.$refs.ruleForm.validate(valid => {
-        if (valid) {
-          _this.form.promoActiveSn = this.itemId
-          const formData = JSON.parse(JSON.stringify(_this.form))
-          formData.imageSet = formData.imageSet ? formData.imageSet.split(',') : []
-          formData.showFlag = formData.enabledFlag == 0 ? '0' : formData.showFlag
-          if (formData.contentType == 'LINK') {
-            delete formData.contentLink
-          }
-          _this.spinning = true
-          saveActive(formData).then(res => {
-            if (res.status == 200) {
-              _this.$message.success(res.message)
-              _this.spinning = false
-              _this.isShow = false
-              _this.$emit('ok')
-            } else {
-              _this.spinning = false
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    //  图片上传
-    changeImage (file) {
-      this.form.imageSet = file
-    },
-    // 视频上传
-    changeVideo (file) {
-      this.form.content = file
-    },
-    //  文本编辑器
-    editorChange (html, text) {
-      this.form.content = html
-    },
-    // 重置表单
-    resetForm () {
-      if (this.pageType == 'add' || (this.pageType == 'edit' && !this.isDisabled)) {
-        this.$refs.imageSet.setFileList('')
-        this.$refs.videoSet.setFileList('')
-      }
-      if (this.$refs.editor) {
-        this.$refs.editor.setHtml('')
-      }
-      this.form = {
-        promoActiveSn: undefined,
-        title: '',
-        contentType: 'IMAGE_CONTENT',
-        imageSet: '',
-        showFlag: '0',
-        content: '',
-        enabledFlag: '0',
-        sort: undefined
-      }
-      this.images = []
-      this.isDisabled = false
-      this.$refs.ruleForm.resetFields()
-      this.$refs.formBox.scrollTop = 0
-    }
-  },
-  watch: {
-    //  父页面传过来的弹框状态
-    openModal (newValue, oldValue) {
-      this.isShow = newValue
-    },
-    //  重定义的弹框状态
-    isShow (newValue, oldValue) {
-      if (!newValue) {
-        this.$emit('close')
-        this.resetForm()
-      } else {
-        // 如果时编辑
-        if (this.pageType == 'edit') {
-          this.getDetail()
-        }
-      }
-    }
-  }
-}
-</script>
-
-<style lang="less" scoped>
-  .promotionEdit-modal{
-    .promotionEdit-content{
-      max-height:60vh;
-      overflow-y: scroll;
-  }
-    .ant-modal-body {
-      padding: 40px 40px 24px;
-    }
-    .upload{
-      width: 100%!important;
-    }
-    /deep/.upload-file .ant-upload-list-item-info{
-      padding:2px !important;
-    }
-    //  商品图片描述
-    .upload-desc{
-      font-size: 12px;
-      color: #808695;
-    }
-    //  文本编辑器  工具栏样式换行
-    .promotionEdit-editor{
-      .w-e-toolbar{
-        flex-wrap: wrap;
-      }
-    }
-    .btn-cont {
-      text-align: center;
-      margin: 35px 0 10px;
-    }
-    #promotionEdit-attachList{
-      height: auto;
-    }
-    a{
-      color: inherit;
-    }
-    .box{
-      border:1px solid #d9d9d9;
-      border-radius:4px;
-      padding:4px 11px;
-      cursor: not-allowed;
-      background:#f8f8f8;
-      padding:10px;
-    }
-  }
-</style>

+ 36 - 53
src/views/promotionRulesManagement/promotionManagement/list.vue

@@ -3,11 +3,11 @@
     <a-card size="small" :bordered="false" class="promotion-wrap searchBoxNormal">
       <!-- 搜索条件 -->
       <div ref="tableSearch" class="table-page-search-wrapper">
-        <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-form layout="inline" id="promotion-form" @keyup.enter.native="$refs.table.refresh(true)">
           <a-row :gutter="15">
             <a-col :md="6" :sm="24">
               <a-form-item label="创建时间">
-                <rangeDate ref="rangeCreateDate" :value="createDate" @change="dateCreateChange" />
+                <rangeDate id="promotion-createDate" ref="rangeCreateDate" :value="createDate" @change="dateCreateChange" />
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
@@ -19,8 +19,8 @@
               <a-form-item label="促销状态">
                 <v-select
                   v-model="queryParam.publishState"
-                  ref="saleStatus"
-                  id="promotion-saleStatus"
+                  ref="publishState"
+                  id="promotion-publishState"
                   code="PROMO_STATE"
                   placeholder="请选择促销状态"
                   allowClear></v-select>
@@ -28,8 +28,8 @@
             </a-col>
             <a-col :md="6" :sm="24">
               <span class="table-page-search-submitButtons">
-                <a-button type="primary" :disabled="disabled" @click="$refs.table.refresh(true)">查询</a-button>
-                <a-button style="margin-left: 8px" :disabled="disabled" @click="resetSearchForm()">重置</a-button>
+                <a-button type="primary" :disabled="disabled" id="promotion-refresh" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" :disabled="disabled" id="promotion-reset" @click="resetSearchForm()">重置</a-button>
               </span>
             </a-col>
           </a-row>
@@ -41,7 +41,7 @@
       <a-spin :spinning="spinning" tip="Loading...">
         <!-- 操作按钮 -->
         <div class="table-operator" v-if="$hasPermissions('B_promotionManagementAdd')">
-          <a-button type="primary" @click="openAddModal = true">新增</a-button>
+          <a-button type="primary" id="promotion-add-btn" @click="openAddModal = true">新增</a-button>
         </div>
         <s-table
           class="sTable fixPagination"
@@ -64,7 +64,7 @@
           </template>
           <!-- 参与客户 -->
           <template slot="joinCustomers" slot-scope="text, record">
-            <span @click="handleCustomers(record)" v-if="record.dealerSnList&&record.dealerSnList.length>0">共有<span class="link-bule">{{ record.dealerSnList.length }}</span>个客户</span>
+            <span @click="handleCustomers(record)" :id="'promotion-seeDealerInfo-'+record.id" v-if="record.dealerSnList&&record.dealerSnList.length>0">共有<span class="link-bule">{{ record.dealerSnList.length }}</span>个客户</span>
             <span v-else>共有0个客户</span>
           </template>
           <!-- 促销描述 -->
@@ -73,14 +73,14 @@
               <template slot="title">
                 <span>{{ record.description }}</span>
               </template>
-              <div @click="promotionDesc(record)" class="link-bule">{{ record.description }}</div>
+              <div @click="promotionDesc(record)" :id="'promotion-description-'+record.id" class="link-bule">{{ record.description }}</div>
             </a-tooltip>
             <div v-else-if="!record.description" class="desc">--</div>
-            <div v-else @click="promotionDesc(record)" class="link-bule">{{ record.description }}</div>
+            <div v-else @click="promotionDesc(record)" :id="'promotion-description-'+record.id" class="link-bule">{{ record.description }}</div>
           </template>
           <!-- 促销展示 -->
           <template slot="salesShow" slot-scope="text, record">
-            <div @click="handleSaleShow(record)" v-if="record.contentType!='LINK'&&record.imageSet && record.imageSet.length>0">
+            <div @click="handleSaleShow(record)" :id="'promotion-seeImgInfo-'+record.id" v-if="record.contentType!='LINK'&&record.imageSet && record.imageSet.length>0">
               <img :src="record.imageSet[0]" alt="图片走丢啦" width="60" />
             </div>
             <div v-else-if="record.contentType=='LINK'&&record.imageSet && record.imageSet.length>0">
@@ -96,37 +96,37 @@
                 size="small"
                 type="link"
                 class="button-warning"
+                :id="'promotion-edit-btn-'+record.id"
                 @click="promotionEdit(record)"
-                v-if="(record.publishState=='UNPUBLISH' || record.publishState=='CLOSE') && $hasPermissions('B_promotionManagementEdit')"
-                id="promotion-edit-btn">编辑</a-button>
+                v-if="(record.publishState=='UNPUBLISH' || record.publishState=='CLOSE') && $hasPermissions('B_promotionManagementEdit')">编辑</a-button>
               <a-button
                 size="small"
                 type="link"
                 class="button-warning"
+                :id="'promotion-modify-btn-'+record.id"
                 @click="handleRelease(record,'edit')"
-                v-if="((record.publishState=='PUBLISH'&&record.content!='/pagesB/promoDetail')||(record.publishState=='PUBLISH'&&record.content==='/pagesB/promoDetail'&&record.dealerEditFlag==='0') || record.publishState=='CLOSE')&&$hasPermissions('B_promotionManagementContent')"
-                id="promotion-modify-btn">发布修改</a-button>
+                v-if="((record.publishState=='PUBLISH'&&record.content!='/pagesB/promoDetail')||(record.publishState=='PUBLISH'&&record.content==='/pagesB/promoDetail'&&record.dealerEditFlag==='0') || record.publishState=='CLOSE')&&$hasPermissions('B_promotionManagementContent')">发布修改</a-button>
               <a-button
                 size="small"
                 type="link"
                 class="button-success"
                 @click="handleSee(record)"
                 v-if="(record.publishState=='PUBLISH' || record.publishState=='END')&&$hasPermissions('B_promotionManagementDetail')"
-                id="promotion-modify-btn">查看</a-button>
+                :id="'promotion-seeDetail-btn-'+record.id">查看</a-button>
               <a-button
                 size="small"
                 type="link"
                 class="button-info"
                 @click="handleRelease(record,'add')"
                 v-if="record.publishState=='UNPUBLISH'&&$hasPermissions('B_promotionManagementContent')"
-                id="promotion-release-btn">发布</a-button>
+                :id="'promotion-release-btn-'+record.id">发布</a-button>
               <a-button
                 size="small"
                 type="link"
                 class="button-error"
                 v-if="record.publishState=='UNPUBLISH'&&$hasPermissions('B_promotionManagementDel')"
                 @click="handleDel(record)"
-                id="promotion-del-btn">删除</a-button>
+                :id="'promotion-del-btn-'+record.id">删除</a-button>
             </div>
           </template>
         </s-table>
@@ -147,6 +147,7 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+// 组件
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import lookUpCustomersModal from './lookUpCustomersModal'
@@ -154,7 +155,7 @@ import promotionDescModal from './promotionDescModal'
 import promotionShowModal from './promotionShowModal'
 import addModal from './addModal'
 import detailModal from './detailModal'
-import { updateShowFlag } from '@/api/promoTerminal'
+// 接口
 import { promoActiveList, promoActiveDel } from '@/api/promoActive'
 export default {
   name: 'PromotionList',
@@ -163,25 +164,24 @@ export default {
   data () {
     return {
       spinning: false,
-      tableHeight: 0,
+      tableHeight: 0, // 表格高度
       disabled: false, //  查询、重置按钮是否可操作
-      openCustomerModal: false,
-      openDescModal: false,
-      openShowModal: false,
-      openAddModal: false,
-      openDetailModal: false,
+      openCustomerModal: false, // 打开参与客户弹窗
+      openDescModal: false, // 打开促销描述弹窗
+      openShowModal: false, // 打开促销展示弹窗
+      openAddModal: false, // 打开新增弹窗
+      openDetailModal: false, // 打开详情弹窗
       createDate: [], //  创建时间
-      itemId: '',
+      itemId: '', // 当前活动sn
       descCon: '', // 描述内容
       pageType: '', // 发布类型  add  促销发布  edit 发布修改
-      dealerSn: [],
+      dealerSn: [], // 经销商sn
       // 查询参数
       queryParam: {
-        beginDate: undefined,
-        endDate: undefined,
-        name: '',
-        showFlag: undefined,
-        publishState: undefined
+        beginDate: undefined, // 促销开始时间
+        endDate: undefined, // 促销结束时间
+        name: '', // 促销名称
+        publishState: undefined// 是否发布
       },
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -195,7 +195,6 @@ export default {
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
-              data.list[i].isEnable = data.list[i].showFlag + '' === '1'
             }
             this.disabled = false
           }
@@ -203,7 +202,7 @@ export default {
           return data
         })
       },
-      columns: [
+      columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '创建时间', dataIndex: 'createDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '促销名称', dataIndex: 'name', width: '12%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
@@ -242,24 +241,6 @@ export default {
         this.$refs.showModal.pageInit({ type: record.contentType, con: record.content })
       })
     },
-    // 修改显示状态
-    changeFlagHandle (record) {
-      const _data = {
-        sn: record.promoActiveSn,
-        showFlag: record.isEnable ? '1' : '0'
-      }
-      this.spinning = true
-      updateShowFlag(_data).then(res => {
-        if (res.status == 200) {
-          this.$message.success(res.message)
-          this.$refs.table.refresh()
-          this.spinning = false
-        } else {
-          this.$refs.table.refresh()
-          this.spinning = false
-        }
-      })
-    },
     // 促销编辑
     promotionEdit (item) {
       this.itemId = item.promoActiveSn
@@ -295,12 +276,12 @@ export default {
         }
       })
     },
+    // 重置
     resetSearchForm () {
       this.$refs.rangeCreateDate.resetDate(this.createDate)
       this.queryParam.beginDate = undefined
       this.queryParam.endDate = undefined
       this.queryParam.name = ''
-      this.queryParam.showFlag = undefined
       this.queryParam.publishState = undefined
       this.$refs.table.refresh(true)
     },
@@ -319,12 +300,14 @@ export default {
       this.openDetailModal = false
       this.itemId = ''
     },
+    // 初始化
     pageInit () {
       const _this = this
       this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
       })
     },
+    // 计算表格高度
     setTableH () {
       const tableSearchH = this.$refs.tableSearch.offsetHeight
       this.tableHeight = window.innerHeight - tableSearchH - 240

+ 30 - 32
src/views/promotionRulesManagement/promotionManagement/lookUpCustomersModal.vue

@@ -12,34 +12,34 @@
       <a-card size="small" :bordered="false">
         <!-- 筛选条件 -->
         <div class="table-page-search-wrapper">
-          <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+          <a-form layout="inline" id="lookUpCustomers-form" @keyup.enter.native="$refs.table.refresh(true)">
             <a-row :gutter="15">
               <a-col :md="6" :sm="24">
                 <a-form-model-item label="地区">
-                  <AreaList id="actualSalesReportList-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
+                  <AreaList id="lookUpCustomers-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
                 </a-form-model-item>
               </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-model-item label="区域/分区">
-                  <subarea ref="subarea" id="salesManagementList-subarea" @change="subareaChange"></subarea>
+                  <subarea ref="subarea" id="lookUpCustomers-subarea" @change="subareaChange"></subarea>
                 </a-form-model-item>
               </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="经销商名称">
-                  <a-input id="salesManagementList-purchaseBillNo" v-model.trim="queryParam.dealerName" allowClear placeholder="请输入经销商名称"/>
+                  <a-input id="lookUpCustomers-purchaseBillNo" v-model.trim="queryParam.dealerName" allowClear placeholder="请输入经销商名称"/>
                 </a-form-item>
               </a-col>
               <a-col :md="6" :sm="24" style="margin-bottom: 10px;">
-                <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryCheckMakeInventoryList-refresh">查询</a-button>
-                <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="inventoryCheckMakeInventoryList-reset">重置</a-button>
+                <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="lookUpCustomers-refresh">查询</a-button>
+                <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="lookUpCustomers-reset">重置</a-button>
                 <a-button
-                  style="margin-left: 10px"
                   type="primary"
+                  style="margin-left: 10px"
+                  id="lookUpCustomers-export"
                   class="button-warning"
                   @click="handleExport"
                   :disabled="disabled"
-                  :loading="exportLoading"
-                >导出</a-button>
+                  :loading="exportLoading">导出</a-button>
               </a-col>
             </a-row>
           </a-form>
@@ -63,7 +63,7 @@
         </s-table>
       </a-card>
       <div class="btn-cont">
-        <a-button id="lookUpCustomers-modal-back" @click="isShow = false">关闭</a-button>
+        <a-button id="lookUpCustomers-modal-close" @click="isShow = false">关闭</a-button>
       </div>
     </a-spin>
   </a-modal>
@@ -71,11 +71,13 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+import { hdExportExcel } from '@/libs/exportExcel'
+// 组件
 import { STable } from '@/components'
 import ProductType from '@/views/common/productType.js'
 import subarea from '@/views/common/subarea.js'
 import AreaList from '@/views/common/areaList.js'
-import { hdExportExcel } from '@/libs/exportExcel'
+// 接口
 import { dealerExport } from '@/api/promoTerminal'
 import { dealerQueryList } from '@/api/dealer'
 export default {
@@ -91,20 +93,22 @@ export default {
   data () {
     return {
       spinning: false,
-      isShow: this.openModal, //  是否打开弹框
-      disabled: false,
-      advanced: false,
-      exportShow: false,
-      exportLoading: false,
+      isShow: this.openModal, // 是否打开弹框
+      disabled: false, // 查询、重置按钮是否可操作
+      advanced: false, // 高级搜索 展开/关闭
+      exportShow: false, // 导出弹窗显示
+      exportLoading: false, // 导出按钮加载状态
+      // 查询条件
       queryParam: {
+        // 区域分区
         subareaArea: {
-          subareaSn: undefined,
-          subareaAreaSn: undefined
+          subareaSn: undefined, // 区域
+          subareaAreaSn: undefined// 分区
         },
-        provinceSn: undefined,
-        citySn: undefined,
-        districtSn: undefined,
-        dealerName: undefined
+        provinceSn: undefined, // 省sn
+        citySn: undefined, // 市sn
+        districtSn: undefined, // 区sn
+        dealerName: undefined// 经销商名称
       },
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -125,17 +129,8 @@ export default {
           return data
         })
       },
-      basicInfoData: null, //  基本信息
-      productTotal: null,
-      productType: [],
       snObj: undefined, // 经销商列表
-      warehouseList: [], //  仓库  下拉数据
-      localDataSource: [],
-      isPrice: false, //  仅显示盈亏
-      openPrintModal: false,
-      nowType: null,
-      printerType: 'NEEDLE', //  打印机类型
-      columns: [
+      columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
         { title: '地区', scopedSlots: { customRender: 'address' }, width: '20%', align: 'center', ellipsis: true },
         { title: '区域', dataIndex: 'subareaArea.subareaName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -147,15 +142,18 @@ export default {
     }
   },
   methods: {
+    // 地区
     areaChange (val) {
       this.queryParam.provinceSn = val[0] ? val[0] : ''
       this.queryParam.citySn = val[1] ? val[1] : ''
       this.queryParam.districtSn = val[2] ? val[2] : ''
     },
+    // 区域分区
     subareaChange (val) {
       this.queryParam.subareaArea.subareaSn = val[0] ? val[0] : undefined
       this.queryParam.subareaArea.subareaAreaSn = val[1] ? val[1] : undefined
     },
+    // 初始化
     pageInit (data) {
       this.snObj = data
       this.queryParam = Object.assign(this.queryParam, data)

+ 12 - 6
src/views/promotionRulesManagement/promotionManagement/productTable.vue

@@ -57,18 +57,20 @@
 </template>
 <script>
 import { commonMixin } from '@/utils/mixin'
+// 组件
 import { STable } from '@/components'
+// 接口
 import { promoRuleProductList, deleteBatch, promoUpdateBatch } from '@/api/promoActive'
 export default {
   name: 'ProductTable',
   mixins: [commonMixin],
   components: { STable },
   props: {
-    promoActiveSn: {
+    promoActiveSn: {// 活动sn
       type: String,
       default: ''
     },
-    disabledVal: {
+    disabledVal: {// 修改编辑时,禁用标志
       type: Boolean,
       default: false
     }
@@ -76,10 +78,10 @@ export default {
   data () {
     return {
       spinning: false,
-      rowSelectionInfo: null,
-      queryParam: {},
-      dataListQty: '0',
-      columns: [
+      rowSelectionInfo: null, // 已选数据
+      queryParam: {}, // 查询条件
+      dataListQty: '0', // 表格数据总条数
+      columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
@@ -102,6 +104,7 @@ export default {
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
+              // 活动价初始值,活动价=参考终端价
               if (!data.list[i].price) {
                 data.list[i].price = data.list[i].terminalPrice
               } else {
@@ -141,6 +144,7 @@ export default {
         }
       })
     },
+    // 修改产品活动价、返券金额
     editMorePrice (numInfo) {
       if (!this.rowSelectionInfo || (this.rowSelectionInfo && this.rowSelectionInfo.selectedRows && this.rowSelectionInfo.selectedRows.length === 0)) {
         this.$message.warning('请选择要修改的产品!')
@@ -163,9 +167,11 @@ export default {
         }
       })
     },
+    // 获取表格总条数
     getDataNum () {
       return this.dataListQty
     },
+    // 初始化
     pageInit () {
       this.$nextTick(() => {
         this.$refs.table.refresh(true)

+ 2 - 5
src/views/promotionRulesManagement/promotionManagement/promotionDescModal.vue

@@ -27,19 +27,16 @@ export default {
       type: Boolean,
       default: false
     },
-    con: {
+    con: {// 主要展示内容
       type: String,
       default: ''
     }
   },
   data () {
     return {
-      modalTit: '促销描述',
+      modalTit: '促销描述', // 弹窗标题
       isShow: this.openModal //  是否打开弹框
     }
-  },
-  methods: {
-
   },
   watch: {
     //  父页面传过来的弹框状态

+ 14 - 13
src/views/promotionRulesManagement/promotionManagement/promotionShowModal.vue

@@ -1,25 +1,25 @@
 <template>
   <a-modal
     centered
-    class="promotionDesc-modal"
+    class="promotionShow-modal"
     :footer="null"
     :maskClosable="false"
     :title="modalTit"
     v-model="isShow"
     @cancel="isShow=false"
     :width="500">
-    <div class="promotionDesc-con">
+    <div class="promotionShow-con">
       <img src="@/assets/iphone.png" alt="图片走丢了" srcset="">
-      <div class="promotionDescCon" v-if="showType==='IMAGE_CONTENT'" v-html="mainContent"></div>
-      <div class="promotionDescCon" v-if="showType=='VIDEO'" >
+      <div class="promotionShowCon" v-if="showType==='IMAGE_CONTENT'" v-html="mainContent"></div>
+      <div class="promotionShowCon" v-if="showType=='VIDEO'" >
         <video width="100%" height="auto" controls loop controlsList="nodownload">
           <source :src="mainContent" type="video/mp4"></source>
         </video>
       </div>
     </div>
     <div class="btn-cont">
-      <!-- <a-button id="promotionDesc-modal-back" @click="isShow = false" style="margin-right:10px;">下载图片</a-button> -->
-      <a-button id="promotionDesc-modal-back" @click="isShow = false">关闭</a-button>
+      <!-- <a-button id="promotionShow-modal-back" @click="isShow = false" style="margin-right:10px;">下载图片</a-button> -->
+      <a-button id="promotionShow-modal-back" @click="isShow = false">关闭</a-button>
     </div>
   </a-modal>
 </template>
@@ -27,7 +27,7 @@
 <script>
 import { commonMixin } from '@/utils/mixin'
 export default {
-  name: 'PromotionDescModal',
+  name: 'PromotionShowModal',
   mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
@@ -37,13 +37,14 @@ export default {
   },
   data () {
     return {
-      modalTit: '促销展示',
+      modalTit: '促销展示', // 弹窗标题
       isShow: this.openModal, //  是否打开弹框
       mainContent: '', // 主要显示内容
-      showType: undefined//
+      showType: undefined// 显示类型 VIDEO 视频 IMAGE_CONTENT图文
     }
   },
   methods: {
+    // 初始化
     pageInit (con) {
       this.showType = con.type
       this.mainContent = con.con
@@ -65,12 +66,12 @@ export default {
 </script>
 
 <style lang="less" scoped>
-  .promotionDesc-modal{
+  .promotionShow-modal{
     /deep/.ant-modal-body{
        text-algin:center !important;
     }
 
-    .promotionDesc-con{
+    .promotionShow-con{
       width:340px;
       margin:0 auto;
       position:relative;
@@ -79,7 +80,7 @@ export default {
          width:81%;
          height:auto;
        }
-       .promotionDescCon{
+       .promotionShowCon{
          position: absolute;
          left:15%;
          top:12.5%;
@@ -89,7 +90,7 @@ export default {
          scrollbar-width:none;
          -ms-overflow-style: none;
        }
-       .promotionDescCon::-webkit-scrollbar{
+       .promotionShowCon::-webkit-scrollbar{
            display:none;
        }
     }