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
36157a8f
authored
Dec 25, 2024
by
GoldenZqqq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 修复新增流程时无法通过第三步的bpm必填校验问题
parent
a82862be
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
30 deletions
+32
-30
src/views/bpm/model/form/ProcessDesign.vue
+13
-9
src/views/bpm/model/form/index.vue
+19
-21
No files found.
src/views/bpm/model/form/ProcessDesign.vue
View file @
36157a8f
...
...
@@ -50,7 +50,7 @@ const modelData = computed({
watch
(
()
=>
props
.
modelValue
,
(
newVal
)
=>
{
if
(
newVal
.
bpmnXml
)
{
if
(
newVal
?
.
bpmnXml
)
{
xmlString
.
value
=
newVal
.
bpmnXml
}
},
...
...
@@ -61,24 +61,29 @@ watch(
const
handleDesignSuccess
=
(
bpmnXml
?:
string
)
=>
{
if
(
bpmnXml
)
{
xmlString
.
value
=
bpmnXml
emit
(
'update:modelValue'
,
{
modelData
.
value
=
{
...
modelData
.
value
,
bpmnXml
}
)
}
emit
(
'success'
,
bpmnXml
)
}
}
/** 表单校验 */
const
validate
=
async
()
=>
{
// 修改场景下,如果已有 modelData.bpmnXml 则不需要重新校验
if
(
modelData
.
value
.
id
&&
modelData
.
value
.
bpmnXml
)
{
// 获取最新的XML数据
const
currentXml
=
xmlString
.
value
||
modelData
.
value
?.
bpmnXml
// 如果是修改场景且有XML数据(无论是新的还是原有的)
if
(
modelData
.
value
.
id
&&
currentXml
)
{
return
true
}
// 新增场景或无 bpmnXml 时才校验
if
(
!
xmlString
.
value
)
{
// 新增场景必须有XML数据
if
(
!
currentXml
)
{
throw
new
Error
(
'请设计流程'
)
}
return
true
}
...
...
@@ -89,8 +94,7 @@ const showDesigner = computed(() => {
/** 获取当前XML字符串 */
const
getXmlString
=
()
=>
{
// 优先返回最新的 xmlString
return
xmlString
.
value
||
modelData
.
value
?.
bpmnXml
return
xmlString
.
value
||
modelData
.
value
?.
bpmnXml
||
''
}
defineExpose
({
...
...
src/views/bpm/model/form/index.vue
View file @
36157a8f
...
...
@@ -169,19 +169,24 @@ const initData = async () => {
/** 保存操作 */
const
handleSave
=
async
()
=>
{
try
{
// 保存前确保当前步骤的数据已经验证通过
if
(
typeof
steps
[
currentStep
.
value
].
validator
===
'function'
)
{
await
steps
[
currentStep
.
value
].
validator
()
// 保存前确保所有步骤的数据都已经验证通过
for
(
const
step
of
steps
)
{
if
(
step
.
validator
)
{
await
step
.
validator
()
}
}
// 如果是第三步,需要先获取最新的流程设计数据
// 如果是
在
第三步,需要先获取最新的流程设计数据
if
(
currentStep
.
value
===
2
)
{
await
nextTick
()
const
bpmnXml
=
processDesignRef
.
value
?.
getXmlString
()
if
(
bpmnXml
)
{
formData
.
value
.
bpmnXml
=
bpmnXml
// 确保有XML数据
if
(
!
bpmnXml
)
{
throw
new
Error
(
'请设计流程'
)
}
formData
.
value
.
bpmnXml
=
bpmnXml
}
if
(
formData
.
value
.
id
)
{
await
ModelApi
.
updateModel
(
formData
.
value
)
message
.
success
(
'修改成功'
)
...
...
@@ -193,6 +198,7 @@ const handleSave = async () => {
}
catch
(
error
)
{
console
.
error
(
'保存失败:'
,
error
)
message
.
error
(
error
.
message
||
'保存失败'
)
throw
error
}
}
...
...
@@ -200,24 +206,14 @@ const handleSave = async () => {
const
handleDeploy
=
async
()
=>
{
try
{
await
message
.
confirm
(
'是否确认发布该流程?'
)
// 发布时才进行全部校验
for
(
const
step
of
steps
)
{
if
(
step
.
validator
)
{
await
step
.
validator
()
}
}
// 如果是第三步,需要先获取最新的流程设计数据
if
(
currentStep
.
value
===
2
)
{
const
bpmnXml
=
processDesignRef
.
value
?.
getXmlString
()
if
(
bpmnXml
)
{
formData
.
value
.
bpmnXml
=
bpmnXml
}
}
// 先保存所有数据
await
handleSave
()
// 发布
await
ModelApi
.
deployModel
(
formData
.
value
.
id
)
message
.
success
(
'发布成功'
)
router
.
push
({
name
:
'BpmModel'
})
}
catch
(
error
)
{
console
.
error
(
'发布失败:'
,
error
)
if
(
error
instanceof
Error
)
{
// 校验失败时,跳转到对应步骤
const
failedStep
=
steps
.
findIndex
((
step
)
=>
{
...
...
@@ -231,6 +227,8 @@ const handleDeploy = async () => {
if
(
failedStep
!==
-
1
)
{
currentStep
.
value
=
failedStep
message
.
warning
(
'请完善必填信息'
)
}
else
{
message
.
error
(
error
.
message
||
'发布失败'
)
}
}
}
...
...
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