|
|
@@ -143,6 +143,15 @@
|
|
|
padding-left: 10px;
|
|
|
line-height: 30px;
|
|
|
}
|
|
|
+
|
|
|
+ .level-ratio-table {
|
|
|
+ margin-top: 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .level-ratio-table .layui-input {
|
|
|
+ width: 100px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
</style>
|
|
|
</head>
|
|
|
<body>
|
|
|
@@ -630,6 +639,21 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="layui-col-xs12 layui-col-sm6 layui-col-md6">
|
|
|
+ <div class="grid-demo grid-demo-bg1">
|
|
|
+ <div class="layui-form-item">
|
|
|
+ <label class="layui-form-label">门店选择<i class="red">*</i></label>
|
|
|
+ <div class="layui-input-block">
|
|
|
+ <select name="mer_id" lay-filter="mer_id">
|
|
|
+ <option value="0">请选择</option>
|
|
|
+ <option :value="item.id" v-for="item in merList"
|
|
|
+ :selected=" item.id == formData.mer_id ? true : false ">{{item.store_name}}</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
<div class="layui-row layui-col-space15">
|
|
|
<div class="layui-col-xs12 layui-col-sm4 layui-col-md4">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
@@ -650,7 +674,7 @@
|
|
|
</div>
|
|
|
<div class="layui-tab-item">
|
|
|
<div class="layui-row layui-col-space15">
|
|
|
- <textarea type="text/plain" name="description" id="myEditor" style="width:100%;">{{formData.description}}</textarea>
|
|
|
+ <textarea type="text/plain" name="description" id="myEditor" style="width:100%;"></textarea>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="layui-tab-item">
|
|
|
@@ -668,6 +692,19 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="layui-col-xs12 layui-col-sm4 layui-col-md4">
|
|
|
+ <div class="grid-demo grid-demo-bg1">
|
|
|
+ <div class="layui-form-item">
|
|
|
+ <label class="layui-form-label">返利积分比例(%)</label>
|
|
|
+ <div class="layui-input-block">
|
|
|
+ <input type="number" name="rebate_ratio" lay-verify="title"
|
|
|
+ autocomplete="off"
|
|
|
+ placeholder="请输入返利点数" class="layui-input"
|
|
|
+ v-model="formData.rebate_ratio">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<div class="layui-col-xs12 layui-col-sm4 layui-col-md4">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
<div class="layui-form-item">
|
|
|
@@ -680,6 +717,48 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 等级返利设置 -->
|
|
|
+ <div class="layui-col-xs12 layui-col-sm12 layui-col-md12">
|
|
|
+ <div class="grid-demo grid-demo-bg1">
|
|
|
+ <div class="layui-form-item">
|
|
|
+ <label class="layui-form-label">等级返利比例(%)</label>
|
|
|
+ <div class="layui-input-block">
|
|
|
+ <div class="level-ratio-table">
|
|
|
+ <table class="layui-table">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th width="20%">等级名称</th>
|
|
|
+ <th width="16%">青源客</th>
|
|
|
+ <th width="16%">青润使</th>
|
|
|
+ <th width="16%">青金团</th>
|
|
|
+ <th width="16%">青玉团</th>
|
|
|
+ <th width="16%">青谷团</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td>返利比例(%)</td>
|
|
|
+ <td><input type="number" v-model="level_radio[0].ratio" class="layui-input"
|
|
|
+ placeholder="请输入" step="0.01" min="0" max="100"></td>
|
|
|
+ <td><input type="number" v-model="level_radio[1].ratio" class="layui-input"
|
|
|
+ placeholder="请输入" step="0.01" min="0" max="100"></td>
|
|
|
+ <td><input type="number" v-model="level_radio[2].ratio" class="layui-input"
|
|
|
+ placeholder="请输入" step="0.01" min="0" max="100"></td>
|
|
|
+ <td><input type="number" v-model="level_radio[3].ratio" class="layui-input"
|
|
|
+ placeholder="请输入" step="0.01" min="0" max="100"></td>
|
|
|
+ <td><input type="number" v-model="level_radio[4].ratio" class="layui-input"
|
|
|
+ placeholder="请输入" step="0.01" min="0" max="100"></td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <span class="info">设置每个等级对应的返利百分比(0-100之间)</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
<div class="layui-col-xs12 layui-col-sm4 layui-col-md4">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
<div class="layui-form-item">
|
|
|
@@ -693,6 +772,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 佣金设置 -->
|
|
|
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
<div class="layui-form-item">
|
|
|
@@ -708,6 +789,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 批量设置佣金 -->
|
|
|
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12"
|
|
|
v-if="formData.is_sub == 1 && formData.spec_type == 1">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
@@ -730,7 +813,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- 单属性-->
|
|
|
+
|
|
|
+ <!-- 单属性佣金设置 -->
|
|
|
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12"
|
|
|
v-if="formData.spec_type == 0 && formData.is_sub == 1">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
@@ -779,8 +863,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- 单属性结束-->
|
|
|
- <!-- 多属性-->
|
|
|
+
|
|
|
+ <!-- 多属性佣金设置 -->
|
|
|
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12"
|
|
|
v-if="formData.attrs.length && formHeader.length && formData.is_sub == 1 && formData.spec_type == 1">
|
|
|
<div class="grid-demo grid-demo-bg1" style="margin-top: 20px">
|
|
|
@@ -826,21 +910,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!--多属性结束-->
|
|
|
|
|
|
- <!-- <div class="layui-col-xs12 layui-col-sm4 layui-col-md4">-->
|
|
|
- <!-- <div class="grid-demo grid-demo-bg1">-->
|
|
|
- <!-- <div class="layui-form-item">-->
|
|
|
- <!-- <label class="layui-form-label">商品状态</label>-->
|
|
|
- <!-- <div class="layui-input-block">-->
|
|
|
- <!-- <input type="radio" name="is_show" lay-filter="is_show" value="1" title="上架"-->
|
|
|
- <!-- :checked="formData.is_show == 1 ? true : false">-->
|
|
|
- <!-- <input type="radio" name="is_show" lay-filter="is_show" value="0" title="下架"-->
|
|
|
- <!-- :checked="formData.is_show == 0 ? true : false">-->
|
|
|
- <!-- </div>-->
|
|
|
- <!-- </div>-->
|
|
|
- <!-- </div>-->
|
|
|
- <!-- </div>-->
|
|
|
+ <!-- 其他设置 -->
|
|
|
<div class="layui-col-xs12 layui-col-sm4 layui-col-md4">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
<div class="layui-form-item">
|
|
|
@@ -916,6 +987,23 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="layui-col-xs12 layui-col-sm4 layui-col-md4">
|
|
|
+ <div class="grid-demo grid-demo-bg1">
|
|
|
+ <div class="layui-form-item">
|
|
|
+ <label class="layui-form-label">批发商品</label>
|
|
|
+ <div class="layui-input-block">
|
|
|
+ <input type="radio" name="is_wholesale" lay-filter="is_wholesale" value="1"
|
|
|
+ title="开启"
|
|
|
+ :checked="formData.is_wholesale == 1 ? true : false">
|
|
|
+ <input type="radio" name="is_wholesale" lay-filter="is_wholesale" value="0"
|
|
|
+ title="关闭"
|
|
|
+ :checked="formData.is_wholesale == 0 ? true : false">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 活动优先级 -->
|
|
|
<div class="layui-row layui-col-space15">
|
|
|
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12">
|
|
|
<div class="grid-demo grid-demo-bg1">
|
|
|
@@ -987,12 +1075,15 @@
|
|
|
cateList: [],
|
|
|
//运费模板
|
|
|
tempList: [],
|
|
|
+ //门店
|
|
|
+ merList: [],
|
|
|
upload: {
|
|
|
videoIng: false
|
|
|
},
|
|
|
formData: {
|
|
|
cate_id: [],
|
|
|
temp_id: 0,
|
|
|
+ mer_id: 0,
|
|
|
commission: 0,
|
|
|
store_name: '',
|
|
|
keyword: '',
|
|
|
@@ -1020,6 +1111,7 @@
|
|
|
attrs: [],
|
|
|
description: '',
|
|
|
ficti: 0,
|
|
|
+ rebate_ratio: 0,
|
|
|
give_integral: 0,
|
|
|
sort: 0,
|
|
|
is_show: 1,
|
|
|
@@ -1027,6 +1119,7 @@
|
|
|
is_benefit: 0,
|
|
|
is_best: 0,
|
|
|
is_new: 0,
|
|
|
+ is_wholesale: 0,
|
|
|
is_good: 0,
|
|
|
store_type: 1,
|
|
|
is_sub: 0,
|
|
|
@@ -1067,7 +1160,7 @@
|
|
|
activity: {'秒杀': '#1E9FFF', '砍价': '#189688', '拼团': '#FEB900'},
|
|
|
attr: [],//临时属性
|
|
|
newRule: false,//是否添加新规则
|
|
|
- radioRule: ['store_type', 'is_sub', 'is_show', 'is_hot', 'is_benefit', 'is_new', 'is_good', 'is_best', 'spec_type'],//radio 当选规则
|
|
|
+ radioRule: ['store_type', 'is_sub', 'is_show', 'is_hot', 'is_benefit', 'is_new', 'is_good', 'is_best','is_wholesale', 'spec_type'],//radio 当选规则
|
|
|
rule: { //多图选择规则
|
|
|
slider_image: {
|
|
|
maxLength: 5
|
|
|
@@ -1080,6 +1173,14 @@
|
|
|
form: null,//layui.form
|
|
|
layTabId: 1,
|
|
|
ruleBool: id ? true : false,
|
|
|
+ // 等级返利设置 - 添加grade字段,从1到5
|
|
|
+ level_radio: [
|
|
|
+ { level_name: '青源客', ratio: '', grade: 1 },
|
|
|
+ { level_name: '青润使', ratio: '', grade: 2 },
|
|
|
+ { level_name: '青金团', ratio: '', grade: 3 },
|
|
|
+ { level_name: '青玉团', ratio: '', grade: 4 },
|
|
|
+ { level_name: '青谷团', ratio: '', grade: 5 }
|
|
|
+ ],
|
|
|
},
|
|
|
watch: {
|
|
|
'formData.is_sub': function (n) {
|
|
|
@@ -1096,14 +1197,6 @@
|
|
|
this.render();
|
|
|
}
|
|
|
},
|
|
|
- // 'formData.image':function (n) {
|
|
|
- // if(!this.batchAttr.pic){
|
|
|
- // this.batchAttr.pic = n;
|
|
|
- // }
|
|
|
- // if(!this.formData.attr.pic){
|
|
|
- // this.formData.attr.pic = n;
|
|
|
- // }
|
|
|
- // }
|
|
|
},
|
|
|
methods: {
|
|
|
back: function () {
|
|
|
@@ -1204,7 +1297,7 @@
|
|
|
|
|
|
},
|
|
|
/**
|
|
|
- * 获取商品信息
|
|
|
+ * 获取商品信息 - 修复等级返利数据填充问题
|
|
|
* */
|
|
|
getProductInfo: function () {
|
|
|
var that = this;
|
|
|
@@ -1215,11 +1308,68 @@
|
|
|
})).then(function (res) {
|
|
|
that.$set(that, 'cateList', res.data.cateList);
|
|
|
that.$set(that, 'tempList', res.data.tempList);
|
|
|
+ that.$set(that, 'merList', res.data.merList);
|
|
|
var productInfo = res.data.productInfo || {};
|
|
|
if (productInfo.id && that.id) {
|
|
|
+ // 将产品信息赋值给formData
|
|
|
that.$set(that, 'formData', productInfo);
|
|
|
+
|
|
|
+ // 修复等级返利数据填充问题
|
|
|
+ console.log('获取到的level_radio数据:', productInfo.level_radio);
|
|
|
+
|
|
|
+ // 初始化默认的等级数组
|
|
|
+ var defaultLevels = [
|
|
|
+ { level_name: '青源客', ratio: '', grade: 1 },
|
|
|
+ { level_name: '青润使', ratio: '', grade: 2 },
|
|
|
+ { level_name: '青金团', ratio: '', grade: 3 },
|
|
|
+ { level_name: '青玉团', ratio: '', grade: 4 },
|
|
|
+ { level_name: '青谷团', ratio: '', grade: 5 }
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 检查是否有保存的等级返利数据
|
|
|
+ if (productInfo.level_radio && productInfo.level_radio.length > 0) {
|
|
|
+ console.log('有保存的等级返利数据,开始处理...');
|
|
|
+
|
|
|
+ // 遍历后台返回的数据,更新默认数组中的比例
|
|
|
+ productInfo.level_radio.forEach(function(savedItem) {
|
|
|
+ // 查找对应的等级
|
|
|
+ var foundIndex = defaultLevels.findIndex(function(defaultItem) {
|
|
|
+ // 优先使用grade匹配,如果没有grade则使用level_name匹配
|
|
|
+ if (savedItem.grade) {
|
|
|
+ return defaultItem.grade == savedItem.grade;
|
|
|
+ } else {
|
|
|
+ return defaultItem.level_name === savedItem.level_name;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (foundIndex !== -1) {
|
|
|
+ // 更新比例
|
|
|
+ defaultLevels[foundIndex].ratio = savedItem.ratio || '';
|
|
|
+ console.log('更新等级 ' + defaultLevels[foundIndex].level_name + ' 的比例为: ' + defaultLevels[foundIndex].ratio);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ console.log('没有保存的等级返利数据,使用默认值');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置到Vue实例
|
|
|
+ that.$set(that, 'level_radio', defaultLevels);
|
|
|
+ console.log('最终设置的level_radio:', defaultLevels);
|
|
|
+
|
|
|
+ // 生成商品规格
|
|
|
that.generate();
|
|
|
+ } else {
|
|
|
+ // 新增商品时使用默认值
|
|
|
+ that.$set(that, 'level_radio', [
|
|
|
+ { level_name: '青源客', ratio: '', grade: 1 },
|
|
|
+ { level_name: '青润使', ratio: '', grade: 2 },
|
|
|
+ { level_name: '青金团', ratio: '', grade: 3 },
|
|
|
+ { level_name: '青玉团', ratio: '', grade: 4 },
|
|
|
+ { level_name: '青谷团', ratio: '', grade: 5 }
|
|
|
+ ]);
|
|
|
}
|
|
|
+
|
|
|
+ // 获取规则列表并初始化
|
|
|
that.getRuleList();
|
|
|
that.init();
|
|
|
}).catch(function (res) {
|
|
|
@@ -1470,9 +1620,13 @@
|
|
|
return $btn;
|
|
|
|
|
|
});
|
|
|
- //实例化编辑器
|
|
|
+ //实例化编辑器 - 关键修复:保留原版的设置方式
|
|
|
this.um = UM.getEditor('myEditor', {initialFrameWidth: '99%', initialFrameHeight: 400});
|
|
|
- this.um.setContent(that.formData.description);
|
|
|
+ // 关键修复:这里直接设置编辑器内容,确保商品详情正常显示
|
|
|
+ if (that.formData.description) {
|
|
|
+ this.um.setContent(that.formData.description);
|
|
|
+ }
|
|
|
+
|
|
|
that.$nextTick(function () {
|
|
|
layui.use(['form', 'element'], function () {
|
|
|
that.form = layui.form;
|
|
|
@@ -1480,6 +1634,9 @@
|
|
|
that.form.on('select(temp_id)', function (data) {
|
|
|
that.$set(that.formData, 'temp_id', data.value);
|
|
|
});
|
|
|
+ that.form.on('select(mer_id)', function (data) {
|
|
|
+ that.$set(that.formData, 'mer_id', data.value);
|
|
|
+ });
|
|
|
that.form.on('select(rule_index)', function (data) {
|
|
|
that.ruleIndex = data.value;
|
|
|
});
|
|
|
@@ -1568,6 +1725,9 @@
|
|
|
if (!that.formData.temp_id) {
|
|
|
return that.showMsg('请选择运费模板');
|
|
|
}
|
|
|
+ if (!that.formData.mer_id) {
|
|
|
+ return that.showMsg('请选择门店');
|
|
|
+ }
|
|
|
if (!that.formData.store_name) {
|
|
|
return that.showMsg('请填写商品名称');
|
|
|
}
|
|
|
@@ -1631,7 +1791,33 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 处理等级返利数据 - 确保传递当前填写的level_radio
|
|
|
+ that.formData.level_radio = that.level_radio;
|
|
|
+ console.log('提交的level_radio数据:', that.level_radio);
|
|
|
+
|
|
|
+ // 验证等级返利数据(改为可选验证,可以不填)
|
|
|
+ var hasLevelRatio = false;
|
|
|
+ for (var i = 0; i < that.level_radio.length; i++) {
|
|
|
+ var ratio = that.level_radio[i].ratio;
|
|
|
+ if (ratio && ratio !== '') {
|
|
|
+ hasLevelRatio = true;
|
|
|
+ var ratioNum = parseFloat(ratio);
|
|
|
+ if (isNaN(ratioNum) || ratioNum < 0 || ratioNum > 100) {
|
|
|
+ return that.showMsg('等级返利比例必须在0-100之间');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果有填写等级返利,则设置到formData,否则设置为空数组
|
|
|
+ if (!hasLevelRatio) {
|
|
|
+ that.formData.level_radio = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取编辑器内容
|
|
|
that.formData.description = that.getContent();
|
|
|
+
|
|
|
+ // 提交数据
|
|
|
that.requestPost(that.U({
|
|
|
c: 'store.StoreProduct',
|
|
|
a: 'save',
|
|
|
@@ -1717,7 +1903,11 @@
|
|
|
mounted: function () {
|
|
|
var that = this;
|
|
|
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
|
|
+
|
|
|
+ // 获取商品信息
|
|
|
that.getProductInfo();
|
|
|
+
|
|
|
+ // 设置全局变量
|
|
|
window.$vm = that;
|
|
|
window.changeIMG = that.changeIMG;
|
|
|
window.insertEditor = that.insertEditor;
|
|
|
@@ -1725,6 +1915,8 @@
|
|
|
window.successFun = function () {
|
|
|
that.getRuleList(1);
|
|
|
}
|
|
|
+
|
|
|
+ // 视频上传
|
|
|
$(that.$refs.filElem).change(function () {
|
|
|
var inputFile = this.files[0];
|
|
|
that.requestPost(that.U({c: "widget.video", a: 'get_signature'})).then(function (res) {
|
|
|
@@ -1754,7 +1946,7 @@
|
|
|
}).catch(function (res) {
|
|
|
return that.showMsg(res.msg || '获取密钥失败,请检查您的配置');
|
|
|
});
|
|
|
- })
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
</script>
|