Commit b6cc33e0 by Kyle_Li

增加微盟渠道

parent 380cac48
......@@ -23,5 +23,6 @@
<script src="//web-1251519181.file.myqcloud.com/components/area-ab.2.0.00.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/input.2.0.00.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/export.1.0.1.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/store-new.2.0.46.js"></script>
</body>
</html>
......@@ -13,43 +13,77 @@
<el-form-item label="适用条件" class="padding-0">
<div class="title-tip">该设置只对微信商城中的积分抵现起作用。</div>
</el-form-item>
<div class="form-child margin-20 ">
<template v-for="(item, index) in ruleForm.gradeStrategyChannelList">
<template v-if="item.channelType == 1">
<el-form-item label="适用微信商城" prop="" :key="index">
<el-switch v-model="item.status"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.status" :key="index">
<el-form-item label="选择商户">
<el-select v-model="ruleForm.cliqueEnterpriseIds" placeholder="请选择" multiple>
<el-option v-for="item in mechantOption" :key="item.enterpriseId" :label="item.brandName" :value="item.enterpriseId"> </el-option>
<el-select v-model="item.cliqueEnterpriseIdArr" placeholder="请选择" multiple size="small">
<el-option v-for="item in mechantOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="适用商品" class="padding-0">
<div>
<el-select class="fl" style="margin-right: 10px;" v-model="ruleForm.strategyRelationType" placeholder="请选择" @change="changeGood($event)">
<el-select class="fl" style="margin-right: 10px;" v-model="item.channelRelationProType" placeholder="请选择">
<el-option v-for="item in applyGoods" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<!-- 二级 -->
<!-- 商品品牌 -->
<el-select class="fl" @change="selectGoodsStore" v-if="ruleForm.strategyRelationType == 2" v-model="value5" multiple placeholder="请选择">
<el-option v-for="item in goodsTreeOptions" :key="item.brandId" :label="item.brandName" :value="item.brandId"> </el-option>
<el-select size="small" class="fl" @change="selectGoodsStoreWx" v-if="item.channelRelationProType == 2" v-model="valueWx" multiple placeholder="请选择">
<el-option v-for="item in goodsTreeOptionsWx" :key="item.brandId" :label="item.brandName" :value="item.brandId"> </el-option>
</el-select>
<!-- 商品品类 -->
<div class="fl goods-cate" v-if="ruleForm.strategyRelationType == 3">
<div v-if="item.channelRelationProType == 3" class="fl goods-cate">
<goodsCate ref="selectGoodsCate" :selectCateType="selectCateTypeWx" :selectCateData="selectCateDataWx" @getCateIds="getCateIds"></goodsCate>
</div>
<el-button style="width:217px" class="fl" v-if="ruleForm.strategyRelationType == 4" @click.stop.prevent="showGoodsDialog('wx')">已选{{ goodsListWx.length }}件商品</el-button>
</div>
<el-button style="width:202px" class="fl" v-if="item.channelRelationProType == 4" @click="showGoodsDialog('wx')">已选{{ goodsListWx.length }}件商品</el-button>
</el-form-item>
<el-form-item label="折扣控制" prop="region">
<div class="radio-cell">
<el-radio v-model="ruleForm.discountControl" label="1">所有折扣商品都适用</el-radio>
<el-radio v-model="item.integralUseDiscountControl" label="1">所有折扣商品都适用</el-radio>
</div>
<div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label>折商品都适用</label>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00,最低折扣不能大于最高折扣</span>
</div>
</el-form-item>
</div>
</template>
<!-- 微盟渠道-->
<template v-if="item.channelType == 9">
<el-form-item label="微盟渠道" prop="" :key="index">
<el-switch v-model="item.status"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.status == true" :key="index">
<el-form-item label="选择店铺">
<vue-gic-store-new :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item>
<el-form-item label="微盟商品" class="padding-0">
<el-select v-model="item.channelRelationProType" placeholder="请选择">
<el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="折扣控制" prop="region" class="input-margin-b">
<div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1">所有折扣商品都适用</el-radio>
</div>
<div class="radio-cell margin-20">
<el-radio v-model="ruleForm.discountControl" label="2">折扣</el-radio>
<el-input-number v-model="ruleForm.discountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label></label>
<el-input-number v-model="ruleForm.discountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label>折商品都适用</label>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00,最低折扣不能大于最高折扣</span>
</div>
</el-form-item>
</div>
</template>
</template>
<el-form-item label="折扣" prop="" class="margin-20">
<el-input @focus="inputFocus('discountRate')" @change="formatInputChange($event)" v-model="ruleForm.discountRate"></el-input>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00</span>
......@@ -82,7 +116,7 @@ import goodsCate from 'components/memberShip/goodsCate';
import strLength from '@/common/js/strlen';
import showMsg from '@/common/js/showmsg';
import errMsg from '@/common/js/error';
import { getRequest, postRequest } from '@/api/api';
import { getRequest, postRequest, postJson } from '@/api/api';
import { log } from '@/utils/index.js';
export default {
......@@ -144,6 +178,30 @@ export default {
value: '4'
}
],
// 微盟渠道
wMShopOption: [
{
label: '所有店铺', // 就是所有门店
value: '1'
}
],
wMGoodOption: [
{
label: '所有商品',
value: '1'
}
],
// 商品品牌
goodsTreeOptionsWx: [],
valueWx: [],
goodsTreeOptionsLine: [],
valueLine: [],
// 门店 新
uuid: '', // 新增传空,编辑必传,
options: [0, 1, 2, 3, 4, 5], // 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
isAdd: true,
scencs: 'integral',
wmuuid: '', // 微盟
ruleForm: {
// 积分获取规则
gradeStrategyId: '', //策略id
......@@ -158,7 +216,32 @@ export default {
gradeStrategyGoodsRelationIds: [], // 策略关联商品信息id
cliqueEnterpriseIds: [], // 策略关联商户信息
relationCount: '0',
enterpriseMS: null
enterpriseMS: null,
perpetualFlag: 1,
gradeStrategyChannelList: [
{
gradeStrategyChannelId: '', //id
channelType: '1', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
status: true, //渠道配置是否启用 1启用 0停用
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
strategyGoodsRelationIdArr: [], // 商品
},
{
gradeStrategyChannelId: '', //id
channelType: '9', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
status: true, //渠道配置是否启用 1启用 0停用
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
strategyGoodsRelationIdArr: [], // 商品
}
]
},
// 商品品类
......@@ -211,6 +294,59 @@ export default {
this.$router.push('/addGroupGrade');
}
},
async checkListValue(data) {
let obj = {
flag: true,
text: ''
};
if (!!data.gradeStrategyChannelList.length) {
for (let i = 0; i < data.gradeStrategyChannelList.length; i++) {
if (!!data.gradeStrategyChannelList[i].status) {
if (!!data.gradeStrategyChannelList[i].status && data.gradeStrategyChannelList[i].integralUseDiscountControl == 2) {
if (!data.gradeStrategyChannelList[i].integralUseDiscountControlUpper || !data.gradeStrategyChannelList[i].integralUseDiscountControlLower) {
obj.flag = false;
obj.text = '请填写折扣';
}
if (parseInt(data.gradeStrategyChannelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.gradeStrategyChannelList[i].integralUseDiscountControlLower) > 10 || Number(data.gradeStrategyChannelList[i].integralUseDiscountControlUpper) <= Number(data.gradeStrategyChannelList[i].integralUseDiscountControlLower)) {
obj.flag = false;
obj.text = '折扣格式有误';
}
}
if (data.gradeStrategyChannelList[i].channelType == 1 && !data.gradeStrategyChannelList[i].cliqueEnterpriseIdArr.length) {
obj.flag = false;
obj.text = '请选择商户';
}
if (data.gradeStrategyChannelList[i].channelType == 3) {
const storeGroupDom = this.$refs.storeGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.storeGroup[0].isStoreSave();
} else {
flag = await this.$refs.storeGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
if (data.gradeStrategyChannelList[i].channelType == 9) {
const storeGroupDom = this.$refs.wmstoreGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.wmstoreGroup[0].isStoreSave();
} else {
flag = await this.$refs.wmstoreGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
}
}
}
return obj;
},
// 获取商户列表
getCliqueInfo() {
let that = this;
......@@ -226,7 +362,7 @@ export default {
});
that.mechantOption = data;
// 默认选择商户
that.ruleForm.channelList[0].enterpriseRelationIdArr = [data[0].enterpriseId];
// that.ruleForm.gradeStrategyChannelList[0].cliqueEnterpriseIdArr = [data[0].enterpriseId];
return;
}
errMsg.errorMsg(resData);
......@@ -235,6 +371,40 @@ export default {
// log(error);
});
},
// 获取商品品牌 1
getGoodsBrand() {
let that = this;
let para = {};
getRequest('/api-mall/list-enterprise-brand', para)
.then(res => {
// log(res.data.result)
let resData = res.data;
if (resData.errorCode == 0) {
let data = resData.result;
that.goodsTreeOptionsWx = data;
that.goodsTreeOptionsLine = data;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
// 选择商品品牌 微信商城
selectGoodsStoreWx(val) {
this.valueWx = val;
this.ruleForm.gradeStrategyChannelList.forEach((item, index) => {
if (item.channelType == '1') {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr = [];
val.forEach(ele => {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr.push(ele);
});
}
});
},
// 保存
submitForm(formName) {
let that = this;
......@@ -245,46 +415,88 @@ export default {
showMsg.showmsg('请填写策略名称', 'error');
return;
}
if (data.strategyRelationType == 2 && that.value5.length < 1) {
showMsg.showmsg('请选择商品品牌', 'error');
// if (data.strategyRelationType == 2 && that.value5.length < 1) {
// showMsg.showmsg('请选择商品品牌', 'error');
// return;
// }
// if (data.strategyRelationType == 3 && that.cateDataWx.length < 1) {
// showMsg.showmsg('请选择商品品类', 'error');
// return;
// }
// if (data.strategyRelationType == 4 && that.goodsListWx.length < 1) {
// showMsg.showmsg('请选择单件商品', 'error');
// return;
// }
// if (!data.cliqueEnterpriseIds.length) {
// showMsg.showmsg('请选择商户', 'error');
// return;
// }
// 扣控制中的折扣率判断
// if (data.discountControl == 2) {
// let flagA = Number(data.discountControlUpper) <= Number(data.discountControlLower);
// if (!data.discountControlUpper || !data.discountControlLower) {
// that.$message.error('折扣控制中的折扣不能为空');
// return;
// }
// if (flagA) {
// that.$message.error('折扣控制中的折扣格式有误');
// return;
// }
// }
if (data.discountRate == '') {
showMsg.showmsg('请填写折扣', 'error');
return;
}
if (data.strategyRelationType == 3 && that.cateDataWx.length < 1) {
showMsg.showmsg('请选择商品品类', 'error');
} else if (data.discountRate < 0.01) {
showMsg.showmsg('折扣不能为0哦', 'error');
return;
}
if (data.strategyRelationType == 4 && that.goodsListWx.length < 1) {
showMsg.showmsg('请选择单件商品', 'error');
that.checkListValue(data).then(res => {
if (!res.flag) {
showMsg.showmsg(res.text, 'error');
return;
} else {
// 设置开启状态 1-->true
data.gradeStrategyChannelList.forEach(function(ele, index) {
ele.status = ele.status == true ? 1 : 0;
if (ele.channelType == 1) {
ele.strategyGoodsRelationIdArr = ele.goodsRelationIdArr;
delete ele.goodsRelationIdArr;
}
if (!data.cliqueEnterpriseIds.length) {
showMsg.showmsg('请选择商户', 'error');
return;
if (ele.channelType == '9') {
ele.storeControlId = that.wmuuid;
}
// 扣控制中的折扣率判断
if (data.discountControl == 2) {
let flagA = Number(data.discountControlUpper) <= Number(data.discountControlLower);
if (!data.discountControlUpper || !data.discountControlLower) {
that.$message.error('折扣控制中的折扣不能为空');
return;
});
let saveBool = true;
data.gradeStrategyChannelList.forEach(item => {
if (item.channelType == 1 && item.status == 1) {
// 微信商城
// 适用商品
if (item.channelRelationProType == 2 && this.valueWx.length < 1) {
// 商品品牌
showMsg.showmsg('请选择商品品牌', 'error');
return (saveBool = false);
}
if (flagA) {
that.$message.error('折扣控制中的折扣格式有误');
return;
if (item.channelRelationProType == 3 && this.cateDataWx.length < 1) {
// 商品品类
showMsg.showmsg('请选择商品品类', 'error');
return (saveBool = false);
}
if (item.channelRelationProType == 4 && this.goodsListWx.length < 1) {
// 单件商品
showMsg.showmsg('请选择单件商品', 'error');
return (saveBool = false);
}
if (data.discountRate == '') {
showMsg.showmsg('请填写折扣', 'error');
return;
} else if (data.discountRate < 0.01) {
showMsg.showmsg('折扣不能为0哦', 'error');
return;
}
});
data.discountControlUpper = data.discountControlUpper || '0';
data.discountControlLower = data.discountControlLower || '0';
data.cliqueEnterpriseIds = data.cliqueEnterpriseIds.join(',');
data.gradeStrategyGoodsRelationIds = data.gradeStrategyGoodsRelationIds.join(',');
data.cliqueEnterpriseIds = data.cliqueEnterpriseIds && data.cliqueEnterpriseIds.length && data.cliqueEnterpriseIds.join(',');
data.gradeStrategyGoodsRelationIds = data.gradeStrategyGoodsRelationIds && data.gradeStrategyGoodsRelationIds.length && data.gradeStrategyGoodsRelationIds.join(',');
if (saveBool) {
that.saveInfo(data);
}
}
})
} else {
log('error submit!!');
return false;
......@@ -295,7 +507,7 @@ export default {
saveInfo(form) {
let that = this;
let para = form;
postRequest('/api-admin/save-member-grade-strategy', para)
postJson('/api-admin/save-member-grade-strategy', para)
.then(res => {
// log(res.data.result)
let resData = res.data;
......@@ -361,28 +573,6 @@ export default {
changeRoute(route) {
this.$router.push(route);
},
// 获取商品品牌 1
getGoodsBrand() {
let that = this;
let para = {};
getRequest('/api-mall/list-enterprise-brand', para)
.then(res => {
// log(res.data.result)
let resData = res.data;
if (resData.errorCode == 0) {
let data = resData.result;
that.goodsTreeOptions = data;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
// 选择商品品牌
selectGoodsStore(val) {
this.value5 = val;
......@@ -418,21 +608,45 @@ export default {
// 商品品类
getCateIds(val) {
// 获取数据
// log(val);
if (val.selectCateType == 'wx') {
this.ruleForm.gradeStrategyGoodsRelationIds = [];
this.cateDataWx = [];
this.ruleForm.gradeStrategyChannelList.forEach((item, index) => {
if (item.channelType == '1') {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr = [];
val.cateIdsList.forEach(ele => {
this.ruleForm.gradeStrategyGoodsRelationIds.push(ele);
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr.push(ele);
this.cateDataWx.push(ele);
});
}
});
} else if (val.selectCateType == 'line') {
this.ruleForm.gradeStrategyChannelList.forEach((item, index) => {
if (item.channelType == '3') {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr = [];
val.cateIdsList.forEach(ele => {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr.push(ele);
this.cateDataLine.push(ele);
});
}
});
}
},
selectGoodsCateHide() {
// 调用子组件 商品品类组件的函数
if (this.ruleForm.strategyRelationType == 3) {
if (this.ruleForm.gradeStrategyChannelList.length > 0) {
this.ruleForm.gradeStrategyChannelList.forEach((item, index) => {
if (item.channelType == '1' && item.channelRelationProType == 3) {
// 微信商城
if (this.$refs.selectGoodsCate instanceof Array) {
this.$refs.selectGoodsCate[0].hideDragClick();
} else {
this.$refs.selectGoodsCate.hideDragClick();
}
}
});
}
},
},
components: {
......
......@@ -24,7 +24,10 @@
<!-- 只获取微信的 -->
<template v-for="(item, index) in ruleForm.channelList">
<template v-if="item.channelType == 1">
<div class="form-child margin-20" :key="index">
<el-form-item label="适用微信商城" prop="" :key="index">
<el-switch v-model="item.openStatus"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.openStatus" :key="index">
<el-form-item label="选择商户">
<el-select v-model="item.enterpriseRelationIdArr" placeholder="请选择" multiple size="small">
<el-option v-for="item in mechantOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
......@@ -60,6 +63,35 @@
</el-form-item>
</div>
</template>
<!-- 微盟渠道-->
<template v-if="item.channelType == 9">
<el-form-item label="微盟渠道" prop="" :key="index">
<el-switch v-model="item.openStatus"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.openStatus == true" :key="index">
<el-form-item label="选择店铺">
<vue-gic-store-new :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item>
<el-form-item label="微盟商品" class="padding-0">
<el-select v-model="item.channelRelationProType" placeholder="请选择">
<el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="折扣控制" prop="region" class="input-margin-b">
<div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1">所有折扣商品都适用</el-radio>
</div>
<div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label>折商品都适用</label>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00,最低折扣不能大于最高折扣</span>
</div>
</el-form-item>
</div>
</template>
</template>
<el-form-item label="抵现规则" prop="" class="margin-20">
......@@ -183,6 +215,25 @@ export default {
// value: '4',
// },
],
// 微盟渠道
wMShopOption: [
{
label: '所有店铺', // 就是所有门店
value: '1'
}
],
wMGoodOption: [
{
label: '所有商品',
value: '1'
}
],
// 门店 新
uuid: '', // 新增传空,编辑必传,
options: [0, 1, 2, 3, 4, 5], // 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
isAdd: true,
scencs: 'integral',
wmuuid: '', // 微盟
ruleForm: {
// 积分获取规则
integralStrategyId: '', //策略id
......@@ -198,13 +249,32 @@ export default {
integralGetEffectiveDays: 1, // 获取积分有效天
integralUseStatus: '0', // 积分抵现开启 1是0否
integralUse: { fee: '', integral: '' }, // 积分抵现 {fee:5,integral:5}
perpetualFlag: 1,
channelList: [
{
integralStrategyChannelId: '', //id
enterpriseId: '',
integralStrategyId: '', //策略id
channelType: '1', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
openStatus: 1, //渠道配置是否启用 1启用 0停用
openStatus: true, //渠道配置是否启用 1启用 0停用
channelRelationEnterpriseType: '1', // 策略关联企业 1所有企业 2部分企业
channelRelationStoreType: '1', //策略关联门店类型 1所有门店 2门店分组 3部分门店
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
useProportionalRestriction: '0.0', // 抵现比例限制
strategyGoodsRelationIdArr: [], // 商品
storeRelationIdArr: [], //门店
enterpriseRelationIdArr: [] //商户
},
{
integralStrategyChannelId: '', //id
enterpriseId: '',
integralStrategyId: '', //策略id
channelType: '9', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
openStatus: true, //渠道配置是否启用 1启用 0停用
channelRelationEnterpriseType: '1', // 策略关联企业 1所有企业 2部分企业
channelRelationStoreType: '1', //策略关联门店类型 1所有门店 2门店分组 3部分门店
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
......@@ -275,6 +345,59 @@ export default {
goBack() {
this.$router.go(-1);
},
async checkListValue(data) {
let obj = {
flag: true,
text: ''
};
if (!!data.channelList.length) {
for (let i = 0; i < data.channelList.length; i++) {
if (!!data.channelList[i].openStatus) {
if (!!data.channelList[i].openStatus && data.channelList[i].integralUseDiscountControl == 2) {
if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) {
obj.flag = false;
obj.text = '请填写折扣';
}
if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) {
obj.flag = false;
obj.text = '折扣格式有误';
}
}
if (data.channelList[i].channelType == 1 && !data.channelList[i].enterpriseRelationIdArr.length) {
obj.flag = false;
obj.text = '请选择商户';
}
if (data.channelList[i].channelType == 3) {
const storeGroupDom = this.$refs.storeGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.storeGroup[0].isStoreSave();
} else {
flag = await this.$refs.storeGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
if (data.channelList[i].channelType == 9) {
const storeGroupDom = this.$refs.wmstoreGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.wmstoreGroup[0].isStoreSave();
} else {
flag = await this.$refs.wmstoreGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
}
}
}
return obj;
},
// 保存
submitForm(formName) {
let that = this;
......@@ -287,22 +410,22 @@ export default {
showMsg.showmsg('请填写策略名称', 'error');
return;
}
if (!data.channelList[0].enterpriseRelationIdArr.length) {
showMsg.showmsg('请选择商户', 'error');
return;
}
if (data.channelList[0].integralUseDiscountControl == 2) {
let flagA = Number(data.channelList[0].integralUseDiscountControlLower) >= Number(data.channelList[0].integralUseDiscountControlUpper);
if (!data.channelList[0].integralUseDiscountControlLower || !data.channelList[0].integralUseDiscountControlUpper) {
that.$message.error('折扣控制中的折扣不能为空');
return;
}
if (flagA) {
that.$message.error('折扣控制中的折扣格式有误');
return;
}
}
// if (!data.channelList[0].enterpriseRelationIdArr.length) {
// showMsg.showmsg('请选择商户', 'error');
// return;
// }
// if (data.channelList[0].integralUseDiscountControl == 2) {
// let flagA = Number(data.channelList[0].integralUseDiscountControlLower) >= Number(data.channelList[0].integralUseDiscountControlUpper);
// if (!data.channelList[0].integralUseDiscountControlLower || !data.channelList[0].integralUseDiscountControlUpper) {
// that.$message.error('折扣控制中的折扣不能为空');
// return;
// }
// if (flagA) {
// that.$message.error('折扣控制中的折扣格式有误');
// return;
// }
// }
let flag = !data.integralUse.fee || String(data.integralUse.integral) == '';
if (data.integralUseStatus == 1 && flag) {
that.$message.error('请填写抵现规则');
......@@ -319,18 +442,43 @@ export default {
}
}
if (!data.channelList[0].useProportionalRestriction) {
showMsg.showmsg('请填写比例限制', 'error');
// if (!data.channelList[0].useProportionalRestriction) {
// showMsg.showmsg('请填写比例限制', 'error');
// return;
// } else {
// if (data.channelList[0].useProportionalRestriction > 100) {
// showMsg.showmsg('比例限制不能大于100', 'error');
// return;
// }
// }
that.checkListValue(data).then(res => {
if (!res.flag) {
showMsg.showmsg(res.text, 'error');
return;
} else {
if (data.channelList[0].useProportionalRestriction > 100) {
showMsg.showmsg('比例限制不能大于100', 'error');
return;
// 设置开启状态 1-->true
data.channelList.forEach(function(ele, index) {
ele.openStatus = ele.openStatus == true ? 1 : 0;
if (ele.channelType == 1) {
ele.strategyGoodsRelationIdArr = ele.goodsRelationIdArr;
delete ele.goodsRelationIdArr;
}
if (!ele.enterpriseRelationIdArr || !ele.enterpriseRelationIdArr.length) {
ele.enterpriseRelationIdArr = [];
}
if (!ele.storeRelationIdArr || !ele.storeRelationIdArr.length) {
ele.storeRelationIdArr = [];
}
if (!ele.strategyGoodsRelationIdArr || !ele.strategyGoodsRelationIdArr.length) {
ele.strategyGoodsRelationIdArr = [];
}
if (ele.channelType == '9') {
ele.storeControlId = that.wmuuid;
}
});
let saveBool = true;
data.channelList.forEach(item => {
if (item.channelType == 1) {
if (item.channelType == 1 && item.openStatus == 1) {
// 微信商城
// 适用商品
if (item.channelRelationProType == 2 && this.valueWx.length < 1) {
......@@ -360,15 +508,17 @@ export default {
// data.integralUse.fee = data.integralUse.fee;
// data.integralUse.integral = data.integralUse.integral;
data.integralUse = JSON.stringify(data.integralUse);
if (data.channelList) {
data.channelList.forEach(function(ele, index) {
ele.openStatus = 1;
});
}
// if (data.channelList) {
// data.channelList.forEach(function(ele, index) {
// ele.openStatus = 1;
// });
// }
if (saveBool) {
that.saveForm(data);
}
}
})
} else {
log('error submit!!');
return false;
......@@ -794,6 +944,7 @@ export default {
width: 100%;
padding: 15px 20px 10px 0px;
background: #f5f6f9;
margin: 22px 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
......
......@@ -90,9 +90,7 @@
</el-form-item>
<div class="form-child margin-20" v-if="item.openStatus == true" :key="index">
<el-form-item label="选择店铺">
<el-select v-model="item.channelRelationStoreType" placeholder="请选择">
<el-option v-for="item in wMShopOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<vue-gic-store-new :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item>
<el-form-item label="微盟商品" class="padding-0">
<el-select v-model="item.channelRelationProType" placeholder="请选择">
......@@ -353,6 +351,7 @@ export default {
integralGetEffectiveDays: 1, // 获取积分有效天
integralUseStatus: '0', // 积分抵现开启 1是0否
integralUse: null, // 积分抵现 {fee:5,integral:5}
perpetualFlag: 1,
channelList: [
{
integralStrategyChannelId: '', //id
......@@ -448,6 +447,7 @@ export default {
options: [0, 1, 2, 3, 4, 5], // 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
isAdd: true,
scencs: 'integral',
wmuuid: '', // 微盟
/* 人群筛选器 */
dialogVisiblePeople: false,
......@@ -523,6 +523,19 @@ export default {
obj.text = '请选择门店';
}
}
if (data.channelList[i].channelType == 9) {
const storeGroupDom = this.$refs.wmstoreGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.wmstoreGroup[0].isStoreSave();
} else {
flag = await this.$refs.wmstoreGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
}
}
}
......@@ -595,6 +608,9 @@ export default {
ele.channelStoreType = '-1';
ele.storeControlId = that.uuid;
}
if (ele.channelType == '9') {
ele.storeControlId = that.wmuuid;
}
});
data.integralGet.fee = parseInt(data.integralGet.fee * 10);
data.integralGet.integral = parseInt(data.integralGet.integral * 10);
......@@ -1092,6 +1108,7 @@ export default {
.form-child {
padding: 15px 20px 10px 0px;
background: #f5f6f9;
margin: 22px 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
......
......@@ -13,44 +13,77 @@
<el-form-item label="适用条件" class="padding-0">
<div class="title-tip">该设置只对微信商城中的积分抵现起作用。</div>
</el-form-item>
<div class="form-child margin-20">
<template v-for="(item, index) in ruleForm.gradeStrategyChannelList">
<template v-if="item.channelType == 1">
<el-form-item label="适用微信商城" prop="" :key="index">
<el-switch v-model="item.status"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.status" :key="index">
<el-form-item label="选择商户">
<el-select v-model="ruleForm.cliqueEnterpriseIds" placeholder="请选择" multiple>
<el-option v-for="item in mechantOption" :key="item.enterpriseId" :label="item.brandName" :value="item.enterpriseId"> </el-option>
<el-select v-model="item.cliqueEnterpriseIdArr" placeholder="请选择" multiple size="small">
<el-option v-for="item in mechantOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="适用商品" class="padding-0">
<div>
<el-select class="fl" style="margin-right: 10px;" v-model="ruleForm.strategyRelationType" placeholder="请选择" @change="changeGood($event)">
<el-select class="fl" style="margin-right: 10px;" v-model="item.channelRelationProType" placeholder="请选择">
<el-option v-for="item in applyGoods" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<!-- 二级 -->
<!-- 商品品牌 -->
<el-select class="fl" @change="selectGoodsStore" v-if="ruleForm.strategyRelationType == 2" v-model="value5" multiple placeholder="请选择">
<el-option v-for="item in goodsTreeOptions" :key="item.brandId" :label="item.brandName" :value="item.brandId"> </el-option>
<el-select size="small" class="fl" @change="selectGoodsStoreWx" v-if="item.channelRelationProType == 2" v-model="valueWx" multiple placeholder="请选择">
<el-option v-for="item in goodsTreeOptionsWx" :key="item.brandId" :label="item.brandName" :value="item.brandId"> </el-option>
</el-select>
<!-- 商品品类 -->
<div class="fl goods-cate" v-if="ruleForm.strategyRelationType == 3">
<div v-if="item.channelRelationProType == 3" class="fl goods-cate">
<goodsCate ref="selectGoodsCate" :selectCateType="selectCateTypeWx" :selectCateData="selectCateDataWx" @getCateIds="getCateIds"></goodsCate>
</div>
<el-button style="width:217px" class="fl" v-if="ruleForm.strategyRelationType == 4" @click.stop.prevent="showGoodsDialog('wx')">已选{{ goodsListWx.length }}件商品</el-button>
</div>
<el-button style="width:202px" class="fl" v-if="item.channelRelationProType == 4" @click="showGoodsDialog('wx')">已选{{ goodsListWx.length }}件商品</el-button>
</el-form-item>
<el-form-item label="折扣控制" prop="region">
<div class="radio-cell">
<el-radio v-model="ruleForm.discountControl" label="1">所有折扣商品都适用</el-radio>
<el-radio v-model="item.integralUseDiscountControl" label="1">所有折扣商品都适用</el-radio>
</div>
<div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label>折商品都适用</label>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00,最低折扣不能大于最高折扣</span>
</div>
</el-form-item>
</div>
</template>
<!-- 微盟渠道-->
<template v-if="item.channelType == 9">
<el-form-item label="微盟渠道" prop="" :key="index">
<el-switch v-model="item.status"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.status == true" :key="index">
<el-form-item label="选择店铺">
<vue-gic-store-new :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item>
<el-form-item label="微盟商品" class="padding-0">
<el-select v-model="item.channelRelationProType" placeholder="请选择">
<el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="折扣控制" prop="region" class="input-margin-b">
<div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1">所有折扣商品都适用</el-radio>
</div>
<div class="radio-cell margin-20">
<el-radio v-model="ruleForm.discountControl" label="2">折扣</el-radio>
<!-- <el-input @change="formatInputChange($event)" v-model="ruleForm.discountControlLower"></el-input> -->
<el-input-number v-model="ruleForm.discountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label></label>
<!-- <el-input @change="formatInputChange($event)" v-model="ruleForm.discountControlUpper"></el-input> -->
<el-input-number v-model="ruleForm.discountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label>折商品都适用</label>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00,最低折扣不能大于最高折扣</span>
</div>
</el-form-item>
</div>
</template>
</template>
<el-form-item label="折扣" prop="discountRate" class="margin-20">
<el-input @focus="inputFocus('discountRate')" @change="formatInputChange($event)" v-model="ruleForm.discountRate"></el-input>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00</span>
......@@ -82,7 +115,7 @@ import goodsCate from 'components/memberShip/goodsCate';
import strLength from '@/common/js/strlen';
import showMsg from '@/common/js/showmsg';
import errMsg from '@/common/js/error';
import { getRequest, postRequest } from '@/api/api';
import { getRequest, postRequest, postJson } from '@/api/api';
import { log } from '@/utils/index.js';
export default {
name: 'editGroupCate',
......@@ -158,6 +191,30 @@ export default {
value: '4'
}
],
// 微盟渠道
wMShopOption: [
{
label: '所有店铺', // 就是所有门店
value: '1'
}
],
wMGoodOption: [
{
label: '所有商品',
value: '1'
}
],
// 商品品牌
goodsTreeOptionsWx: [],
valueWx: [],
goodsTreeOptionsLine: [],
valueLine: [],
// 门店 新
uuid: '', // 新增传空,编辑必传,
options: [0, 1, 2, 3, 4, 5], // 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
isAdd: true,
scencs: 'integral',
wmuuid: '', // 微盟
ruleForm: {
// 积分获取规则
gradeStrategyId: '', //策略id
......@@ -173,7 +230,34 @@ export default {
cliqueEnterpriseIds: [], // 策略关联商户信息
relationCount: 0,
enterpriseMS: null,
goodsCategoryList: []
goodsCategoryList: [],
perpetualFlag: 1,
gradeStrategyChannelList: [
{
gradeStrategyChannelId: '', //id
channelType: '1', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
status: true, //渠道配置是否启用 1启用 0停用
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
strategyGoodsRelationIdArr: [], // 商品
cliqueEnterpriseIdArr: [],
},
{
gradeStrategyChannelId: '', //id
channelType: '9', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
status: true, //渠道配置是否启用 1启用 0停用
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
strategyGoodsRelationIdArr: [], // 商品
cliqueEnterpriseIdArr: [],
}
]
},
// 商品品类
......@@ -211,6 +295,93 @@ export default {
goBack() {
this.$router.go(-1);
},
async checkListValue(data) {
let obj = {
flag: true,
text: ''
};
if (!!data.gradeStrategyChannelList.length) {
for (let i = 0; i < data.gradeStrategyChannelList.length; i++) {
if (!!data.gradeStrategyChannelList[i].status) {
if (!!data.gradeStrategyChannelList[i].status && data.gradeStrategyChannelList[i].integralUseDiscountControl == 2) {
if (!data.gradeStrategyChannelList[i].integralUseDiscountControlUpper || !data.gradeStrategyChannelList[i].integralUseDiscountControlLower) {
obj.flag = false;
obj.text = '请填写折扣';
}
if (parseInt(data.gradeStrategyChannelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.gradeStrategyChannelList[i].integralUseDiscountControlLower) > 10 || Number(data.gradeStrategyChannelList[i].integralUseDiscountControlUpper) <= Number(data.gradeStrategyChannelList[i].integralUseDiscountControlLower)) {
obj.flag = false;
obj.text = '折扣格式有误';
}
}
if (data.gradeStrategyChannelList[i].channelType == 1 && !data.gradeStrategyChannelList[i].cliqueEnterpriseIdArr.length) {
obj.flag = false;
obj.text = '请选择商户';
}
if (data.gradeStrategyChannelList[i].channelType == 3) {
const storeGroupDom = this.$refs.storeGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.storeGroup[0].isStoreSave();
} else {
flag = await this.$refs.storeGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
if (data.gradeStrategyChannelList[i].channelType == 9) {
const storeGroupDom = this.$refs.wmstoreGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.wmstoreGroup[0].isStoreSave();
} else {
flag = await this.$refs.wmstoreGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
}
}
}
return obj;
},
// 获取商品品牌 1
getGoodsBrand() {
let that = this;
let para = {};
getRequest('/api-mall/list-enterprise-brand', para)
.then(res => {
// log(res.data.result)
let resData = res.data;
if (resData.errorCode == 0) {
let data = resData.result;
that.goodsTreeOptionsWx = data;
that.goodsTreeOptionsLine = data;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
// 选择商品品牌 微信商城
selectGoodsStoreWx(val) {
this.valueWx = val;
this.ruleForm.gradeStrategyChannelList.forEach((item, index) => {
if (item.channelType == '1') {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr = [];
val.forEach(ele => {
this.ruleForm.gradeStrategyChannelList[index].strategyGoodsRelationIdArr.push(ele);
});
}
});
},
// 保存
submitForm(formName) {
let that = this;
......@@ -221,22 +392,22 @@ export default {
showMsg.showmsg('请填写策略名称', 'error');
return;
}
if (data.strategyRelationType == 2 && that.value5.length < 1) {
showMsg.showmsg('请选择商品品牌', 'error');
return;
}
if (data.strategyRelationType == 3 && that.cateDataWx.length < 1) {
showMsg.showmsg('请选择商品品类', 'error');
return;
}
if (data.strategyRelationType == 4 && that.goodsListWx.length < 1) {
showMsg.showmsg('请选择单件商品', 'error');
return;
}
if (!data.cliqueEnterpriseIds.length) {
showMsg.showmsg('请选择商户', 'error');
return;
}
// if (data.strategyRelationType == 2 && that.value5.length < 1) {
// showMsg.showmsg('请选择商品品牌', 'error');
// return;
// }
// if (data.strategyRelationType == 3 && that.cateDataWx.length < 1) {
// showMsg.showmsg('请选择商品品类', 'error');
// return;
// }
// if (data.strategyRelationType == 4 && that.goodsListWx.length < 1) {
// showMsg.showmsg('请选择单件商品', 'error');
// return;
// }
// if (!data.cliqueEnterpriseIds.length) {
// showMsg.showmsg('请选择商户', 'error');
// return;
// }
// if (data.discountControl == 2&&(!data.discountControlLower||!data.discountControlUpper)) {
// showMsg.showmsg('请选择折扣控制中的折扣率','error')
......@@ -245,17 +416,17 @@ export default {
// 扣控制中的折扣率判断
if (data.discountControl == 2) {
let flagA = Number(data.discountControlUpper) <= Number(data.discountControlLower);
if (!data.discountControlUpper || !data.discountControlLower) {
that.$message.error('折扣控制中的折扣率不能为空');
return;
}
if (flagA) {
that.$message.error('折扣控制中的折扣率格式有误');
return;
}
}
// if (data.discountControl == 2) {
// let flagA = Number(data.discountControlUpper) <= Number(data.discountControlLower);
// if (!data.discountControlUpper || !data.discountControlLower) {
// that.$message.error('折扣控制中的折扣率不能为空');
// return;
// }
// if (flagA) {
// that.$message.error('折扣控制中的折扣率格式有误');
// return;
// }
// }
if (data.discountRate == '') {
showMsg.showmsg('请填写折扣率', 'error');
return;
......@@ -263,11 +434,53 @@ export default {
showMsg.showmsg('折扣率不能为0哦', 'error');
return;
}
that.checkListValue(data).then(res => {
if (!res.flag) {
showMsg.showmsg(res.text, 'error');
return;
} else {
// 设置开启状态 1-->true
data.gradeStrategyChannelList.forEach(function(ele, index) {
ele.status = ele.status == true ? 1 : 0;
if (ele.channelType == 1) {
ele.strategyGoodsRelationIdArr = ele.goodsRelationIdArr;
delete ele.goodsRelationIdArr;
}
if (ele.channelType == '9') {
ele.storeControlId = that.wmuuid;
}
});
let saveBool = true;
data.gradeStrategyChannelList.forEach(item => {
if (item.channelType == 1 && item.status == 1) {
// 微信商城
// 适用商品
if (item.channelRelationProType == 2 && this.valueWx.length < 1) {
// 商品品牌
showMsg.showmsg('请选择商品品牌', 'error');
return (saveBool = false);
}
if (item.channelRelationProType == 3 && this.cateDataWx.length < 1) {
// 商品品类
showMsg.showmsg('请选择商品品类', 'error');
return (saveBool = false);
}
if (item.channelRelationProType == 4 && this.goodsListWx.length < 1) {
// 单件商品
showMsg.showmsg('请选择单件商品', 'error');
return (saveBool = false);
}
}
});
data.discountControlUpper = data.discountControlUpper || '0';
data.discountControlLower = data.discountControlLower || '0';
data.cliqueEnterpriseIds = data.cliqueEnterpriseIds.join(',');
data.gradeStrategyGoodsRelationIds = data.gradeStrategyGoodsRelationIds.join(',');
data.cliqueEnterpriseIds = data.cliqueEnterpriseIds && data.cliqueEnterpriseIds.length && data.cliqueEnterpriseIds.join(',');
data.gradeStrategyGoodsRelationIds = data.gradeStrategyGoodsRelationIds && data.gradeStrategyGoodsRelationIds.length && data.gradeStrategyGoodsRelationIds.join(',');
if (saveBool) {
that.saveInfo(data);
}
}
})
} else {
log('error submit!!');
return false;
......@@ -279,7 +492,7 @@ export default {
saveInfo(form) {
let that = this;
let para = form;
postRequest('/api-admin/save-member-grade-strategy', para)
postJson('/api-admin/save-member-grade-strategy', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 0) {
......@@ -416,27 +629,36 @@ export default {
} else {
data.cliqueEnterpriseIds = [];
}
if (!!data.gradeStrategyGoodsRelationIds) {
data.gradeStrategyGoodsRelationIds = that.bouncer(data.gradeStrategyGoodsRelationIds.split(','));
// 所有商品
if (data.strategyRelationType == 1) {
data.gradeStrategyGoodsRelationIds = [];
if (data.gradeStrategyChannelList) {
data.gradeStrategyChannelList.forEach(item => {
if (item.channelType == '1') {
// 微信商城
if (item.channelRelationProType == 3) {
// 商品品类
if (item.goodsCategoryList) {
item.goodsCategoryList.forEach(item => {
that.selectCateDataWx.push(item);
});
}
}
if (item.channelRelationProType == 4) {
// 单件商品
if (item.strategyGoodsRelationIdArr) {
item.strategyGoodsRelationIdArr.forEach(item => {
that.goodsListWx.push(item);
});
}
}
if (item.channelRelationProType == 2) {
// 商品品牌
if (data.strategyRelationType == 2) {
that.value5 = data.gradeStrategyGoodsRelationIds;
if (item.strategyGoodsRelationIdArr) {
item.strategyGoodsRelationIdArr.forEach(item => {
that.valueWx.push(item);
});
}
// 商品品类
if (data.strategyRelationType == 3) {
that.selectCateDataWx = data.goodsCategoryList;
that.cateDataWx = data.gradeStrategyGoodsRelationIds;
}
// 单件商品
if (data.strategyRelationType == 4) {
that.goodsListWx = data.gradeStrategyGoodsRelationIds;
}
} else {
data.gradeStrategyGoodsRelationIds = [];
});
}
data.discountRate = String(data.discountRate);
data.calculationMethod = String(data.calculationMethod);
......@@ -444,7 +666,7 @@ export default {
data.discountControlUpper = String(data.discountControlUpper);
data.discountControlLower = String(data.discountControlLower);
data.strategyRelationType = String(data.strategyRelationType);
that.ruleForm = data;
that.ruleForm = that.formatData(data);
that.ruleForm.goodsCategoryList = [];
// 字数控制
that.cateNameLength = strLength.getZhLen(that.ruleForm.strategyName);
......@@ -464,6 +686,41 @@ export default {
});
},
formatData(item) {
item.gradeStrategyChannelList.forEach((ele, index) => {
ele.status = ele.status == 0 ? false : true;
ele.channelType = String(ele.channelType);
ele.channelStoreType = String(ele.channelStoreType);
ele.channelRelationProType = String(ele.channelRelationProType);
ele.integralUseDiscountControl = String(ele.integralUseDiscountControl);
ele.integralUseDiscountControlUpper = String(ele.integralUseDiscountControlUpper);
ele.integralUseDiscountControlLower = String(ele.integralUseDiscountControlLower);
if (!ele.strategyGoodsRelationIdArr || !ele.strategyGoodsRelationIdArr.length) {
ele.strategyGoodsRelationIdArr = [];
}
if (!ele.cliqueEnterpriseIdArr || !ele.cliqueEnterpriseIdArr.length) {
ele.cliqueEnterpriseIdArr = [];
}
if (ele.channelType == 9) {
this.wmuuid = ele.storeControlId;
this.isAdd = false;
}
});
let bool = item.gradeStrategyChannelList.some(item => item.channelType == 9);
!bool && item.gradeStrategyChannelList.push({
gradeStrategyChannelId: '', //id
channelType: '9', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
status: true, //渠道配置是否启用 1启用 0停用
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
strategyGoodsRelationIdArr: [], // 商品
cliqueEnterpriseIdArr: [] //商户
})
return item;
},
changeGood(e) {
// 切换适用商品
if (this.ruleForm.strategyRelationType == '1') {
......@@ -471,31 +728,6 @@ export default {
}
},
// 获取商品品牌 1
getGoodsBrand() {
let that = this;
let para = {};
getRequest('/api-mall/list-enterprise-brand', para)
.then(res => {
// log(res.data.result)
let resData = res.data;
if (resData.errorCode == 0) {
let data = resData.result;
that.goodsTreeOptions = data;
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
// log(error);
that.$message.error({
duration: 1000,
message: error.message
});
});
},
// 选择商品品牌
selectGoodsStore(val) {
this.value5 = val;
......@@ -545,10 +777,19 @@ export default {
},
selectGoodsCateHide() {
// 调用子组件 商品品类组件的函数
if (this.ruleForm.strategyRelationType == 3) {
if (this.ruleForm.gradeStrategyChannelList.length > 0) {
this.ruleForm.gradeStrategyChannelList.forEach((item, index) => {
if (item.channelType == '1' && item.channelRelationProType == 3) {
// 微信商城
if (this.$refs.selectGoodsCate instanceof Array) {
this.$refs.selectGoodsCate[0].hideDragClick();
} else {
this.$refs.selectGoodsCate.hideDragClick();
}
}
});
}
},
},
components: {
topNav,
......
......@@ -26,7 +26,10 @@
<!-- 只获取微信的 -->
<template v-for="(item, index) in ruleForm.channelList">
<template v-if="item.channelType == 1">
<div class="form-child margin-20" :key="index">
<el-form-item label="适用微信商城" prop="" :key="index">
<el-switch v-model="item.openStatus" active-text="启用" inactive-text="停用"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.openStatus" :key="index">
<el-form-item label="选择商户">
<el-select v-model="item.enterpriseRelationIdArr" placeholder="请选择" multiple size="small">
<el-option v-for="item in mechantOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
......@@ -69,6 +72,35 @@
</el-form-item>
</div>
</template>
<!-- 微盟渠道-->
<template v-if="item.channelType == 9">
<el-form-item label="微盟渠道" prop="" :key="index">
<el-switch v-model="item.openStatus"> </el-switch>
</el-form-item>
<div class="form-child margin-20" v-if="item.openStatus" :key="index">
<el-form-item label="选择店铺">
<vue-gic-store-new :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item>
<el-form-item label="微盟商品" class="padding-0">
<el-select v-model="item.channelRelationProType" placeholder="请选择">
<el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="折扣控制" prop="region" class="input-margin-b">
<div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1">所有折扣商品都适用</el-radio>
</div>
<div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="0.01"></el-input-number>
<label>折商品都适用</label>
<span style="font-size: 13px;color: #828282;line-height: 1;padding-left: 10px;">注意:折扣范围0.01-10.00,最低折扣不能大于最高折扣</span>
</div>
</el-form-item>
</div>
</template>
</template>
<el-form-item label="抵现规则" prop="" class="margin-20">
......@@ -196,6 +228,25 @@ export default {
// value: '4',
// },
],
// 微盟渠道
wMShopOption: [
{
label: '所有店铺', // 就是所有门店
value: '1'
}
],
wMGoodOption: [
{
label: '所有商品',
value: '1'
}
],
// 门店 新
uuid: '', // 新增传空,编辑必传,
options: [0, 1, 2, 3, 4, 5], // 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
isAdd: true,
scencs: 'integral',
wmuuid: '', // 微盟
ruleForm: {
// 积分获取规则
integralStrategyId: 'ff80808163a7a09b0163b01171e202db', //策略id
......@@ -212,13 +263,14 @@ export default {
integralGetEffectiveDays: 1, // 获取积分有效天
integralUseStatus: '0', // 积分抵现开启 1是0否
integralUse: { fee: '', integral: '' }, // 积分抵现 {fee:5,integral:5}
perpetualFlag: 1,
channelList: [
{
integralStrategyChannelId: 'ff808081649321d20164a1fafbdd01df', //id
enterpriseId: 'ff8080815dacd3a2015dacd3ef5c0000',
integralStrategyId: 'ff80808163a7a09b0163b01171e202db', //策略id
channelType: '1', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
openStatus: 1, //渠道配置是否启用 1启用 0停用
openStatus: true, //渠道配置是否启用 1启用 0停用
channelRelationEnterpriseType: '1', // 策略关联企业 1所有企业 2部分企业
channelRelationStoreType: '1', //策略关联门店类型 1所有门店 2门店分组 3部分门店
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
......@@ -300,6 +352,46 @@ export default {
goBack() {
this.$router.go(-1);
},
async checkListValue(data) {
let obj = {
flag: true,
text: ''
};
if (!!data.channelList.length) {
for (let i = 0; i < data.channelList.length; i++) {
if (!!data.channelList[i].openStatus) {
if (data.channelList[i].integralUseDiscountControl == 2) {
if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) {
obj.flag = false;
obj.text = '请填写折扣';
}
if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) {
obj.flag = false;
obj.text = '折扣格式有误';
}
}
if (data.channelList[i].channelType == 1 && !data.channelList[i].enterpriseRelationIdArr.length) {
obj.flag = false;
obj.text = '请选择商户';
}
if (data.channelList[i].channelType == 9) {
const storeGroupDom = this.$refs.wmstoreGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.wmstoreGroup[0].isStoreSave();
} else {
flag = await this.$refs.wmstoreGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
}
}
}
return obj;
},
// 保存
submitForm(formName) {
let that = this;
......@@ -313,21 +405,21 @@ export default {
showMsg.showmsg('请填写策略名称', 'error');
return;
}
if (!data.channelList[0].enterpriseRelationIdArr.length) {
showMsg.showmsg('请选择商户', 'error');
return;
}
if (data.channelList[0].integralUseDiscountControl == 2) {
let flagA = Number(data.channelList[0].integralUseDiscountControlLower) >= Number(data.channelList[0].integralUseDiscountControlUpper);
if (!data.channelList[0].integralUseDiscountControlLower || !data.channelList[0].integralUseDiscountControlUpper) {
that.$message.error('折扣控制中的折扣不能为空');
return;
}
if (flagA) {
that.$message.error('折扣控制中的折扣格式有误');
return;
}
}
// if (!data.channelList[0].enterpriseRelationIdArr.length) {
// showMsg.showmsg('请选择商户', 'error');
// return;
// }
// if (data.channelList[0].integralUseDiscountControl == 2) {
// let flagA = Number(data.channelList[0].integralUseDiscountControlLower) >= Number(data.channelList[0].integralUseDiscountControlUpper);
// if (!data.channelList[0].integralUseDiscountControlLower || !data.channelList[0].integralUseDiscountControlUpper) {
// that.$message.error('折扣控制中的折扣不能为空');
// return;
// }
// if (flagA) {
// that.$message.error('折扣控制中的折扣格式有误');
// return;
// }
// }
let flag = !data.integralUse.fee || String(data.integralUse.integral) == '';
if (data.integralUseStatus == 1 && flag) {
that.$message.error('请填写抵现规则');
......@@ -344,19 +436,43 @@ export default {
}
}
if (!data.channelList[0].useProportionalRestriction) {
showMsg.showmsg('请填写比例限制', 'error');
// if (!data.channelList[0].useProportionalRestriction) {
// showMsg.showmsg('请填写比例限制', 'error');
// return;
// } else {
// if (data.channelList[0].useProportionalRestriction > 100) {
// showMsg.showmsg('比例限制不能大于100', 'error');
// return;
// }
// }
that.checkListValue(data).then(res => {
if (!res.flag) {
showMsg.showmsg(res.text, 'error');
return;
} else {
if (data.channelList[0].useProportionalRestriction > 100) {
showMsg.showmsg('比例限制不能大于100', 'error');
return;
// 设置开启状态 1-->true
data.channelList.forEach(function(ele, index) {
ele.openStatus = ele.openStatus == true ? 1 : 0;
if (ele.channelType == 1) {
ele.strategyGoodsRelationIdArr = ele.goodsRelationIdArr;
delete ele.goodsRelationIdArr;
}
if (!ele.enterpriseRelationIdArr || !ele.enterpriseRelationIdArr.length) {
ele.enterpriseRelationIdArr = [];
}
if (!ele.storeRelationIdArr || !ele.storeRelationIdArr.length) {
ele.storeRelationIdArr = [];
}
if (!ele.strategyGoodsRelationIdArr || !ele.strategyGoodsRelationIdArr.length) {
ele.strategyGoodsRelationIdArr = [];
}
if (ele.channelType == '9') {
ele.storeControlId = that.wmuuid;
}
});
let saveBool = true;
data.channelList.forEach(item => {
if (item.channelType == 1) {
if (item.channelType == 1 && item.openStatus == 1) {
// 微信商城
// 适用商品
if (item.channelRelationProType == 2 && this.valueWx.length < 1) {
......@@ -389,14 +505,17 @@ export default {
// data.integralUse.integral = data.integralUse.integral;
data.integralUse = JSON.stringify(data.integralUse);
if (data.channelList) {
data.channelList.forEach(function(ele, index) {
ele.openStatus = 1;
});
}
// if (data.channelList) {
// data.channelList.forEach(function(ele, index) {
// ele.openStatus = 1;
// });
// }
data.perpetualFlag = 1;
if (saveBool) {
that.saveForm(data);
}
}
})
} else {
log('error submit!!');
return false;
......@@ -596,7 +715,8 @@ export default {
item.integralUseStatus = String(item.integralUseStatus);
item.useCrowd = String(item.useCrowd);
item.integralGet = JSON.parse(item.integralGet);
item.channelList.forEach(function(ele, index) {
item.channelList.forEach((ele, index) => {
ele.openStatus = ele.openStatus == 0 ? false : true;
ele.channelType = String(ele.channelType);
ele.channelRelationStoreType = String(ele.channelRelationStoreType);
ele.channelStoreType = String(ele.channelStoreType);
......@@ -614,7 +734,30 @@ export default {
if (!ele.enterpriseRelationIdArr || !ele.enterpriseRelationIdArr.length) {
ele.enterpriseRelationIdArr = [];
}
if (ele.channelType == 9) {
this.wmuuid = ele.storeControlId;
this.isAdd = false;
}
});
let bool = item.channelList.some(item => item.channelType == 9);
!bool && item.channelList.push({
integralStrategyChannelId: '', //id
enterpriseId: '',
integralStrategyId: '', //策略id
channelType: '9', //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫
openStatus: true, //渠道配置是否启用 1启用 0停用
channelRelationEnterpriseType: '1', // 策略关联企业 1所有企业 2部分企业
channelRelationStoreType: '1', //策略关联门店类型 1所有门店 2门店分组 3部分门店
channelStoreType: '-1', // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: '1', // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: '1', // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: '0.0',
integralUseDiscountControlLower: '0.0',
useProportionalRestriction: '0.0', // 抵现比例限制
strategyGoodsRelationIdArr: [], // 商品
storeRelationIdArr: [], //门店
enterpriseRelationIdArr: [] //商户
})
return item;
},
......
......@@ -146,9 +146,7 @@
</el-form-item>
<div class="form-child margin-20" v-if="item.openStatus == true" :key="index">
<el-form-item label="选择店铺">
<el-select v-model="item.channelRelationStoreType" placeholder="请选择">
<el-option v-for="item in wMShopOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<vue-gic-store-new :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item>
<el-form-item label="微盟商品" class="padding-0">
<el-select v-model="item.channelRelationProType" placeholder="请选择">
......@@ -407,6 +405,7 @@ export default {
integralGetEffectiveDays: 1, // 获取积分有效天
integralUseStatus: 0, // 积分抵现开启 1是0否
integralUse: null, // 积分抵现 {fee:5,integral:5}
perpetualFlag: 1,
channelList: []
},
cateOptions: [
......@@ -437,6 +436,7 @@ export default {
options: [0, 1, 2, 3, 4, 5], // 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
isAdd: true,
scencs: 'integral',
wmuuid: '', // 微盟
// 太平鸟标识
tpnEditBool: false,
tpnEnterpriseId: 'ff808081671d3ceb01672adebf4e6149'
......@@ -515,6 +515,19 @@ export default {
obj.text = '请选择门店';
}
}
if (data.channelList[i].channelType == 9) {
const storeGroupDom = this.$refs.wmstoreGroup;
let flag = null;
if (storeGroupDom instanceof Array) {
flag = await this.$refs.wmstoreGroup[0].isStoreSave();
} else {
flag = await this.$refs.wmstoreGroup.isStoreSave();
}
if (!flag) {
obj.flag = false;
obj.text = '请选择门店';
}
}
}
}
}
......@@ -585,6 +598,9 @@ export default {
ele.channelStoreType = '-1';
ele.storeControlId = that.uuid;
}
if (ele.channelType == '9') {
ele.storeControlId = that.wmuuid;
}
});
data.integralGet.fee = parseInt(data.integralGet.fee * 10);
data.integralGet.integral = parseInt(data.integralGet.integral * 10);
......@@ -929,6 +945,10 @@ export default {
this.uuid = ele.storeControlId;
this.isAdd = false;
}
if (ele.channelType == 9) {
this.wmuuid = ele.storeControlId;
this.isAdd = false;
}
// 判断是否有微盟
channelType.push(ele.channelType);
});
......@@ -1229,6 +1249,7 @@ export default {
.form-child {
padding: 15px 20px 10px 0px;
background: #f5f6f9;
margin: 22px 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
......
......@@ -101,14 +101,14 @@
<el-table-column prop="" label="适用商品">
<template slot-scope="scope">
<span v-for="(item, index) in scope.row.channelList" :key="index">
{{ item.channelRelationProType == 1 && item.integralUseDiscountControl == 1 ? '所有商品' : '自定义配置' }}
<span v-if="item.channelType == 1">{{item.channelRelationProType == 1&&item.integralUseDiscountControl==1? "所有商品" : "自定义配置" }}</span>
</span>
</template>
</el-table-column>
<el-table-column prop="" label="折扣控制">
<template slot-scope="scope">
<span v-for="(item, index) in scope.row.channelList" :key="index">
{{ item.integralUseDiscountControl == 1 ? '不限制' : item.integralUseDiscountControlLower + ':' + item.integralUseDiscountControlUpper }}
<span v-if="item.channelType == 1">{{item.integralUseDiscountControl==1? "不限制" : (item.integralUseDiscountControlLower+':'+item.integralUseDiscountControlUpper) }}</span>
</span>
</template>
</el-table-column>
......@@ -121,7 +121,7 @@
</el-table-column>
<el-table-column prop="" label="比例限制">
<template slot-scope="scope">
<span v-for="(item, index) in scope.row.channelList" :key="index"> {{ item.useProportionalRestriction }}% </span>
<span v-for="(item, index) in scope.row.channelList" :key="index"><span v-if="item.channelType == 1">{{item.useProportionalRestriction}}%</span></span>
</template>
</el-table-column>
<el-table-column label="操作">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment