|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<a-modal
|
|
|
centered
|
|
|
- class="promotionList-basicInfo-modal"
|
|
|
+ class="promotionList-modal"
|
|
|
:footer="null"
|
|
|
:maskClosable="false"
|
|
|
title="规则设置"
|
|
@@ -10,7 +10,7 @@
|
|
|
width="70%">
|
|
|
<a-spin :spinning="spinning" tip="Loading...">
|
|
|
<a-form-model
|
|
|
- id="promotionList-basicInfo-form"
|
|
|
+ id="promotionList-form"
|
|
|
ref="ruleForm"
|
|
|
:model="form"
|
|
|
:rules="rules"
|
|
@@ -27,11 +27,11 @@
|
|
|
</a-form-model-item>
|
|
|
<a-form-model-item label="规则门槛" prop="gateFlag">
|
|
|
<div class="fixWidthBox">
|
|
|
- <a-radio-group v-model="form.gateFlag" button-style="solid" size="small" @change="changeGateFlag">
|
|
|
- <a-radio-button value="1">
|
|
|
+ <a-radio-group v-model="form.gateFlag" id="promotionList-gateFlag" button-style="solid" size="small" @change="changeGateFlag">
|
|
|
+ <a-radio-button value="1" id="promotionList-gateFlag1">
|
|
|
有
|
|
|
</a-radio-button>
|
|
|
- <a-radio-button value="0">
|
|
|
+ <a-radio-button value="0" id="promotionList-gateFlag0">
|
|
|
无
|
|
|
</a-radio-button>
|
|
|
</a-radio-group>
|
|
@@ -47,19 +47,43 @@
|
|
|
@change="changeGateTypeFlag"
|
|
|
allowClear></v-select>
|
|
|
<div v-if="form.gateType==='RATIO_AMOUNT'">
|
|
|
- 购买门槛产品金额 <a-input-number v-model="form.gateValue" :min="0" :max="99999999" :precision="2" size="small"/> %作为配额
|
|
|
+ 购买门槛产品金额 <a-input-number
|
|
|
+ v-model="form.gateValue"
|
|
|
+ id="promotionList-gateValue"
|
|
|
+ :min="0"
|
|
|
+ :max="99999999"
|
|
|
+ :precision="2"
|
|
|
+ size="small"/> %作为配额
|
|
|
<a-tooltip title="如:填写100%,则购买10000元门槛产品,可享受10000配额购买正价产品,根据门槛金额动态调整配额">
|
|
|
<a-icon type="question-circle" theme="filled" :style="{ fontSize: '14px', color: 'gray' }"/>
|
|
|
</a-tooltip>
|
|
|
</div>
|
|
|
<div v-if="form.gateType==='MIN_AMOUNT'">
|
|
|
- 购买门槛产品满最低金额 <a-input-number v-model="form.gateValue" :min="0" :max="99999999" :precision="2" size="small"/>元,不限制配额。
|
|
|
+ 购买门槛产品满最低金额 <a-input-number
|
|
|
+ id="promotionList-gateValue1"
|
|
|
+ v-model="form.gateValue"
|
|
|
+ :min="0"
|
|
|
+ :max="99999999"
|
|
|
+ :precision="2"
|
|
|
+ size="small"/>元,不限制配额。
|
|
|
</div>
|
|
|
<div class="ruleDescList" v-if="form.gateType==='FIXED_AMOUNT'">
|
|
|
购买满
|
|
|
- <a-input-number v-model="form.gateValue" :min="0" :max="99999999" :precision="2" size="small"/>
|
|
|
+ <a-input-number
|
|
|
+ id="promotionList-gateValue2"
|
|
|
+ v-model="form.gateValue"
|
|
|
+ :min="0"
|
|
|
+ :max="99999999"
|
|
|
+ :precision="2"
|
|
|
+ size="small"/>
|
|
|
元门槛产品,可使用
|
|
|
- <a-input-number v-model="form.quotaAmount" :min="0" :max="99999999" :precision="2" size="small"/>
|
|
|
+ <a-input-number
|
|
|
+ id="promotionList-quotaAmount"
|
|
|
+ v-model="form.quotaAmount"
|
|
|
+ :min="0"
|
|
|
+ :max="99999999"
|
|
|
+ :precision="2"
|
|
|
+ size="small"/>
|
|
|
元配额,采购规则中的正价商品(配额算销售额)
|
|
|
</div>
|
|
|
</div>
|
|
@@ -69,6 +93,7 @@
|
|
|
<div class="ruleDescList" v-for="(con,i) in fullGiftRuleList" :key="i">
|
|
|
<span v-if="fullGiftRuleList.length>1">{{ i*1+1 }}、</span>
|
|
|
<a-select
|
|
|
+ id="promotionList-regularSameFlag"
|
|
|
default-value="1"
|
|
|
:disabled="i!=0"
|
|
|
v-model="form.regularSameFlag"
|
|
@@ -76,37 +101,40 @@
|
|
|
size="small"
|
|
|
@change="handleFullGift"
|
|
|
allowClear>
|
|
|
- <a-select-option value="1">
|
|
|
+ <a-select-option value="1" id="promotionList-regularSameFlag1">
|
|
|
同款
|
|
|
</a-select-option>
|
|
|
- <a-select-option value="0">
|
|
|
+ <a-select-option value="0" id="promotionList-regularSameFlag0">
|
|
|
不同款
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
产品购买满
|
|
|
<a-input-number
|
|
|
v-model="con.regularValue"
|
|
|
+ id="promotionList-regularValue"
|
|
|
:min="i!=0?fullGiftRuleList[i-1].regularValue:0"
|
|
|
:step="1"
|
|
|
:max="99999999"
|
|
|
:precision="form.regularUnit==='YUAN'?2:0"
|
|
|
size="small"/>
|
|
|
<a-select
|
|
|
+ id="promotionList-regularUnit"
|
|
|
default-value="GE"
|
|
|
:disabled="i!=0"
|
|
|
v-model="form.regularUnit"
|
|
|
style="width: 50px;margin-left:5px;"
|
|
|
size="small"
|
|
|
@change="handleChangeUnit">
|
|
|
- <a-select-option value="GE">
|
|
|
+ <a-select-option value="GE" id="promotionList-regularUnit-ge">
|
|
|
个
|
|
|
</a-select-option>
|
|
|
- <a-select-option value="YUAN">
|
|
|
+ <a-select-option value="YUAN" id="promotionList-regularUnit-yuan">
|
|
|
元
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
正价产品,送
|
|
|
<a-input-number
|
|
|
+ id="promotionList-promotionValue"
|
|
|
v-model="con.promotionValue"
|
|
|
:min="0"
|
|
|
:step="1"
|
|
@@ -114,12 +142,12 @@
|
|
|
:max="99999999"
|
|
|
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.id)">删除</a-button>
|
|
|
+ <a-button type="link" id="promotionList-add" v-if="i==0&&fullGiftRuleList&&fullGiftRuleList.length<5" class="button-info" @click="addFullGiftRule">+新增</a-button>
|
|
|
+ <a-button type="link" id="promotionList-del" v-if="i!=0" class="button-error" @click="delFullGiftRule(con.id)">删除</a-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="ruleDescList">
|
|
|
- <a-checkbox :checked="form.restrictFlag === '1'" size="small" @change="onChange">
|
|
|
+ <a-checkbox id="promotionList-restrictFlag" :checked="form.restrictFlag === '1'" size="small" @change="onChange">
|
|
|
限制正价产品款数
|
|
|
</a-checkbox>
|
|
|
<a-input-number
|
|
@@ -130,18 +158,19 @@
|
|
|
:max="99999999"
|
|
|
:precision="0"
|
|
|
size="small"
|
|
|
+ id="promotionList-restrictCategory"
|
|
|
style="margin-right:10px;"/>
|
|
|
- <a-checkbox :checked="form.convertExpenseFlag==='1'" size="small" @change="onChangeConvert">
|
|
|
+ <a-checkbox id="promotionList-convertExpenseFlag" :checked="form.convertExpenseFlag==='1'" size="small" @change="onChangeConvert">
|
|
|
可转费用报销单
|
|
|
</a-checkbox>
|
|
|
</div>
|
|
|
</a-form-model-item>
|
|
|
<a-form-model-item label="数量叠加" prop="accrualFlag">
|
|
|
- <a-radio-group v-model="form.accrualFlag" button-style="solid" size="small">
|
|
|
- <a-radio value="1">
|
|
|
+ <a-radio-group id="promotionList-accrualFlag" v-model="form.accrualFlag" button-style="solid" size="small">
|
|
|
+ <a-radio value="1" id="promotionList-accrualFlag1">
|
|
|
是
|
|
|
</a-radio>
|
|
|
- <a-radio value="0">
|
|
|
+ <a-radio value="0" id="promotionList-accrualFlag0">
|
|
|
否
|
|
|
</a-radio>
|
|
|
</a-radio-group>
|
|
@@ -149,11 +178,17 @@
|
|
|
</a-form-model-item>
|
|
|
<a-form-model-item label="促销品与正品一致" prop="regularPromotionSameFlag">
|
|
|
<div class="fixWidthBox">
|
|
|
- <a-radio-group v-model="form.regularPromotionSameFlag" button-style="solid" size="small" :disabled="form.regularSameFlag==0" @change="handleSameFlag">
|
|
|
- <a-radio-button value="1">
|
|
|
+ <a-radio-group
|
|
|
+ id="promotionList-regularPromotionSameFlag"
|
|
|
+ v-model="form.regularPromotionSameFlag"
|
|
|
+ button-style="solid"
|
|
|
+ size="small"
|
|
|
+ :disabled="form.regularSameFlag==0"
|
|
|
+ @change="handleSameFlag">
|
|
|
+ <a-radio-button value="1" id="promotionList-regularPromotionSameFlag1">
|
|
|
是
|
|
|
</a-radio-button>
|
|
|
- <a-radio-button value="0">
|
|
|
+ <a-radio-button value="0" id="promotionList-regularPromotionSameFlag0">
|
|
|
否
|
|
|
</a-radio-button>
|
|
|
</a-radio-group>
|
|
@@ -162,14 +197,14 @@
|
|
|
</a-form-model>
|
|
|
<a-card size="small" :bordered="false" class="pages-wrap">
|
|
|
<div class="flex" style="margin-bottom:10px;">
|
|
|
- <a-radio-group v-model="chooseVal" button-style="solid" @change="onChooseVal">
|
|
|
- <a-radio-button value="a" v-show="form.gateFlag==='1'">
|
|
|
+ <a-radio-group id="promotionList-chooseVal" v-model="chooseVal" button-style="solid" @change="onChooseVal">
|
|
|
+ <a-radio-button value="a" id="promotionList-chooseVal-a" v-show="form.gateFlag==='1'">
|
|
|
门槛产品
|
|
|
</a-radio-button>
|
|
|
- <a-radio-button value="b">
|
|
|
+ <a-radio-button value="b" id="promotionList-chooseVal-b">
|
|
|
正价产品
|
|
|
</a-radio-button>
|
|
|
- <a-radio-button :value="'c'+item.id" v-for="(item,i) in fullGiftRuleList" :key="i" v-show="form.regularPromotionSameFlag==='0'">
|
|
|
+ <a-radio-button :id="'promotionList-chooseVal-c'+item.id" :value="'c'+item.id" v-for="(item,i) in fullGiftRuleList" :key="i" v-show="form.regularPromotionSameFlag==='0'">
|
|
|
{{ fullGiftRuleList.length>1?'促销产品('+'阶梯'+(i*1+1)+')':'促销产品' }}
|
|
|
</a-radio-button>
|
|
|
</a-radio-group>
|
|
@@ -179,8 +214,8 @@
|
|
|
type="link"
|
|
|
class="button-info"
|
|
|
@click="openGuideModal=true"
|
|
|
- id="promotionList-edit-btn">+导入产品</a-button>
|
|
|
- <a-button type="link" class="button-error" @click="handlePreview">预览</a-button>
|
|
|
+ id="promotionList-import">+导入产品</a-button>
|
|
|
+ <a-button type="link" id="promotionList-preview" class="button-error" @click="handlePreview">预览</a-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-show="chooseVal=='a'"><tableType1 :unitTypeList="unitTypeDataList" ref="cillProduct"></tableType1></div>
|
|
@@ -188,8 +223,8 @@
|
|
|
<div v-show="chooseVal==('c'+item.id)" v-for="(item,i) in fullGiftRuleList" :key="item.id"><tableType1 :unitTypeList="unitTypeDataList" :ref="'offerProduct'+i"></tableType1></div>
|
|
|
</a-card>
|
|
|
<div class="btn-cont">
|
|
|
- <a-button id="promotionList-basicInfo-modal-back" @click="isShow = false">取消</a-button>
|
|
|
- <a-button style="margin-left: 15px;" type="primary" id="promotionList-modal-save" :loading="loadingSave" @click="handleSave">确定</a-button>
|
|
|
+ <a-button id="promotionList-cancel" @click="isShow = false">取消</a-button>
|
|
|
+ <a-button style="margin-left: 15px;" type="primary" id="promotionList-save" :loading="loadingSave" @click="handleSave">确定</a-button>
|
|
|
</div>
|
|
|
</a-spin>
|
|
|
<!-- 导入产品 -->
|
|
@@ -201,12 +236,14 @@
|
|
|
|
|
|
<script>
|
|
|
import { commonMixin } from '@/utils/mixin'
|
|
|
+// 组件
|
|
|
import { VSelect } from '@/components'
|
|
|
import tableType1 from './tableType1.vue'
|
|
|
-import { promotionSave, getRuleDetail, getNewScopeSn } from '@/api/promotion'
|
|
|
import ImportGuideModal from './importGuideModal.vue'
|
|
|
-import { getLookUpData } from '@/api/data'
|
|
|
import productPreviewModal from './productPreviewModal'
|
|
|
+// 接口
|
|
|
+import { getLookUpData } from '@/api/data'
|
|
|
+import { promotionSave, getRuleDetail, getNewScopeSn } from '@/api/promotion'
|
|
|
export default {
|
|
|
name: 'PromotionListBasicInfoModal',
|
|
|
mixins: [commonMixin],
|
|
@@ -229,32 +266,34 @@ export default {
|
|
|
return {
|
|
|
isShow: this.openModal, // 是否打开弹框
|
|
|
spinning: false,
|
|
|
+ // form表单 label布局
|
|
|
formItemLayout: {
|
|
|
labelCol: { span: 4 },
|
|
|
wrapperCol: { span: 17 }
|
|
|
},
|
|
|
- fullGiftRuleList: [],
|
|
|
+ fullGiftRuleList: [], // 促销产品数据
|
|
|
form: {
|
|
|
giveRuleType: 'RATIO', // 满赠规则类型: SUM_MONEY[金额叠加] / RATIO[按比例] 满产品送产品写死为: 按比例
|
|
|
promotionRuleType: 'BUY_PROD_GIVE_PROD', // 买产品送产品
|
|
|
description: '', // 简称
|
|
|
gateFlag: '0', // 门槛
|
|
|
- gateType: undefined,
|
|
|
- gateValue: undefined,
|
|
|
- quotaAmount: undefined,
|
|
|
+ gateType: undefined, // 选择门槛类型
|
|
|
+ gateValue: undefined, // 门槛值
|
|
|
+ quotaAmount: undefined, // 门槛配额
|
|
|
regularSameFlag: '1', // 满赠规则 同款不同款商品
|
|
|
- regularUnit: 'GE',
|
|
|
+ regularUnit: 'GE', // 单位
|
|
|
restrictFlag: '0', // 限制正价产品款数
|
|
|
convertExpenseFlag: '0', // 转费用报销标记
|
|
|
- restrictCategory: '',
|
|
|
+ restrictCategory: '', // 正价产品款数
|
|
|
accrualFlag: '1', // 数量叠加
|
|
|
- regularPromotionSameFlag: '1',
|
|
|
- giftProductMap: {},
|
|
|
- gateInfo: undefined,
|
|
|
- ruleInfo: undefined,
|
|
|
- gateUnit: undefined,
|
|
|
- quotaUnit: undefined
|
|
|
+ regularPromotionSameFlag: '1', // 促销品与正品是否一致
|
|
|
+ giftProductMap: {}, // 阶梯促销产品集合
|
|
|
+ gateInfo: undefined, // 门槛产品规则描述
|
|
|
+ ruleInfo: undefined, // 正价产品规则描述
|
|
|
+ gateUnit: undefined, // 门槛产品单位
|
|
|
+ quotaUnit: undefined// 门槛配额单位
|
|
|
},
|
|
|
+ // 表单验证规则
|
|
|
rules: {
|
|
|
description: [ { required: true, message: '请输入规则简称', trigger: 'blur' } ],
|
|
|
gateFlag: [ { required: true, message: '请选择规则门槛', trigger: 'change' } ],
|
|
@@ -262,12 +301,12 @@ export default {
|
|
|
accrualFlag: [{ required: true, message: '请选择数量是否叠加', trigger: 'change' }],
|
|
|
regularPromotionSameFlag: [{ required: true, message: '请选择促销品与正品是否一致', trigger: 'change' }]
|
|
|
},
|
|
|
- chooseVal: 'a',
|
|
|
+ chooseVal: 'a', // a门槛产品 b正价产品 c 或者c+id促销产品 促销阶梯产品
|
|
|
openGuideModal: false, // 导入弹窗
|
|
|
id: null,
|
|
|
code: 'SCOPE_UNIT_TYPE', // 起订类型数据字典
|
|
|
- unitTypeDataList: [],
|
|
|
- loadingSave: false,
|
|
|
+ unitTypeDataList: [], // 起订量数据
|
|
|
+ loadingSave: false, // 提交按钮加载状态
|
|
|
openProductModal: false, // 预览弹窗
|
|
|
previewList: []// 预览值
|
|
|
}
|
|
@@ -315,6 +354,7 @@ export default {
|
|
|
closeGuideModel () {
|
|
|
this.openGuideModal = false
|
|
|
},
|
|
|
+ // 导入成功
|
|
|
hanldeOk (arr) {
|
|
|
if (this.chooseVal == 'a') {
|
|
|
this.$refs['cillProduct'].importRow(arr)
|
|
@@ -332,6 +372,7 @@ export default {
|
|
|
onChange (e) {
|
|
|
this.form.restrictFlag = e.target.checked ? '1' : '0'
|
|
|
},
|
|
|
+ // 可转费用报销单
|
|
|
onChangeConvert (e) {
|
|
|
this.form.convertExpenseFlag = e.target.checked ? '1' : '0'
|
|
|
},
|
|
@@ -346,11 +387,13 @@ export default {
|
|
|
this.chooseVal = 'a'
|
|
|
}
|
|
|
},
|
|
|
+ // 促销品与正品一致
|
|
|
handleSameFlag (e) {
|
|
|
if (e.target.value != '0') {
|
|
|
this.chooseVal = this.form.gateFlag == '1' ? 'a' : 'b'
|
|
|
}
|
|
|
},
|
|
|
+ // 门槛与配额设置要求
|
|
|
changeGateTypeFlag (val) {
|
|
|
this.form.gateType = val
|
|
|
this.form.gateValue = undefined
|
|
@@ -613,6 +656,7 @@ export default {
|
|
|
_this.spinning = false
|
|
|
})
|
|
|
},
|
|
|
+ // 重组所需回显数据
|
|
|
newData (list) {
|
|
|
list.forEach(con => {
|
|
|
// 品牌
|
|
@@ -668,6 +712,7 @@ export default {
|
|
|
})
|
|
|
return list
|
|
|
},
|
|
|
+ // 重组起订量等数据
|
|
|
getUnitTypeList () {
|
|
|
const _this = this
|
|
|
getLookUpData({
|
|
@@ -747,10 +792,12 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ // 关闭选择产品弹窗
|
|
|
closeProductModal () {
|
|
|
this.previewList = []
|
|
|
this.openProductModal = false
|
|
|
},
|
|
|
+ // 选择显示产品类型
|
|
|
onChooseVal (e) {
|
|
|
this.chooseVal = e.target.value
|
|
|
}
|