{"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: \"本栏目无模板\",\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 = `${err}`;\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 = `${err}`;\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 \"\";\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]}