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
3c6bf378
authored
Mar 26, 2023
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Vue3 重构:流程定义列表
parent
b587d763
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
151 additions
and
187 deletions
+151
-187
src/api/bpm/definition/index.ts
+3
-3
src/views/bpm/definition/definition.data.ts
+0
-79
src/views/bpm/definition/index.vue
+135
-96
src/views/bpm/model/index.vue
+10
-5
src/views/bpm/processInstance/create.vue
+2
-2
src/views/bpm/processInstance/detail.vue
+1
-1
src/views/system/sms/template/index.vue
+0
-1
No files found.
src/api/bpm/definition/index.ts
View file @
3c6bf378
import
request
from
'@/config/axios'
export
const
getProcessDefinitionBpmnXML
Api
=
async
(
id
:
number
)
=>
{
export
const
getProcessDefinitionBpmnXML
=
async
(
id
:
number
)
=>
{
return
await
request
.
get
({
url
:
'/bpm/process-definition/get-bpmn-xml?id='
+
id
})
}
export
const
getProcessDefinitionPage
Api
=
async
(
params
)
=>
{
export
const
getProcessDefinitionPage
=
async
(
params
)
=>
{
return
await
request
.
get
({
url
:
'/bpm/process-definition/page'
,
params
})
}
export
const
getProcessDefinitionList
Api
=
async
(
params
)
=>
{
export
const
getProcessDefinitionList
=
async
(
params
)
=>
{
return
await
request
.
get
({
url
:
'/bpm/process-definition/list'
,
params
...
...
src/views/bpm/definition/definition.data.ts
deleted
100644 → 0
View file @
b587d763
import
type
{
VxeCrudSchema
}
from
'@/hooks/web/useVxeCrudSchemas'
// CrudSchema
const
crudSchemas
=
reactive
<
VxeCrudSchema
>
({
primaryKey
:
'id'
,
primaryType
:
null
,
action
:
true
,
columns
:
[
{
title
:
'定义编号'
,
field
:
'id'
,
table
:
{
width
:
360
}
},
{
title
:
'定义名称'
,
field
:
'name'
,
table
:
{
// width: 120,
slots
:
{
default
:
'name_default'
}
}
},
{
title
:
'定义分类'
,
field
:
'category'
,
// dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
// dictClass: 'number',
table
:
{
// width: 120,
slots
:
{
default
:
'category_default'
}
}
},
{
title
:
'表单信息'
,
field
:
'formId'
,
table
:
{
// width: 200,
slots
:
{
default
:
'formId_default'
}
}
},
{
title
:
'流程版本'
,
field
:
'version'
,
table
:
{
// width: 80,
slots
:
{
default
:
'version_default'
}
}
},
{
title
:
'激活状态'
,
field
:
'suspensionState'
,
table
:
{
// width: 80,
slots
:
{
default
:
'suspensionState_default'
}
}
},
{
title
:
'部署时间'
,
field
:
'deploymentTime'
,
isForm
:
false
,
formatter
:
'formatDate'
// table: {
// width: 180
// }
}
]
})
export
const
{
allSchemas
}
=
useVxeCrudSchemas
(
crudSchemas
)
src/views/bpm/definition/index.vue
View file @
3c6bf378
<
template
>
<ContentWrap>
<!-- 列表 -->
<XTable
@
register=
"registerTable"
>
<!-- 流程名称 -->
<template
#
name_default=
"
{ row }">
<XTextButton
:title=
"row.name"
@
click=
"handleBpmnDetail(row.id)"
/>
</
template
>
<!-- 流程分类 -->
<
template
#
category_default=
"{ row }"
>
<DictTag
:type=
"DICT_TYPE.BPM_MODEL_CATEGORY"
:value=
"Number(row?.category)"
/>
</
template
>
<!-- 表单信息 -->
<
template
#
formId_default=
"{ row }"
>
<XTextButton
v-if=
"row.formType === 10"
:title=
"row.formName"
@
click=
"handleFormDetail(row)"
/>
<XTextButton
v-else
:title=
"row.formCustomCreatePath"
@
click=
"handleFormDetail(row)"
/>
</
template
>
<!-- 流程版本 -->
<
template
#
version_default=
"{ row }"
>
<el-tag>
v
{{
row
.
version
}}
</el-tag>
</
template
>
<!-- 激活状态 -->
<
template
#
suspensionState_default=
"{ row }"
>
<el-tag
type=
"success"
v-if=
"row.suspensionState === 1"
>
激活
</el-tag>
<el-tag
type=
"warning"
v-if=
"row.suspensionState === 2"
>
挂起
</el-tag>
</
template
>
<!-- 操作 -->
<
template
#
actionbtns_default=
"{ row }"
>
<XTextButton
preIcon=
"ep:user"
title=
"分配规则"
v-hasPermi=
"['bpm:task-assign-rule:query']"
@
click=
"handleAssignRule(row)"
/>
</
template
>
</XTable>
<!-- 表单详情的弹窗 -->
<XModal
v-model=
"formDetailVisible"
width=
"800"
title=
"表单详情"
:show-footer=
"false"
>
<form-create
:rule=
"formDetailPreview.rule"
:option=
"formDetailPreview.option"
v-if=
"formDetailVisible"
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"定义编号"
align=
"center"
prop=
"id"
width=
"400"
/>
<el-table-column
label=
"流程名称"
align=
"center"
prop=
"name"
width=
"200"
>
<template
#
default=
"scope"
>
<el-button
type=
"text"
@
click=
"handleBpmnDetail(scope.row)"
>
<span>
{{
scope
.
row
.
name
}}
</span>
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"定义分类"
align=
"center"
prop=
"category"
width=
"100"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BPM_MODEL_CATEGORY"
:value=
"scope.row.category"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"表单信息"
align=
"center"
prop=
"formType"
width=
"200"
>
<
template
#
default=
"scope"
>
<el-button
v-if=
"scope.row.formType === 10"
type=
"text"
@
click=
"handleFormDetail(scope.row)"
>
<span>
{{
scope
.
row
.
formName
}}
</span>
</el-button>
<el-button
v-else
type=
"text"
@
click=
"handleFormDetail(scope.row)"
>
<span>
{{
scope
.
row
.
formCustomCreatePath
}}
</span>
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"流程版本"
align=
"center"
prop=
"processDefinition.version"
width=
"80"
>
<
template
#
default=
"scope"
>
<el-tag
v-if=
"scope.row"
>
v
{{
scope
.
row
.
version
}}
</el-tag>
<el-tag
type=
"warning"
v-else
>
未部署
</el-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"状态"
align=
"center"
prop=
"version"
width=
"80"
>
<
template
#
default=
"scope"
>
<el-tag
type=
"success"
v-if=
"scope.row.suspensionState === 1"
>
激活
</el-tag>
<el-tag
type=
"warning"
v-if=
"scope.row.suspensionState === 2"
>
挂起
</el-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"部署时间"
align=
"center"
prop=
"deploymentTime"
width=
"180"
:formatter=
"dateFormatter"
/>
</XModal>
<!-- 流程模型图的预览 -->
<XModal
title=
"流程图"
v-model=
"showBpmnOpen"
width=
"80%"
height=
"90%"
>
<my-process-viewer
key=
"designer"
v-model=
"bpmnXML"
:value=
"bpmnXML"
v-bind=
"bpmnControlForm"
:prefix=
"bpmnControlForm.prefix"
<el-table-column
label=
"定义描述"
align=
"center"
prop=
"description"
width=
"300"
show-overflow-tooltip
/>
</XModal>
<el-table-column
label=
"操作"
align=
"center"
width=
"150"
fixed=
"right"
>
<
template
#
default=
"scope"
>
<el-button
link
type=
"primary"
@
click=
"handleAssignRule(scope.row)"
v-hasPermi=
"['bpm:task-assign-rule:query']"
>
分配规则
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</ContentWrap>
<!-- 弹窗:表单详情 -->
<Dialog
title=
"表单详情"
v-model=
"formDetailVisible"
width=
"800"
>
<form-create
:rule=
"formDetailPreview.rule"
:option=
"formDetailPreview.option"
/>
</Dialog>
<!-- 弹窗:流程模型图的预览 -->
<Dialog
title=
"流程图"
v-model=
"bpmnDetailVisible"
width=
"800"
>
<my-process-viewer
key=
"designer"
v-model=
"bpmnXML"
:value=
"bpmnXML"
v-bind=
"bpmnControlForm"
:prefix=
"bpmnControlForm.prefix"
/>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
// 业务相关的 import
<
script
setup
lang=
"ts"
name=
"Form"
>
import
{
DICT_TYPE
}
from
'@/utils/dict'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
*
as
DefinitionApi
from
'@/api/bpm/definition'
// import * as ModelApi from '@/api/bpm/model'
import
{
allSchemas
}
from
'./definition.data'
import
{
setConfAndFields2
}
from
'@/utils/formCreate'
import
{
DICT_TYPE
}
from
'@/utils/dict'
const
bpmnXML
=
ref
(
null
)
const
showBpmnOpen
=
ref
(
false
)
const
bpmnControlForm
=
ref
({
prefix
:
'flowable'
})
// const message = useMessage() // 消息弹窗
const
router
=
useRouter
()
// 路由
const
{
push
}
=
useRouter
()
// 路由
const
{
query
}
=
useRoute
()
// 查询参数
// ========== 列表相关 ==========
const
loading
=
ref
(
true
)
// 列表的加载中
const
total
=
ref
(
0
)
// 列表的总页数
const
list
=
ref
([])
// 列表的数据
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
key
:
query
.
key
})
const
[
registerTable
]
=
useXTable
({
allSchemas
:
allSchemas
,
getListApi
:
DefinitionApi
.
getProcessDefinitionPageApi
,
params
:
queryParams
})
// 流程表单的详情按钮操作
/** 查询参数列表 */
const
getList
=
async
()
=>
{
loading
.
value
=
true
try
{
const
data
=
await
DefinitionApi
.
getProcessDefinitionPage
(
queryParams
)
list
.
value
=
data
.
list
total
.
value
=
data
.
total
}
finally
{
loading
.
value
=
false
}
}
/** 点击任务分配按钮 */
const
handleAssignRule
=
(
row
)
=>
{
push
({
name
:
'BpmTaskAssignRuleList'
,
query
:
{
modelId
:
row
.
id
}
})
}
/** 流程表单的详情按钮操作 */
const
formDetailVisible
=
ref
(
false
)
const
formDetailPreview
=
ref
({
rule
:
[],
...
...
@@ -99,32 +145,25 @@ const handleFormDetail = async (row) => {
// 弹窗打开
formDetailVisible
.
value
=
true
}
else
{
await
router
.
push
({
await
push
({
path
:
row
.
formCustomCreatePath
})
}
}
// 流程图的详情按钮操作
const
handleBpmnDetail
=
(
row
)
=>
{
// TODO 芋艿:流程组件开发中
console
.
log
(
row
)
DefinitionApi
.
getProcessDefinitionBpmnXMLApi
(
row
).
then
((
response
)
=>
{
console
.
log
(
response
,
'response'
)
bpmnXML
.
value
=
response
// 弹窗打开
showBpmnOpen
.
value
=
true
})
// message.success('流程组件开发中,预计 2 月底完成')
/** 流程图的详情按钮操作 */
const
bpmnDetailVisible
=
ref
(
false
)
const
bpmnXML
=
ref
(
null
)
const
bpmnControlForm
=
ref
({
prefix
:
'flowable'
})
const
handleBpmnDetail
=
async
(
row
)
=>
{
bpmnXML
.
value
=
await
DefinitionApi
.
getProcessDefinitionBpmnXML
(
row
.
id
)
bpmnDetailVisible
.
value
=
true
}
// 点击任务分配按钮
const
handleAssignRule
=
(
row
)
=>
{
router
.
push
({
name
:
'BpmTaskAssignRuleList'
,
query
:
{
processDefinitionId
:
row
.
id
}
})
}
/** 初始化 **/
onMounted
(()
=>
{
getList
()
})
</
script
>
src/views/bpm/model/index.vue
View file @
3c6bf378
...
...
@@ -62,7 +62,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"流程标识"
align=
"center"
prop=
"key"
/>
<el-table-column
label=
"流程标识"
align=
"center"
prop=
"key"
width=
"200"
/>
<el-table-column
label=
"流程名称"
align=
"center"
prop=
"name"
width=
"200"
>
<template
#
default=
"scope"
>
<el-button
type=
"text"
@
click=
"handleBpmnDetail(scope.row)"
>
...
...
@@ -77,11 +77,15 @@
</el-table-column>
<el-table-column
label=
"表单信息"
align=
"center"
prop=
"formType"
width=
"200"
>
<
template
#
default=
"scope"
>
<el-button
v-if=
"scope.row.formId"
type=
"text"
@
click=
"handleFormDetail(scope.row)"
>
<el-button
v-if=
"scope.row.formType === 10"
type=
"text"
@
click=
"handleFormDetail(scope.row)"
>
<span>
{{
scope
.
row
.
formName
}}
</span>
</el-button>
<el-button
v-else-if=
"scope.row.form
CustomCreatePath
"
v-else-if=
"scope.row.form
Type === 20
"
type=
"text"
@
click=
"handleFormDetail(scope.row)"
>
...
...
@@ -94,6 +98,7 @@
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
:formatter=
"dateFormatter"
/>
<el-table-column
label=
"最新部署的流程定义"
align=
"center"
>
...
...
@@ -114,7 +119,7 @@
label=
"激活状态"
align=
"center"
prop=
"processDefinition.version"
width=
"8
0
"
width=
"8
5
"
>
<
template
#
default=
"scope"
>
<el-switch
...
...
@@ -134,7 +139,7 @@
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
fixed=
"right"
class-name=
"fixed-width
"
>
<el-table-column
label=
"操作"
align=
"center"
width=
"240"
fixed=
"right
"
>
<
template
#
default=
"scope"
>
<el-button
link
...
...
src/views/bpm/processInstance/create.vue
View file @
3c6bf378
...
...
@@ -72,7 +72,7 @@ const [registerTable] = useXTable({
params
:
{
suspensionState
:
1
},
getListApi
:
DefinitionApi
.
getProcessDefinitionList
Api
,
getListApi
:
DefinitionApi
.
getProcessDefinitionList
,
isList
:
true
})
...
...
@@ -99,7 +99,7 @@ const handleSelect = async (row) => {
setConfAndFields2
(
detailForm
,
row
.
formConf
,
row
.
formFields
)
// 加载流程图
DefinitionApi
.
getProcessDefinitionBpmnXML
Api
(
row
.
id
).
then
((
response
)
=>
{
DefinitionApi
.
getProcessDefinitionBpmnXML
(
row
.
id
).
then
((
response
)
=>
{
bpmnXML
.
value
=
response
})
// 情况二:业务表单
...
...
src/views/bpm/processInstance/detail.vue
View file @
3c6bf378
...
...
@@ -411,7 +411,7 @@ const getDetail = () => {
}
// 加载流程图
DefinitionApi
.
getProcessDefinitionBpmnXML
Api
(
processDefinition
.
id
).
then
((
data
)
=>
{
DefinitionApi
.
getProcessDefinitionBpmnXML
(
processDefinition
.
id
).
then
((
data
)
=>
{
bpmnXML
.
value
=
data
})
...
...
src/views/system/sms/template/index.vue
View file @
3c6bf378
...
...
@@ -169,7 +169,6 @@
<el-table-column
label=
"操作"
align=
"center"
class-name=
"fixed-width"
width=
"210"
fixed=
"right"
>
...
...
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