chenrui 10 mesiacov pred
rodič
commit
4e84d842fc

+ 75 - 129
src/views/promotionRulesManagement/promotionManagement/edit.vue

@@ -160,22 +160,12 @@
               </a-form-model-item>
             </a-col>
           </a-row>
-        </a-form-model>
-
-        <a-form-model
-          id="setPromotion-form"
-          ref="sellRuleForm"
-          :model="sellForm"
-          :rules="sellRules"
-          class="setPromotion-form"
-          :label-col="sellFormItemLayout.labelCol"
-          :wrapper-col="sellFormItemLayout.wrapperCol">
           <a-row v-if="form.contentType ==='LINK'&&form.linkType==='1'">
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-              <a-form-model-item label="基本规则" prop="ruleType">
+              <a-form-model-item label="基本规则" prop="promoRule.ruleType">
                 <v-select
                   style="width:40%;"
-                  v-model="sellForm.ruleType"
+                  v-model="form.promoRule.ruleType"
                   placeholder="请选择基本规则"
                   id="promotionEdit-ruleType"
                   code="PROMO_ACTIVE_RULE_TYPE"
@@ -189,7 +179,7 @@
                   :disabled="isDisabled"
                   id="promotionEdit-ruleName"
                   :maxLength="20"
-                  v-model.trim="sellForm.ruleName"
+                  v-model.trim="form.promoRule.ruleName"
                   placeholder="请输入券名称(最多20个字符)"
                   allowClear />
               </a-form-model-item>
@@ -200,7 +190,7 @@
                   :disabled="isDisabled"
                   id="promotionEdit-ruleTitle"
                   :maxLength="20"
-                  v-model.trim="sellForm.ruleTitle"
+                  v-model.trim="form.promoRule.ruleTitle"
                   placeholder="请输入券副标题(最多20个字符)"
                   allowClear />
               </a-form-model-item>
@@ -209,7 +199,7 @@
               <a-form-model-item label="生成方式" prop="ruleBaseType">
                 <v-select
                   style="width:40%;"
-                  v-model="sellForm.ruleBaseType"
+                  v-model="form.promoRule.ruleBaseType"
                   id="promotionEdit-ruleBaseType"
                   code="PROMO_RULE_BASE_TYPE"
                   :disabled="isDisabled"
@@ -220,7 +210,7 @@
               <a-form-model-item label="券有效期" prop="validType">
                 <v-select
                   style="width:40%;"
-                  v-model="sellForm.validType"
+                  v-model="form.promoRule.validType"
                   placeholder="请选择券有效期"
                   id="promotionEdit-validType"
                   code="PROMO_RULE_TICKET_TYPE"
@@ -228,7 +218,7 @@
                   @change="handleValidType"
                   allowClear></v-select>
                 <a-range-picker
-                  v-show="sellForm.validType==='FIXED'"
+                  v-show="form.promoRule.validType==='FIXED'"
                   style="width:40%;margin-left:10px;"
                   v-model="time"
                   :format="dateFormat"
@@ -236,10 +226,10 @@
                   :disabled="isDisabled"
                   :disabled-date="disabledDate"
                   :placeholder="['开始时间', '结束时间']" />
-                <span style="width:40%;margin-left:10px;" v-show="sellForm.validType==='LIMIT'">
+                <span style="width:40%;margin-left:10px;" v-show="form.promoRule.validType==='LIMIT'">
                   有效期<a-input-number
                     style="margin:0 5px;"
-                    v-model="sellForm.validDays"
+                    v-model="form.promoRule.validDays"
                     :step="1"
                     :max="99999999"
                     :min="1"
@@ -256,7 +246,7 @@
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
               <a-form-model-item label="使用说明" prop="ruleExplain">
                 <a-input
-                  v-model="sellForm.ruleExplain"
+                  v-model="form.promoRule.ruleExplain"
                   :disabled="isDisabled"
                   type="textarea"
                   placeholder="请输入使用说明(最多50个字符)"
@@ -270,7 +260,7 @@
               <a-form-model-item label="产品范围">
                 <div id="setPromotion-productRange" style="position:relative;">
                   <a-tree-select
-                    v-model="sellForm.productRangeList"
+                    v-model="form.promoRule.productRangeList"
                     :maxTagCount="12"
                     :tree-data="productTypeList"
                     tree-checkable
@@ -287,7 +277,7 @@
                 <div class="productInfo flex-center">
                   <div>
                     返券金额<a-input-number
-                      v-model="sellForm.ruleValue"
+                      v-model="form.promoRule.ruleValue"
                       style="margin:0 5px;"
                       :min="0"
                       :step="1"
@@ -313,7 +303,7 @@
               :lg="24"
               :xl="24">
               <a-form-model-item label="加盟商编辑" prop="dealerEditFlag">
-                <a-radio-group button-style="solid" :disabled="isDisabled" v-model="sellForm.dealerEditFlag">
+                <a-radio-group button-style="solid" :disabled="isDisabled" v-model="form.promoRule.dealerEditFlag">
                   <a-radio-button value="1">
                   </a-radio-button>
@@ -325,7 +315,7 @@
             </a-col>
             <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="sellForm.publishFlag">
+                <a-radio-group button-style="solid" v-model="form.promoRule.publishFlag">
                   <a-radio-button value="1">
                   </a-radio-button>
@@ -385,11 +375,6 @@ export default {
         labelCol: { span: 2 },
         wrapperCol: { span: 20 }
       },
-      // 第二个表单 label 设置
-      sellFormItemLayout: {
-        labelCol: { span: 2 }, // 文字前距离设置
-        wrapperCol: { span: 20 }// 表单后距离设置  数字越大距离越小
-      },
       form: {
         promoActiveSn: undefined, // 促销活动sn
         title: '', // 标题
@@ -401,23 +386,21 @@ export default {
         sort: undefined, // 排序
         publishFlag: '0', // 是否发布
         dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        promoRule: {} // 链接配置内容
-      },
-      // 参数配置数据
-      sellForm: {
-        ruleType: 'ticket', // 基本规则类型
-        productRangeList: [], // 产品范围列表
-        ruleName: '', // 券名称
-        ruleTitle: '', // 副标题
-        ruleBaseType: 'category', // 券生成方式
-        ruleExplain: '', // 使用说明
-        validType: undefined, // 券有效期类型
-        validStartDate: undefined, // 券生效时间
-        validEndDate: undefined, // 券失效时间
-        validDays: undefined, // 券有效期天数
-        dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        publishFlag: '0', // 是否发布
-        range: '1'
+        promoRule: {
+          ruleType: 'ticket', // 基本规则类型
+          productRangeList: [], // 产品范围列表
+          ruleName: '', // 券名称
+          ruleTitle: '', // 副标题
+          ruleBaseType: 'category', // 券生成方式
+          ruleExplain: '', // 使用说明
+          validType: undefined, // 券有效期类型
+          validStartDate: undefined, // 券生效时间
+          validEndDate: undefined, // 券失效时间
+          validDays: undefined, // 券有效期天数
+          dealerEditFlag: '0', // 加盟商编辑 1是 0否
+          publishFlag: '0', // 是否发布
+          range: '1'
+        } // 链接配置内容
       },
       time: [], // 有效期
       dateFormat: 'YYYY-MM-DD', // 有效期时间格式
@@ -436,14 +419,13 @@ export default {
         contentType: [{ required: true, message: '请选择内容类型', trigger: 'change' }],
         content: [{ required: true, message: '请输入对应内容', trigger: ['blur', 'change'] }],
         contentLink: [{ required: true, message: '请输入对应内容', trigger: 'blur' }],
-        publishFlag: [{ required: true, message: '请选择是否发布', trigger: 'change' }]
-      },
-      sellRules: {
-        ruleType: [{ required: true, message: '请选择基本规则', trigger: 'change' }],
-        ruleName: [{ required: true, message: '请输入券名称', trigger: ['change', 'blur'] }],
-        ruleBaseType: [{ required: true, message: '请选择生成方式', trigger: 'change' }],
-        validType: [{ required: true, message: '请选择券有效期类型', trigger: 'change' }],
         publishFlag: [{ required: true, message: '请选择是否发布', trigger: 'change' }],
+        'promoRule.ruleType': [{ required: true, message: '请选择基本规则', trigger: 'change' }],
+        'promoRule.ruleName': [{ required: true, message: '请输入券名称', trigger: ['change', 'blur'] }],
+        'promoRule.ruleBaseType': [{ required: true, message: '请选择生成方式', trigger: 'change' }],
+        'promoRule.validType': [{ required: true, message: '请选择券有效期类型', trigger: 'change' }],
+        'promoRule.publishFlag': [{ required: true, message: '请选择是否发布', trigger: 'change' }],
+        'promoRule.dealerEditFlag': [{ required: true, message: '请选择加盟商是否可编辑', trigger: 'change' }],
         dealerEditFlag: [{ required: true, message: '请选择加盟商是否可编辑', trigger: 'change' }]
         // range: [{ required: true, message: '请选择', trigger: 'blur' }]
       }
@@ -457,8 +439,8 @@ export default {
     dateChange (date, dateString) {
       this.time = date
       if (dateString[0] != '' && dateString[1] != '') {
-        this.sellForm.validStartDate = dateString[0] + ' 00:00:00'
-        this.sellForm.validEndDate = dateString[1] + ' 23:59:59'
+        this.form.promoRule.validStartDate = dateString[0] + ' 00:00:00'
+        this.form.promoRule.validEndDate = dateString[1] + ' 23:59:59'
       }
     },
     // 打开产品弹窗
@@ -470,7 +452,6 @@ export default {
       }
       this.showProModal = true
     },
-
     closeProductModal () {
       this.showProModal = false
     },
@@ -486,8 +467,8 @@ export default {
           // 编辑按钮时,publishState 已发布,只能编辑是否发布;publishState已关闭,都可以编辑
           if (_this.pageType === 'edit') {
             _this.isDisabled = res.data.publishState === 'PUBLISH'
-            _this.sellForm.publishFlag = res.data.publishFlag
-            _this.sellForm.dealerEditFlag = res.data.dealerEditFlag
+            _this.form.promoRule.publishFlag = res.data.publishFlag
+            _this.form.promoRule.dealerEditFlag = res.data.dealerEditFlag
           }
           _this.form.publishFlag = res.data.publishFlag
           _this.form.dealerEditFlag = res.data.dealerEditFlag
@@ -517,12 +498,12 @@ export default {
             _this.form.linkType = res.data.content != '/pagesB/promoDetail' ? '2' : '1'
             if (res.data.promoRule) {
               _this.isShowNextStep = true
-              _this.sellForm.range = '1'
+              _this.form.promoRule.range = '1'
               _this.time = [res.data.promoRule.validStartDate, res.data.promoRule.validEndDate]
               if (res.data.promoRule.productRangeList && res.data.promoRule.productRangeList.productRangeList.length > 0) {
-                _this.sellForm.productRangeList = res.data.promoRule.productRangeList.map(item => { return item.productTypeSn })
+                _this.form.promoRule.productRangeList = res.data.promoRule.productRangeList.map(item => { return item.productTypeSn })
               }
-              _this.sellForm = res.data.promoRule
+              _this.form.promoRule = res.data.promoRule
             }
           }
         }
@@ -533,48 +514,14 @@ export default {
       const _this = this
       if (_this.form.contentType === 'LINK') {
         _this.form.content = _this.form.contentLink
-        // 验证组件必填项
-        _this.$refs.ruleForm.validate(valid => {
-          if (valid) {
-            // 验证设置参数必填项
-            _this.testAndVerify(function (res) {
-              if (res) {
-                _this.savePartInfo(type)
-              }
-            })
-          }
-        })
-      } else {
-        _this.$refs.ruleForm.validate(valid => {
-          if (valid) {
-            _this.savePartInfo(type)
-          }
-        })
       }
-    },
-    testAndVerify (callBack) {
-      this.$refs.sellRuleForm.validate(valid => {
+      // 验证组件必填项
+      _this.$refs.ruleForm.validate(valid => {
         if (valid) {
-          callBack(valid)
-        } else {
-          return false
+          _this.savePartInfo(type)
         }
       })
     },
-    // 保存部分参数
-    // handlePartSave () {
-    //   const _this = this
-    //   _this.$refs.ruleForm.validate(valid => {
-    //     if (valid) {
-    //       // 验证设置参数必填项
-    //       _this.testAndVerify(function (res) {
-    //         if (res) {
-    //           _this.savePartInfo()
-    //         }
-    //       })
-    //     }
-    //   })
-    // },
     // 券有效期 change
     handleValidType (con) {
       this.sellForm.validType = con
@@ -591,37 +538,38 @@ export default {
       _this.form.promoActiveSn = this.$route.params.sn
       var formData = JSON.parse(JSON.stringify(_this.form))
       formData.imageSet = formData.imageSet ? formData.imageSet.split(',') : []
-      formData.promoRule = _this.sellForm
+
+      // 跳转链接
       if (formData.contentType == 'LINK') {
         delete formData.contentLink
         if (formData.promoRule.productRangeList && formData.promoRule.productRangeList.length > 0) {
           formData.promoRule.productRangeList = formData.promoRule.productRangeList.map(item => { return { productTypeSn: item } })
         }
+        // 促销活动
         if (_this.form.linkType === '1') {
-          if (_this.sellForm.validType === 'FIXED') {
-            if (!_this.sellForm.validStartDate || _this.sellForm.validStartDate.validEndDate) {
+          if (_this.form.promoRule.validType === 'FIXED') {
+            if (!_this.form.promoRule.validStartDate || _this.form.promoRule.validStartDate.validEndDate) {
               _this.$message.warning('请输入券有效期!')
               return false
             }
           } else {
-            if (!_this.sellForm.validDays) {
+            if (!_this.form.promoRule.validDays) {
               _this.$message.warning('请输入券有效期!')
               return false
             }
           }
+        } else {
+          formData.promoRule = undefined
         }
-
-        formData.dealerEditFlag = _this.sellForm.dealerEditFlag
-        formData.publishFlag = _this.sellForm.publishFlag
-        console.log('11111111111111111111111:')
-        debugger
         const numInfo = _this.$refs.chooseProductList.getDataNum()
         if (numInfo == 0) {
-          if (!_this.sellForm.validDays) {
+          if (!_this.form.promoRule.validDays) {
             _this.$message.warning('请选择返券产品!')
             return false
           }
         }
+      } else {
+        formData.promoRule = undefined
       }
       _this.spinning = true
       promoActivePublish(formData).then(res => {
@@ -678,23 +626,21 @@ export default {
         publishFlag: '0', // 是否发布
         dealerEditFlag: '0', // 加盟商编辑 1是 0否
         ruleEnableFlag: '1',
-        promoRule: {} // 链接配置内容
-      }
-      // 参数配置数据
-      this.sellForm = {
-        ruleType: 'ticket', // 基本规则类型
-        productRangeList: [], // 产品范围列表
-        ruleName: '', // 券名称
-        ruleTitle: '', // 副标题
-        ruleBaseType: 'category', // 券生成方式
-        ruleExplain: '', // 使用说明
-        validType: undefined, // 券有效期类型
-        validStartDate: undefined, // 券生效时间
-        validEndDate: undefined, // 券失效时间
-        validDays: undefined, // 券有效期天数
-        dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        publishFlag: '0', // 是否发布
-        range: '1'
+        promoRule: {
+          ruleType: 'ticket', // 基本规则类型
+          productRangeList: [], // 产品范围列表
+          ruleName: '', // 券名称
+          ruleTitle: '', // 副标题
+          ruleBaseType: 'category', // 券生成方式
+          ruleExplain: '', // 使用说明
+          validType: undefined, // 券有效期类型
+          validStartDate: undefined, // 券生效时间
+          validEndDate: undefined, // 券失效时间
+          validDays: undefined, // 券有效期天数
+          dealerEditFlag: '0', // 加盟商编辑 1是 0否
+          publishFlag: '0', // 是否发布
+          range: '1'
+        } // 链接配置内容
       }
       this.isShowNextStep = false
       this.isDisabled = false
@@ -743,7 +689,7 @@ export default {
     },
     // 添加产品
     handleAddProduct () {
-      this.chooseTypeList = this.sellForm.productRangeList
+      this.chooseTypeList = this.form.promoRule.productRangeList
       this.showProModal = true
     },
     // 批量添加
@@ -759,10 +705,10 @@ export default {
       const productArr = list.map(item => {
         return {
           promoActiveSn: this.$route.params.sn,
-          promoRuleSn: this.sellForm.promoRuleSn,
+          promoRuleSn: this.form.promoRule.promoRuleSn,
           productCode: item.code,
           productSn: item.productSn,
-          ruleValue: this.sellForm.ruleValue,
+          ruleValue: this.form.promoRule.ruleValue,
           price: item.terminalPrice
         }
       })
@@ -775,7 +721,7 @@ export default {
       })
     },
     onChangeTree (e) {
-      deleteByProductType({ promoActiveSn: this.$route.params.sn, productTypeSnList: this.sellForm.productRangeList || [] }).then(res => {
+      deleteByProductType({ promoActiveSn: this.$route.params.sn, productTypeSnList: this.form.promoRule.productRangeList || [] }).then(res => {
         if (res.status == 200) {
           this.$refs.chooseProductList.pageInit()
         }