From 53605d638044f3129cb622d44bd6c2026b7978cd Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期四, 16 一月 2025 22:41:31 +0800 Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/project_management-vue --- src/views/flowable/task/myProcess/send/index.vue | 249 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 172 insertions(+), 77 deletions(-) diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue index 4dfb7be..52bda98 100644 --- a/src/views/flowable/task/myProcess/send/index.vue +++ b/src/views/flowable/task/myProcess/send/index.vue @@ -10,39 +10,40 @@ <!--琛ㄥ崟淇℃伅--> <el-tab-pane label="琛ㄥ崟淇℃伅" name="1"> <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�--> - <el-col :span="16" :offset="4"> + <el-col :span="16" :offset="4" v-loading="formLoading" class="tab-min-height"> <div v-if="formDataList && formDataList.length > 0"> <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative"> <div v-if="formDataObj.current"> <!-- 褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔 --> - <div style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;"> - <el-button size="small" type="primary" @click="submitForm">纭骞舵彁浜�</el-button> + <div class="op-list"> + <el-button size="small" type="primary" :disabled="submitLoading" v-loading="submitLoading" @click="submitForm">纭骞舵彁浜�</el-button> <el-button size="small" type="primary" disabled @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button> <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">杞姙</el-button> </div> - <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div> + <div class="current">褰撳墠闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div> </div> <div v-else-if="formDataList.length > 1"> <!-- 鍓嶇疆鑺傜偣鍙┏鍥� --> - <div style="position: absolute; top: 4px; right: 4px"> - <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button> + <div class="reject-but"> + <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeName)">椹� 鍥�</el-button> </div> - <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div> + <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div> </div> - <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''"> - <v-form-render :form-data="formDataObj.formJson" :ref="'form' + index"/> + <div v-if="formDataObj != null && formDataObj.formJsonObj != null"> + <v-form-render :form-data="formDataObj.formJsonObj.formJson" :ref="'form' + index"/> </div> <div v-else> <el-alert - title="鑺傜偣鏈粦瀹氳〃鍗�" + title="鏈粦瀹氳〃鍗�" type="warning" :closable="false" > </el-alert> </div> <div v-if="formDataList.length <= 1"> + <div class="before_none">鍓嶇疆闃舵锛�<span>涓嶅瓨鍦ㄥ墠缃樁娈�</span></div> <el-alert - title="涓嶅瓨鍦ㄥ墠缃妭鐐�" + title="涓嶅瓨鍦ㄥ墠缃樁娈�" type="warning" :closable="false" > @@ -54,7 +55,9 @@ </el-tab-pane> <!--娴佺▼鍥�--> <el-tab-pane label="娴佺▼鍥�" name="2"> - <bpmn-viewer :flowData="flowData"/> + <div v-loading="imgLoading" class="tab-min-height"> + <bpmn-viewer :flowData="flowData" :procInsId="procInsId"/> + </div> </el-tab-pane> </el-tabs> <!--閫夋嫨娴佺▼鎺ユ敹浜�--> @@ -70,7 +73,7 @@ <el-dialog - :title="`椹冲洖锛歚 + rejectForm.projectName" + :title="`椹冲洖锛歚 + rejectForm.taskName" :visible.sync="rejectShow" width="950px" :destroy-on-close="true" @@ -85,7 +88,7 @@ </el-input> </div> <div class="opBut"> - <el-button type="danger" size="small" @click="rejectTask">椹冲洖</el-button> + <el-button type="danger" size="small" :disabled="rejectLoading" v-loading="rejectLoading" @click="rejectTask">椹冲洖</el-button> </div> </el-dialog> @@ -152,7 +155,7 @@ </el-form> </div> <div class="opBut"> - <el-button type="danger" size="small" @click="delegation">杞� 鍔�</el-button> + <el-button type="danger" size="small" :disabled="delegationButLoading" v-loading="delegationButLoading" @click="delegation">杞� 鍔�</el-button> </div> </el-dialog> @@ -184,6 +187,11 @@ props: {}, data() { return { + rejectLoading: false, // 椹冲洖鎸夐挳鍔犺浇 + submitLoading: false, // 鎻愪氦鎸夐挳鍔犺浇 + delegationButLoading: false, // 杞姙鎸夐挳鍔犺浇 + formLoading: false, // 鍔犺浇褰撳墠鍠濆墠缃妭鐐规暟鎹� + imgLoading: false, // 鍔犺浇娴佺▼鍥� roleKey: 'role', deptKey: 'dept', multUserKey: 0, @@ -228,6 +236,7 @@ loading: true, deployId: "", // 娴佺▼瀹氫箟缂栧彿 procDefId: "", // 娴佺▼瀹炰緥缂栧彿 + procInsId: "", // 娴佺▼瀹炰緥缂栧彿 formRenderData: {}, formRenderDataList: [], variables: [], // 娴佺▼鍙橀噺鏁版嵁 @@ -243,7 +252,7 @@ rejectForm: { comment: '', // 瀹℃牳鎰忚 taskId: '', - // rejectedTaskDefKey: '' // 琚┏鍥炵殑浠诲姟key + taskName: '' // 琚┏鍥炵殑浠诲姟k } }; }, @@ -255,6 +264,7 @@ this.flowName = this.$route.query && this.$route.query.flowName; // 鍒濆鍖栬〃鍗� this.procDefId = this.$route.query && this.$route.query.procDefId; + this.procInsId = this.$route.query && this.$route.query.procInsId; this.goBackParams = this.$route.query && this.$route.query.goBackParams; // this.getNextFlowNodeByStart(this.deployId); this.getFlowFormData(this.taskId); @@ -303,8 +313,11 @@ cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { + this.delegationButLoading = true taskDelegation(this.delegationForm).then(res => { this.$message.success("宸插彂璧疯浆鍔炵敵璇�") + this.delegationButLoading = false + this.delegationShow = false this.goBack() }) }).catch(() => { @@ -432,19 +445,36 @@ this.delegationShow = true }, rejectTask() { - rejectTask(this.rejectForm).then(res => { - this.rejectShow = false - this.$message.success("椹冲洖鎴愬姛") - }) + this.$confirm(`纭畾瑕侀┏鍥炰换鍔°��${this.rejectForm.taskName}銆戝悧?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.rejectLoading = true + rejectTask(this.rejectForm).then(res => { + this.rejectShow = false + this.$message.success("椹冲洖鎴愬姛") + this.goBack() + }) + }).catch((err) => { + console.log(err) + this.$message({ + type: 'info', + message: '宸插彇椹冲洖浜ゆ搷浣�' + }); + }); + }, - openRejectTask(rejectedTaskDefKey) { - // this.rejectForm.rejectedTaskDefKey = rejectedTaskDefKey; + openRejectTask(taskName) { + this.rejectForm.taskName = taskName; this.rejectForm.taskId = this.taskId; this.rejectShow = true }, handleClick(tab, event) { if (tab.name === '2'){ - flowXmlAndNode({deployId:this.deployId}).then(res => { + this.imgLoading = true + flowXmlAndNode({procInsId:this.procInsId,deployId:this.deployId}).then(res => { + this.imgLoading = false this.flowData = res.data; }) } @@ -452,13 +482,13 @@ /** 娴佺▼琛ㄥ崟鏁版嵁 */ getFlowFormData(taskId) { const params = {taskId: taskId} + this.formLoading = true flowTaskForm(params).then(res => { this.formDataList = res.data if (this.formDataList && this.formDataList.length > 0) { this.$nextTick(() => { this.formDataList.forEach((formDataObj, index) => { let that = this - console.log(eval("that.$refs.form" +index)) if (eval("that.$refs.form" +index) && formDataObj.formJsonObj) { eval("that.$refs.form" +index)[0].setFormJson(formDataObj.formJsonObj.formJson); eval("that.$refs.form" +index)[0].setFormData(formDataObj.formJsonObj); @@ -468,8 +498,8 @@ this.formJson = this.formDataList[0].formJsonObj.formJson } }) - } + this.formLoading = false // if (res.data.formJson) { // // 鍥炴樉琛ㄥ崟 // this.$refs.vFormRef.setFormJson(res.data.formJson); @@ -509,54 +539,86 @@ }, /** 鐢宠娴佺▼琛ㄥ崟鏁版嵁鎻愪氦 */ submitForm() { - let that = this - eval("that.$refs.form" +0)[0].getFormData().then(formData => { - // 鏍规嵁褰撳墠浠诲姟鎴栬�呮祦绋嬭璁¢厤缃殑涓嬩竴姝ヨ妭鐐� todo 鏆傛椂鏈秹鍙婂埌鑰冭檻缃戝叧銆佽〃杈惧紡鍜屽鑺傜偣鎯呭喌 - getNextFlowNodeByStart({deploymentId: this.deployId, variables: formData}).then(res => { - const data = res.data; - if (data) { - this.formData = formData; - if (data.dataType === 'dynamic') { - if (data.type === 'assignee') { // 鎸囧畾浜哄憳 - this.checkSendUser = true; - this.checkType = "single"; - } else if (data.type === 'candidateUsers') { // 鍊欓�変汉鍛�(澶氫釜) - this.checkSendUser = true; - this.checkType = "multiple"; - } else if (data.type === 'candidateGroups') { // 鎸囧畾缁�(鎵�灞炶鑹叉帴鏀朵换鍔�) - this.checkSendRole = true; - } else { // 浼氱 - // 娴佺▼璁捐鎸囧畾鐨� elementVariable 浣滀负浼氱浜哄憳鍒楄〃 - this.multiInstanceVars = data.vars; - this.checkSendUser = true; - this.checkType = "multiple"; - } - this.taskOpen = true; - this.taskTitle = "閫夋嫨浠诲姟鎺ユ敹"; - } else { - if (this.procDefId) { - const param = { - formJson: this.formJson, - } - // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄 - Object.assign(param, formData); - // 瀹屾垚浠诲姟 - completeSubmitFormTask(this.taskId, param).then(res => { - this.$modal.msgSuccess(res.msg); - this.goBack(); - }) - // // 鍚姩娴佺▼骞跺皢琛ㄥ崟鏁版嵁鍔犲叆娴佺▼鍙橀噺 - // definitionStart(this.procDefId, param).then(res => { - // this.$modal.msgSuccess(res.msg); - // this.goBack(); - // }) - } + this.$confirm(`纭畾瑕佹彁浜や换鍔°��${this.processName}銆戝悧?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.submitLoading = true + let that = this + if (eval("that.$refs.form" +0)) { + eval("that.$refs.form" +0)[0].getFormData().then(formData => { + this.formData = formData + const param = { + formJson: this.formJson, } - } - }) - }).catch(error => { - // this.$modal.msgError(error) - }) + // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄 + Object.assign(param, formData); + // 瀹屾垚浠诲姟 + completeSubmitFormTask(this.taskId, param).then(res => { + this.$modal.msgSuccess(res.msg); + this.submitLoading = false + this.goBack(); + }) + }) + } else { + // 娌″叧鑱旇〃鍗曠洿鎺ヤ紶绌� + completeSubmitFormTask(this.taskId, {}).then(res => { + this.$modal.msgSuccess(res.msg); + this.submitLoading = false + this.goBack(); + }) + } + + // let that = this + // eval("that.$refs.form" +0)[0].getFormData().then(formData => { + // // 鏍规嵁褰撳墠浠诲姟鎴栬�呮祦绋嬭璁¢厤缃殑涓嬩竴姝ヨ妭鐐� todo 鏆傛椂鏈秹鍙婂埌鑰冭檻缃戝叧銆佽〃杈惧紡鍜屽鑺傜偣鎯呭喌 + // getNextFlowNodeByStart({deploymentId: this.deployId, variables: formData}).then(res => { + // const data = res.data; + // if (data) { + // this.formData = formData; + // if (data.dataType === 'dynamic') { + // if (data.type === 'assignee') { // 鎸囧畾浜哄憳 + // this.checkSendUser = true; + // this.checkType = "single"; + // } else if (data.type === 'candidateUsers') { // 鍊欓�変汉鍛�(澶氫釜) + // this.checkSendUser = true; + // this.checkType = "multiple"; + // } else if (data.type === 'candidateGroups') { // 鎸囧畾缁�(鎵�灞炶鑹叉帴鏀朵换鍔�) + // this.checkSendRole = true; + // } else { // 浼氱 + // // 娴佺▼璁捐鎸囧畾鐨� elementVariable 浣滀负浼氱浜哄憳鍒楄〃 + // this.multiInstanceVars = data.vars; + // this.checkSendUser = true; + // this.checkType = "multiple"; + // } + // this.taskOpen = true; + // this.taskTitle = "閫夋嫨浠诲姟鎺ユ敹"; + // } else { + // if (this.procDefId) { + // const param = { + // formJson: this.formJson, + // } + // // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄 + // Object.assign(param, formData); + // // 瀹屾垚浠诲姟 + // completeSubmitFormTask(this.taskId, param).then(res => { + // this.$modal.msgSuccess(res.msg); + // this.goBack(); + // }) + // } + // } + // } + // }) + // }) + }).catch((err) => { + console.log(err) + this.$message({ + type: 'info', + message: '宸插彇娑堟彁浜ゆ搷浣�' + }); + }); + }, /** 閲嶇疆琛ㄥ崟 */ resetForm() { @@ -633,7 +695,6 @@ width: 800px; padding: 15px; } - .clearfix:before, .clearfix:after { display: table; @@ -642,20 +703,16 @@ .clearfix:after { clear: both } - .box-card { width: 100%; margin-bottom: 20px; } - .el-tag + .el-tag { margin-left: 10px; } - .my-label { background: #E1F3D8; } - .form-warp { min-width: 700px; padding: 20px; @@ -663,4 +720,42 @@ margin-bottom: 20px; box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em; } +.before { + span { + color: #F56C6C + } + margin-bottom: 15px; + color: #E6A23C +} +.before_none { + span { + color: #F56C6C + } + margin-bottom: 15px; + margin-top: 15px; + color: #E6A23C +} +.reject-but { + position: absolute; + top: 4px; + right: 4px +} +.current { + span { + color: #409EFF + } + margin-bottom: 15px; + color: #E6A23C +} +.op-list { + position: absolute; + top: 4px; + right: 4px; + display: flex; + justify-content: center; + align-items: center; +} +.tab-min-height { + min-height: 500px; +} </style> -- Gitblit v1.8.0