初始上传
This commit is contained in:
347
addon/cardservice/shop/view/public/js/card_goods_edit.js
Executable file
347
addon/cardservice/shop/view/public/js/card_goods_edit.js
Executable file
@@ -0,0 +1,347 @@
|
||||
requestAdd = 'cardservice://shop/card/addGoods';
|
||||
requestEdit = 'cardservice://shop/card/editGoods';
|
||||
goodsTag = '卡项';
|
||||
|
||||
var relationGoods = [];
|
||||
|
||||
// 追加刷新商品sku数据
|
||||
appendRefreshGoodsSkuData = {
|
||||
service_length: 0
|
||||
};
|
||||
|
||||
// 追加单规格数据
|
||||
function appendSingleGoodsData(data) {
|
||||
return {
|
||||
service_length: data.field.service_length
|
||||
};
|
||||
}
|
||||
|
||||
// 追加保存数据
|
||||
function appendSaveData(data) {
|
||||
var card_type = $('.card-type-item.active').attr('data-value');
|
||||
if (card_type == 'oncecard') {
|
||||
relationGoods.forEach(function (item, index) {
|
||||
item.num = $('.relation-goods-table.oncecard .layui-table-body tr:eq(' + index + ') .num').val();
|
||||
})
|
||||
} else {
|
||||
relationGoods.forEach(function (item, index) {
|
||||
item.discount = $('.relation-goods-table.discountcard .layui-table-body tr:eq(' + index + ') .discount').val();
|
||||
})
|
||||
}
|
||||
return {
|
||||
card_type: card_type,
|
||||
validity_type: $('[name="validity_type"]:checked').val(),
|
||||
relation_goods: JSON.stringify(relationGoods) // 卡项参数格式
|
||||
};
|
||||
}
|
||||
|
||||
// 编辑初始化数据回调
|
||||
function initEditDataCallBack() {
|
||||
relationGoods = $('[name="relation_goods"]').val() ? JSON.parse($('[name="relation_goods"]').val()) : [];
|
||||
}
|
||||
|
||||
$(function () {
|
||||
|
||||
layui.use(['element', 'laytpl', 'form', 'laydate', 'table'], function () {
|
||||
form = layui.form;
|
||||
element = layui.element;
|
||||
laytpl = layui.laytpl;
|
||||
laydate = layui.laydate;
|
||||
laytable = layui.table;
|
||||
form.render();
|
||||
|
||||
var time = new Date();
|
||||
var currentTime = time.toLocaleDateString + " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds();
|
||||
//卡项有效期
|
||||
laydate.render({
|
||||
elem: '#validity_time', //指定元素
|
||||
type: 'datetime',
|
||||
min: currentTime
|
||||
});
|
||||
|
||||
//核销有效期类型
|
||||
form.on('radio(validity_type)', function (data) {
|
||||
var value = parseInt(data.value);
|
||||
$('.validity-type').addClass('layui-hide');
|
||||
$('.validity-type.validity-type-' + value).removeClass('layui-hide');
|
||||
});
|
||||
|
||||
// 选择卡项类型
|
||||
$('.card-type-item').click(function () {
|
||||
if ($(this).hasClass('active')) return;
|
||||
var value = $(this).attr('data-value');
|
||||
$(this).addClass('active').siblings('.card-type-item').removeClass('active');
|
||||
$('.card-type-content').hide();
|
||||
$('.card-type-content.' + value).show();
|
||||
fetchRelationGoods();
|
||||
});
|
||||
|
||||
// 选择关联商品
|
||||
$('.add-relation-goods').click(function () {
|
||||
var skuids = [];
|
||||
relationGoods.forEach(function (item) {
|
||||
skuids.push(item.sku_id)
|
||||
});
|
||||
var select_goods_class = $(this).data('goods-class');
|
||||
goodsSelect(function (data) {
|
||||
var skuList = [];
|
||||
|
||||
for (var key in data) {
|
||||
for (var sku in data[key].selected_sku_list) {
|
||||
var item = data[key].selected_sku_list[sku];
|
||||
skuList.push(item);
|
||||
}
|
||||
}
|
||||
relationGoods = skuList;
|
||||
fetchRelationGoods();
|
||||
|
||||
}, skuids, {mode: 'sku', goods_class: select_goods_class ?? '1,4'});
|
||||
});
|
||||
|
||||
function fetchRelationGoods() {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
var elem = cardType == 'discountcard' ? '#relationDiscountGoods' : '#relationGoods';
|
||||
var cols = [
|
||||
{
|
||||
field: 'sku_name',
|
||||
title: '商品/项目名称',
|
||||
width: '35%'
|
||||
},
|
||||
{
|
||||
field: 'goods_class_name',
|
||||
title: '商品类型',
|
||||
},
|
||||
{
|
||||
field: 'sex',
|
||||
title: '售价',
|
||||
width: '15%',
|
||||
align: 'right',
|
||||
templet: function (data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'right',
|
||||
templet: function (data) {
|
||||
return `<a href="javascript:;" class="text-color delete">删除</a>`;
|
||||
}
|
||||
}
|
||||
];
|
||||
switch (cardType) {
|
||||
case 'oncecard':
|
||||
cols.splice(2, 0, {
|
||||
title: '可用次数/数量',
|
||||
align: 'center',
|
||||
templet: function (data) {
|
||||
return `<input type="text" placeholder="0" lay-verify="use_num" value="` + (data.num ? data.num : '') + `" class="layui-input len-short num" autocomplete="off">`;
|
||||
}
|
||||
});
|
||||
break;
|
||||
case 'discountcard':
|
||||
cols.splice(2, 0, {
|
||||
title: '可享折扣',
|
||||
align: 'center',
|
||||
templet: function (data) {
|
||||
return `<input type="text" placeholder="0" lay-verify="discount" value="` + (data.discount ? data.discount : '') + `" class="layui-input len-short discount" autocomplete="off"> %`;
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
var _table = laytable.render({
|
||||
elem: elem,
|
||||
data: relationGoods,
|
||||
cols: [cols],
|
||||
skin: 'nob',
|
||||
done: function () {
|
||||
if (cardType == 'oncecard' || cardType == 'discountcard') $('.card-type-content .batch-set').show();
|
||||
else $('.card-type-content .batch-set').hide();
|
||||
$('body').off('click', '.relation-goods-table .delete').on('click', '.relation-goods-table .delete', function () {
|
||||
$(this).parents('tr').remove();
|
||||
relationGoods.splice($(this).parents('tr').index(), 1);
|
||||
})
|
||||
}
|
||||
});
|
||||
if (!relationGoods.length) {
|
||||
$(elem).next('.layui-table-view').remove();
|
||||
$('.card-type-content .batch-set').hide();
|
||||
}
|
||||
}
|
||||
|
||||
fetchRelationGoods();
|
||||
|
||||
// 关联商品批量设置
|
||||
$('.batch-set .set').click(function () {
|
||||
var parents = $(this).parents('.batch-set');
|
||||
parents.find('.set-item').hide();
|
||||
parents.find('.set-content-wrap').show();
|
||||
});
|
||||
|
||||
$('.batch-set .cancel').click(function () {
|
||||
var parents = $(this).parents('.batch-set');
|
||||
parents.find('.value').val('');
|
||||
parents.find('.set-item').show();
|
||||
parents.find('.set-content-wrap').hide();
|
||||
});
|
||||
|
||||
$('.batch-set .confirm').click(function () {
|
||||
var parents = $(this).parents('.batch-set');
|
||||
var value = parents.find('.value').val();
|
||||
var type = parents.find('.value').attr('data-type');
|
||||
|
||||
if (!regExp.required.test(value)) {
|
||||
layer.msg('请输入要设置的值');
|
||||
return;
|
||||
}
|
||||
if (type == 'num') {
|
||||
if (!regExp.number.test(value)) {
|
||||
layer.msg('可用次数格式错误');
|
||||
return;
|
||||
}
|
||||
if (parseInt(value) < 1) {
|
||||
layer.msg('可用次数不能小于等于0');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (type == 'discount') {
|
||||
if (!regExp.number.test(value)) {
|
||||
layer.msg('折扣格式错误');
|
||||
return;
|
||||
}
|
||||
if (parseInt(value) < 1 || parseInt(value) > 99) {
|
||||
layer.msg('折扣需在[1-99]之间设置');
|
||||
return;
|
||||
}
|
||||
}
|
||||
// 批量设置值
|
||||
$(this).parents('.layui-form-item').find('.' + type).val(value);
|
||||
|
||||
parents.find('.value').val('');
|
||||
parents.find('.set-item').show();
|
||||
parents.find('.set-content-wrap').hide();
|
||||
});
|
||||
|
||||
form.on('radio(discount_goods_type)', function (data) {
|
||||
$('.discount-goods').hide();
|
||||
$('.discount-goods.' + data.value).show();
|
||||
});
|
||||
|
||||
form.verify({
|
||||
//销售价
|
||||
price: function (value) {
|
||||
if (!$("input[name='spec_type']").is(":checked")) {
|
||||
if (value.length == 0) {
|
||||
element.tabChange('goods_tab', "price-stock");
|
||||
return "请输入卡项开卡价";
|
||||
}
|
||||
if (isNaN(value) || !regExp.digit.test(value)) {
|
||||
element.tabChange('goods_tab', "price-stock");
|
||||
return '[卡项开卡价]格式输入错误';
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
renew_price: function (value) {
|
||||
if (value.length == 0) {
|
||||
element.tabChange('goods_tab', "price-stock");
|
||||
return "请输入卡项续费价";
|
||||
}
|
||||
if (isNaN(parseInt(value)) || !regExp.digit.test(value)) {
|
||||
element.tabChange('goods_tab', "price-stock");
|
||||
return '[卡项续费价]格式输入错误';
|
||||
}
|
||||
},
|
||||
//有效期
|
||||
validity_day: function (value) {
|
||||
var verify_validity_type = $('[name="validity_type"]:checked').val();
|
||||
if (verify_validity_type == 1) {
|
||||
if (isNaN(value) || !regExp.number.test(value)) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return '[卡项有效期]格式输入错误';
|
||||
}
|
||||
if (value < 1) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return '卡项有效期不能小于1天';
|
||||
}
|
||||
}
|
||||
},
|
||||
validity_time: function (value) {
|
||||
var verify_validity_type = $('[name="validity_type"]:checked').val();
|
||||
if (verify_validity_type == 2 && value.length == 0) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return "请输入有效期";
|
||||
}
|
||||
},
|
||||
relation_goods: function () {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
if (cardType != 'discountcard' && !$('.relation-goods-table.oncecard .layui-table-body tr').length) {
|
||||
return '请选择卡项内容';
|
||||
}
|
||||
},
|
||||
relation_discount_goods: function () {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
if (cardType == 'discountcard' && $('[name="discount_goods_type"]:checked').val() != 'all' && !$('.relation-goods-table.discountcard .layui-table-body tr').length) {
|
||||
return '请选择卡项内容';
|
||||
}
|
||||
},
|
||||
use_num: function (value) {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
if (cardType == 'oncecard') {
|
||||
if (!regExp.required.test(value)) {
|
||||
return '请输入可用次数/数量';
|
||||
}
|
||||
if (!regExp.number.test(value)) {
|
||||
return '次数/数量格式错误';
|
||||
}
|
||||
if (parseInt(value) < 1) {
|
||||
return '可用次数/数量不能小于等于0';
|
||||
}
|
||||
}
|
||||
},
|
||||
discount: function (value) {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
if (cardType == 'discountcard' && $('[name="discount_goods_type"]:checked').val() != 'all') {
|
||||
if (!regExp.required.test(value)) {
|
||||
return '请输入折扣卡折扣';
|
||||
}
|
||||
if (!regExp.number.test(value)) {
|
||||
return '折扣卡折扣格式错误';
|
||||
}
|
||||
if (parseInt(value) < 1 || parseInt(value) > 99) {
|
||||
return '折扣卡折扣需在[1-99]之间设置';
|
||||
}
|
||||
}
|
||||
},
|
||||
common_discount: function (value) {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
if (cardType == 'discountcard' && $('[name="discount_goods_type"]:checked').val() == 'all') {
|
||||
if (!regExp.required.test(value)) {
|
||||
return '请输入折扣卡折扣';
|
||||
}
|
||||
if (!regExp.number.test(value)) {
|
||||
return '折扣卡折扣格式错误';
|
||||
}
|
||||
if (parseInt(value) < 1 || parseInt(value) > 99) {
|
||||
return '折扣卡折扣需在[1-99]之间设置';
|
||||
}
|
||||
}
|
||||
},
|
||||
common_num: function (value) {
|
||||
var cardType = $('.card-type-item.active').attr('data-value');
|
||||
if (cardType == 'commoncard') {
|
||||
if (!regExp.required.test(value)) {
|
||||
return '请输入卡项可用次数/数量';
|
||||
}
|
||||
if (!regExp.number.test(value)) {
|
||||
return '卡项可用次数/数量格式错误';
|
||||
}
|
||||
if (parseInt(value) < 1) {
|
||||
return '卡项可用次数/数量不能小于等于0';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
109
addon/cardservice/shop/view/public/js/category_select.js
Executable file
109
addon/cardservice/shop/view/public/js/category_select.js
Executable file
@@ -0,0 +1,109 @@
|
||||
var layCascader, goodsCategory = [];
|
||||
layui.use(['layCascader'], function () {
|
||||
layCascader = layui.layCascader;
|
||||
|
||||
$('.goods-category-con-wrap .layui-block').each(function () {
|
||||
var category_id = $(this).find('.category_id').val();
|
||||
var _this = this;
|
||||
|
||||
fetchCategory({elem: $(this).find('.select-category'), value: category_id ? parseInt(category_id.split(',').splice(-1)) : ''},
|
||||
function (value, node) {
|
||||
var categoryId = [];
|
||||
node.path.forEach(function (item) {
|
||||
categoryId.push(item.value)
|
||||
});
|
||||
$(_this).find('.category_id').val(categoryId.toString())
|
||||
}
|
||||
)
|
||||
});
|
||||
});
|
||||
|
||||
// 刷新项目分类,更新选择项目分类数据
|
||||
$('body').off('click', '.goods-category-con-wrap .js-refresh-category').on('click', '.goods-category-con-wrap .js-refresh-category', function () {
|
||||
$.ajax({
|
||||
url : ns.url("cardservice://shop/servicecategory/lists"),
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(res) {
|
||||
goodsCategory = res.data;
|
||||
|
||||
// 刷新商品分类下拉框数据
|
||||
$('.goods-category-con-wrap .layui-block').each(function () {
|
||||
$(this).find('.el-cascader').remove(); // 清空渲染
|
||||
var category_id = $(this).find('.category_id').val();
|
||||
var _this = this;
|
||||
|
||||
fetchCategory({elem: $(this).find('.select-category'), value: category_id ? parseInt(category_id.split(',').splice(-1)) : ''},
|
||||
function (value, node) {
|
||||
var categoryId = [];
|
||||
node.path.forEach(function (item) {
|
||||
categoryId.push(item.value)
|
||||
});
|
||||
$(_this).find('.category_id').val(categoryId.toString())
|
||||
}
|
||||
)
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('body').off('click', '.goods-category-wrap-box .js-add-category').on('click', '.goods-category-wrap-box .js-add-category', function () {
|
||||
if ($('.goods-category-con-wrap .layui-block').length >= 10) {
|
||||
layer.msg('最多添加十个分类');
|
||||
return;
|
||||
}
|
||||
var h = `<div class="layui-block">
|
||||
<div class="layui-input-inline cate-input-default">
|
||||
<input type="text" readonly lay-verify="required" autocomplete="off" class="layui-input len-mid select-category" />
|
||||
<input type="hidden" class="category_id" />
|
||||
</div>
|
||||
<a href="javascript:;" class="text-color js-delete-category">删除</a>
|
||||
</div>`;
|
||||
$('.goods-category-con-wrap').append(h);
|
||||
|
||||
fetchCategory({elem: $('.goods-category-con-wrap .layui-block:last-child').find('.select-category')}, function (value, node) {
|
||||
var categoryId = [];
|
||||
node.path.forEach(function (item) {
|
||||
categoryId.push(item.value)
|
||||
});
|
||||
$('.goods-category-con-wrap .layui-block:last-child').find('.category_id').val(categoryId.toString());
|
||||
})
|
||||
});
|
||||
|
||||
$('body').off('click', '.goods-category-con-wrap .js-delete-category').on('click', '.goods-category-con-wrap .js-delete-category', function () {
|
||||
$(this).parents('.layui-block').remove();
|
||||
});
|
||||
|
||||
/**
|
||||
* 渲染分类选择
|
||||
* @param option
|
||||
* @param callback
|
||||
*/
|
||||
function fetchCategory(option, callback){
|
||||
if (!goodsCategory.length) {
|
||||
$.ajax({
|
||||
url : ns.url("cardservice://shop/servicecategory/lists"),
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(res) {
|
||||
goodsCategory = res.data;
|
||||
}
|
||||
})
|
||||
}
|
||||
var _option = {
|
||||
options: goodsCategory,
|
||||
props: {
|
||||
value: 'category_id',
|
||||
label: 'category_name',
|
||||
children: 'child_list'
|
||||
}
|
||||
};
|
||||
if (option) Object.assign(_option, option);
|
||||
var _cascader = layCascader(_option);
|
||||
_cascader.changeEvent(function (value, node) {
|
||||
typeof callback == 'function' && callback(value, node)
|
||||
});
|
||||
}
|
||||
407
addon/cardservice/shop/view/public/js/edit_category.js
Executable file
407
addon/cardservice/shop/view/public/js/edit_category.js
Executable file
@@ -0,0 +1,407 @@
|
||||
var link_url_json = $("input[name='link_url']").val();
|
||||
if(link_url_json) {
|
||||
link_url_json = JSON.parse(link_url_json);
|
||||
$(".link-url-show").text(link_url_json.title);
|
||||
}
|
||||
|
||||
var laytpl, form, layerIndex;
|
||||
var categoryFullName = [];//组装名称
|
||||
|
||||
var saveData = null;
|
||||
var totalUploadNum = 0;
|
||||
var completeUploadNum = 0;
|
||||
|
||||
$(function () {
|
||||
|
||||
//编辑时赋值组装名称
|
||||
if ($("input[name='category_full_name']").length > 0) {
|
||||
categoryFullName = $("input[name='category_full_name']").val().split("/").slice(0, $("input[name='category_full_name']").val().split("/").length - 1);
|
||||
}
|
||||
|
||||
layui.use(['form', 'laytpl'], function () {
|
||||
var repeat_flag = false;//防重复标识
|
||||
laytpl = layui.laytpl;
|
||||
form = layui.form;
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
commission_rate: function (value) {
|
||||
var reg = /^\d{0,2}(.?\d{0,2})$/;
|
||||
if (value.length > 0) {
|
||||
if (isNaN(value)) {
|
||||
return '佣金比率输入错误';
|
||||
}
|
||||
if (!reg.test(value) || value < 0 || value > 100) {
|
||||
return '佣金比率范围:0~100%';
|
||||
}
|
||||
}
|
||||
},
|
||||
num: function (value) {
|
||||
if (value == '') {
|
||||
return;
|
||||
}
|
||||
if (value % 1 != 0) {
|
||||
return '排序数值必须为整数';
|
||||
}
|
||||
if (value < 0) {
|
||||
return '排序数值必须为大于0';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var upload = new Upload({
|
||||
elem: '#imgUpload',
|
||||
size:100,
|
||||
auto:false,
|
||||
bindAction:'#imageUploadAction',
|
||||
callback: function(res) {
|
||||
uploadComplete('image', res.data.pic_path);
|
||||
}
|
||||
});
|
||||
|
||||
var adv_upload = new Upload({
|
||||
elem: '#imgUploadAdv',
|
||||
auto:false,
|
||||
bindAction:'#imageAdvUploadAction',
|
||||
callback: function(res) {
|
||||
uploadComplete('image_adv', res.data.pic_path);
|
||||
}
|
||||
});
|
||||
|
||||
function uploadComplete(field, pic_path) {
|
||||
saveData.field[field] = pic_path;
|
||||
completeUploadNum += 1;
|
||||
if(completeUploadNum == totalUploadNum){
|
||||
saveFunc();
|
||||
}
|
||||
}
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
|
||||
saveData = data;
|
||||
var obj = $("img.img_prev[data-prev='1']");
|
||||
totalUploadNum = obj.length;
|
||||
if(totalUploadNum > 0){
|
||||
obj.each(function(){
|
||||
var actionId = $(this).attr('data-action-id');
|
||||
$(actionId).click();
|
||||
})
|
||||
}else{
|
||||
saveFunc();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
function saveFunc(){
|
||||
|
||||
var data = saveData;
|
||||
categoryFullName.push(data.field.category_name);
|
||||
data.field.category_full_name = categoryFullName.join("/");
|
||||
data.field.attr_class_name = $("select[name='attr_class_id'] option:checked").text();
|
||||
|
||||
// 删除图片
|
||||
if(!data.field.image) upload.delete();
|
||||
|
||||
if(!data.field.image_adv) adv_upload.delete();
|
||||
|
||||
if (repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
|
||||
var url = ns.url("cardservice://shop/servicecategory/addCategory");
|
||||
if (data.field.category_id) url = ns.url("cardservice://shop/servicecategory/editCategory");
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: data.field,
|
||||
dataType: 'json',
|
||||
type: 'post',
|
||||
success: function (data) {
|
||||
layer.msg(data.message);
|
||||
if (data.code == 0) {
|
||||
location.hash = ns.hash("cardservice://shop/servicecategory/lists");
|
||||
} else {
|
||||
repeat_flag = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//保存上级分类
|
||||
form.on('submit(save_pid)', function (data) {
|
||||
|
||||
var option_category_id_1 = $("select[name='category_id_1'] option:checked");
|
||||
var option_category_id_2 = $("select[name='category_id_2'] option:checked[value!='0']");
|
||||
|
||||
categoryFullName = [];
|
||||
var level, category_name, pid;
|
||||
if (option_category_id_1.length) {
|
||||
level = parseInt(option_category_id_1.attr("data-level"));
|
||||
category_name = option_category_id_1.text();
|
||||
pid = option_category_id_1.val();//上级分类id
|
||||
var category_id_1 = option_category_id_1.val();//一级分类id
|
||||
if (category_id_1 > 0) {
|
||||
$("input[name='category_id_1']").val(category_id_1);
|
||||
categoryFullName.push(category_name);
|
||||
}
|
||||
}
|
||||
|
||||
if($("input[name='category_name_1']").length){
|
||||
categoryFullName.push($("input[name='category_name_1']").val());
|
||||
}
|
||||
|
||||
// 选中了二级商品分类
|
||||
if (option_category_id_2.length) {
|
||||
level = parseInt(option_category_id_2.attr("data-level"));
|
||||
category_name = option_category_id_2.text();
|
||||
pid = option_category_id_2.val();
|
||||
var category_id_2 = option_category_id_2.val();//二级分类id
|
||||
if (category_id_2 > 0) {
|
||||
$("input[name='category_id_2']").val(category_id_2);
|
||||
categoryFullName.push(category_name);
|
||||
}
|
||||
}
|
||||
|
||||
$(".js-pid span").text(category_name);
|
||||
$("input[name='pid']").val(pid);
|
||||
$("input[name='level']").val(level + 1);//当前添加的层级+1
|
||||
|
||||
layer.close(layerIndex);
|
||||
return false;
|
||||
|
||||
});
|
||||
|
||||
setTimeout(()=>{
|
||||
form.render();
|
||||
},600)
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
//选择商品分类弹出框
|
||||
function selectedCategoryPopup() {
|
||||
|
||||
if ($("input[name='category_id']").length) {
|
||||
|
||||
// 修改
|
||||
editSelectedPid();
|
||||
|
||||
} else {
|
||||
|
||||
//添加
|
||||
addSelectedPid();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品分类列表
|
||||
* @param data
|
||||
* @param callback
|
||||
*/
|
||||
function getCategoryList(data, callback) {
|
||||
$.ajax({
|
||||
url: ns.url("cardservice://shop/servicecategory/getCategoryList"),
|
||||
data: data,
|
||||
dataType: 'json',
|
||||
type: 'post',
|
||||
async: false,
|
||||
success: function (res) {
|
||||
var data = res.data;
|
||||
if (callback) callback(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时,选择上级分类
|
||||
*/
|
||||
function addSelectedPid() {
|
||||
|
||||
//查询一级商品分类
|
||||
getCategoryList({pid: 0}, function (list) {
|
||||
|
||||
var html = $("#selectedCategory").html();
|
||||
var data = {
|
||||
category_id_1: $("input[name='category_id_1']").val(),
|
||||
category_list_1: list
|
||||
};
|
||||
laytpl(html).render(data, function (html) {
|
||||
layerIndex = layer.open({
|
||||
title: '选择商品分类',
|
||||
skin: 'layer-tips-class',
|
||||
type: 1,
|
||||
area: ['450px'],
|
||||
content: html,
|
||||
success: function () {
|
||||
form.render();
|
||||
|
||||
form.on('select(category_id_1)', function (item) {
|
||||
|
||||
if (item.value > 0) {
|
||||
|
||||
getCategoryList({pid: item.value}, function (list) {
|
||||
var h = '<option value="0">请选择</option>';
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
if ($("input[name='category_id_2']").val() == list[i].category_id) {
|
||||
h += '<option value="' + list[i].category_id + '" data-level="' + list[i].level + '" selected>' + list[i].category_name + '</option>';
|
||||
} else {
|
||||
h += '<option value="' + list[i].category_id + '" data-level="' + list[i].level + '">' + list[i].category_name + '</option>';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$("select[name='category_id_2']").html(h);
|
||||
form.render("select");
|
||||
});
|
||||
} else {
|
||||
//顶级分类不需要查询
|
||||
$("select[name='category_id_2']").html('<option value="0">请选择</option>');
|
||||
form.render("select");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$("select[name='category_id_1']").siblings("div.layui-form-select").find("dl dd[lay-value='" + $("input[name='category_id_1']").val() + "']").click();
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑时,选择上级分类
|
||||
*/
|
||||
function editSelectedPid() {
|
||||
var html = $("#selectedCategory").html();
|
||||
laytpl(html).render({}, function (html) {
|
||||
layerIndex = layer.open({
|
||||
title: '选择商品分类',
|
||||
skin: 'select-category',
|
||||
type: 1,
|
||||
area: ['650px'],
|
||||
content: html,
|
||||
btn: ['确定', '取消'],
|
||||
success: function () {
|
||||
var pid = $('input[name="pid"]').val();
|
||||
var level = $('input[name="level"]').val();
|
||||
$('.table_div input[name="category_id"][data-category-id="'+pid+'"]').attr('checked', true);
|
||||
if(level == 3) $('.table_div div[data-cateid="'+pid+'"]').parents('.table_two_div').show().prev('.table_tr').find('.switch').attr('data-open', 1).html('-');
|
||||
form.render();
|
||||
|
||||
$(".js-switch").click(function (event) {
|
||||
event.stopPropagation();
|
||||
var category_id = $(this).attr("data-category-id");
|
||||
var level = $(this).attr("data-level");
|
||||
var open = parseInt($(this).attr("data-open").toString());
|
||||
if(open){
|
||||
$(".goods-category-list .layui-table tr[data-category-id-"+ level+"='" + category_id + "']").hide();
|
||||
// $(this).children("img").removeClass('rotate');
|
||||
$(this).text("+");
|
||||
if(level == 1) $(this).parents('.table_tr').siblings('.table_two_div').hide();
|
||||
else if(level == 2) $(this).parents('.table_tr').siblings('.table_three').hide();
|
||||
|
||||
}else{
|
||||
$(".goods-category-list .layui-table tr[data-category-id-"+ level+"='" + category_id + "']").show();
|
||||
$(this).text("-");
|
||||
// $(this).children("img").addClass('rotate');
|
||||
if(level == 1) $(this).parents('.table_tr').siblings('.table_two_div').show();
|
||||
else if(level == 2) $(this).parents('.table_tr').siblings('.table_three').show();
|
||||
|
||||
}
|
||||
$(this).attr("data-open", (open ? 0 : 1));
|
||||
});
|
||||
|
||||
form.on('checkbox(category)', function (data) {
|
||||
if(data.elem.checked==true){
|
||||
$('.table_move').children('div').removeClass('layui-form-checked');
|
||||
$(".table_move input").prop("checked",false);
|
||||
}
|
||||
$(this).parents('.table_move').children('div').addClass('layui-form-checked');
|
||||
$(this).parents('.table_move').find('input').prop("checked",true);
|
||||
return false;
|
||||
});
|
||||
|
||||
},
|
||||
yes: function(index, layero){
|
||||
var obj = $('.table_div input[name="category_id"]:checked');
|
||||
var num = $(obj).length;
|
||||
if(num > 1){
|
||||
layer.msg('只能选择一个上级');
|
||||
return false;
|
||||
}
|
||||
|
||||
var parent_level = $(obj).attr('data-level');
|
||||
var pid = $(obj).val();
|
||||
var parent_name = $(obj).attr('data-name');
|
||||
if(num < 1){
|
||||
parent_level = 0;
|
||||
pid = 0;
|
||||
parent_name = '顶级分类';
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("cardservice://shop/servicecategory/checkEditCategory"),
|
||||
data: {
|
||||
category_id: $('#category_id').val(),
|
||||
pid : pid
|
||||
},
|
||||
dataType: 'json',
|
||||
type: 'post',
|
||||
async: false,
|
||||
success: function (res) {
|
||||
if(res.code >= 0){
|
||||
$(".js-pid span").text(parent_name);
|
||||
$("input[name='pid']").val(pid);
|
||||
$("input[name='level']").val(parseInt(parent_level) + 1);//当前添加的层级+1
|
||||
layer.close(layerIndex);
|
||||
}else{
|
||||
layer.msg(res.message)
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品分类信息
|
||||
* @param category_id
|
||||
* @param callback
|
||||
*/
|
||||
function getCategoryInfo(category_id, callback) {
|
||||
$.ajax({
|
||||
url: ns.url("cardservice://shop/servicecategory/getCategoryInfo"),
|
||||
data: {category_id: category_id},
|
||||
dataType: 'json',
|
||||
type: 'post',
|
||||
async: false,
|
||||
success: function (res) {
|
||||
var data = res.data;
|
||||
if (callback) callback(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function backCardServiceCategoryList() {
|
||||
location.hash = ns.hash("cardservice://shop/servicecategory/lists")
|
||||
}
|
||||
|
||||
function selectedLink() {
|
||||
if (link_url_json == "") {
|
||||
link_url_json = {};
|
||||
}
|
||||
ns.select_link(link_url_json, function (data) {
|
||||
for (var o in data) {
|
||||
if (data[o] == null) delete data[o];
|
||||
}
|
||||
$("input[name='link_url']").val(JSON.stringify(data));
|
||||
$(".link-url-show-wrap .layui-input-block").find('.link-url-show').remove();
|
||||
$(".link-url-show-wrap .layui-input-block").prepend(`<span class="link-url-show">${data.title}</span>`);
|
||||
});
|
||||
}
|
||||
104
addon/cardservice/shop/view/public/js/service_goods_edit.js
Executable file
104
addon/cardservice/shop/view/public/js/service_goods_edit.js
Executable file
@@ -0,0 +1,104 @@
|
||||
requestAdd = 'cardservice://shop/service/addGoods';
|
||||
requestEdit = 'cardservice://shop/service/editGoods';
|
||||
goodsTag = '项目';
|
||||
|
||||
// 追加刷新商品sku数据
|
||||
appendRefreshGoodsSkuData = {
|
||||
service_length: 0
|
||||
};
|
||||
|
||||
// 追加单规格数据
|
||||
function appendSingleGoodsData(data) {
|
||||
return {
|
||||
service_length: data.field.service_length
|
||||
};
|
||||
}
|
||||
|
||||
// 追加保存数据
|
||||
function appendSaveData(data) {
|
||||
return {
|
||||
verify_validity_type: $('[name="verify_validity_type"]:checked').val()
|
||||
};
|
||||
}
|
||||
|
||||
$(function () {
|
||||
|
||||
layui.use(['element', 'laytpl', 'form', 'laydate'], function () {
|
||||
form = layui.form;
|
||||
element = layui.element;
|
||||
laytpl = layui.laytpl;
|
||||
laydate = layui.laydate;
|
||||
form.render();
|
||||
|
||||
var time = new Date();
|
||||
var currentTime = time.toLocaleDateString + " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds();
|
||||
|
||||
//核销有效期
|
||||
laydate.render({
|
||||
elem: '#virtual_time', //指定元素
|
||||
type: 'datetime',
|
||||
min: currentTime
|
||||
});
|
||||
|
||||
//卡项有效期类型
|
||||
form.on('radio(verify_validity_type)', function (data) {
|
||||
var value = parseInt(data.value);
|
||||
$('.validity-type').addClass('layui-hide');
|
||||
$('.validity-type.validity-type-' + value).removeClass('layui-hide');
|
||||
});
|
||||
|
||||
form.verify({
|
||||
//有效期
|
||||
virtual_indate: function (value) {
|
||||
var verify_validity_type = $('[name="verify_validity_type"]:checked').val();
|
||||
if (verify_validity_type == 1) {
|
||||
if (isNaN(value) || !regExp.number.test(value)) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return '[核销有效期]格式输入错误';
|
||||
}
|
||||
if (value < 1) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return '核销有效期不能小于1天';
|
||||
}
|
||||
}
|
||||
},
|
||||
virtual_time: function (value) {
|
||||
var verify_validity_type = $('[name="verify_validity_type"]:checked').val();
|
||||
if (value.length == 0 && verify_validity_type == 2) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return "请输入有效期";
|
||||
}
|
||||
},
|
||||
service_length: function (value) {
|
||||
if (value.length > 0) {
|
||||
value = parseInt(value);
|
||||
if (isNaN(value) || !regExp.number.test(value)) {
|
||||
element.tabChange('goods_tab', "price-stock");
|
||||
return '[服务时长]格式输入错误';
|
||||
}
|
||||
if (value < 0) {
|
||||
element.tabChange('goods_tab', "price-stock");
|
||||
return '[服务时长]不能小于0';
|
||||
}
|
||||
}
|
||||
},
|
||||
//销售价
|
||||
service_price: function (value) {
|
||||
if (!$("input[name='spec_type']").is(":checked")) {
|
||||
if (value.length == 0) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return "请输入销售价";
|
||||
}
|
||||
|
||||
if (isNaN(value) || !regExp.digit.test(value)) {
|
||||
element.tabChange('goods_tab', "basic");
|
||||
return '[销售价]格式输入错误';
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user