refactor(mall): 重构轮播图编辑页面
- 更新 goodsUpdateNew.html 中的编辑器配置和数据加载逻辑
- 优化 platformBanner.html 中的表格结构和操作按钮
- 重构 platformBannerDetail.html 中的表单布局和字段
- 更新 ViewBannerController 中的 model 属性名称
| | |
| | | @RequiresPermissions("platformBannerUpdate:update") |
| | | public String platformBannerUpdate(@PathVariable long id, Model model) { |
| | | PlatformBanner data = iAdminBannerService.selectPlatformBannerById(id); |
| | | model.addAttribute("member", data); |
| | | model.addAttribute("bannerInfo", data); |
| | | return FebsUtil.view("modules/banner/platformBannerDetail"); |
| | | } |
| | | |
| | |
| | | <span class="layui-badge febs-bg-{{isTop.color}}">{{ isTop.title }}</span> |
| | | </script> |
| | | <!-- 表格操作栏 start --> |
| | | <script type="text/html" id="user-option"> |
| | | <!-- <span shiro:lacksPermission="user:view,user:update,user:delete">--> |
| | | <!-- <span class="layui-badge-dot febs-bg-orange"></span> 无权限--> |
| | | <!-- </span>--> |
| | | <!-- <a lay-event="edit" shiro:hasPermission="user:update">编辑--> |
| | | <script type="text/html" id="banner-option"> |
| | | <a lay-event="edit">编辑 |
| | | <i class="layui-icon febs-edit-area febs-blue"></i> |
| | | </a> |
| | | <!-- <a lay-event="delete" shiro:hasPermission="user:update">删除--> |
| | | <a lay-event="delete">删除 |
| | | <i class="layui-icon febs-edit-area febs-blue"></i> |
| | | </a> |
| | |
| | | templet: function (d) { |
| | | return '<img src="'+d.imageUrl+'" >' |
| | | }, minWidth: 200,align:'center'}, |
| | | // {field: 'sort', title: '联系方式', minWidth: 200,align:'center'}, |
| | | |
| | | {title: '是否可跳转', templet: '#isJump', minWidth: 60,align:'center'}, |
| | | {field: 'jumpUrl', title: '跳转链接', minWidth: 200,align:'center'}, |
| | | {title: '跳转外部或内部', templet: '#isInside', minWidth: 60,align:'center'}, |
| | | // {title: '显示端口', templet: '#showPort', minWidth: 60,align:'center'}, |
| | | {title: '是否置顶', templet: '#isTop', minWidth: 60,align:'center'}, |
| | | |
| | | {title: '操作', toolbar: '#user-option', minWidth: 140, fixed : 'right'} |
| | | {title: '操作', toolbar: '#banner-option', minWidth: 140, fixed : 'right'} |
| | | ]] |
| | | }); |
| | | } |
| | |
| | | <div class="layui-form-item febs-hide"> |
| | | <label class="layui-form-label febs-form-item-require">用户id:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="id" data-th-value="${member.id}"> |
| | | <input type="text" name="id" data-th-value="${bannerInfo.id}"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">标题:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="name" data-th-id="${member.name}" |
| | | autocomplete="off" class="layui-input" > |
| | | <input type="text" name="name" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | |
| | | <label class="layui-form-label febs-form-item-require">图片链接:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" id="imageUrl" name="imageUrl" |
| | | autocomplete="off" class="layui-input" readonly> |
| | | autocomplete="off" class="layui-input" readonly> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label febs-form-item-require">联系方式:</label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input type="text" name="sort" minlength="4" maxlength="10" data-th-id="${member.sort}"--> |
| | | <!-- lay-verify="range|sort" autocomplete="off" class="layui-input" >--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">是否置顶:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="isTop" value="1" title="是"> |
| | | <input type="radio" name="isTop" value="1" title="是" checked=""> |
| | | <input type="radio" name="isTop" value="2" title="否"> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label febs-form-item-require">显示端口:</label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input type="radio" name="showPort" value="1" title="pc">--> |
| | | <!-- <input type="radio" name="showPort" value="2" title="手机">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">是否可跳转:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="isJump" value="1" title="是"> |
| | | <input type="radio" name="isJump" value="1" title="是" checked=""> |
| | | <input type="radio" name="isJump" value="2" title="否"> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">跳转链接:</label> |
| | | <label class="layui-form-label">关联活动:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="jumpUrl" data-th-id="${member.jumpUrl}" |
| | | autocomplete="off" class="layui-input" > |
| | | <div id="jumpUrl-list"></div> |
| | | </div> |
| | | <div class="layui-form-mid layui-word-aux">图片需要跳转到商品详情,请填写商品编号。</div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">跳转外部或内部:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="isInside" value="1" title="内"> |
| | | <input type="radio" name="isInside" value="1" title="内" checked=""> |
| | | <input type="radio" name="isInside" value="2" title="外"> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','upload'], function () { |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','upload', 'xmSelect'], function () { |
| | | var $ = layui.$, |
| | | febs = layui.febs, |
| | | layer = layui.layer, |
| | |
| | | treeSelect = layui.treeSelect, |
| | | form = layui.form, |
| | | eleTree = layui.eleTree, |
| | | member = [[${member}]], |
| | | bannerInfo = [[${bannerInfo}]], |
| | | $view = $('#banner-update'), |
| | | validate = layui.validate, |
| | | upload = layui.upload, |
| | |
| | | |
| | | form.render(); |
| | | |
| | | initUserValue(); |
| | | var activityList = xmSelect.render({ |
| | | el: '#jumpUrl-list', |
| | | language: 'zh', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | | }, |
| | | iconfont: { |
| | | parent: 'hidden', |
| | | }, |
| | | radio: true,//单选按钮。如何想要多选直接注释掉此行代码 |
| | | clickClose: true, |
| | | tree: { |
| | | show: true, |
| | | //非严格模式 |
| | | strict: false, |
| | | }, |
| | | data: [] |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/activity/activityList', null, function(res) { |
| | | activityList.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | // 确保在数据加载完成后初始化表单值 |
| | | initBannerValue(); |
| | | }) |
| | | |
| | | formSelects.render(); |
| | | |
| | | function initUserValue() { |
| | | $('#imageUrls').attr('src', member.imageUrl); |
| | | function initBannerValue() { |
| | | $('#imageUrls').attr('src', bannerInfo.imageUrl); |
| | | form.val("banner-update-form", { |
| | | "id": member.id, |
| | | "name": member.name, |
| | | "imageUrl": member.imageUrl, |
| | | "isInside": member.isInside, |
| | | // "showPort": member.showPort, |
| | | "jumpUrl": member.jumpUrl, |
| | | // "sort": member.sort, |
| | | "isTop": member.isTop, |
| | | "isJump": member.isJump |
| | | "id": bannerInfo.id, |
| | | "name": bannerInfo.name, |
| | | "imageUrl": bannerInfo.imageUrl, |
| | | "isInside": bannerInfo.isInside, |
| | | "jumpUrl": bannerInfo.jumpUrl, |
| | | "isTop": bannerInfo.isTop, |
| | | "isJump": bannerInfo.isJump |
| | | }); |
| | | var arr = []; |
| | | arr.push(bannerInfo.jumpUrl) |
| | | activityList.setValue(arr); |
| | | } |
| | | |
| | | form.on('submit(banner-update-form-submit)', function (data) { |
| | | data.field.jumpUrl = activityList.getValue('valueStr'); |
| | | febs.post(ctx + 'admin/banner/platformBannerConfirm', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('设置成功'); |
| | |
| | | // return layedit.sync(indexUpdate); |
| | | // } |
| | | // }); |
| | | |
| | | formSelects.render(); |
| | | const E = window.wangEditor; |
| | | const editor = new E('#toolbar-container', '#text-container'); // 传入两个元素 |
| | | editor.config.showLinkImg = false; |
| | |
| | | |
| | | var category = xmSelect.render({ |
| | | el: '#goods-category', |
| | | language: 'zn', |
| | | language: 'zh', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | |
| | | data: [] |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/goodsCategory/categoryTree', null, function(res) { |
| | | category.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | |
| | | // initValue(); |
| | | }) |
| | | |
| | | var couponRule = xmSelect.render({ |
| | | el: '#coupon-rule', |
| | | language: 'zn', |
| | | language: 'zh', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | |
| | | data: [] |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/goods/couponTreeSet', null, function(res) { |
| | | couponRule.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | |
| | | initValue(); |
| | | }) |
| | | |
| | | var carriageRule = xmSelect.render({ |
| | | el: '#carriage-rule', |
| | | language: 'zn', |
| | | language: 'zh', |
| | | prop : { |
| | | value : 'id', |
| | | children : 'child' |
| | |
| | | }); |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/goods/couponTreeSet', null, function(res) { |
| | | couponRule.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | }) |
| | | |
| | | febs.get(ctx + 'admin/goodsCategory/categoryTree', null, function(res) { |
| | | category.update({ |
| | | data : res.data, |
| | | autoRow: true, |
| | | }); |
| | | initValue(); |
| | | }) |
| | | |
| | | formSelects.render(); |
| | | |
| | | |
| | | var tableSkuData = []; |
| | | var tableIns = table.render({ |