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
21e20021
authored
Mar 02, 2023
by
bimei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://gitee.com/meibe/yudao-ui-admin-vue3
parents
a16751f2
265302d7
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
217 additions
and
127 deletions
+217
-127
package.json
+3
-3
src/components/XModal/src/XModal.vue
+3
-1
src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
+7
-7
src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue
+4
-3
src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
+9
-6
src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
+4
-3
src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
+13
-12
src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue
+14
-13
src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue
+2
-1
src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue
+3
-2
src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
+18
-17
src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue
+5
-4
src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue
+8
-7
src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue
+4
-3
src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
+3
-2
src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
+7
-6
src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
+4
-2
src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue
+4
-2
src/components/bpmnProcessDesigner/package/utils.ts
+9
-8
src/hooks/web/useI18n.ts
+1
-0
src/hooks/web/useTimeAgo.ts
+2
-0
src/types/auto-components.d.ts
+5
-1
src/types/auto-imports.d.ts
+4
-1
src/views/bpm/definition/definition.data.ts
+17
-11
src/views/bpm/definition/index.vue
+29
-3
src/views/bpm/group/index.vue
+1
-1
src/views/bpm/model/index.vue
+9
-0
src/views/bpm/model/model.data.ts
+6
-1
src/views/bpm/model/modelEditor.vue
+1
-1
src/views/bpm/processInstance/detail.vue
+1
-1
src/views/bpm/processInstance/index.vue
+1
-1
src/views/bpm/taskAssignRule/index.vue
+2
-2
src/views/system/dict/index.vue
+5
-0
src/views/system/notify/my/index.vue
+1
-1
src/views/system/user/user.data.ts
+8
-1
No files found.
package.json
View file @
21e20021
...
...
@@ -8,9 +8,9 @@
"i"
:
"pnpm install"
,
"dev"
:
"vite --mode base"
,
"ts:check"
:
"vue-tsc --noEmit"
,
"build:pro"
:
"
vite
build --mode pro"
,
"build:dev"
:
"
vite
build --mode dev"
,
"build:test"
:
"n
pm run ts:check && vite
build --mode test"
,
"build:pro"
:
"
node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js
build --mode pro"
,
"build:dev"
:
"
node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js
build --mode dev"
,
"build:test"
:
"n
ode --max_old_space_size=8000 ./node_modules/vite/bin/vite.js
build --mode test"
,
"serve:pro"
:
"vite preview --mode pro"
,
"serve:dev"
:
"vite preview --mode dev"
,
"serve:test"
:
"vite preview --mode test"
,
...
...
src/components/XModal/src/XModal.vue
View file @
21e20021
...
...
@@ -12,7 +12,9 @@ const props = defineProps({
height
:
propTypes
.
string
,
minWidth
:
propTypes
.
string
.
def
(
'460'
),
minHeight
:
propTypes
.
string
.
def
(
'320'
),
showFooter
:
propTypes
.
bool
.
def
(
true
)
showFooter
:
propTypes
.
bool
.
def
(
true
),
maskClosable
:
propTypes
.
bool
.
def
(
false
),
escClosable
:
propTypes
.
bool
.
def
(
false
)
})
const
getBindValue
=
computed
(()
=>
{
...
...
src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
View file @
21e20021
...
...
@@ -190,12 +190,12 @@
</div>
<XModal
title=
"预览"
width=
"80%"
height=
"90%"
v-model=
"previewModelVisible"
destroy-on-close
>
<!-- append-to-body -->
<
pre
v-highlight
>
<code
class=
"hljs"
>
<!-- 高亮代码块 -->
{{ previewResult }}
</code>
</pre
>
<
div
v-highlight
>
<code
class=
"hljs"
>
<!-- 高亮代码块 -->
{{ previewResult }}
</code>
</div
>
<!-- <pre>
<code class="hljs" v-html="highlightedCode(previewType, previewResult)"></code>
</pre> -->
...
...
@@ -331,7 +331,7 @@ const additionalModules = computed(() => {
// 插入用户自定义扩展模块
if
(
Object
.
prototype
.
toString
.
call
(
props
.
additionalModel
)
==
'[object Array]'
)
{
Modules
.
push
(...
props
.
additionalModel
)
Modules
.
push
(...
(
props
.
additionalModel
as
any
[])
)
}
else
{
props
.
additionalModel
&&
Modules
.
push
(
props
.
additionalModel
)
}
...
...
src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue
View file @
21e20021
...
...
@@ -8,9 +8,10 @@
<
script
setup
lang=
"ts"
name=
"MyProcessPalette"
>
import
{
assign
}
from
'min-dash'
const
addTask
=
(
event
,
options
=
{})
=>
{
const
ElementFactory
=
window
.
bpmnInstances
.
elementFactory
const
create
=
window
.
bpmnInstances
.
modeler
.
get
(
'create'
)
const
bpmnInstances
=
()
=>
(
window
as
any
).
bpmnInstances
const
addTask
=
(
event
,
options
:
any
=
{})
=>
{
const
ElementFactory
=
bpmnInstances
().
elementFactory
const
create
=
bpmnInstances
().
modeler
.
get
(
'create'
)
console
.
log
(
ElementFactory
,
create
)
...
...
src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
View file @
21e20021
...
...
@@ -109,6 +109,7 @@ const bpmnElement = ref()
const
timer
=
ref
()
provide
(
'prefix'
,
props
.
prefix
)
provide
(
'width'
,
props
.
width
)
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
initModels
=
()
=>
{
// console.log(props, 'props')
// console.log(props.bpmnModeler, 'sakdjjaskdsajdkasdjkadsjk')
...
...
@@ -121,7 +122,8 @@ const initModels = () => {
}
if
(
timer
.
value
)
{
clearTimeout
(
timer
.
value
)
window
.
bpmnInstances
=
{
const
w
=
window
as
any
w
.
bpmnInstances
=
{
modeler
:
props
.
bpmnModeler
,
modeling
:
props
.
bpmnModeler
.
get
(
'modeling'
),
moddle
:
props
.
bpmnModeler
.
get
(
'moddle'
),
...
...
@@ -134,7 +136,7 @@ const initModels = () => {
}
}
console
.
log
(
window
.
bpmnInstances
,
'window.bpmnInstances'
)
console
.
log
(
bpmnInstances
()
,
'window.bpmnInstances'
)
getActiveElement
()
// })
}
...
...
@@ -161,8 +163,8 @@ const initFormOnChanged = (element) => {
let
activatedElement
=
element
if
(
!
activatedElement
)
{
activatedElement
=
window
.
bpmnInstances
.
elementRegistry
.
find
((
el
)
=>
el
.
type
===
'bpmn:Process'
)
??
window
.
bpmnInstances
.
elementRegistry
.
find
((
el
)
=>
el
.
type
===
'bpmn:Collaboration'
)
bpmnInstances
()
.
elementRegistry
.
find
((
el
)
=>
el
.
type
===
'bpmn:Process'
)
??
bpmnInstances
()
.
elementRegistry
.
find
((
el
)
=>
el
.
type
===
'bpmn:Collaboration'
)
}
if
(
!
activatedElement
)
return
console
.
log
(
`
...
...
@@ -173,7 +175,7 @@ const initFormOnChanged = (element) => {
----------
`
)
console
.
log
(
'businessObject: '
,
activatedElement
.
businessObject
)
window
.
bpmnInstances
.
bpmnElement
=
activatedElement
bpmnInstances
()
.
bpmnElement
=
activatedElement
bpmnElement
.
value
=
activatedElement
elementId
.
value
=
activatedElement
.
id
elementType
.
value
=
activatedElement
.
type
.
split
(
':'
)[
1
]
||
''
...
...
@@ -191,7 +193,8 @@ onMounted(() => {
},
100
)
})
onBeforeUnmount
(()
=>
{
window
.
bpmnInstances
=
null
const
w
=
window
as
any
w
.
bpmnInstances
=
null
console
.
log
(
props
,
'props1'
)
console
.
log
(
props
.
bpmnModeler
,
'props.bpmnModeler1'
)
})
...
...
src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
View file @
21e20021
...
...
@@ -59,11 +59,12 @@ const rules = reactive({
name
:
[{
required
:
true
,
message
:
'流程名称不能为空'
,
trigger
:
'blur'
}]
})
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetBaseInfo
=
()
=>
{
console
.
log
(
window
,
'window'
)
console
.
log
(
bpmnElement
.
value
,
'bpmnElement'
)
bpmnElement
.
value
=
window
?.
bpmnInstances
?.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
?.
bpmnElement
console
.
log
(
bpmnElement
.
value
,
'resetBaseInfo11111111111'
)
elementBaseInfo
.
value
=
bpmnElement
.
value
.
businessObject
needProps
.
value
[
'type'
]
=
bpmnElement
.
value
.
businessObject
.
$type
...
...
@@ -125,13 +126,13 @@ const updateBaseInfo = (key) => {
console
.
log
(
window
,
'window'
)
console
.
log
(
bpmnElement
.
value
,
'bpmnElement'
)
console
.
log
(
toRaw
(
bpmnElement
.
value
),
'bpmnElement'
)
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
id
:
elementBaseInfo
.
value
[
key
],
di
:
{
id
:
`
${
elementBaseInfo
.
value
[
key
]}
_di`
}
})
}
else
{
console
.
log
(
attrObj
,
'attrObj'
)
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
attrObj
)
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
attrObj
)
}
}
onMounted
(()
=>
{
...
...
src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
View file @
21e20021
...
...
@@ -72,14 +72,15 @@ const bpmnElement = ref()
const
bpmnElementSource
=
ref
()
const
bpmnElementSourceRef
=
ref
()
const
flowConditionRef
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetFlowCondition
=
()
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
bpmnElementSource
.
value
=
bpmnElement
.
value
.
source
bpmnElementSourceRef
.
value
=
bpmnElement
.
value
.
businessObject
.
sourceRef
if
(
bpmnElementSourceRef
.
value
&&
bpmnElementSourceRef
.
value
.
default
&&
bpmnElementSourceRef
.
value
.
default
.
id
===
this
.
bpmnElement
.
id
bpmnElementSourceRef
.
value
.
default
.
id
===
bpmnElement
.
value
.
id
)
{
// 默认
flowConditionForm
.
value
=
{
type
:
'default'
}
...
...
@@ -113,18 +114,18 @@ const resetFlowCondition = () => {
const
updateFlowType
=
(
flowType
)
=>
{
// 正常条件类
if
(
flowType
===
'condition'
)
{
flowConditionRef
.
value
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
)
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
flowConditionRef
.
value
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
)
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
conditionExpression
:
flowConditionRef
.
value
})
return
}
// 默认路径
if
(
flowType
===
'default'
)
{
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
conditionExpression
:
null
})
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElementSource
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElementSource
.
value
),
{
default
:
bpmnElement
.
value
})
return
...
...
@@ -134,11 +135,11 @@ const updateFlowType = (flowType) => {
bpmnElementSourceRef
.
value
.
default
&&
bpmnElementSourceRef
.
value
.
default
.
id
===
bpmnElement
.
value
.
id
)
{
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElementSource
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElementSource
.
value
),
{
default
:
null
})
}
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
conditionExpression
:
null
})
}
...
...
@@ -146,22 +147,22 @@ const updateFlowCondition = () => {
let
{
conditionType
,
scriptType
,
body
,
resource
,
language
}
=
flowConditionForm
.
value
let
condition
if
(
conditionType
===
'expression'
)
{
condition
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
})
condition
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
})
}
else
{
if
(
scriptType
===
'inlineScript'
)
{
condition
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
,
language
})
condition
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
,
language
})
// this.$set(this.flowConditionForm, "resource", "");
flowConditionForm
.
value
[
'resource'
]
=
''
}
else
{
// this.$set(this.flowConditionForm, "body", "");
flowConditionForm
.
value
[
'body'
]
=
''
condition
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
condition
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
resource
,
language
})
}
}
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
conditionExpression
:
condition
})
}
...
...
src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue
View file @
21e20021
...
...
@@ -239,17 +239,18 @@ const elExtensionElements = ref()
const
formData
=
ref
()
const
otherExtensions
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetFormList
=
()
=>
{
bpmnELement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnELement
.
value
=
bpmnInstances
()
.
bpmnElement
formKey
.
value
=
bpmnELement
.
value
.
businessObject
.
formKey
// 获取元素扩展属性 或者 创建扩展属性
elExtensionElements
.
value
=
bpmnELement
.
value
.
businessObject
.
get
(
'extensionElements'
)
||
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
values
:
[]
})
bpmnInstances
()
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
values
:
[]
})
// 获取元素表单配置 或者 创建新的表单配置
formData
.
value
=
elExtensionElements
.
value
.
values
.
filter
((
ex
)
=>
ex
.
$type
===
`
${
prefix
}
:FormData`
)?.[
0
]
||
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:FormData`
,
{
fields
:
[]
})
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:FormData`
,
{
fields
:
[]
})
// 业务标识 businessKey, 绑定在 formData 中
businessKey
.
value
=
formData
.
value
.
businessKey
...
...
@@ -266,12 +267,12 @@ const resetFormList = () => {
updateElementExtensions
()
}
const
updateElementFormKey
=
()
=>
{
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnELement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnELement
.
value
),
{
formKey
:
formKey
.
value
})
}
const
updateElementBusinessKey
=
()
=>
{
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnELement
.
value
),
formData
.
value
,
{
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnELement
.
value
),
formData
.
value
,
{
businessKey
:
businessKey
.
value
})
}
...
...
@@ -353,37 +354,37 @@ const saveFieldOption = () => {
// 保存字段配置
const
saveField
=
()
=>
{
const
{
id
,
type
,
label
,
defaultValue
,
datePattern
}
=
formFieldForm
.
value
const
Field
=
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:FormField`
,
{
id
,
type
,
label
})
const
Field
=
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:FormField`
,
{
id
,
type
,
label
})
defaultValue
&&
(
Field
.
defaultValue
=
defaultValue
)
datePattern
&&
(
Field
.
datePattern
=
datePattern
)
// 构建属性
if
(
fieldPropertiesList
.
value
&&
fieldPropertiesList
.
value
.
length
)
{
const
fieldPropertyList
=
fieldPropertiesList
.
value
.
map
((
fp
)
=>
{
return
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Property`
,
{
return
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Property`
,
{
id
:
fp
.
id
,
value
:
fp
.
value
})
})
Field
.
properties
=
window
.
bpmnInstances
.
moddle
.
create
(
`
${
this
.
prefix
}
:Properties`
,
{
Field
.
properties
=
bpmnInstances
().
moddle
.
create
(
`
${
prefix
}
:Properties`
,
{
values
:
fieldPropertyList
})
}
// 构建校验规则
if
(
fieldConstraintsList
.
value
&&
fieldConstraintsList
.
value
.
length
)
{
const
fieldConstraintList
=
fieldConstraintsList
.
value
.
map
((
fc
)
=>
{
return
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Constraint`
,
{
return
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Constraint`
,
{
name
:
fc
.
name
,
config
:
fc
.
config
})
})
Field
.
validation
=
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Validation`
,
{
Field
.
validation
=
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Validation`
,
{
constraints
:
fieldConstraintList
})
}
// 构建枚举值
if
(
fieldEnumList
.
value
&&
fieldEnumList
.
value
.
length
)
{
Field
.
values
=
fieldEnumList
.
value
.
map
((
fe
)
=>
{
return
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Value`
,
{
name
:
fe
.
name
,
id
:
fe
.
id
})
return
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Value`
,
{
name
:
fe
.
name
,
id
:
fe
.
id
})
})
}
// 更新数组 与 表单配置实例
...
...
@@ -421,11 +422,11 @@ const removeField = (field, index) => {
const
updateElementExtensions
=
()
=>
{
// 更新回扩展元素
const
newElExtensionElements
=
window
.
bpmnInstances
.
moddle
.
create
(
`bpmn:ExtensionElements`
,
{
const
newElExtensionElements
=
bpmnInstances
()
.
moddle
.
create
(
`bpmn:ExtensionElements`
,
{
values
:
otherExtensions
.
value
.
concat
(
formData
.
value
)
})
// 更新到元素上
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnELement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnELement
.
value
),
{
extensionElements
:
newElExtensionElements
})
}
...
...
src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue
View file @
21e20021
...
...
@@ -266,9 +266,10 @@ const otherExtensionList = ref()
const
bpmnElementListeners
=
ref
()
const
listenerFormRef
=
ref
()
const
listenerFieldFormRef
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetListenersList
=
()
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
otherExtensionList
.
value
=
[]
bpmnElementListeners
.
value
=
bpmnElement
.
value
.
businessObject
?.
extensionElements
?.
values
?.
filter
(
...
...
src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue
View file @
21e20021
...
...
@@ -313,13 +313,14 @@ const bpmnElementListeners = ref()
const
otherExtensionList
=
ref
()
const
listenerFormRef
=
ref
()
const
listenerFieldFormRef
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetListenersList
=
()
=>
{
console
.
log
(
window
.
bpmnInstances
.
bpmnElement
,
bpmnInstances
()
.
bpmnElement
,
'window.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElement'
)
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
otherExtensionList
.
value
=
[]
bpmnElementListeners
.
value
=
bpmnElement
.
value
.
businessObject
?.
extensionElements
?.
values
.
filter
(
...
...
src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
View file @
21e20021
...
...
@@ -87,6 +87,7 @@ const defaultLoopInstanceForm = ref({
const
loopInstanceForm
=
ref
<
any
>
({})
const
bpmnElement
=
ref
(
null
)
const
multiLoopInstance
=
ref
(
null
)
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
getElementLoop
=
(
businessObject
)
=>
{
if
(
!
businessObject
.
loopCharacteristics
)
{
...
...
@@ -112,7 +113,7 @@ const getElementLoop = (businessObject) => {
loopCardinality
:
businessObject
.
loopCharacteristics
?.
loopCardinality
?.
body
??
''
}
// 保留当前元素 businessObject 上的 loopCharacteristics 实例
multiLoopInstance
.
value
=
window
.
bpmnInstances
.
bpmnElement
.
businessObject
.
loopCharacteristics
multiLoopInstance
.
value
=
bpmnInstances
()
.
bpmnElement
.
businessObject
.
loopCharacteristics
// 更新表单
if
(
businessObject
.
loopCharacteristics
.
extensionElements
&&
...
...
@@ -127,17 +128,17 @@ const changeLoopCharacteristicsType = (type) => {
// this.loopInstanceForm = { ...this.defaultLoopInstanceForm }; // 切换类型取消原表单配置
// 取消多实例配置
if
(
type
===
'Null'
)
{
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
loopCharacteristics
:
null
})
return
}
// 配置循环
if
(
type
===
'StandardLoop'
)
{
const
loopCharacteristicsObject
=
window
.
bpmnInstances
.
moddle
.
create
(
const
loopCharacteristicsObject
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:StandardLoopCharacteristics'
)
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
loopCharacteristics
:
loopCharacteristicsObject
})
multiLoopInstance
.
value
=
null
...
...
@@ -145,17 +146,17 @@ const changeLoopCharacteristicsType = (type) => {
}
// 时序
if
(
type
===
'SequentialMultiInstance'
)
{
multiLoopInstance
.
value
=
window
.
bpmnInstances
.
moddle
.
create
(
multiLoopInstance
.
value
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:MultiInstanceLoopCharacteristics'
,
{
isSequential
:
true
}
)
}
else
{
multiLoopInstance
.
value
=
window
.
bpmnInstances
.
moddle
.
create
(
multiLoopInstance
.
value
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:MultiInstanceLoopCharacteristics'
,
{
collection
:
'${coll_userList}'
}
)
}
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
loopCharacteristics
:
toRaw
(
multiLoopInstance
.
value
)
})
}
...
...
@@ -163,11 +164,11 @@ const changeLoopCharacteristicsType = (type) => {
const
updateLoopCardinality
=
(
cardinality
)
=>
{
let
loopCardinality
=
null
if
(
cardinality
&&
cardinality
.
length
)
{
loopCardinality
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
loopCardinality
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
:
cardinality
})
}
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnElement
.
value
),
multiLoopInstance
.
value
,
{
...
...
@@ -179,11 +180,11 @@ const updateLoopCardinality = (cardinality) => {
const
updateLoopCondition
=
(
condition
)
=>
{
let
completionCondition
=
null
if
(
condition
&&
condition
.
length
)
{
completionCondition
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
completionCondition
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
:
condition
})
}
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnElement
.
value
),
multiLoopInstance
.
value
,
{
...
...
@@ -193,14 +194,14 @@ const updateLoopCondition = (condition) => {
}
// 重试周期
const
updateLoopTimeCycle
=
(
timeCycle
)
=>
{
const
extensionElements
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
const
extensionElements
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
values
:
[
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:FailedJobRetryTimeCycle`
,
{
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:FailedJobRetryTimeCycle`
,
{
body
:
timeCycle
})
]
})
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnElement
.
value
),
multiLoopInstance
.
value
,
{
...
...
@@ -210,7 +211,7 @@ const updateLoopTimeCycle = (timeCycle) => {
}
// 直接更新的基础信息
const
updateLoopBase
=
()
=>
{
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnElement
.
value
),
multiLoopInstance
.
value
,
{
...
...
@@ -230,7 +231,7 @@ const updateLoopAsync = (key) => {
}
else
{
asyncAttr
[
key
]
=
loopInstanceForm
.
value
[
key
]
}
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnElement
.
value
),
multiLoopInstance
.
value
,
asyncAttr
...
...
@@ -245,7 +246,7 @@ onBeforeUnmount(() => {
watch
(
()
=>
props
.
businessObject
,
(
val
)
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
getElementLoop
(
val
)
},
{
immediate
:
true
}
...
...
src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue
View file @
21e20021
...
...
@@ -22,13 +22,14 @@ const props = defineProps({
})
const
documentation
=
ref
(
''
)
const
bpmnElement
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
).
bpmnInstances
const
updateDocumentation
=
()
=>
{
;(
bpmnElement
.
value
&&
bpmnElement
.
value
.
id
===
props
.
id
)
||
(
bpmnElement
.
value
=
(
window
as
any
).
bpmnInstances
.
elementRegistry
.
get
(
props
.
id
))
const
documentations
=
window
.
bpmnInstances
.
bpmnFactory
.
create
(
'bpmn:Documentation'
,
{
(
bpmnElement
.
value
=
bpmnInstances
()
.
elementRegistry
.
get
(
props
.
id
))
const
documentations
=
bpmnInstances
()
.
bpmnFactory
.
create
(
'bpmn:Documentation'
,
{
text
:
documentation
.
value
})
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
documentation
:
[
documentations
]
})
}
...
...
@@ -41,7 +42,7 @@ watch(
(
id
)
=>
{
if
(
id
&&
id
.
length
)
{
nextTick
(()
=>
{
const
documentations
=
window
.
bpmnInstances
.
bpmnElement
.
businessObject
?.
documentation
const
documentations
=
bpmnInstances
()
.
bpmnElement
.
businessObject
?.
documentation
documentation
.
value
=
documentations
&&
documentations
.
length
?
documentations
[
0
].
text
:
''
})
}
else
{
...
...
src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue
View file @
21e20021
...
...
@@ -70,10 +70,11 @@ const otherExtensionList = ref()
const
bpmnElementProperties
=
ref
()
const
bpmnElementPropertyList
=
ref
()
const
attributeFormRef
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetAttributesList
=
()
=>
{
console
.
log
(
window
,
'windowwindowwindowwindowwindowwindowwindow'
)
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
otherExtensionList
.
value
=
[]
// 其他扩展配置
bpmnElementProperties
.
value
=
// bpmnElement.value.businessObject?.extensionElements?.filter((ex) => {
...
...
@@ -110,7 +111,7 @@ const removeAttributes = (attr, index) => {
elementPropertyList
.
value
.
splice
(
index
,
1
)
bpmnElementPropertyList
.
value
.
splice
(
index
,
1
)
// 新建一个属性字段的保存列表
const
propertiesObject
=
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Properties`
,
{
const
propertiesObject
=
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Properties`
,
{
values
:
bpmnElementPropertyList
.
value
})
updateElementExtensions
(
propertiesObject
)
...
...
@@ -122,7 +123,7 @@ const saveAttribute = () => {
console
.
log
(
propertyForm
.
value
,
'propertyForm.value'
)
const
{
name
,
value
}
=
propertyForm
.
value
if
(
editingPropertyIndex
.
value
!==
-
1
)
{
window
.
bpmnInstances
.
modeling
.
updateModdleProperties
(
bpmnInstances
()
.
modeling
.
updateModdleProperties
(
toRaw
(
bpmnElement
.
value
),
toRaw
(
bpmnElementPropertyList
.
value
)[
toRaw
(
editingPropertyIndex
.
value
)],
{
...
...
@@ -132,12 +133,12 @@ const saveAttribute = () => {
)
}
else
{
// 新建属性字段
const
newPropertyObject
=
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Property`
,
{
const
newPropertyObject
=
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Property`
,
{
name
,
value
})
// 新建一个属性字段的保存列表
const
propertiesObject
=
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Properties`
,
{
const
propertiesObject
=
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Properties`
,
{
values
:
bpmnElementPropertyList
.
value
.
concat
([
newPropertyObject
])
})
updateElementExtensions
(
propertiesObject
)
...
...
@@ -146,10 +147,10 @@ const saveAttribute = () => {
resetAttributesList
()
}
const
updateElementExtensions
=
(
properties
)
=>
{
const
extensions
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
const
extensions
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
values
:
otherExtensionList
.
value
.
concat
([
properties
])
})
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
extensionElements
:
extensions
})
}
...
...
src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue
View file @
21e20021
...
...
@@ -62,10 +62,11 @@ const modelConfig = computed(() => {
return
{
title
:
'创建信号'
,
idLabel
:
'信号ID'
,
nameLabel
:
'信号名称'
}
}
})
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
initDataList
=
()
=>
{
console
.
log
(
window
,
'window'
)
rootElements
.
value
=
window
.
bpmnInstances
.
modeler
.
getDefinitions
().
rootElements
rootElements
.
value
=
bpmnInstances
()
.
modeler
.
getDefinitions
().
rootElements
messageIdMap
.
value
=
{}
signalIdMap
.
value
=
{}
messageList
.
value
=
[]
...
...
@@ -91,13 +92,13 @@ const addNewObject = () => {
if
(
messageIdMap
.
value
[
modelObjectForm
.
value
.
id
])
{
message
.
error
(
'该消息已存在,请修改id后重新保存'
)
}
const
messageRef
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:Message'
,
modelObjectForm
.
value
)
const
messageRef
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:Message'
,
modelObjectForm
.
value
)
rootElements
.
value
.
push
(
messageRef
)
}
else
{
if
(
signalIdMap
.
value
[
modelObjectForm
.
value
.
id
])
{
message
.
error
(
'该信号已存在,请修改id后重新保存'
)
}
const
signalRef
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:Signal'
,
modelObjectForm
.
value
)
const
signalRef
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:Signal'
,
modelObjectForm
.
value
)
rootElements
.
value
.
push
(
signalRef
)
}
modelVisible
.
value
=
false
...
...
src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
View file @
21e20021
...
...
@@ -45,11 +45,12 @@ const installedComponent = ref({
})
const
bpmnElement
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
).
bpmnInstances
const
changeTaskAsync
=
()
=>
{
if
(
!
taskConfigForm
.
value
.
asyncBefore
&&
!
taskConfigForm
.
value
.
asyncAfter
)
{
taskConfigForm
.
value
.
exclusive
=
false
}
window
.
bpmnInstances
.
modeling
.
updateProperties
(
window
.
bpmnInstances
.
bpmnElement
,
{
bpmnInstances
().
modeling
.
updateProperties
(
bpmnInstances
()
.
bpmnElement
,
{
...
taskConfigForm
.
value
})
}
...
...
@@ -57,7 +58,7 @@ const changeTaskAsync = () => {
watch
(
()
=>
props
.
id
,
()
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
taskConfigForm
.
value
.
asyncBefore
=
bpmnElement
.
value
?.
businessObject
?.
asyncBefore
taskConfigForm
.
value
.
asyncAfter
=
bpmnElement
.
value
?.
businessObject
?.
asyncAfter
taskConfigForm
.
value
.
exclusive
=
bpmnElement
.
value
?.
businessObject
?.
exclusive
...
...
src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
View file @
21e20021
...
...
@@ -64,8 +64,9 @@ const bpmnElement = ref<any>()
const
bpmnMessageRefsMap
=
ref
<
any
>
()
const
bpmnRootElements
=
ref
<
any
>
()
const
bpmnInstances
=
()
=>
(
window
as
any
).
bpmnInstances
const
getBindMessage
=
()
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
bindMessageId
.
value
=
bpmnElement
.
value
.
businessObject
?.
messageRef
?.
id
||
'-1'
}
const
openMessageModel
=
()
=>
{
...
...
@@ -77,7 +78,7 @@ const createNewMessage = () => {
message
.
error
(
'该消息已存在,请修改id后重新保存'
)
return
}
const
newMessage
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:Message'
,
newMessageForm
.
value
)
const
newMessage
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:Message'
,
newMessageForm
.
value
)
bpmnRootElements
.
value
.
push
(
newMessage
)
messageMap
.
value
[
newMessageForm
.
value
.
id
]
=
newMessageForm
.
value
.
name
bpmnMessageRefsMap
.
value
[
newMessageForm
.
value
.
id
]
=
newMessage
...
...
@@ -85,11 +86,11 @@ const createNewMessage = () => {
}
const
updateTaskMessage
=
(
messageId
)
=>
{
if
(
messageId
===
'-1'
)
{
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
messageRef
:
null
})
}
else
{
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
{
messageRef
:
bpmnMessageRefsMap
.
value
[
messageId
]
})
}
...
...
@@ -97,7 +98,7 @@ const updateTaskMessage = (messageId) => {
onMounted
(()
=>
{
bpmnMessageRefsMap
.
value
=
Object
.
create
(
null
)
bpmnRootElements
.
value
=
window
.
bpmnInstances
.
modeler
.
getDefinitions
().
rootElements
bpmnRootElements
.
value
=
bpmnInstances
()
.
modeler
.
getDefinitions
().
rootElements
bpmnRootElements
.
value
.
filter
((
el
)
=>
el
.
$type
===
'bpmn:Message'
)
.
forEach
((
m
)
=>
{
...
...
@@ -113,7 +114,7 @@ onBeforeUnmount(() => {
watch
(
()
=>
props
.
id
,
()
=>
{
// bpmnElement.value =
window.bpmnInstances
.bpmnElement
// bpmnElement.value =
bpmnInstances()
.bpmnElement
nextTick
(()
=>
{
getBindMessage
()
})
...
...
src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
View file @
21e20021
...
...
@@ -58,6 +58,8 @@ const defaultTaskForm = ref({
const
scriptTaskForm
=
ref
<
any
>
({})
const
bpmnElement
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetTaskForm
=
()
=>
{
for
(
let
key
in
defaultTaskForm
.
value
)
{
let
value
=
bpmnElement
.
value
?.
businessObject
[
key
]
||
defaultTaskForm
.
value
[
key
]
...
...
@@ -76,7 +78,7 @@ const updateElementTask = () => {
taskAttr
.
resource
=
scriptTaskForm
.
value
.
resource
||
null
taskAttr
.
script
=
null
}
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
taskAttr
)
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
taskAttr
)
}
onBeforeUnmount
(()
=>
{
...
...
@@ -86,7 +88,7 @@ onBeforeUnmount(() => {
watch
(
()
=>
props
.
id
,
()
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
nextTick
(()
=>
{
resetTaskForm
()
})
...
...
src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue
View file @
21e20021
...
...
@@ -53,6 +53,8 @@ const defaultTaskForm = ref({
const
userTaskForm
=
ref
<
any
>
({})
// const mockData=ref([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
const
bpmnElement
=
ref
()
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
const
resetTaskForm
=
()
=>
{
for
(
let
key
in
defaultTaskForm
.
value
)
{
let
value
...
...
@@ -76,13 +78,13 @@ const updateElementTask = (key) => {
}
else
{
taskAttr
[
key
]
=
userTaskForm
.
value
[
key
]
||
null
}
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
taskAttr
)
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
bpmnElement
.
value
),
taskAttr
)
}
watch
(
()
=>
props
.
id
,
()
=>
{
bpmnElement
.
value
=
window
.
bpmnInstances
.
bpmnElement
bpmnElement
.
value
=
bpmnInstances
()
.
bpmnElement
nextTick
(()
=>
{
resetTaskForm
()
})
...
...
src/components/bpmnProcessDesigner/package/utils.ts
View file @
21e20021
import
{
toRaw
}
from
'vue'
const
bpmnInstances
=
()
=>
(
window
as
any
)?.
bpmnInstances
// 创建监听器实例
export
function
createListenerObject
(
options
,
isTask
,
prefix
)
{
const
listenerObj
=
Object
.
create
(
null
)
...
...
@@ -25,16 +26,16 @@ export function createListenerObject(options, isTask, prefix) {
}
// 任务监听器的 定时器 设置
if
(
isTask
&&
options
.
event
===
'timeout'
&&
!!
options
.
eventDefinitionType
)
{
const
timeDefinition
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
const
timeDefinition
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:FormalExpression'
,
{
body
:
options
.
eventTimeDefinitions
})
const
TimerEventDefinition
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:TimerEventDefinition'
,
{
const
TimerEventDefinition
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:TimerEventDefinition'
,
{
id
:
`TimerEventDefinition_
${
uuid
(
8
)}
`
,
[
`time
${
options
.
eventDefinitionType
.
replace
(
/^
\S
/
,
(
s
)
=>
s
.
toUpperCase
())}
`
]:
timeDefinition
})
listenerObj
.
eventDefinitions
=
[
TimerEventDefinition
]
}
return
window
.
bpmnInstances
.
moddle
.
create
(
return
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:
${
isTask
?
'TaskListener'
:
'ExecutionListener'
}
`
,
listenerObj
)
...
...
@@ -44,7 +45,7 @@ export function createListenerObject(options, isTask, prefix) {
export
function
createFieldObject
(
option
,
prefix
)
{
const
{
name
,
fieldType
,
string
,
expression
}
=
option
const
fieldConfig
=
fieldType
===
'string'
?
{
name
,
string
}
:
{
name
,
expression
}
return
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Field`
,
fieldConfig
)
return
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Field`
,
fieldConfig
)
}
// 创建脚本实例
...
...
@@ -52,21 +53,21 @@ export function createScriptObject(options, prefix) {
const
{
scriptType
,
scriptFormat
,
value
,
resource
}
=
options
const
scriptConfig
=
scriptType
===
'inlineScript'
?
{
scriptFormat
,
value
}
:
{
scriptFormat
,
resource
}
return
window
.
bpmnInstances
.
moddle
.
create
(
`
${
prefix
}
:Script`
,
scriptConfig
)
return
bpmnInstances
()
.
moddle
.
create
(
`
${
prefix
}
:Script`
,
scriptConfig
)
}
// 更新元素扩展属性
export
function
updateElementExtensions
(
element
,
extensionList
)
{
const
extensions
=
window
.
bpmnInstances
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
const
extensions
=
bpmnInstances
()
.
moddle
.
create
(
'bpmn:ExtensionElements'
,
{
values
:
extensionList
})
window
.
bpmnInstances
.
modeling
.
updateProperties
(
toRaw
(
element
),
{
bpmnInstances
()
.
modeling
.
updateProperties
(
toRaw
(
element
),
{
extensionElements
:
extensions
})
}
// 创建一个id
export
function
uuid
(
length
=
8
,
chars
)
{
export
function
uuid
(
length
=
8
,
chars
?
)
{
let
result
=
''
const
charsString
=
chars
||
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
for
(
let
i
=
length
;
i
>
0
;
--
i
)
{
...
...
src/hooks/web/useI18n.ts
View file @
21e20021
...
...
@@ -41,6 +41,7 @@ export const useI18n = (
const
tFn
:
I18nGlobalTranslation
=
(
key
:
string
,
...
arg
:
any
[])
=>
{
if
(
!
key
)
return
''
if
(
!
key
.
includes
(
'.'
)
&&
!
namespace
)
return
key
//@ts-ignore
return
t
(
getKey
(
namespace
,
key
),
...(
arg
as
I18nTranslationRestParameters
))
}
return
{
...
...
src/hooks/web/useTimeAgo.ts
View file @
21e20021
...
...
@@ -5,6 +5,7 @@ const TIME_AGO_MESSAGE_MAP: {
'zh-CN'
:
UseTimeAgoMessages
en
:
UseTimeAgoMessages
}
=
{
// @ts-ignore
'zh-CN'
:
{
justNow
:
'刚刚'
,
past
:
(
n
)
=>
(
n
.
match
(
/
\d
/
)
?
`
${
n
}
前`
:
n
),
...
...
@@ -17,6 +18,7 @@ const TIME_AGO_MESSAGE_MAP: {
minute
:
(
n
)
=>
`
${
n
}
分钟`
,
second
:
(
n
)
=>
`
${
n
}
秒`
},
// @ts-ignore
en
:
{
justNow
:
'just now'
,
past
:
(
n
)
=>
(
n
.
match
(
/
\d
/
)
?
`
${
n
}
ago`
:
n
),
...
...
src/types/auto-components.d.ts
View file @
21e20021
...
...
@@ -21,6 +21,7 @@ declare module '@vue/runtime-core' {
DictTag
:
typeof
import
(
'./../components/DictTag/src/DictTag.vue'
)[
'default'
]
Echart
:
typeof
import
(
'./../components/Echart/src/Echart.vue'
)[
'default'
]
Editor
:
typeof
import
(
'./../components/Editor/src/Editor.vue'
)[
'default'
]
ElAvatar
:
typeof
import
(
'element-plus/es'
)[
'ElAvatar'
]
ElBadge
:
typeof
import
(
'element-plus/es'
)[
'ElBadge'
]
ElButton
:
typeof
import
(
'element-plus/es'
)[
'ElButton'
]
ElButtonGroup
:
typeof
import
(
'element-plus/es'
)[
'ElButtonGroup'
]
...
...
@@ -49,6 +50,7 @@ declare module '@vue/runtime-core' {
ElForm
:
typeof
import
(
'element-plus/es'
)[
'ElForm'
]
ElFormItem
:
typeof
import
(
'element-plus/es'
)[
'ElFormItem'
]
ElIcon
:
typeof
import
(
'element-plus/es'
)[
'ElIcon'
]
ElImage
:
typeof
import
(
'element-plus/es'
)[
'ElImage'
]
ElImageViewer
:
typeof
import
(
'element-plus/es'
)[
'ElImageViewer'
]
ElInput
:
typeof
import
(
'element-plus/es'
)[
'ElInput'
]
ElInputNumber
:
typeof
import
(
'element-plus/es'
)[
'ElInputNumber'
]
...
...
@@ -63,13 +65,15 @@ declare module '@vue/runtime-core' {
ElScrollbar
:
typeof
import
(
'element-plus/es'
)[
'ElScrollbar'
]
ElSelect
:
typeof
import
(
'element-plus/es'
)[
'ElSelect'
]
ElSkeleton
:
typeof
import
(
'element-plus/es'
)[
'ElSkeleton'
]
ElSpace
:
typeof
import
(
'element-plus/es'
)[
'ElSpace'
]
ElSwitch
:
typeof
import
(
'element-plus/es'
)[
'ElSwitch'
]
ElTable
:
typeof
import
(
'element-plus/es'
)[
'ElTable'
]
ElTableColumn
:
typeof
import
(
'element-plus/es'
)[
'ElTableColumn'
]
ElTableV2
:
typeof
import
(
'element-plus/es'
)[
'ElTableV2'
]
ElTabPane
:
typeof
import
(
'element-plus/es'
)[
'ElTabPane'
]
ElTabs
:
typeof
import
(
'element-plus/es'
)[
'ElTabs'
]
ElTag
:
typeof
import
(
'element-plus/es'
)[
'ElTag'
]
ElTimeline
:
typeof
import
(
'element-plus/es'
)[
'ElTimeline'
]
ElTimelineItem
:
typeof
import
(
'element-plus/es'
)[
'ElTimelineItem'
]
ElTooltip
:
typeof
import
(
'element-plus/es'
)[
'ElTooltip'
]
ElTransfer
:
typeof
import
(
'element-plus/es'
)[
'ElTransfer'
]
ElTree
:
typeof
import
(
'element-plus/es'
)[
'ElTree'
]
...
...
src/types/auto-imports.d.ts
View file @
21e20021
// Generated by 'unplugin-auto-import'
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-auto-import
export
{}
declare
global
{
const
DICT_TYPE
:
typeof
import
(
'@/utils/dict'
)[
'DICT_TYPE'
]
...
...
src/views/bpm/definition/definition.data.ts
View file @
21e20021
...
...
@@ -17,23 +17,29 @@ const crudSchemas = reactive<VxeCrudSchema>({
title
:
'定义名称'
,
field
:
'name'
,
table
:
{
width
:
120
,
//
width: 120,
slots
:
{
default
:
'name_default'
}
}
},
{
title
:
'
流程
分类'
,
title
:
'
定义
分类'
,
field
:
'category'
,
dictType
:
DICT_TYPE
.
BPM_MODEL_CATEGORY
,
dictClass
:
'number'
// dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
// dictClass: 'number',
table
:
{
// width: 120,
slots
:
{
default
:
'category_default'
}
}
},
{
title
:
'表单信息'
,
field
:
'formId'
,
table
:
{
width
:
12
0
,
// width: 20
0,
slots
:
{
default
:
'formId_default'
}
...
...
@@ -43,7 +49,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
title
:
'流程版本'
,
field
:
'version'
,
table
:
{
width
:
80
,
//
width: 80,
slots
:
{
default
:
'version_default'
}
...
...
@@ -53,7 +59,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
title
:
'激活状态'
,
field
:
'suspensionState'
,
table
:
{
width
:
80
,
//
width: 80,
slots
:
{
default
:
'suspensionState_default'
}
...
...
@@ -63,10 +69,10 @@ const crudSchemas = reactive<VxeCrudSchema>({
title
:
'部署时间'
,
field
:
'deploymentTime'
,
isForm
:
false
,
formatter
:
'formatDate'
,
table
:
{
width
:
180
}
formatter
:
'formatDate'
//
table: {
//
width: 180
//
}
}
]
})
...
...
src/views/bpm/definition/index.vue
View file @
21e20021
...
...
@@ -6,6 +6,10 @@
<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
...
...
@@ -43,6 +47,16 @@
v-if=
"formDetailVisible"
/>
</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"
/>
</XModal>
</ContentWrap>
</template>
<
script
setup
lang=
"ts"
>
...
...
@@ -51,8 +65,14 @@ 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
message
=
useMessage
()
// 消息弹窗
const
bpmnXML
=
ref
(
null
)
const
showBpmnOpen
=
ref
(
false
)
const
bpmnControlForm
=
ref
({
prefix
:
'flowable'
})
// const message = useMessage() // 消息弹窗
const
router
=
useRouter
()
// 路由
const
{
query
}
=
useRoute
()
// 查询参数
...
...
@@ -89,7 +109,13 @@ const handleFormDetail = async (row) => {
const
handleBpmnDetail
=
(
row
)
=>
{
// TODO 芋艿:流程组件开发中
console
.
log
(
row
)
message
.
success
(
'流程组件开发中,预计 2 月底完成'
)
DefinitionApi
.
getProcessDefinitionBpmnXMLApi
(
row
).
then
((
response
)
=>
{
console
.
log
(
response
,
'response'
)
bpmnXML
.
value
=
response
// 弹窗打开
showBpmnOpen
.
value
=
true
})
// message.success('流程组件开发中,预计 2 月底完成')
}
// 点击任务分配按钮
...
...
@@ -97,7 +123,7 @@ const handleAssignRule = (row) => {
router
.
push
({
name
:
'BpmTaskAssignRuleList'
,
query
:
{
model
Id
:
row
.
id
processDefinition
Id
:
row
.
id
}
})
}
...
...
src/views/bpm/group/index.vue
View file @
21e20021
...
...
@@ -43,7 +43,7 @@
</XTable>
</ContentWrap>
<XModal
v-model=
"dialogVisible"
:title=
"dialogTitle"
>
<XModal
v-model=
"dialogVisible"
:title=
"dialogTitle"
:mask-closable=
"false"
>
<!-- 对话框(添加 / 修改) -->
<Form
v-if=
"['create', 'update'].includes(actionType)"
...
...
src/views/bpm/model/index.vue
View file @
21e20021
...
...
@@ -24,6 +24,10 @@
<
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
...
...
@@ -429,6 +433,11 @@ const handleUpdate = async (rowId: number) => {
await
setDialogTile
(
'edit'
)
// 设置数据
saveForm
.
value
=
await
ModelApi
.
getModelApi
(
rowId
)
if
(
saveForm
.
value
.
category
==
null
)
{
saveForm
.
value
.
category
=
1
}
else
{
saveForm
.
value
.
category
=
Number
(
saveForm
.
value
.
category
)
}
}
// 提交按钮
...
...
src/views/bpm/model/model.data.ts
View file @
21e20021
...
...
@@ -44,7 +44,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
field
:
'category'
,
dictType
:
DICT_TYPE
.
BPM_MODEL_CATEGORY
,
dictClass
:
'number'
,
isSearch
:
true
isSearch
:
true
,
table
:
{
slots
:
{
default
:
'category_default'
}
}
},
{
title
:
'表单信息'
,
...
...
src/views/bpm/model/modelEditor.vue
View file @
21e20021
...
...
@@ -108,7 +108,7 @@ const initModeler = (item) => {
const save = (bpmnXml) => {
const data: ModelVO = {
...
model.value
,
...
(model.value ?? ({} as ModelVO))
,
bpmnXml: bpmnXml // bpmnXml 只是初始化流程图,后续修改无法通过它获得
}
console.log(data, '
data
')
...
...
src/views/bpm/processInstance/detail.vue
View file @
21e20021
...
...
@@ -406,7 +406,7 @@ const getDetail = () => {
nextTick
().
then
(()
=>
{
fApi
.
value
?.
btn
.
show
(
false
)
fApi
.
value
?.
resetBtn
.
show
(
false
)
fApi
.
value
?.
disabled
(
true
)
fApi
.
value
?.
btn
.
disabled
(
true
)
})
}
...
...
src/views/bpm/processInstance/index.vue
View file @
21e20021
...
...
@@ -7,7 +7,7 @@
<XButton
type=
"primary"
preIcon=
"ep:zoom-in"
title=
"
新建
流程"
title=
"
发起
流程"
v-hasPermi=
"['bpm:process-instance:query']"
@
click=
"handleCreate"
/>
...
...
src/views/bpm/taskAssignRule/index.vue
View file @
21e20021
...
...
@@ -45,9 +45,9 @@
<el-select
v-model=
"formData.roleIds"
multiple
clearable
style=
"width: 100%"
>
<el-option
v-for=
"item in roleOptions"
:key=
"
parseInt(item.id)
"
:key=
"
item.id
"
:label=
"item.name"
:value=
"
parseInt(item.id)
"
:value=
"
item.id
"
/>
</el-select>
</el-form-item>
...
...
src/views/system/dict/index.vue
View file @
21e20021
...
...
@@ -198,6 +198,11 @@ const setDialogTile = (type: string) => {
dialogVisible
.
value
=
true
}
// 同步dictTypeValue到form 否则导致表单验证不通过
watch
(
dictTypeValue
,
(
val
)
=>
{
unref
(
typeFormRef
)?.
setValues
({
type
:
val
})
})
// 提交按钮
const
submitTypeForm
=
async
()
=>
{
const
elForm
=
unref
(
typeFormRef
)?.
getElFormRef
()
...
...
src/views/system/notify/my/index.vue
View file @
21e20021
...
...
@@ -35,7 +35,7 @@ const [registerTable, { reload, getCheckboxRecords }] = useXTable({
})
const
handleUpdateList
=
async
()
=>
{
const
list
=
getCheckboxRecords
()
const
list
=
getCheckboxRecords
()
as
any
as
any
[]
if
(
list
.
length
===
0
)
{
return
}
...
...
src/views/system/user/user.data.ts
View file @
21e20021
...
...
@@ -5,7 +5,14 @@ const { t } = useI18n()
export
const
rules
=
reactive
({
username
:
[
required
],
nickname
:
[
required
],
email
:
[
required
],
email
:
[
{
required
:
true
,
message
:
t
(
'profile.rules.mail'
),
trigger
:
'blur'
},
{
type
:
'email'
,
message
:
t
(
'profile.rules.truemail'
),
trigger
:
[
'blur'
,
'change'
]
}
],
status
:
[
required
],
mobile
:
[
{
...
...
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