parent
048d1a3e97
commit
dcafb0937f
20 changed files with 918 additions and 109 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,82 @@ |
|||||||
|
import request from '@/router/axios'; |
||||||
|
|
||||||
|
export const modelList = (current, size, params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/model/list', |
||||||
|
method: 'get', |
||||||
|
params: { |
||||||
|
...params, |
||||||
|
current, |
||||||
|
size, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const managerList = (current, size, params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/manager/list', |
||||||
|
method: 'get', |
||||||
|
params: { |
||||||
|
...params, |
||||||
|
current, |
||||||
|
size, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const followList = (current, size, params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/follow/list', |
||||||
|
method: 'get', |
||||||
|
params: { |
||||||
|
...params, |
||||||
|
current, |
||||||
|
size, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
export const removeModel = (ids) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/model/remove', |
||||||
|
method: 'post', |
||||||
|
params: { |
||||||
|
ids, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const deployModel = (params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/model/deploy', |
||||||
|
method: 'post', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const changeState = (params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/manager/change-state', |
||||||
|
method: 'post', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const deleteDeployment = (deploymentIds) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/manager/delete-deployment', |
||||||
|
method: 'post', |
||||||
|
params: { |
||||||
|
deploymentIds, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const deleteProcessInstance = (params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-flow/follow/delete-process-instance', |
||||||
|
method: 'post', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
||||||
@ -0,0 +1,65 @@ |
|||||||
|
<template> |
||||||
|
<basic-container> |
||||||
|
<avue-form :option="option" v-model="form" :upload-before="uploadBefore" :upload-after="uploadAfter"></avue-form> |
||||||
|
</basic-container> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
form: { |
||||||
|
imgUrl: [], |
||||||
|
}, |
||||||
|
option: { |
||||||
|
labelWidth: 120, |
||||||
|
column: [ |
||||||
|
{ |
||||||
|
label: '流程类型', |
||||||
|
prop: 'flowCategory', |
||||||
|
type: 'select', |
||||||
|
dicUrl: `/api/blade-system/dict/dictionary?code=flow`, |
||||||
|
props: { |
||||||
|
label: "dictValue", |
||||||
|
value: "dictKey" |
||||||
|
}, |
||||||
|
rules: [ |
||||||
|
{ |
||||||
|
required: true, |
||||||
|
message: '请选择流程类型', |
||||||
|
trigger: 'blur' |
||||||
|
} |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '附件上传', |
||||||
|
prop: 'imgUrl', |
||||||
|
type: 'upload', |
||||||
|
loadText: '附件上传中,请稍等', |
||||||
|
span: 24, |
||||||
|
propsHttp: { |
||||||
|
res: 'data.0' |
||||||
|
}, |
||||||
|
tip: '请上传 bpmn20.xml 标准格式文件', |
||||||
|
}, |
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
uploadBefore(file, done, loading) { |
||||||
|
console.log(file) |
||||||
|
done() |
||||||
|
this.$message.success('上传前的方法') |
||||||
|
}, |
||||||
|
uploadAfter(res, done, loading) { |
||||||
|
console.log(res) |
||||||
|
done() |
||||||
|
this.$message.success('上传后的方法') |
||||||
|
}, |
||||||
|
submit() { |
||||||
|
this.$message.success('当前数据' + JSON.stringify(this.form)) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
@ -0,0 +1,157 @@ |
|||||||
|
<template> |
||||||
|
<basic-container> |
||||||
|
<avue-crud :option="option" |
||||||
|
:data="data" |
||||||
|
ref="crud" |
||||||
|
v-model="form" |
||||||
|
:page="page" |
||||||
|
:permission="permissionList" |
||||||
|
@row-del="rowDel" |
||||||
|
@search-change="searchChange" |
||||||
|
@search-reset="searchReset" |
||||||
|
@selection-change="selectionChange" |
||||||
|
@on-load="onLoad"> |
||||||
|
</avue-crud> |
||||||
|
<el-dialog title="流程删除" |
||||||
|
:visible.sync="followBox" |
||||||
|
width="20%"> |
||||||
|
<el-form :model="form" |
||||||
|
ref="form" |
||||||
|
label-width="20px"> |
||||||
|
<el-form-item label="删除理由"> |
||||||
|
<el-input v-model="deleteReason" |
||||||
|
placeholder="请输入删除理由"></el-input> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<span slot="footer" |
||||||
|
class="dialog-footer"> |
||||||
|
<el-button @click="followBox = false">关 闭</el-button> |
||||||
|
<el-button type="primary" |
||||||
|
@click="handleDelete">确 定</el-button> |
||||||
|
</span> |
||||||
|
</el-dialog> |
||||||
|
</basic-container> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import {followList, deleteProcessInstance} from "@/api/flow/flow"; |
||||||
|
import {mapGetters} from "vuex"; |
||||||
|
|
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
form: {}, |
||||||
|
selectionId: '', |
||||||
|
processInstanceId: '', |
||||||
|
selectionList: [], |
||||||
|
page: { |
||||||
|
pageSize: 10, |
||||||
|
currentPage: 1, |
||||||
|
total: 0 |
||||||
|
}, |
||||||
|
followBox: false, |
||||||
|
deleteReason: '', |
||||||
|
option: { |
||||||
|
tip: false, |
||||||
|
border: true, |
||||||
|
index: true, |
||||||
|
selection: true, |
||||||
|
editBtn: false, |
||||||
|
addBtn: false, |
||||||
|
viewBtn: false, |
||||||
|
dialogWidth: 300, |
||||||
|
dialogHeight: 400, |
||||||
|
column: [ |
||||||
|
{ |
||||||
|
label: "执行id", |
||||||
|
prop: "executionId", |
||||||
|
search: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "流程key", |
||||||
|
prop: "processDefinitionKey", |
||||||
|
search: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "流程实例id", |
||||||
|
prop: "processInstanceId", |
||||||
|
search: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "状态", |
||||||
|
prop: "suspensionState", |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "发起人", |
||||||
|
prop: "startUser", |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '开始时间', |
||||||
|
prop: 'startTime', |
||||||
|
}, |
||||||
|
] |
||||||
|
}, |
||||||
|
data: [] |
||||||
|
}; |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
...mapGetters(["permission"]), |
||||||
|
permissionList() { |
||||||
|
return { |
||||||
|
delBtn: this.vaildData(this.permission.flow_follow_delete, false), |
||||||
|
}; |
||||||
|
}, |
||||||
|
ids() { |
||||||
|
let ids = []; |
||||||
|
this.selectionList.forEach(ele => { |
||||||
|
ids.push(ele.id); |
||||||
|
}); |
||||||
|
return ids.join(","); |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
rowDel(row) { |
||||||
|
this.followBox = true; |
||||||
|
this.selectionId = row.id; |
||||||
|
this.processInstanceId = row.processInstanceId; |
||||||
|
}, |
||||||
|
handleDelete() { |
||||||
|
this.$confirm("确定将选择数据删除?", { |
||||||
|
confirmButtonText: "确定", |
||||||
|
cancelButtonText: "取消", |
||||||
|
type: "warning" |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
return deleteProcessInstance({deleteReason: this.deleteReason, processInstanceId: this.processInstanceId}); |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
this.onLoad(this.page); |
||||||
|
this.followBox = false; |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
}); |
||||||
|
}, |
||||||
|
searchReset() { |
||||||
|
this.onLoad(this.page); |
||||||
|
}, |
||||||
|
searchChange(params) { |
||||||
|
this.onLoad(this.page, params); |
||||||
|
}, |
||||||
|
selectionChange(list) { |
||||||
|
this.selectionList = list; |
||||||
|
}, |
||||||
|
onLoad(page, params = {}) { |
||||||
|
followList(page.currentPage, page.pageSize, params).then(res => { |
||||||
|
const data = res.data.data; |
||||||
|
this.page.total = data.total; |
||||||
|
this.data = data.records; |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
</style> |
||||||
@ -0,0 +1,304 @@ |
|||||||
|
<template> |
||||||
|
<basic-container> |
||||||
|
<avue-crud :option="option" |
||||||
|
:data="data" |
||||||
|
ref="crud" |
||||||
|
v-model="form" |
||||||
|
:page="page" |
||||||
|
:permission="permissionList" |
||||||
|
@row-del="rowDel" |
||||||
|
@row-update="rowUpdate" |
||||||
|
@row-save="rowSave" |
||||||
|
@search-change="searchChange" |
||||||
|
@search-reset="searchReset" |
||||||
|
@selection-change="selectionChange" |
||||||
|
@on-load="onLoad"> |
||||||
|
<template slot="menuLeft"> |
||||||
|
<el-button type="danger" |
||||||
|
size="small" |
||||||
|
icon="el-icon-delete" |
||||||
|
v-if="permission.flow_manager_remove" |
||||||
|
plain |
||||||
|
@click="handleDelete">删 除 |
||||||
|
</el-button> |
||||||
|
</template> |
||||||
|
<template slot-scope="scope" slot="menu"> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_manager_state" |
||||||
|
plain |
||||||
|
@click.stop="handleState(scope.row,scope.index)">变更状态 |
||||||
|
</el-button> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_manager_image" |
||||||
|
plain |
||||||
|
@click.stop="handleImage(scope.row,scope.index)">流程图 |
||||||
|
</el-button> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_manager_remove" |
||||||
|
plain |
||||||
|
@click.stop="handleSlotDelete(scope.row,scope.index)">删除 |
||||||
|
</el-button> |
||||||
|
</template> |
||||||
|
<template slot-scope="{row}" |
||||||
|
slot="version"> |
||||||
|
<el-tag>v{{row.version}}</el-tag> |
||||||
|
</template> |
||||||
|
<template slot-scope="{row}" |
||||||
|
slot="suspensionState"> |
||||||
|
<el-tag>{{row.suspensionState===1?'激活':'挂起'}}</el-tag> |
||||||
|
</template> |
||||||
|
<template slot-scope="{row}" |
||||||
|
slot="category"> |
||||||
|
<el-tag>{{row.categoryName}}</el-tag> |
||||||
|
</template> |
||||||
|
</avue-crud> |
||||||
|
<el-dialog title="流程图" |
||||||
|
:visible.sync="flowBox" |
||||||
|
fullscreen=true> |
||||||
|
<iframe |
||||||
|
:src=flowUrl |
||||||
|
width="100%" |
||||||
|
height="700" |
||||||
|
title="流程图" |
||||||
|
frameBorder="no" |
||||||
|
border="0" |
||||||
|
marginWidth="0" |
||||||
|
marginHeight="0" |
||||||
|
scrolling="no" |
||||||
|
allowTransparency="yes"> |
||||||
|
</iframe> |
||||||
|
<span slot="footer" |
||||||
|
class="dialog-footer"> |
||||||
|
<el-button @click="flowBox = false">关 闭</el-button> |
||||||
|
</span> |
||||||
|
</el-dialog> |
||||||
|
<el-dialog title="流程变更" |
||||||
|
:visible.sync="stateBox" |
||||||
|
width="20%"> |
||||||
|
<el-form :model="form" |
||||||
|
ref="form" |
||||||
|
label-width="80px"> |
||||||
|
<el-form-item label="流程状态"> |
||||||
|
<el-select v-model="flowState" placeholder="请选择" value=""> |
||||||
|
<el-option |
||||||
|
v-for="item in stateOptions" |
||||||
|
:key="item.value" |
||||||
|
:label="item.label" |
||||||
|
:value="item.value"> |
||||||
|
</el-option> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<span slot="footer" |
||||||
|
class="dialog-footer"> |
||||||
|
<el-button @click="stateBox = false">关 闭</el-button> |
||||||
|
<el-button type="primary" |
||||||
|
@click="handleDoState">确 定</el-button> |
||||||
|
</span> |
||||||
|
</el-dialog> |
||||||
|
</basic-container> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import {managerList, changeState, deleteDeployment} from "@/api/flow/flow"; |
||||||
|
import {mapGetters} from "vuex"; |
||||||
|
|
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
form: {}, |
||||||
|
selectionId: '', |
||||||
|
selectionList: [], |
||||||
|
page: { |
||||||
|
pageSize: 10, |
||||||
|
currentPage: 1, |
||||||
|
total: 0 |
||||||
|
}, |
||||||
|
flowBox: false, |
||||||
|
flowUrl: '', |
||||||
|
stateBox: false, |
||||||
|
flowState: '', |
||||||
|
stateOptions: [{ |
||||||
|
value: 'active', |
||||||
|
label: '激活' |
||||||
|
}, { |
||||||
|
value: 'suspend', |
||||||
|
label: '挂起' |
||||||
|
}], |
||||||
|
option: { |
||||||
|
tip: false, |
||||||
|
border: true, |
||||||
|
index: true, |
||||||
|
selection: true, |
||||||
|
editBtn: false, |
||||||
|
addBtn: false, |
||||||
|
viewBtn: false, |
||||||
|
delBtn: false, |
||||||
|
dialogWidth: 300, |
||||||
|
dialogHeight: 400, |
||||||
|
column: [ |
||||||
|
{ |
||||||
|
label: '流程主键', |
||||||
|
prop: 'id', |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '流程标识', |
||||||
|
prop: 'key', |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '流程名称', |
||||||
|
prop: 'name', |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "流程分类", |
||||||
|
type: "select", |
||||||
|
row: true, |
||||||
|
dicUrl: "/api/blade-system/dict/dictionary?code=flow", |
||||||
|
props: { |
||||||
|
label: "dictValue", |
||||||
|
value: "dictKey" |
||||||
|
}, |
||||||
|
slot: true, |
||||||
|
prop: "category", |
||||||
|
search: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '流程版本', |
||||||
|
prop: 'version', |
||||||
|
slot: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '状态', |
||||||
|
prop: 'suspensionState', |
||||||
|
slot: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '部署时间', |
||||||
|
prop: 'deploymentTime', |
||||||
|
}, |
||||||
|
] |
||||||
|
}, |
||||||
|
data: [] |
||||||
|
}; |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
...mapGetters(["permission"]), |
||||||
|
permissionList() { |
||||||
|
return { |
||||||
|
delBtn: this.vaildData(this.permission.flow_manager_remove, false), |
||||||
|
}; |
||||||
|
}, |
||||||
|
ids() { |
||||||
|
let ids = []; |
||||||
|
this.selectionList.forEach(ele => { |
||||||
|
ids.push(ele.id); |
||||||
|
}); |
||||||
|
return ids.join(","); |
||||||
|
}, |
||||||
|
deploymentIds() { |
||||||
|
let ids = []; |
||||||
|
this.selectionList.forEach(ele => { |
||||||
|
ids.push(ele.deploymentId); |
||||||
|
}); |
||||||
|
return ids.join(","); |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
searchReset() { |
||||||
|
this.onLoad(this.page); |
||||||
|
}, |
||||||
|
searchChange(params) { |
||||||
|
this.onLoad(this.page, params); |
||||||
|
}, |
||||||
|
selectionChange(list) { |
||||||
|
this.selectionList = list; |
||||||
|
}, |
||||||
|
handleDelete() { |
||||||
|
if (this.selectionList.length === 0) { |
||||||
|
this.$message.warning("请选择至少一条数据"); |
||||||
|
return; |
||||||
|
} |
||||||
|
this.$confirm("确定将选择数据删除?", { |
||||||
|
confirmButtonText: "确定", |
||||||
|
cancelButtonText: "取消", |
||||||
|
type: "warning" |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
return deleteDeployment(this.deploymentIds); |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
this.$refs.crud.toggleSelection(); |
||||||
|
this.onLoad(this.page); |
||||||
|
}); |
||||||
|
}, |
||||||
|
handleSlotDelete(row) { |
||||||
|
this.$confirm("确定将选择数据删除?", { |
||||||
|
confirmButtonText: "确定", |
||||||
|
cancelButtonText: "取消", |
||||||
|
type: "warning" |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
return deleteDeployment(row.deploymentId); |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
this.$refs.crud.toggleSelection(); |
||||||
|
this.onLoad(this.page); |
||||||
|
}); |
||||||
|
}, |
||||||
|
handleState(row) { |
||||||
|
this.stateBox = true; |
||||||
|
this.selectionId = row.id; |
||||||
|
}, |
||||||
|
handleDoState() { |
||||||
|
if (!this.flowState) { |
||||||
|
this.$message({ |
||||||
|
type: "warn", |
||||||
|
message: "请先选择流程状态!" |
||||||
|
}); |
||||||
|
return; |
||||||
|
} |
||||||
|
changeState({processId: this.selectionId, state: this.flowState}).then(res => { |
||||||
|
const data = res.data; |
||||||
|
if (data.success) { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: data.msg |
||||||
|
}); |
||||||
|
this.stateBox = false; |
||||||
|
this.onLoad(this.page); |
||||||
|
} else { |
||||||
|
this.$message({ |
||||||
|
type: "warn", |
||||||
|
message: data.msg |
||||||
|
}); |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
handleImage(row) { |
||||||
|
this.flowUrl = `/api/blade-flow/process/resource-view?processDefinitionId=${row.id}`; |
||||||
|
this.flowBox = true; |
||||||
|
}, |
||||||
|
onLoad(page, params = {}) { |
||||||
|
managerList(page.currentPage, page.pageSize, params).then(res => { |
||||||
|
const data = res.data.data; |
||||||
|
this.page.total = data.total; |
||||||
|
this.data = data.records; |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
</style> |
||||||
@ -0,0 +1,292 @@ |
|||||||
|
<template> |
||||||
|
<basic-container> |
||||||
|
<avue-crud :option="option" |
||||||
|
:data="data" |
||||||
|
ref="crud" |
||||||
|
v-model="form" |
||||||
|
:page="page" |
||||||
|
@search-change="searchChange" |
||||||
|
@search-reset="searchReset" |
||||||
|
@selection-change="selectionChange" |
||||||
|
@on-load="onLoad"> |
||||||
|
<template slot="menuLeft"> |
||||||
|
<el-button type="primary" |
||||||
|
size="small" |
||||||
|
icon="el-icon-circle-plus" |
||||||
|
v-if="permission.flow_model_create" |
||||||
|
plain |
||||||
|
@click="handleCreate">创 建 |
||||||
|
</el-button> |
||||||
|
<el-button type="danger" |
||||||
|
size="small" |
||||||
|
icon="el-icon-delete" |
||||||
|
v-if="permission.flow_model_delete" |
||||||
|
plain |
||||||
|
@click="handleDelete">删 除 |
||||||
|
</el-button> |
||||||
|
</template> |
||||||
|
<template slot-scope="scope" slot="menu"> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_model_update" |
||||||
|
plain |
||||||
|
@click.stop="handleUpdate(scope.row,scope.index)">配置 |
||||||
|
</el-button> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_model_deploy" |
||||||
|
plain |
||||||
|
@click.stop="handleDeploy(scope.row,scope.index)">部署 |
||||||
|
</el-button> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_model_download" |
||||||
|
plain |
||||||
|
@click.stop="handleDownload(scope.row,scope.index)">下载 |
||||||
|
</el-button> |
||||||
|
<el-button type="text" |
||||||
|
size="small" |
||||||
|
v-if="permission.flow_model_delete" |
||||||
|
plain |
||||||
|
@click.stop="handleSlotDelete(scope.row,scope.index)">删除 |
||||||
|
</el-button> |
||||||
|
</template> |
||||||
|
<template slot-scope="{row}" |
||||||
|
slot="version"> |
||||||
|
<el-tag>v{{row.version}}</el-tag> |
||||||
|
</template> |
||||||
|
</avue-crud> |
||||||
|
<el-dialog title="流程配置" |
||||||
|
:visible.sync="flowBox" |
||||||
|
fullscreen=true> |
||||||
|
<iframe |
||||||
|
:src=flowUrl |
||||||
|
width="100%" |
||||||
|
height="700" |
||||||
|
title="流程设计器" |
||||||
|
frameBorder="no" |
||||||
|
border="0" |
||||||
|
marginWidth="0" |
||||||
|
marginHeight="0" |
||||||
|
scrolling="no" |
||||||
|
allowTransparency="yes"> |
||||||
|
</iframe> |
||||||
|
<span slot="footer" |
||||||
|
class="dialog-footer"> |
||||||
|
<el-button @click="flowBox = false">取 消</el-button> |
||||||
|
<el-button type="primary" |
||||||
|
@click="handleRefresh">确 定</el-button> |
||||||
|
</span> |
||||||
|
</el-dialog> |
||||||
|
<el-dialog title="流程部署" |
||||||
|
:visible.sync="deployBox" |
||||||
|
width="20%"> |
||||||
|
<el-form :model="form" |
||||||
|
ref="form" |
||||||
|
label-width="80px"> |
||||||
|
<el-form-item label="流程类型"> |
||||||
|
<el-select v-model="categoryValue" placeholder="请选择" value=""> |
||||||
|
<el-option |
||||||
|
v-for="item in category" |
||||||
|
:key="item.dictKey" |
||||||
|
:label="item.dictValue" |
||||||
|
:value="item.dictKey"> |
||||||
|
</el-option> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<span slot="footer" |
||||||
|
class="dialog-footer"> |
||||||
|
<el-button @click="deployBox = false">取 消</el-button> |
||||||
|
<el-button type="primary" |
||||||
|
@click="handleDoDeploy">确 定</el-button> |
||||||
|
</span> |
||||||
|
</el-dialog> |
||||||
|
</basic-container> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import {getDictionary} from "@/api/system/dict"; |
||||||
|
import {modelList, removeModel, deployModel} from "@/api/flow/flow"; |
||||||
|
import {mapGetters} from "vuex"; |
||||||
|
import website from '@/config/website'; |
||||||
|
|
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
form: {}, |
||||||
|
selectionId: '', |
||||||
|
selectionList: [], |
||||||
|
page: { |
||||||
|
pageSize: 10, |
||||||
|
currentPage: 1, |
||||||
|
total: 0 |
||||||
|
}, |
||||||
|
deployBox: false, |
||||||
|
flowBox: false, |
||||||
|
flowUrl: '', |
||||||
|
category: [], |
||||||
|
categoryValue: '', |
||||||
|
option: { |
||||||
|
tip: false, |
||||||
|
border: true, |
||||||
|
index: true, |
||||||
|
selection: true, |
||||||
|
editBtn: false, |
||||||
|
addBtn: false, |
||||||
|
viewBtn: false, |
||||||
|
delBtn: false, |
||||||
|
dialogWidth: 300, |
||||||
|
dialogHeight: 400, |
||||||
|
column: [ |
||||||
|
{ |
||||||
|
label: '模型主键', |
||||||
|
prop: 'id', |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '模型标识', |
||||||
|
prop: 'modelKey', |
||||||
|
search: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '模型名称', |
||||||
|
prop: 'name', |
||||||
|
search: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '流程版本', |
||||||
|
prop: 'version', |
||||||
|
slot: true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '创建时间', |
||||||
|
prop: 'created', |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '更新时间', |
||||||
|
prop: 'lastUpdated', |
||||||
|
}, |
||||||
|
] |
||||||
|
}, |
||||||
|
data: [] |
||||||
|
}; |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
...mapGetters(["permission"]), |
||||||
|
ids() { |
||||||
|
let ids = []; |
||||||
|
this.selectionList.forEach(ele => { |
||||||
|
ids.push(ele.id); |
||||||
|
}); |
||||||
|
return ids.join(","); |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
searchReset() { |
||||||
|
this.onLoad(this.page); |
||||||
|
}, |
||||||
|
searchChange(params) { |
||||||
|
this.onLoad(this.page, params); |
||||||
|
}, |
||||||
|
selectionChange(list) { |
||||||
|
this.selectionList = list; |
||||||
|
}, |
||||||
|
handleDelete() { |
||||||
|
if (this.selectionList.length === 0) { |
||||||
|
this.$message.warning("请选择至少一条数据"); |
||||||
|
return; |
||||||
|
} |
||||||
|
this.$confirm("确定将选择数据删除?", { |
||||||
|
confirmButtonText: "确定", |
||||||
|
cancelButtonText: "取消", |
||||||
|
type: "warning" |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
return removeModel(this.ids); |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
this.$refs.crud.toggleSelection(); |
||||||
|
this.onLoad(this.page); |
||||||
|
}); |
||||||
|
}, |
||||||
|
handleCreate() { |
||||||
|
this.flowUrl = `${website.flowDesignUrl}/index.html`; |
||||||
|
this.flowBox = true; |
||||||
|
}, |
||||||
|
handleUpdate(row) { |
||||||
|
this.flowUrl = `${website.flowDesignUrl}/index.html#/editor/${row.id}`; |
||||||
|
this.flowBox = true; |
||||||
|
}, |
||||||
|
handleDeploy(row) { |
||||||
|
this.deployBox = true; |
||||||
|
this.selectionId = row.id; |
||||||
|
}, |
||||||
|
handleDoDeploy() { |
||||||
|
if (!this.categoryValue) { |
||||||
|
this.$message({ |
||||||
|
type: "warn", |
||||||
|
message: "请先选择流程类型!" |
||||||
|
}); |
||||||
|
return; |
||||||
|
} |
||||||
|
deployModel({ modelId: this.selectionId, category: `flow_${this.categoryValue}` }).then(res =>{ |
||||||
|
const data = res.data; |
||||||
|
if (data.success) { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: data.msg |
||||||
|
}); |
||||||
|
this.deployBox = false; |
||||||
|
} else { |
||||||
|
this.$message({ |
||||||
|
type: "warn", |
||||||
|
message: data.msg |
||||||
|
}); |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
handleDownload(row) { |
||||||
|
window.open(`${website.flowDesignUrl}/app/rest/models/${row.id}/bpmn20`); |
||||||
|
}, |
||||||
|
handleSlotDelete(row) { |
||||||
|
this.$confirm("确定将选择数据删除?", { |
||||||
|
confirmButtonText: "确定", |
||||||
|
cancelButtonText: "取消", |
||||||
|
type: "warning" |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
return removeModel(row.id); |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
this.$refs.crud.toggleSelection(); |
||||||
|
this.onLoad(this.page); |
||||||
|
}); |
||||||
|
}, |
||||||
|
handleRefresh() { |
||||||
|
this.flowBox = false; |
||||||
|
this.onLoad(this.page); |
||||||
|
}, |
||||||
|
onLoad(page, params = {}) { |
||||||
|
modelList(page.currentPage, page.pageSize, params).then(res => { |
||||||
|
const data = res.data.data; |
||||||
|
this.page.total = data.total; |
||||||
|
this.data = data.records; |
||||||
|
}); |
||||||
|
getDictionary({code: 'flow'}).then(res => { |
||||||
|
this.category = res.data.data; |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
</style> |
||||||
Loading…
Reference in new issue