From 64d240185c5b7f7507d8217f50950af37201ab97 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期五, 21 六月 2024 09:24:40 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/web/AuthController.java |   46 ++++-
 src/main/java/com/zy/common/web/BaseController.java |    8 +
 src/main/webapp/views/pdaResource/pdaResource.html  |  309 ++++++++++++++++++++++++++++++++++++++++++++
 src/main/webapp/static/js/order/order.js            |    6 
 src/main/webapp/static/js/role/rolePower.js         |   11 +
 5 files changed, 363 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/zy/common/web/AuthController.java b/src/main/java/com/zy/common/web/AuthController.java
index a54e094..ee8c27d 100644
--- a/src/main/java/com/zy/common/web/AuthController.java
+++ b/src/main/java/com/zy/common/web/AuthController.java
@@ -25,6 +25,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2019-07-30
@@ -283,19 +284,21 @@
         if (!Cools.isEmpty(powers)){
             List<PowerDto> dtos = JSON.parseArray(powers, PowerDto.class);
             for (PowerDto dto : dtos) {
-                Resource resource = resourceService.selectOne(new EntityWrapper<Resource>().eq("id", dto.getTwo()).eq("level", 2));
-                if (!Cools.isEmpty(resource)) {
-                    // 鏍¢獙涓婄骇鏉冮檺
-                    if (leaderId != null) {
-                        RoleResource roleResource = roleResourceService.selectOne(new EntityWrapper<RoleResource>().eq("role_id", leaderId).eq("resource_id", resource.getId()));
-                        if (null == roleResource) {
-                            throw new CoolException(resource.getName().concat("鏃犳硶鎺堟潈缁�").concat(role.getName()));
+                if (isNumber(dto.getTwo())) {
+                    Resource resource = resourceService.selectOne(new EntityWrapper<Resource>().eq("id", dto.getTwo()).eq("level", 2));
+                    if (!Cools.isEmpty(resource)) {
+                        // 鏍¢獙涓婄骇鏉冮檺
+                        if (leaderId != null) {
+                            RoleResource roleResource = roleResourceService.selectOne(new EntityWrapper<RoleResource>().eq("role_id", leaderId).eq("resource_id", resource.getId()));
+                            if (null == roleResource) {
+                                throw new CoolException(resource.getName().concat("鏃犳硶鎺堟潈缁�").concat(role.getName()));
+                            }
                         }
+                        RoleResource roleResource = new RoleResource();
+                        roleResource.setRoleId(roleId);
+                        roleResource.setResourceId(resource.getId());
+                        roleResourceService.insert(roleResource);
                     }
-                    RoleResource roleResource = new RoleResource();
-                    roleResource.setRoleId(roleId);
-                    roleResource.setResourceId(resource.getId());
-                    roleResourceService.insert(roleResource);
                 } else {
                     Permission permission = permissionService.selectOne(new EntityWrapper<Permission>().eq("action", dto.getTwo()));
                     if (!Cools.isEmpty(permission)){
@@ -312,7 +315,7 @@
                         if (leaderId != null) {
                             RoleResource roleResource = roleResourceService.selectOne(new EntityWrapper<RoleResource>().eq("role_id", leaderId).eq("resource_id", resource1.getId()));
                             if (null == roleResource) {
-                                throw new CoolException(resource.getName().concat("鐨�").concat(resource1.getName().concat("鏃犳硶鎺堟潈缁�").concat(role.getName())));
+                                throw new CoolException(resource1.getName().concat("鏃犳硶鎺堟潈缁�").concat(role.getName()));
                             }
                         }
                         RoleResource roleResource = new RoleResource();
@@ -385,4 +388,23 @@
         return R.ok("婵�娲绘垚鍔燂紝鏈夋晥鏈熻嚦"+DateUtils.convert(exprTime));
     }
 
+    @RequestMapping("/menu/pda/auth")
+    @ManagerAuth
+    public R menuPda(){
+        Long userId = getUserId();
+        List<RolePermission> rolePermissions;
+        if (userId == 9527L) {
+            rolePermissions = rolePermissionService.selectList(new EntityWrapper<>());
+        } else {
+            Long roleId = getUser().getRoleId();
+            rolePermissions = rolePermissionService.selectList(new EntityWrapper<RolePermission>().eq("role_id", roleId));
+        }
+        if (Cools.isEmpty(rolePermissions)) {
+            return R.ok();
+        }
+        List<Long> collect = rolePermissions.stream().map(RolePermission::getPermissionId).distinct().collect(Collectors.toList());
+        List<Permission> permissions = permissionService.selectBatchIds(collect);
+        return R.ok().add(permissions);
+    }
+
 }
diff --git a/src/main/java/com/zy/common/web/BaseController.java b/src/main/java/com/zy/common/web/BaseController.java
index e7bcbd5..0309a4a 100644
--- a/src/main/java/com/zy/common/web/BaseController.java
+++ b/src/main/java/com/zy/common/web/BaseController.java
@@ -205,4 +205,12 @@
         }
     }
 
+    public static boolean isNumber(String str){
+        for (int i = str.length();--i>=0;){
+            if (!Character.isDigit(str.charAt(i))){
+                return false;
+            }
+        }
+        return true;
+    }
 }
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 771480f..cd04891 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -44,6 +44,9 @@
         cellMinWidth: 100,
         cols: [[
             {type: 'numbers'},
+            {field: 'defNumber', align: 'center', title: '鎿嶄綔绯荤粺鍙�', hide: false, width: 120},
+            {field: '鎿嶄綔鍗曟嵁', align: 'center', title: '鎿嶄綔鍗曟嵁', hide: true},
+            {field: '鎿嶄綔绫诲瀷', align: 'center', title: '鎿嶄綔绫诲瀷', hide: true},
             {field: 'orderNo', title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
             //{field: 'itemName', align: 'center', title: '鏍哥畻涓讳綋'},
             {field: 'docType$', align: 'center', title: '鍗曟嵁绫诲瀷'},
@@ -51,6 +54,7 @@
             //{field: 'postFee', align: 'center', title: '鎬绘暟閲�',  minWidth: 130, width: 130},
             {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
             {field: 'createTime$', title: '鍒涘缓鏃堕棿'},
+            {field: 'shipCode', align: 'center',title: '鍒跺崟浜�', hide: false},
             {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
             {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
             {field: 'orderTime', align: 'center',title: '鍗曟嵁鏃ユ湡', hide: true},
@@ -58,7 +62,7 @@
             {field: 'tel', align: 'center',title: '浠撳簱', hide: true},
             {field: 'operMemb', align: 'center',title: '鍑哄叆搴撶被鍒�', hide: true},
             {field: 'salesman', align: 'center',title: '閮ㄩ棬', hide: true},
-            {field: 'shipCode', align: 'center',title: '鍒跺崟浜�', hide: true},
+
             {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 180}
         ]],
         request: {
diff --git a/src/main/webapp/static/js/role/rolePower.js b/src/main/webapp/static/js/role/rolePower.js
index 212e2ba..e4a35fb 100644
--- a/src/main/webapp/static/js/role/rolePower.js
+++ b/src/main/webapp/static/js/role/rolePower.js
@@ -39,13 +39,16 @@
     form.on('submit(save)', function () {
         var param = [];
         var checkData = tree.getChecked('powerTree');
+        console.log(checkData)
         checkData.map(function (obj) {
             obj.children.map(function (resource) {
-
+                console.log(resource)
                 var childrens = [];
-                resource.children.map(function (resource) {
-                    childrens.push(resource.id);
-                });
+                if (resource.children) {
+                    resource.children.map(function (resource) {
+                        childrens.push(resource.id);
+                    });
+                }
                 var one = {
                     'two': resource.id,
                     'three': childrens
diff --git a/src/main/webapp/views/pdaResource/pdaResource.html b/src/main/webapp/views/pdaResource/pdaResource.html
new file mode 100644
index 0000000..92c2330
--- /dev/null
+++ b/src/main/webapp/views/pdaResource/pdaResource.html
@@ -0,0 +1,309 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <style>
+        #detail {
+            padding: 25px 30px 0 0;
+        }
+        .ew-tree-table-box {
+            height: 100%;
+        }
+    </style>
+</head>
+<body>
+
+
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <!-- 鏁版嵁琛ㄦ牸 -->
+            <table id="resource"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-del" lay-event="del">鍒犻櫎</a>
+</script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form" style="margin: 0">
+        <input name="id" type="hidden">
+        <input name="uuid" type="hidden">
+        <input name="level" type="hidden">
+        <div class="layui-row">
+
+            <div class="layui-col-md6">
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓婄骇鑿滃崟</label>
+                    <div class="layui-input-block">
+                        <div id="resourceParentSel" class="ew-xmselect-tree"></div>
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鑿滃崟缂栫爜</label>
+                    <div class="layui-input-block">
+                        <input name="code" placeholder="璇疯緭鍏ヨ彍鍗曠紪鐮�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">绫诲瀷</label>
+                    <div class="layui-input-block">
+                        <select name="level" lay-vertype="tips" lay-verify="required" required="">
+                            <option value="">璇烽�夋嫨绫诲瀷</option>
+                            <option value="1">涓�绾ц彍鍗�</option>
+                            <option value="2">浜岀骇鑿滃崟</option>
+                            <option value="3">鎸夐挳</option>
+                        </select>
+                    </div>
+                </div>
+
+            </div>
+
+            <div class="layui-col-md6">
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鑿滃崟鍚嶇О</label>
+                    <div class="layui-input-block">
+                        <input name="name" placeholder="璇疯緭鍏ヨ彍鍗曞悕绉�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎺掑簭</label>
+                    <div class="layui-input-block">
+                        <input name="sort" placeholder="璇疯緭鍏ユ帓搴�" class="layui-input" lay-verify="number">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鐘舵��</label>
+                    <div class="layui-input-block">
+                        <select name="status" lay-vertype="tips" lay-verify="required" required="">
+                            <option value="">璇烽�夋嫨鐘舵��</option>
+                            <option value="1">姝e父</option>
+                            <option value="0">绂佺敤</option>
+                        </select>
+                    </div>
+                </div>
+
+            </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+<script type="text/html" id="typeTpl">
+    {{# if( d.level === 1 ){ }}
+    <span name="level" class="layui-badge layui-badge-green">鑿滃崟</span>
+    {{# } else if(d.level === 2){ }}
+    <span name="level" class="layui-badge layui-badge-green">鑿滃崟</span>
+    {{# } else if(d.level === 3){ }}
+    <span name="level" class="layui-badge layui-badge-gray">鎸夐挳</span>
+    {{# } }}
+</script>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+
+<script>
+    layui.config({
+        base: baseUrl + "/static/layui/lay/modules/"
+    }).use(['form','treeTable', 'admin', 'xmSelect'], function() {
+        var $ = layui.jquery;
+        var layer = layui.layer;
+        var form = layui.form;
+        var admin = layui.admin;
+        var treeTable = layui.treeTable;
+        var xmSelect = layui.xmSelect;
+        var tbDataList = [];
+
+        var insTb = treeTable.render({
+            elem: '#resource',
+            url: baseUrl+'/resource/tree/auth',
+            headers: {token: localStorage.getItem('token')},
+            height: 'full-200',
+            toolbar: ['<p>',
+                '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>&nbsp;',
+                '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon">&#xe640;</i>鍒犻櫎</button>',
+                '</p>'].join(''),
+            tree: {
+                iconIndex: 2,           // 鎶樺彔鍥炬爣鏄剧ず鍦ㄧ鍑犲垪
+                isPidData: true,        // 鏄惁鏄痠d銆乸id褰㈠紡鏁版嵁
+                idName: 'id',           // id瀛楁鍚嶇О
+                pidName: 'resourceId'     // pid瀛楁鍚嶇О
+            },
+            cols: [[
+                {type: 'checkbox', fixed: 'left'}
+                ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80, hide: true}
+                ,{field: 'name', align: 'left',title: '鑿滃崟鍚嶇О'}
+                ,{field: 'code', align: 'center',title: '鑿滃崟缂栫爜'}
+                // ,{field: 'resourceName', align: 'center',title: '鐖剁骇鑿滃崟'}
+                // ,{field: 'level$', align: 'center',title: '鑿滃崟绛夌骇'}
+                ,{field: 'type', align: 'center',title: '绫诲瀷', templet: '#typeTpl', width: 120}
+                ,{field: 'sort', align: 'center',title: '鎺掑簭'}
+
+                ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+            ]],
+            done: function (data) {
+                $('.ew-tree-table-box').css('height', '100%');
+                // insTb.expandAll();
+                tbDataList = data;
+                limit();
+            }
+        });
+
+        /* 琛ㄦ牸澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+        treeTable.on('toolbar(resource)', function (obj) {
+            if (obj.event === 'add') { // 娣诲姞
+                showEditModel();
+            } else if (obj.event === 'del') { // 鍒犻櫎
+                var checkRows = insTb.checkStatus();
+                if (checkRows.length === 0) {
+                    layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                    return;
+                }
+                var ids = checkRows.map(function (d) {
+                    if (!d.LAY_INDETERMINATE) {
+                        return d.id;
+                    } else {
+                        return null;
+                    }
+                });
+                doDel({ids: ids});
+            }
+        });
+
+        /* 琛ㄦ牸鎿嶄綔鍒楃偣鍑讳簨浠� */
+        treeTable.on('tool(resource)', function (obj) {
+            if (obj.event === 'edit') { // 淇敼
+                showEditModel(obj.data);
+            } else if (obj.event === 'del') { // 鍒犻櫎
+                doDel(obj);
+            }
+        });
+
+        /* 鏄剧ず琛ㄥ崟寮圭獥 */
+        function showEditModel(mData) {
+            admin.open({
+                type: 1,
+                area: '600px',
+                title: (mData ? '淇敼' : '娣诲姞') + '鏉冮檺',
+                content: $('#editDialog').html(),
+                success: function (layero, dIndex) {
+                    // 鍥炴樉琛ㄥ崟鏁版嵁
+                    form.val('detail', mData);
+                    // 琛ㄥ崟鎻愪氦浜嬩欢
+                    form.on('submit(editSubmit)', function (data) {
+                        data.field.resourceId = insXmSel.getValue('valueStr');
+                        var loadIndex = layer.load(2);
+                        $.ajax({
+                            url: baseUrl+"/resource/"+(mData?'update':'add')+"/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: data.field,
+                            method: 'POST',
+                            success: function (res) {
+                                layer.close(loadIndex);
+                                if (res.code === 200){
+                                    layer.close(dIndex);
+                                    layer.msg(res.msg, {icon: 1});
+                                    insTb.refresh();
+                                    setTimeout(function () {
+                                        insTb.expand(data.field.resourceId);
+                                    }, 200)
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                }else {
+                                    layer.msg(res.msg, {icon: 2});
+                                }
+                            }
+                        })
+                        return false;
+                    });
+
+                    // 娓叉煋涓嬫媺鏍�
+                    var insXmSel = xmSelect.render({
+                        el: '#resourceParentSel',
+                        height: '250px',
+                        data: insTb.options.data,
+                        initValue: mData&&mData.resourceId!=null ? [mData.resourceId] : [],
+                        model: {label: {type: 'text'}},
+                        prop: {
+                            name: 'name',
+                            value: 'id'
+                        },
+                        radio: true,
+                        clickClose: true,
+                        tree: {
+                            show: true,
+                            indent: 15,
+                            strict: false,
+                            expandedKeys: false
+                        }
+                    });
+                    // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                    $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                    layui.form.render('select');
+                }
+            });
+        }
+
+        /* 鍒犻櫎 */
+        function doDel(obj) {
+            layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+                skin: 'layui-layer-admin',
+                shade: .1
+            }, function (i) {
+                layer.close(i);
+                var loadIndex = layer.load(2);
+                var ids;
+                if (obj.data) {
+                    ids = [];
+                    ids[0] = obj.data.id;
+                } else {
+                    ids = obj.ids;
+                }
+                $.ajax({
+                    url: baseUrl+"/resource/delete/auth",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {ids: ids},
+                    method: 'POST',
+                    success: function (res) {
+                        layer.close(loadIndex);
+                        if (res.code === 200){
+                            layer.msg(res.msg, {icon: 1});
+                            insTb.refresh();
+                        } else if (res.code === 403){
+                            top.location.href = baseUrl+"/";
+                        } else {
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                })
+            });
+        }
+
+    });
+</script>
+</body>
+</html>
+

--
Gitblit v1.9.1