Skip to content

Commit 888c137

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents c6031ba + 65047b9 commit 888c137

File tree

4 files changed

+102
-3
lines changed

4 files changed

+102
-3
lines changed

src/api/bpm/task/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,10 @@ export const getReturnList = async (params) => {
5151
export const returnTask = async (data) => {
5252
return await request.put({ url: '/bpm/task/return', data })
5353
}
54+
55+
/**
56+
* 委派
57+
*/
58+
export const delegateTask = async (data) => {
59+
return await request.put({ url: '/bpm/task/delegate', data })
60+
}

src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ const getTimelineItemType = (item) => {
9292
if (item.result === 5) {
9393
return 'warning'
9494
}
95+
if (item.result === 6) {
96+
return 'default'
97+
}
9598
return ''
9699
}
97100
</script>
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<template>
2+
<Dialog v-model="dialogVisible" title="委派任务" width="500">
3+
<el-form
4+
ref="formRef"
5+
v-loading="formLoading"
6+
:model="formData"
7+
:rules="formRules"
8+
label-width="110px"
9+
>
10+
<el-form-item label="接收人" prop="delegateUserId">
11+
<el-select v-model="formData.delegateUserId" clearable style="width: 100%">
12+
<el-option
13+
v-for="item in userList"
14+
:key="item.id"
15+
:label="item.nickname"
16+
:value="item.id"
17+
/>
18+
</el-select>
19+
</el-form-item>
20+
<el-form-item label="委派理由" prop="reason">
21+
<el-input v-model="formData.reason" clearable placeholder="请输入委派理由" />
22+
</el-form-item>
23+
</el-form>
24+
<template #footer>
25+
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
26+
<el-button @click="dialogVisible = false">取 消</el-button>
27+
</template>
28+
</Dialog>
29+
</template>
30+
<script lang="ts" setup>
31+
import * as TaskApi from '@/api/bpm/task'
32+
import * as UserApi from '@/api/system/user'
33+
34+
defineOptions({ name: 'BpmTaskDelegateForm' })
35+
36+
const dialogVisible = ref(false) // 弹窗的是否展示
37+
const formLoading = ref(false) // 表单的加载中
38+
const formData = ref({
39+
id: '',
40+
delegateUserId: undefined
41+
})
42+
const formRules = ref({
43+
delegateUserId: [{ required: true, message: '接收人不能为空', trigger: 'change' }]
44+
})
45+
46+
const formRef = ref() // 表单 Ref
47+
const userList = ref<any[]>([]) // 用户列表
48+
49+
/** 打开弹窗 */
50+
const open = async (id: string) => {
51+
dialogVisible.value = true
52+
resetForm()
53+
formData.value.id = id
54+
// 获得用户列表
55+
userList.value = await UserApi.getSimpleUserList()
56+
}
57+
defineExpose({ open }) // 提供 openModal 方法,用于打开弹窗
58+
59+
/** 提交表单 */
60+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
61+
const submitForm = async () => {
62+
// 校验表单
63+
if (!formRef) return
64+
const valid = await formRef.value.validate()
65+
if (!valid) return
66+
// 提交请求
67+
formLoading.value = true
68+
try {
69+
await TaskApi.delegateTask(formData.value)
70+
dialogVisible.value = false
71+
// 发送操作成功的事件
72+
emit('success')
73+
} finally {
74+
formLoading.value = false
75+
}
76+
}
77+
78+
/** 重置表单 */
79+
const resetForm = () => {
80+
formData.value = {
81+
id: '',
82+
delegateUserId: undefined
83+
}
84+
formRef.value?.resetFields()
85+
}
86+
</script>

src/views/bpm/processInstance/detail/index.vue

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@
9393
<TaskUpdateAssigneeForm ref="taskUpdateAssigneeFormRef" @success="getDetail" />
9494
<!-- 弹窗,回退节点 -->
9595
<TaskReturnDialog ref="taskReturnDialogRef" @success="getDetail" />
96+
<!-- 委派,将任务委派给别人处理,处理完成后,会重新回到原审批人手中-->
97+
<TaskDelegateForm ref="taskDelegateForm" @success="getDetail" />
9698
</ContentWrap>
9799
</template>
98100
<script lang="ts" setup>
@@ -106,6 +108,7 @@ import TaskUpdateAssigneeForm from './TaskUpdateAssigneeForm.vue'
106108
import ProcessInstanceBpmnViewer from './ProcessInstanceBpmnViewer.vue'
107109
import ProcessInstanceTaskList from './ProcessInstanceTaskList.vue'
108110
import TaskReturnDialog from './TaskReturnDialogForm.vue'
111+
import TaskDelegateForm from './taskDelegateForm.vue'
109112
import { registerComponent } from '@/utils/routerHelper'
110113
111114
defineOptions({ name: 'BpmProcessInstanceDetail' })
@@ -169,10 +172,10 @@ const openTaskUpdateAssigneeForm = (id: string) => {
169172
taskUpdateAssigneeFormRef.value.open(id)
170173
}
171174
175+
const taskDelegateForm = ref()
172176
/** 处理审批退回的操作 */
173177
const handleDelegate = async (task) => {
174-
message.error('暂不支持【委派】功能,可以使用【转派】替代!')
175-
console.log(task)
178+
taskDelegateForm.value.open(task.id)
176179
}
177180
178181
//回退弹框组件
@@ -260,7 +263,7 @@ const getTaskList = async () => {
260263
auditForms.value = []
261264
tasks.value.forEach((task) => {
262265
// 2.1 只有待处理才需要
263-
if (task.result !== 1) {
266+
if (task.result !== 1 && task.result !== 6) {
264267
return
265268
}
266269
// 2.2 自己不是处理人

0 commit comments

Comments
 (0)