147 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| package role
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 
 | |
|     "management/internal/erpserver/templ/base"
 | |
|     "management/internal/pkg/mid"
 | |
| 	"management/internal/erpserver/templ/component"
 | |
| 	"management/internal/erpserver/model/view"
 | |
| )
 | |
| 
 | |
| templ SetMenu(ctx context.Context, item *view.SetMenuView) {
 | |
|     @base.Base(ctx, setMenuCss(), setMenuJs(ctx)) {
 | |
|         {{ meuns := mid.GetCurMenus(ctx) }}
 | |
| 
 | |
|         if item.Role.ID == 0 {
 | |
|             <h3>角色数据错误, 请刷新重试</h3>
 | |
|             return
 | |
|         }
 | |
| 
 | |
|         <div class="layui-body layui-bg-white">
 | |
|             <form class="layui-form">
 | |
|                 <input type="hidden" name="ID" value={ item.Role.ID } />
 | |
|                 if len(item.Menus) > 0 {
 | |
|                     <div class="layui-collapse" lay-accordion>
 | |
|                         for _, menu := range item.Menus {
 | |
|                         <div class="layui-colla-item">
 | |
|                             <div class="layui-colla-title">{ menu.Name }({ menu.Link })</div>
 | |
|                             <div class="layui-colla-content">
 | |
|                                 if len(menu.Items) > 0 {
 | |
|                                     <div class="layui-collapse" lay-accordion>
 | |
|                                     for _, menu1 := range menu.Items {
 | |
|                                     <div class="layui-colla-item">
 | |
|                                         <div class="layui-colla-title">{ menu1.Name }({ menu1.Link })</div>
 | |
|                                         <div class="layui-colla-content">
 | |
|                                             if len(menu1.Items) > 0 {
 | |
|                                             <div class="layui-collapse" lay-accordion>
 | |
|                                                 for _, menu2 := range menu1.Items {
 | |
|                                                 <div class="layui-colla-item">
 | |
|                                                     <div class="layui-colla-title">{ menu2.Name }({ menu2.Link })</div>
 | |
|                                                     <div class="layui-colla-content">
 | |
|                                                         if len(menu2.Items) > 0 {
 | |
|                                                         <div class="layui-form">
 | |
|                                                             for _, menu3 := range menu2.Items {
 | |
|                                                             if menu3.IsSelect {
 | |
|                                                                 <input type="checkbox" name="menus" value={ menu3.ID } lay-text={ menu3.Name }
 | |
|                                                                     checked>
 | |
|                                                             } else {
 | |
|                                                                 <input type="checkbox" name="menus" value={ menu3.ID }
 | |
|                                                                     lay-text={ menu3.Name }>
 | |
|                                                             }
 | |
|                                                         }
 | |
|                                                         </div>
 | |
|                                                         }
 | |
|                                                     </div>
 | |
|                                                 </div>
 | |
|                                                 }
 | |
|                                             </div>
 | |
|                                             }
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                     }
 | |
|                                 </div>
 | |
|                                 }
 | |
|                             </div>
 | |
|                         </div>
 | |
|                         }
 | |
|                     </div>
 | |
|                 }
 | |
|                 <div class="layui-form-item" style="margin-top:10px;">
 | |
|                     @component.SubmitBtn(meuns, "set_menu")
 | |
|                 </div>
 | |
|             </form>
 | |
|         </div>
 | |
|     }
 | |
| }
 | |
| 
 | |
| templ setMenuCss() {
 | |
|     <style>
 | |
|         .layui-body {
 | |
|             padding: 15px;
 | |
|             left: 0;
 | |
|         }
 | |
| 
 | |
|         .layui-bg-white {
 | |
|             background-color: #ffffff;
 | |
|         }
 | |
| 
 | |
|         .layui-colla-content {
 | |
|             padding: 10px 15px;
 | |
|         }
 | |
| 
 | |
|         .layui-collapse {
 | |
|             margin-bottom: 0;
 | |
|         }
 | |
|     </style>
 | |
| }
 | |
| 
 | |
| templ setMenuJs(ctx context.Context) {
 | |
|     {{ token := mid.GetCsrfToken(ctx) }}
 | |
|     <script>
 | |
|         layui.use(['form', 'jquery', 'iconPicker'], function () {
 | |
|             let form = layui.form;
 | |
|             let $ = layui.jquery;
 | |
|             let iconPicker = layui.iconPicker;
 | |
| 
 | |
|             // 表单提交
 | |
|             form.on('submit(set_menu)', function (data) {
 | |
| 
 | |
|                 // 获取checkbox数据,拼接成字符串!!!!!!
 | |
|                 var menus = "";
 | |
|                 var r = document.getElementsByName("menus");
 | |
|                 for (var i = 0; i < r.length; i++) {
 | |
|                     if (r[i].checked) {
 | |
|                         menus += "," + r[i].value;
 | |
|                     }
 | |
|                 }
 | |
|                 if (menus.length > 0) {
 | |
|                     menus = menus.substring(1);
 | |
|                 }
 | |
|                 data.field.roleMenu = menus;
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: '/system/role/set_menu',
 | |
|                     type: 'post',
 | |
|                     headers: { 'X-CSRF-Token': '{{ token }}' },
 | |
|                     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;
 | |
|             });
 | |
|         });
 | |
|     </script>
 | |
| } |