From 0aee1f54f70a39c7b6f7ae597acb0aadc854e1a0 Mon Sep 17 00:00:00 2001 From: GAOANG <1140589958@qq.com> Date: Mon, 14 Jul 2025 15:56:46 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E7=BB=84=E7=BB=87=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=A8=A1=E7=B3=8A=E6=90=9C=E7=B4=A2=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/department/index.ts | 19 +++++ .../src/components/SelectDepartmentTreeV2.vue | 72 ++++++++++++++----- .../src/components/SelectDepartmentV2.vue | 7 +- 3 files changed, 81 insertions(+), 17 deletions(-) diff --git a/src/api/system/department/index.ts b/src/api/system/department/index.ts index 78217fe..5ffbe9f 100644 --- a/src/api/system/department/index.ts +++ b/src/api/system/department/index.ts @@ -13,6 +13,7 @@ enum Api { Page = '/organization/department/page', Tree = '/organization/department/tree', Trees = '/organization/department/trees', + queryDeptTrees = '/common/queryDeptTrees', EnabledTree = '/organization/department/enabled-tree', Info = '/organization/department/info', Department = '/organization/department', @@ -54,6 +55,24 @@ export async function getDepartmentTrees( }, ); } +/** + * @description: 查询部门树(新,名称查询返回树) + */ +export async function getQueryDeptTrees( + params?: any, + mode: ErrorMessageMode = 'modal', +) { + return defHttp.get( + { + url: Api.queryDeptTrees, + params, + }, + { + errorMessageMode: mode, + }, + ); +} + /** * @description: 查询部门树 diff --git a/src/components/Form/src/components/SelectDepartmentTreeV2.vue b/src/components/Form/src/components/SelectDepartmentTreeV2.vue index d77ac3c..65c618e 100644 --- a/src/components/Form/src/components/SelectDepartmentTreeV2.vue +++ b/src/components/Form/src/components/SelectDepartmentTreeV2.vue @@ -1,19 +1,28 @@ + + diff --git a/src/components/Form/src/components/SelectDepartmentV2.vue b/src/components/Form/src/components/SelectDepartmentV2.vue index e98a77f..f401ef3 100644 --- a/src/components/Form/src/components/SelectDepartmentV2.vue +++ b/src/components/Form/src/components/SelectDepartmentV2.vue @@ -175,6 +175,9 @@ } function show() { + if (props.disabled) { + return; + } visible.value = true; loading.value = true; if(props.defaultDeptField) { @@ -234,7 +237,9 @@ width: 60%; height: 100%; position: relative; - overflow: scroll; + // overflow: scroll; + display: flex; + flex-direction: column; .loading-box { position: absolute; From d569a3bccf4dfb595cbb7982501c5f3b375174b7 Mon Sep 17 00:00:00 2001 From: GAOANG <1140589958@qq.com> Date: Thu, 17 Jul 2025 10:24:26 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E9=83=A8=E9=97=A8=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/department/index.ts | 2 +- .../src/components/SelectDepartmentTreeV2.vue | 31 ++++++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/api/system/department/index.ts b/src/api/system/department/index.ts index 5ffbe9f..bfa7838 100644 --- a/src/api/system/department/index.ts +++ b/src/api/system/department/index.ts @@ -13,7 +13,7 @@ enum Api { Page = '/organization/department/page', Tree = '/organization/department/tree', Trees = '/organization/department/trees', - queryDeptTrees = '/common/queryDeptTrees', + queryDeptTrees = '/organization/department/queryDeptTrees', EnabledTree = '/organization/department/enabled-tree', Info = '/organization/department/info', Department = '/organization/department', diff --git a/src/components/Form/src/components/SelectDepartmentTreeV2.vue b/src/components/Form/src/components/SelectDepartmentTreeV2.vue index 65c618e..f8582d2 100644 --- a/src/components/Form/src/components/SelectDepartmentTreeV2.vue +++ b/src/components/Form/src/components/SelectDepartmentTreeV2.vue @@ -4,7 +4,7 @@ :bordered="false" class="search-input" placeholder="请输入组织名称搜索" - v-model:value="params.queryName" + v-model:value="params.name" allowClear @search="searchDepart"> @@ -13,8 +13,9 @@ :selectable="props.selectable" :multiple="props.multiple" v-model:checkable="checkable" v-model:tree-data="treeData" :load-data="loadData" @select="selectData"> @@ -63,7 +64,8 @@ const treeData = ref([]) const params = ref({ id: '', code: '', - queryName: '', + name: '', + isQueryIdPath: false, parentNode: false, excludeDeptTypes: props.justCompany ? '0' : '', ids: props.defaultDepts @@ -71,6 +73,17 @@ const params = ref({ onMounted(() => { getList() }) + +const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + +const highLightSearch = (title) => { + const keyword = params.value.name; + if (!keyword) return title; + const escapedKeyword = escapeRegExp(keyword); + const reg = new RegExp(escapedKeyword, 'g'); + return title.replace(reg, `${keyword}`); +} + const loadData = (node) => { return new Promise(async (resolve: (value?: unknown) => void) => { if (node.dataRef.children.length) { @@ -85,7 +98,7 @@ const loadData = (node) => { excludeDeptTypes: props.justCompany ? '0' : '', ids: props.defaultDepts } - let list = resetTreeList(await getDepartmentTrees(param)) + let list = resetTreeList(await getQueryDeptTrees(param)) node.dataRef.children = list[0].children treeData.value = [...treeData.value]; resolve(); @@ -97,7 +110,10 @@ function searchDepart() { async function getList(type = 'default') { if (props.parentNode) { params.value.id = props.parentNode + } + params.value.isQueryIdPath = !(type == 'default') + params.value.parentNode = !(type == 'default') let list = resetTreeList(await getQueryDeptTrees(params.value), type, true) treeData.value = list emit('query-completed'); @@ -155,6 +171,11 @@ watch( } } } + :deep(.highlight) { + color: orange; + font-weight: bold; + background-color: #fff2e8; + } .tree-box { flex: 1; display: flex; From 27561a949ba90ca1a57afb8dd8b4b08f18cab7dc Mon Sep 17 00:00:00 2001 From: GAOANG <1140589958@qq.com> Date: Thu, 17 Jul 2025 18:39:34 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E7=BB=84=E7=BB=87=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Form/src/components/SelectDepartmentTreeV2.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Form/src/components/SelectDepartmentTreeV2.vue b/src/components/Form/src/components/SelectDepartmentTreeV2.vue index f8582d2..b3f18f5 100644 --- a/src/components/Form/src/components/SelectDepartmentTreeV2.vue +++ b/src/components/Form/src/components/SelectDepartmentTreeV2.vue @@ -110,10 +110,9 @@ function searchDepart() { async function getList(type = 'default') { if (props.parentNode) { params.value.id = props.parentNode - } params.value.isQueryIdPath = !(type == 'default') - params.value.parentNode = !(type == 'default') + params.value.isQueryChildren = type == 'default' let list = resetTreeList(await getQueryDeptTrees(params.value), type, true) treeData.value = list emit('query-completed'); From 86d1d72ad31acd5661bcc59038fabaaceb7cff06 Mon Sep 17 00:00:00 2001 From: GAOANG <1140589958@qq.com> Date: Fri, 18 Jul 2025 15:13:02 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E7=BB=84=E7=BB=87=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=8E=BB=E9=99=A4=E6=97=A0=E7=94=A8=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Form/src/components/SelectDepartmentTreeV2.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/Form/src/components/SelectDepartmentTreeV2.vue b/src/components/Form/src/components/SelectDepartmentTreeV2.vue index b3f18f5..5c0879a 100644 --- a/src/components/Form/src/components/SelectDepartmentTreeV2.vue +++ b/src/components/Form/src/components/SelectDepartmentTreeV2.vue @@ -65,7 +65,6 @@ const params = ref({ id: '', code: '', name: '', - isQueryIdPath: false, parentNode: false, excludeDeptTypes: props.justCompany ? '0' : '', ids: props.defaultDepts @@ -111,8 +110,6 @@ async function getList(type = 'default') { if (props.parentNode) { params.value.id = props.parentNode } - params.value.isQueryIdPath = !(type == 'default') - params.value.isQueryChildren = type == 'default' let list = resetTreeList(await getQueryDeptTrees(params.value), type, true) treeData.value = list emit('query-completed');