From 46d9a52288d5c36985435e775a8433df4e12000b Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 16 Jul 2025 14:27:59 +0800 Subject: [PATCH] feat(mall): 添加自定义打印功能并优化订单相关接口 --- src/main/resources/templates/febs/views/modules/clothesType/socialMuseUpdate.html | 507 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 420 insertions(+), 87 deletions(-) diff --git a/src/main/resources/templates/febs/views/modules/clothesType/socialMuseUpdate.html b/src/main/resources/templates/febs/views/modules/clothesType/socialMuseUpdate.html index f155b26..bef1a1a 100644 --- a/src/main/resources/templates/febs/views/modules/clothesType/socialMuseUpdate.html +++ b/src/main/resources/templates/febs/views/modules/clothesType/socialMuseUpdate.html @@ -26,25 +26,6 @@ </div> </div> </div> - - <div class="layui-row layui-col-space10 layui-form-item"> - <div class="layui-col-lg6"> - <label class="layui-form-label febs-form-item-require">图案:</label> - <div class="layui-input-block"> - <div id="sc-pattern"></div> - </div> - </div> - </div> - - <div class="layui-row layui-col-space10 layui-form-item"> - <div class="layui-col-lg6"> - <label class="layui-form-label febs-form-item-require">位置:</label> - <div class="layui-input-block"> - <div id="sc-location"></div> - </div> - </div> - </div> - <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">尺码:</label> @@ -59,6 +40,50 @@ <label class="layui-form-label febs-form-item-require">工艺:</label> <div class="layui-input-block"> <div id="sc-art"></div> + </div> + </div> + </div> + + <div class="layui-form-item multi-rule-table"> + <div class="layui-row layui-col-space10 layui-form-item"> + <blockquote class="layui-elem-quote blue-border">正面图案</blockquote> + + <div class="layui-col-lg6"> + <label class="layui-form-label">图案:</label> + <div class="layui-input-block"> + <div id="sc-pattern"></div> + </div> + </div> + <div class="layui-col-lg6"> + <button type="button" class="layui-btn layui-btn-normal layui-btn" id="testPattern" >添加</button> + </div> + </div> + + <div class="layui-form-item"> + <div class="layui-input-block"> + <table id="multiPattern" lay-filter="multiPattern"></table> + </div> + </div> + </div> + + <div class="layui-form-item multi-rule-table"> + <div class="layui-row layui-col-space10 layui-form-item"> + <blockquote class="layui-elem-quote blue-border">反面图案</blockquote> + + <div class="layui-col-lg6"> + <label class="layui-form-label">图案:</label> + <div class="layui-input-block"> + <div id="sc-location"></div> + </div> + </div> + <div class="layui-col-lg6"> + <button type="button" class="layui-btn layui-btn-normal layui-btn" id="testLocation" >添加</button> + </div> + </div> + + <div class="layui-form-item"> + <div class="layui-input-block"> + <table id="multiLocation" lay-filter="multiLocation"></table> </div> </div> </div> @@ -80,10 +105,39 @@ border-left-color: #2db7f5; font-size: 18px; } + + .layui-table-cell { + height: auto; + } + </style> <script type="text/html" id="toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delSku">删除</button> + </div> +</script> + +<script type="text/html" id="tablePatternImgUpload"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuPatternImg{{d.index}}">上传 + </button> + </br> + <img class="layui-upload-img" id="imagePatternUrls{{d.index}}" style="width: 100px; display:none;" + src="{{d.skuPatternImage}}"> + <input type="text" id="skuPatternImage{{d.index}}" name="skuPatternImage{{d.index}}" autoComplete="off" value="{{d.skuPatternImage}}" + class="layui-input febs-hide"> + </div> +</script> + +<script type="text/html" id="tableLocationImgUpload"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal layui-btn-xs sku-img" id="skuLocationImg{{d.index}}">上传 + </button> + </br> + <img class="layui-upload-img" id="imageLocationUrls{{d.index}}" style="width: 100px; display:none;" + src="{{d.skuLocationImage}}"> + <input type="text" id="skuLocationImage{{d.index}}" name="skuLocationImage{{d.index}}" autoComplete="off" value="{{d.skuLocationImage}}" + class="layui-input febs-hide"> </div> </script> <!-- 表格操作栏 end --> @@ -105,8 +159,329 @@ validate = layui.validate, element = layui.element; - + form.render(); formSelects.render(); + + var patternSet = xmSelect.render({ + + el: '#sc-pattern', + language: 'zn', + prop : { + value : 'id', + children : 'child' + }, + iconfont: { + parent: 'hidden', + }, + tips: '请选择', + filterable: true, + radio: true, + clickClose: true, + tree: { + show: true, + //非严格模式 + strict: false, + }, + data: [] + }) + febs.get(ctx + 'admin/clothesType/allPattern/' + socialMuse.typeId, null, function(res) { + patternSet.update({ + data : res.data, + autoRow: true, + }); + }) + + $('#testPattern').on('click', function (){ + let patternChoice = patternSet.getValue(); + console.log(patternChoice); + if(patternChoice == null || patternChoice == ""){ + febs.alert.warn('请选择图案'); + return false; + } + for (let i = 0; i < patternChoice.length; i++) { + let data = {}; + data.patternId = patternChoice[i].id; + data.patternName = patternChoice[i].name; + addTablePatternDate(data); + } + }); + + var patternData=[]; + var tableInitPattern = table.render({ + elem: '#multiPattern' + ,limit:999 + ,toolbar:"#toolbar" + ,defaultToolbar:[] + ,cols:[[//表头 + + {type: 'checkbox'}, + {field: 'patternId', title: '正面ID', width:200,edit:'text'}, + {field: 'patternName', title: '正面图案', width:200,edit:'text'}, + {field: 'patternText', title: '文字', width:200,edit:'text'}, + {templet: '#tablePatternImgUpload', title: '图案', width:150}, + {field: 'skuPatternImage', title: '图案地址'}, + ]] + ,data: [] + + }); + + table.on('toolbar(multiPattern)', function(obj){ + var data = obj.data; + var hasData = table.cache['multiPattern']; + var checkData = table.checkStatus('multiPattern').data; + + if (checkData.length <= 0) { + febs.alert.warn('请选择删除数据'); + return; + } + if(obj.event === 'delSku'){ + for (let i = 0; i < checkData.length; i++) { + var delData = checkData[i]; + for (let j = 0; j < hasData.length; j++) { + if (hasData[j].index == delData.index) { + hasData.splice(j, 1); + break; + } + } + } + + for (let i = 0; i < hasData.length; i++) { + hasData[i].index = i + 1; + } + + patternData=hasData; + reloadPatternTable(hasData); + } + }); + + function addTablePatternDate(data) { + var hasData = table.cache['multiPattern']; + + data.index = hasData.length + 1; + patternData.push(data); + + reloadPatternTable(patternData); + return data.index; + } + + function reloadPatternTable(data) { + table.reload('multiPattern', { + data : data + }); + + for (let i = 0; i < data.length; i++) { + if (data[i].skuPatternImage) { + $('#imagePatternUrls' + (i + 1)).css('display', 'block'); + } + // 重新绑定图片上传 + bindPatternUpload(i + 1); + } + } + + table.on('edit(multiPattern)', function(obj){ + var value = obj.value //得到修改后的值 + ,data = obj.data //得到所在行所有键值 + ,field = obj.field; //得到字段 + + for (let i = 0; i < patternData.length; i++) { + if (patternData[i].index == data.index) { + patternData[i] = data; + } + } + }); + + function bindPatternUpload(index) { + // 普通图片上传 + upload.render({ + elem: '#skuPatternImg' + index + , url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + , done: function (res) { + febs.alert.success(res.data.src); + $('#imagePatternUrls' + index).attr('src', res.data.src); + $('#imagePatternUrls' + index).css('display', 'block'); + $('#skuPatternImage' + index).val(res.data.src); + + + for (let i = 0; i < patternData.length; i++) { + if (patternData[i].index == index) { + patternData[i].skuPatternImage = res.data.src; + } + } + + reloadPatternTable(patternData); + } + }); + } + + var locationSet = xmSelect.render({ + + el: '#sc-location', + language: 'zn', + prop : { + value : 'id', + children : 'child' + }, + iconfont: { + parent: 'hidden', + }, + tips: '请选择', + filterable: true, + radio: true, + clickClose: true, + tree: { + show: true, + //非严格模式 + strict: false, + }, + data: [] + }) + + febs.get(ctx + 'admin/clothesType/allLocation/' + socialMuse.typeId, null, function(res) { + locationSet.update({ + data : res.data, + autoRow: true, + }); + }) + + $('#testLocation').on('click', function (){ + let locationChoice = locationSet.getValue(); + console.log(locationChoice); + if(locationChoice == null || locationChoice == ""){ + febs.alert.warn('请选择图案'); + return false; + } + for (let i = 0; i < locationChoice.length; i++) { + let data = {}; + data.locationId = locationChoice[i].id; + data.locationName = locationChoice[i].name; + addTableLocationDate(data); + } + }); + + var locationData=[]; + var tableInitLocation = table.render({ + elem: '#multiLocation' + ,limit:999 + ,toolbar:"#toolbar" + ,defaultToolbar:[] + ,cols:[[//表头 + + {type: 'checkbox'}, + {field: 'locationId', title: '反面ID', width:200,edit:'text'}, + {field: 'locationName', title: '反面图案', width:200,edit:'text'}, + {field: 'locationText', title: '文字', width:200,edit:'text'}, + {templet: '#tableLocationImgUpload', title: '图案', width:150}, + {field: 'skuLocationImage', title: '图案地址'}, + ]] + ,data: [] + + }); + + table.on('toolbar(multiLocation)', function(obj){ + var data = obj.data; + var hasData = table.cache['multiLocation']; + var checkData = table.checkStatus('multiLocation').data; + + if (checkData.length <= 0) { + febs.alert.warn('请选择删除数据'); + return; + } + if(obj.event === 'delSku'){ + for (let i = 0; i < checkData.length; i++) { + var delData = checkData[i]; + for (let j = 0; j < hasData.length; j++) { + if (hasData[j].index == delData.index) { + hasData.splice(j, 1); + break; + } + } + } + + for (let i = 0; i < hasData.length; i++) { + hasData[i].index = i + 1; + } + + locationData=hasData; + reloadLocationTable(hasData); + } + }); + + function addTableLocationDate(data) { + var hasData = table.cache['multiLocation']; + + data.index = hasData.length + 1; + locationData.push(data); + + reloadLocationTable(locationData); + return data.index; + } + + function reloadLocationTable(data) { + table.reload('multiLocation', { + data : data + }); + + for (let i = 0; i < data.length; i++) { + if (data[i].skuLocationImage) { + $('#imageLocationUrls' + (i + 1)).css('display', 'block'); + } + // 重新绑定图片上传 + bindLocationUpload(i + 1); + } + } + + table.on('edit(multiLocation)', function(obj){ + var value = obj.value //得到修改后的值 + ,data = obj.data //得到所在行所有键值 + ,field = obj.field; //得到字段 + + for (let i = 0; i < locationData.length; i++) { + if (locationData[i].index == data.index) { + locationData[i] = data; + } + } + }); + + function bindLocationUpload(index) { + // 普通图片上传 + upload.render({ + elem: '#skuLocationImg' + index + , url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + , done: function (res) { + febs.alert.success(res.data.src); + $('#imageLocationUrls' + index).attr('src', res.data.src); + $('#imageLocationUrls' + index).css('display', 'block'); + $('#skuLocationImage' + index).val(res.data.src); + + + for (let i = 0; i < locationData.length; i++) { + if (locationData[i].index == index) { + locationData[i].skuLocationImage = res.data.src; + } + } + + reloadLocationTable(locationData); + } + }); + } + + + //图片上传 + upload.render({ + elem: '#patternImageUploadButton' + ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口 + ,accept: 'file' //普通文件 + ,size: 10240 //限制文件大小,单位 KB + ,before: function(obj){ + //预读本地文件示例,不支持ie8 + obj.preview(function(index, file, result){ + $('#patternImageUpload').html('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img single-image" style="width: 130px">') + }); + } + ,done: function(res){ + $("#patternImage").val(res.data.src); + } + }); let scArt = xmSelect.render({ el: '#sc-art', @@ -166,64 +541,6 @@ }); }) - let scLocation = xmSelect.render({ - el: '#sc-location', - language: 'zn', - prop : { - value : 'id', - children : 'child' - }, - iconfont: { - parent: 'hidden', - }, - tips: '请选择', - filterable: true, - radio: true, - clickClose: true, - tree: { - show: true, - //非严格模式 - strict: false, - }, - data: [] - }) - - febs.get(ctx + 'admin/clothesType/allLocation/' + socialMuse.typeId, null, function(res) { - scLocation.update({ - data : res.data, - autoRow: true, - }); - }) - - let scPattern = xmSelect.render({ - el: '#sc-pattern', - language: 'zn', - prop : { - value : 'id', - children : 'child' - }, - iconfont: { - parent: 'hidden', - }, - tips: '请选择', - filterable: true, - radio: true, - clickClose: true, - tree: { - show: true, - //非严格模式 - strict: false, - }, - data: [] - }) - - febs.get(ctx + 'admin/clothesType/allPattern/' + socialMuse.typeId, null, function(res) { - scPattern.update({ - data : res.data, - autoRow: true, - }); - }) - let scCloth = xmSelect.render({ el: '#sc-cloth', language: 'zn', @@ -268,6 +585,7 @@ "id": socialMuse.id, }); + var artList = []; artList.push(socialMuse.artId); scArt.setValue(artList); @@ -276,27 +594,42 @@ sizeList.push(socialMuse.sizeId); scSize.setValue(sizeList); - var patternList = []; - patternList.push(socialMuse.patternId); - scPattern.setValue(patternList); - var clothList = []; clothList.push(socialMuse.clothId); scCloth.setValue(clothList); - var locationList = []; - locationList.push(socialMuse.locationId); - scLocation.setValue(locationList); + var patternDataList = socialMuse.patternData; + if (patternDataList) { + for (let i = 0; i < patternDataList.length; i++) { + patternDataList[i].index = i+1; + } + patternData = patternDataList; + reloadPatternTable(patternData); + } + + var locationDataList = socialMuse.locationData; + if (locationDataList) { + for (let i = 0; i < locationDataList.length; i++) { + locationDataList[i].index = i+1; + } + locationData = locationDataList; + reloadLocationTable(locationData); + } } + + + form.on('submit(sc-muse-update-form-submit)', function (data) { data.field.artId = scArt.getValue('valueStr'); data.field.sizeId = scSize.getValue('valueStr'); - data.field.patternId = scPattern.getValue('valueStr'); - data.field.locationId = scLocation.getValue('valueStr'); + + data.field.patternData = patternData; + data.field.locationData = locationData; + data.field.clothId = scCloth.getValue('valueStr'); $.ajax({ 'url':ctx + 'admin/clothesType/socialMuseUpdate', -- Gitblit v1.9.1