From 7d11d759b99d3e5a299495d4ca5819b3c63dd810 Mon Sep 17 00:00:00 2001 From: zhihao <18915542763@163.com> Date: Fri, 12 Jun 2026 15:56:56 +0800 Subject: [PATCH] =?UTF-8?q?czh-20260612-=E5=A2=9E=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E9=83=A8=E9=97=A8=E9=80=89=E4=BA=BA=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=9A=E9=80=89=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=B7=B3=E8=BD=AC=E5=88=B0=E5=BD=93=E5=89=8D=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=89=80=E5=9C=A8=E7=9A=84=E9=83=A8=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deptUserComponent/SzDeptUserModal.vue | 158 +++++++ .../deptUserComponent/SzDeptUserSelect.vue | 389 ++++++++++++++++++ .../SzDeptUserSelectedList.vue | 55 +++ .../semri/deptUserComponent/types.ts | 68 +++ .../components/BgPartymatterBPMForm.vue | 13 +- 5 files changed, 675 insertions(+), 8 deletions(-) create mode 100644 src/components/semri/deptUserComponent/SzDeptUserModal.vue create mode 100644 src/components/semri/deptUserComponent/SzDeptUserSelect.vue create mode 100644 src/components/semri/deptUserComponent/SzDeptUserSelectedList.vue create mode 100644 src/components/semri/deptUserComponent/types.ts diff --git a/src/components/semri/deptUserComponent/SzDeptUserModal.vue b/src/components/semri/deptUserComponent/SzDeptUserModal.vue new file mode 100644 index 0000000..d7b0f4e --- /dev/null +++ b/src/components/semri/deptUserComponent/SzDeptUserModal.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/components/semri/deptUserComponent/SzDeptUserSelect.vue b/src/components/semri/deptUserComponent/SzDeptUserSelect.vue new file mode 100644 index 0000000..f994eb4 --- /dev/null +++ b/src/components/semri/deptUserComponent/SzDeptUserSelect.vue @@ -0,0 +1,389 @@ + + + + + diff --git a/src/components/semri/deptUserComponent/SzDeptUserSelectedList.vue b/src/components/semri/deptUserComponent/SzDeptUserSelectedList.vue new file mode 100644 index 0000000..a7a0e09 --- /dev/null +++ b/src/components/semri/deptUserComponent/SzDeptUserSelectedList.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/semri/deptUserComponent/types.ts b/src/components/semri/deptUserComponent/types.ts new file mode 100644 index 0000000..b8d6c32 --- /dev/null +++ b/src/components/semri/deptUserComponent/types.ts @@ -0,0 +1,68 @@ +export interface UserItem { + id: string; + username: string; + realname: string; + orgCodeTxt?: string; + userSecurityLevel?: number; + userSecurityLevel_dictText?: string; + sex_dictText?: string; + sortno?: number; + departId?: string; + departName?: string; +} + +export interface DepartTreeNode { + id: string; + key: string; + value: string; + title: string; + isLeaf?: boolean; + departType?: string | number; + distributable?: number; + disableCheckbox?: boolean; + children?: DepartTreeNode[]; + description?: string; + parentId?: string; + orgCode?: string; +} + +export function deleteIfExist>(array: T[], value: T, key: string): void { + const idx = array.findIndex((item) => item[key] === value[key]); + if (idx >= 0) { + array.splice(idx, 1); + } +} + +export function pushIfNotExist>(array: T[], value: T, key: string): void { + const idx = array.findIndex((item) => item[key] === value[key]); + if (idx < 0) { + array.push(value); + } +} + +export function filterDepartTree>(departTree: T[], searchValue: string): T[] { + let filtered: T[] = []; + departTree.forEach((item) => { + if (item.title && item.title.includes(searchValue)) { + filtered.push(Object.assign({}, item, { children: null, isLeaf: true })); + } + if (item.children) { + const result = filterDepartTree(item.children, searchValue); + if (result.length > 0) { + filtered = filtered.concat(result); + } + } + }); + return filtered; +} + +export function recurTree, R>(tree: T[], callback: (node: T) => R[]): R[] { + let res: R[] = []; + tree.forEach((item) => { + res = res.concat(callback(item)); + if (item.children) { + res = res.concat(recurTree(item.children, callback)); + } + }); + return res; +} diff --git a/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue b/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue index ed99695..9629856 100644 --- a/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue +++ b/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue @@ -184,13 +184,10 @@ - - - + @@ -226,7 +223,7 @@ import JDictSelectTag from "../../../../components/Form/src/jeecg/components/JDictSelectTag.vue"; import BgPartymatterBPMFeedbackModal from './BgPartymatterBPMFeedbackModal.vue'; import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue'; - import JSelectUser from "../../../../components/Form/src/jeecg/components/JSelectUser.vue"; + import SzDeptUserModal from '/@/components/semri/deptUserComponent/SzDeptUserModal.vue'; const { isDisabledAuth, hasPermission, initBpmFormData} = usePermission(); const props = defineProps({