{"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\\common\\HtColumn.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\common\\HtColumn.vue","mtime":1667327529012},{"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\r\nimport req from \"@/request.js\";\r\nimport VRuntimeTemplate from \"v-runtime-template\";\r\nimport { mapState } from \"vuex\";\r\nimport homeTodo from \"@/components/home/homeTodo.vue\";\r\nimport todayMeeting from \"@/components/home/todayMeeting.vue\";\r\nimport oftenFlow from \"@/components/home/oftenFlow.vue\";\r\nimport oftenFlowList from \"@/components/home/oftenFlowList.vue\";\r\nimport homeNotice from \"@/components/home/homeNotice.vue\";\r\nimport homeNews from \"@/components/home/homeNews.vue\";\r\nimport homeCarousel from \"@/components/home/homeCarousel.vue\";\r\nimport homeNewsList from \"@/components/home/homeNewsList.vue\";\r\nimport oftenSystem from \"@/components/home/oftenSystem.vue\";\r\nimport customChart from \"@/components/home/customChart.vue\";\r\nconst eipChart = () => import(\"@/components/form/chart/EipChart.vue\");\r\nconst chart = () => import(\"@/components/form/chart/Chart.vue\");\r\nimport CustomDialogShowDetail from \"@/components/dialog/CustomDialogShowDetail.vue\";\r\nimport homeInst from \"@/components/home/homeInst.vue\";\r\nlet Base64 = require(\"js-base64\").Base64;\r\nconst templatePreview = () => import(\"@/components/dataTemplate/templatePreview.vue\");\r\nimport hotentUiUtils from \"@/hotent-ui-util.js\";\r\n\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\n\r\nexport default {\r\n  name: \"ht-column\",\r\n  components: {\r\n    VRuntimeTemplate,\r\n    homeTodo,\r\n    todayMeeting,\r\n    oftenFlow,\r\n    oftenFlowList,\r\n    homeNotice,\r\n    homeNews,\r\n    homeCarousel,\r\n    oftenSystem,\r\n    customChart,\r\n    eipChart,\r\n    chart,\r\n    homeNewsList,\r\n    CustomDialogShowDetail,\r\n    homeInst,\r\n    templatePreview\r\n  },\r\n  props: {\r\n    columnAlias: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    // 是否来自于预览页面\r\n    fromPreview:{\r\n      type:Boolean,\r\n      default:false\r\n    }//是否存在tab标签中\r\n    ,isTab:{\r\n      type:Boolean,\r\n      default:false\r\n    },\r\n  },\r\n  data() {\r\n    return {\r\n      status:STATUS,\r\n      loading: true,\r\n      html: \"<span>本栏目无模板</span>\",\r\n      data: {},\r\n      column: {},\r\n      isCommon: false,\r\n      isChart: false,\r\n      isReport: false,\r\n      isCustomDialog: false,\r\n      customDialog: { alias: \"\" },\r\n      pageBean: { page: 1, pageSize: 20, total: 0, showTotal: false },\r\n      canDisplay:true,\r\n      isTemplate:false,\r\n      templateKey:\"\",\r\n    };\r\n  },\r\n  computed: mapState({\r\n    columnDataLoadedAliases: state => state.menu.columnDataLoadedAliases\r\n  }),\r\n  watch: {\r\n    \"column.colHeight\": function(val) {\r\n      if (val && val > 0) {\r\n        this.$refs.colBody.style.height = val + \"px\";\r\n      }\r\n    },\r\n    \"pageBean.page\": function(val) {\r\n      if (val && val > 0 && this.column.needPage == 1) {\r\n        this.load();\r\n      }\r\n    },\r\n    columnDataLoadedAliases: {\r\n      handler: function(v) {\r\n        v &&\r\n          this.handleColumnData(\r\n            this.$store.getters[\"menu/getColumnDataWithAlias\"](this.columnAlias)\r\n          );\r\n      },\r\n      immediate: true\r\n    }\r\n  },\r\n  created() {\r\n    this.load(true);\r\n  },\r\n  methods: {\r\n    handleTodoListClick(item){\r\n      this.$router.push(\"/v-flow/v-todo/\"+item.orgName+\"/\"+item.orgId);\r\n    },\r\n    openMore(url) {\r\n      this.$router.push({ path: url });\r\n    },\r\n    refresh() {\r\n      this.load();\r\n    },\r\n    close() {\r\n      this.$refs.col.remove();\r\n    },\r\n    load(batch) {\r\n      // 多个栏目一起请求时，合并为一次请求后台\r\n      if (batch) {\r\n        // 不需要回调处理数据，通过vuex监听数据更新\r\n        this.$store.dispatch(\"menu/getColumnByAliasBatch\", this.columnAlias);\r\n      } else {\r\n        this.loading = true;\r\n        this.$store\r\n          .dispatch(\"menu/getColumnByAlias\", this.columnAlias)\r\n          .then(data => {\r\n            this.handleColumnData(data);\r\n          });\r\n      }\r\n    },\r\n    handleColumnData(data) {\r\n      if (!data) {\r\n        this.loading = false;\r\n        this.canDisplay= false;\r\n        return;\r\n      }\r\n      this.column = data;\r\n      //计算该栏目是否展示\r\n      if(this.fromPreview){\r\n        this.canDisplay=true;\r\n      }else{\r\n        this.canDisplay=this.column.displayRights;\r\n      }\r\n      //如果无展示权限，则不进行栏目数据渲染了，并隐藏整个组件\r\n      if(!this.canDisplay){\r\n        this.loading = false;\r\n        return;\r\n      }\r\n      if (\r\n        this.column &&\r\n        (this.column.colType == 1 || this.column.colType == 4)\r\n      ) {\r\n        let dataParam = JSON.parse(this.column.dataParam);\r\n        if (dataParam.chartType == 2) {\r\n          this.chartId = dataParam.id;\r\n          this.isChart = true;\r\n          this.loading = false;\r\n        } else {\r\n          this.isReport = true;\r\n          this.getChartsData(dataParam.id);\r\n        }\r\n      } else {\r\n        //自定义对话框\r\n        if (this.column.dataMode === 1) {\r\n          this.getCustomDialogData();\r\n        }\r\n        //restful查询\r\n        else if (this.column.dataMode === 3) {\r\n          this.isCommon = true;\r\n          this.getDataToParse();\r\n        }else if(this.column.dataMode === 4){\r\n          //数据报表\r\n          if(this.column.dataFrom){\r\n            let dataFrom = JSON.parse(this.column.dataFrom);\r\n            this.templateKey = dataFrom.alias;\r\n          }\r\n          this.isTemplate = true;\r\n          this.loading = false;\r\n        } else {\r\n          this.isCommon = true;\r\n          this.dencodeHtml();\r\n          this.loading = false;\r\n        }\r\n      }\r\n    },\r\n    //图标\r\n    getChartsData(id) {\r\n      this.$store.dispatch(\"storeProcess/getEchartData\", id).then(response => {\r\n        this.data = response.options;\r\n        this.loading = false;\r\n        this.dencodeHtml();\r\n      });\r\n    },\r\n    getDataToParse() {\r\n      let column = this.column;\r\n      if (!column.dataFrom) {\r\n        this.dencodeHtml();\r\n        this.loading = false;\r\n        return;\r\n      }\r\n      if (column.colType != 1) {\r\n        //post请求参数\r\n        let queryParams = {};\r\n        //如果需要分页\r\n        if (column.needPage === 1) {\r\n          queryParams.pageBean = this.pageBean;\r\n        }\r\n        //get请求参数\r\n        let urlParam = \"\";\r\n        if (column.dataParam) {\r\n          let ctx = {};\r\n          const  curUserDetail= this.$store.state.user.currentUserDetail;\r\n          if (curUserDetail && curUserDetail.user) {\r\n            ctx.curUserAccount = curUserDetail.user.account;\r\n            ctx.curUserId = curUserDetail.user.id;\r\n          }\r\n          column.dataParam =  hotentUiUtils.parseExp(column.dataParam, ctx);\r\n        }\r\n        let dataParam = JSON.parse((typeof(column.dataParam)!='undefined' && column.dataParam != \"\")?column.dataParam.replace(/\\\\\\\\/g,'\\\\'):\"[]\");\r\n        if (dataParam) {\r\n          for (var i = 0; i < dataParam.length; i++) {\r\n            var value = dataParam[i][\"value\"];\r\n            var name = dataParam[i][\"name\"];\r\n            if (column.requestType == \"POST\") {\r\n              try {\r\n                value = JSON.parse(value);\r\n              } catch (e) {}\r\n              queryParams[name] = value;\r\n              //如果参数中也设置了分页\r\n              if (name === \"pageBean\") {\r\n                this.pageBean = value;\r\n              }\r\n            } else {\r\n              urlParam =\r\n                i > 0\r\n                  ? urlParam + \"&\" + name + \"=\" + value\r\n                  : \"?\" + name + \"=\" + value;\r\n            }\r\n          }\r\n        }\r\n        //请求获取数据\r\n        if (column.requestType && column.requestType == \"POST\") {\r\n          req.post(column.dataFrom, queryParams).then(\r\n            response => {\r\n              this.data = response.data;\r\n              this.loading = false;\r\n              if (this.column.needPage === 1) {\r\n                this.pageBean.page = this.data.page || 1;\r\n                this.pageBean.pageSize = this.data.pageSize || 10;\r\n                this.pageBean.total = this.data.total || 0;\r\n              }\r\n              this.dencodeHtml();\r\n            },\r\n            err => {\r\n              this.loading = false;\r\n              this.html = `<span style='color:red;'>${err}</span>`;\r\n            }\r\n          );\r\n        } else {\r\n          req.get(column.dataFrom + urlParam).then(\r\n            response => {\r\n              this.data = response.data;\r\n              this.loading = false;\r\n              this.dencodeHtml();\r\n            },\r\n            err => {\r\n              this.loading = false;\r\n              this.html = `<span style='color:red;'>${err}</span>`;\r\n            }\r\n          );\r\n        }\r\n      }\r\n    },\r\n    getCustomDialogData() {\r\n      let this_ = this;\r\n      let dataFrom = JSON.parse(this.column.dataFrom || \"{}\");\r\n      if (!dataFrom.alias) {\r\n        this_.loading = false;\r\n        this_.isCommon = true;\r\n        this.dencodeHtml();\r\n        return;\r\n      }\r\n      let url =\r\n        \"${form}/form/customDialog/v1/getByAlias?alias=\" + dataFrom.alias;\r\n      req.get(url).then(function(customDialog) {\r\n        customDialog = customDialog.data;\r\n        //格式化对话框的显示字段、返回字段、条件字段、排序字段\r\n        customDialog.displayfield = JSON.parse(customDialog.displayfield);\r\n        for (let i = 0; i < customDialog.displayfield.length; i++) {\r\n          customDialog.displayfield[i].field = customDialog.displayfield[\r\n            i\r\n          ].field.toUpperCase();\r\n        }\r\n        customDialog.resultfield = JSON.parse(customDialog.resultfield);\r\n        customDialog.sortfield = JSON.parse(customDialog.sortfield);\r\n        customDialog.conditionfield = JSON.parse(customDialog.conditionfield);\r\n        //列表\r\n        if (customDialog.style == 0) {\r\n          this_.customDialog = customDialog;\r\n          this_.isCustomDialog = true;\r\n          this_.loading = false;\r\n          setTimeout(() => {\r\n            this_.$refs.customDialogShowDetail.initData(); //显示自定义对话框列表预览弹框\r\n          });\r\n        }\r\n      });\r\n    },\r\n    dencodeHtml() {\r\n      if (this.column.templateHtml) {\r\n        this.column.html = Base64.decode(this.column.templateHtml);\r\n      } else {\r\n        if (Array.isArray(this.data)) {\r\n          this.reportOption = this.data[0];\r\n        }\r\n      }\r\n    },\r\n    handleRowClick(url,newWin) {\r\n      if(url && (url.startsWith(\"/inst/\") || url.startsWith(\"/start/\"))){\r\n        this.handleOpenUrl(url,newWin);\r\n        return ;\r\n      }\r\n      this.$router.push(url);\r\n    },\r\n    handleTodoClick(row,newWin) {\r\n      if (row.status == \"SHARE\" || row.status == \"BACKSHARE\") {\r\n        if (row.identityList && row.identityList.length == 1) {\r\n          this.handleOpenUrl(\"/task/\" + row.id + \"/\" + row.identityList[0].id,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,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 {\r\n        this.handleOpenUrl(\"/task/\" + row.id + \"/0\",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    clickApp(app){\r\n      //1常规应用 2数据报表 3自定义视图 4图表\r\n      if (app.type==4){\r\n        let content = JSON.parse(app.content);\r\n        this.$router.push({path: 'appContent',query:{id: content.id,type: app.type}})\r\n      }else if (app.type===2){\r\n        let content = JSON.parse(app.content);\r\n        this.$router.push({path: 'appContent',query:{key: content.key,type: app.type}});\r\n      }else if (app.type===3){\r\n        let content = JSON.parse(app.content);\r\n        this.$router.push({path: 'appContent',query:{alias: content.alias, sqlAlias: content.sqlAlias, type: app.type}});\r\n      }else if (app.type===1){\r\n        this.$router.push({path: \"appContent\", query:{id: app.id,type: app.type}});\r\n      }else if (app.type===6){\r\n        let content = JSON.parse(app.content);\r\n        this.$router.push({path: 'appContent',query:{id: content.id,type: app.type}})\r\n      }else if (app.type===7){\r\n        this.$router.push({path: 'appContent',query:{path: app.content,type: app.type}})\r\n      }\r\n    }\r\n  }\r\n};\r\n",null]}