From 3bd0ac27a231a1a2b5b7ae2f44501fea69c4ab1f Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期一, 27 三月 2023 11:00:27 +0800 Subject: [PATCH] 优化 --- src/views/system/role/components/RolePermissionDrawer.vue | 321 ++++++++++++++++++++++++++-------------------------- 1 files changed, 160 insertions(+), 161 deletions(-) diff --git a/src/views/system/role/components/RolePermissionDrawer.vue b/src/views/system/role/components/RolePermissionDrawer.vue index 69f4b7a..3fbe54b 100644 --- a/src/views/system/role/components/RolePermissionDrawer.vue +++ b/src/views/system/role/components/RolePermissionDrawer.vue @@ -1,5 +1,9 @@ <template> - <BasicDrawer v-bind="$attrs" @register="registerDrawer" width="650px" destroyOnClose showFooter> + <BasicDrawer v-bind="$attrs" + @register="registerDrawer" + width="650px" + destroyOnClose + showFooter> <template #title> 瑙掕壊鏉冮檺閰嶇疆 <a-dropdown> @@ -18,19 +22,9 @@ </template> </a-dropdown> </template> - <BasicTree - ref="treeRef" - checkable - :treeData="treeData" - :checkedKeys="checkedKeys" - :expandedKeys="expandedKeys" - :selectedKeys="selectedKeys" - :checkStrictly="checkStrictly" - :clickRowToExpand="false" - title="鎵�鎷ユ湁鐨勭殑鏉冮檺" - @check="onCheck" - @select="onTreeNodeSelect" - > + <BasicTree ref="treeRef" checkable :treeData="treeData" :checkedKeys="checkedKeys" :expandedKeys="expandedKeys" + :selectedKeys="selectedKeys" :checkStrictly="checkStrictly" :clickRowToExpand="false" title="鎵�鎷ユ湁鐨勭殑鏉冮檺" + @check="onCheck" @select="onTreeNodeSelect"> <template #title="{ slotTitle, ruleFlag }"> {{ slotTitle }} <Icon v-if="ruleFlag" icon="ant-design:align-left-outlined" style="margin-left: 5px; color: red"></Icon> @@ -39,168 +33,173 @@ <!--鍙充笅瑙掓寜閽�--> <template #footer> <PopConfirmButton title="纭畾鏀惧純缂栬緫锛�" @confirm="closeDrawer" okText="纭畾" cancelText="鍙栨秷">鍙栨秷</PopConfirmButton> - <a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">浠呬繚瀛�</a-button> + <a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost + style="margin-right: 0.8rem">浠呬繚瀛�</a-button> <a-button @click="handleSubmit(true)" type="primary" :loading="loading">淇濆瓨骞跺叧闂�</a-button> </template> <RoleDataRuleDrawer @register="registerDrawer1" /> </BasicDrawer> </template> <script lang="ts" setup> - import { ref, computed, unref, onMounted } from 'vue'; - import { BasicDrawer, useDrawer, useDrawerInner } from '/src/components/Drawer'; - import { BasicTree, TreeItem } from '/src/components/Tree'; - import { PopConfirmButton } from '/@/components/Button'; - import RoleDataRuleDrawer from './RoleDataRuleDrawer.vue'; - import { queryTreeListForRole, queryRolePermission, saveRolePermission } from '../role.api'; - const emit = defineEmits(['register']); - //鏍戠殑淇℃伅 - const treeData = ref<TreeItem[]>([]); - //鏍戠殑鍏ㄩ儴鑺傜偣淇℃伅 - const allTreeKeys = ref([]); - //鏍戠殑閫夋嫨鑺傜偣淇℃伅 - const checkedKeys = ref([]); - const defaultCheckedKeys = ref([]); - //鏍戠殑閫変腑鐨勮妭鐐逛俊鎭� - const selectedKeys = ref([]); - const roleId = ref(''); - //鏍戠殑瀹炰緥 - const treeRef = ref(null); - const loading = ref(false); +import { ref, computed, unref, onMounted } from 'vue' +import { BasicDrawer, useDrawer, useDrawerInner } from '/src/components/Drawer' +import { BasicTree, TreeItem } from '/src/components/Tree' +import { PopConfirmButton } from '/@/components/Button' +import RoleDataRuleDrawer from './RoleDataRuleDrawer.vue' +import { queryTreeListForRole, queryRolePermission, saveRolePermission } from '../role.api' +const emit = defineEmits(['register']) +//鏍戠殑淇℃伅 +const treeData = ref<TreeItem[]>([]) +//鏍戠殑鍏ㄩ儴鑺傜偣淇℃伅 +const allTreeKeys = ref([]) +//鏍戠殑閫夋嫨鑺傜偣淇℃伅 +const checkedKeys = ref([]) +const defaultCheckedKeys = ref([]) +//鏍戠殑閫変腑鐨勮妭鐐逛俊鎭� +const selectedKeys = ref([]) +const roleId = ref('') +//鏍戠殑瀹炰緥 +const treeRef = ref(null) +const loading = ref(false) - //灞曞紑鎶樺彔鐨刱ey - const expandedKeys = ref<any>([]); - //鐖跺瓙鑺傜偣閫変腑鐘舵�佹槸鍚﹀叧鑱� - const checkStrictly = ref<boolean>(true); - const [registerDrawer1, { openDrawer: openDataRuleDrawer }] = useDrawer(); - const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { - await reset(); - setDrawerProps({ confirmLoading: false, loading: true }); - roleId.value = data.roleId; - //鍒濆鍖栨暟鎹� - const roleResult = await queryTreeListForRole(); - treeData.value = roleResult.treeList; - allTreeKeys.value = roleResult.ids; - expandedKeys.value = roleResult.ids; - //鍒濆鍖栬鑹茶彍鍗曟暟鎹� - const permResult = await queryRolePermission({ roleId: unref(roleId) }); - checkedKeys.value = permResult; - defaultCheckedKeys.value = permResult; - setDrawerProps({ loading: false }); - }); - /** - * 鐐瑰嚮閫変腑 - */ - function onCheck(o) { - checkedKeys.value = o.checked ? o.checked : o; +//灞曞紑鎶樺彔鐨刱ey +const expandedKeys = ref<any>([]) +//鐖跺瓙鑺傜偣閫変腑鐘舵�佹槸鍚﹀叧鑱� +const checkStrictly = ref<boolean>(true) +const [registerDrawer1, { openDrawer: openDataRuleDrawer }] = useDrawer() +const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { + await reset() + setDrawerProps({ confirmLoading: false, loading: true }) + roleId.value = data.roleId + //鍒濆鍖栨暟鎹� + const roleResult = await queryTreeListForRole() + treeData.value = roleResult.treeList + allTreeKeys.value = roleResult.ids + expandedKeys.value = roleResult.ids + //鍒濆鍖栬鑹茶彍鍗曟暟鎹� + const permResult = await queryRolePermission({ roleId: unref(roleId) }) + checkedKeys.value = permResult + defaultCheckedKeys.value = permResult + setDrawerProps({ loading: false }) +}) +/** + * 鐐瑰嚮閫変腑 + */ +function onCheck(o) { + checkedKeys.value = o.checked ? o.checked : o +} +/** + * 閫変腑鑺傜偣锛屾墦寮�鏁版嵁鏉冮檺鎶藉眽 + */ +function onTreeNodeSelect(key) { + if (key && key.length > 0) { + selectedKeys.value = key } - /** - * 閫変腑鑺傜偣锛屾墦寮�鏁版嵁鏉冮檺鎶藉眽 - */ - function onTreeNodeSelect(key) { - if (key && key.length > 0) { - selectedKeys.value = key; - } - openDataRuleDrawer(true, { functionId: unref(selectedKeys)[0], roleId: unref(roleId) }); + openDataRuleDrawer(true, { functionId: unref(selectedKeys)[0], roleId: unref(roleId) }) +} +/** + * 鏁版嵁閲嶇疆 + */ +function reset() { + treeData.value = [] + allTreeKeys.value = [] + checkedKeys.value = [] + defaultCheckedKeys.value = [] + selectedKeys.value = [] + roleId.value = '' +} +/** + * 鑾峰彇tree瀹炰緥 + */ +function getTree() { + const tree = unref(treeRef) + if (!tree) { + throw new Error('tree is null!') } - /** - * 鏁版嵁閲嶇疆 - */ - function reset() { - treeData.value = []; - allTreeKeys.value = []; - checkedKeys.value = []; - defaultCheckedKeys.value = []; - selectedKeys.value = []; - roleId.value = ''; + return tree +} +/** + * 鎻愪氦 + */ +async function handleSubmit(exit) { + let params = { + roleId: unref(roleId), + permissionIds: unref(getTree().getCheckedKeys()).join(','), + lastpermissionIds: unref(defaultCheckedKeys).join(','), } - /** - * 鑾峰彇tree瀹炰緥 - */ - function getTree() { - const tree = unref(treeRef); - if (!tree) { - throw new Error('tree is null!'); - } - return tree; + //update-begin-author:taoyan date:2023-2-11 for: issues/352 VUE瑙掕壊鎺堟潈閲嶅淇濆瓨 + if (loading.value === false) { + await doSave(params) + } else { + console.log('璇风瓑寰呬笂娆℃墽琛屽畬姣�!') } - /** - * 鎻愪氦 - */ - async function handleSubmit(exit) { - let params = { - roleId: unref(roleId), - permissionIds: unref(getTree().getCheckedKeys()).join(','), - lastpermissionIds: unref(defaultCheckedKeys).join(','), - }; - //update-begin-author:taoyan date:2023-2-11 for: issues/352 VUE瑙掕壊鎺堟潈閲嶅淇濆瓨 - if(loading.value===false){ - await doSave(params) - }else{ - console.log('璇风瓑寰呬笂娆℃墽琛屽畬姣�!'); - } - if(exit){ - // 濡傛灉鍏抽棴 - closeDrawer(); - }else{ - // 娌℃湁鍏抽棴闇�瑕侀噸鏂拌幏鍙栭�変腑鏁版嵁 - const permResult = await queryRolePermission({ roleId: unref(roleId) }); - defaultCheckedKeys.value = permResult; - } + if (exit) { + // 濡傛灉鍏抽棴 + closeDrawer() + } else { + // 娌℃湁鍏抽棴闇�瑕侀噸鏂拌幏鍙栭�変腑鏁版嵁 + const permResult = await queryRolePermission({ roleId: unref(roleId) }) + defaultCheckedKeys.value = permResult } - - // VUE瑙掕壊鎺堟潈閲嶅淇濆瓨 #352 - async function doSave(params) { - loading.value = true; - await saveRolePermission(params); - setTimeout(()=>{ - loading.value = false; - }, 500) - } - //update-end-author:taoyan date:2023-2-11 for: issues/352 VUE瑙掕壊鎺堟潈閲嶅淇濆瓨 +} - /** - * 鏍戣彍鍗曢�夋嫨 - * @param key - */ - function treeMenuClick({ key }) { - if (key === 'checkAll') { - checkedKeys.value = allTreeKeys.value; - } else if (key === 'cancelCheck') { - checkedKeys.value = []; - } else if (key === 'openAll') { - expandedKeys.value = allTreeKeys.value; - } else if (key === 'closeAll') { - expandedKeys.value = []; - } else if (key === 'relation') { - checkStrictly.value = false; - } else { - checkStrictly.value = true; - } +// VUE瑙掕壊鎺堟潈閲嶅淇濆瓨 #352 +async function doSave(params) { + loading.value = true + await saveRolePermission(params) + setTimeout(() => { + loading.value = false + }, 500) +} +//update-end-author:taoyan date:2023-2-11 for: issues/352 VUE瑙掕壊鎺堟潈閲嶅淇濆瓨 + +/** + * 鏍戣彍鍗曢�夋嫨 + * @param key + */ +function treeMenuClick({ key }) { + if (key === 'checkAll') { + checkedKeys.value = allTreeKeys.value + } else if (key === 'cancelCheck') { + checkedKeys.value = [] + } else if (key === 'openAll') { + expandedKeys.value = allTreeKeys.value + } else if (key === 'closeAll') { + expandedKeys.value = [] + } else if (key === 'relation') { + checkStrictly.value = false + } else { + checkStrictly.value = true } +} </script> <style lang="less" scoped> - /** 鍥哄畾鎿嶄綔鎸夐挳 */ - .jeecg-basic-tree { - position: absolute; - width: 618px; - } - //update-begin---author:wangshuai ---date:20230202 for锛氭娊灞夊脊绐楁爣棰樺浘鏍囦笅鎷夋牱寮�------------ - .line { - height: 1px; - width: 100%; - border-bottom: 1px solid #f0f0f0; - } - .more-icon { - font-size: 20px !important; - color: black; - display: inline-flex; - float: right; - margin-right: 2px; - cursor: pointer; - } - :deep(.jeecg-tree-header){ - border-bottom: none; - } - //update-end---author:wangshuai ---date:20230202 for锛氭娊灞夊脊绐楁爣棰樺浘鏍囦笅鎷夋牱寮�------------ +/** 鍥哄畾鎿嶄綔鎸夐挳 */ +.jeecg-basic-tree { + position: absolute; + width: 618px; +} + +//update-begin---author:wangshuai ---date:20230202 for锛氭娊灞夊脊绐楁爣棰樺浘鏍囦笅鎷夋牱寮�------------ +.line { + height: 1px; + width: 100%; + border-bottom: 1px solid #f0f0f0; +} + +.more-icon { + font-size: 20px !important; + color: black; + display: inline-flex; + float: right; + margin-right: 2px; + cursor: pointer; +} + +:deep(.jeecg-tree-header) { + border-bottom: none; +} + +//update-end---author:wangshuai ---date:20230202 for锛氭娊灞夊脊绐楁爣棰樺浘鏍囦笅鎷夋牱寮�------------ </style> -- Gitblit v1.9.3