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
eeda821b
authored
Dec 27, 2024
by
GoldenZqqq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 区分兼容bpmn设计器与simple设计器不同传参与不同处理方式
parent
3ba5cb46
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
67 deletions
+76
-67
src/views/bpm/model/form/ProcessDesign.vue
+42
-45
src/views/bpm/model/form/index.vue
+34
-22
No files found.
src/views/bpm/model/form/ProcessDesign.vue
View file @
eeda821b
...
...
@@ -49,57 +49,23 @@ const modelData = computed({
set
:
(
val
)
=>
emit
(
'update:modelValue'
,
val
)
})
/** 表单校验 */
const
validate
=
async
()
=>
{
try
{
// 根据流程类型获取对应的编辑器引用
const
editorRef
=
modelData
.
value
.
type
===
BpmModelType
.
BPMN
?
bpmnEditorRef
.
value
:
simpleEditorRef
.
value
if
(
!
editorRef
)
{
throw
new
Error
(
'流程设计器未初始化'
)
}
// 获取最新的XML数据
const
bpmnXml
=
await
getXmlString
()
console
.
warn
(
bpmnXml
,
'bpmnXml'
)
if
(
!
bpmnXml
)
{
throw
new
Error
(
'请设计流程'
)
}
return
true
}
catch
(
error
)
{
throw
error
}
}
/** 获取当前XML字符串 */
const
getXmlString
=
async
()
=>
{
/** 获取当前流程数据 */
const
getProcessData
=
async
()
=>
{
try
{
if
(
modelData
.
value
.
type
===
BpmModelType
.
BPMN
)
{
// BPMN设计器
if
(
bpmnEditorRef
.
value
)
{
const
{
xml
}
=
await
bpmnEditorRef
.
value
.
saveXML
()
if
(
xml
)
{
// 更新本地数据
modelData
.
value
=
{
...
modelData
.
value
,
bpmnXml
:
xml
}
return
xml
}
return
xml
}
}
else
{
// Simple设计器
if
(
simpleEditorRef
.
value
)
{
const
flowData
=
await
simpleEditorRef
.
value
.
getCurrentFlowData
()
if
(
flowData
)
{
const
jsonData
=
JSON
.
stringify
(
flowData
)
// 更新本地数据
modelData
.
value
=
{
...
modelData
.
value
,
bpmnXml
:
jsonData
}
return
jsonData
return
flowData
// 直接返回流程数据对象,不需要转换为字符串
}
}
}
...
...
@@ -110,14 +76,45 @@ const getXmlString = async () => {
}
}
/** 表单校验 */
const
validate
=
async
()
=>
{
try
{
// 根据流程类型获取对应的编辑器引用
const
editorRef
=
modelData
.
value
.
type
===
BpmModelType
.
BPMN
?
bpmnEditorRef
.
value
:
simpleEditorRef
.
value
if
(
!
editorRef
)
{
throw
new
Error
(
'流程设计器未初始化'
)
}
// 获取最新的流程数据
const
processData
=
await
getProcessData
()
if
(
!
processData
)
{
throw
new
Error
(
'请设计流程'
)
}
return
true
}
catch
(
error
)
{
throw
error
}
}
/** 处理设计器保存成功 */
const
handleDesignSuccess
=
(
bpmnXml
?:
string
)
=>
{
if
(
bpmnXml
)
{
modelData
.
value
=
{
...
modelData
.
value
,
bpmnXml
const
handleDesignSuccess
=
(
data
?:
any
)
=>
{
if
(
data
)
{
if
(
modelData
.
value
.
type
===
BpmModelType
.
BPMN
)
{
modelData
.
value
=
{
...
modelData
.
value
,
bpmnXml
:
data
,
simpleModel
:
null
}
}
else
{
modelData
.
value
=
{
...
modelData
.
value
,
bpmnXml
:
null
,
simpleModel
:
data
}
}
emit
(
'success'
,
bpmnXml
)
emit
(
'success'
,
data
)
}
}
...
...
@@ -128,6 +125,6 @@ const showDesigner = computed(() => {
defineExpose
({
validate
,
get
XmlString
get
ProcessData
})
</
script
>
src/views/bpm/model/form/index.vue
View file @
eeda821b
...
...
@@ -177,7 +177,7 @@ const validateAllSteps = async () => {
currentStep
.
value
=
0
throw
new
Error
(
'请完善基本信息'
)
}
// 表单设计校验
await
formDesignRef
.
value
?.
validate
()
if
(
formData
.
value
.
formType
===
10
&&
!
formData
.
value
.
formId
)
{
...
...
@@ -191,15 +191,15 @@ const validateAllSteps = async () => {
currentStep
.
value
=
1
throw
new
Error
(
'请完善自定义表单信息'
)
}
// 流程设计校验
await
processDesignRef
.
value
?.
validate
()
const
bpmnXml
=
processDesignRef
.
value
?.
getXmlString
()
if
(
!
bpmnXml
)
{
const
processData
=
await
processDesignRef
.
value
?.
getProcessData
()
if
(
!
processData
)
{
currentStep
.
value
=
2
throw
new
Error
(
'请设计流程'
)
}
return
true
}
catch
(
error
)
{
throw
error
...
...
@@ -211,22 +211,28 @@ const handleSave = async () => {
try
{
// 保存前校验所有步骤的数据
await
validateAllSteps
()
// 获取最新的流程设计数据
const
bpmnXml
=
await
processDesignRef
.
value
?.
getXmlString
()
if
(
!
bpmnXml
)
{
const
processData
=
await
processDesignRef
.
value
?.
getProcessData
()
if
(
!
processData
)
{
throw
new
Error
(
'获取流程数据失败'
)
}
// 更新表单数据
formData
.
value
=
{
...
formData
.
value
,
bpmnXml
:
bpmnXml
const
modelData
=
{
...
formData
.
value
}
if
(
formData
.
value
.
type
===
BpmModelType
.
BPMN
)
{
modelData
.
bpmnXml
=
processData
modelData
.
simpleModel
=
null
}
else
{
modelData
.
bpmnXml
=
null
modelData
.
simpleModel
=
processData
// 直接使用流程数据对象
}
if
(
formData
.
value
.
id
)
{
// 修改场景
await
ModelApi
.
updateModel
(
formData
.
value
)
await
ModelApi
.
updateModel
(
modelData
)
message
.
success
(
'修改成功'
)
// 询问是否发布流程
try
{
...
...
@@ -238,7 +244,7 @@ const handleSave = async () => {
}
}
else
{
// 新增场景
const
result
=
await
ModelApi
.
createModel
(
formData
.
value
)
const
result
=
await
ModelApi
.
createModel
(
modelData
)
formData
.
value
.
id
=
result
message
.
success
(
'新增成功'
)
try
{
...
...
@@ -275,24 +281,30 @@ const handleDeploy = async () => {
// 校验所有步骤
await
validateAllSteps
()
// 获取最新的流程设计数据
const
bpmnXml
=
await
processDesignRef
.
value
?.
getXmlString
()
if
(
!
bpmnXml
)
{
const
processData
=
await
processDesignRef
.
value
?.
getProcessData
()
if
(
!
processData
)
{
throw
new
Error
(
'获取流程数据失败'
)
}
// 更新表单数据
formData
.
value
=
{
...
formData
.
value
,
bpmnXml
:
bpmnXml
const
modelData
=
{
...
formData
.
value
}
if
(
formData
.
value
.
type
===
BpmModelType
.
BPMN
)
{
modelData
.
bpmnXml
=
processData
modelData
.
simpleModel
=
null
}
else
{
modelData
.
bpmnXml
=
null
modelData
.
simpleModel
=
processData
// 直接使用流程数据对象
}
// 先保存所有数据
if
(
formData
.
value
.
id
)
{
await
ModelApi
.
updateModel
(
formData
.
value
)
await
ModelApi
.
updateModel
(
modelData
)
}
else
{
const
result
=
await
ModelApi
.
createModel
(
formData
.
value
)
const
result
=
await
ModelApi
.
createModel
(
modelData
)
formData
.
value
.
id
=
result
.
id
}
...
...
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