Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
52c393a0
authored
Jan 25, 2025
by
LesanOuO
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: BPM-报表
parent
7db5ac81
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
204 additions
and
0 deletions
+204
-0
src/api/bpm/processInstance/index.ts
+4
-0
src/views/bpm/model/CategoryDraggableModel.vue
+17
-0
src/views/bpm/processInstance/report/index.vue
+183
-0
No files found.
src/api/bpm/processInstance/index.ts
View file @
52c393a0
...
...
@@ -60,6 +60,10 @@ export const getProcessInstanceManagerPage = async (params: any) => {
return
await
request
.
get
({
url
:
'/bpm/process-instance/manager-page'
,
params
})
}
export
const
getProcessInstanceReportPage
=
async
(
params
:
any
)
=>
{
return
await
request
.
get
({
url
:
'/bpm/process-instance/report-page'
,
params
})
}
export
const
createProcessInstance
=
async
(
data
)
=>
{
return
await
request
.
post
({
url
:
'/bpm/process-instance/create'
,
data
:
data
})
}
...
...
src/views/bpm/model/CategoryDraggableModel.vue
View file @
52c393a0
...
...
@@ -193,6 +193,13 @@
历史
</el-dropdown-item>
<el-dropdown-item
command=
"handleReport"
v-if=
"checkPermi(['bpm:model:report']) && scope.row.processDefinition"
:disabled=
"!isManagerUser(scope.row)"
>
报表
</el-dropdown-item>
<el-dropdown-item
command=
"handleChangeState"
v-if=
"hasPermiUpdate && scope.row.processDefinition"
:disabled=
"!isManagerUser(scope.row)"
...
...
@@ -301,6 +308,7 @@ const { t } = useI18n() // 国际化
const
{
push
}
=
useRouter
()
// 路由
const
userStore
=
useUserStoreWithOut
()
// 用户信息缓存
const
isDark
=
computed
(()
=>
useAppStore
().
getIsDark
)
// 是否黑暗模式
const
router
=
useRouter
()
// 路由
const
isModelSorting
=
ref
(
false
)
// 是否正处于排序状态
const
originalData
=
ref
<
ModelInfo
[]
>
([])
// 原始数据
...
...
@@ -349,6 +357,15 @@ const handleModelCommand = (command: string, row: any) => {
case
'handleClean'
:
handleClean
(
row
)
break
case
'handleReport'
:
router
.
push
({
name
:
'BpmProcessInstanceReport'
,
query
:
{
processDefinitionId
:
row
.
processDefinition
.
id
,
processDefinitionKey
:
row
.
key
}
})
break
default
:
break
}
...
...
src/views/bpm/processInstance/report/index.vue
0 → 100644
View file @
52c393a0
<
template
>
<doc-alert
title=
"工作流手册"
url=
"https://doc.iocoder.cn/bpm/"
/>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"发起人"
prop=
"startUserId"
>
<el-select
v-model=
"queryParams.startUserId"
placeholder=
"请选择发起人"
class=
"!w-240px"
>
<el-option
v-for=
"user in userList"
:key=
"user.id"
:label=
"user.nickname"
:value=
"user.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"流程名称"
prop=
"name"
>
<el-input
v-model=
"queryParams.name"
placeholder=
"请输入流程名称"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"流程状态"
prop=
"status"
>
<el-select
v-model=
"queryParams.status"
placeholder=
"请选择流程状态"
clearable
class=
"!w-240px"
>
<el-option
v-for=
"dict in getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"发起时间"
prop=
"createTime"
>
<el-date-picker
v-model=
"queryParams.createTime"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"daterange"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
:default-time=
"[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"结束时间"
prop=
"endTime"
>
<el-date-picker
v-model=
"queryParams.endTime"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"daterange"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
:default-time=
"[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading=
"loading"
border
:data=
"list"
>
<el-table-column
label=
"流程名称"
align=
"center"
prop=
"name"
fixed=
"left"
width=
"200"
/>
<el-table-column
label=
"流程发起人"
align=
"center"
prop=
"startUser.nickname"
width=
"120"
/>
<el-table-column
label=
"流程状态"
prop=
"status"
width=
"120"
>
<template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"发起时间"
align=
"center"
prop=
"startTime"
width=
"180"
:formatter=
"dateFormatter"
/>
<el-table-column
label=
"结束时间"
align=
"center"
prop=
"endTime"
width=
"180"
:formatter=
"dateFormatter"
/>
<el-table-column
v-for=
"(item, index) in formFieldsList"
:key=
"index"
:label=
"item.title"
:prop=
"item.field"
width=
"120"
>
<!-- TODO 可以根据formField的type进行展示方式的控制,现在全部以字符串 -->
<
template
#
default=
"scope"
>
{{
scope
.
row
.
variables
.
find
(
variable
=>
variable
.
key
===
item
.
field
)?.
value
}}
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</ContentWrap>
</template>
<
script
lang=
"ts"
setup
>
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
*
as
ProcessInstanceApi
from
'@/api/bpm/processInstance'
import
*
as
UserApi
from
'@/api/system/user'
defineOptions
({
name
:
'BpmProcessInstanceReport'
})
const
router
=
useRouter
()
// 路由
const
{
query
}
=
useRoute
()
// 查询参数
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
loading
=
ref
(
true
)
// 列表的加载中
const
total
=
ref
(
0
)
// 列表的总页数
const
list
=
ref
([])
// 列表的数据
const
formFieldsList
=
ref
([])
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
startUserId
:
undefined
,
name
:
''
,
processDefinitionId
:
query
.
processDefinitionId
,
processDefinitionKey
:
query
.
processDefinitionKey
,
status
:
undefined
,
createTime
:
[],
endTime
:
[]
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
userList
=
ref
<
any
[]
>
([])
// 用户列表
/** 查询列表 */
const
getList
=
async
()
=>
{
loading
.
value
=
true
try
{
const
data
=
await
ProcessInstanceApi
.
getProcessInstanceReportPage
(
queryParams
)
list
.
value
=
data
.
pageResult
.
list
total
.
value
=
data
.
pageResult
.
total
formFieldsList
.
value
=
data
.
formFields
}
finally
{
loading
.
value
=
false
}
}
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
queryParams
.
pageNo
=
1
getList
()
}
/** 重置按钮操作 */
const
resetQuery
=
()
=>
{
queryFormRef
.
value
.
resetFields
()
handleQuery
()
}
/** 初始化 **/
onMounted
(
async
()
=>
{
await
getList
()
userList
.
value
=
await
UserApi
.
getSimpleUserList
()
})
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment