Prechádzať zdrojové kódy

更新依赖和菜单权限

ZaiZai 2 rokov pred
rodič
commit
292910fc19

+ 1 - 1
package.json

@@ -11,7 +11,7 @@
     "dependencies": {
         "axios": "^1.4.0",
         "crypto-js": "^4.1.1",
-        "dayjs": "^1.11.8",
+        "dayjs": "^1.11.9",
         "echarts": "^5.4.2",
         "element-plus": "2.3.7",
         "hc-vue3-ui": "^1.5.9",

+ 21 - 0
src/api/modules/system/organization.js

@@ -39,4 +39,25 @@ export default {
             params: form
         }, false);
     },
+    //获取相关数据
+    async getMenuKeys(id) {
+        return httpApi({
+            url: '/api/blade-system/menu/role-tree-keys',
+            method: 'get',
+            params: {
+                roleIds: id
+            }
+        }, false);
+    },
+    //获取相关数据
+    async setMenuGrant(id, ids = []) {
+        return httpApi({
+            url: '/api/blade-system/role/grant',
+            method: 'post',
+            data: {
+                roleIds: [id],
+                menuHacIds: ids
+            }
+        }, false);
+    },
 }

+ 42 - 11
src/views/system/organization.vue

@@ -45,7 +45,7 @@
 
         <HcDialog bgColor="#ffffff" isToBody isTable :show="authModal" title="权限配置" @save="authModalSave" @close="authModalClose" widths="40rem">
             <el-scrollbar>
-                <HcDataTree treeKey="id" :h-props="treeProps" :datas="treeMenuNode" :defaultCheckedKeys="treeMenuKeys" showCheckbox @check="treeMenuNodeCheck">
+                <HcDataTree ref="authTreeRef" treeKey="id" :h-props="treeProps" :datas="treeMenuNode" :defaultCheckedKeys="treeMenuKeys" showCheckbox>
                     <template #default="{node, data}">
                         <span class="hc-tree-menu-label">{{node.label}}</span>
                         <span class="hc-tree-menu-remark">{{data.remark}}</span>
@@ -66,7 +66,7 @@ import menuApi from "~api/system/menu";
 import {delMessage} from "~uti/tools";
 
 //显示模式
-const isedit = ref(false)
+const isedit = ref(true)
 
 //页面被激活时
 onActivated(() => {
@@ -122,7 +122,9 @@ const formRules = {
 }
 
 //树节点的菜单点击事件
+const treeInfo = ref({})
 const treeMenuTap = ({key, node, data}) => {
+    treeInfo.value = data
     if (key === 'add') {
         formModel.value = {
             parentId: data.id,
@@ -191,16 +193,21 @@ const delNodeClick = async (data) => {
 
 //权限配置
 const authModal = ref(false)
+const authTreeRef = ref(null)
 const treeMenuNode = ref([])
 const treeProps = ref({
     label: 'name',
     children: 'children'
 })
 
+//默认勾选的节点
+const treeMenuKeys = ref([])
 const authModalShow = (data) => {
     treeMenuNode.value = []
+    treeMenuKeys.value = []
     authModal.value = true
     getMenuData()
+    getMenuKeyApi(data.id)
 }
 
 const getMenuData = async () => {
@@ -212,18 +219,42 @@ const getMenuData = async () => {
     }
 }
 
-//默认勾选的节点
-const treeMenuKeys = ref([])
-
-//树节点被选择
-const treeMenuNodeCheck = (data, {checkedKeys, halfCheckedKeys}) => {
-    console.log('全选', checkedKeys) //全选
-    console.log('半选', halfCheckedKeys) //半选
+//获取已勾选的菜单key
+const getMenuKeyApi = async (id) => {
+    treeMenuKeys.value = []
+    const {error, code, data} = await mainApi.getMenuKeys(id)
+    if (!error && code === 200) {
+        const arr = getArrValue(data?.usermenu)
+        arr.forEach((item)=>{
+            let arr = item.split("---");
+            if(arr[1] === 'all'){
+                treeMenuKeys.value.push(arr[0])
+            }
+        });
+    } else {
+        treeMenuKeys.value = []
+    }
 }
 
 //权限配置弹窗保存
-const authModalSave = () => {
-
+const authModalSave = async () => {
+    let id = treeInfo.value?.id, menuAll = [];
+    const menuList = authTreeRef.value?.treeRef.getCheckedKeys()        // 全选节点
+    const menuHalf = authTreeRef.value?.treeRef.getHalfCheckedKeys()    // 半选
+    menuList.forEach((id)=>{
+        menuAll.push(id + '---all')
+    })
+    menuHalf.forEach((id)=>{
+        menuAll.push(id + '---hanlf')
+    })
+    //发起请求
+    const {error, code, msg} = await mainApi.setMenuGrant(id, menuAll)
+    if (!error && code === 200) {
+        window?.$message?.success(msg)
+        authModal.value = false
+    } else {
+        window?.$message?.error(msg)
+    }
 }
 
 //权限配置弹窗关闭

+ 5 - 0
yarn.lock

@@ -598,6 +598,11 @@ dayjs@^1.11.8:
   resolved "http://47.110.251.215:9000/dayjs/-/dayjs-1.11.8.tgz#4282f139c8c19dd6d0c7bd571e30c2d0ba7698ea"
   integrity sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==
 
+dayjs@^1.11.9:
+  version "1.11.9"
+  resolved "http://47.110.251.215:9000/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a"
+  integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
+
 delayed-stream@~1.0.0:
   version "1.0.0"
   resolved "http://47.110.251.215:9000/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"