端到端功能入口组件
This commit is contained in:
parent
17666c2653
commit
6373d8b703
309
com.actionsoft.apps.coe.pal/src/views/subprocess/SubProcess.vue
Normal file
309
com.actionsoft.apps.coe.pal/src/views/subprocess/SubProcess.vue
Normal file
@ -0,0 +1,309 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
title="生成端到端流程图"
|
||||||
|
height="350px"
|
||||||
|
width="800px"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
:border="false">
|
||||||
|
<div class="sub-process-dialog-content" style="margin: 25px 25px;">
|
||||||
|
<el-form label-width="95px" label-position="left">
|
||||||
|
<el-form-item label="位置" required>
|
||||||
|
<el-input disabled v-model="subProcessForm.position.label" size="small">
|
||||||
|
<template slot="append">
|
||||||
|
<el-popover ref="positionPopover" placement="bottom" trigger="click" width="600" @show="positionPopoverShowEvent">
|
||||||
|
<div style="height: 200px; overflow: auto;">
|
||||||
|
<el-tree
|
||||||
|
v-if="subProcessForm.position.showTree"
|
||||||
|
@node-collapse="closePositionNode"
|
||||||
|
@node-click="positionTreeNodeClickEvent"
|
||||||
|
ref="positionTree"
|
||||||
|
node-key="id"
|
||||||
|
lazy
|
||||||
|
:highlight-current="true"
|
||||||
|
:expand-on-click-node="false"
|
||||||
|
:load="loadPositionTreeNode"
|
||||||
|
:props="treeProps">
|
||||||
|
<span slot-scope="{node, data}">
|
||||||
|
<i class="awsui-iconfont tree-content-icon tree-content-icon-padding" :style="{'color': node.data.icon.color}" v-html="node.data.icon.icon"></i>
|
||||||
|
<span :style="{'font-weight': data.id.length < 36 ? '600' : ''}">{{node.label}}</span>
|
||||||
|
</span>
|
||||||
|
</el-tree>
|
||||||
|
</div>
|
||||||
|
<span slot="reference" style="cursor: pointer;"><i class="awsui-iconfont"></i></span>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子流程选择" required>
|
||||||
|
<el-popover ref="subProcessPopover" placement="bottom" trigger="click" width="600">
|
||||||
|
<div class="sub-process-tree-box" style="height: 300px; overflow: auto;">
|
||||||
|
<el-tree
|
||||||
|
ref="subProcessModelTree"
|
||||||
|
@node-collapse="closeSubProcessNode"
|
||||||
|
node-key="id"
|
||||||
|
lazy
|
||||||
|
show-checkbox
|
||||||
|
:load="loadModelTreeNode"
|
||||||
|
@check="modeTreeNodeCheck"
|
||||||
|
:props="treeProps">
|
||||||
|
<span slot-scope="{node, data}">
|
||||||
|
<i class="awsui-iconfont tree-content-icon tree-content-icon-padding" :style="{'color': node.data.icon.color}" v-html="node.data.icon.icon"></i>
|
||||||
|
<span :style="{'font-weight': data.id.length < 36 ? '600' : ''}">{{node.label}}</span>
|
||||||
|
</span>
|
||||||
|
</el-tree>
|
||||||
|
</div>
|
||||||
|
<div slot="reference" style="width: 100%;height: 65px;border: 1px solid #dcdfe6;cursor: pointer;display: inline-flex;align-items: center;flex-wrap: wrap;overflow: auto;">
|
||||||
|
<div>
|
||||||
|
<el-tag style="margin: 5px;" v-for="tag in subProcessForm.processTags" :key="tag.value">{{ tag.label }}</el-tag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-popover>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="排布方式" required>
|
||||||
|
<el-radio-group v-model="subProcessForm.direction">
|
||||||
|
<el-radio v-for="item in subProcessForm.directionOpts" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="模型名称" required>
|
||||||
|
<el-input v-model="subProcessForm.modelName" size="small"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<awsui-button type="primary" @click="generateSubProcessModel">确定</awsui-button>
|
||||||
|
<awsui-button @click="close">取 消</awsui-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import awsuiAxios from "../../awsuiAxios";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "SubProcess",
|
||||||
|
props: {
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
subProcessForm: {
|
||||||
|
position: {
|
||||||
|
path: '',
|
||||||
|
label: '',
|
||||||
|
showTree: false,
|
||||||
|
},
|
||||||
|
processList: [],
|
||||||
|
direction: 'vertically',
|
||||||
|
directionOpts: [{value: 'vertically', label: '纵向排布'},{value: 'horizontal', label: '横向排布'}],
|
||||||
|
modelName: '',
|
||||||
|
processTags: [],
|
||||||
|
popoverVisible: false
|
||||||
|
},
|
||||||
|
treeProps: {
|
||||||
|
label: 'name',
|
||||||
|
isLeaf: 'leaf'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData(){
|
||||||
|
// 获取位置根目录
|
||||||
|
const param = {
|
||||||
|
url: 'jd',
|
||||||
|
data: {
|
||||||
|
cmd: 'com.actionsoft.apps.coe.method.process.subprocess.init_data',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
awsuiAxios.post(param)
|
||||||
|
.then(ro => {
|
||||||
|
if (ro.result === 'ok') {
|
||||||
|
// console.log('initData', ro);
|
||||||
|
this.subProcessForm.position.label = ro.data.dirRootName;
|
||||||
|
this.subProcessForm.position.path = ro.data.dirRootPath;
|
||||||
|
}else if (ro.result === 'error') {
|
||||||
|
this.$message({type: 'error', message: ro.msg});
|
||||||
|
this.$emit('getResult');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
close(){
|
||||||
|
this.$emit('getResult');
|
||||||
|
this.clearData();
|
||||||
|
// 子流程树节点所选清空
|
||||||
|
this.$refs.subProcessModelTree.setCheckedKeys([]);
|
||||||
|
},
|
||||||
|
closeAdapter(done) {
|
||||||
|
this.close();
|
||||||
|
done();
|
||||||
|
},
|
||||||
|
clearData(){
|
||||||
|
this.dialogVisible = false;
|
||||||
|
this.subProcessForm.processTags = [];
|
||||||
|
this.subProcessForm.processList = [];
|
||||||
|
this.subProcessForm.modelName = '';
|
||||||
|
this.subProcessForm.popoverVisible = false;
|
||||||
|
this.subProcessForm.position.label = '';
|
||||||
|
this.subProcessForm.position.showTree = false;
|
||||||
|
},
|
||||||
|
// 生成端到端总图
|
||||||
|
generateSubProcessModel(){
|
||||||
|
console.log('执行参数',this.subProcessForm);
|
||||||
|
},
|
||||||
|
// 加载子流程节点树
|
||||||
|
loadModelTreeNode(node, resolve){
|
||||||
|
const that = this;
|
||||||
|
const param = {
|
||||||
|
url: 'jd',
|
||||||
|
data: {
|
||||||
|
cmd: 'com.actionsoft.apps.coe.method.process.subprocess.find_tree_node',
|
||||||
|
wsId: that.$store.getters.getWsIdFn,
|
||||||
|
teamId: that.$store.getters.getTeamIdFn,
|
||||||
|
createUsers: JSON.stringify(that.$store.getters.getCreateUsers),
|
||||||
|
orgIds: JSON.stringify(that.$store.getters.getOrgIds),
|
||||||
|
methodIds: JSON.stringify(that.$store.getters.getMethodIds),
|
||||||
|
pid: ''
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (node.level !== 0){
|
||||||
|
param.data.pid = node.data.id;
|
||||||
|
}
|
||||||
|
awsuiAxios.post(param)
|
||||||
|
.then(ro => {
|
||||||
|
if (ro.result === 'ok') {
|
||||||
|
resolve(ro.data);
|
||||||
|
const tree = that.$refs.subProcessModelTree;
|
||||||
|
if (ro.data.length){
|
||||||
|
tree.getNode(ro.data[0].id).expand();
|
||||||
|
setTimeout(() => {
|
||||||
|
let childNode = tree.getNode(ro.data[0].id).childNodes[0];
|
||||||
|
if (childNode != null) {
|
||||||
|
childNode.expand();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
modeTreeNodeCheck(data, obj){
|
||||||
|
const that = this;
|
||||||
|
if (!obj.checkedKeys.length) {
|
||||||
|
// 当前树没有选中的节点 对应的tag数组清空
|
||||||
|
that.subProcessForm.processTags = [];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 调接口查询当前选中节点的所有子节点
|
||||||
|
const param = {
|
||||||
|
url: 'jd',
|
||||||
|
data: {
|
||||||
|
cmd: 'com.actionsoft.apps.coe.method.process.subprocess.find_tree_child_node_all',
|
||||||
|
nodeKeyJsonArr: JSON.stringify(obj.checkedKeys)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
awsuiAxios.post(param)
|
||||||
|
.then(ro => {
|
||||||
|
if (ro.result === 'ok') {
|
||||||
|
// console.log('节点选中接口',ro.data);
|
||||||
|
that.subProcessForm.processTags = ro.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
that.$message({type: 'error', message: err.msg});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 关闭时清空,下次展开重新请求动态加载
|
||||||
|
closeSubProcessNode(obj, node, tree) {
|
||||||
|
node.childNodes = [];
|
||||||
|
node.loaded = false;
|
||||||
|
},
|
||||||
|
// 加载指定位置节点树
|
||||||
|
loadPositionTreeNode(node, resolve){
|
||||||
|
const that = this;
|
||||||
|
const param = {
|
||||||
|
url: 'jd',
|
||||||
|
data: {
|
||||||
|
cmd: 'com.actionsoft.apps.coe.method.process.subprocess.construct_position_tree',
|
||||||
|
wsId: that.$store.getters.getWsIdFn,
|
||||||
|
teamId: that.$store.getters.getTeamIdFn,
|
||||||
|
pid: '',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (node.level !== 0){
|
||||||
|
param.data.pid = node.data.id;
|
||||||
|
}
|
||||||
|
awsuiAxios.post(param)
|
||||||
|
.then(ro => {
|
||||||
|
if (ro.result === 'ok') {
|
||||||
|
resolve(ro.data);
|
||||||
|
const tree = that.$refs.positionTree;
|
||||||
|
if (ro.data.length){
|
||||||
|
tree.getNode(ro.data[0].id).expand();
|
||||||
|
setTimeout(() => {
|
||||||
|
let childNode = tree.getNode(ro.data[0].id).childNodes[0];
|
||||||
|
if (childNode != null) {
|
||||||
|
childNode.expand();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closePositionNode(obj, node, tree){
|
||||||
|
node.childNodes = [];
|
||||||
|
node.loaded = false;
|
||||||
|
},
|
||||||
|
positionTreeNodeClickEvent(data, node, obj){
|
||||||
|
if (node.data.id === this.subProcessForm.position.path.split("/")[0]){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let tempNode = null;
|
||||||
|
let pathIds = [];
|
||||||
|
let pathNames = [];
|
||||||
|
for (let i = 0; i < node.level; i++) {
|
||||||
|
if (tempNode == null){
|
||||||
|
pathIds.push(node.data.id);
|
||||||
|
pathNames.push(node.data.name);
|
||||||
|
tempNode = node;
|
||||||
|
}else {
|
||||||
|
tempNode = tempNode.parent;
|
||||||
|
pathIds.push(tempNode.data.id);
|
||||||
|
pathNames.push(tempNode.data.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.subProcessForm.position.label = pathNames.reverse().join("/");
|
||||||
|
this.subProcessForm.position.path = pathIds.reverse().join("/");
|
||||||
|
|
||||||
|
this.$refs.positionPopover.doClose();
|
||||||
|
},
|
||||||
|
positionPopoverShowEvent(){
|
||||||
|
this.subProcessForm.position.showTree = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
visible(val) {
|
||||||
|
this.dialogVisible = val;
|
||||||
|
if (val) {
|
||||||
|
this.initData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/deep/ .el-dialog__body {
|
||||||
|
padding: 10px 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue
Block a user