chenrui il y a 1 an
Parent
commit
a662abfea6

+ 132 - 165
src/views/promotionRulesManagement/dealerPromotions/sendProductsModal.vue

@@ -16,24 +16,17 @@
         :rules="rules"
         :label-col="formItemLayout.labelCol"
         :wrapper-col="formItemLayout.wrapperCol" >
-        <a-form-model-item label="规则简称" prop="description">
-          <a-input
-            size="small"
-            id="promotionList-description"
-            v-model.trim="form.description"
-            allowClear
-            placeholder="请输入规则简称(最多20个字符)"
-            :maxLength="20"></a-input>
-        </a-form-model-item>
         <a-form-model-item label="规则门槛" prop="gateFlag">
-          <a-radio-group v-model="form.gateFlag" button-style="solid" size="small" @change="changeGateFlag">
-            <a-radio value="1">
-              有
-            </a-radio>
-            <a-radio value="0">
-              无
-            </a-radio>
-          </a-radio-group>
+          <div class="fixWidthBox">
+            <a-radio-group v-model="form.gateFlag" button-style="solid" size="small" @change="changeGateFlag">
+              <a-radio-button value="1">
+                有
+              </a-radio-button>
+              <a-radio-button value="0">
+                无
+              </a-radio-button>
+            </a-radio-group>
+          </div>
           <div v-if="form.gateFlag && form.gateFlag === '1'">
             <v-select
               size="small"
@@ -62,33 +55,61 @@
             </div>
           </div>
         </a-form-model-item>
+        <a-form-model-item label="规则简称" prop="description">
+          <a-input
+            size="small"
+            id="promotionList-description"
+            v-model.trim="form.description"
+            allowClear
+            placeholder="请输入规则简称(最多20个字符)"
+            :maxLength="20"></a-input>
+        </a-form-model-item>
         <a-form-model-item label="满赠规则" prop="regularSameFlag">
-          <div class="ruleDescList">
-            <a-select default-value="1" v-model="form.regularSameFlag" style="width: 100px" size="small" @change="handleFullGift">
-              <a-select-option value="1">
-                同款
-              </a-select-option>
-              <a-select-option value="0">
-                不同款
-              </a-select-option>
-            </a-select>
-            产品购买满
-            <a-input-number
-              v-model="form.regularQty"
-              :min="0"
-              :step="1"
-              :max="999999"
-              :precision="0"
-              size="small"/>
-            个正价产品,送
-            <a-input-number
-              v-model="form.promotionQty"
-              :min="0"
-              :step="1"
-              :precision="0"
-              :max="999999"
-              size="small"/>
-            个促销产品
+          <div class="fullGiftRuleBox">
+            <div class="ruleDescList" v-for="(con,i) in fullGiftRuleList" :key="i">
+              <span>{{ i*1+1 }}、</span>
+              <a-select
+                default-value="1"
+                :disabled="i!=0"
+                v-model="form.regularSameFlag"
+                style="width: 100px"
+                size="small"
+                @change="handleFullGift">
+                <a-select-option value="1">
+                  同款
+                </a-select-option>
+                <a-select-option value="0">
+                  不同款
+                </a-select-option>
+              </a-select>
+              产品购买满
+              <a-input-number
+                v-model="con.regularValue"
+                :min="0"
+                :step="1"
+                :max="999999"
+                :precision="0"
+                size="small"/>
+              <a-select default-value="YUAN" :disabled="i!=0" v-model="form.regularUnit" style="width: 50px;margin-left:5px;" size="small">
+                <a-select-option value="YUAN">
+                  元
+                </a-select-option>
+                <a-select-option value="GE">
+                  个
+                </a-select-option>
+              </a-select>
+              正价产品,送
+              <a-input-number
+                v-model="con.promotionValue"
+                :min="0"
+                :step="1"
+                :precision="0"
+                :max="999999"
+                size="small"/>
+              个促销产品
+              <a-button type="link" v-if="i==0&&fullGiftRuleList&&fullGiftRuleList.length<5" class="button-info" @click="addFullGiftRule">+新增</a-button>
+              <a-button type="link" v-if="i!=0" class="button-error" @click="delFullGiftRule(con)">删除</a-button>
+            </div>
           </div>
           <div class="ruleDescList">
             <a-checkbox :checked="form.restrictFlag === '1'" size="small" @change="onChange">
@@ -101,7 +122,11 @@
               :step="1"
               :max="999999"
               :precision="0"
-              size="small"/>
+              size="small"
+              style="margin-right:10px;"/>
+            <a-checkbox :checked="form.convertExpenseFlag==='1'" size="small" @change="onChangeConvert">
+              可转费用报销单
+            </a-checkbox>
           </div>
         </a-form-model-item>
         <a-form-model-item label="数量叠加" prop="accrualFlag">
@@ -115,80 +140,30 @@
           </a-radio-group>
           <span style="color:gray;">(如:满10送2,数量叠加则:满20送4,满30送6)</span>
         </a-form-model-item>
-        <a-form-model-item prop="minOrderFlag">
-          <span slot="label">
-            <!-- <a-tooltip title="What do you want others to call you?">
-              <a-icon type="info-circle" />
-            </a-tooltip> -->
-            订单起订金额
-          </span>
-          <a-select v-model="form.minOrderFlag" style="width: 160px" size="small">
-            <a-select-option value="0">
-              不限
-            </a-select-option>
-            <a-select-option value="1">
-              限制
-            </a-select-option>
-          </a-select>
-          <a-input-number
-            v-show="form.minOrderFlag && form.minOrderFlag=='1'"
-            size="small"
-            style="margin-left:10px;width:300px;"
-            v-model="form.minOrderAmount"
-            :min="0"
-            :max="999999"
-            :step="1"
-            :precision="2"
-            placeholder="请输入金额"/>
-        </a-form-model-item>
-        <a-form-model-item prop="upperLimitFlag">
-          <span slot="label">
-            <!-- <a-tooltip title="What do you want others to call you?">
-              <a-icon type="info-circle" />
-            </a-tooltip> -->
-            活动经费上限
-          </span>
-          <a-select v-model="form.upperLimitFlag" style="width: 160px" size="small">
-            <a-select-option value="0">
-              不限
-            </a-select-option>
-            <a-select-option value="1">
-              限制
-            </a-select-option>
-          </a-select>
-          <a-input-number
-            v-show="form.upperLimitFlag&&form.upperLimitFlag=='1'"
-            size="small"
-            style="margin-left:10px;width:300px;"
-            v-model="form.upperLimitAmount"
-            :min="0"
-            :step="1"
-            :max="999999"
-            :precision="2"
-            placeholder="请输入金额"/>
-        </a-form-model-item>
         <a-form-model-item label="促销品与正品一致" prop="regularPromotionSameFlag">
-          <a-radio-group v-model="form.regularPromotionSameFlag" button-style="solid" size="small" :disabled="form.regularSameFlag==0">
-            <a-radio value="1">
-              是
-            </a-radio>
-            <a-radio value="0">
-              否
-            </a-radio>
-          </a-radio-group>
+          <div class="fixWidthBox">
+            <a-radio-group v-model="form.regularPromotionSameFlag" button-style="solid" size="small" :disabled="form.regularSameFlag==0">
+              <a-radio-button value="1">
+                是
+              </a-radio-button>
+              <a-radio-button value="0">
+                否
+              </a-radio-button>
+            </a-radio-group>
+          </div>
         </a-form-model-item>
       </a-form-model>
       <a-card size="small" :bordered="false" class="pages-wrap">
         <div class="flex">
-          <a-radio-group v-model="chooseVal" button-style="solid">
+          <a-radio-group v-model="chooseVal" button-style="solid" @change="onChooseVal">
             <a-radio-button value="a" v-show="form.gateFlag==='1'">
               门槛产品
             </a-radio-button>
             <a-radio-button value="b">
               正价产品
             </a-radio-button>
-            <a-radio-button value="c" v-show="form.regularPromotionSameFlag==='0'">
-              促销产品
+            <a-radio-button :value="'c'+i" v-for="(item,i) in fullGiftRuleList" :key="i" v-show="form.regularPromotionSameFlag==='0'">
+              {{ i==0?'促销产品':'阶梯'+i+'促销产品' }}
             </a-radio-button>
           </a-radio-group>
           <a-button
@@ -200,7 +175,7 @@
         </div>
         <div v-show="chooseVal=='a'"><tableType1 ref="cillProduct"></tableType1></div>
         <div v-show="chooseVal=='b'"><tableType1 ref="normalPriceProduct"></tableType1></div>
-        <div v-show="chooseVal=='c'"><tableType2 ref="offerProduct"></tableType2></div>
+        <div v-show="chooseVal==('c'+i)" v-for="(item,i) in fullGiftRuleList" :key="i" ><tableType1 :ref="'offerProduct'+i"></tableType1></div>
       </a-card>
       <div class="btn-cont">
         <a-button id="promotionList-basicInfo-modal-back" @click="isShow = false">取消</a-button>
@@ -245,32 +220,32 @@ export default {
         labelCol: { span: 4 },
         wrapperCol: { span: 17 }
       },
+      fullGiftRuleList: [{
+        regularValue: undefined,
+        promotionValue: undefined
+      }],
       form: {
+        giveRuleType: 'RATIO', // 满赠规则类型: SUM_MONEY[金额叠加] / RATIO[按比例]   满产品送产品写死为: 按比例
         promotionRuleType: 'BUY_PROD_GIVE_PROD', // 买产品送产品
         description: '', // 简称
         gateFlag: '0', // 门槛
         gateType: undefined,
         gateAmount: undefined,
         quotaAmount: undefined,
-        regularSameFlag: '1', // 满赠规则  不同款商品
-        regularQty: undefined,
-        promotionQty: undefined,
+        regularSameFlag: '1', // 满赠规则  同款不同款商品
+        regularUnit: 'YUAN',
         restrictFlag: '0', // 限制正价产品款数
+        convertExpenseFlag: '0', // 转费用报销标记
         restrictCategory: '',
         accrualFlag: '1', // 数量叠加
-        minOrderFlag: '0', // 起订金额
-        minOrderAmount: undefined,
-        upperLimitFlag: '0', // 活动经费上限
-        upperLimitAmount: undefined,
-        regularPromotionSameFlag: '1'
+        regularPromotionSameFlag: '1',
+        giftProductMap: {}
       },
       rules: {
         description: [ { required: true, message: '请输入规则简称', trigger: 'blur' } ],
         gateFlag: [ { required: true, message: '请选择规则门槛', trigger: 'change' } ],
         regularSameFlag: [{ required: true, message: '请选择满赠规则', trigger: 'change' }],
         accrualFlag: [{ required: true, message: '请选择数量是否叠加', trigger: 'change' }],
-        minOrderFlag: [{ required: true, message: '请选择订单起订金额', trigger: 'change' }],
-        upperLimitFlag: [{ required: true, message: '请选择活动经费上限', trigger: 'change' }],
         regularPromotionSameFlag: [{ required: true, message: '请选择促销品与正品是否一致', trigger: 'change' }]
       },
       chooseVal: 'a',
@@ -278,6 +253,22 @@ export default {
     }
   },
   methods: {
+    onChooseVal (e) {
+      this.chooseVal = e.target.value
+    },
+    // 新增  满减规则  最多能添加五个
+    addFullGiftRule () {
+      const obj = {
+        regularValue: undefined,
+        promotionValue: undefined
+      }
+      this.fullGiftRuleList.push(obj)
+    },
+    // 删除满减规则
+    delFullGiftRule (con) {
+      const pos = this.fullGiftRuleList.findIndex(item => { return item.scopeLevel == con.scopeLevel })
+      this.fullGiftRuleList.splice(pos, 1)
+    },
     // 满赠  同款    促销品与正品一致  默认是 可修改
     //     不同款                   默认否 不可修改
     handleFullGift (e) {
@@ -299,17 +290,18 @@ export default {
     onChange (e) {
       this.form.restrictFlag = e.target.checked ? '1' : '0'
     },
+    onChangeConvert (e) {
+      this.form.convertExpenseFlag = e.target.checked ? '1' : '0'
+    },
     // 门槛切换  tab 按钮默认显示问题
     changeGateFlag (e) {
-      if (this.chooseVal != 'c') {
-        if (e.target.value == '0') {
-          this.chooseVal = 'b'
-          this.form.gateType = undefined
-          this.form.gateAmount = undefined
-          this.form.quotaAmount = undefined
-        } else {
-          this.chooseVal = 'a'
-        }
+      if (e.target.value == '0') {
+        this.chooseVal = 'b'
+        this.form.gateType = undefined
+        this.form.gateAmount = undefined
+        this.form.quotaAmount = undefined
+      } else {
+        this.chooseVal = 'a'
       }
     },
     changeGateTypeFlag (val) {
@@ -337,36 +329,15 @@ export default {
               return
             }
           }
-          if (!_this.form.regularQty || !_this.form.promotionQty) {
-            _this.$message.warning('满赠规则条件不能为空!')
-            return
-          }
           if (_this.form.restrictFlag === '1' && !_this.form.restrictCategory) {
             _this.$message.warning('请输入限制正价产品款数个数!')
             return
           }
-
-          if (_this.form.minOrderFlag == 1 && !_this.form.minOrderAmount) {
-            _this.$message.warning('请输入订单起订限制金额数!')
-            return
-          }
-          if (_this.form.minOrderFlag == 0) {
-            _this.form.minOrderAmount = undefined
-          }
-
-          if (_this.form.upperLimitFlag == 1 && !_this.form.upperLimitAmount) {
-            _this.$message.warning('请输入活动经费上限金额!')
-            return
-          }
-          if (_this.form.upperLimitFlag == 0) {
-            _this.form.upperLimitAmount = undefined
-          }
-
-          const form = JSON.parse(JSON.stringify(_this.form))
+          var form = JSON.parse(JSON.stringify(_this.form))
           let rowFlag1 = null
           let rowFlag2 = null
-          let rowFlag3 = null
-          if (form.gateFlag == '1') {
+          const rowFlag3 = null
+          if (form.gateFlag == '1') { // 门槛产品
             form.gateProductList = this.$refs.cillProduct.getResultVal()
             form.gateAmount = form.gateType === 'RATIO_AMOUNT' ? form.gateAmount / 100 : form.gateAmount
             if (form.gateProductList.length == 0) {
@@ -382,11 +353,9 @@ export default {
             }
           } else {
             form.gateProductList = []
-            form.gateAmount = ''
-            form.quotaAmount = ''
             form.gateType = undefined
           }
-
+          // 正价产品
           form.regularProductList = this.$refs.normalPriceProduct.getResultVal()
           // 判断表格必填
           if (form.regularProductList.length == 0) {
@@ -398,10 +367,14 @@ export default {
               _this.$message.warning('订单起订量设置不能为空!')
               return
             }
-            rowFlag3 = _this.isJudge(form.regularProductList)
+            rowFlag2 = _this.isJudge(form.regularProductList)
           }
-          if (form.regularPromotionSameFlag == '0') {
-            form.giftProductList = this.$refs.offerProduct.getResultVal()
+          if (form.regularPromotionSameFlag === '0') { // 促销产品   阶梯促销产品
+            const allGiftObj = {}
+            _this.fullGiftRuleList.forEach((val, i) => {
+              allGiftObj['GIFT' + i] = _this.$refs['offerProduct' + i][0].getResultVal()
+            })
+
             if (form.giftProductList.length == 0) {
               _this.$message.warning('请添加促销产品!')
               return
@@ -468,15 +441,9 @@ export default {
         gateAmount: undefined,
         quotaAmount: undefined,
         regularSameFlag: '1', // 满赠规则  不同款商品
-        regularQty: undefined,
-        promotionQty: undefined,
         restrictFlag: '0', // 限制正价产品款数
         restrictCategory: '',
         accrualFlag: '1', // 数量叠加
-        minOrderFlag: '0', // 起订金额
-        minOrderAmount: undefined,
-        upperLimitFlag: '0', // 活动经费上限
-        upperLimitAmount: undefined,
         regularPromotionSameFlag: '1',
         gateProductList: undefined,
         giftProductList: undefined,
@@ -486,7 +453,7 @@ export default {
         this.$refs.ruleForm.resetFields()
         this.$refs.cillProduct.reSetTableData()
         this.$refs.normalPriceProduct.reSetTableData()
-        this.$refs.offerProduct.reSetTableData()
+        this.$refs.offerProduct0.reSetTableData()
       })
     },
     // 获取编辑详情
@@ -602,7 +569,7 @@ export default {
       max-height: 745px !important;
       overflow-y: scroll !important;
     }
-    .ant-radio-button-wrapper{
+    .fixWidthBox .ant-radio-button-wrapper{
       width:80px;
       text-align: center;
     }