From 5e440a7dc434c43eb828fa62cf9c12b0078b8565 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:36:18 +0800 Subject: [PATCH] !173 发布 5.3.0-BETA 公测版本 Merge pull request !173 from 疯狂的狮子Li/dev --- src/views/system/user/index.vue | 60 ++++++++++++++++++++++++++++++++---------------------------- 1 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 46bffd2..430c55a 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -63,12 +63,12 @@ <el-button v-has-permi="['system:user:add']" type="primary" plain icon="Plus" @click="handleAdd()">鏂板</el-button> </el-col> <el-col :span="1.5"> - <el-button v-has-permi="['system:user:add']" type="success" plain :disabled="single" icon="Edit" @click="handleUpdate()"> + <el-button v-has-permi="['system:user:edit']" type="success" plain :disabled="single" icon="Edit" @click="handleUpdate()"> 淇敼 </el-button> </el-col> <el-col :span="1.5"> - <el-button v-has-permi="['system:user:delete']" type="danger" plain :disabled="multiple" icon="Delete" @click="handleDelete()"> + <el-button v-has-permi="['system:user:remove']" type="danger" plain :disabled="multiple" icon="Delete" @click="handleDelete()"> 鍒犻櫎 </el-button> </el-col> @@ -81,13 +81,13 @@ <template #dropdown> <el-dropdown-menu> <el-dropdown-item icon="Download" @click="importTemplate">涓嬭浇妯℃澘</el-dropdown-item> - <el-dropdown-item icon="Top" @click="handleImport"> 瀵煎叆鏁版嵁</el-dropdown-item> - <el-dropdown-item icon="Download" @click="handleExport"> 瀵煎嚭鏁版嵁</el-dropdown-item> + <el-dropdown-item v-has-permi="['system:user:import']" icon="Top" @click="handleImport">瀵煎叆鏁版嵁</el-dropdown-item> + <el-dropdown-item v-has-permi="['system:user:export']" icon="Download" @click="handleExport">瀵煎嚭鏁版嵁</el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> </el-col> - <right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar> + <right-toolbar v-model:show-search="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar> </el-row> </template> @@ -154,7 +154,7 @@ <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId"> <el-tree-select v-model="form.deptId" - :data="deptOptions" + :data="enabledDeptOptions" :props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬" @@ -287,7 +287,7 @@ <script setup name="User" lang="ts"> import api from '@/api/system/user'; import { UserForm, UserQuery, UserVO } from '@/api/system/user/types'; -import { DeptVO } from '@/api/system/dept/types'; +import {DeptTreeVO, DeptVO} from '@/api/system/dept/types'; import { RoleVO } from '@/api/system/role/types'; import { PostQuery, PostVO } from '@/api/system/post/types'; import { treeselect } from '@/api/system/dept'; @@ -307,7 +307,8 @@ const total = ref(0); const dateRange = ref<[DateModelType, DateModelType]>(['', '']); const deptName = ref(''); -const deptOptions = ref<DeptVO[]>([]); +const deptOptions = ref<DeptTreeVO[]>([]); +const enabledDeptOptions = ref<DeptTreeVO[]>([]); const initPassword = ref<string>(''); const postOptions = ref<PostVO[]>([]); const roleOptions = ref<RoleVO[]>([]); @@ -393,7 +394,7 @@ message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' }, - { pattern: /^[^<>"'|\\]+$/, message: '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\\ |', trigger: 'blur' } + { pattern: /^[^<>"'|\\]+$/, message: '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\ |', trigger: 'blur' } ], email: [ { @@ -431,12 +432,6 @@ } ); -/** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ -const getTreeSelect = async () => { - const res = await api.deptTreeSelect(); - deptOptions.value = res.data; -}; - /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ const getList = async () => { loading.value = true; @@ -444,6 +439,26 @@ loading.value = false; userList.value = res.rows; total.value = res.total; +}; + +/** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ +const getDeptTree = async () => { + const res = await api.deptTreeSelect(); + deptOptions.value = res.data; + enabledDeptOptions.value = filterDisabledDept(res.data); +}; + +/** 杩囨护绂佺敤鐨勯儴闂� */ +const filterDisabledDept = (deptList: DeptTreeVO[]) => { + return deptList.filter(dept => { + if (dept.disabled) { + return false; + } + if (dept.children && dept.children.length) { + dept.children = filterDisabledDept(dept.children); + } + return true; + }); }; /** 鑺傜偣鍗曞嚮浜嬩欢 */ @@ -506,7 +521,7 @@ inputErrorMessage: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', inputValidator: (value) => { if (/<|>|"|'|\||\\/.test(value)) { - return '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\\ |'; + return '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\ |'; } } }) @@ -564,15 +579,6 @@ uploadRef.value?.submit(); } -/** 鍒濆鍖栭儴闂ㄦ暟鎹� */ -const initTreeData = async () => { - // 鍒ゆ柇閮ㄩ棬鐨勬暟鎹槸鍚﹀瓨鍦紝瀛樺湪涓嶈幏鍙栵紝涓嶅瓨鍦ㄥ垯鑾峰彇 - if (deptOptions.value === undefined) { - const { data } = await treeselect(); - deptOptions.value = data; - } -}; - /** 閲嶇疆鎿嶄綔琛ㄥ崟 */ const reset = () => { form.value = { ...initFormData }; @@ -590,7 +596,6 @@ const { data } = await api.getUser(); dialog.visible = true; dialog.title = '鏂板鐢ㄦ埛'; - await initTreeData(); postOptions.value = data.posts; roleOptions.value = data.roles; form.value.password = initPassword.value.toString(); @@ -603,7 +608,6 @@ const { data } = await api.getUser(userId); dialog.visible = true; dialog.title = '淇敼鐢ㄦ埛'; - await initTreeData(); Object.assign(form.value, data.user); postOptions.value = data.posts; roleOptions.value = data.roles; @@ -643,7 +647,7 @@ form.value.status = '1'; }; onMounted(() => { - getTreeSelect(); // 鍒濆鍖栭儴闂ㄦ暟鎹� + getDeptTree(); // 鍒濆鍖栭儴闂ㄦ暟鎹� getList(); // 鍒濆鍖栧垪琛ㄦ暟鎹� proxy?.getConfigKey('sys.user.initPassword').then((response) => { initPassword.value = response.data; -- Gitblit v1.9.3