| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591 |
- var selectedGoodsId = [], goods_id=[], coupon_id = [], addCoupon, currIndex;
- $.each(goods_list, function(index, item) {
- var id = item.goods_id;
- selectedGoodsId.push(id);
- goods_id.push(id);
- });
- $("input[name='goods_ids']").val(goods_id.toString());
- Object.values(manjian_info).forEach((item,index)=>{
- if (item.coupon_data) {
- var arr = [];
- item.coupon_data.forEach((subItem,subIndex)=>{
- arr.push(subItem.coupon_type_id);
- });
- coupon_id.push(arr);
- }
- });
- var table, form, laydate, laytpl, repeat_flag = false; //防重复标识
- layui.use(['form', 'laydate', 'laytpl'], function() {
- form = layui.form,
- laydate = layui.laydate,
- laytpl = layui.laytpl;
- form.render();
- renderTable(goods_list); // 初始化表格
- laydate.render({
- elem: '#start_time',
- type: 'datetime'
- });
- laydate.render({
- elem: '#end_time',
- type: 'datetime'
- });
- //监听活动商品类型
- form.on('radio(manjian_type)', function(data){
- var value = data.value;
- if(value == 1){
- $(".goods_list").hide();
- }
- if(value == 2){
- $(".goods_list").show();
- }
- });
- form.on('radio(type)', function(data){
- var value = data.value;
- $('.level-item .type-' + value).removeClass('layui-hide').siblings('div').addClass('layui-hide');
- });
- /**
- * 表单验证
- */
- form.verify({
- len: function(value) {
- if (value.length > 25) {
- return "活动名称最多为25个字符!";
- }
- },
- time: function(value) {
- var now_time = (new Date()).getTime();
- var time = (new Date(value)).getTime();
- if (time < now_time) {
- return '开始时间不能小于当前时间!';
- }
- },
- times: function(value) {
- var start_time = (new Date($("#start_time").val())).getTime();
- var end_time = (new Date(value)).getTime();
- if (start_time > end_time) {
- return '结束时间不能小于开始时间!';
- }
- },
- num: function(value) {
- if (value == '') {
- return;
- }
- if (value < 0) {
- return '数字不能小于0!';
- }
- if (value * 100 % 1 != 0) {
- return '数字最多保留两位小数!';
- }
- },
- manjian_money: function(value){
- var type = $('[name="type"]:checked').val();
- if (type == 0) {
- if (!/[\S]+/.test(value)) {
- return '请输入金额';
- }
- if (value < 0) {
- return '金额不能小于0!';
- }
- }
- },
- manjian_num: function(value){
- var type = $('[name="type"]:checked').val();
- if (type == 1) {
- if (!/[\S]+/.test(value)) {
- return '请输入数量';
- }
- if (value < 0) {
- return '数量不能小于0!';
- }
- }
- },
- coupon_num: function(value){
- if (!/[\S]+/.test(value)) {
- return '请输入优惠券赠送数量';
- }
- if (value < 1) {
- return '优惠券赠送数量不能少于一张';
- }
- },
- goods_num:function (value) {
- var manjian_type = $('[name="manjian_type"]:checked').val();
- if(manjian_type == 2){
- if(value == 0){
- return '请选择活动商品!';
- }
- }
- }
- });
- /**
- * 监听提交
- */
- form.on('submit(save)', function(data) {
- var rule = {},
- verify = true,
- type = $('[name="type"]:checked').val();
- $('.manjian-rule .level-item').each(function(i, e) {
- var limit = parseFloat($(this).find('.type-'+ type +' .layui-input').val()).toFixed(2);
- if (i > 0) {
- var prevLimit = $('.manjian-rule .level-item:eq('+ (i - 1) +') .type-'+ type +' .layui-input').val();
- if (parseFloat(prevLimit) >= parseFloat(limit)) {
- showErrMsg('优惠门槛需大于上一级优惠门槛', $(this).find('.type-'+ type +' .layui-input'));
- verify = false;
- return false;
- }
- }
- rule[limit] = {
- limit: limit
- };
- if ($(this).find('[value="discount_money"]').is(':checked')) {
- var discount_money = $(this).find('.discount-item.discount-money .layui-input').val();
- if (!/[\S]+/.test(discount_money)) {
- showErrMsg('请输入优惠金额', $(this).find('.discount-item.discount-money .layui-input'));
- verify = false;
- return false;
- }
- discount_money = parseFloat(discount_money);
- if (discount_money <= 0) {
- showErrMsg('优惠金额不能小于等于0', $(this).find('.discount-item.discount-money .layui-input'));
- verify = false;
- return false;
- }
- if (type == 0 && discount_money > parseFloat(limit)) {
- showErrMsg('优惠金额请勿超出优惠门槛', $(this).find('.discount-item.discount-money .layui-input'));
- verify = false;
- return false;
- }
- rule[limit].discount_money = discount_money;
- }
- if ($(this).find('[value="free_shipping"]').is(':checked')) {
- rule[limit].free_shipping = 1;
- }
- if ($(this).find('[value="point"]').is(':checked')) {
- var point = $(this).find('.discount-item.point .layui-input').val();
- rule[limit].point = point;
- if (!/[\S]+/.test(point)) {
- showErrMsg('请输入赠送积分数', $(this).find('.discount-item.point .layui-input'));
- verify = false;
- return false;
- }
- if (point <= 0) {
- showErrMsg('赠送积分数不能小于等于0', $(this).find('.discount-item.point .layui-input'));
- verify = false;
- return false;
- }
- }
- var coupon = [];
- var coupon_num = [];
- if ($(this).find('[value="coupon"]').is(':checked')) {
- $(this).find('tr[data-coupon]').each(function (i, e) {
- coupon.push($(e).attr('data-coupon'));
- });
- $(this).find(".coupon input[name='number']").each(function(j,item){
- coupon_num.push(item.value);
- });
- if (!coupon.length) {
- showErrMsg('请选择要赠送的优惠券');
- verify = false;
- return false;
- }
- rule[limit].coupon = coupon.toString();
- rule[limit].coupon_num = coupon_num.toString();
- }
- if (rule[limit].discount_money == undefined && rule[limit].free_shipping == undefined && rule[limit].point == undefined && rule[limit].coupon == undefined) {
- showErrMsg('请选择活动层级'+ (i + 1) +'的优惠内容');
- verify = false;
- return false;
- }
- });
- if (!verify) return;
- data.field.rule_json = JSON.stringify(rule);
- if (repeat_flag) return;
- repeat_flag = true;
- $.ajax({
- type: 'POST',
- url: ns.url("manjian://shop/manjian/edit"),
- data: data.field,
- dataType: 'JSON',
- success: function (res) {
- repeat_flag = false;
- if (res.code == 0) {
- layer.confirm('编辑成功', {
- title:'操作提示',
- btn: ['返回列表', '继续操作'],
- yes: function(){
- location.href = ns.url("manjian://shop/manjian/lists")
- },
- btn2: function() {
- location.reload();
- }
- });
- } else if (res.code == -10077){
- var key = res.data.key;
- layer.confirm('在同一活动时间内,部分商品已参加其他的满减活动', {
- title:'活动冲突提醒',
- btn: ['取消', '查看详情'],
- btn1: function(){
- location.href = ns.url("manjian://shop/manjian/add");
- },
- btn2: function() {
- location.href = ns.url("manjian://shop/manjian/conflict", {"key": key});
- }
- });
- } else {
- layer.msg(res.message);
- }
- }
- });
- });
- function showErrMsg(msg, e){
- layer.msg(msg, { icon: 5, shift: 6 });
- if (e != undefined) {
- $(e).focus();
- }
- }
- form.on('submit(coupon-search)', function(data) {
- couponTable.reload({
- page: {
- curr: 1
- },
- where: data.field
- })
- })
- });
- // 表格渲染
- function renderTable(goods_list) {
- //展示已知数据
- table = new Table({
- elem: '#selected_sku_list',
- page: false,
- limit: Number.MAX_VALUE,
- cols: [
- [{
- field: 'goods_name',
- title: '商品名称',
- unresize: 'false',
- width: '50%',
- templet: function(data) {
- var html = '';
- html += `
- <div class="goods-title">
- <div class="goods-img">
- <img src="${data.goods_image ? ns.img(data.goods_image.split(",")[0],'small') : ''}" alt="">
- </div>
- <p class="multi-line-hiding goods-name">${data.goods_name}</p>
- </div>
- `;
- return html;
- }
- }, {
- field: 'price',
- title: '商品价格(元)',
- unresize: 'false',
- align: 'right',
- width: '20%',
- templet: function(data) {
- return '¥' + data.price;
- }
- }, {
- field: 'goods_stock',
- title: '库存',
- unresize: 'false',
- align: 'center',
- width: '20%'
- }, {
- title: '操作',
- toolbar: '#operation',
- unresize: 'false',
- align:'right'
- }],
- ],
- data: goods_list,
- });
- }
- // 删除选中商品
- function delGoods(id) {
- var i, j;
- $.each(goods_list, function(index, item) {
- var goods_id = item.goods_id;
- if (id == goods_id) {
- i = index;
- }
- });
- goods_list.splice(i, 1);
- renderTable(goods_list);
- $.each(selectedGoodsId, function(index, item) {
- if (id == item) {
- j = index;
- }
- });
- selectedGoodsId.splice(j, 1);
- goods_id = selectedGoodsId;
- $("#goods_num").html(selectedGoodsId.length);
- $("input[name='goods_ids']").val(goods_id.toString());
- }
- function addGoods(){
- goodsSelect(function (res) {
- if (!res.length) return false;
- goods_id = [];
- goods_list = [];
- for(var i=0;i<res.length;i++) {
- goods_id.push(res[i].goods_id);
- goods_list.push(res[i]);
- }
- renderTable(goods_list);
- $("input[name='goods_ids']").val(goods_id.toString());
- selectedGoodsId = goods_id;
- $("#goods_num").html(selectedGoodsId.length)
- }, selectedGoodsId, {mode: "spu"});
- goods_list.splice(0,goods_list.length);
- }
- function back() {
- location.href = ns.url("manjian://shop/manjian/lists");
- }
- // 添加优惠层级
- function addDiscountLevel(){
- var type = $('[name="type"]:checked').val();
- length = $('.discount-level .level-item').length;
- if (length == 5) {
- layer.msg('最多支持五个活动层级');
- return;
- }
- var template = `<div class="level-item">
- <div class="level-head">
- <label class="title">活动层级{{ d.length + 1 }}:</label>
- <a href="javascript:;" class="text-color" onclick="deleteLevel(this)">删除</a>
- </div>
- <div class="wrap">
- <div class="condition">
- <label class="layui-form-label"><span class="required">*</span>优惠门槛:</label>
- <div class="layui-input-block">
- <div class="type-0 {{ d.type != 0 ? 'layui-hide' : '' }}">
- <div class="layui-form-mid">满</div>
- <div class="layui-input-inline len-short">
- <input type="number" name="money" value="" lay-verify="manjian_money" placeholder="" autocomplete="off" class="layui-input len-short">
- </div>
- <div class="layui-form-mid">元</div>
- </div>
- <div class="type-1 {{ d.type != 1 ? 'layui-hide' : '' }}">
- <div class="layui-form-mid">满</div>
- <div class="layui-input-inline len-short">
- <input type="number" name="num" value="" lay-verify="manjian_num" placeholder="" autocomplete="off" class="layui-input len-short">
- </div>
- <div class="layui-form-mid">件</div>
- </div>
- </div>
- </div>
- <div class="content">
- <label class="layui-form-label"><span class="required">*</span>优惠内容:</label>
- <div class="layui-input-block">
- <div class="discount-item discount-money">
- <div>
- <input type="checkbox" name="discount_type" value="discount_money" class="input-checkbox" lay-skin="primary"><span>订单金额优惠</span>
- </div>
- <div class="discount-cont layui-hide">
- <div class="layui-form-mid">减</div>
- <div class="layui-input-inline len-short">
- <input type="number" value="" placeholder="" autocomplete="off" class="layui-input len-short">
- </div>
- <div class="layui-form-mid">元</div>
- </div>
- </div>
- <div class="discount-item">
- <div>
- <input type="checkbox" name="discount_type" value="free_shipping" class="input-checkbox" lay-skin="primary"><span>包邮</span>
- </div>
- <div class="word-aux" style="margin-left: 28px;margin-top: 0">
- <p>仅参与该活动的商品包邮,非整单包邮</p>
- </div>
- </div>
- <div class="discount-item point">
- <div>
- <input type="checkbox" name="discount_type" value="point" class="input-checkbox" lay-skin="primary"><span>送积分</span>
- </div>
- <div class="discount-cont layui-hide">
- <div class="layui-form-mid">送</div>
- <div class="layui-input-inline len-short">
- <input type="number" name="" value="" placeholder="" autocomplete="off" class="layui-input len-short">
- </div>
- <div class="layui-form-mid">积分</div>
- </div>
- </div>
- <div class="discount-item coupon">
- <div>
- <input type="checkbox" name="discount_type" value="coupon" class="input-checkbox" lay-skin="primary"><span>送优惠券</span>
- </div>
- <div class="discount-cont layui-hide">
- <div><a href="javascript:;" class="text-color select-coupon">选择优惠券</a></div>
- <div class="word-aux">
- <p>请确认优惠券数量是否充足,优惠券数量不足将导致赠送失败</p>
- </div>
- <div>
- <table class="layui-table" lay-skin="nob">
- <colgroup>
- <col width="30%">
- <col width="30%">
- <col width="20%">
- <col width="20%">
- </colgroup>
- <thead>
- <tr>
- <th>优惠券</th>
- <th>优惠内容</th>
- <th>赠券数</th>
- <th style="text-align:center;">操作</th>
- </tr>
- </thead>
- <tbody></tbody>
- </table>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>`;
- laytpl(template).render({
- length: length,
- type: type
- }, function(string){
- $('.discount-level .level-item:last').after(string);
- form.render();
- });
- }
- // 选择优惠
- $('body').on('click', '.discount-item .layui-form-checkbox', function(e){
- if ($(this).prev('[name="discount_type"]').is(':checked')) {
- $(this).parents('.discount-item').find('.discount-cont').removeClass('layui-hide');
- } else {
- $(this).parents('.discount-item').find('.discount-cont').addClass('layui-hide');
- }
- });
- $('body').on('click', '.discount-item .select-coupon', function(e){
- currIndex = $(this).parents('.level-item').index();
- var data = {};
- data.coupon_id = coupon_id[currIndex] != undefined ? coupon_id[currIndex] : [];
-
- laytpl($("#couponList").html()).render(data, function(html) {
- coupon_list = layer.open({
- title: '优惠券列表',
- skin: 'layer-tips-class',
- type: 1,
- area: ['850px', '600px'],
- content: html,
- });
- if ($("tbody tr input:checked").length == $(".coupon-box tbody tr").length) {
- $("input[lay-filter='selectAll']").prop("checked", true);
- }
- form.render();
- });
- /**
- * 监听全选按钮
- */
- form.on('checkbox(selectAll)', function(data) {
- if (data.elem.checked) {
- $("tr .check-box input:checkbox").each(function(index) {
- $(this).prop("checked", true);
- });
- } else {
- $("tr .check-box input:checkbox").each(function() {
- $(this).prop("checked", false);
- });
- }
- form.render();
- });
- /**
- * 监听每一行的多选按钮
- */
- var len = $(".coupon-box tbody tr").length;
- for (var i = 0; i < len; i++) {
- form.on('checkbox(select' + i + ')', function(data) {
- if ($("tbody tr input:checked").length == len) {
- $("input[lay-filter='selectAll']").prop("checked", true);
- } else {
- $("input[lay-filter='selectAll']").prop("checked", false);
- }
- form.render();
- });
- }
- });
- function couponSelected() {
- layer.closeAll('page');
- coupon_id[currIndex] = [];
- var _len = $("#goods tbody tr input:checked").length;
- // if (!_len) {
- // layer.msg('请选择优惠券');
- // return;
- // }
- $("#coupon_selected tbody").empty();
- var data = [];
- $("#goods tr input:checked").each(function(){
- var tr = $(this).parents('tr');
- coupon_id[currIndex].push(tr.find("#coupon_id").val());
- data.push({
- coupon_type_id: tr.find("#coupon_id").val(),
- coupon_name: tr.find(".title-content p").text(),
- at_least: tr.find('[name="at_least"]').val(),
- type: tr.find('[name="type"]').val(),
- discount: tr.find('[name="discount"]').val(),
- money: tr.find('[name="money"]').val()
- })
- });
- laytpl($("#addCoupon").html()).render(data, function(string){
- $('.level-item:eq('+ currIndex +') .discount-cont tbody').html(string);
- layer.closeAll();
- });
- }
- // 删除优惠层级
- function deleteLevel(e){
- $(e).parents('.level-item').remove();
- }
- // 删除优惠券
- function deleteCoupon(e,index){
- index = $(e).parents('.level-item').index();
- coupon_id[index].splice(index, 1);
- $(e).parents('tr').remove();
- }
|