271 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| package menu
 | |
| 
 | |
| import (
 | |
|     "context"
 | |
|     "time"
 | |
| 
 | |
|     "management/internal/erpserver/templ/base"
 | |
| 	"management/internal/pkg/mid"
 | |
| 	"management/internal/erpserver/templ/component"
 | |
| 	"management/internal/erpserver/model/system"
 | |
| )
 | |
| 
 | |
| templ Edit(ctx context.Context, item *system.Menu) {
 | |
|     @base.Base(ctx, editCss(), editJs(ctx, item)) {
 | |
|         {{ meuns := mid.GetCurMenus(ctx) }}
 | |
|         {{ ht := mid.GetHtmlCsrfToken(ctx) }}
 | |
| 
 | |
|         <div class="layui-body layui-bg-gray">
 | |
|             <div class="layui-card">
 | |
|                 <form class="layui-form">
 | |
|                     @ht
 | |
|                     <input type="hidden" name="ID" value={ item.ID } />
 | |
| 
 | |
|                     <div class="layui-tab layui-tab-card rhino-form">
 | |
|                         <ul class="layui-tab-title">
 | |
|                             <li class="layui-this">基础信息</li>
 | |
|                             <li>其它</li>
 | |
|                         </ul>
 | |
| 
 | |
|                         <div class="layui-tab-content">
 | |
|                             <div class="layui-tab-item layui-show">
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Name" class="layui-form-label">名称</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <input type="text" id="Name" name="Name" value={ item.Name } lay-verify="required"
 | |
|                                             autocomplete="off" placeholder="请输入名称" class="layui-input" />
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="DisplayName" class="layui-form-label">显示名称</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <input type="text" id="DisplayName" name="DisplayName" value={ item.DisplayName }
 | |
|                                             lay-verify="required" autocomplete="off" placeholder="请输入显示名称"
 | |
|                                             class="layui-input" />
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Type" class="layui-form-label">类型</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <select id="Type" name="Type">
 | |
|                                             if item.Type == "node" {
 | |
|                                                 <option value="node" selected>菜单节点</option>
 | |
|                                                 <option value="menu">菜单</option>
 | |
|                                                 <option value="btn">按钮</option>
 | |
|                                             } else if item.Type == "menu" {
 | |
|                                                 <option value="node">菜单节点</option>
 | |
|                                                 <option value="menu" selected>菜单</option>
 | |
|                                                 <option value="btn">按钮</option>
 | |
|                                             } else if item.Type == "btn" {
 | |
|                                                 <option value="node">菜单节点</option>
 | |
|                                                 <option value="menu">菜单</option>
 | |
|                                                 <option value="btn" selected>按钮</option>
 | |
|                                             }
 | |
|                                         </select>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Url" class="layui-form-label">菜单URL</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <input type="text" id="Url" name="Url" value={ item.Url } autocomplete="off"
 | |
|                                             placeholder="请输入菜单URL" class="layui-input" style="width: 400px;" />
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Avatar" class="layui-form-label">图标</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <input type="text" id="Avatar" name="Avatar" value={ item.Avatar }
 | |
|                                             autocomplete="off" placeholder="请输入菜单图标" class="layui-input" />
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Style" class="layui-form-label">样式</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <input type="text" id="Style" name="Style" value={ item.Style } autocomplete="off"
 | |
|                                             placeholder="请输入样式" class="layui-input" style="width: 400px;" />
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label class="layui-form-label">上级菜单</label>
 | |
|                                     <div class="layui-input-inline" style="width:300px;">
 | |
|                                         <ul id="menuTree" class="dtree organizationTree"></ul>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label class="layui-form-label">是否可见</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         if item.Visible {
 | |
|                                             <input type="radio" id="Visible" name="Visible" value="true" title="可见" checked />
 | |
|                                             <input type="radio" id="Visible" name="Visible" value="false" title="不可见" />
 | |
|                                         } else {
 | |
|                                             <input type="radio" id="Visible" name="Visible" value="true" title="可见" />
 | |
|                                             <input type="radio" id="Visible" name="Visible" value="false" title="不可见" checked />
 | |
|                                         }
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label class="layui-form-label">是否列表</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         if item.IsList {
 | |
|                                             <input type="radio" id="IsList" name="IsList" value="true" title="是" checked />
 | |
|                                             <input type="radio" id="IsList" name="IsList" value="false" title="否" />
 | |
|                                         } else {
 | |
|                                             <input type="radio" id="IsList" name="IsList" value="true" title="是" />
 | |
|                                             <input type="radio" id="IsList" name="IsList" value="false" title="否" checked />
 | |
|                                         }
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Sort" class="layui-form-label">排序</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <input type="number" id="Sort" name="Sort" value={ item.Sort } lay-affix="number"
 | |
|                                             min="1" class="layui-input" />
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <label for="Status" class="layui-form-label">状态</label>
 | |
|                                     <div class="layui-input-inline">
 | |
|                                         <select id="Status" name="Status">
 | |
|                                             if item.Status == 0 {
 | |
|                                                 <option value="0" selected>正常</option>
 | |
|                                                 <option value="-1">删除</option>
 | |
|                                             } else if item.Status == -1 {
 | |
|                                                 <option value="0">正常</option>
 | |
|                                                 <option value="-1" selected>删除</option>
 | |
|                                             }
 | |
|                                         </select>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             <div class="layui-tab-item">
 | |
|                                 if item.ID > 0 {
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <div class="layui-form-label">创建时间</div>
 | |
|                                     <div class="layui-form-label" style="width:400px;text-align:left;">
 | |
|                                         { item.CreatedAt.Format(time.DateTime) }
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="layui-form-item">
 | |
|                                     <div class="layui-form-label">更新时间</div>
 | |
|                                     <div class="layui-form-label" style="width:400px;text-align:left;">
 | |
|                                         { item.UpdatedAt.Format(time.DateTime) }
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 }
 | |
|                             </div>
 | |
|                         </div>
 | |
|                     </div>
 | |
| 
 | |
|                     <div class="layui-form-item layui-fixbar btn-fixbar-box">
 | |
|                         <div class="layui-input-block">
 | |
|                             @component.SubmitBtn(meuns, "save")
 | |
|                             <button type="button" class="layui-btn layui-btn-primary layui-btn-sm" lay-on="close">
 | |
|                                 <i class="layui-icon layui-icon-close"></i>关闭
 | |
|                             </button>
 | |
|                         </div>
 | |
|                     </div>
 | |
| 
 | |
|                 </form>
 | |
|             </div>
 | |
|         </div>
 | |
|     }
 | |
| }
 | |
| 
 | |
| templ editCss() {
 | |
|     <style>
 | |
|         .layui-body {
 | |
|             padding: 15px;
 | |
|             left: 0;
 | |
|         }
 | |
|     </style>
 | |
| }
 | |
| 
 | |
| templ editJs(ctx context.Context, item *system.Menu) {
 | |
|     {{ token := mid.GetCsrfToken(ctx) }}
 | |
|     <script>
 | |
|         layui.use(['jquery', 'form', 'iconPicker', 'xmSelect', 'util'], function () {
 | |
|             let $ = layui.jquery;
 | |
|             let form = layui.form;
 | |
|             let iconPicker = layui.iconPicker;
 | |
|             let util = layui.util;
 | |
| 
 | |
|             getMenuTree();
 | |
| 
 | |
|             // 图标选择器
 | |
|             iconPicker.render({
 | |
|                 elem: '#Avatar',
 | |
|                 url: '/layui/font/iconfont.svg',
 | |
|                 type: 'fontClass'
 | |
|             });
 | |
| 
 | |
|             // 表单提交
 | |
|             form.on('submit(save)', function (data) {
 | |
|                 $.ajax({
 | |
|                     url: '/system/menu/save',
 | |
|                     type: 'post',
 | |
|                     dataType: 'json',
 | |
|                     data: data.field,
 | |
|                     success: function (result) {
 | |
|                         if (result.success) {
 | |
|                             layer.msg(result.msg, { icon: 1, time: 1000 }, function () {
 | |
|                                 parent.layer.close(parent.layer.getFrameIndex(window.name)); // 关闭当前页
 | |
|                                 parent.layui.table.reload("tablelist", {
 | |
|                                     page: { curr: 1 },
 | |
|                                 });
 | |
|                             });
 | |
|                         } else {
 | |
|                             parent.layer.msg(result.msg, { icon: 2 })
 | |
|                         }
 | |
|                     }
 | |
|                 });
 | |
| 
 | |
|                 return false;
 | |
|             });
 | |
| 
 | |
|             // 事件绑定
 | |
|             util.on("lay-on", {
 | |
|                 "close": function () {
 | |
|                     window.parent.layer.close(parent.layer.getFrameIndex(window.name));
 | |
|                 }
 | |
|             });
 | |
| 
 | |
| 
 | |
|             function getMenuTree() {
 | |
|                 $.ajax({
 | |
|                     url: "/system/menu/data?type=xm_select_tree",
 | |
|                     type: 'post',
 | |
|                     dataType: 'json',
 | |
|                     headers: { 'X-CSRF-Token': '{{ token }}' },
 | |
|                     success: function (res) {
 | |
|                         xmSelect.render({
 | |
|                             el: '#menuTree',
 | |
|                             // 工具栏
 | |
|                             toolbar: {
 | |
|                                 show: true
 | |
|                             },
 | |
|                             radio: true,
 | |
|                             clickClose: true,
 | |
|                             tips: '请选择父级',
 | |
|                             filterable: true,
 | |
|                             data: res,
 | |
|                             name: 'ParentID',
 | |
|                             initValue: ['{{ item.ParentID }}'],
 | |
|                             tree: {
 | |
|                                 show: true,
 | |
|                                 //非严格模式
 | |
|                                 strict: false,
 | |
|                                 //默认展开节点的数组, 为 true 时, 展开所有节点
 | |
|                                 expandedKeys: [1],
 | |
|                             },
 | |
|                             on: function (data) { },
 | |
|                         });
 | |
|                     },
 | |
|                     error: function (err) {
 | |
|                         // 处理请求错误
 | |
|                         console.log('请求出错:', err);
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
|     </script>
 | |
| } |