import Bridge from '../components-control/util/bridge' import SelectApprovers from '../components-control/select-approvers.vue' import { compareData } from "../components-control/util/dataChange" export default { execute: function (bill, param) { if (bill) { if (!bill.getGlobalParam('reviewParam') || !bill.getGlobalParam('reviewParam').taskId) { GMS.$hideContainer.$Message.error('请配置审批轨迹') return } if (!this.isApproverEqulloginer(bill, param)) { GMS.$hideContainer.$Message.error('单据审批状态已发生变化,请刷新界面') return } let curTagId = window.nros.context.getCurrTag(); let oldObj = curTagId && GMS.oldBillDataMap[curTagId]?GMS.oldBillDataMap[curTagId]:GMS.oldBillData; let flag = compareData(oldObj, bill.getBuillData()) || bill.getGlobalParam("noRunTimeFormula"); if (flag) { this.approvalLogical(bill, param, this) } else { bill.runFormulaCheckData(param, (msg) => { if (msg.length == 0) { GMS.$hideContainer.$Modal.confirm({ title: "信息提示", content: "信息发生变化, 是否保存", onOk: () => { this.saveLogical(bill, param, {data: bill.getBuillData(), detailData: []}, this) }, onCancel: () => { } }) } else { GMS.vbus.$Modal.warning({ title: "信息错误", content: msg, }); } }); } } else { GMS.$hideContainer.$Message.error('缺少参数'); } }, saveLogical: function (bill, param, postData) { let url = `/rbc/bill/action/executed/${param.define}/bill.Basic.save?transmission=total` GMS.$http.post(url, JSON.stringify(postData), { headers: { post: { "Content-Type": "application/json", }, }, }) .then((response) => { if (response.data.code == 0) { let curTagId = window.nros.context.getCurrTag(); if (curTagId) { GMS.oldBillDataMap[curTagId] = bill.getBuillData() } else { GMS.oldBillData = bill.getBuillData() } this.approvalLogical(bill, param) } else { response.data.message && GMS.vbus.$Message.error({ content: response.data.message, duration: 3 }); } }) }, approvalLogical: function (bill, param) { let taskId = bill.getGlobalParam('reviewParam').taskId; bill.setControlsSate(param["_control_name_"], "enable", false) let selectedApprovers = [] window.GMS.$http.get(`/bpm/bill/selectApprover/ApproverList/${taskId}`).then((res) => { if (res.data.code == 204) { this.executeApproval(bill, param) return } else if (res.data.code != 200) { bill.setControlsSate(param["_control_name_"], "enable", true) GMS.$hideContainer.$Message.error(res.data.msg || '提交失败,请联系系统管理员'); return } bill.setControlsSate(param["_control_name_"], "enable", true) const nodeData = res.data.ApproverVo const optionList = [...nodeData.approvers] if (optionList.length == 0) { GMS.$hideContainer.$Message.error('未找到下一节点的审批人') return } GMS.$hideContainer.$Modal.confirm({ width: 700, render: (h) => { return h( SelectApprovers, { props: { optionList, }, on: { 'on-change': (val) => { selectedApprovers = val } } } ) }, onOk: () => { window.GMS.$http.post( '/bpm/bill/selectApprover/addApprovers', { ...nodeData, approvers: selectedApprovers, } ).then(() => { this.executeApproval(bill, param) }).catch(() => { GMS.$hideContainer.$Message.error('选择审批人发生错误') }) }, onCancel: () => { } }); }).catch(() => { GMS.$hideContainer.$Message.error('未找到下一节点的审批人'); }) }, executeApproval: function(bill, param) { if (param.param.actions) { let saveParam = { actions: param.param.actions } bill.executeServerAction(saveParam, function (code, data) { if (code === 200) { this.approval(bill, param); } else { bill.setControlsSate(param["_control_name_"], "enable", true) if (data.message.includes('还款金额不能大于未还金额')) { GMS.$hideContainer.$message.error("还款金额不能大于未还金额!"); } else { GMS.$hideContainer.$message.error("操作异常请联系管理员"); } } }.bind(this)); } else { this.approval(bill, param); } }, approval: function (bill, param) { let taskId = bill.getGlobalParam('reviewParam').taskId; let comments = bill.getGlobalParam('reviewParam').suggestions ? bill.getGlobalParam('reviewParam').suggestions : ""; GMS.$http.post('/rbc/workflow/approve/completed/' + taskId + '?result=1&comments=' + comments).then( function (response) { if (response.status == 200 || response.statusText == 'OK') { if (response.data.code != 0) { GMS.$hideContainer.$Message.error(response.data.message) return } bill.setControlsSate(param["_control_name_"], "enable", true) bill.setControlsSate(param["_control_name_"], "loading", false) GMS.$hideContainer.$Message.success('审批成功!') GMS.vbus.$emit('change-form-state', { state: 'readOnly'}) if ( window.osConfig.appOpenMode && window.osConfig.appOpenMode == "apploader" ) { GMS.$hideContainer.$portalAPI.emit('entry-tag-close') } else if (Bridge.vm) { Bridge.vm.modal_visible = false } window.GMS.vbus.$emit('refresh-workflow-job-view') } }.bind(this) ) .catch( function (error) { bill.setControlsSate(param["_control_name_"], "enable", true) bill.setControlsSate(param["_control_name_"], "loading", false) GMS.$hideContainer.$Message.error('工作流配置错误,请联系管理员') }.bind(this) ); }, isApproverEqulloginer: function (bill, param) { const loginer = GMS.userContext && GMS.userContext.id let approver = [] $.ajax({ type: "GET", url: `${osConfig.baseUrl}/rbc/workflow/confirmApprover/getUserId/${bill.getGlobalParam('reviewParam').taskId}`, async: false, contentType: "application/json;", beforeSend: function (request) { request.setRequestHeader("Authorization", GMS.util.getAuthorization()); }, success: function (data1) { approver = data1.ownerIds }, error: function () { } }) return approver.includes(loginer) } }