{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/badp-bcxin-web-5.x-vue/src/components/form_flowpanel.vue?vue&type=script&lang=js&","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/src/components/form_flowpanel.vue","mtime":1734060504773},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/babel-loader/lib/index.js","mtime":315532800000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/vue-loader/lib/index.js","mtime":1655715099000}],"contextDependencies":[],"result":["\nimport form_processHosting_flowpanel from \"@/components/form_processHosting_flowpanel.vue\";\nimport API from \"@/api.js\";\nexport default {\n props: [\n \"stateId\",\n \"act\",\n \"openParams\",\n \"buildFormData\",\n \"approverName\",\n \"submitTo\",\n \"nextUserId\",\n \"approvers\",\n \"subFlowApproverData\",\n \"subFlowGroup\",\n \"newHostOrCohostList\",\n \"cCname\",\n \"subFlowGroupNum\",\n ],\n components: {\n form_processHosting_flowpanel,\n },\n\n watch: {\n submitTo() {\n this.newSelectData();\n },\n subFlowApproverData() {\n this.setSubflowselectData();\n },\n\n //流程启动下拉框选择类型\n selectProcessNode() {\n //我也不知道启动流程是不是有多个下拉框的,先当他是一个吧\n for (let i = 0; i < this.processNodes.length; i++) {\n if (this.selectProcessNode == this.processNodes[i].id) {\n this.processNodeList = this.processNodes[i].firstNodeList;\n if (this.processNodeList.length > 0) {\n this.selectProcessNodeUserRadio = this.processNodeList[0].id;\n }\n }\n }\n },\n },\n\n data: function () {\n return {\n radio: 3,\n input: \"\",\n nextNodeIds: undefined,\n selectData: [],\n isSplit: true,\n currentAct: true,\n isOrSuggest: false,\n attitude: \"\",\n showInput: false, //是否展示添加{{$t('view.fre_suggesst')}}框\n showEditFirst: false, //展示编辑意见框\n showDelAndEdit: false,\n allSuggests: [],\n showEditSecond: false,\n inputSecond: \"\",\n opinionId: \"\", //更新意见信息的ID\n\n /*\n 手签\n */\n points: [],\n canvasTxt: null,\n startX: 0,\n startY: 0,\n moveY: 0,\n moveX: 0,\n endY: 0,\n endX: 0,\n isDown: false,\n\n flowId: \"\", //当前流程ID\n isAppentCirculator: \"\", //是否抄送\n isAppentData: {},\n currentNodeId: \"\",\n isToPerson: \"\",\n firstSubmission: true, //第一次点击提交禁止按钮再次点击\n existCanvas: false, //是否存在手写签名\n\n backNodes: \"\", //流程回退节点\n selectBackNodes: \"\",\n nodesList: [], //催办节点数据\n selectNodesId: [],\n processNodes: [], //流程启动按钮的节点\n selectProcessNode: \"\", //流程启动按钮下拉框选择的值\n processNodeList: [],\n selectProcessNodeUser: [],\n selectProcessNodeUserRadio: \"\",\n isMoreCurrentNode: \"\",\n htmlExparams: \"\",\n };\n },\n mounted() {\n if (this.act.type == 48 || this.act.type == 33) {\n this.setNodes(this.act.type);\n } else {\n this.getSubmission();\n }\n this.getSuggest();\n this.show();\n },\n methods: {\n //结束自由流程\n endTheFreeFlow() {\n let appId = this.openParams.appId;\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n attitude: this.attitude,\n docId: docId,\n document: formData,\n formId: formId,\n id: id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n this.$api.completeFreeFlow(appId, docId, document, {\n onSucess: (res) => {\n if (res.data.errcode == 0) {\n status = \"SUCCESS\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: res.data.data,\n message: \"\",\n type: \"success\",\n });\n }\n },\n });\n },\n\n setSubflowselectData() {\n for (let i = 0; i < this.selectData.length; i++) {\n if (this.selectData[i].id == this.subFlowApproverData.nodeid) {\n this.selectData[i].approverName = this.approverName;\n this.selectData[i].subFlowApproverData = this.subFlowApproverData;\n }\n }\n this.$forceUpdate(); //重新渲染数据\n },\n\n //流程启动\n startProcess() {\n if (!this.selectProcessNode) {\n this.$message({\n message: this.$t('view.noselect_data'),\n type: \"warning\",\n });\n } else {\n if (\n this.selectProcessNodeUser.length <= 0 &&\n !this.selectProcessNodeUserRadio\n ) {\n this.$message({\n message: this.$t('view.noselect_data'),\n type: \"warning\",\n });\n } else {\n let nextId = \"\";\n if (this.selectProcessNodeUserRadio) {\n nextId = this.selectProcessNodeUserRadio;\n } else {\n if (this.selectProcessNodeUser.length > 0) {\n for (let i = 0; i < this.selectProcessNodeUser.length; i++) {\n nextId += this.selectProcessNodeUser[i] + \";\";\n }\n }\n }\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let appId = this.openParams.appId;\n let document = {\n applicationId: appId,\n actId: this.act.id,\n docId: docId,\n document: formData,\n flowId: this.selectProcessNode,\n formId: formId,\n id: id,\n nextId,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n this.$api.InitiateWorkFlow(appId, docId, document, {\n onSucess: (response) => {\n let status;\n if (response.data.errcode == 0) {\n status = \"SUCCESS\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: response.data.data,\n message: \"\",\n type: \"success\",\n });\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: response.data.errmsg,\n message: \"\",\n type: \"error\",\n });\n }\n },\n });\n }\n }\n },\n\n //催办提交\n remind() {\n let appId = this.openParams.appId;\n let pJson = this.getSignImageData();\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n currentNodeId: this.currentNodeId,\n docId: docId,\n document: formData,\n formId: formId,\n id: id,\n nodertIds: this.selectNodesId,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n if (pJson) {\n //手写签名\n document.signatureJson = JSON.stringify(pJson);\n }\n document.attitude = this.attitude;\n this.$api.remindFlow(appId, docId, document, {\n onSucess: (response) => {\n let status;\n if (response.data.errcode == 0) {\n status = \"SUCCESS\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: response.data.data,\n message: \"\",\n type: \"success\",\n });\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: response.data.errmsg,\n message: \"\",\n type: \"error\",\n });\n }\n },\n });\n },\n //催办数据\n setNodes(type) {\n let appId = this.openParams.appId;\n if (type == 48) {\n let obj = JSON.parse(this.act.reminderNodesData);\n this.nodesList = obj.data;\n } else if (type == 33) {\n //流程启动\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n docId: docId,\n document: formData,\n formId: formId,\n id: id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n this.$api.getPanelsInitiate(appId, docId, document, {\n onSucess: (res) => {\n this.processNodes = res.data.data;\n },\n });\n }\n },\n //补签提交\n endorsement(val) {\n if (val == 56) {\n let appId = this.openParams.appId;\n let instanceId = this.approvers[0].instanceId;\n let attitude = this.attitude;\n this.$api.supplement(appId, instanceId, attitude, {\n onSucess: (response) => {\n let act = response.data.data;\n let status = \"SUCCESS\";\n if (response.data.errcode == 0) {\n this.$notify({\n title: response.data.data,\n message: \"\",\n type: \"success\",\n });\n this.$emit(\"closePopup\", status);\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n //this.$emit(\"closePopup\", status);\n let prompt = response.data.errors[0].errmsg\n ? response.data.errors[0].errmsg\n : response.data.errmsg;\n this.$notify.error({\n title: response.data.errmsg,\n message: response.data.errmsg,\n });\n }\n //this.$emit(\"action\", act);\n },\n });\n } else if ((val = 55)) {\n let attitude = this.attitude;\n let appId = this.openParams.appId;\n let instanceId = this.approvers[0].instanceId;\n this.$api.review(appId, instanceId, attitude, {\n onSucess: (response) => {\n let act = response.data.data;\n let status = \"SUCCESS\";\n if (response.data.errcode == 0) {\n this.$notify({\n title: response.data.data,\n message: \"\",\n type: \"success\",\n });\n this.$emit(\"closePopup\", status);\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n //this.$emit(\"closePopup\", status);\n let prompt = response.data.errors[0].errmsg\n ? response.data.errors[0].errmsg\n : response.data.errmsg;\n this.$notify.error({\n title: response.data.errmsg,\n message: response.data.errmsg,\n });\n }\n //this.$emit(\"action\", act);\n },\n });\n }\n },\n newSelectData() {\n for (let i = 0; i < this.selectData.length; i++) {\n let _st = this.submitTo;\n let _sd = this.selectData;\n if (_sd[i].id == _st.nodeid) {\n if (!_st.isAppentCirculator) {\n _sd[i].approverName = this.approverName;\n if(_st.row && _st.row.length > 0) {\n _sd[i].submitTo = _st;\n }else {\n _sd[i].submitTo = '';\n }\n \n }\n }\n }\n if (this.submitTo.isAppentCirculator) {\n this.isAppentData.approverName = this.cCname; //this.approverName;\n this.isAppentData.circulatorInfo = this.submitTo.userids;\n this.isAppentData.submitTo = this.submitTo;\n }\n this.$forceUpdate(); //重新渲染数据\n },\n\n stowPopup() {\n // this.approverName = '';\n this.$emit(\"closePopup\");\n },\n //指定审批人\n selectApprovers(\n isToPerson,\n nodeid,\n submitTo,\n approverNumType,\n isAppentCirculator,\n groupNum\n ) {\n if ((groupNum && groupNum > 1) || groupNum <= -1) {\n //子流程分组\n let approversObj = {\n isToPerson: isToPerson,\n nodeid: nodeid,\n groupNum: groupNum,\n };\n if (isAppentCirculator) {\n approversObj.isAppentCirculator = isAppentCirculator;\n }\n let saveApprover = submitTo;\n let subFlowGroup = [];\n if (this.subFlowGroup && this.subFlowGroup.length > 0) {\n subFlowGroup = [...this.subFlowGroup];\n }\n let isSubFlow = true;\n this.$emit(\n \"showSubFlow\",\n approversObj,\n this.flowId,\n \"\",\n saveApprover,\n approverNumType,\n isAppentCirculator,\n groupNum,\n subFlowGroup,\n isSubFlow\n );\n } else {\n let approversObj = {\n isToPerson: isToPerson,\n nodeid: nodeid,\n };\n if (isAppentCirculator) {\n approversObj.isAppentCirculator = isAppentCirculator;\n }\n let saveApprover = submitTo;\n this.$emit(\n \"action\",\n approversObj,\n this.flowId,\n \"\",\n saveApprover,\n approverNumType,\n isAppentCirculator\n ); //调用父组件designatedApprover()方法\n }\n },\n\n //流程回退执行前\n rollBack() {\n let appId = this.openParams.appId;\n if (this.act.workFlowType == 1) {\n //自由流程\n let pJson = this.getSignImageData();\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n docId: docId,\n document: formData,\n formId: formId,\n id: id,\n nextUserId: this.selectBackNodes,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n document.attitude = this.attitude;\n if (pJson) {\n //手写签名\n document.signatureJson = JSON.stringify(pJson);\n }\n this.$api.backFreeFlow(appId, docId, document, {\n onSucess: (response) => {\n let status;\n if (response.data.errcode == 0) {\n status = \"SUCCESS\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: response.data.data,\n message: \"\",\n type: \"success\",\n });\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n this.$emit(\"closePopup\", status);\n this.$notify({\n title: response.data.data,\n message: \"\",\n type: \"error\",\n });\n }\n },\n });\n } else {\n if (this.selectBackNodes) {\n let pJson = this.getSignImageData();\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n currentNodeId: this.currentNodeId,\n docId: docId,\n document: formData,\n flowId: this.flowId,\n formId: formId,\n id: id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n this.$api.runBeforeActionScript(\n appId,\n this.act.id,\n document,\n this.act.type,\n '', //treedocid\n '', //flowType\n {\n onSucess: (response) => {\n if (response.data.errcode == 0) {\n this.flowRollBack(document, pJson);\n }\n },\n }\n );\n } else {\n let status = \"ERROR\";\n this.$message({\n message: this.$t('view.noselect_people'),\n type: \"warning\",\n });\n }\n }\n },\n\n //流程回退\n flowRollBack(allData, pJson) {\n let formData = this.buildFormData;\n let appId = this.openParams.appId;\n let docId = formData.id;\n let document = allData;\n console.log(\"document-1-->\", document);\n if (pJson) {\n //手写签名\n document.signatureJson = JSON.stringify(pJson);\n }\n if (this.nextNodeIds instanceof Array) {\n //多选\n document.nextNodeIds = this.nextNodeIds;\n } else {\n // 单选\n document.nextNodeIds = [];\n document.nextNodeIds.push(this.selectBackNodes);\n }\n document.attitude = this.attitude;\n document.subFlowApprover = []; //多种流程处理方式,此数据为完善未完善\n document.submitTo = []; //多种流程处理方式,此数据为完善未完善\n this.documentData = document;\n API.backFlow(appId, docId, document, {\n onSucess: (response) => {\n let status;\n if (response.data.errcode == 0) {\n status = \"SUCCESS\";\n // this.$emit(\"closePopup\", status);\n this.$notify({\n title: this.$t('success'),\n message: response.data.data,\n type: \"success\",\n });\n this.runAfterAction(status);\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n this.$emit(\"closePopup\", status);\n ;\n }\n },\n });\n },\n\n //取消自由流程选中的用户\n onTabClose(id) {\n this.approverName = \"\";\n this.nextUserId = \"\";\n },\n\n //自由流程选择用户\n select() {\n let isFreeFlow = true;\n this.$emit(\"action\", \"\", \"\", isFreeFlow); //调用父组件designatedApprover()方法\n },\n\n //保存重新编辑的意见\n updateSuggestion() {\n console.log(\"更新编辑的数据-->\");\n console.log(this.inputSecond);\n let opinion = this.inputSecond;\n if(!opinion) {\n this.$message({\n message: this.$t('view.notnull_ss'),\n type: 'warning'\n });\n }else {\n let userId = this.$store.state.userId,\n opId = this.opinionId;\n const employeeId = localStorage.getItem(\"employeeId\") || this.$store.state.userId ;\n API.editMostUseSuggestion(employeeId, opId, opinion, {\n onSucess: (response) => {\n if (response.data.data) {\n let id = response.data.data.id;\n let content = response.data.data.content;\n for (let i = 0; i < this.allSuggests.length; i++) {\n if (this.allSuggests[i].id == id) {\n this.allSuggests[i].content = content;\n this.inputSecond = \"\";\n }\n }\n }\n },\n });\n }\n },\n //重新编辑意见\n editSuggestion(id, content) {\n this.inputSecond = content;\n this.opinionId = id;\n },\n //删除意见\n deleteSuggestion(id) {\n let userId = this.$store.state.userId;\n const employeeId = localStorage.getItem(\"employeeId\") || this.$store.state.userId ;\n let opId = id;\n API.deleteMostUseSuggestion(employeeId, opId, {\n onSucess: (response) => {\n console.log(response.data.data);\n //后台返回500,未执行以下步骤\n if (response.data.data) {\n let delId = response.data.data.id;\n let allSug = this.allSuggests;\n for (let i = 0; i < allSug.length; i++) {\n if (allSug[i].id == delId) {\n allSug.splice(i, 1);\n i--;\n }\n }\n this.allSuggest = allSug;\n }\n },\n });\n },\n\n //添加意见\n addSuggestion() {\n console.log(this.input);\n let opinion = this.input;\n const employeeId = localStorage.getItem(\"employeeId\") || this.$store.state.userId ;\n API.AddMostUseSuggestion(employeeId, opinion, {\n onSucess: (response) => {\n console.log(response.data.data);\n let newSuggest = response.data.data;\n this.allSuggests.push(newSuggest);\n this.input = \"\";\n },\n });\n },\n\n // 选中的数据放进文本框中\n putData(content) {\n if (this.showDelAndEdit == false) {\n if (!this.attitude) {\n this.attitude = content;\n } else if (this.attitude) {\n this.attitude = this.attitude + \",\" + content;\n }\n }\n },\n\n editSuggest() {\n this.showInput = true;\n this.showEditFirst = false;\n this.showEditSecond = true;\n this.showDelAndEdit = true;\n },\n\n cancelAddSuggest(num) {\n if (num == 1) {\n this.showInput = false;\n this.showDelAndEdit = false;\n this.showEditFirst = false;\n } else if (num == 2) {\n this.showInput = false;\n this.showDelAndEdit = false;\n this.showEditSecond = false;\n }\n },\n\n showInputBox() {\n this.showInput = true;\n this.showEditFirst = true;\n },\n\n showEditBox() {},\n\n //清除画布数据\n clear() {\n this.canvasTxt.clearRect(\n 0,\n 0,\n this.canvasTxt.canvas.width,\n this.canvasTxt.canvas.height\n );\n this.existCanvas = false;\n },\n show() {\n this.canvas = this.$refs.canvas; //指定canvas\n this.canvasTxt = this.canvas.getContext(\"2d\"); //设置2D渲染区域\n // this.canvasTxt.setBackground(Color.red);\n this.canvasTxt.fillStyle = \"#F9F9F9\";\n this.canvasTxt.fillRect(0, 0, 500, 125);\n },\n canvasDown(ev) {\n ev = ev || event;\n ev.preventDefault();\n if (1) {\n let obj = {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n this.startX = obj.x;\n this.startY = obj.y;\n this.canvasTxt.beginPath();\n this.canvasTxt.moveTo(this.startX, this.startY);\n this.canvasTxt.lineTo(obj.x, obj.y);\n this.canvasTxt.stroke();\n this.canvasTxt.closePath();\n this.points.push(obj);\n this.isDown = true;\n }\n },\n canvasMove(ev) {\n ev = ev || event;\n ev.preventDefault();\n if (this.isDown) {\n let obj = {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n this.moveY = obj.y;\n this.moveX = obj.x;\n this.canvasTxt.beginPath();\n this.canvasTxt.moveTo(this.startX, this.startY);\n this.canvasTxt.lineTo(obj.x, obj.y);\n this.canvasTxt.stroke();\n this.canvasTxt.closePath();\n this.startY = obj.y;\n this.startX = obj.x;\n this.points.push(obj);\n }\n },\n canvasUp(ev) {\n ev = ev || event;\n ev.preventDefault();\n if (1) {\n let obj = {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n this.canvasTxt.beginPath();\n this.canvasTxt.moveTo(this.startX, this.startY);\n this.canvasTxt.lineTo(obj.x, obj.y);\n this.canvasTxt.stroke();\n this.canvasTxt.closePath();\n this.points.push(obj);\n this.points.push({ x: -1, y: -1 });\n this.isDown = false;\n }\n },\n canvasLeave(e) {\n console.log(e);\n this.existCanvas = true;\n this.canvasMoveUse = false;\n },\n\n getSignImageData() {\n if (this.existCanvas) {\n //判断是否存在手写签名\n let pJson;\n let canvas = document.getElementById(\"canvas\");\n let signature = canvas.toDataURL(\"image/png\");\n let str = signature.replace(\"data:image/png;base64,\", \"\");\n pJson = {\n type: \"image/png;base64\",\n data: str,\n };\n return pJson;\n } else {\n return false;\n }\n },\n\n //提交\n onSubmit() {\n let appId = this.openParams.appId;\n let arrayIuput = document.getElementsByTagName(\"input\");\n let arrayTextA = document.getElementsByTagName(\"textarea\");\n let htmlArr = [];\n if (arrayIuput.length > 0) {\n for (let i = 0; i < arrayIuput.length; i++) {\n let obj = {};\n if (\n arrayIuput[i].hasAttribute(\"storage\") &&\n arrayIuput[i].getAttribute(\"storage\") == \"exparams\"\n ) {\n if (arrayIuput[i].type == \"radio\" && arrayIuput[i].checked) {\n obj.id = arrayIuput[i].getAttribute(\"name\");\n obj.value = arrayIuput[i].value;\n htmlArr.push(obj);\n } else if (arrayIuput[i].type != \"radio\") {\n obj.id = arrayIuput[i].getAttribute(\"name\");\n obj.value = arrayIuput[i].value;\n htmlArr.push(obj);\n }\n }\n }\n }\n if (arrayTextA.length > 0) {\n for (let i = 0; i < arrayTextA.length; i++) {\n let obj = {};\n if (\n arrayTextA[i].hasAttribute(\"storage\") &&\n arrayTextA[i].getAttribute(\"storage\") == \"exparams\"\n ) {\n obj.id = arrayTextA[i].getAttribute(\"name\");\n obj.value = arrayTextA[i].value;\n htmlArr.push(obj);\n }\n }\n }\n let exparams = {};\n if (htmlArr.length > 0) {\n for (let i = 0; i < htmlArr.length; i++) {\n exparams[htmlArr[i].id] = htmlArr[i].value;\n }\n }\n this.htmlExparams = exparams;\n\n if (this.selectData.length > 0 || this.act.workFlowType == 1) {\n if (this.firstSubmission) {\n //当提交时,确定按钮禁止再次点击提交\n this.firstSubmission = false;\n let status = \"\";\n if (this.isToPerson) {\n //当要选择指定审批人时\n if (this.isSplit) {\n //多选\n if (this.nextNodeIds.length > 0) {\n for (let i = 0; i < this.nextNodeIds.length; i++) {\n for (let j = 0; j < this.selectData.length; j++) {\n if (this.nextNodeIds[i] == this.selectData[j].id) {\n if (this.selectData[j].type != \"CompleteNode\") {\n if (!this.selectData[j].submitTo) {\n if (this.selectData[j].isToPerson) {\n this.$message({\n showClose: true,\n message: this.$t('view.noselect_approver'),\n type: 'warning'\n });\n this.firstSubmission = true;\n //this.$emit(\"closePopup\", status);\n return;\n }\n }\n }\n }\n }\n }\n } else if (this.nextNodeIds.length == 0) {\n this.$message.error(this.$t('placeholder.select')+this.$t('label.approval_node'));\n this.firstSubmission = true;\n //this.$emit(\"closePopup\", status);\n return;\n }\n } else {\n //单选\n if (this.nextNodeIds) {\n for (let y = 0; y < this.selectData.length; y++) {\n if (this.nextNodeIds == this.selectData[y].id) {\n if (this.selectData[y].type != \"CompleteNode\") {\n if (\n !this.selectData[y].submitTo &&\n !this.selectData[y].subFlowApproverData\n ) {\n if (this.selectData[y].isToPerson) {\n this.$message({\n showClose: true,\n message: this.$t('view.noselect_approver'),\n type: 'warning'\n });\n this.firstSubmission = true;\n // this.$emit(\"closePopup\", status);\n return;\n }\n }\n }\n }\n }\n } else {\n this.$emit(\"closePopup\", status);\n return;\n }\n }\n }\n\n if (this.nextNodeIds instanceof Array) {\n //多选但没有指定审批人没有选择审批人时\n if (this.nextNodeIds.length < 1) {\n return;\n }\n }\n\n if (this.act.workFlowType == 1) {\n if (!this.nextUserId) {\n this.$message({\n message: this.$t('view.noselect_approver'),\n type: 'warning'\n });\n this.firstSubmission = true;\n // status = \"ERROR\";\n // this.$emit(\"closePopup\", status);\n return;\n }\n }\n\n let pJson = this.getSignImageData();\n //let formData = this.$parent.$parent.$parent.$parent.$parent.buildFormData();\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n if (this.htmlExparams) {\n formData.exparams = this.htmlExparams;\n }\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n currentNodeId: this.currentNodeId,\n docId: docId,\n document: formData,\n flowId: this.flowId,\n formId: formId,\n id: id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n if (this.isMoreCurrentNode) {\n document.isMoreCurrentNode = this.isMoreCurrentNode;\n }\n if (this.isAppentCirculator) {\n //判断是否抄送\n if (this.isAppentData.circulatorInfo) {\n document.circulatorInfo = this.isAppentData.circulatorInfo;\n }\n }\n\n this.documentData = document; //保存值放到执行后脚本\n document.attitude = this.attitude;\n let isRelate = \"\";\n let _flowType = this.act.flowType; //提交为80\n\n //非自由流程\n document.subFlowApprover = []; //多种流程处理方式,此数据为完善未完善\n document.submitTo = [];\n //流程单选或多选\n if (this.nextNodeIds instanceof Array) {\n //多选\n let checkArr = [];\n document.nextNodeIds = this.nextNodeIds;\n for (let j = 0; j < this.nextNodeIds.length; j++) {\n for (let y = 0; y < this.selectData.length; y++) {\n if (\n this.nextNodeIds[j] == this.selectData[y].id &&\n this.selectData[y].submitTo\n ) {\n delete this.selectData[y].submitTo.row;\n document.submitTo.push(this.selectData[y].submitTo);\n if (this.selectData[y].type == \"SubFlow\") {\n //主子流程\n let checkObj = Object.assign({}, this.selectData[y].submitTo);\n delete checkObj.isToPerson;\n checkArr.push(checkObj);\n }\n }\n }\n }\n document.subFlowApprover = checkArr;\n } else { // 单选\n document.nextNodeIds = [];\n if(this.nextNodeIds) {\n document.nextNodeIds.push(this.nextNodeIds);\n }\n //let arr = [];\n let subArr = [];\n let checkArr = [];\n for (let i = 0; i < this.selectData.length; i++) {\n if (\n this.selectData[i].submitTo &&\n this.selectData[i].submitTo.nodeid == this.nextNodeIds\n ) {\n delete this.selectData[i].submitTo.row;\n subArr.push(this.selectData[i].submitTo);\n if (this.selectData[i].type == \"SubFlow\") { // //主子流程\n let s = this.selectData[i];\n if(s.groupNum == -2) { //groupNum有-1,-2和>0, 当-1时无限制添加分组,-2是每个用户都是单独的分组\n let checkSubmit = s.submitTo;\n let approver = [];\n let subFlowUserId = '';\n if(s.subFlowApproverData && s.subFlowApproverData.approver && s.subFlowApproverData.approver.length > 0) {\n s.subFlowApproverData.approver[0].userids.forEach(el => {\n subFlowUserId += el + \";\";\n });\n }\n if(subFlowUserId) {\n checkSubmit.userids = subFlowUserId;\n }\n if(checkSubmit.userids) {\n let list = checkSubmit.userids.replace(/^(\\s|;)+|(\\s|;)+$/g, '')\n let useridList = list.split(\";\");\n for(let z=0; z 0) {\n let approvers = [];\n for (let k = 0; k < arr.length; k++) {\n let obj = {};\n obj.position = k + 1;\n let id = [];\n id.push(arr[k]);\n obj.userids = id;\n approvers.push(obj);\n }\n let subFlow = {};\n subFlow.approver = approvers;\n subFlow.nodeid = subflowData.nodeid;\n document.subFlowApprover.push(subFlow);\n console.log(\"subflowData--->\", subflowData);\n console.log(\"document--->\", document);\n }\n } else {\n subflowData = Object.assign(\n {},\n this.selectData[i].subFlowApproverData\n );\n for (let j = 0; j < subflowData.approver.length; j++) {\n delete subflowData.approver[j].rows;\n }\n document.subFlowApprover.push(subflowData);\n }\n }\n }\n }\n\n this.$api.submitRunBeforeActionScript(\n appId,\n this.act.id,\n document,\n docId,\n document.viewId,\n formId,\n document.templateForm,\n document.parentId,\n isRelate,\n _flowType,\n {\n onSucess: (response) => {\n if (response.data.errcode == 0) {\n if (response.data.data) {\n let resData = response.data.data;\n if(!resData.type) { //没有type值,但是有返回数据,把数据放进document\n if(resData.changedField) {\n // let items = document.document.items;\n let resDataItem = resData.changedField;\n if(resDataItem) {\n for(let i=0; i {\n this.submitFlowData(document, pJson);\n }).catch(() => {\n \n });\n }else {\n this.$notify.error({\n title: response.data.data.content,\n message: \"\",\n });\n status = \"ERROR\";\n this.$emit(\"closePopup\", status);\n }\n } else {\n this.submitFlowData(document, pJson);\n }\n }\n },\n }\n );\n }\n }\n },\n\n submitFlowData(allData, pJson) {\n //let formData = this.$parent.$parent.$parent.$parent.$parent.buildFormData();\n let appId = this.openParams.appId;\n let formData = this.buildFormData;\n let docId = formData.id;\n let document = allData;\n if (pJson) {\n //手写签名\n document.signatureJson = JSON.stringify(pJson);\n }\n if (this.htmlExparams) {\n document.document.exparams = this.htmlExparams;\n }\n document.attitude = this.attitude;\n if (this.act.workFlowType == 1) {\n //自由流程\n document.nextUserId = this.nextUserId;\n delete document.currentNodeId;\n delete document.flowId;\n API.submitFreeFlow(appId, docId, document, {\n onSucess: (response) => {\n this.firstSubmission = true;\n let status;\n let prompt;\n if (response.data.errcode == 0) {\n status = \"SUCCESS\";\n prompt = response.data.data;\n this.$notify({\n title: prompt,\n message: \"\",\n type: \"success\",\n });\n this.runAfterAction(status);\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n this.$emit(\"closePopup\", status);\n if (response.data.errors && response.data.errors.length > 0) {\n Toast({\n message: response.data.errors[0].errmsg,\n iconClass: \"fa fa-close fa-2x\",\n });\n }\n }\n },\n });\n } else {\n // //非自由流程\n // document.subFlowApprover = []; //多种流程处理方式,此数据为完善未完善\n // document.submitTo = [];\n // //流程单选或多选\n // if (this.nextNodeIds instanceof Array) {\n // //多选\n // let checkArr = [];\n // document.nextNodeIds = this.nextNodeIds;\n // for (let j = 0; j < this.nextNodeIds.length; j++) {\n // for (let y = 0; y < this.selectData.length; y++) {\n // if (\n // this.nextNodeIds[j] == this.selectData[y].id &&\n // this.selectData[y].submitTo\n // ) {\n // delete this.selectData[y].submitTo.row;\n // document.submitTo.push(this.selectData[y].submitTo);\n // if (this.selectData[y].type == \"SubFlow\") {\n // //主子流程\n // let checkObj = Object.assign({}, this.selectData[y].submitTo);\n // delete checkObj.isToPerson;\n // checkArr.push(checkObj);\n // }\n // }\n // }\n // }\n // document.subFlowApprover = checkArr;\n // } else { // 单选\n // document.nextNodeIds = [];\n // document.nextNodeIds.push(this.nextNodeIds);\n // //let arr = [];\n // let subArr = [];\n // let checkArr = [];\n // for (let i = 0; i < this.selectData.length; i++) {\n // if (\n // this.selectData[i].submitTo &&\n // this.selectData[i].submitTo.nodeid == this.nextNodeIds\n // ) {\n // delete this.selectData[i].submitTo.row;\n // subArr.push(this.selectData[i].submitTo);\n // if (this.selectData[i].type == \"SubFlow\") { // //主子流程\n // let s = this.selectData[i];\n // if(s.groupNum == -2) { //groupNum有-1,-2和>0, 当-1时无限制添加分组,-2是每个用户都是单独的分组\n // let checkSubmit = s.submitTo;\n // let approver = [];\n // let subFlowUserId = '';\n // if(s.subFlowApproverData && s.subFlowApproverData.approver && s.subFlowApproverData.approver.length > 0) {\n // s.subFlowApproverData.approver[0].userids.forEach(el => {\n // subFlowUserId += el + \";\";\n // });\n // }\n // if(subFlowUserId) {\n // checkSubmit.userids = subFlowUserId;\n // }\n // if(checkSubmit.userids) {\n // let list = checkSubmit.userids.replace(/^(\\s|;)+|(\\s|;)+$/g, '')\n // let useridList = list.split(\";\");\n // for(let z=0; z 0) {\n // let approvers = [];\n // for (let k = 0; k < arr.length; k++) {\n // let obj = {};\n // obj.position = k + 1;\n // let id = [];\n // id.push(arr[k]);\n // obj.userids = id;\n // approvers.push(obj);\n // }\n // let subFlow = {};\n // subFlow.approver = approvers;\n // subFlow.nodeid = subflowData.nodeid;\n // document.subFlowApprover.push(subFlow);\n // console.log(\"subflowData--->\", subflowData);\n // console.log(\"document--->\", document);\n // }\n // } else {\n // subflowData = Object.assign(\n // {},\n // this.selectData[i].subFlowApproverData\n // );\n // for (let j = 0; j < subflowData.approver.length; j++) {\n // delete subflowData.approver[j].rows;\n // }\n // document.subFlowApprover.push(subflowData);\n // }\n // }\n // }\n // }\n API.submitFlow(appId, docId, document, {\n onSucess: (response) => {\n this.firstSubmission = true;\n let status;\n let prompt;\n if (response.data.errcode == 0) {\n status = \"SUCCESS\";\n prompt = response.data.data;\n this.$notify({\n title: prompt,\n message: \"\",\n type: \"success\",\n });\n this.runAfterAction(status);\n } else if (response.data.errcode == 4001) {\n status = \"ERROR\";\n //this.$emit(\"closePopup\", status);\n let prompt = response.data.errors[0].errmsg\n ? response.data.errors[0].errmsg\n : response.data.errmsg;\n this.$notify.error({\n title: response.data.errmsg,\n message: prompt,\n });\n }\n },\n });\n }\n },\n\n //执行脚本后\n runAfterAction(status) {\n let appId = this.openParams.appId;\n let document = this.documentData;\n let isRelate = \"\";\n let _flowType = this.act.flowType; //提交为80\n this.$api.submitRrunAfterActionScript(\n appId,\n this.act.id,\n document,\n document.docId,\n document.viewId,\n document.formId,\n document.templateForm,\n document.parentId,\n isRelate,\n _flowType,\n {\n onSucess: (response) => {\n if (response.data.errcode == 0 && !response.data.data) {\n // this.$notify({\n // title: '成功',\n // message: prompt,\n // type: 'success'\n // });\n this.$emit(\"closePopup\", status);\n } else if (response.data.errcode == 0 && response.data.data) {\n this.$notify({\n title: response.data.data.content.content,\n message: \"\",\n type: \"error\",\n });\n let sta = \"ERROR\";\n let isClose = true;\n this.$emit(\"closePopup\", sta, isClose);\n }\n let workflowOrder = sessionStorage.getItem(\"workflowOrder\");\n this.$store.dispatch(\"getPendingListWithWidget\", {workflowOrder}); //流程提交完毕后首页流程处理widget数据重新刷新\n this.$store.dispatch(\"getProcessedListWithWidget\", {workflowOrder});\n this.$store.commit(\"iscriptChanage\") //流程提交完毕后首页计算脚本widget数据根据配置项重新刷新\n },\n }\n );\n },\n\n //隐藏小意见框\n hiddenSuggest() {\n console.log(\"隐藏小意见框\");\n this.isOrSuggest = !this.isOrSuggest;\n },\n\n changeDiv() {\n this.currentAct = !this.currentAct;\n },\n\n //获取返回的数据\n getSuggest() {\n // let userId = this.$store.state.userId;\n const employeeId = localStorage.getItem(\"employeeId\") || this.$root.user.id ;\n this.$api.getCommonOpinions(employeeId, {\n onSucess: (response) => {\n this.allSuggests = response.data.data;\n },\n });\n },\n\n //节点数据\n getSubmission() {\n let appId = this.openParams.appId;\n if (this.act && this.act.type == 47) {\n //流程回退\n if (this.act.workFlowType == 1) {\n //自由流程\n let instanceId;\n for (let i = 0; i < this.approvers.length; i++) {\n instanceId = this.approvers[i].instanceId;\n }\n this.$api.getHisActorsFreeFlow(appId, instanceId, {\n onSucess: (response) => {\n this.backNodes = response.data.data;\n },\n });\n } else if (this.act.workFlowType == 0) {\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n docId: docId,\n document: formData,\n formId: formId,\n id: id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n this.$api.getBackPanel(appId, docId, document, {\n onSucess: (response) => {\n this.backNodes = response.data.data.backNodes;\n this.selectBackNodes = this.backNodes[0].id;\n this.currentNodeId = response.data.data.currentNodeId; //当前节点ID\n this.flowId = response.data.data.flowId;\n },\n });\n }\n } else {\n let formData = this.buildFormData;\n formData.stateId = this.stateId;\n let docId = formData.id,\n id = formData.id;\n let formId = formData.formId;\n let document = {\n applicationId: appId,\n docId: docId,\n document: formData,\n formId: formId,\n id: id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n };\n API.getFlowPanel(appId, docId, document, {\n onSucess: (response) => {\n let nodesArr = response.data.data.nextNodes;\n this.isMoreCurrentNode = response.data.data.isMoreCurrentNode\n ? response.data.data.isMoreCurrentNode\n : \"\";\n let min;\n for (let i = 0; i < nodesArr.length; i++) {\n for (let j = i; j < nodesArr.length; j++) {\n if (nodesArr[j].orderNum > -1) {\n if (nodesArr[i].orderNum > nodesArr[j].orderNum) {\n min = nodesArr[j];\n nodesArr[j] = nodesArr[i];\n nodesArr[i] = min;\n }\n }\n }\n }\n this.selectData = nodesArr;\n nodesArr.forEach((item) => {\n if (item.isToPerson) {\n this.isToPerson = item.isToPerson;\n }\n if(item.checkedOnMultiplePerson) { //当后台设置了选中下一步审批人,默认选中全部人\n let flowId = response.data.data.flowId, \n nodeId = item.id, \n type = 0, \n selectId = '', \n pageNum = 1, \n pageSize = 10;\n this.$api.getSelectApprovers(\n appId, \n docId, \n flowId, \n nodeId, \n type, \n encodeURIComponent(selectId), \n pageNum, \n pageSize,\n {\n onSucess: res => {\n let list = res.data.data.datas;\n let name = '', userids = '';\n let submitTo = {};\n if(list && list.length) {\n list.forEach(el => {\n name += el.name + \";\";\n userids += el.id + \";\";\n });\n name = name.replace(/^(\\s|;)+|(\\s|;)+$/g, '');\n userids = userids.replace(/^(\\s|;)+|(\\s|;)+$/g, '');\n submitTo = {\n isToPerson: item.isToPerson,\n nodeid: item.id,\n userids: userids,\n row:res.data.data.datas,\n }\n item.approverName = name;\n item.submitTo = submitTo;\n // item.isARole = true;\n this.$forceUpdate();\n }\n \n }\n }\n );\n }else if(item.checkedOnSinglePerson) { //当后台设置了下一步审批人只有一人,默认选中该人时\n let flowId = response.data.data.flowId, \n nodeId = item.id, \n type = 0, \n selectId = '', \n pageNum = 1, \n pageSize = 10;\n this.$api.getSelectApprovers(\n appId, \n docId, \n flowId, \n nodeId, \n type, \n encodeURIComponent(selectId), \n pageNum, \n pageSize,\n {\n onSucess: res => {\n let list = res.data.data.datas;\n let name = '', userids = '';\n let submitTo = {};\n if(list && list.length == 1) {\n list.forEach(el => {\n name += el.name + \";\";\n userids += el.id + \";\";\n });\n name = name.replace(/^(\\s|;)+|(\\s|;)+$/g, '');\n userids = userids.replace(/^(\\s|;)+|(\\s|;)+$/g, '');\n submitTo = {\n isToPerson: item.isToPerson,\n nodeid: item.id,\n userids: userids\n }\n item.approverName = name;\n item.submitTo = submitTo;\n item.isARole = true;\n this.$forceUpdate();\n }\n \n }\n }\n );\n \n }\n });\n \n this.isSplit = response.data.data.isSplit;\n this.currentNodeId = response.data.data.currentNodeId; //当前节点ID\n this.isAppentCirculator = response.data.data.isAppentCirculator; //是否抄送;\n this.flowId = response.data.data.flowId;\n if (this.isSplit) {\n //复选\n this.nextNodeIds = [];\n this.selectData.forEach((item) => {\n if (item.checked == true) {\n this.nextNodeIds.push(item.id);\n }\n });\n } else {\n //单选\n this.selectData.every((item) => {\n if (item.checked == true) {\n this.nextNodeIds = item.id;\n }\n return false;\n });\n }\n },\n });\n }\n },\n },\n};\n",null]}