From 2bfe033e2fd8f3d8ee9e99f43df977e661fcbda8 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 31 Jul 2025 18:07:42 +0800
Subject: [PATCH] feat(ai): 添加会员角色、产品和产品分类的新增页面
---
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