From 7a9ccedadcd7f6a27d6c2a40b2083a899dae4732 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期三, 11 十二月 2024 15:30:44 +0800 Subject: [PATCH] update 优化 新增编辑用户 过滤禁用的部门 --- src/views/system/user/index.vue | 57 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 1e15998..572f50c 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -39,11 +39,12 @@ <el-form-item label="鍒涘缓鏃堕棿" style="width: 308px"> <el-date-picker v-model="dateRange" - value-format="YYYY-MM-DD" + value-format="YYYY-MM-DD HH:mm:ss" type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" + :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" ></el-date-picker> </el-form-item> <el-form-item> @@ -80,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="Top" @click="handleImport">瀵煎叆鏁版嵁</el-dropdown-item> <el-dropdown-item 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> @@ -153,11 +154,12 @@ <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="璇烽�夋嫨褰掑睘閮ㄩ棬" check-strictly + @change="handleDeptChange" /> </el-form-item> </el-col> @@ -285,12 +287,13 @@ <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 { PostVO } from '@/api/system/post/types'; +import { PostQuery, PostVO } from '@/api/system/post/types'; import { treeselect } from '@/api/system/dept'; import { globalHeaders } from '@/utils/request'; import { to } from 'await-to-js'; +import { optionselect } from '@/api/system/post'; const router = useRouter(); const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -304,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[]>([]); @@ -390,7 +394,7 @@ message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' }, - { pattern: /^[^<>"'|\\]+$/, message: '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\\ |', trigger: 'blur' } + { pattern: /^[^<>"'|\\]+$/, message: '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\ |', trigger: 'blur' } ], email: [ { @@ -428,12 +432,6 @@ } ); -/** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ -const getTreeSelect = async () => { - const res = await api.deptTreeSelect(); - deptOptions.value = res.data; -}; - /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ const getList = async () => { loading.value = true; @@ -441,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; + }); }; /** 鑺傜偣鍗曞嚮浜嬩欢 */ @@ -503,7 +521,7 @@ inputErrorMessage: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', inputValidator: (value) => { if (/<|>|"|'|\||\\/.test(value)) { - return '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\\ |'; + return '涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > " \' \\ |'; } } }) @@ -592,6 +610,7 @@ roleOptions.value = data.roles; form.value.password = initPassword.value.toString(); }; + /** 淇敼鎸夐挳鎿嶄綔 */ const handleUpdate = async (row?: UserForm) => { reset(); @@ -639,12 +658,18 @@ form.value.status = '1'; }; onMounted(() => { - getTreeSelect(); // 鍒濆鍖栭儴闂ㄦ暟鎹� + getDeptTree(); // 鍒濆鍖栭儴闂ㄦ暟鎹� getList(); // 鍒濆鍖栧垪琛ㄦ暟鎹� proxy?.getConfigKey('sys.user.initPassword').then((response) => { initPassword.value = response.data; }); }); + +async function handleDeptChange(value: number | string) { + const response = await optionselect(value); + postOptions.value = response.data; + form.value.postIds = []; +} </script> <style lang="scss" scoped></style> -- Gitblit v1.9.3