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
9e798fb7
authored
Mar 25, 2023
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Vue3 重构:去除 modelEditor.vue 冗余代码
parent
7463eea2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
124 deletions
+38
-124
src/api/bpm/model/index.ts
+1
-1
src/views/bpm/model/index.vue
+2
-2
src/views/bpm/model/modelEditor.vue
+35
-121
No files found.
src/api/bpm/model/index.ts
View file @
9e798fb7
...
...
@@ -29,7 +29,7 @@ export const getModelPageApi = async (params) => {
return
await
request
.
get
({
url
:
'/bpm/model/page'
,
params
})
}
export
const
getModel
Api
=
async
(
id
:
number
)
=>
{
export
const
getModel
=
async
(
id
:
number
)
=>
{
return
await
request
.
get
({
url
:
'/bpm/model/get?id='
+
id
})
}
...
...
src/views/bpm/model/index.vue
View file @
9e798fb7
...
...
@@ -389,7 +389,7 @@ const handleFormDetail = async (row) => {
const
handleBpmnDetail
=
(
row
)
=>
{
// TODO 芋艿:流程组件开发中
console
.
log
(
row
)
ModelApi
.
getModel
Api
(
row
).
then
((
response
)
=>
{
ModelApi
.
getModel
(
row
).
then
((
response
)
=>
{
console
.
log
(
response
,
'response'
)
bpmnXML
.
value
=
response
.
bpmnXml
// 弹窗打开
...
...
@@ -432,7 +432,7 @@ const handleUpdate = async (rowId: number) => {
resetForm
()
await
setDialogTile
(
'edit'
)
// 设置数据
saveForm
.
value
=
await
ModelApi
.
getModel
Api
(
rowId
)
saveForm
.
value
=
await
ModelApi
.
getModel
(
rowId
)
if
(
saveForm
.
value
.
category
==
null
)
{
saveForm
.
value
.
category
=
1
}
else
{
...
...
src/views/bpm/model/modelEditor.vue
View file @
9e798fb7
<
template
>
<div
class=
"app-container"
>
<!-- 流程设计器,负责绘制流程等 -->
<!--
<myProcessDesigner
--
>
<my-process-designer
:key=
"`designer-$
{reloadIndex}`
"
key=
"designer
"
v-if=
"xmlString !== undefined"
v-model=
"xmlString"
:value=
"xmlString"
...
...
@@ -15,39 +13,28 @@
@
save=
"save"
/>
<!-- 流程属性器,负责编辑每个流程节点的属性 -->
<!--
<MyProcessPalette
--
>
<my-properties-panel
:key=
"`penal-$
{reloadIndex}`
"
key=
"penal
"
:bpmnModeler=
"modeler"
:prefix=
"controlForm.prefix"
class=
"process-panel"
:model=
"model"
/>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
// import { translations } from '@/components/bpmnProcessDesigner/src/translations'
// 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)
import
CustomContentPadProvider
from
'@/components/bpmnProcessDesigner/package/designer/plugins/content-pad'
// 自定义左侧菜单(修改 默认任务 为 用户任务)
import
CustomPaletteProvider
from
'@/components/bpmnProcessDesigner/package/designer/plugins/palette'
// import xmlObj2json from "./utils/xml2json";
// import myProcessDesigner from '@/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue'
// import MyProcessPalette from '@/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue'
import
{
createModelApi
,
getModelApi
,
updateModelApi
,
ModelVO
}
from
'@/api/bpm/model'
import
*
as
ModelApi
from
'@/api/bpm/model'
const
router
=
useRouter
()
const
message
=
useMessage
()
// 自定义侧边栏
// import MyProcessPanel from "../package/process-panel/ProcessPanel";
const
router
=
useRouter
()
// 路由
const
{
query
}
=
useRoute
()
// 路由的查询
const
message
=
useMessage
()
// 国际化
const
xmlString
=
ref
(
undefined
)
// BPMN XML
const
modeler
=
ref
(
null
)
const
reloadIndex
=
ref
(
0
)
// const controlDrawerVisible = ref(false)
// const translationsSelf = translations
const
controlForm
=
ref
({
simulation
:
true
,
labelEditing
:
false
,
...
...
@@ -56,128 +43,55 @@ const controlForm = ref({
headerButtonSize
:
'mini'
,
additionalModel
:
[
CustomContentPadProvider
,
CustomPaletteProvider
]
})
// const addis = ref({
// CustomContentPadProvider,
// CustomPaletteProvider
// })
// 流程模型的信息
const
model
=
ref
<
ModelVO
>
()
onMounted
(()
=>
{
// 如果 modelId 非空,说明是修改流程模型
const
modelId
=
router
.
currentRoute
.
value
.
query
&&
router
.
currentRoute
.
value
.
query
.
modelId
console
.
log
(
modelId
,
'modelId'
)
if
(
modelId
)
{
// let data = '4b4909d8-97e7-11ec-8e20-862bc1a4a054'
getModelApi
(
modelId
as
unknown
as
number
).
then
((
data
)
=>
{
console
.
log
(
data
,
'response'
)
xmlString
.
value
=
data
.
bpmnXml
model
.
value
=
{
...
data
,
bpmnXml
:
undefined
// 清空 bpmnXml 属性
}
// this.controlForm.processId = data.key
const
model
=
ref
<
ModelApi
.
ModelVO
>
()
// 流程模型的信息
// xmlString.value =
// '
<
?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?
>
\
n
<
bpmn2
:
definitions
xmlns
:
xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns
:
bpmn2
=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns
:
bpmndi
=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns
:
dc
=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns
:
di
=
"http://www.omg.org/spec/DD/20100524/DI"
id
=
"diagram_Process_1645980650311"
targetNamespace
=
"http://activiti.org/bpmn"
><
bpmn2
:
process
id
=
"flowable_01"
name
=
"flowable测试"
isExecutable
=
"true"
><
bpmn2
:
startEvent
id
=
"Event_1iruxim"
><
bpmn2
:
outgoing
>
Flow_0804gmo
<
/bpmn2:outgoing></
bpmn2
:
startEvent
><
bpmn2
:
userTask
id
=
"task01"
name
=
"task01"
><
bpmn2
:
incoming
>
Flow_0804gmo
<
/bpmn2:incoming><bpmn2:outgoing>Flow_0cx479x</
bpmn2
:
outgoing
><
/bpmn2:userTask><bpmn2:sequenceFlow id="Flow_0804gmo" sourceRef="Event_1iruxim" targetRef="task01" /
><
bpmn2
:
endEvent
id
=
"Event_1mdsccz"
><
bpmn2
:
incoming
>
Flow_0cx479x
<
/bpmn2:incoming></
bpmn2
:
endEvent
><
bpmn2
:
sequenceFlow
id
=
"Flow_0cx479x"
sourceRef
=
"task01"
targetRef
=
"Event_1mdsccz"
/><
/bpmn2:process><bpmndi:BPMNDiagram id="BPMNDiagram_1"><bpmndi:BPMNPlane id="flowable_01_di" bpmnElement="flowable_01"><bpmndi:BPMNEdge id="Flow_0cx479x_di" bpmnElement="Flow_0cx479x"><di:waypoint x="440" y="350" /
><
di
:
waypoint
x
=
"492"
y
=
"350"
/><
/bpmndi:BPMNEdge><bpmndi:BPMNEdge id="Flow_0804gmo_di" bpmnElement="Flow_0804gmo"><di:waypoint x="288" y="350" /
><
di
:
waypoint
x
=
"340"
y
=
"350"
/><
/bpmndi:BPMNEdge><bpmndi:BPMNShape id="Event_1iruxim_di" bpmnElement="Event_1iruxim"><dc:Bounds x="252" y="332" width="36" height="36" /
><
/bpmndi:BPMNShape><bpmndi:BPMNShape id="task01_di" bpmnElement="task01"><dc:Bounds x="340" y="310" width="100" height="80" /
><
/bpmndi:BPMNShape><bpmndi:BPMNShape id="Event_1mdsccz_di" bpmnElement="Event_1mdsccz"><dc:Bounds x="492" y="332" width="36" height="36" /
><
/bpmndi:BPMNShape></
bpmndi
:
BPMNPlane
><
/bpmndi:BPMNDiagram></
bpmn2
:
definitions
>
'
// model.value = {
// key: '
flowable_01
',
// name: '
flowable
测试
',
// description: '
ooxx
',
// category: '
1
',
// formType: 10,
// formId: 11,
// formCustomCreatePath: null,
// formCustomViewPath: null,
// id: '
4
b4909d8
-
97
e7
-
11
ec
-
8
e20
-
862
bc1a4a054
',
// createTime: 1645978019795,
// bpmnXml: undefined // 清空 bpmnXml 属性
// }
// console.log(modeler.value, '
modeler11111111
')
})
}
})
/** 初始化 modeler */
const
initModeler
=
(
item
)
=>
{
setTimeout
(()
=>
{
modeler
.
value
=
item
console.log(item, '
initModeler
方法
modeler
')
console.log(modeler.value, '
initModeler
方法
modeler
')
// controlForm.value.prefix = '
2222
'
},
10
)
}
const save = (bpmnXml) => {
const data: ModelVO = {
...(model.value ?? ({} as ModelVO)),
/** 添加/修改模型 */
const
save
=
async
(
bpmnXml
)
=>
{
const
data
=
{
...
model
.
value
,
bpmnXml
:
bpmnXml
// bpmnXml 只是初始化流程图,后续修改无法通过它获得
}
console.log(data, '
data
')
// 修改的提交
}
as
unknown
as
ModelApi
.
ModelVO
// 提交
if
(
data
.
id
)
{
updateModelApi(data).then((response) => {
console.log(response, '
response
')
await
ModelApi
.
updateModelApi
(
data
)
message
.
success
(
'修改成功'
)
// 跳转回去
close()
})
return
}
else
{
await
ModelApi
.
createModelApi
(
data
)
message
.
success
(
'新增成功'
)
}
// 添加的提交
createModelApi(data).then((response) => {
console.log(response, '
response1
')
message.success('
保存成功
')
// 跳转回去
close
()
})
}
/** 关闭按钮 */
const
close
=
()
=>
{
router
.
push
({
path
:
'/bpm/manager/model'
})
}
</
script
>
<
style
lang=
"scss"
>
//
body
{
//
overflow
:
hidden
;
//
margin
:
0
;
//
box-sizing
:
border-box
;
//
}
//
.app
{
//
width
:
100%
;
//
height
:
100%
;
//
box-sizing
:
border-box
;
//
display
:
inline-grid
;
//
grid-template-columns
:
100px
auto
max-content
;
//
}
.demo-control-bar
{
position
:
fixed
;
right
:
8px
;
bottom
:
8px
;
z-index
:
1
;
.open-control-dialog
{
width
:
48px
;
height
:
48px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
border-radius
:
4px
;
font-size
:
32px
;
background
:
rgba
(
64
,
158
,
255
,
1
);
color
:
#ffffff
;
cursor
:
pointer
;
/** 初始化 */
onMounted
(
async
()
=>
{
const
modelId
=
query
.
modelId
as
unknown
as
number
if
(
!
modelId
)
{
message
.
error
(
'缺少模型 modelId 编号'
)
return
}
}
//
TODO
芋艿:去掉多余的
faq
//
.info-tip
{
//
position
:
fixed
;
//
top
:
40px
;
//
right
:
500px
;
//
z-index
:
10
;
//
color
:
#999999
;
//
}
// 查询模型
const
data
=
await
ModelApi
.
getModel
(
modelId
)
xmlString
.
value
=
data
.
bpmnXml
model
.
value
=
{
...
data
,
bpmnXml
:
undefined
// 清空 bpmnXml 属性
}
})
</
script
>
<
style
lang=
"scss"
>
.control-form
{
.el-radio
{
width
:
100%
;
...
...
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