From dc41f433072b1dd362f70905010ec77a625fc606 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 01 十一月 2024 15:46:36 +0800
Subject: [PATCH] 调整页面
---
Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue | 283 +++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 215 insertions(+), 68 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
index 65e9ee6..f6fe790 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
@@ -1,19 +1,22 @@
<template>
<el-dialog v-dialogDrag
- append-to-body="true"
:close-on-click-modal="false"
- :destroy-on-close="true"
:visible.sync="visible"
:width="width"
+ append-to-body="true"
class="avue-dialog"
title="鍚姩娴佺▼"
- top="0"
- style="margin-top: -10% !important;"
@close="dialogClose">
- <el-form :model="saveParam" :rules="rules" class="demo-form-inline" label-position="left" label-width="auto">
+ <el-divider content-position="left">娴佺▼淇℃伅</el-divider>
+
+ <el-form ref="nodeForm" :model="saveParam" :rules="rules" class="demo-form-inline" label-position="left"
+ label-width="auto">
<el-form-item label="娴佺▼妯℃澘">
- <el-input v-model="saveParam.modelName" disabled placeholder="娴佺▼妯℃澘"></el-input>
+ <el-select v-model="saveParam.processTemplate" filterable style="width: 100%;" @change="proTemSelect($event)">
+ <el-option v-for="(item, key) in processTemplateList" :key="key" :label="item.value"
+ :value="item.value"></el-option>
+ </el-select>
</el-form-item>
<el-form-item label="娴佺▼鍚嶇О" prop="processName">
<el-input v-model="saveParam.processName" placeholder="娴佺▼鍚嶇О">
@@ -25,30 +28,34 @@
</el-form-item>
</el-form>
- <el-divider></el-divider>
-<!-- <div class="btns-icon">-->
-<!-- <el-button circle icon="el-icon-star-off" @click="handleCollect"></el-button>-->
-<!-- </div>-->
- <el-form :model="collectParam" class="demo-form-inline" label-position="left" label-width="auto">
- <el-form-item v-for="(item, index) in initFrom" :key="index" :label="item.taskName">
- <el-select v-model="collectParam.flowTaskUsers[index]['userId']" :placeholder="item.taskName" filterable
- style="width: 100%;" @change="handleSelect($event, index)">
- <el-option v-for="(key, keyi) in typeName" :key="keyi" :label="key.userNames"
- :value="key.userId"></el-option>
- </el-select>
+ <el-divider content-position="left">娴佺▼鑺傜偣</el-divider>
+
+
+ <el-form :key="formKey" v-loading="nodeLoading" :model="collectParam" :rules="nodeRules" class="demo-form-inline"
+ label-position="left"
+ label-width="auto">
+ <el-form-item v-for="(item, index) in initFrom" :key="index" :label="item.name" prop="node">
+ <div @click="nodeChange(item)">
+ <el-input v-model="collectParam[item.name+'name']" readonly="true" suffix-icon="el-icon-zoom-in"></el-input>
+ </div>
</el-form-item>
</el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="handleCancel">鍙� 娑�</el-button>
- <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
- </div>
+ <div slot="footer" class="dialog-footer">
+ <el-button size="small" @click="handleCancel">鍙� 娑�</el-button>
+ <el-button size="small" type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </div>
+ <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
+ :title="`涓恒��${this.nodeName}銆戦�夊彇鍊糮" :transferTitle="transferTitle" :bottomValue="bottomValue"
+ @transferSend="roleSendHandler"></transfer>
</el-dialog>
+
</template>
<script>
import {validatenull} from "@/util/validate";
-import {getTemplateByType} from "@/api/base/startWork/index"
+import {getTemplateByType, getAllProcessNode, startProcess} from "@/api/base/startWork/index"
+
export default {
name: "startWorkFlow",
props: {
@@ -70,34 +77,67 @@
data() {
return {
visible: false,
- saveParam: {}, // 瀵硅薄鍖呭惈 {modelName娴佺▼妯℃澘(鐢辨帴鍙h繑鍥炲綋鍓嶆祦绋嬫ā鏉�) , processName娴佺▼鍚嶇О锛堜负褰撳墠鐢ㄦ埛+'鍚姩娴佺▼'+褰撳墠鍒嗙被锛� , processDesc娴佺▼鎻忚堪 }
+ saveParam: {
+ processName: ''
+ }, // 瀵硅薄鍖呭惈 {processTemplate娴佺▼妯℃澘(鐢辨帴鍙h繑鍥炲綋鍓嶆祦绋嬫ā鏉�) , processName娴佺▼鍚嶇О锛堜负褰撳墠鐢ㄦ埛+'鍚姩娴佺▼'+褰撳墠鍒嗙被锛� , processDesc娴佺▼鎻忚堪 }
+ processTemplateList: [], // 娴佺▼妯℃澘涓嬫媺鏁扮粍
initFrom: [], // 褰撳墠娴佺▼鑺傜偣寰幆鏁扮粍
collectParam: {}, // 娴佺▼鑺傜偣涓嬫媺妗嗗弻鍚戠粦瀹氬睘鎬�
typeName: [], // 娴佺▼鑺傜偣option寰幆閫夐」
+ nodeLoading: false,
rules: {
processName: [
- { required: true, message: '娴佺▼鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' },
- { min: 3, max: 50, message: '闀垮害鍦� 3 鍒� 50 涓瓧绗�', trigger: 'blur' }
+ {required: true, message: '娴佺▼鍚嶇О涓嶈兘涓虹┖', trigger: 'blur'},
+ {min: 3, max: 50, message: '闀垮害鍦� 3 鍒� 50 涓瓧绗�', trigger: 'blur'}
]
- }
+ },
+ nodeRules: {
+ node: [
+ {required: true, message: '閫夋嫨鍐呭涓嶈兘涓虹┖', trigger: 'change'},
+ ]
+ },
+ bottomValue:'',
+ leftRoleData: [],
+ rightRoleData: [],
+ transferTitle: [],
+ nodeName: '', // 褰撳墠鑺傜偣鍚嶇О
+ userVo: [
+ {
+ "children": [],
+ "id": "zkjs",
+ "leaf": true,
+ "name": "鎬讳細璁″笀",
+ "oid": "1241AC3B-26AF-9B86-7870-53DA8D78A742",
+ "secret": -1,
+ "secretText": "",
+ "type": "user"
+ },
+ {
+ "children": [],
+ "id": "1",
+ "leaf": true,
+ "name": "娴嬭瘯",
+ "oid": "921D71F8-C2BB-3BCE-B744-AD0C3812F41A",
+ "secret": -1,
+ "secretText": "",
+ "type": "user"
+ },
+ {
+ "children": [],
+ "id": "5",
+ "leaf": true,
+ "name": "鎬讳細璁″笀",
+ "oid": "34ddb5a8-ab95-4070-b72f-abaaa48cf8b1",
+ "secret": -1,
+ "secretText": "",
+ "type": "user"
+ }
+ ],
+ formKey: 0,
+
}
},
- watch: {
- users: {
- handler(val) {
- this.collectParam.flowTaskUsers = val
- },
- deep: true,
- immediate: true
- },
- parameter: {
- handler(newval, oldval) {
- this.saveParam = Object.assign({processName: '', processDesc: '' , }, newval);
- },
- deep: true,
- immediate: true
- }
- },
+ watch: {},
computed: {
fullscreen() {
if (this.paramVOS.width || this.paramVOS.height) {
@@ -120,59 +160,166 @@
},
},
created() {
- this.modelNameChange();
- this.getWorkByType();
+ // this.modelNameChange();
+
},
mounted() {
+ this.getWorkByType();
},
methods: {
// 鑾峰彇娴佺▼妯℃澘淇℃伅
- getWorkByType(){
+ getWorkByType() {
+ console.log('this.paramVOS',this.paramVOS)
let params = {
- type:'鏂囨。瀹$娴佺▼',
- filterTemplate:""
+ type: this.paramVOS.templatetype,
+ filterTemplate: this.paramVOS.filterTemplate || ""
}
getTemplateByType(params).then(res => {
- console.log(res)
+ const data = res.data.data;
+ const userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
+
+ this.processTemplateList = data;
+ this.saveParam.processTemplate = data[0].value;
+ this.saveParam.processName = this.paramVOS.processname || userInfo.content.userName + '-' + data[0].value; // 瀵规祦绋嬫ā鏉� 娴佺▼鍚嶇О璧嬮粯璁ゅ��
+
+ this.getProcessNode(data[0].attributes.oid); // 棣栨杩涘叆璋冪敤绗竴涓ā鏉跨殑鎵�鏈夎妭鐐�
+ }).catch(err => {
+ this.$message.error(err);
})
},
+
+ // 璇锋眰娴佺▼鑺傜偣
+ getProcessNode(oid) {
+ let params = {
+ processOid: oid,
+ maxSecret: this.paramVOS.maxSecret || -1
+ }
+ getAllProcessNode(params).then(res => {
+ const nodes = res.data.data;
+ this.initFrom = nodes;
+ nodes.forEach(item => {
+ // let name = item.processUserVO[0].children.map(name => name.name).join(',');
+ // let ids = item.processUserVO[0].children.map(id => id.id).join(',');
+ let name = this.userVo.map(name => name.name).join(',');
+ let ids = this.userVo.map(id => id.id).join(',');
+ this.bottomValue = name;
+ this.collectParam[item.name + 'name'] = name;
+ this.collectParam[item.name] = ids;
+ })
+ this.nodeLoading = false;
+ }).catch(err => {
+ this.$message.error(err);
+ })
+ },
+
// 鍏抽棴寮圭獥
dialogClose() {
this.visible = false;
},
- handleSelect() {
-
- },
-
- handleCollect() {
-
- },
handleCancel() {
this.dialogClose();
},
handleConfirm() {
- console.log(this.paramVOS)
+ const oids = this.dataStore.map(item => item.oid).join(',');
+ let params = {
+ deployid:this.processTemplateList[0].attributes.deploymentId,
+ title:this.saveParam.processName,
+ description:this.saveParam.processDesc,
+ btmType:this.processTemplateList[0].attributes.taskType,
+ uiType:this.processTemplateList[0].attributes.taskType,
+ oids:oids, // 褰撳墠鏁版嵁oid锛屽涓敤,鍒嗛殧
+ detailInfoUrl:this.paramVOS.detailInfoUrl || '', // 鐢ㄦ埛閰嶇疆灞炴��
+ resetStatus:'Editing',
+ nodeUsers:{
+ ...this.collectParam
+ }
+ }
+ startProcess(params).then(res => {
+ if(res.data.obj.status === 200){
+ this.dialogClose();
+ this.$message.success('鍚姩娴佺▼鎴愬姛');
+ }else {
+ this.$message.error(res.data.obj.error);
+ }
+ }).catch(err => {
+ this.$message.error(err);
+ })
},
- // 娴佺▼鍚嶇О鍒濆鍖栫粦瀹�
- modelNameChange(){
- var userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
+ // 鍒囨崲娴佺▼妯℃澘
+ proTemSelect(event) {
+ this.nodeLoading = true;
+ this.getProcessNode(event);
+ this.$refs.nodeForm.clearValidate();
+ },
- if (this.paramVOS && this.paramVOS.modelName) {
- this.saveParam.modelName = this.paramVOS.modelName;
- } else if (userInfo.content && userInfo.content.userName) {
- this.saveParam.modelName = userInfo.content.userName + '鍚姩娴佺▼';
- } else {
- this.saveParam.modelName = '';
- }
- }
+ // 鑺傜偣鐐瑰嚮浜嬩欢
+ nodeChange(item) {
+ this.nodeName = item.name;
+ this.transferTitle = [`[${item.name}]鏈�夌敤鎴穈, `[${item.name}]宸查�夌敤鎴穈]
+ this.leftRoleData = [
+ {
+ "children": [],
+ "id": "zkjs",
+ "leaf": true,
+ "name": "鎬讳細璁″笀",
+ "oid": "1241AC3B-26AF-9B86-7870-53DA8D78A742",
+ "secret": -1,
+ "secretText": "",
+ "type": "user"
+ },
+ {
+ "children": [],
+ "id": "1",
+ "leaf": true,
+ "name": "娴嬭瘯",
+ "oid": "921D71F8-C2BB-3BCE-B744-AD0C3812F41A",
+ "secret": -1,
+ "secretText": "",
+ "type": "user"
+ },
+ {
+ "children": [],
+ "id": "5",
+ "leaf": true,
+ "name": "鎬讳細璁″笀",
+ "oid": "34ddb5a8-ab95-4070-b72f-abaaa48cf8b1",
+ "secret": -1,
+ "secretText": "",
+ "type": "user"
+ }
+ ];
+ this.rightRoleData = this.userVo.map(item => item.oid);
+ this.$refs.transfer.visible = true;
+ },
+
+ // 绌挎妗嗗洖濉�
+ roleSendHandler(data) {
+ let filterData;
+ filterData = this.userVo.filter(item => {
+ return data.includes(item.oid);
+ });
+ const filterName = filterData.map(item => item.name).join(',');
+ this.$set(this.collectParam, this.nodeName + 'name', filterName);
+ this.formKey += 1; // 鍒锋柊琛ㄥ崟 鍥犱负鍙屽悜缁戝畾鐨則his.collectParam[this.nodeName + 'name']鏄姩鎬佸�� vue鏃犳硶妫�娴嬪埌鍊肩殑鏇存柊
+ },
}
}
</script>
-<style scoped lang="scss">
+<style lang="scss" scoped>
+.el-form-item {
+ margin-bottom: 25px;
+}
+.el-divider--horizontal {
+ margin-bottom: 20px !important;
+}
+
+.el-divider__text.is-left {
+ color: #8b8989 !important;
+}
</style>
--
Gitblit v1.9.3