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
00dfe00d
authored
Jan 26, 2025
by
LesanOuO
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: BPM-数据报表
parent
5f5ae354
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
47 additions
and
18 deletions
+47
-18
src/api/bpm/processInstance/index.ts
+0
-4
src/views/bpm/processInstance/report/index.vue
+47
-14
No files found.
src/api/bpm/processInstance/index.ts
View file @
00dfe00d
...
@@ -60,10 +60,6 @@ export const getProcessInstanceManagerPage = async (params: any) => {
...
@@ -60,10 +60,6 @@ export const getProcessInstanceManagerPage = async (params: any) => {
return
await
request
.
get
({
url
:
'/bpm/process-instance/manager-page'
,
params
})
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
)
=>
{
export
const
createProcessInstance
=
async
(
data
)
=>
{
return
await
request
.
post
({
url
:
'/bpm/process-instance/create'
,
data
:
data
})
return
await
request
.
post
({
url
:
'/bpm/process-instance/create'
,
data
:
data
})
}
}
...
...
src/views/bpm/processInstance/report/index.vue
View file @
00dfe00d
...
@@ -66,6 +66,22 @@
...
@@ -66,6 +66,22 @@
class=
"!w-240px"
class=
"!w-240px"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
v-for=
"(item, index) in formFields"
:key=
"index"
:label=
"item.title"
:prop=
"item.field"
>
<!-- TODO 目前只支持input类型的字符串搜索 -->
<el-input
:disabled=
"item.type !== 'input'"
v-model=
"queryParams.formFieldsParams[item.field]"
:placeholder=
"`请输入$
{item.title}`"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<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-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
...
@@ -98,7 +114,7 @@
...
@@ -98,7 +114,7 @@
:formatter=
"dateFormatter"
:formatter=
"dateFormatter"
/>
/>
<el-table-column
<el-table-column
v-for=
"(item, index) in formFields
List
"
v-for=
"(item, index) in formFields"
:key=
"index"
:key=
"index"
:label=
"item.title"
:label=
"item.title"
:prop=
"item.field"
:prop=
"item.field"
...
@@ -106,7 +122,7 @@
...
@@ -106,7 +122,7 @@
>
>
<!-- TODO 可以根据formField的type进行展示方式的控制,现在全部以字符串 -->
<!-- TODO 可以根据formField的type进行展示方式的控制,现在全部以字符串 -->
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
variables
.
find
((
variable
)
=>
variable
.
key
===
item
.
field
)?.
value
}}
{{
scope
.
row
.
formVariables
[
item
.
field
]
??
''
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -124,28 +140,28 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
...
@@ -124,28 +140,28 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
*
as
ProcessInstanceApi
from
'@/api/bpm/processInstance'
import
*
as
ProcessInstanceApi
from
'@/api/bpm/processInstance'
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
DefinitionApi
from
'@/api/bpm/definition'
import
{
parseFormFields
}
from
'@/components/FormCreate/src/utils'
defineOptions
({
name
:
'BpmProcessInstanceReport'
})
defineOptions
({
name
:
'BpmProcessInstanceReport'
})
const
router
=
useRouter
()
// 路由
const
{
query
}
=
useRoute
()
const
{
query
}
=
useRoute
()
// 查询参数
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
loading
=
ref
(
true
)
// 列表的加载中
const
loading
=
ref
(
true
)
// 列表的加载中
const
total
=
ref
(
0
)
// 列表的总页数
const
total
=
ref
(
0
)
// 列表的总页数
const
list
=
ref
([])
// 列表的数据
const
list
=
ref
([])
// 列表的数据
const
formFieldsList
=
ref
([])
const
formFields
=
ref
()
const
processDefinitionId
=
query
.
processDefinitionId
as
string
const
queryParams
=
reactive
({
const
queryParams
=
reactive
({
pageNo
:
1
,
pageNo
:
1
,
pageSize
:
10
,
pageSize
:
10
,
startUserId
:
undefined
,
startUserId
:
undefined
,
name
:
''
,
name
:
''
,
processDefinitionId
:
query
.
processDefinitionId
,
processDefinitionKey
:
query
.
processDefinitionKey
,
processDefinitionKey
:
query
.
processDefinitionKey
,
status
:
undefined
,
status
:
undefined
,
createTime
:
[],
createTime
:
[],
endTime
:
[]
endTime
:
[],
formFieldsParams
:
{}
})
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
queryFormRef
=
ref
()
// 搜索的表单
const
userList
=
ref
<
any
[]
>
([])
// 用户列表
const
userList
=
ref
<
any
[]
>
([])
// 用户列表
...
@@ -154,16 +170,31 @@ const userList = ref<any[]>([]) // 用户列表
...
@@ -154,16 +170,31 @@ const userList = ref<any[]>([]) // 用户列表
const
getList
=
async
()
=>
{
const
getList
=
async
()
=>
{
loading
.
value
=
true
loading
.
value
=
true
try
{
try
{
const
data
=
await
ProcessInstanceApi
.
getProcessInstanceReportPage
(
queryParams
)
let
queryParamsClone
=
{
...
queryParams
}
list
.
value
=
data
.
pageResult
.
list
queryParamsClone
.
formFieldsParams
=
JSON
.
stringify
(
queryParamsClone
.
formFieldsParams
)
total
.
value
=
data
.
pageResult
.
total
const
data
=
await
ProcessInstanceApi
.
getProcessInstanceManagerPage
(
queryParamsClone
)
// TODO @lesan:不确定,能不能通过 processDefinitionId 获取流程定义哈,从而拿到 formFields;
list
.
value
=
data
.
list
formFieldsList
.
value
=
data
.
formFields
total
.
value
=
data
.
total
}
finally
{
}
finally
{
loading
.
value
=
false
loading
.
value
=
false
}
}
}
}
const
getProcessDefinition
=
async
()
=>
{
const
processDefinition
=
await
DefinitionApi
.
getProcessDefinition
(
processDefinitionId
)
formFields
.
value
=
parseFormCreateFields
(
processDefinition
.
formFields
)
}
const
parseFormCreateFields
=
(
formFields
?:
string
[])
=>
{
const
result
:
Array
<
Record
<
string
,
any
>>
=
[]
if
(
formFields
)
{
formFields
.
forEach
((
fieldStr
:
string
)
=>
{
parseFormFields
(
JSON
.
parse
(
fieldStr
),
result
)
})
}
return
result
}
/** 搜索按钮操作 */
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
const
handleQuery
=
()
=>
{
queryParams
.
pageNo
=
1
queryParams
.
pageNo
=
1
...
@@ -173,11 +204,13 @@ const handleQuery = () => {
...
@@ -173,11 +204,13 @@ const handleQuery = () => {
/** 重置按钮操作 */
/** 重置按钮操作 */
const
resetQuery
=
()
=>
{
const
resetQuery
=
()
=>
{
queryFormRef
.
value
.
resetFields
()
queryFormRef
.
value
.
resetFields
()
queryFormRef
.
value
.
formFieldsParams
=
{}
handleQuery
()
handleQuery
()
}
}
/** 初始化 **/
/** 初始化 **/
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
await
getProcessDefinition
()
await
getList
()
await
getList
()
userList
.
value
=
await
UserApi
.
getSimpleUserList
()
userList
.
value
=
await
UserApi
.
getSimpleUserList
()
})
})
...
...
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