{"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\\todo.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\todo.vue","mtime":1667327529512},{"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//\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 { mapState, mapActions } from \"vuex\";\r\nimport process from \"@/api/process\";\r\nimport FlowTree from \"@/components/flow/flowTree.vue\";\r\nimport utils from \"@/utils.js\";\r\nimport { Message } from \"element-ui\";\r\nimport TaskImage from \"@/components/flow/task/taskImage.vue\";\r\nimport TaskToCopyTo from \"@/components/flow/task/taskToCopyTo.vue\";\r\nimport eipOrgSelector from \"@/components/eipControl/selector/EipOrgSelector.vue\";\r\nimport req from \"@/request.js\";\r\nconst STATUS = {\r\n  NORMAL: \"待办\",\r\n  TRANSFORMED: \"流转\",\r\n  TRANSFORMEDINQU: \"征询\",\r\n  DELIVERTO: \"转办\",\r\n  FOLLOW: \"跟踪\",\r\n  COMMU: \"沟通\",\r\n  BACK: \"驳回\",\r\n  ADDSIGN: \"会签加签\",\r\n  AGENT: \"委托\",\r\n  SHARE: \"共享\",\r\n  BACKSHARE: \"驳回共享\",\r\n  APPROVELINEED: \"并行审批\",\r\n  SIGNSEQUENCEED: \"顺序签署\",\r\n  SIGNLINEED: \"并行签署\",\r\n  USERADDSIGN:\"用户加签\",\r\n};\r\nexport default {\r\n  name: \"todo\",\r\n  components: {\r\n    FlowTree,\r\n    TaskToCopyTo,\r\n    eipOrgSelector,\r\n    TaskImage,\r\n  },\r\n  props: {\r\n    defKey: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    orgName: { type: String, default: \"\" },\r\n    orgId: { type: String, default: \"\" },\r\n  },\r\n  data() {\r\n    return {\r\n      isAsideShow:false,\r\n      batchHandleIds: [],\r\n      asideShow: false,\r\n      form: { tableData: \"\", date: \"\", orgName: \"\", orgId: \"\" },\r\n      status: STATUS,\r\n      currentTree: \"\",\r\n      fullscreenLoading: true,\r\n      sorter: [],\r\n      urgentStateConf: {},\r\n      urgentStateConfList: [],\r\n      urgentStateVal: \"\",\r\n      ids: \"\", //待办任务id集合\r\n      defaultFiledShowConf: \"\",\r\n      defaultFiledShowConfList: [\r\n        { name: \"subject\", desc: \"标题\", frontShow: true },\r\n        { name: \"procInstId\", desc: \"流程编号\", frontShow: true },\r\n        { name: \"procDefName\", desc: \"流程名称\", frontShow: true },\r\n        { name: \"name\", desc: \"任务名称\", frontShow: true },\r\n        { name: \"status\", desc: \"类型\", frontShow: true },\r\n        { name: \"createTime\", desc: \"创建时间\", frontShow: true },\r\n        { name: \"creator\", desc: \"创建人\", frontShow: true },\r\n        { name: \"urgentStateValue\", desc: \"紧急状态\", frontShow: true },\r\n        { name: \"dueExpDate\", desc: \"到期时间\", frontShow: false },\r\n        { name: \"ownerName\", desc: \"所属人\", frontShow: false },\r\n        { name: \"assigneeName\", desc: \"待审批人\", frontShow: false },\r\n        { name: \"prop1\", desc: \"扩展1\", frontShow: false },\r\n        { name: \"prop2\", desc: \"扩展2\", frontShow: false },\r\n        { name: \"prop3\", desc: \"扩展3\", frontShow: false },\r\n        { name: \"prop4\", desc: \"扩展4\", frontShow: false },\r\n        { name: \"prop5\", desc: \"扩展5\", frontShow: false },\r\n        { name: \"prop6\", desc: \"扩展6\", frontShow: false },\r\n      ],\r\n      selectInstanceId: \"\",\r\n      selectBpmnInstId: \"\",\r\n      selectDefId: \"\",\r\n      batchDialogVisible: false,\r\n      batchHandleSetting: {},\r\n      batchResultDialog: false,\r\n      batchCompleteList: [],\r\n      batchFailedList: [],\r\n      batchUnBatchableList: [],\r\n      batchNotAuthList: [],\r\n      failedMsgMap: {},\r\n      batchSubmitBtnLoad: false,\r\n      skipMsg:\"\",\r\n      unBatchMsg:\"\"\r\n    };\r\n  },\r\n  watch: {\r\n    \"form.orgId\": {\r\n      handler(newName, oldName) {\r\n        this.search(\"find\");\r\n      },\r\n      immediate: true,\r\n    },\r\n  },\r\n  computed: {\r\n    ...mapState('storeProcess',['rows','pagination','total']),\r\n    currentSwitchValue(){\r\n      return localStorage.todoAsideShow === 'true' || localStorage.todoAsideShow === true\r\n    }\r\n  },\r\n  created() {\r\n    this.getTaskList();\r\n    this.asideShow = this.currentSwitchValue\r\n    this.isAsideShow = this.currentSwitchValue\r\n  },\r\n  methods: {\r\n    //将当前展开或者收起的值存在localStorage中\r\n    handleSwitch(val){\r\n      localStorage.todoAsideShow = val\r\n    },\r\n    getTaskList() {\r\n      this.$http\r\n        .get(\r\n          \"${portal}/sys/sysProperties/v1/getDecryptByAlias?alias=taskListFiledConf\"\r\n        )\r\n        .then((resp) => {\r\n          let tempConf = {};\r\n          if (resp.data) {\r\n            tempConf = JSON.parse(resp.data.value);\r\n          } else {\r\n            tempConf = this.defaultFiledShowConfList;\r\n          }\r\n          this.formatConfListToObj(tempConf);\r\n        });\r\n\r\n      let querys = [];\r\n      if (this.defKey) {\r\n        querys.push({\r\n          property: \"bt.proc_def_key_\",\r\n          value: this.defKey,\r\n          operation: \"EQUAL\",\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      //判断是否有URL传参\r\n      if (this.orgName && this.orgId) {\r\n        this.form.orgName = this.orgName;\r\n        this.form.orgId = this.orgId;\r\n        querys.push({\r\n          group: \"orgId\",\r\n          property: \"inst.CREATE_ORG_PATH_\",\r\n          value: this.orgId,\r\n          operation: \"LIKE\",\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      let pageBean = {\r\n        pageBean: { page: \"1\", pageSize: \"10\", showTotal: \"true\" },\r\n        querys: querys,\r\n      }; //初次加载默认pageBean\r\n      // this.$store\r\n      //   .dispatch(\"storeProcess/getUrgentStateConf\", { getConf: true })\r\n      //   .then(data => {\r\n      this.$store\r\n        .dispatch(\"storeProcess/getTodoByPagination\", pageBean)\r\n        .then(() => {\r\n          //页面加载调用tudo.js里面的分页方法\r\n          this.fullscreenLoading = false;\r\n        });\r\n      // if (data.conf) {\r\n      //   try {\r\n      //     data.conf = JSON.parse(data.conf);\r\n      //   } catch (error) {\r\n      //     data.conf = eval(\"(\" + data.conf + \")\");\r\n      //   }\r\n      //   this.urgentStateConfList = data.conf;\r\n      //   let conf = {};\r\n      //   for (let index = 0, c; (c = data.conf[index++]); ) {\r\n      //     if (c.default) {\r\n      //       this.urgentStateConf.defaultValue = c.state;\r\n      //     }\r\n      //     conf[c.state] = c;\r\n      //   }\r\n      //   this.urgentStateConf.conf = conf;\r\n      // }\r\n      // });\r\n    },\r\n    rowClick(row, column, event) {\r\n      //操作列不触发多选按钮\r\n      if (column && column.label == \"流程图\") {\r\n        return;\r\n      }\r\n      this.$refs.htTable.toggleRowSelection(row);\r\n    },\r\n    //流程传阅\r\n    taskToCopyTo() {\r\n      if (this.ids == \"\") {\r\n        Message.warning(\"请选择要传阅的流程\");\r\n        return;\r\n      }\r\n      this.$refs.taskToCopyTo.handleClose(); //父组件调用子组件方法\r\n    },\r\n    //批量勾选待办流程获取\r\n    handleSelectionChange(val) {\r\n      this.ids = \"\";\r\n      if (val.length > 0) {\r\n        for (let i = 0; i < val.length; i++) {\r\n          this.ids = this.ids + val[i].id + \",\";\r\n        }\r\n        this.ids = this.ids.substring(0, this.ids.length - 1);\r\n      }\r\n    },\r\n    //Loading 加载中\r\n    openFullScreen() {\r\n      this.fullscreenLoading = true;\r\n    },\r\n    handleSizeChange: function (size) {\r\n      //每页下拉显示数据\r\n      this.$store.dispatch(\"storeProcess/setPaginationSize\", size);\r\n      this.search();\r\n    },\r\n    handleCurrentChange: function (currentPage) {\r\n      //点击第几页\r\n      this.$store.dispatch(\"storeProcess/setPaginationPageNum\", currentPage);\r\n      this.search();\r\n    },\r\n    //回车查询\r\n    searchEnterFun: function (e) {\r\n      var keyCode = window.event ? e.keyCode : e.which;\r\n      if (keyCode == 13) {\r\n        this.search(\"find\");\r\n      }\r\n    },\r\n    // 处理排序\r\n    handleSortChange: function (m) {\r\n      this.sorter.splice(\r\n        this.sorter.findIndex((s) => s.property == m.prop),\r\n        1\r\n      );\r\n      if (m.order) {\r\n        this.sorter.push({\r\n          property: m.prop,\r\n          direction: m.order == \"ascending\" ? \"ASC\" : \"DESC\",\r\n        });\r\n      }\r\n      this.search();\r\n    },\r\n    // 查询\r\n    search(str) {\r\n      if (str == \"find\") {\r\n        this.$store.dispatch(\"storeProcess/setPaginationPageNum\", 1);\r\n      }\r\n      let querys = []; //查询条件\r\n      let queryFilter = {};\r\n      let pageBean = { pageBean: this.pagination };\r\n      let beginDate = \"\"; //开始时间\r\n      let endDate = \"\"; //结束时间\r\n      let group = \"main\"; //判断条件\r\n      if (this.form.tableData) {\r\n        querys = [\r\n          {\r\n            property: \"bt.subject_\",\r\n            value: this.form.tableData,\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"OR\",\r\n          },\r\n          {\r\n            property: \"bt.proc_inst_id_\",\r\n            value: this.form.tableData,\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"OR\",\r\n          },\r\n          {\r\n            property: \"bt.proc_def_name_\",\r\n            value: this.form.tableData,\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"OR\",\r\n          },\r\n          {\r\n            property: \"bt.name_\",\r\n            value: this.form.tableData,\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"OR\",\r\n          },\r\n        ];\r\n        let temp = querys[0];\r\n        for (let index = 1; index < 7; index++) {\r\n          let query = JSON.parse(JSON.stringify(temp));\r\n          query.property = \"prop\" + index;\r\n          querys.push(query);\r\n        }\r\n      }\r\n      if (this.form.orgId) {\r\n        querys.push({\r\n          property: \"inst.CREATE_ORG_PATH_\",\r\n          value: this.form.orgId,\r\n          group: \"orgId\",\r\n          operation: \"LIKE\",\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      if (this.currentTree) {\r\n        querys.push({\r\n          property: \"bt.type_id_\",\r\n          value: this.currentTree,\r\n          group: \"typeId\",\r\n          operation: \"IN\",\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      if (this.defKey) {\r\n        querys.push({\r\n          property: \"bt.proc_def_key_\",\r\n          value: this.defKey,\r\n          operation: \"EQUAL\",\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      if (this.form.date) {\r\n        beginDate = utils.formatDate(this.form.date[0].getTime());\r\n        endDate = utils.formatDate(this.form.date[1].getTime());\r\n        querys.push({\r\n          property: \"bt.create_time_\",\r\n          value: [beginDate, endDate],\r\n          group: \"time\",\r\n          operation: \"BETWEEN\",\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      queryFilter = { pageBean: this.pagination, querys, sorter: this.sorter };\r\n      this.openFullScreen();\r\n      this.$store\r\n        .dispatch(\"storeProcess/getTodoByPagination\", queryFilter)\r\n        .then(() => {\r\n          this.fullscreenLoading = false;\r\n        });\r\n    },\r\n    //重置\r\n    reset() {\r\n      this.form = { tableData: \"\", date: \"\", orgName: \"\", orgId: \"\" };\r\n      this.search(\"find\");\r\n    },\r\n    handleRowClick(row,newWin) {\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.handleOpenUrl(url,newWin);\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(\"approvalLeaderSelect\");\r\n                if (se.selectedIndex == 0) {\r\n                  this.$message.warning(\"请选择代为审批的领导\");\r\n                } else {\r\n                  instance.close();\r\n                  this_.handleOpenUrl(\r\n                    \"/task/\" + row.id + \"/\" + se[se.selectedIndex].value\r\n                    ,newWin\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.handleOpenUrl(\"/instRead/\" + row.procInstId + \"/agent\",newWin);\r\n      } else if (row.status == \"FOLLOW\") {\r\n        //跟踪任务\r\n        this.handleOpenUrl(\"/taskRead/\" + row.id + \"/FOLLOW\",newWin);\r\n      } else {\r\n        let url = \"/task/\" + row.id + \"/0\";\r\n        if (this.defKey) {\r\n          url = \"/sysModuleInst/\" + row.id + \"/0\"+\"/\"+this.defKey+\"/true\";\r\n        }\r\n        this.handleOpenUrl(url,newWin);\r\n      }\r\n    },\r\n    handleOpenUrl(url,newWin){\r\n      if(!newWin){\r\n        this.$router.push(url);\r\n        return ;\r\n      }\r\n      if(!url){\r\n        return ;\r\n      }\r\n      let token = this.$store.state.login.currentUser.token;\r\n      if(!url.toLowerCase().startsWith(\"http\")){\r\n        url = window.context.front + url;\r\n      }\r\n      if(url.indexOf('?') == -1){\r\n        url = url + \"?token=\" + token;\r\n      }else{\r\n        url = url + \"&token=\" + token;\r\n      }\r\n      window.open(url,\"_blank\");\r\n    },\r\n    //子组件传值父组件(待办分类查询)\r\n    getCurrent(data) {\r\n      if (data.id == 6) {\r\n        this.currentTree = \"\";\r\n        this.openFullScreen();\r\n        let pageBean = { pageBean: this.pagination };\r\n        this.$store\r\n          .dispatch(\"storeProcess/getTodoByPagination\", pageBean)\r\n          .then(() => {\r\n            this.fullscreenLoading = false;\r\n          });\r\n      } else {\r\n        let ids = [];\r\n        this.getFlowTrees(data, ids);\r\n        this.currentTree = ids.join(\",\");\r\n        this.search(\"find\");\r\n      }\r\n    },\r\n    getFlowTrees(data, ids) {\r\n      ids.push(data.id);\r\n      let arr = data.children;\r\n      for (var i = 0; i < arr.length; i++) {\r\n        this.getFlowTrees(arr[i], ids);\r\n      }\r\n    },\r\n    formatConfListToObj(tempList) {\r\n      let editConfObj = {};\r\n      tempList.forEach((c) => {\r\n        let key = c.name;\r\n        editConfObj[key] = c;\r\n      });\r\n      this.$set(this, \"defaultFiledShowConf\", editConfObj);\r\n    },\r\n    loadCount() {\r\n      return process.getCountByUserId(this.pagination);\r\n    },\r\n    computeTime(deadline) {\r\n      if (deadline) {\r\n        let time = new Date(deadline).getTime();\r\n        let nowTime = new Date().getTime();\r\n        let duration = time - nowTime;\r\n        if (duration > 0)\r\n          return deadline;\r\n        else {\r\n          let hour = Math.floor((Math.abs(duration/3600000)));\r\n          let minute = Math.ceil(Math.abs((duration%3600000)/60000));\r\n          return \"已到期\" + hour + \"时\" + minute + \"分\";\r\n        }\r\n\r\n      }\r\n      return \"\";\r\n    },\r\n    computeColor(deadline) {\r\n      if (deadline) {\r\n        let time = new Date(deadline).getTime();\r\n        let nowTime = new Date().getTime();\r\n        let day = (time - nowTime) / 86400000;\r\n        if (day > 0)\r\n          //绿色\r\n          return { color: \"#22870D\" };\r\n        else {\r\n          if (Math.ceil(Math.abs(day)) >= 3)\r\n            //红色\r\n            return { color: \"#F1300A\" };\r\n          //黄色\r\n          else return { color: \"#E1A306\" };\r\n        }\r\n      }\r\n      return {};\r\n    },\r\n    async handleShowTaskImage(row) {\r\n      await this.changeSeletion(row);\r\n      this.$refs.taskImage.handleOpen();\r\n    },\r\n    changeSeletion(row) {\r\n      this.selectInstanceId = row.procInstId;\r\n      this.selectBpmnInstId = row.bpmnInstId;\r\n    },\r\n    batchHandle() {\r\n      let selectTasks = this.$refs.htTable.selection;\r\n      if (!selectTasks || selectTasks.length == 0) {\r\n        this.$message({ type: \"warning\", message: \"请至少选择一条任务\" });\r\n        return;\r\n      }\r\n      //忽略掉非待办类型的任务\r\n      let ids = [];\r\n      this.skipMsg = \"\";\r\n      for (let i = selectTasks.length - 1; i >= 0; i--) {\r\n        if (selectTasks[i].status == \"NORMAL\") {\r\n          ids.push(selectTasks[i].id);\r\n        } else {\r\n          this.skipMsg += selectTasks[i].subject + \"</br>\";\r\n          selectTasks.splice(i,1);  \r\n        }\r\n      }\r\n      if (ids.length > 0) {\r\n        req.get(\"${bpmRunTime}/runtime/task/v1/filterUnBatchable?taskIds=\"+ids.join(\",\")).then(resp=>{\r\n          if(resp.data.state && resp.data.value){\r\n            if(resp.data.value.length != ids.length){\r\n              ids = resp.data.value;\r\n              let unBatchMsg = \"以下任务未配置批量处理<br/>\";\r\n              for(let i = selectTasks.length - 1 ; i >= 0 ; i--){\r\n                if(!resp.data.value.includes(selectTasks[i].id)){\r\n                  unBatchMsg += selectTasks[i].subject + \"<br/>\";\r\n                  selectTasks.splice(i,1);\r\n                }\r\n              }\r\n              //this.$message({type:\"warning\",dangerouslyUseHTMLString:true,message:unBatchMsg});\r\n              this.unBatchMsg = unBatchMsg;\r\n            }\r\n            if(ids && ids.length > 0){\r\n              this.batchHandleIds = ids;\r\n               this.batchDialogVisible = true;\r\n            }else{\r\n              this.showMsg();\r\n            }\r\n          }\r\n        })\r\n      }else{\r\n        if(this.skipMsg){\r\n          this.showMsg();\r\n        }\r\n      }\r\n      this.batchHandleCheck();\r\n    },\r\n    batchHandleCheck(){\r\n      \r\n    },\r\n    batchHandleSubmit() {\r\n      let errMsg = \"\";\r\n      this.batchSubmitBtnLoad = true;\r\n      if (!this.batchHandleSetting.opinion || !this.batchHandleSetting.action) {\r\n        errMsg = \"完善表单信息\";\r\n      }\r\n      if (\r\n        this.batchHandleSetting.action == \"reject\" &&\r\n        (!this.batchHandleSetting.backHandMode ||\r\n          !this.batchHandleSetting.rejectType)\r\n      ) {\r\n        errMsg = \"请完善驳回设置\";\r\n      }\r\n      if (errMsg) {\r\n        this.$message({ type: \"warning\", message: errMsg });\r\n        this.batchSubmitBtnLoad = false;\r\n        return;\r\n      }\r\n      let action;\r\n      if (this.batchHandleSetting.action == \"agree\") {\r\n        action = \"agree\";\r\n      } else {\r\n        action =\r\n          this.batchHandleSetting.rejectType || this.batchHandleSetting.action;\r\n      }\r\n      this.$http\r\n        .post(window.context.bpmRunTime + \"/runtime/task/v1/batchHandle\", {\r\n          taskIds: this.batchHandleIds.join(\",\"),\r\n          action: action,\r\n          opinion: this.batchHandleSetting.opinion,\r\n        })\r\n        .then((resp) => {\r\n          if (resp.data && resp.data.state) {\r\n            this.batchDialogVisible = false;\r\n            this.batchSubmitBtnLoad=false;\r\n            this.showBatchResult(resp.data.value);\r\n          }\r\n        });\r\n    },\r\n    showBatchResult(taskMaps) {\r\n      this.batchCompleteList = taskMaps[\"complete\"];\r\n      this.batchFailedList = taskMaps[\"failedList\"];\r\n      this.batchUnBatchableList = taskMaps[\"unHandleList\"];\r\n      this.batchNotAuthList = taskMaps[\"notAuth\"];\r\n      this.failedMsgMap = taskMaps[\"failedMsg\"];\r\n      this.batchResultDialog = true;\r\n    },\r\n    afterBatchClose() {\r\n      this.batchDialogVisible = false;\r\n      this.batchHandleSetting = {};\r\n    },\r\n    afterResultClose() {\r\n      this.batchCompleteList = [];\r\n      this.batchFailedList = [];\r\n      this.batchUnBatchableList = [];\r\n      this.batchNotAuthList = [];\r\n      this.failedMsgMap = [];\r\n      this.batchResultDialog = false;\r\n      this.search(\"find\");\r\n    },\r\n    open(row) {\r\n      let token = this.$store.state.login.currentUser.token;\r\n      if (row.status == \"SHARE\" || row.status == \"BACKSHARE\") {\r\n        if (row.identityList && row.identityList.length == 1) {\r\n          let url =\r\n            \"/task/\" +\r\n            row.id +\r\n            \"/\" +\r\n            row.identityList[0].id +\r\n            \"?token=\" +\r\n            token;\r\n          //this.$router.push(url);\r\n          window.open(window.context.front + url, \"_blank\");\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(\"approvalLeaderSelect\");\r\n                if (se.selectedIndex == 0) {\r\n                  this.$message.warning(\"请选择代为审批的领导\");\r\n                } else {\r\n                  instance.close();\r\n                  /*this_.$router.push(\r\n                          \"/task/\" + row.id + \"/\" + se[se.selectedIndex].value\r\n                  );*/\r\n                  let url =\r\n                    window.context.front +\r\n                    \"/task/\" +\r\n                    row.id +\r\n                    \"/\" +\r\n                    se[se.selectedIndex].value +\r\n                    \"?token=\" +\r\n                    token;\r\n                  window.open(url, \"_blank\");\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        window.open(\r\n          window.context.front +\r\n            \"/instRead/\" +\r\n            row.procInstId +\r\n            \"/agent\" +\r\n            \"?token=\" +\r\n            token,\r\n          \"_blank\"\r\n        );\r\n      } else if (row.status == \"FOLLOW\") {\r\n        //跟踪任务\r\n        //this.$router.push(\"/taskRead/\" + row.id + \"/FOLLOW\");\r\n        window.open(\r\n          window.context.front +\r\n            \"/taskRead/\" +\r\n            row.id +\r\n            \"/FOLLOW\" +\r\n            \"?token=\" +\r\n            token,\r\n          \"_blank\"\r\n        );\r\n      } else {\r\n        let url = \"/task/\" + row.id + \"/0\";\r\n        if (this.defKey) {\r\n          url += \"/noSingle\" + \"?token=\" + token;\r\n        }\r\n        //this.$router.push(url);\r\n        window.open(window.context.front + url, \"_blank\");\r\n      }\r\n    },\r\n    doneView(procId) {\r\n      let token = this.$store.state.login.currentUser.token;\r\n      let url =\r\n        window.context.front + \"/inst/\" + procId + \"/doneList?token=\" + token;\r\n      window.open(url, \"_blank\");\r\n    },\r\n    afterOpen(){\r\n      this.showMsg();\r\n    },\r\n    showMsg(){\r\n      let message=\"\";\r\n      if(this.skipMsg){\r\n        message = \"以下任务不是待办任务，不支持批量处理:</br>\" + this.skipMsg + \"<br/>\";\r\n      }\r\n      if(this.unBatchMsg){\r\n        message += this.unBatchMsg;\r\n      }\r\n      if (message) {\r\n        this.$message({\r\n          dangerouslyUseHTMLString:true,\r\n          message,\r\n          type: \"warning\",\r\n        });\r\n      }\r\n    },\r\n  },\r\n};\r\n",null]}