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