{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\taskFlowComponents\\flowAction.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\taskFlowComponents\\flowAction.vue","mtime":1667327529466},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport ImageBpm from '@/components/flow/imageBpm.vue'\r\nimport FormContent from '@/components/flow/taskFlowComponents/formContent.vue'\r\n//import OpinionText from \"@/components/common/opinionText.vue\";\r\n//import FileUpload from \"@/components/common/fileUpload.vue\";\r\nimport {mapState} from 'vuex'\r\nimport {Message} from 'element-ui'\r\nimport TaskToReject from '@/components/flow/task/taskToReject.vue'\r\nimport TaskToDelegate from '@/components/flow/task/taskToDelegate.vue'\r\nimport TaskToCopyTo from '@/components/flow/task/taskToCopyTo.vue'\r\nimport TaskToInqu from '@/components/flow/task/taskToInqu.vue'\r\nimport TaskToEndProcess from '@/components/flow/task/taskToEndProcess.vue'\r\nimport TaskToTrans from '@/components/flow/task/taskToTrans.vue'\r\nimport TaskToAddSign from '@/components/flow/task/taskToAddSign.vue'\r\nimport TaskToDelay from '@/components/flow/task/taskToDelay.vue'\r\nimport TaskSelectDestination from '@/components/flow/task/taskSelectDestination.vue'\r\nimport TaskToApproveLine from '@/components/flow/task/taskToApproveLine.vue'\r\nimport taskToSignSequence from '@/components/flow/task/taskToSignSequence.vue'\r\nimport taskToSignLine from '@/components/flow/task/taskToSignLine.vue'\r\nimport taskToComplete from '@/components/flow/task/taskToComplete.vue'\r\nimport taskToSave from '@/components/flow/task/taskToSave.vue'\r\nimport taskToRead from '@/components/flow/task/taskToRead.vue'\r\nimport taskToFeeBack from '@/components/flow/task/taskToFeeBack.vue'\r\nimport taskToInquReply from '@/components/flow/task/taskToInquReply.vue'\r\nimport userAddSignReply from '@/components/flow/task/userAddSignReply.vue'\r\nimport taskToRevoke from '@/components/flow/task/taskToRevoke.vue'\r\nimport utils from '@/utils.js'\r\nimport {Base64} from 'js-base64'\r\nimport moment from 'moment' //日期格式化插件\r\nimport form from '@/api/form.js'\r\nimport flow from '@/api/flow.js'\r\nimport i18n from '@/lang/index.js'\r\nimport req from '@/request.js'\r\nexport default {\r\n    components: {\r\n        ImageBpm,\r\n        FormContent,\r\n        //OpinionText,\r\n        //FileUpload,\r\n        TaskToReject,\r\n        TaskToDelegate,\r\n        TaskToCopyTo,\r\n        TaskToInqu,\r\n        TaskToEndProcess,\r\n        TaskToTrans,\r\n        TaskToAddSign,\r\n        TaskToDelay,\r\n        TaskSelectDestination,\r\n        TaskToApproveLine,\r\n        taskToSignSequence,\r\n        taskToSignLine,\r\n        taskToComplete,\r\n        taskToSave,\r\n        taskToRead,\r\n        taskToFeeBack,\r\n        taskToInquReply,\r\n        userAddSignReply,\r\n        taskToRevoke,\r\n    },\r\n    props: [\r\n        'tasks', //任务详情\r\n        'task_state',\r\n        'instId',\r\n        'type',\r\n        'taskId',\r\n        'execId',\r\n        'defId',\r\n        'status',\r\n        'choiceExcutor',\r\n        'jumpType',\r\n        'instStatus',\r\n        'leaderId',\r\n        'myReadType',\r\n        'readId', //知会任务待办传阅任务的主键ID\r\n        'readDoneId', //知会任务已办传阅任务的主键ID\r\n        'approvalArea', //审批区域显示的内容\r\n        'referOpinion', //允许参考意见 (选择否，则审批时不允许参考同环节其他会签人员的意见)\r\n        'nodeType', //当前任务类型\r\n        'nodeId', //当前任务节点\r\n        'isLook',\r\n        'sponsorRevoke', //允许发起人撤回（默认不勾选）\r\n        'opinionField', //当前节点审批意见回填字段\r\n        'appendOpinion', //是否覆盖审批意见\r\n        'signatureField', //自动签章字段\r\n        'signatureCover', //自动签章是否覆盖\r\n        'secretFree', //自动签章时是否免密,\r\n        'defKey',\r\n    ],\r\n    data() {\r\n        return {\r\n            isMk: false, //是否是模块化开发进来\r\n            isDd: false, // 是否是只显示审批页面\r\n            isGdt: false, //是否有滚动条\r\n            dialogFormVisible: false,\r\n            dailogTitle: '',\r\n            opinion: '',\r\n            isHand: '',\r\n            state: '',\r\n            canLock: '',\r\n            formData: '',\r\n            actionName: '',\r\n            text: '',\r\n            disabled: true,\r\n            btnAlias: '', //选择的按钮\r\n            token: utils.getUrlKey('token'),\r\n            isApprovalOpinion: true, //是否显示审批意见\r\n            iszFile: true, //是否显示正文\r\n            isFile: true, //是否显示附件\r\n            isProcessRecord: true, //是否显示处理记录\r\n            isImageBpm: true, //是否显示流程图\r\n            taskStatusArray: [\r\n                'APPROVELINEING',\r\n                'APPROVELINEED',\r\n                'SIGNSEQUENCEING',\r\n                'SIGNSEQUENCEED',\r\n                'SIGNLINEING',\r\n                'SIGNLINEED',\r\n            ],\r\n            isHang: false,\r\n            opinionFiles: '',\r\n            appendStr: true,\r\n            initBoAttr: '',\r\n        }\r\n    },\r\n    watch: {\r\n        status: function (newVal, oldVal) {\r\n            this.state = newVal //newVal即是status\r\n            if (\r\n                this.state != 'COPYTO' &&\r\n                this.state != 'FOLLOW' &&\r\n                this.state != 'COMMU'\r\n            ) {\r\n                let params = {\r\n                    taskId: this.taskId,\r\n                    leaderId: this.leaderId,\r\n                    nodeType: this.nodeType,\r\n                }\r\n                //判断是否是普通用户任务加签后的待办任务\r\n                if (this.tasks.bpmTask.parentId != '0') {\r\n                    params.isAddSign = true\r\n                }\r\n                //通过流程实例ID和任务ID获取审批意见\r\n                if (this.taskId && this.instId) {\r\n                    let bpmSaveOpinion = {\r\n                        instId: this.instId,\r\n                        taskId: this.taskId,\r\n                    }\r\n                    flow.getBpmSaveOpinionByTeam(bpmSaveOpinion).then(\r\n                        (data) => {\r\n                            if (data.state) {\r\n                                if (data.value != '') {\r\n                                    this.text = data.value\r\n                                }\r\n                            }\r\n                        }\r\n                    )\r\n                }\r\n                this.$store.dispatch('storeProcess/taskDetail', params) //获取操作按钮\r\n                this.$store\r\n                    .dispatch('storeProcess/canLock', {\r\n                        taskId: this.taskId,\r\n                        leaderId: this.leaderId,\r\n                    })\r\n                    .then((canLock) => {\r\n                        //获取任务是否能锁定\r\n                        if (\r\n                            canLock == 4 &&\r\n                            this.$router.history.current.fullPath.indexOf(\r\n                                'token'\r\n                            ) > -1\r\n                        ) {\r\n                            canLock = '5'\r\n                        }\r\n                        this.canLock = canLock\r\n                    })\r\n            }\r\n        },\r\n        approvalArea: function (newVal, oldVal) {\r\n            //审批区域显示的内容\r\n            if (newVal) {\r\n                this.approvalArea = newVal\r\n                if (this.approvalArea) {\r\n                    if (this.approvalArea.indexOf('approvalOpinion') == -1) {\r\n                        this.isApprovalOpinion = false\r\n                    }\r\n                    if (this.approvalArea.indexOf('zFile') == -1) {\r\n                        this.iszFile = false\r\n                    }\r\n                    if (this.approvalArea.indexOf('file') == -1) {\r\n                        this.isFile = false\r\n                    }\r\n                    if (this.approvalArea.indexOf('processRecord') == -1) {\r\n                        this.isProcessRecord = false\r\n                    }\r\n                    if (this.approvalArea.indexOf('imageBpm') == -1) {\r\n                        this.isImageBpm = false\r\n                    }\r\n                }\r\n            }\r\n        },\r\n    },\r\n    computed: mapState({\r\n        rowsBtn: (state) => state.storeProcess.rowsBtn,\r\n        forceLock: (state) => state.storeProcess.forceLock,\r\n        isShowApprovalArea: function () {\r\n            if (\r\n                (this.status != 'COPYTO' &&\r\n                    this.status != 'FOLLOW' &&\r\n                    (this.type != undefined || this.taskId != undefined) &&\r\n                    this.instStatus != 'end' &&\r\n                    this.instStatus != 'manualend') ||\r\n                this.status == 'COMMU'\r\n            ) {\r\n                return true\r\n            }\r\n            return false\r\n        },\r\n    }),\r\n\r\n    beforeDestroy() {\r\n        //组件注销移除事件监听器，以防多次调用\r\n        this.$root.$off('formLoading')\r\n    },\r\n    mounted() {\r\n        const this_ = this\r\n        //监听表单加载完成发布事件\r\n        this_.$root.$on('formLoading', function (value) {\r\n            this_.disabled = value\r\n            //检查当前挂起状态，判断是否禁用按钮\r\n            this_.checkInstStatus()\r\n        })\r\n    },\r\n    methods: {\r\n        // 通过按钮别名获取按钮主题类型\r\n        getType(alias) {\r\n            let type = 'default'\r\n            switch (alias) {\r\n                case 'agree':\r\n                case 'agreeTrans':\r\n                    type = 'primary'\r\n                    break\r\n                case 'oppose':\r\n                case 'opposeTrans':\r\n                case 'reject':\r\n                case 'endProcess':\r\n                    type = 'danger'\r\n                    break\r\n            }\r\n            return type\r\n        },\r\n        // //暂存审批意见\r\n        // createBpmSaveOpinion(flag) {\r\n        //   //点击保存暂存审批意见时，没有填写审批意见不处理\r\n        //   if (this.$refs.opinionText.getOpinion() == \"\" && flag) {\r\n        //     return;\r\n        //   }\r\n        //   if (this.$refs.opinionText.getOpinion() == \"\") {\r\n        //     Message.warning(\"请输入审批意见内容\");\r\n        //   } else {\r\n        //     let bpmSaveOpinion = { procInstId: this.instId, taskId: this.taskId, opinion: this.$refs.opinionText.getOpinion() };\r\n        //     flow.createBpmSaveOpinion(bpmSaveOpinion).then(data => {\r\n        //       if (data.state) {\r\n        //         if (!flag) {\r\n        //           this.$message({ type: \"success\", message: data.message });\r\n        //         }\r\n        //       }\r\n        //     });\r\n        //   }\r\n        // },\r\n        //获取意见\r\n        // getOpinion(opinion) {\r\n        //   this.text = opinion;\r\n        //   let opinioValue = this.$refs.opinionText.getOpinion();\r\n        //   if (this.opinionField) {\r\n        //     let currentUser = this.$store.state.user.currentUserDetail.user;\r\n        //     let moment = require(\"moment\");\r\n\r\n        //     let boData = this.$refs.formContent.data;\r\n        //     let filed = this.opinionField.split(\".\");\r\n        //     if (boData[filed[0]][filed[1]] == '<p><br/></p>') {\r\n        //       boData[filed[0]][filed[1]] = \"\";\r\n        //     }\r\n        //     //是否覆盖审批意见\r\n        //     if (this.appendOpinion) {\r\n        //       if (opinioValue) {\r\n        //         boData[filed[0]][filed[1]] = opinioValue + \"\\n\" + currentUser.fullname + \" \" + moment().format(\"YYYY-MM-DD HH:mm:ss\");\r\n        //       }\r\n        //     } else {\r\n        //       if (opinioValue) {\r\n        //         opinioValue += \"\\n\" + currentUser.fullname + \" \" + moment().format(\"YYYY-MM-DD HH:mm:ss\");\r\n        //       }\r\n        //       if (this.appendStr) {\r\n        //         this.initBoAttr = boData[filed[0]][filed[1]];\r\n        //       }\r\n        //       if (filed.length == 2) {\r\n        //         if (this.initBoAttr) {\r\n        //           if (opinion) {\r\n        //             boData[filed[0]][filed[1]] = this.initBoAttr + \"\\n\\n\" + opinioValue;\r\n        //           } else {\r\n        //             boData[filed[0]][filed[1]] = this.initBoAttr\r\n        //           }\r\n        //         } else {\r\n        //           boData[filed[0]][filed[1]] = opinioValue;\r\n        //         }\r\n        //       }\r\n        //       this.appendStr = false;\r\n        //     }\r\n        //   }\r\n        // },\r\n        //保存按钮\r\n        saveDraftBtn() {\r\n            //this.$refs.taskToSave.showDialog();\r\n            this.$store\r\n                .dispatch('storeProcess/canLock', {\r\n                    taskId: this.taskId,\r\n                    leaderId: this.leaderId,\r\n                })\r\n                .then((canLock) => {\r\n                    //获取任务是否能锁定\r\n                    if (\r\n                        canLock == 4 &&\r\n                        this.$router.history.current.fullPath.indexOf('token') >\r\n                            -1\r\n                    ) {\r\n                        canLock = '5'\r\n                    }\r\n                    if (canLock == 4) {\r\n                        this.$message.warning('任务已被其他人签收了')\r\n                    } else {\r\n                        this.taskSaveDraft() //保存表单内容\r\n                        //this.createBpmSaveOpinion(true);//暂存审批意见\r\n                    }\r\n                })\r\n        },\r\n        //同意按钮\r\n        agreeBtn() {\r\n            this.$store\r\n                .dispatch('storeProcess/canLock', {\r\n                    taskId: this.taskId,\r\n                    leaderId: this.leaderId,\r\n                })\r\n                .then((canLock) => {\r\n                    //获取任务是否能锁定\r\n                    if (\r\n                        canLock == 4 &&\r\n                        this.$router.history.current.fullPath.indexOf('token') >\r\n                            -1\r\n                    ) {\r\n                        canLock = '5'\r\n                    }\r\n                    if (canLock == 4) {\r\n                        this.$message.warning('任务已被其他人签收了')\r\n                    } else {\r\n                        this.taskAgree()\r\n                    }\r\n                })\r\n        },\r\n        checkInstStatus(callback) {\r\n            let this_ = this\r\n            this.$http\r\n                .get(\r\n                    '${bpmRunTime}/runtime/instance/v1/getDefStatus?instId=' +\r\n                        (this.instId || '') +\r\n                        '&taskId=' +\r\n                        (this.taskId || '')\r\n                )\r\n                .then(function (resp) {\r\n                    if (resp.data) {\r\n                        resp.data += ''\r\n                        if (resp.data.indexOf('1') > -1) {\r\n                            this_.disabled = true\r\n                            this_.isHang = true\r\n                            this_.$message.warning(\r\n                                '当前流程实例已被挂起，无法审批'\r\n                            )\r\n                        } else if (resp.data.indexOf('3') > -1) {\r\n                            this_.disabled = true\r\n                            this_.$message.warning(\r\n                                '当前流程定义已被禁止实例，无法审批'\r\n                            )\r\n                        } else {\r\n                            callback && callback()\r\n                        }\r\n                    } else if (callback) {\r\n                        callback()\r\n                    }\r\n                })\r\n        },\r\n        //提交事件\r\n        submitRevoke(alias) {\r\n            let _this = this\r\n            //获取VUE表单实例(判断是否是在线表单)\r\n            if (document.getElementsByName('online-form')[0]) {\r\n                let tables =\r\n                    document.getElementsByName('online-form')[0].__vue__\r\n                        .permission.table //获取子表权限\r\n                let boData =\r\n                    document.getElementsByName('online-form')[0].__vue__.data //获取表单bo对象\r\n                let zData = {}\r\n                for (let k in boData) {\r\n                    zData = boData[k]\r\n                }\r\n                for (let key in tables) {\r\n                    //如果有导入属性，则表明不是子表而是数据报表，不做必填校验\r\n                    if (tables[key] && tables[key].hasOwnProperty('export')) {\r\n                        continue\r\n                    }\r\n                    if (\r\n                        (tables[key].required == true ||\r\n                            tables[key].required == 'true') &&\r\n                        zData['sub_' + key] &&\r\n                        zData['sub_' + key].length == 0\r\n                    ) {\r\n                        this.$message({\r\n                            message: '子表必填一条记录',\r\n                            type: 'warning',\r\n                        })\r\n                        return\r\n                    }\r\n                }\r\n            }\r\n            this.pressAction = true\r\n            this.btnAlias = alias\r\n            //关闭\r\n            if (this.btnAlias == 'taskClose') {\r\n                utils.closeAllNotification()\r\n                //判断菜单是否是模块开发配置出来的\r\n                this.$router.go(-1)\r\n                //todo\r\n                // if (this.$route.name.indexOf('reportModuleInst') != -1) {\r\n                //     this.$router.push(\r\n                //         '/statement/template/preview/' +\r\n                //             this.$route.params.templateKey +\r\n                //             '/todo/' +\r\n                //             this.$route.params.defKey +\r\n                //             '/true'\r\n                //     )\r\n                // } else if (this.$route.name.indexOf('sysModuleInst') != -1) {\r\n                //     this.$router.push(\r\n                //         '/v-flow/v-todo/' + this.$route.params.defKey\r\n                //     )\r\n                // } else if (\r\n                //     this.type == 'done' ||\r\n                //     this.type == 'request' ||\r\n                //     this.myReadType == 'myRequest'\r\n                // ) {\r\n                //     this.$router.push('/v-flow/v-request')\r\n                // } else if (\r\n                //     this.state == 'COMMU' ||\r\n                //     this.state == 'FOLLOW' ||\r\n                //     this.$route.name == 'instRead-read'\r\n                // ) {\r\n                //     this.$router.push('/v-flow/v-todoRead') //待阅\r\n                // } else if (this.$route.name == 'instRead-done') {\r\n                //     this.$router.push('/v-flow/v-doneRead') //已阅\r\n                // } else if (this.$route.name == 'myRead-type') {\r\n                //     this.$router.push('/v-flow/v-myRead') //我传阅的\r\n                // } else if (\r\n                //     this.$route.name == 'instRead' &&\r\n                //     this.$route.params.myReadType == 'delegate'\r\n                // ) {\r\n                //     this.$router.push('/v-flow/v-myDelegate')\r\n                // } else {\r\n                //     if (JSON.stringify(this.$route.query) == '{}') {\r\n                //         this.$router.push('/v-flow/v-todo')\r\n                //     } else {\r\n                //         this.$router.push('/home')\r\n                //     }\r\n                // }\r\n            } else if (this.btnAlias == 'saveDraft') {\r\n                // todo 保存\r\n                this.saveDraftBtn()\r\n            } else if (this.btnAlias == 'agree') {\r\n                // todo 同意\r\n                this.agreeBtn()\r\n            } else if (this.btnAlias == 'handleRead') {\r\n                //传阅回复\r\n                this.handleRead()\r\n            } else if (this.btnAlias == 'handleRevoke') {\r\n                //撤回\r\n                this.handleRevoke()\r\n            } else if (this.btnAlias == 'commuFeedBack') {\r\n                //沟通反馈\r\n                this.commuFeedBack()\r\n            } else if (this.btnAlias == 'taskToInquReply') {\r\n                //征询回复\r\n                this.taskToInquReply()\r\n            } else if (this.btnAlias == 'userAddSign') {\r\n                //普通节点加签反馈\r\n                this.userAddSign()\r\n            } else if (this.btnAlias == 'reject') {\r\n                //todo 驳回\r\n                this.taskToReject()\r\n            } else if (this.btnAlias == 'delegate') {\r\n                //转办\r\n                this.taskToDelegate()\r\n            } else if (this.btnAlias == 'inqu') {\r\n                //征询\r\n                this.taskToInqu()\r\n            } else if (this.btnAlias == 'endProcess') {\r\n                // todo 流程终止\r\n                this.taskToEndProcess()\r\n            } else if (this.btnAlias == 'startTrans') {\r\n                //todo 流转\r\n                this.taskToTrans()\r\n            } else if (this.btnAlias == 'addSign') {\r\n                //todo 加签\r\n                this.taskToAddSign()\r\n            } else if (this.btnAlias == 'taskDelay') {\r\n                //todo 任务延期\r\n                // this.taskToDelay();\r\n            } else if (this.btnAlias == 'agreeTrans') {\r\n                //todo 同意（流转）\r\n                this.taskAgreeTrans()\r\n            } else if (this.btnAlias == 'opposeTrans') {\r\n                //todo 反对（流转）\r\n                this.taskOpposeTrans()\r\n            } else if (this.btnAlias == 'oppose') {\r\n                //todo 反对\r\n                this.taskOppose()\r\n            } else if (this.btnAlias == 'lockUnlock') {\r\n                //签收\r\n                this.$store\r\n                    .dispatch('storeProcess/canLock', this.taskId)\r\n                    .then((canLock) => {\r\n                        //获取任务是否能锁定\r\n                        if (\r\n                            canLock == 4 &&\r\n                            this.$router.history.current.fullPath.indexOf(\r\n                                'token'\r\n                            ) > -1\r\n                        ) {\r\n                            canLock = '5'\r\n                        }\r\n                        if (canLock == 4) {\r\n                            this.$message.warning('任务已被其他人签收了')\r\n                        } else {\r\n                            this.lockUnlock()\r\n                        }\r\n                    })\r\n            } else if (this.btnAlias == 'approveLine') {\r\n                //并行审批\r\n                this.taskApproveLine()\r\n            } else if (this.btnAlias == 'signSequence') {\r\n                // 顺序签署\r\n                this.taskSignSequence()\r\n            } else if (this.btnAlias == 'signLine') {\r\n                // 并行签署\r\n                this.taskSignLine()\r\n            }\r\n        },\r\n        //执行前置脚本\r\n        runBeforeScript() {\r\n            let _this = this\r\n            let item = utils.indexOfList(_this.rowsBtn, 'alias', _this.btnAlias)\r\n            return _this.tempScript(item.beforeScript)\r\n        },\r\n        //执行前置脚本\r\n        tempScript(script) {\r\n            let _this = this\r\n            let _req = req\r\n            let boData = _this.$refs.formContent.data\r\n            let tempScript =\r\n                'var tempFunction = function(_req,data,_this){ ' + script + '};'\r\n            let result = eval(tempScript + 'tempFunction(_req,boData,_this);')\r\n            if (result && result.then && typeof result.then == 'function') {\r\n                return result\r\n            }\r\n            if (result === false) return false\r\n            return true\r\n        },\r\n        //保存\r\n        taskSaveDraft() {\r\n            const this_ = this\r\n            utils\r\n                .getOnlineFormData(false)\r\n                .then((formDataStr) => this_.saveDraftSubmit(formDataStr))\r\n                .catch((reason) =>\r\n                    utils\r\n                        .handleGetFormDataReject(reason)\r\n                        .then(() => this.saveDraftSubmit())\r\n                )\r\n        },\r\n        saveDraftSubmit(formDataStr) {\r\n            let _this = this\r\n            let scriptResult = this.runBeforeScript()\r\n            //执行前置脚本返回false时终止按钮操作\r\n            if (scriptResult === false) return\r\n            //执行前置脚本返回的接口时先执行前置事件接口\r\n            if (scriptResult.then && typeof scriptResult.then == 'function') {\r\n                scriptResult.then(\r\n                    () => {\r\n                        //接口返回成功则正常执行按钮操作\r\n                        _this.funcSaveDraft(formDataStr)\r\n                    },\r\n                    (fail) => {\r\n                        //接口返回失败则终止按钮操作，并给与提示\r\n                        _this.$message.warning(fail)\r\n                        return\r\n                    }\r\n                )\r\n            } else {\r\n                //执行前置脚本返回true时正常执行按钮操作\r\n                _this.funcSaveDraft(formDataStr)\r\n            }\r\n        },\r\n        //保存草稿\r\n        funcSaveDraft(formDataStr) {\r\n            utils.closeAllNotification()\r\n            let data = this.handleFormData(formDataStr)\r\n            data.defId = this.defId\r\n            data.approval = true\r\n            data.formKey = this.$refs.formContent.formKey\r\n            this.$refs.taskToSave.showDialog(data)\r\n            // this.$store.dispatch(\"storeProcess/saveTaskDraft\", data).then(() => {\r\n            //   utils.reload();\r\n            // });\r\n        },\r\n        //传阅回复\r\n        handleRead() {\r\n            this.$refs.taskToRead.showDialog()\r\n        },\r\n        // 准备要提交的数据\r\n        handleFormData(formDataStr) {\r\n            //let files = \"\";\r\n            let zfiles = ''\r\n            // this.$refs.fileUpload.isFinishUpload();\r\n            // if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n            //   files = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n            // }\r\n            //let opinion = \"\";\r\n            // if (this.$refs.opinionText && this.$refs.opinionText.getOpinion() != \"\") {\r\n            //   opinion = this.$refs.opinionText.getOpinion();\r\n            // }\r\n\r\n            let data = {\r\n                taskId: this.taskId,\r\n                actionName: this.actionName,\r\n                destination: '',\r\n                //files: files,\r\n                zfiles: zfiles,\r\n                //opinion: opinion,\r\n                jumpType: '',\r\n                agentLeaderId: this.leaderId,\r\n                nodeUsers: '[]',\r\n            }\r\n            if (formDataStr) {\r\n                // URL表单\r\n                if (formDataStr.constructor == Object) {\r\n                    data.formType = 'frame'\r\n                    if (formDataStr.businessKey) {\r\n                        data.businessKey = formDataStr.businessKey\r\n                    }\r\n                    if (formDataStr.sysCode) {\r\n                        data.sysCode = formDataStr.sysCode\r\n                    }\r\n                    if (formDataStr.vars) {\r\n                        data.vars = formDataStr.vars\r\n                    }\r\n                } else if (formDataStr.constructor == String) {\r\n                    data.data = Base64.encode(formDataStr)\r\n                    data.formType = 'inner'\r\n                }\r\n            }\r\n\r\n            if (window.urgentStateValue) {\r\n                data.urgentStateValue = window.urgentStateValue\r\n            }\r\n\r\n            return data\r\n        },\r\n        handleClose() {\r\n            this.dialogFormVisible = true\r\n        },\r\n        //获取任务锁定状态\r\n        lockUnlock() {\r\n            this.$store\r\n                .dispatch(\r\n                    'storeProcess/lockUnlock',\r\n                    this.taskId + '&leaderId=' + this.leaderId\r\n                )\r\n                .then(() => {\r\n                    // this.$router.go(this.$router.currentRoute);\r\n                    utils.reload()\r\n                })\r\n        },\r\n        //撤回\r\n        handleRevoke(id, status) {\r\n            if (status == 'revokeToStart') {\r\n                this.$message.warning('已撤回，不能再撤回')\r\n                return false\r\n            }\r\n            // if (this.$refs.opinionText.getOpinion() == \"\") {\r\n            //   this.$message.warning(\"请填写撤回意见\");\r\n            //   return false;\r\n            // }\r\n            let data = {\r\n                instanceId: this.instId,\r\n                isHandRevoke: this.isHand,\r\n                //cause: this.$refs.opinionText.getOpinion()\r\n            }\r\n            let revokeUrl = 'storeProcess/revokeInstanceBtn'\r\n            this.$refs.taskToRevoke.showDialog(revokeUrl, data)\r\n            // this.$confirm(\"确认\" + this.dailogTitle + \"?\", \"提示\", {\r\n            //   cancelButtonText: \"取消\",\r\n            //   confirmButtonText: \"确定\",\r\n            //   type: \"warning\",\r\n            //   closeOnClickModal: false\r\n            // }).then(() => {\r\n            //   this.$store\r\n            //     .dispatch(\"storeProcess/revokeInstanceBtn\", data)\r\n            //     .then(isHandRevoke => {\r\n            //       if (this.token != null) {\r\n            //         window.close();\r\n            //       } else {\r\n            //         this.$router.push(\"/v-flow/v-todo\");\r\n            //       }\r\n            //     });\r\n            // });\r\n        },\r\n        saveRevoke() {\r\n            if (this.opinion == '') {\r\n                this.$message.warning('请填写撤回意见')\r\n                return false\r\n            }\r\n            let data = {\r\n                instanceId: this.instId,\r\n                isHandRevoke: this.isHand,\r\n                cause: this.opinion,\r\n            }\r\n            this.$store\r\n                .dispatch('storeProcess/revokeInstanceBtn', data)\r\n                .then(() => {\r\n                    if (this.token != null) {\r\n                        window.close()\r\n                    } else {\r\n                        this.$router.go(-1)\r\n                    }\r\n                })\r\n            this.dialogFormVisible = false\r\n            this.opinion = ''\r\n        },\r\n        exitRevoke() {\r\n            this.dialogFormVisible = false\r\n            this.opinion = ''\r\n        },\r\n        //沟通反馈\r\n        commuFeedBack() {\r\n            this.$refs.taskToFeeBack.showDialog()\r\n        },\r\n        userAddSign() {\r\n            this.$refs.userAddSignReply.showDialog()\r\n            // if (this.$refs.opinionText.getOpinion() == \"\") {\r\n            //   Message.warning(\"请输入意见内容\");\r\n            // } else {\r\n            //   let files = \"\";\r\n            //   let zfiles = \"\";\r\n            //   this.$refs.fileUpload.isFinishUpload();\r\n            //   if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n            //     files = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n            //   }\r\n            //   let data = {\r\n            //     procDefId: this.defId,\r\n            //     procInstId: this.instId,\r\n            //     status: \"inqu_reply\",\r\n            //     taskId: this.taskId,\r\n            //     opinion: this.$refs.opinionText.getOpinion(),\r\n            //     files: files,\r\n            //     zfiles: zfiles\r\n            //   };\r\n            //   this.$store.dispatch(\"storeProcess/userAddSign\", data).then(() => {\r\n            //     if (this.token != null) {\r\n            //       window.close();\r\n            //     } else {\r\n            //       this.$router.go(-1);\r\n            //     }\r\n            //   });\r\n            // }\r\n        },\r\n        //征询回复\r\n        taskToInquReply() {\r\n            this.$refs.taskToInquReply.showDialog()\r\n            // if (this.$refs.opinionText.getOpinion() == \"\") {\r\n            //   Message.warning(\"请输入意见内容\");\r\n            // } else {\r\n            //   let files = \"\";\r\n            //   let zfiles = \"\";\r\n            //   this.$refs.fileUpload.isFinishUpload();\r\n            //   if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n            //     files = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n            //   }\r\n            //   let data = {\r\n            //     procDefId: this.defId,\r\n            //     procInstId: this.instId,\r\n            //     status: \"inqu_reply\",\r\n            //     taskId: this.taskId,\r\n            //     opinion: this.$refs.opinionText.getOpinion(),\r\n            //     files: files,\r\n            //     zfiles: zfiles,\r\n            //     formData: JSON.stringify(this.$refs.formContent.data)\r\n            //   };\r\n            //   this.$store.dispatch(\"storeProcess/taskToInquReply\", data).then(() => {\r\n            //     if (this.token != null) {\r\n            //       window.close();\r\n            //     } else {\r\n            //       this.$router.go(-1);\r\n            //     }\r\n            //   });\r\n            // }\r\n        },\r\n        //驳回设置\r\n        taskToReject() {\r\n            // 审批附件数据\r\n            // if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n            //   this.opinionFiles = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n            // }\r\n            let parentTaskId = '' //用户任务加签后的父任务ID\r\n            if (\r\n                this.nodeType == 'USERTASK' &&\r\n                this.tasks.bpmTask.parentId != '0'\r\n            ) {\r\n                //用户任务加签\r\n                parentTaskId = this.tasks.bpmTask.parentId\r\n            }\r\n            this.$refs.taskToReject.handleOpen(parentTaskId, this) //父组件调用子组件方法\r\n        },\r\n        //转办设置\r\n        taskToDelegate() {\r\n            this.$refs.taskToDelegate.handleClose(\r\n                this.opinionField,\r\n                this.$refs.formContent.data,\r\n                this.appendOpinion,\r\n                this\r\n            ) //父组件调用子组件方法\r\n        },\r\n        //征询设置\r\n        taskToInqu() {\r\n            if (this.status != 'TRANSFORMEDINQU') {\r\n                this.$refs.taskToInqu.showType()\r\n            }\r\n            this.$refs.taskToInqu.handleClose(\r\n                this.opinionField,\r\n                this.$refs.formContent.data,\r\n                this.appendOpinion\r\n            ) //父组件调用子组件方法\r\n        },\r\n        //流程终止\r\n        taskToEndProcess() {\r\n            this.$refs.taskToEndProcess.handleClose(this) //父组件调用子组件方法\r\n        },\r\n        //流转设置\r\n        taskToTrans() {\r\n            // if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n            //   this.opinionFiles = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n            // }\r\n            this.$refs.taskToTrans.handleClose(\r\n                this,\r\n                this.opinionField,\r\n                this.$refs.formContent.data,\r\n                this.appendOpinion\r\n            ) //父组件调用子组件方法\r\n        },\r\n        //加签设置\r\n        taskToAddSign() {\r\n            this.$refs.taskToAddSign.handleClose(\r\n                this.nodeType,\r\n                this.instId,\r\n                this\r\n            ) //父组件调用子组件方法\r\n        },\r\n        //任务延期\r\n        taskToDelay() {\r\n            this.$refs.taskToDelay.handleClose() //父组件调用子组件方法\r\n        },\r\n        //并行审批\r\n        taskApproveLine() {\r\n            this.$refs.taskToApproveLine.handleClose() //父组件调用子组件方法\r\n        },\r\n        // 顺序签署\r\n        taskSignSequence() {\r\n            this.$refs.taskToSignSequence.handleClose() //父组件调用子组件方法\r\n        },\r\n        // 并行签署\r\n        taskSignLine() {\r\n            this.$refs.taskToSignLine.handleClose() //父组件调用子组件方法\r\n        },\r\n        doNext() {\r\n            if (!this.text) {\r\n                if (\r\n                    this.actionName == 'opposeTrans' ||\r\n                    this.actionName == 'oppose'\r\n                ) {\r\n                    this.text = '反对'\r\n                } else {\r\n                    this.text = '同意'\r\n                }\r\n            }\r\n            const this_ = this\r\n            utils\r\n                .getOnlineFormData(true)\r\n                .then((formDataStr) => this_.doNextSubmit(formDataStr))\r\n                .catch((reason) =>\r\n                    utils\r\n                        .handleGetFormDataReject(reason)\r\n                        .then(() => this.doNextSubmit())\r\n                )\r\n        },\r\n        // doNext执行。formDataStr：字符串格式的表单数据。\r\n        doNextSubmit(formDataStr) {\r\n            let _this = this\r\n            let scriptResult = this.runBeforeScript()\r\n            //执行前置脚本返回false时终止按钮操作\r\n            if (scriptResult === false) return\r\n            //执行前置脚本返回的接口时先执行前置事件接口\r\n            if (scriptResult.then && typeof scriptResult.then == 'function') {\r\n                scriptResult.then(\r\n                    () => {\r\n                        //接口返回成功则正常执行按钮操作\r\n                        _this.funcDoNext(formDataStr)\r\n                    },\r\n                    (fail) => {\r\n                        //接口返回失败则终止按钮操作，并给与提示\r\n                        _this.$message.warning(fail)\r\n                        return\r\n                    }\r\n                )\r\n            } else {\r\n                //执行前置脚本返回true时正常执行按钮操作\r\n                _this.funcDoNext(formDataStr)\r\n            }\r\n        },\r\n        funcDoNext(formDataStr) {\r\n            utils.closeAllNotification()\r\n            let data = this.handleFormData(formDataStr)\r\n            data.formKey = this.$refs.formContent.formKey\r\n            data.opinion = this.text\r\n            if (\r\n                this.nodeType == 'USERTASK' &&\r\n                this.tasks.bpmTask.parentId != '0'\r\n            ) {\r\n                //用户任务加签\r\n                if (this.actionName == 'oppose') {\r\n                    data.addSignAction = 'opposeTrans'\r\n                } else if (this.actionName == 'agree') {\r\n                    data.addSignAction = 'agreeTrans'\r\n                }\r\n            }\r\n            if (\r\n                (this.choiceExcutor ||\r\n                    this.jumpType ||\r\n                    this.$route.query.type === 'free') &&\r\n                !this.taskStatusArray.includes(this.status)\r\n            ) {\r\n                this.$store\r\n                    .dispatch('storeProcess/getAfterJumpNodes', {\r\n                        taskId: this.taskId,\r\n                        data: data.data,\r\n                        defId: '',\r\n                        instId: '',\r\n                        type: this.$route.query.type || this.jumpType,\r\n                    })\r\n                    .then((res) => {\r\n                        if (\r\n                            res.afterNodes.length == 0 ||\r\n                            (res.afterNodes.length == 1 &&\r\n                                res.afterNodes[0].excutorList != undefined &&\r\n                                res.afterNodes[0].excutorList.length == 1)\r\n                        ) {\r\n                            this.$refs.taskToComplete.showDialog(\r\n                                this.opinionField,\r\n                                this.$refs.formContent.data,\r\n                                this.appendOpinion,\r\n                                data\r\n                            )\r\n                        } else {\r\n                            this.$refs.taskSelectDestination.showDialog(\r\n                                data.data,\r\n                                data.files,\r\n                                data.zfiles,\r\n                                data.opinion,\r\n                                this.instId,\r\n                                this.jumpType\r\n                            )\r\n                        }\r\n                    })\r\n            } else {\r\n                //this.disabled = true;\r\n                let tipMsg = '确认办理此任务?'\r\n                if (\r\n                    this.actionName == 'agree' &&\r\n                    this.status == 'SIGNSEQUENCEED'\r\n                ) {\r\n                    this.$http\r\n                        .get(\r\n                            '${bpmRunTime}/runtime/task/v1/nextExecutor?taskId=' +\r\n                                this.taskId\r\n                        )\r\n                        .then((response) => {\r\n                            if (response.data.state && response.data.value) {\r\n                                tipMsg = `下一步的执行人为：${response.data.value.name}。<br/> 您确定要提交吗？`\r\n                            }\r\n                            this.$refs.taskToComplete.showDialog(\r\n                                this.opinionField,\r\n                                this.$refs.formContent.data,\r\n                                this.appendOpinion,\r\n                                data\r\n                            )\r\n                        })\r\n                    return\r\n                }\r\n                this.$refs.taskToComplete.showDialog(\r\n                    this.opinionField,\r\n                    this.$refs.formContent.data,\r\n                    this.appendOpinion,\r\n                    data\r\n                )\r\n            }\r\n        },\r\n        //同意\r\n        taskAgree() {\r\n            this.actionName = 'agree'\r\n            this.doNext()\r\n        },\r\n        //同意（流转）\r\n        taskAgreeTrans() {\r\n            this.actionName = 'agreeTrans'\r\n            this.doNext()\r\n        },\r\n        //反对\r\n        taskOppose() {\r\n            this.actionName = 'oppose'\r\n            this.doNext()\r\n        },\r\n        //反对（流转）\r\n        taskOpposeTrans() {\r\n            this.actionName = 'opposeTrans'\r\n            this.doNext()\r\n        },\r\n        hiddenOpertion() {\r\n            if (this.$refs.btnRegion) {\r\n                this.$refs.btnRegion.style.display = 'none'\r\n            }\r\n            this.$refs.formContent.hiddenContent()\r\n        },\r\n        //是否显示滚动条\r\n        isScroll() {\r\n            //屏幕宽度\r\n            let window_width = $(window).width()\r\n            //审批页面宽度\r\n            let from_w = $('main')[0].clientWidth\r\n            //有滚动条\r\n            if (window_width > from_w) {\r\n                return true\r\n            }\r\n            return false\r\n        },\r\n        //挂起\r\n        hangUp() {\r\n            flow.forbiddenInstance(this.instId).then((data) => {\r\n                if (data.state) {\r\n                    this.$message({type: 'success', message: data.message})\r\n                    this.checkInstStatus()\r\n                }\r\n            })\r\n        },\r\n        //取消挂起\r\n        cancelHangUp() {\r\n            flow.unForbiddenInstance(this.instId).then((data) => {\r\n                if (data.state) {\r\n                    this.$message({type: 'success', message: data.message})\r\n                    this.checkInstStatus(() => {\r\n                        this.isHang = false\r\n                        this.disabled = false\r\n                    })\r\n                }\r\n            })\r\n        },\r\n        //跳转到下一个任务\r\n        nextTask() {\r\n            let _this = this\r\n            if (_this.$route.name.indexOf('reportModuleInst') != -1) {\r\n                _this.$router.push(\r\n                    '/statement/template/preview/' +\r\n                        _this.$route.params.templateKey +\r\n                        '/todo/' +\r\n                        _this.$route.params.defKey +\r\n                        '/true'\r\n                )\r\n            } else {\r\n                this.$store\r\n                    .dispatch('storeProcess/getNextTaskByDefId', {\r\n                        defId: this.defId,\r\n                        defKey: this.defKey,\r\n                    })\r\n                    .then((resp) => {\r\n                        if (resp.state) {\r\n                            //跳转到新的待办页面\r\n                            if (resp.value) {\r\n                                this.handleOpenTask(resp.value)\r\n                            } else {\r\n                                this.$message({\r\n                                    type: 'success',\r\n                                    message: '该流程所属任务已处理完成',\r\n                                })\r\n                                setTimeout(() => {\r\n                                    if (\r\n                                        this.$route.name.indexOf(\r\n                                            'sysModuleInst'\r\n                                        ) != -1\r\n                                    ) {\r\n                                        _this.$router.push(\r\n                                            '/v-flow/v-todo/' +\r\n                                                _this.$route.params.defKey\r\n                                        )\r\n                                    } else {\r\n                                        _this.$router.push('/v-flow/v-todo/')\r\n                                    }\r\n                                }, 10)\r\n                            }\r\n                        }\r\n                    })\r\n            }\r\n        },\r\n        handleOpenTask(row) {\r\n            if (row.status == 'SHARE' || row.status == 'BACKSHARE') {\r\n                if (row.identityList && row.identityList.length == 1) {\r\n                    let url = '/task/' + row.id + '/' + row.identityList[0].id\r\n                    this.openAndReload(url)\r\n                } else {\r\n                    let html =\r\n                        '<select ref=' +\r\n                        Math.random() +\r\n                        ' id=\"approvalLeaderSelect\" style=\"width: 200px;height: 30px;border-radius: 4px;margin: 20px 70px;\" ><option value=\"\">请选择</option>'\r\n                    row.identityList.forEach((identity) => {\r\n                        html +=\r\n                            '<option value=\"' +\r\n                            identity.id +\r\n                            '\">' +\r\n                            identity.name +\r\n                            '</option>'\r\n                    })\r\n                    html += '</select>'\r\n                    let this_ = this\r\n                    this.$alert(html, '请选择一个领导代为审批', {\r\n                        dangerouslyUseHTMLString: true,\r\n                        beforeClose: function (action, instance, done) {\r\n                            if (action == 'confirm') {\r\n                                let se = document.getElementById(\r\n                                    'approvalLeaderSelect'\r\n                                )\r\n                                if (se.selectedIndex == 0) {\r\n                                    this.$message.warning(\r\n                                        '请选择代为审批的领导'\r\n                                    )\r\n                                } else {\r\n                                    instance.close()\r\n                                    this_.openAndReload(\r\n                                        '/task/' +\r\n                                            row.id +\r\n                                            '/' +\r\n                                            se[se.selectedIndex].value\r\n                                    )\r\n                                }\r\n                            } else {\r\n                                instance.close()\r\n                            }\r\n                        },\r\n                    })\r\n                }\r\n            } else if (\r\n                row.status == 'AGENT' &&\r\n                row.ownerId != row.assigneeId &&\r\n                row.ownerId == this.$store.state.login.currentUser.userId\r\n            ) {\r\n                //委托任务\r\n                this.$router.push('/instRead/' + row.procInstId + '/agent')\r\n            } else if (row.status == 'FOLLOW') {\r\n                //跟踪任务\r\n                this.$router.push('/taskRead/' + row.id + '/FOLLOW')\r\n            } else {\r\n                let url = '/task/' + row.id + '/0'\r\n                if (this.$route.name.indexOf('reportModuleInst') != -1) {\r\n                    url =\r\n                        '/reportModuleInst/' +\r\n                        row.id +\r\n                        '/0' +\r\n                        '/' +\r\n                        this.$route.params.defKey +\r\n                        '/true/' +\r\n                        this.$route.templateKey\r\n                } else if (this.$route.name.indexOf('sysModuleInst') != -1) {\r\n                    url =\r\n                        '/sysModuleInst/' +\r\n                        row.id +\r\n                        '/0' +\r\n                        '/' +\r\n                        this.$route.params.defKey +\r\n                        '/true'\r\n                }\r\n                this.openAndReload(url)\r\n            }\r\n        },\r\n        openAndReload(url) {\r\n            this.$router.push(url)\r\n            setTimeout(() => {\r\n                this.$root.$children[0].reload()\r\n            }, 10)\r\n        },\r\n    },\r\n    created() {\r\n        //兼容只显示审批页面时\r\n        if (this.$route.meta.single) {\r\n            this.isDd = true\r\n        }\r\n\r\n        if (this.type == 'done') {\r\n            this.dailogTitle = '撤回'\r\n            this.isHand = true\r\n        } else if (this.type == 'request') {\r\n            this.dailogTitle = '撤回到发起人'\r\n            this.isHand = false\r\n        }\r\n    },\r\n}\r\n",null]}