Administrator
2025-07-09 f29586dbcd6af0077af62efa95105ef2350d794b
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>
@@ -86,6 +111,30 @@
        <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 -->
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate', 'layedit', 'upload', 'element', 'table', 'xmSelect'], function () {
@@ -105,8 +154,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 +536,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 +580,7 @@
                "id": socialMuse.id,
            });
            var artList = [];
            artList.push(socialMuse.artId);
            scArt.setValue(artList);
@@ -276,27 +589,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',