1
1
<template >
2
2
<ContentWrap >
3
- <XTable @register =" registerTable" >
4
- <template #suspensionState_default =" { row } " >
5
- <el-tag type =" success" v-if =" row.suspensionState === 1" >激活</el-tag >
6
- <el-tag type =" warning" v-if =" row.suspensionState === 2" >挂起</el-tag >
7
- </template >
8
- <template #actionbtns_default =" { row } " >
9
- <!-- 操作: 审批进度 -->
10
- <XTextButton preIcon =" ep:view" title =" 详情" @click =" handleAudit(row)" />
11
- </template >
12
- </XTable >
3
+ <!-- 搜索工作栏 -->
4
+ <el-form
5
+ class =" -mb-15px"
6
+ :model =" queryParams"
7
+ ref =" queryFormRef"
8
+ :inline =" true"
9
+ label-width =" 68px"
10
+ >
11
+ <el-form-item label =" 任务名称" prop =" name" >
12
+ <el-input
13
+ v-model =" queryParams.name"
14
+ placeholder =" 请输入任务名称"
15
+ clearable
16
+ @keyup.enter =" handleQuery"
17
+ />
18
+ </el-form-item >
19
+ <el-form-item label =" 状态" prop =" status" >
20
+ <el-select v-model =" queryParams.status" placeholder =" 请选择状态" clearable >
21
+ <el-option
22
+ v-for =" dict in getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT)"
23
+ :key =" dict.value"
24
+ :label =" dict.label"
25
+ :value =" dict.value"
26
+ />
27
+ </el-select >
28
+ </el-form-item >
29
+ <el-form-item >
30
+ <el-button @click =" handleQuery" ><Icon icon =" ep:search" class =" mr-5px" /> 搜索</el-button >
31
+ <el-button @click =" resetQuery" ><Icon icon =" ep:refresh" class =" mr-5px" /> 重置</el-button >
32
+ <el-button
33
+ type =" success"
34
+ plain
35
+ @click =" handleExport"
36
+ :loading =" exportLoading"
37
+ v-hasPermi =" ['bpm:task:done:export']"
38
+ >
39
+ <Icon icon =" ep:download" class =" mr-5px" /> 导出
40
+ </el-button >
41
+ </el-form-item >
42
+ </el-form >
13
43
</ContentWrap >
44
+ <!-- 列表 -->
45
+ <ContentWrap >
46
+ <el-table v-loading =" loading" :data =" list" align =" center" >
47
+ <el-table-column label =" 任务编号" align =" center" prop =" id" width =" 300px" />
48
+ <el-table-column label =" 任务名称" align =" center" prop =" name" />
49
+ <el-table-column label =" 所属流程" align =" center" prop =" processInstance.name" />
50
+ <el-table-column label =" 流程发起人" align =" center" prop =" processInstance.startUserNickname" />
51
+ <el-table-column label =" 状态" align =" center" prop =" result" >
52
+ <template #default =" scope " >
53
+ <dict-tag :type =" DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value =" scope.row.result" />
54
+ </template >
55
+ </el-table-column >
56
+ <el-table-column label =" 原因" align =" center" prop =" reason" />
57
+ <el-table-column
58
+ label =" 创建时间"
59
+ align =" center"
60
+ prop =" createTime"
61
+ width =" 180"
62
+ :formatter =" dateFormatter"
63
+ />
64
+ <el-table-column label =" 操作" align =" center" >
65
+ <template #default =" scope " >
66
+ <el-button link type =" primary" @click =" openModal(scope.row)" > 流程信息 </el-button >
67
+ <el-button link type =" primary" @click =" handleAudit(scope.row)" > 流程详情 </el-button >
68
+ </template >
69
+ </el-table-column >
70
+ </el-table >
71
+ <!-- 分页 -->
72
+ <Pagination
73
+ :total =" total"
74
+ v-model:page =" queryParams.pageNo"
75
+ v-model:limit =" queryParams.pageSize"
76
+ @pagination =" getList"
77
+ />
78
+ </ContentWrap >
79
+ <!-- 表单弹窗:详情 -->
80
+ <TaskDoneDetail ref =" modalRef" @success =" getList" />
14
81
</template >
15
- <script setup lang="ts ">
16
- // 业务相关的 import
17
- import { allSchemas } from ' ./done.data '
82
+ <script setup lang="tsx ">
83
+ import { dateFormatter } from ' @/utils/formatTime '
84
+ import { DICT_TYPE , getIntDictOptions } from ' @/utils/dict '
18
85
import * as TaskApi from ' @/api/bpm/task'
86
+ import download from ' @/utils/download'
87
+ import TaskDoneDetail from ' ./Taskdetail.vue'
19
88
20
- const { push } = useRouter () // 路由
21
-
22
- const [registerTable] = useXTable ({
23
- allSchemas: allSchemas ,
24
- topActionSlots: false ,
25
- getListApi: TaskApi .getDoneTaskPage
89
+ const loading = ref (true ) // 列表的加载中
90
+ const total = ref (0 ) // 列表的总页数
91
+ const list = ref ([]) // 列表的数据
92
+ const message = useMessage () // 消息弹窗
93
+ const exportLoading = ref (false ) // 导出的加载中
94
+ const queryFormRef = ref () // 搜索的表单
95
+ const queryParams = reactive ({
96
+ pageNo: 1 ,
97
+ pageSize: 10 ,
98
+ name: ' ' ,
99
+ status: undefined ,
100
+ createTime: []
26
101
})
27
102
103
+ /** 搜索按钮操作 */
104
+ const handleQuery = () => {
105
+ queryParams .pageNo = 1
106
+ getList ()
107
+ }
108
+ /** 详情操作 */
109
+ const modalRef = ref ()
110
+ const openModal = (data : TaskApi .TaskVO ) => {
111
+ modalRef .value .openModal (data )
112
+ }
113
+
114
+ /** 重置按钮操作 */
115
+ const resetQuery = () => {
116
+ queryFormRef .value .resetFields ()
117
+ handleQuery ()
118
+ }
119
+ /** 查询任务列表 */
120
+ const getList = async () => {
121
+ loading .value = true
122
+ try {
123
+ const data = await TaskApi .getDoneTaskPage (queryParams )
124
+ list .value = data .list
125
+ total .value = data .total
126
+ } finally {
127
+ loading .value = false
128
+ }
129
+ }
130
+ /** 导出按钮操作 */
131
+ const handleExport = async () => {
132
+ try {
133
+ // 导出的二次确认
134
+ await message .exportConfirm ()
135
+ // 发起导出
136
+ exportLoading .value = true
137
+ const data = await TaskApi .exportTask (queryParams )
138
+ download .excel (data , ' 任务列表.xls' )
139
+ } catch {
140
+ } finally {
141
+ exportLoading .value = false
142
+ }
143
+ }
144
+ const { push } = useRouter () // 路由
28
145
// 处理审批按钮
29
146
const handleAudit = (row ) => {
30
147
push ({
@@ -34,4 +151,8 @@ const handleAudit = (row) => {
34
151
}
35
152
})
36
153
}
154
+ /** 初始化 **/
155
+ onMounted (() => {
156
+ getList ()
157
+ })
37
158
</script >
0 commit comments