Files
gin-vue-admin/web/src/view/workflow/workflowCreate/workflowCreate.vue

336 lines
9.4 KiB
Vue
Raw Normal View History

<template>
<div>
2020-10-26 20:57:48 +08:00
<el-button
size="small"
style="float: right; margin-top: 6px; margin-right: 6px"
2020-10-26 20:57:48 +08:00
@click="saveXML"
>导出XML</el-button
>
2020-10-26 20:57:48 +08:00
<el-button
size="small"
style="float: right; margin-top: 6px; margin-right: 6px"
2020-10-26 20:57:48 +08:00
@click="saveImg"
>导出图片</el-button
>
2020-10-26 20:57:48 +08:00
<el-popover placement="bottom" width="160" v-model="visible">
<p>确认流程无误并保存吗</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="visible = false"
>取消</el-button
>
<el-button
type="primary"
size="mini"
@click="save"
:disabled="$route.query.type == 'view'"
>确定</el-button
>
2020-10-26 20:57:48 +08:00
</div>
<el-button
size="small"
slot="reference"
style="float: right; margin-top: 6px; margin-right: 6px"
>保存流程</el-button
>
2020-10-26 20:57:48 +08:00
</el-popover>
<gva-wfd
ref="wfd"
:data="demoData"
v-if="done"
2020-10-26 20:57:48 +08:00
:height="600"
:users="users"
:authorities="authorities"
:groups="groups"
:categorys="categorys"
:lang="lang"
:propProcessModel="processModel"
2020-10-26 20:57:48 +08:00
/>
</div>
</template>
<script>
import {
findWorkflowProcess,
2020-10-31 00:03:49 +08:00
createWorkflowProcess,
updateWorkflowProcess
} from "@/api/workflowProcess"; // 此处请自行替换地址
2020-10-26 20:57:48 +08:00
import gvaWfd from "@/components/gva-wfd";
import { getUserList } from "@/api/user";
import { getAuthorityList } from "@/api/authority";
export default {
2020-10-26 20:57:48 +08:00
name: "Workflow",
components: {
gvaWfd
2020-10-09 16:11:46 +08:00
},
2020-10-26 20:57:48 +08:00
data() {
return {
2020-10-26 20:57:48 +08:00
visible: false,
2020-10-09 16:11:46 +08:00
lang: "zh",
done:false,
demoData: {
2020-10-31 00:03:49 +08:00
nodes: [
{
clazz: "start",
label: "发起请假",
type: "start-node",
shape: "start-node",
x: 110,
y: 195,
id: "start1603681292875",
style: {}
},
{
clazz: "parallelGateway",
label: "会签",
type: "parallel-gateway-node",
shape: "parallel-gateway-node",
x: 228,
y: 195,
id: "parallelGateway1603681296419",
style: {}
},
{
clazz: "userTask",
label: "审批人1",
type: "user-task-node",
shape: "user-task-node",
x: 372,
y: 84,
id: "userTask1603681299962",
style: {},
assignValue: 1,
assignType: "user"
},
{
clazz: "userTask",
label: "审批人2",
type: "user-task-node",
shape: "user-task-node",
x: 370,
y: 321,
id: "userTask1603681302372",
style: {},
assignValue: 2,
assignType: "user"
},
{
clazz: "parallelGateway",
label: "会签结果检测",
type: "parallel-gateway-node",
shape: "parallel-gateway-node",
x: 519,
y: 195,
id: "parallelGateway1603681338222",
style: {}
},
{
clazz: "end",
label: "请假失败",
type: "end-node",
shape: "end-node",
x: 704,
y: 317,
id: "end1603681358043",
style: {}
},
{
clazz: "end",
label: "请假成功",
type: "end-node",
shape: "end-node",
x: 706.5,
y: 55.5,
id: "end1603681360882",
style: {}
}
],
edges: [
{
id: "flow1603681320738",
clazz: "flow",
source: "parallelGateway1603681296419",
target: "userTask1603681299962",
sourceAnchor: 0,
targetAnchor: 3,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 228, y: 169, index: 0 },
endPoint: { x: 321.5, y: 84, index: 3 }
},
{
id: "flow1603681321969",
clazz: "flow",
source: "parallelGateway1603681296419",
target: "userTask1603681302372",
sourceAnchor: 2,
targetAnchor: 3,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 228, y: 221, index: 2 },
endPoint: { x: 319.5, y: 321, index: 3 }
},
{
id: "flow1603681323274",
clazz: "flow",
source: "start1603681292875",
target: "parallelGateway1603681296419",
sourceAnchor: 1,
targetAnchor: 3,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 138, y: 195, index: 1 },
endPoint: { x: 202, y: 195, index: 3 },
label: "发起",
conditionExpression: "complete"
},
{
id: "flow1603681341777",
clazz: "flow",
source: "userTask1603681299962",
target: "parallelGateway1603681338222",
sourceAnchor: 1,
targetAnchor: 3,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 422.5, y: 84, index: 1 },
endPoint: { x: 493, y: 195, index: 3 }
},
{
id: "flow1603681343425",
clazz: "flow",
source: "userTask1603681302372",
target: "parallelGateway1603681338222",
sourceAnchor: 1,
targetAnchor: 3,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 420.5, y: 321, index: 1 },
endPoint: { x: 493, y: 195, index: 3 }
},
{
id: "flow1603681362913",
clazz: "flow",
source: "parallelGateway1603681338222",
target: "end1603681360882",
sourceAnchor: 0,
targetAnchor: 2,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 519, y: 169, index: 0 },
endPoint: { x: 678.5, y: 55.5, index: 2 },
conditionExpression: "complete",
label: "所有人同意"
},
{
id: "flow1603681392729",
clazz: "flow",
source: "parallelGateway1603681338222",
target: "end1603681358043",
sourceAnchor: 2,
targetAnchor: 2,
shape: "flow-polyline-round",
style: {},
startPoint: { x: 519, y: 221, index: 2 },
endPoint: { x: 676, y: 317, index: 2 },
conditionExpression: "reject",
label: "任何一人拒绝"
}
],
},
wkType:"create",
users: [],
authorities: [],
processModel:{
id: '',
name: '',
category: '',
clazz: 'process',
dataObjs: [],
signalDefs: [],
messageDefs: [],
},
2020-10-26 20:57:48 +08:00
groups: [
{ id: "1", name: "组1" },
{ id: "2", name: "组2" },
{ id: "3", name: "组3" }
],
categorys: [
{ id: "1", name: "分类1" },
{ id: "2", name: "分类2" },
{ id: "3", name: "分类3" },
{ id: "4", 分组: "分组4" }
]
};
},
2020-10-26 20:57:48 +08:00
methods: {
async save() {
2020-10-26 20:57:48 +08:00
this.visible = false;
const obj = this.$refs["wfd"].graph.save()
const processModel = this.$refs["wfd"].processModel
processModel.edges = obj.edges
processModel.nodes = obj.nodes
if(!processModel.id){
this.$message({
type:"error",
message:"流程id必填点击空白处填写流程基本信息"
})
return
}
2020-10-31 00:03:49 +08:00
if(this.$route.query.type == 'edit'){
const res = await updateWorkflowProcess(processModel)
if(res.code == 0){
this.$message({
type:"success",
message:"编辑成功"
})
}
}else{
const res = await createWorkflowProcess(processModel)
2020-10-31 00:03:49 +08:00
if(res.code == 0){
this.$message({
type:"success",
message:"创建成功"
})
}
2020-10-31 00:03:49 +08:00
}
2020-10-09 17:42:11 +08:00
},
2020-10-26 20:57:48 +08:00
saveXML() {
console.log(this.$refs["wfd"].graph.saveXML());
2020-10-09 17:42:11 +08:00
},
2020-10-26 20:57:48 +08:00
saveImg() {
console.log(this.$refs["wfd"].graph.saveImg());
}
},
2020-10-26 20:57:48 +08:00
async created() {
const userRes = await getUserList({ page: 1, pageSize: 9999999 });
if (userRes.code == 0) {
userRes.data.list.map(item => {
this.users.push({ id: item.ID, name: item.nickName });
});
}
const authorityRes = await getAuthorityList({ page: 1, pageSize: 9999999 });
if (authorityRes.code == 0) {
authorityRes.data.list.map(item => {
this.authorities.push({
id: item.authorityId,
name: item.authorityName
});
});
}
if(this.$route.query.id){
const res = await findWorkflowProcess({ id: this.$route.query.id });
this.disabled = this.$route.query.type == "view"
if(res.code == 0){
this.demoData.nodes = res.data.reworkflowProcess.nodes
delete res.data.reworkflowProcess.nodes
this.demoData.edges = res.data.reworkflowProcess.edges
delete res.data.reworkflowProcess.edges
this.processModel = res.data.reworkflowProcess
}
this.wkType = this.$route.query.type
}
2020-10-29 09:37:02 +08:00
this.done = true
2020-10-26 20:57:48 +08:00
}
};
2020-10-09 16:11:46 +08:00
</script>