From 2d153de6dcbdb45ff6ea4ab8170820322a0ee0ae Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Sun, 18 May 2025 17:53:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B5=81=E7=A8=8B=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF?= =?UTF-8?q?,=20=E9=83=A8=E9=97=A8=E9=80=89=E6=8B=A9=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dept-select-modal/dept-select-modal.vue | 160 ++++++++++++++++++ .../src/components/dept-select-modal/index.ts | 1 + .../src/views/bpm/model/form/index.vue | 41 ++--- .../bpm/model/form/modules/basic-info.vue | 45 +++-- 4 files changed, 216 insertions(+), 31 deletions(-) create mode 100644 apps/web-antd/src/components/dept-select-modal/dept-select-modal.vue create mode 100644 apps/web-antd/src/components/dept-select-modal/index.ts diff --git a/apps/web-antd/src/components/dept-select-modal/dept-select-modal.vue b/apps/web-antd/src/components/dept-select-modal/dept-select-modal.vue new file mode 100644 index 00000000..69968ce3 --- /dev/null +++ b/apps/web-antd/src/components/dept-select-modal/dept-select-modal.vue @@ -0,0 +1,160 @@ + + diff --git a/apps/web-antd/src/components/dept-select-modal/index.ts b/apps/web-antd/src/components/dept-select-modal/index.ts new file mode 100644 index 00000000..d373be44 --- /dev/null +++ b/apps/web-antd/src/components/dept-select-modal/index.ts @@ -0,0 +1 @@ +export { default as DeptSelectModal } from './dept-select-modal.vue'; diff --git a/apps/web-antd/src/views/bpm/model/form/index.vue b/apps/web-antd/src/views/bpm/model/form/index.vue index aab32573..7764d634 100644 --- a/apps/web-antd/src/views/bpm/model/form/index.vue +++ b/apps/web-antd/src/views/bpm/model/form/index.vue @@ -12,7 +12,7 @@ import { useTabs } from '@vben/hooks'; import { ArrowLeft } from '@vben/icons'; import { useUserStore } from '@vben/stores'; -import { Button, message } from 'ant-design-vue'; +import { Button, Card, message } from 'ant-design-vue'; import { getCategorySimpleList } from '#/api/bpm/category'; import { getProcessDefinition } from '#/api/bpm/definition'; @@ -467,27 +467,28 @@ onBeforeUnmount(() => { - -
- -
- + +
+ +
+ +
+ + + + + + +
- - - - - - -
-
+
diff --git a/apps/web-antd/src/views/bpm/model/form/modules/basic-info.vue b/apps/web-antd/src/views/bpm/model/form/modules/basic-info.vue index c5170df2..07a47a96 100644 --- a/apps/web-antd/src/views/bpm/model/form/modules/basic-info.vue +++ b/apps/web-antd/src/views/bpm/model/form/modules/basic-info.vue @@ -2,6 +2,8 @@ import type { Rule } from 'ant-design-vue/es/form'; import type { SelectValue } from 'ant-design-vue/es/select'; +import type { PropType } from 'vue'; + import type { BpmCategoryApi } from '#/api/bpm/category'; import type { SystemDeptApi } from '#/api/system/dept'; import type { SystemUserApi } from '#/api/system/user'; @@ -20,18 +22,25 @@ import { Tooltip, } from 'ant-design-vue'; +import { DeptSelectModal } from '#/components/dept-select-modal'; import { ImageUpload } from '#/components/upload'; import { UserSelectModal } from '#/components/user-select-modal'; import { DICT_TYPE, getBoolDictOptions, getIntDictOptions } from '#/utils'; -const props = withDefaults( - defineProps<{ - categoryList: BpmCategoryApi.CategoryVO[]; - deptList: SystemDeptApi.Dept[]; - userList: SystemUserApi.User[]; - }>(), - {}, -); +const props = defineProps({ + categoryList: { + type: Array as PropType, + required: true, + }, + userList: { + type: Array as PropType, + required: true, + }, + deptList: { + type: Array as PropType, + required: true, + }, +}); // 表单引用 const formRef = ref(); @@ -45,6 +54,7 @@ const selectedStartDepts = ref([]); // 选中的流程管理员 const selectedManagerUsers = ref([]); const userSelectFormRef = ref(); +const deptSelectFormRef = ref(); const currentSelectType = ref<'manager' | 'start'>('start'); // 选中的用户 const selectedUsers = ref(); @@ -99,8 +109,14 @@ const openStartUserSelect = () => { /** 打开部门选择 */ const openStartDeptSelect = () => { - // TODO 部门选择组件暂时还没有 - console.warn('部门选择功能暂未实现'); + deptSelectFormRef.value.open(selectedStartDepts.value); +}; +/** 处理部门选择确认 */ +const handleDeptSelectConfirm = (depts: SystemDeptApi.Dept[]) => { + modelData.value = { + ...modelData.value, + startDeptIds: depts.map((d) => d.id), + }; }; /** 打开管理员选择 */ @@ -343,7 +359,7 @@ defineExpose({ :key="dept.id" class="relative flex h-9 items-center rounded-full bg-gray-100 pr-2" > - + {{ dept.name }} + +