Skip to content

Commit 67de9fc

Browse files
committed
Vue3 重构:工作流分组
1 parent 812300c commit 67de9fc

File tree

10 files changed

+307
-236
lines changed

10 files changed

+307
-236
lines changed

src/api/bpm/userGroup/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,37 @@ export type UserGroupVO = {
1111
}
1212

1313
// 创建用户组
14-
export const createUserGroupApi = async (data: UserGroupVO) => {
14+
export const createUserGroup = async (data: UserGroupVO) => {
1515
return await request.post({
1616
url: '/bpm/user-group/create',
1717
data: data
1818
})
1919
}
2020

2121
// 更新用户组
22-
export const updateUserGroupApi = async (data: UserGroupVO) => {
22+
export const updateUserGroup = async (data: UserGroupVO) => {
2323
return await request.put({
2424
url: '/bpm/user-group/update',
2525
data: data
2626
})
2727
}
2828

2929
// 删除用户组
30-
export const deleteUserGroupApi = async (id: number) => {
30+
export const deleteUserGroup = async (id: number) => {
3131
return await request.delete({ url: '/bpm/user-group/delete?id=' + id })
3232
}
3333

3434
// 获得用户组
35-
export const getUserGroupApi = async (id: number) => {
35+
export const getUserGroup = async (id: number) => {
3636
return await request.get({ url: '/bpm/user-group/get?id=' + id })
3737
}
3838

3939
// 获得用户组分页
40-
export const getUserGroupPageApi = async (params) => {
40+
export const getUserGroupPage = async (params) => {
4141
return await request.get({ url: '/bpm/user-group/page', params })
4242
}
4343

4444
// 获取用户组精简信息列表
45-
export const listSimpleUserGroupsApi = async () => {
45+
export const listSimpleUserGroup = async () => {
4646
return await request.get({ url: '/bpm/user-group/list-all-simple' })
4747
}

src/api/system/user/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,6 @@ export const updateUserStatusApi = (id: number, status: number) => {
8686
}
8787

8888
// 获取用户精简信息列表
89-
export const getListSimpleUsersApi = () => {
89+
export const getSimpleUserList = () => {
9090
return request.get({ url: '/system/user/list-all-simple' })
9191
}

src/types/auto-components.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ declare module '@vue/runtime-core' {
3030
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
3131
ElCard: typeof import('element-plus/es')['ElCard']
3232
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
33+
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
3334
ElCol: typeof import('element-plus/es')['ElCol']
3435
ElCollapse: typeof import('element-plus/es')['ElCollapse']
3536
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']

src/views/bpm/group/UserGroupForm.vue

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
<template>
2+
<Dialog :title="modelTitle" v-model="modelVisible">
3+
<el-form
4+
ref="formRef"
5+
:model="formData"
6+
:rules="formRules"
7+
label-width="100px"
8+
v-loading="formLoading"
9+
>
10+
<el-form-item label="组名" prop="name">
11+
<el-input v-model="formData.name" placeholder="请输入组名" />
12+
</el-form-item>
13+
<el-form-item label="描述">
14+
<el-input type="textarea" v-model="formData.name" placeholder="请输入描述" />
15+
</el-form-item>
16+
<el-form-item label="成员" prop="memberUserIds">
17+
<el-select v-model="formData.memberUserIds" multiple placeholder="请选择成员">
18+
<el-option
19+
v-for="user in userList"
20+
:key="user.id"
21+
:label="user.nickname"
22+
:value="user.id"
23+
/>
24+
</el-select>
25+
</el-form-item>
26+
<el-form-item label="状态" prop="status">
27+
<el-radio-group v-model="formData.status">
28+
<el-radio
29+
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
30+
:key="dict.value"
31+
:label="dict.value"
32+
>
33+
{{ dict.label }}
34+
</el-radio>
35+
</el-radio-group>
36+
</el-form-item>
37+
</el-form>
38+
<template #footer>
39+
<div class="dialog-footer">
40+
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
41+
<el-button @click="modelVisible = false">取 消</el-button>
42+
</div>
43+
</template>
44+
</Dialog>
45+
</template>
46+
<script setup lang="ts">
47+
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
48+
import { CommonStatusEnum } from '@/utils/constants'
49+
import * as UserGroupApi from '@/api/bpm/userGroup'
50+
import * as UserApi from '@/api/system/user'
51+
52+
const { t } = useI18n() // 国际化
53+
const message = useMessage() // 消息弹窗
54+
55+
const modelVisible = ref(false) // 弹窗的是否展示
56+
const modelTitle = ref('') // 弹窗的标题
57+
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
58+
const formType = ref('') // 表单的类型:create - 新增;update - 修改
59+
const formData = ref({
60+
id: undefined,
61+
name: undefined,
62+
description: undefined,
63+
memberUserIds: undefined,
64+
status: CommonStatusEnum.ENABLE
65+
})
66+
const formRules = reactive({
67+
name: [{ required: true, message: '组名不能为空', trigger: 'blur' }],
68+
description: [{ required: true, message: '描述不能为空', trigger: 'blur' }],
69+
memberUserIds: [{ required: true, message: '成员不能为空', trigger: 'blur' }],
70+
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
71+
})
72+
const formRef = ref() // 表单 Ref
73+
const userList = ref([]) // 用户列表
74+
75+
/** 打开弹窗 */
76+
const open = async (type: string, id?: number) => {
77+
modelVisible.value = true
78+
modelTitle.value = t('action.' + type)
79+
formType.value = type
80+
resetForm()
81+
// 修改时,设置数据
82+
if (id) {
83+
formLoading.value = true
84+
try {
85+
formData.value = await UserGroupApi.getUserGroup(id)
86+
} finally {
87+
formLoading.value = false
88+
}
89+
}
90+
// 加载用户列表
91+
userList.value = await UserApi.getSimpleUserList()
92+
}
93+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
94+
95+
/** 提交表单 */
96+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
97+
const submitForm = async () => {
98+
// 校验表单
99+
if (!formRef) return
100+
const valid = await formRef.value.validate()
101+
if (!valid) return
102+
// 提交请求
103+
formLoading.value = true
104+
try {
105+
const data = formData.value as unknown as UserGroupApi.UserGroupVO
106+
if (formType.value === 'create') {
107+
await UserGroupApi.createUserGroup(data)
108+
message.success(t('common.createSuccess'))
109+
} else {
110+
await UserGroupApi.updateUserGroup(data)
111+
message.success(t('common.updateSuccess'))
112+
}
113+
modelVisible.value = false
114+
// 发送操作成功的事件
115+
emit('success')
116+
} finally {
117+
formLoading.value = false
118+
}
119+
}
120+
121+
/** 重置表单 */
122+
const resetForm = () => {
123+
formData.value = {
124+
id: undefined,
125+
name: undefined,
126+
description: undefined,
127+
memberUserIds: undefined,
128+
status: CommonStatusEnum.ENABLE
129+
}
130+
formRef.value?.resetFields()
131+
}
132+
</script>

src/views/bpm/group/group.data.ts

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)