From dee1764556f4137ad0cd0f2a62dd55ec92df753b Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Fri, 21 Nov 2025 22:12:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20[bpm][ele]=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=BC=B9=E7=AA=97=EF=BC=8C=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=BC=B9=E7=AA=97=E7=BB=84=E4=BB=B6=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/model/form/modules/basic-info.vue | 98 ++-- .../dept/components/dept-select-modal.vue | 141 +++++ .../src/views/system/dept/components/index.ts | 2 + .../src/views/system/user/components/index.ts | 1 + .../user/components/user-select-modal.vue | 518 ++++++++++++++++++ 5 files changed, 715 insertions(+), 45 deletions(-) create mode 100644 apps/web-ele/src/views/system/dept/components/dept-select-modal.vue create mode 100644 apps/web-ele/src/views/system/dept/components/index.ts create mode 100644 apps/web-ele/src/views/system/user/components/index.ts create mode 100644 apps/web-ele/src/views/system/user/components/user-select-modal.vue diff --git a/apps/web-ele/src/views/bpm/model/form/modules/basic-info.vue b/apps/web-ele/src/views/bpm/model/form/modules/basic-info.vue index 0c82d5b14..d38cd7c08 100644 --- a/apps/web-ele/src/views/bpm/model/form/modules/basic-info.vue +++ b/apps/web-ele/src/views/bpm/model/form/modules/basic-info.vue @@ -9,6 +9,7 @@ import type { SystemUserApi } from '#/api/system/user'; import { ref, watch } from 'vue'; +import { useVbenModal } from '@vben/common-ui'; import { DICT_TYPE } from '@vben/constants'; import { getDictOptions } from '@vben/hooks'; import { IconifyIcon } from '@vben/icons'; @@ -26,8 +27,9 @@ import { ElTooltip, } from 'element-plus'; -// import { DeptSelectModal, UserSelectModal } from '#/components/select-modal'; import { ImageUpload } from '#/components/upload'; +import { DeptSelectModal } from '#/views/system/dept/components'; +import { UserSelectModal } from '#/views/system/user/components'; const props = defineProps({ categoryList: { @@ -44,15 +46,15 @@ const props = defineProps({ }, }); -// const [UserSelectModalComp, userSelectModalApi] = useVbenModal({ -// connectedComponent: UserSelectModal, -// destroyOnClose: true, -// }); +const [UserSelectModalComp, userSelectModalApi] = useVbenModal({ + connectedComponent: UserSelectModal, + destroyOnClose: true, +}); -// const [DeptSelectModalComp, deptSelectModalApi] = useVbenModal({ -// connectedComponent: DeptSelectModal, -// destroyOnClose: true, -// }); +const [DeptSelectModalComp, deptSelectModalApi] = useVbenModal({ + connectedComponent: DeptSelectModal, + destroyOnClose: true, +}); const formRef = ref(); // 表单引用 const modelData = defineModel(); // 创建本地数据副本 @@ -125,21 +127,22 @@ function openStartUserSelect() { selectedUsers.value = selectedStartUsers.value.map( (user) => user.id, ) as number[]; - // userSelectModalApi.setData({ userIds: selectedUsers.value }).open(); + userSelectModalApi.setData({ userIds: selectedUsers.value }).open(); } /** 打开部门选择 */ function openStartDeptSelect() { - // deptSelectModalApi.setData({ selectedList: selectedStartDepts.value }).open(); + deptSelectModalApi.setData({ selectedList: selectedStartDepts.value }).open(); } -// /** 处理部门选择确认 */ -// function handleDeptSelectConfirm(depts: SystemDeptApi.Dept[]) { -// modelData.value = { -// ...modelData.value, -// startDeptIds: depts.map((d) => d.id), -// }; -// } +/** 处理部门选择确认 */ +function handleDeptSelectConfirm(depts: SystemDeptApi.Dept[]) { + selectedStartDepts.value = depts; + modelData.value = { + ...modelData.value, + startDeptIds: depts.map((d) => d.id), + }; +} /** 打开管理员选择 */ function openManagerUserSelect() { @@ -147,32 +150,32 @@ function openManagerUserSelect() { selectedUsers.value = selectedManagerUsers.value.map( (user) => user.id, ) as number[]; - // userSelectModalApi.setData({ userIds: selectedUsers.value }).open(); + userSelectModalApi.setData({ userIds: selectedUsers.value }).open(); } -// /** 处理用户选择确认 */ -// function handleUserSelectConfirm(userList: SystemUserApi.User[]) { -// modelData.value = -// currentSelectType.value === 'start' -// ? { -// ...modelData.value, -// startUserIds: userList.map((u) => u.id), -// } -// : { -// ...modelData.value, -// managerUserIds: userList.map((u) => u.id), -// }; -// } +/** 处理用户选择确认 */ +function handleUserSelectConfirm(userList: SystemUserApi.User[]) { + modelData.value = + currentSelectType.value === 'start' + ? { + ...modelData.value, + startUserIds: userList.map((u) => u.id), + } + : { + ...modelData.value, + managerUserIds: userList.map((u) => u.id), + }; +} -// /** 用户选择弹窗关闭 */ -// function handleUserSelectClosed() { -// selectedUsers.value = []; -// } +/** 用户选择弹窗关闭 */ +function handleUserSelectClosed() { + selectedUsers.value = []; +} -// /** 用户选择弹窗取消 */ -// function handleUserSelectCancel() { -// selectedUsers.value = []; -// } +/** 用户选择弹窗取消 */ +function handleUserSelectCancel() { + selectedUsers.value = []; +} /** 处理发起人类型变化 */ function handleStartUserTypeChange(value: number) { @@ -285,7 +288,12 @@ defineExpose({ validate }); - + @@ -424,19 +432,19 @@ defineExpose({ validate }); - + /> - + /> diff --git a/apps/web-ele/src/views/system/dept/components/dept-select-modal.vue b/apps/web-ele/src/views/system/dept/components/dept-select-modal.vue new file mode 100644 index 000000000..be14cf6ed --- /dev/null +++ b/apps/web-ele/src/views/system/dept/components/dept-select-modal.vue @@ -0,0 +1,141 @@ +// TODO @芋艿:是否有更好的组织形式?! + + diff --git a/apps/web-ele/src/views/system/dept/components/index.ts b/apps/web-ele/src/views/system/dept/components/index.ts new file mode 100644 index 000000000..d41597e97 --- /dev/null +++ b/apps/web-ele/src/views/system/dept/components/index.ts @@ -0,0 +1,2 @@ +// TODO @xingyu:【待讨论】是不是把 user select 放到 user 目录的 components 下,dept select 放到 dept 目录的 components 下 +export { default as DeptSelectModal } from './dept-select-modal.vue'; diff --git a/apps/web-ele/src/views/system/user/components/index.ts b/apps/web-ele/src/views/system/user/components/index.ts new file mode 100644 index 000000000..9cb1c93fd --- /dev/null +++ b/apps/web-ele/src/views/system/user/components/index.ts @@ -0,0 +1 @@ +export { default as UserSelectModal } from './user-select-modal.vue'; diff --git a/apps/web-ele/src/views/system/user/components/user-select-modal.vue b/apps/web-ele/src/views/system/user/components/user-select-modal.vue new file mode 100644 index 000000000..a9c2b1b16 --- /dev/null +++ b/apps/web-ele/src/views/system/user/components/user-select-modal.vue @@ -0,0 +1,518 @@ + + + + +