{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/badp-bcxin-web-5.x-vue/src/components/view_listview.vue?vue&type=script&lang=js&","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/src/components/view_listview.vue","mtime":1725957645732},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/babel-loader/lib/index.js","mtime":315532800000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-vue/node_modules/vue-loader/lib/index.js","mtime":1655715099000}],"contextDependencies":[],"result":["\nimport form_searchform from \"@/components/form_searchform.vue\";\nimport mdialog from \"@/components/dialog.vue\";\nimport form_normalform from \"@/components/form_normalform.vue\";\nimport Constant from \"@/Constant.js\";\nimport Watermark from \"@/assets/js/watermark\"; //路径不要写错\nimport qrcodeMethod from \"@/assets/js/qrcodeMethod.js\";\nimport view_multi_table from \"../expandedComponents/view_multi_level_table.vue\";\nimport isJSON from \"@/assets/js/isJSON.js\";\nexport default {\n name: \"view-listview\",\n props: {\n view: Object,\n openParams: Object,\n clearCheckboxVal: String,\n mutil: Boolean, //视图选择框多选\n selectOne: Boolean, //视图选择框多选\n isView: Boolean, //判断是否是视图选择框\n allowOpenDoc: Boolean,\n showtype: String,\n selectedRows: Array,\n callback: Function,\n delegateWidth: Number,\n includeDisplayType: Number, //包含元素为只读时的displayType=1\n toTab: Function, //如果是包含元素或者选项卡,使用该方法打开新标签页\n isFormPrint: Number,\n currentTab: Number,\n isWidgetChartView: Boolean, //首页widget的视图数据\n tableHeight: {\n // 表格的高度\n type: Number,\n default: 650,\n // default: document.documentElement.clientHeight - 55 - 40 -15 -45 -50 -18 -20 -4, // 55: 按钮 40:页码 15:padding 45:tabs(padding-top) 50: header 18:table的padding 20:padding-bottom 4: border\n // default: document.documentElement.clientHeight - 55 - 40 - 15 - 45 - 50 - 18 - 20 - 4 , // 55: 按钮 40:页码 15:padding 45:tabs(padding-top) 50: header 18:table的padding 20:padding-bottom 4: border\n },\n fixationHeight: String, //后台设置的视图高度\n isMultiLevelListHeader: Boolean, //判断是不是多级类表头\n multiLevelColumnData: Array, //多级列列表头\n },\n provide() {\n return {\n calctextJump: this.calctextJump,\n };\n },\n\n inject: [\"addTab\", \"setListViewDocIds\"],\n components: {\n form_searchform,\n form_normalform,\n mdialog,\n view_multi_table,\n },\n watch: {\n clearCheckboxVal() {\n if (this.clearCheckboxVal) {\n this.toggleSelection();\n }\n },\n\n currentTab() {\n if (this.view.waterMarkText) {\n let val = this.view.waterMarkText;\n let id = \"view_\" + this.view.id;\n Watermark.set(val, id);\n }\n },\n isOpenTemplate: {\n //是否显示高级查询表单\n deep: true,\n handler: function () {\n if (this.isOpenTemplate == true) {\n //常用查询数据映射到高级查询数据\n let hightData = this.$refs.searchform.getAllFields(); //高级查询数据\n let commonData = this.$parent.$refs.searchform.buildSearchData(); //常用数据\n for (let key in commonData) {\n if (hightData) {\n for (let j = 0; j < hightData.length; j++) {\n if (key == hightData[j].name) {\n hightData[j].value = commonData[key];\n }\n }\n }\n }\n } else {\n //高级查询数据映射到常用查询数据\n let retract = true; //是否点收起按钮\n let formdata = this.$parent.$refs.searchform.formdata; //常用form_customize_search的formdata\n if (retract) {\n let hightData =\n this.$parent.$refs.delegate.$refs.searchform.getAllFields(); //高级查询数据\n for (let x = 0; x < formdata.fields.length; x++) {\n if (hightData) {\n for (let j = 0; j < hightData.length; j++) {\n if (formdata.fields[x].name == hightData[j].name) {\n formdata.fields[x].value = hightData[j].value;\n }\n }\n }\n }\n }\n retract = false;\n }\n },\n },\n \"openParams.randomNumber\": {\n //点击一次菜单刷新一次视图\n deep: true,\n handler: function () {\n this.currentPage = 1;\n this.getData(1);\n },\n },\n },\n computed: {\n includeHeight() {//根据每页的页码条数,来动态增加表格列表的高度\n let pagination = this.view.pagination;\n if (pagination) {\n let pagesize = this.pagesize;\n if (pagesize == \"5\") {\n //每条45*5条+列名(45)\n return \"270\";\n } else if (pagesize == \"10\") {\n return \"495\";\n } else if (pagesize == \"15\") {\n return \"675\";\n } else if (pagesize == \"20\") {\n return \"945\";\n } else if (pagesize == \"30\") {\n return \"1395\";\n } else if (pagesize == \"40\") {\n return \"1845\";\n } else if (pagesize == \"50\") {\n return \"2295\";\n } else if (pagesize == \"100\") {\n return \"4545\";\n }\n } else if (pagesize == \"300\") {\n return 45 * 300 + 45;\n } else if (pagesize == \"500\") {\n return 45 * 500 + 45;\n } else if (pagesize == \"1000\") {\n return 45 * 1000 + 45;\n } else {\n return \"350\";\n }\n },\n },\n destroyed() {\n //离开该页面需要移除这个监听的事件\n window.removeEventListener(\"scroll\", this.handleTableScroll);\n window.removeEventListener(\"resize\", this.resize); //取消监听屏幕\n },\n mounted() {\n if (this.selectedRows && this.selectedRows.length) {\n this.selectedRows.forEach(row => {\n this.$refs.multipleTable.toggleRowSelection(row, true);//加载回显表格选中-》handleSelectionChange(val)的val为选中的对象--核心\n })\n }\n this.tableSelection = this.selectedRows && this.selectedRows.length && JSON.parse(JSON.stringify(this.selectedRows))//回显传递props的值,因为不能直接修改props的值,所以深拷贝,不做响应值\n\n window.addEventListener(\"resize\", this.resize); //监听屏幕根据屏幕自适应大小重新渲染Dom\n if (this.showtype == \"home\") {\n //首页widget仅显示5条\n this.getData(1, 5);\n } else {\n let searchData = ''\n if (localStorage.getItem('homeTemplateBoradType') == 'rtpayTemplate') {//rt环境不走高筛\n this.getData('', '', searchData);\n } else {\n setTimeout(() => {\n if (this.$refs.searchform) {//优化mounted第一次加载--默认查询高筛默认选中的输入框,下拉框值 \n let data = this.$refs.searchform.buildSearchData()\n searchData = JSON.parse(JSON.stringify(data));\n console.log(data)\n this.getData('', '', searchData);\n } else {\n this.getData('', '', searchData);\n }\n }, 700)\n }\n }\n if (this.$store.state.searchFlag == 2) {\n if (this.$store.state.pageDataStore.length) {\n this.$store.state.pageDataStore.forEach(item => {\n if (item.appId == this.openParams.appId && item.viewId == this.view.id) {//this.openParams.appId(应用id->appId)与this.view.id(视图id->viewId)\n setTimeout(() => {\n this.currentPage = item.page;\n this.pagesize = item.pagesize;\n this.currentPageSize = item.pagesize\n }, 1500)\n }\n })\n }\n }\n //监听table的滚动条事件\n this.$refs.multipleTable.bodyWrapper.addEventListener(\n \"scroll\",\n this.handleTableScroll\n );\n\n console.log(document.documentElement.clientHeight);\n\n console.log(this.openParams);\n },\n updated() {\n //更新生命周期触发\n this.$refs.multipleTable && this.$refs.multipleTable.doLayout(); //重新刷新页面解决fix固定列问题 \n },\n\n data: function () {\n return {\n currentPage: 1,\n checkedAll: [],\n tableData: [],\n row_count: 0,\n currentPageParams: {},\n currentPageSize: \"\",\n documents: \"\",\n searchExcelData: \"\",\n pagesize: 0,\n isOpenTemplate: false, //是否打开查询表单\n // view: { columns: [] }\n expends: [],\n tableDataIndex: 0,\n Constant,\n classObject: {\n background: \"#F9F9F9\",\n color: \"#5A6779\",\n textAlign: \"left\",\n },\n doCreateId: [], //当前页新建后默认打开的行数据id\n loading: true,\n tableLoading: true,\n emptyData: \"\", //清空暂无数据字体\n isShowImg: false,\n addHtml: \"\",\n reloadListViewRandom: \"\",\n listViewScrollTop: 0, //记录列表视图滚动条位置\n selectColumn: [],\n timeStamp: \"\",\n filterInformations: [], //要筛选的列\n multipleTableHeight: \"\", //this.$refs.multipleTable.$el.style.height\n filterTipLocation: {\n x: 0,\n y: 0,\n index: \"\",\n filtersList: [],\n selectfilterColumn: [],\n columns: {},\n },\n isShowfilterTip: false,\n tableSelection: [], //表格选中的行\n isRunGetData: false,\n // delegateWidthT:''\n };\n },\n\n methods: {\n resize() {\n //监听屏幕根据屏幕自适应大小重新渲染Dom\n this.$refs.multipleTable && this.$refs.multipleTable.doLayout(); //重新刷新页面解决fix固定列问题\n },\n setItemProgress(row) {\n if (row) {\n let rowObj = JSON.parse(row);\n if (rowObj.color == \"#eff2f6\") {\n //灰色 0\n return 0;\n } else if (rowObj.color != \"#15cd64\") {\n //除了绿色 其他铺满\n return 100;\n } else {\n return rowObj.percent;\n }\n } else {\n return 0;\n }\n },\n //进度条文本格式\n formatPercentText(row) {\n if (row) {\n let rowObj = JSON.parse(row);\n return () => {\n if (rowObj.color == \"#eff2f6\") {\n //灰色 0\n return \"\" + rowObj.percent + \"%\";\n } else if (rowObj.color == \"#15cd64\") {\n //除了绿色 其他铺满\n return \"\" + rowObj.percent + \"%\";\n } else {\n return \"\" + rowObj.percent + \"%\" + \" \" + rowObj.status;\n }\n };\n } else {\n return () => {\n return \"\";\n };\n }\n },\n //判断是鼠标复制还是点击事件\n getSelected() {\n // debugger\n if (window.getSelection) {\n return window.getSelection().toString();\n } else if (document.getSelection) {\n return document.getSelection().toString();\n } else {\n var selection = document.selection && document.selection.createRange();\n if (selection.text) {\n return selection.text.toString();\n }\n return \"\";\n }\n },\n getSearchformBuildData() {\n return this.$refs.searchform.buildSearchData();\n },\n handleTableScroll() {\n console.log(\"滚动\");\n this.isShowfilterTip = false;\n // let scrollL = this.$refs.multipleTable.bodyWrapper.scrollLeft\n },\n\n //列筛选重置\n resetColumnFilter(column, index) {\n // let view = this.view\n let filterInformations = [];\n let ftl = this.filterTipLocation;\n for (let key in ftl.columns) {\n let el = ftl.columns[key];\n if (el.selectfilterColumn && el.selectfilterColumn.length > 0) {\n let obj = {};\n let selectColumn = el.selectfilterColumn;\n obj[el.fieldName] = selectColumn;\n if (ftl.index == key) {\n el.selectfilterColumn = [];\n el.isFilterStatus = false;\n }\n if (el.isFilterStatus) {\n filterInformations.push(obj);\n }\n }\n }\n this.filterInformations = filterInformations;\n this.getData(\"\", \"\", \"\", \"\", filterInformations);\n },\n\n //筛选\n columnFilter(column, index) {\n let view = this.view;\n let filterInformations = [];\n let ftl = this.filterTipLocation;\n for (let key in ftl.columns) {\n let el = ftl.columns[key];\n if (el.selectfilterColumn && el.selectfilterColumn.length > 0) {\n let obj = {};\n let selectColumn = el.selectfilterColumn;\n obj[el.fieldName] = selectColumn;\n if (ftl.index == key) {\n el.isFilterStatus = true;\n }\n if (el.isFilterStatus) {\n filterInformations.push(obj);\n }\n }\n }\n this.filterInformations = filterInformations;\n this.getData(\"\", \"\", \"\", \"\", filterInformations);\n\n // view.columns.forEach((el, inx) => {\n // if(el.selectfilterColumn && el.selectfilterColumn.length > 0) {\n // let obj = {}\n // let selectColumn = el.selectfilterColumn\n // obj[el.fieldName] = selectColumn\n // if(index == inx) {\n // el.isFilterStatus = true\n // }\n // if(el.isFilterStatus) {\n // filterInformations.push(obj)\n // }\n // }\n // })\n // this.filterInformations = filterInformations\n // this.getData('', '', '', '',filterInformations)\n },\n\n handleCheckedColumnChange(column, index) {\n this.timeStamp = new Date().valueOf();\n },\n\n //显示筛选框\n showColumnFilterTip(ev, column, index) {\n // let scrollL = this.$refs.multipleTable.bodyWrapper.scrollLeft//document.getElementsByClassName(\"el-table\")//document.getElementById(\"listview-box\")////document.getElementsByClassName(\"scrollbar-view\")\n let view = this.view;\n\n let ftl = this.filterTipLocation;\n if (ftl.index === index) {\n ftl.x = ev.pageX - 100;\n ftl.y = ev.pageY + 20;\n this.isShowfilterTip = !this.isShowfilterTip;\n return;\n } else {\n let openParams = this.openParams;\n ftl.x = ev.pageX - 100;\n ftl.y = ev.pageY + 20;\n ftl.index = index;\n let searchData = {};\n if (openParams.queryString) {\n searchData = this.setParams(openParams.queryString, searchData);\n }\n let urlParams = openParams.urlParams;\n if (urlParams) {\n searchData = this.setParams(urlParams, searchData);\n }\n if (openParams.exparams) {\n searchData = this.setParams(openParams.exparams, searchData);\n }\n this.$api.filterViewColumn(\n openParams.appId,\n view.id,\n column.fieldName,\n {\n parentId: openParams.parentId,\n isRelate: openParams.isRelate,\n searchWord: \"\",\n },\n searchData ? searchData : {},\n {\n onSucess: (res) => {\n column.filtersList = res.data.data;\n if (!column.selectfilterColumn) {\n column.selectfilterColumn = [];\n }\n ftl.columns[index] = column;\n this.filterTipLocation.filtersList = res.data.data;\n this.isShowfilterTip = true;\n this.$forceUpdate();\n },\n }\n );\n }\n\n // if(!column.isShowfilterTip) {\n // column.filterTipLocation = {\n // x: ev.clientX - 100,//ev.pageX - 100\n // y: ev.clientY + 20\n // }\n // view.columns.forEach((el, inx) => {\n // if(index != inx) {\n // el.isShowfilterTip = false\n // }\n // if(!el.selectfilterColumn) {\n // el.selectfilterColumn = []\n // }\n // })\n\n // column.isShowfilterTip = !column.isShowfilterTip\n // view.columns[index] = column\n // // this.timeStamp = new Date().valueOf()\n // let openParams = this.openParams\n\n // let searchData = {};\n // if(openParams.queryString) {\n // searchData = this.setParams(openParams.queryString, searchData)\n // }\n // let urlParams = openParams.urlParams;\n // if(urlParams) {\n // searchData = this.setParams(urlParams, searchData)\n // }\n // if(openParams.exparams) {\n // searchData = this.setParams(openParams.exparams, searchData)\n // }\n // this.$api.filterViewColumn(\n // openParams.appId,\n // view.id,\n // column.fieldName,\n // {\n // parentId: openParams.parentId,\n // isRelate: openParams.isRelate,\n // searchWord: \"\",\n // },\n // searchData ? searchData : {},\n // {\n // onSucess: (res) => {\n // view.columns[index].filtersList = res.data.data\n // this.timeStamp = new Date().valueOf()\n // setTimeout(() => {\n // this.$refs.multipleTable.bodyWrapper.scrollLeft = scrollL\n // console.log(\" this.$refs.multipleTable.bodyWrapper-->\", this.$refs.multipleTable.bodyWrapper.scrollLeft)\n // })\n // },\n // }\n // );\n // }else {\n // column.isShowfilterTip = !column.isShowfilterTip\n // this.timeStamp = new Date().valueOf()\n // }\n\n //pageX clientX\n },\n // isJson(str){\n // return isJSON(str)\n // },\n filterHandler(value, row, column) {\n const property = column[\"property\"];\n return row[property] === value;\n },\n\n isJSON(str) {\n //判断是json字符串\n if (typeof str == \"string\") {\n try {\n let obj = JSON.parse(str);\n if (typeof obj == \"object\" && obj) {\n return true;\n } else {\n return false;\n }\n } catch (e) {\n return false;\n }\n }\n },\n /**\n * 后台配置视图列按图标显示\n */\n getIconMapping(val, keyVal) {\n let valObj = JSON.parse(val);\n for (let i = 0; i < valObj.length; i++) {\n if (valObj[i].key == keyVal) {\n return valObj[i].key;\n }\n }\n },\n\n previewFile(file) {\n if (file.path.indexOf(\"http\") > -1) {\n //obs路径\n window.open(file.path);\n return;\n }\n if (file.name) {\n let name = file.name.split(\".\")[file.name.split(\".\").length - 1];\n name = name.toLowerCase();\n if (name == \"mp3\" || name == \"mp4\" || name == \"rar\" || name == \"zip\") {\n //压缩包直接下载\n if (file.path.indexOf(\"/obpm\") > -1) {\n window.open(file.path);\n return;\n } else {\n window.open(\"/obpm\" + file.path);\n return;\n }\n }\n }\n let url = obpmConfig.obpmFilePath + file.path;\n window.open(url);\n },\n\n picturePreview(list, i, type) {\n //图片预览\n if (type) {\n if (list.charAt(0) == \"[\") {\n list = list.replace(/"/g, '\"');\n let onlinePhotoPath = eval(\"(\" + list + \")\");\n let pl = onlinePhotoPath;\n for (let i = 0; i < pl.length; i++) {\n pl[i] = obpmConfig.obpmFilePath + pl[i];\n }\n let params = {\n hiddenDialog: true,\n pathLists: pl,\n initialIndex: i,\n };\n this.$parent.setDialogStatus(params);\n // this.$nextTick(()=>{\n // this.$viewerApi({\n // options: {initialViewIndex: i},//增加这行可以选中当前对应的图片预览\n // images: pl,\t\t\t\t\n // })\n // })\n }\n } else {\n let pList = JSON.parse(list);\n let pathLists = [];\n pList.forEach((el) => {\n let path =\n el.path.indexOf(\"http\") > -1\n ? el.path\n : obpmConfig.obpmFilePath + el.path; //obs路径兼容\n pathLists.push(path);\n });\n let params = {\n hiddenDialog: true,\n pathLists,\n initialIndex: i,\n };\n // this.$parent.setDialogStatus(params);\n //修改为用viewer插件预览\n this.$nextTick(() => {\n this.$viewerApi({\n options: { initialViewIndex: i },//增加这行可以选中当前对应的图片预览\n images: pathLists,\n })\n })\n }\n },\n\n getSearchDocument(doc) {\n this.$parent.setSearchDocItems(doc);\n },\n\n changeTableSort(ev) {\n //自定义排序\n let sortStatus = \"\";\n if (ev.order) {\n ev.column.sorting = ev.order;\n }\n if (ev.order == \"descending\") {\n sortStatus = \"DESC\";\n } else if (ev.order == \"ascending\") {\n sortStatus = \"ASC\";\n } else {\n if (ev.column.sorting == \"descending\") {\n sortStatus = \"ASC\";\n } else {\n sortStatus = \"DESC\";\n }\n }\n for (let i = 0; i < this.view.columns.length; i++) {\n //排序要传fieldName字段\n if (ev.column.label == this.view.columns[i].name) {\n ev.column.label = this.view.columns[i].fieldName;\n break;\n }\n }\n this.getData(\n \"\",\n this.pagesize,\n \"\",\n { sortCol: ev.column.label, sortStatus },\n this.filterInformations\n );\n // let list = this.tableData;\n // if(list && list.length > 1) {\n // if(list[list.length-1].isSum) {\n // let lastRow = list.splice(list.length-1, 1);\n // list.reverse();\n // list = list.concat(lastRow);\n // this.tableData = list;\n // this.$forceUpdate();\n // }else {\n // list.reverse();\n // this.tableData = list;\n // this.$forceUpdate();\n // }\n // }\n },\n\n headerClick(column, e) {\n //头部点击排序\n // sortCol: 开始时间\n // sortStatus: DESC\n if (column.label.length > 4) {\n //当列名称字符长度大于4.会使排序标志显示在列名称下面,导致表头height变高,从而使横向滚动条往下移动,导致横向滚动条被覆盖使用不了\n if (!this.multipleTableHeight) {\n //第二次点击排序时,multipleTableHeight有值不再继续减一\n this.multipleTableHeight = JSON.parse(\n JSON.stringify(this.$refs.multipleTable.$el.style.height)\n );\n let sortableAfterHeight; //点击排序后this.$refs.multipleTable的高度\n sortableAfterHeight =\n this.$refs.multipleTable.$el.style.height.replace(\"px\", \"\") -\n 1 +\n \"px\"; //减一横向滚动条就出现了\n this.$refs.multipleTable.$el.style.height = sortableAfterHeight;\n }\n }\n let columns = this.view.columns;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].id == column.property) {\n columns[i].isOrderByField = \"true\";\n break;\n } else {\n columns[i].isOrderByField = \"false\";\n }\n }\n let sortStatus = \"\";\n if (e.layerY >= 15) {\n sortStatus = \"ASC\";\n } else {\n sortStatus = \"DESC\";\n }\n for (let i = 0; i < this.view.columns.length; i++) {\n //排序要传fieldName字段\n if (column.label == this.view.columns[i].name) {\n column.label = this.view.columns[i].fieldName;\n break;\n }\n }\n this.getData(\n \"\",\n this.pagesize,\n \"\",\n { sortCol: column.label, sortStatus },\n this.filterInformations\n );\n // let list = this.tableData;\n // if(list && list.length > 1) {\n // if(list[list.length-1].isSum) {\n // let lastRow = list.splice(list.length-1, 1);\n // list.reverse();\n // list = list.concat(lastRow);\n // this.tableData = list;\n // this.$forceUpdate();\n // }else {\n // list.reverse();\n // this.tableData = list;\n // this.$forceUpdate();\n // }\n // }\n },\n\n //获取路径(默认obpm)\n setDefaultPath() {\n return obpmConfig.obpmFilePath;\n },\n\n //视图列设置默认图标显示\n setDefaultIcon(value, isLogo, rowVal) {\n let statiContextPath = obpmConfig.statiContextPath;\n let path = \"\";\n if (isLogo) {\n path = this.setDefaultPath() + \"/uploads/lib/icon/\" + value;\n } else {\n let valueObject = JSON.parse(value); //字符串转对象\n if (valueObject) {\n for (let i = 0; i < valueObject.length; i++) {\n if (valueObject[i].key == rowVal) {\n if (statiContextPath) {\n //5.0\n path = this.setDefaultPath() + valueObject[i].value;\n } else {\n path =\n this.setDefaultPath() +\n \"/uploads/lib/icon\" +\n valueObject[i].value;\n }\n }\n }\n }\n }\n return path;\n },\n\n tableRowIndex({ row, rowIndex }) {\n //把每一行的索引放进row\n row.index = rowIndex;\n },\n\n tableRowClassName() {\n if (this.view.style) {\n //后台有设置样式库,表格头显示该样式\n let value = this.view.style.content;\n return value;\n } else {\n return this.classObject;\n }\n // return this.classObject;\n },\n\n //包含元素刷新数据\n includeViewRefresh() { },\n\n handleOpenSearchTemplate() {\n this.isOpenTemplate = !this.isOpenTemplate;\n },\n\n //获取屏幕宽度,设置列宽\n getWidth(val, auto) {\n //auto为true开启自动排版\n console.log(this.delegateWidth);\n // if(this.delegateWidth>0){\n // sessionStorage.setItem('delegateWidthT',this.delegateWidth)\n // this.delegateWidthT=sessionStorage.getItem('delegateWidthT')||'' //缓存获取本地sessionStorage获取适配宽度\n // }\n // console.log(val+'---'+auto)\n // return 130\n if (val) {\n if (val.indexOf(\"%\") > -1) {\n let num = val.split(\"%\")[0];\n let w = (this.delegateWidth * parseInt(num)) / 100;\n return w;\n } else {\n return val;\n }\n } else {\n if (auto) return \"\";\n else return \"130\";\n }\n },\n\n //视图列按钮操作\n buttonClick(column, row) {\n console.log(column);\n let op = this.openParams;\n let id = column.id,\n parentView = column.parentView,\n type = column.buttonType,\n name = column.name,\n docId = row.docId,\n actionScript = column.actionScript,\n mappingform = column.mappingform,\n jumpMapping = column.jumpMapping;\n let params = \"\";\n let data = {\n actionScript,\n columnName: name,\n docId,\n };\n switch (\n type //type为操作类型\n ) {\n case \"00\":\n this.$api.beforescript(this.openParams.appId, parentView, id, data, {\n onSucess: (res) => {\n if (res.data.errcode == 0) {\n if (res.data.data) {\n let resData = res.data.data;\n if (!resData.type) {\n } else if (resData.type == 32) {\n this.$confirm(`${resData.content}`, this.$t(\"tip\"), {\n confirmButtonText: this.$t(\"msg.confirm\"),\n cancelButtonText: this.$t(\"btns.cancel\"),\n type: \"warning\",\n })\n .then(() => {\n let arr = [];\n arr.push(docId);\n this.$api.batchRemoveDocuments(\n this.openParams.appId,\n arr,\n {\n onSucess: (res) => {\n this.getData();\n },\n }\n );\n })\n .catch(() => { });\n }\n } else {\n this.$confirm(this.$t(\"msg.deldata\"), this.$t(\"tip\"), {\n confirmButtonText: this.$t(\"msg.confirm\"),\n cancelButtonText: this.$t(\"btns.cancel\"),\n type: \"warning\",\n })\n .then(() => {\n let arr = [];\n arr.push(docId);\n this.$api.batchRemoveDocuments(\n this.openParams.appId,\n arr,\n {\n onSucess: (res) => {\n this.getData();\n },\n }\n );\n })\n .catch(() => { });\n }\n }\n },\n });\n break;\n case \"01\":\n let isSubmissionProcess = true;\n this.$parent.viewColumnSubmission(isSubmissionProcess, docId);\n break;\n case \"02\":\n break;\n case \"03\":\n params = {\n linkType: \"00\",\n appId: op.appId,\n actionContent: column.templateForm,\n _select: docId,\n name,\n templateForm: column.templateForm, //打开的是模板表单\n refreshId: op.id,\n displayType: column.templateForm ? \"templateForm\" : \"\", //判断是模板表单还是普通表单\n realformId: row.formId, //有模板表单时,原本真实的formId\n };\n if (this.showtype === \"include\" || this.showtype === \"tab\") {\n this.toTab(params);\n } else {\n this.$emit(\"add-tab\", params);\n }\n break;\n case \"04\":\n this.$api.runActionScript(\n this.openParams.appId,\n parentView,\n id,\n data,\n {\n onSucess: (res) => {\n if (res.data.errcode == 0) {\n if (res.data.data) {\n let data = res.data.data;\n if (data.type == \"1\") {\n this.$message(data.content);\n }\n if (!data.type) {\n this.$message(data);\n }\n } else {\n this.$emit(\"updateView\");\n this.$message({\n showClose: true,\n message: this.$t(\"success\"),\n type: \"success\",\n });\n }\n }\n },\n }\n );\n break;\n case \"05\":\n let emptyParams = \"\";\n let arr = [];\n if (jumpMapping) {\n let map = jumpMapping.split(\";\");\n if (map.length > 0) {\n for (let i = 0; i < map.length; i++) {\n let currentObj = map[i].split(\":\");\n let obj = {};\n for (let key in row) {\n if (currentObj[1] === key) {\n obj[currentObj[0]] = row[key];\n arr.push(obj);\n }\n }\n }\n }\n }\n if (arr.length > 0) {\n emptyParams = arr;\n }\n params = {\n linkType: \"00\",\n appId: this.openParams.appId,\n active: true,\n actionContent: mappingform,\n name: this.view.name,\n refreshId: this.openParams.id,\n title: \"\",\n type: 277,\n };\n if (mappingform) {\n params.jumpDialogId =\n \"dialog_normalform_\" + this.openParams.actionContent; //视图列跳转按钮以弹出层打开,无dialogId,导致目标表单包含元素无法显示,用于计算包含元素的宽度\n }\n this.$parent.openForm(params, emptyParams);\n break;\n }\n },\n\n getExcelParams() {\n if (this.searchExcelData) {\n return this.searchExcelData;\n } else {\n return \"\";\n }\n },\n\n //删除或导入数据后重新请求加载数据\n reloadListView() {\n console.log('重新加载数据')\n this.$refs.multipleTable && this.$refs.multipleTable.clearSelection()//刷新重置数据\n let filterInfo = this.filterInformations;\n this.reloadListViewRandom = new Date().getTime();\n this.getData(\n this.currentPage,\n this.pagesize,\n this.searchExcelData,\n \"\",\n filterInfo\n );\n if (!this.isMultiLevelListHeader) {\n this.$refs.multipleTable.bodyWrapper.scrollTop =\n this.$store.state.listViewScrollTop; //重新加载数据时给滚动条定位置\n }\n },\n\n checkbox(row) {\n if (row.row.isSum) {\n //当前页小计\n return \"mycell isSum\";\n }\n if (row.row.isTotal) {\n //总计\n return \"mycell isTotal\";\n }\n },\n\n selectInit(row, index) {\n console.log(row);\n\n // this.delegateWidthT=sessionStorage.getItem('delegateWidthT')||'' //缓存获取本地sessionStorage获取适配宽度\n\n if (row.isSum || row.isTotal) {\n return false;\n } else {\n return true;\n }\n },\n\n //视图选择框允许打开文本\n openDocument(row) {\n let params = {\n linkType: \"00\",\n appId: this.openParams.appId,\n actionContent: row.formId,\n _select: row.docId,\n viewId: this.view.id,\n parentId: this.openParams.parentId ? this.openParams.parentId : \"\", //包含元素时判断是否有parentId\n isRelate: this.openParams.isRelate ? this.openParams.isRelate : \"\", //包含元素时判断isRelate是否为true\n searchData: this.searchData,\n showtype: this.showtype,\n templateForm: this.view.templateForm ? this.view.templateForm : \"\",\n };\n if (this.isView) {\n let arr = [];\n arr.push(row);\n let isRadio = true;\n this.$emit(\"openDoc\", params);\n }\n },\n\n //设置分页大小\n handleSizeChange(ev) {//5,10,15条数切换 \n if (this.$store.state.searchFlag == 2 && this.$store.state.searchDataStore.length) {\n this.$store.state.searchDataStore.forEach(item => {\n if (item.appId == this.openParams.appId && item.viewId == this.view.id) {\n this.searchExcelData = item\n }\n })\n }\n //查询高筛默认选中的条件,有值就查,没值查默认\n // let data = this.$refs.searchform.buildSearchData() \n // let searchData = JSON.parse(JSON.stringify(data));\n // this.searchExcelData=searchData\n\n let page = 1;\n this.currentPage = 1;//重置第一页\n this.currentPageSize = ev;\n this.getData(page, this.currentPageSize, this.searchExcelData);\n },\n\n onPageChang(ev) {//1,2,3页码点击\n // alert(ev)\n // debugger\n this.$store.state.searchFlag = 1//重置记住条件,不要记住‘返回’高筛搜索条件\n if (this.$store.state.searchFlag == 2 && this.$store.state.searchDataStore.length) {\n this.$store.state.searchDataStore.forEach(item => {\n if (item.appId == this.openParams.appId && item.viewId == this.view.id) {\n this.searchExcelData = item\n }\n })\n }\n //查询高筛默认选中的条件,有值就查,没值查默认--bug\n // debugger\n // let data = this.$refs.searchform.buildSearchData() \n // let searchData = JSON.parse(JSON.stringify(data));\n // this.searchExcelData=searchData\n\n let page = ev;\n this.currentPage = ev//记住当前页码 \n this.currentPageSize = this.pagesize\n let filterInfo = this.filterInformations;\n this.getData(\n page,\n this.currentPageSize,\n this.searchExcelData,\n \"\",\n filterInfo\n );\n //this.$refs.searchform.onSearchClick();\n },\n\n arraySpanMethod({ row, column, rowIndex, columnIndex }) {\n if (row && row.isInclude && columnIndex == 1) {\n let len = this.view.columns.length;\n return [1, len];\n }\n },\n\n //包含元素当前页打开新建\n addRow(params) {\n let createId = new Date().getTime();\n params.id = createId;\n this.currentPageParams = params;\n this.doCreateId.push(params.id);\n this.tableData.unshift({\n // id: this.tableDataIndex,\n id: createId,\n });\n this.tableDataIndex = this.tableDataIndex + 1;\n\n let Id = [];\n this.tableData.forEach((item) => {\n this.doCreateId.forEach((id) => {\n if (item.id === id) {\n Id.push(item.id);\n }\n });\n });\n this.expends = Id;\n },\n\n //包含元素当前页打开,新建默认打开\n getRowKeys(row) {\n console.log(\"row--->\", row)\n console.log(\"row.id--->\", row.id)\n console.log(\"row.docId--->\", row.docId)\n // return row.id;\n return row.docId;//修改为选中docId\n },\n\n getData(page, size, searchData, sortData, filterInformations) {\n // debugger\n console.log(this.isOpenTemplate)\n if (this.$refs.searchform && this.isOpenTemplate && this.$store.state.searchFlag == 0) {\n if (localStorage.getItem('homeTemplateBoradType') != 'rtpayTemplate') {//rt默认视图不走高筛\n searchData = this.$refs.searchform.buildSearchData()\n }\n }\n if (this.$store.state.searchFlag == 2) {//‘返回’记住高筛搜索条件 \n if (this.$store.state.searchDataStore.length) {//‘返回’记住高筛搜索条件-传入搜索记住条件\n this.$store.state.searchDataStore.forEach(item => {\n if (item.appId == this.openParams.appId && item.viewId == this.view.id) {\n searchData = item;\n }\n })\n }\n if (this.$store.state.pageDataStore.length) {//‘返回’记住高筛搜索条件-传入分页记住条件\n this.$store.state.pageDataStore.forEach(item => {\n if (item.appId == this.openParams.appId && item.viewId == this.view.id) {\n page = item.page;\n size = item.pagesize;\n }\n })\n }\n } else {\n page = this.currentPage //查询当前页码\n }\n console.log(searchData);\n console.log(this.$route.query);\n // this.isRunGetData = true;//暂时没用到\n this.tableLoading = true;\n this.isShowfilterTip = false;\n let view = this.view;\n\n\n\n console.log(searchData)\n this.getViewData(\n page,\n size,\n searchData,\n sortData,\n filterInformations\n ).then((response) => {\n let docs = response.data.data;\n console.log(docs);\n this.documents = response.data.data;\n this.pagesize = size ? size : view.pageLines ? parseInt(view.pageLines) : 10;\n let row_count = response.data.row_count;\n this.row_count = row_count;\n // this.row_count = -1; //测试数据\n if (this.row_count < 0) {//内网总条数返回-1判断分页组件\n this.view.showTotalRow = false\n }\n\n if (docs.length < this.pagesize) {//当前条数小于页数,禁用下一页按钮\n this.$refs.paginationRef && this.$refs.paginationRef.$el.querySelector('.btn-next').setAttribute('disabled', 'disabled')\n } else {\n this.$refs.paginationRef && this.$refs.paginationRef.$el.querySelector('.btn-next').removeAttribute('disabled')\n }\n\n // 传递给首页widget是否显示加载更多按钮,日历视图也要判断\n this.$emit(\"totalCount\", row_count, \"listView\");\n let tds = [];\n // 传递给父组件的column\n let tableColumns = {};\n // debugger\n if (docs) {\n docs.forEach((doc) => {\n let rows = {};\n rows.formId = doc.formId;\n rows.docId = doc.id;\n rows.children = doc.children;\n rows.isRunningBack = doc.isRunningBack;\n rows.id = new Date().getTime() + Math.random() * 1000;\n for (var key in doc.items) {\n let items = doc.items[key];\n if (items.formField == \"QRCodeField\") {\n this.$nextTick(() => {\n setTimeout(() => {\n let dom = document.getElementById(doc.id);\n if (!dom.hasChildNodes()) {\n qrcodeMethod(items, doc.id, 50, obpmConfig.contextPath);\n }\n });\n });\n }\n if (\n items.formField == \"CheckboxField\" ||\n items.formField == \"RadioField\"\n ) {\n //特殊字符转义\n if (items.value && items.value.indexOf(\"√\") > -1) {\n items.value = items.value\n .replace(/√/g, \"√\")\n .replace(/×/g, \"×\");\n } else if (items.value && items.value.indexOf(\"×\") > -1) {\n items.value = items.value.replace(/×/g, \"×\");\n } else {\n items.value = items.value;\n }\n }\n rows[key] = items.value;\n }\n tableColumns = doc.items;\n if (doc.isSum) {\n //当前页小计\n rows.isSum = doc.isSum;\n }\n if (doc.isTotal) {\n //总计\n rows.isTotal = doc.isTotal;\n }\n tds.push(rows);\n });\n console.log(tableColumns);\n // 将列的数据传递给 view_delegate 父组件\n this.$emit(\"columns\", tableColumns);\n\n if (tds.length == 0) {\n this.emptyData = this.$t(\"nodata\");\n }\n this.loading = false;\n\n this.tableData = tds; //表单视图的数据tableData\n // debugger\n console.log(this.tableSelection)\n if (this.tableSelection && this.tableSelection.length > 0) {\n this.$nextTick(function () {\n for (let i = 0; i < this.tableData.length; i++) {\n for (let j = 0; j < this.tableSelection.length; j++) {\n if (this.tableData[i].docId == this.tableSelection[j].docId) {\n this.$refs.multipleTable.toggleRowSelection(\n this.tableData[i],\n true\n );\n }\n }\n }\n //\n });\n }\n }\n let op = this.openParams;\n let menuData = {\n id: op.id,\n totalRow: row_count, //docs.length,\n };\n if (this.reloadListViewRandom || op.haveTotalRow == true) {\n //菜单链接的视图,并且显示数量,当删除或增加的时候改变菜单显示的数量,现在只做了普通视图,标记一下\n if (op.haveTotalRow) {\n //菜单有显示数量\n this.$emit(\"updateViewNumber\", menuData);\n this.reloadListViewRandom = \"\";\n }\n }\n if (view.showWaterMark === true) {\n if (view.waterMarkText) {\n //判断是否显示水印\n let val = view.waterMarkText;\n let id = \"view_\" + view.id;\n Watermark.set(val, id);\n }\n }\n this.tableLoading = false;\n\n let columns = view.columns;\n columns.forEach((el) => {\n el.isShowfilterTip = false;\n });\n // let tSelection = this.tableSelection; //查询时保留原先选择的\n // let tSelection = this.selectedRowsT; //查询时保留原先选择的\n // console.log(tSelection)\n // console.log(tds)\n // if (tSelection&&tSelection.length > 0) {\n // this.$nextTick(() => {\n // for (let i = 0; i < tds.length; i++) {\n // for (let j = 0; j < tSelection.length; j++) {\n // if (tds[i].id && tds[i].docId == tSelection[j].docId) {\n // this.$refs.multipleTable.toggleRowSelection(tds[i],true);\n // }\n // }\n // }\n // });\n // }\n // this.$nextTick(() => {\n // this.isRunGetData = false;\n // });\n });\n },\n\n\n //模拟数据请求\n getViewData(page, size, searchData, sortData, filterInformations) {\n console.log(this.$route.query);\n console.log(this.openParams);\n let openParams = this.openParams;\n let treeData = \"\";\n let treeName = \"\";\n let isFormPrint = this.isFormPrint;\n if (this.parentId) {\n //树形视图\n return new Promise((resolve) => {\n this.$api.getTreeViewData(\n //树形视接口\n this.openParams.appId,\n this.openParams.actionContent,\n {\n parentId: this.parentId ? this.parentId : \"\",\n },\n treeData,\n treeName,\n {\n onSucess: (response) => {\n let treeViewData = response.data;\n resolve(treeViewData);\n },\n }\n );\n });\n } else if (openParams && openParams.parentId) {\n // debugger\n //包含元素时或者视图选择框时\n return new Promise((resolve) => {\n let lines = \"\";\n if (isFormPrint && isFormPrint == \"5\") {\n lines = 500;\n } else {\n lines = size ? size : parseInt(this.view.pageLines);\n }\n searchData = searchData || {};\n\n if (filterInformations && filterInformations.length > 0) {\n searchData.filterInformations = filterInformations;\n }\n if (openParams.exparams) {\n //增加了从传参传递过来的\n searchData = this.setParams(openParams.exparams, searchData);\n }\n if (this.$route.query) {\n //url携带参数bcx-查询视图列表55,比如url加projectId=10\n searchData = { ...searchData, ...this.$route.query };\n }\n\n console.log(5555);\n console.log(this.openParams);\n\n this.$api.getViewData(\n //普通视图接口\n this.openParams.appId,\n this.view.id,\n {\n parentId: openParams.parentId,\n isRelate: openParams.isRelate,\n currpage: page ? page : this.currentPage,\n lines: lines,\n searchWord: \"\",\n treedocid: openParams.treedocid ? openParams.treedocid : \"\",\n // exparams:openParams.exparams, //555\n },\n searchData ? searchData : {},\n {\n onSucess: (response) => {\n let viewData = response.data;\n resolve(viewData);\n },\n }\n );\n });\n } else {\n return new Promise((resolve) => {\n let lines = \"\";\n if (isFormPrint && isFormPrint == \"5\") {\n //打印\n lines = 500;\n } else {\n lines = size ? size : parseInt(this.view.pageLines);\n }\n searchData = searchData || {};\n if (filterInformations && filterInformations.length > 0) {\n searchData.filterInformations = filterInformations;\n }\n if (openParams.queryString) {\n searchData = this.setParams(openParams.queryString, searchData);\n }\n let urlParams = openParams.urlParams;\n if (urlParams) {\n searchData = this.setParams(urlParams, searchData);\n }\n if (openParams.exparams) {\n searchData = this.setParams(openParams.exparams, searchData);\n }\n\n if (this.$route.query) {\n //url携带参数bcx-查询视图列表55,比如url加projectId=10\n searchData = { ...searchData, ...this.$route.query };\n }\n\n this.$api.getViewData(\n //普通视图接口\n openParams.appId,\n this.view.id,\n {\n parentId: openParams.parentId,\n isRelate: openParams.isRelate,\n currpage: page ? page : this.currentPage,\n lines: lines,\n searchWord: \"\",\n sortCol: sortData ? sortData.sortCol : \"\",\n sortStatus: sortData ? sortData.sortStatus : \"\",\n },\n searchData ? searchData : {},\n {\n onSucess: (response) => {\n let viewData = response.data;\n resolve(viewData);\n },\n }\n );\n });\n }\n },\n\n setParams(params, obj) {\n params = params.replace(/^(\\s|&)+|(\\s|&)+$/g, \"\");\n let list = params.split(\"&\");\n for (let i = 0; i < list.length; i++) {\n let p = list[i].split(\"=\");\n let isJson = this.isJSON(p[1]);\n if (isJson) {\n obj[p[0]] = encodeURI(p[1]); //encodeURIComponent(p[1])\n } else {\n obj[p[0]] = p[1] ? p[1] : \"\";\n }\n }\n return obj;\n },\n\n //获取树形视图节点的数据\n setTreeViewData(nodeKey) {\n let treeData = \"\";\n let treeName = \"\";\n this.$api.getTreeViewData(\n //树形视接口\n this.openParams.appId,\n this.openParams.actionContent,\n {\n parentId: nodeKey,\n treedocid: nodeKey,\n parentNodeId: nodeKey,\n },\n treeData,\n treeName,\n {\n onSucess: (response) => {\n let docs = response.data.data.data;\n this.documents = response.data.data.data;\n //this.pagesize = size?size:this.view.pageLines?parseInt(this.view.pageLines):10;\n this.row_count = response.data.data.row_count;\n let tds = [];\n if (docs && docs.length > 0) {\n docs.forEach((doc) => {\n let rows = {};\n rows.formId = doc.formId;\n rows.docId = doc.id;\n rows.children = doc.children;\n for (var key in doc.items) {\n let items = doc.items[key];\n rows[key] = items.value;\n }\n if (doc.isSum) {\n rows.isSum = doc.isSum;\n }\n tds.push(rows);\n });\n this.tableData = tds;\n console.log(\"this.tableData--->\", this.tableData);\n } else {\n this.tableData = [];\n }\n },\n }\n );\n },\n\n //清空选择\n toggleSelection() {\n this.$refs.multipleTable.clearSelection();\n },\n\n handleSelectionChange(val) {//视图复选框选中--获取复选框的值--核心55\n // debugger \n // console.log(val) \n // if (!this.isRunGetData) {\n this.tableSelection = val; //回显完复选框,this.$refs.multipleTable.toggleRowSelection(row, true);再次点击记住所有选中的数据--核心 \n // }\n // else if(this.tableSelection&& this.tableSelection.length > 0){//如果有复选框有选中的数据,直接记住选中的数据\n // val=this.tableSelection\n // } \n //将长度传回去\n this.$emit(\"selectNum\", val);//传递到‘已选:’值-->view_delegate.vue\n if (this.isView) {\n //视图选择框 \n if (val.length > 0 && val[0] != undefined) {\n let select = \"\";\n for (let i = 0; i < val.length; i++) {\n select += val[i].docId + \";\";\n }\n let params = {\n linkType: \"00\",\n appId: this.openParams.appId,\n actionContent: val[0].formId,\n _select: select,\n viewId: this.view.id,\n };\n this.$emit(\"updateViewData\", params, val);\n } else {\n this.$emit(\"updateViewData\", [], val);\n }\n } else {\n let docIds = [];\n let hasChildren = \"\";\n if (val.length > 0) {\n for (let i = 0; i < val.length; i++) {\n docIds.push(val[i].docId);\n if (val[i].children) {\n hasChildren = true;\n }\n }\n } else {\n docIds = [];\n }\n\n let sy = this.showtype;\n\n if (sy == \"include\" || sy == \"tab\") {\n //如果是包含元素或者tab页,获取的docId传到最上层表单\n this.setListViewDocIds(docIds);\n }\n\n this.$emit(\"getDocIds\", docIds, hasChildren);\n }\n },\n\n onSearch(searchData, data) {//form_searchform.vue点击搜索--第四步,把第三步传递过来的参数查询视图表格数据\n // debugger\n //高级查询表格数据结果统一入口\n // debugger\n this.$store.commit('searchDataStore', searchData)//第五步,缓存查询条件到vuex数组里面\n let page = 1;\n this.currentPage = 1;//点击查询重置第一页\n let size = \"\";\n this.searchExcelData = data;\n\n this.getData(page, size, searchData);//第6步,根据查询条件查询表格数据\n // this.$parent.initView({\n // appId: this.openParams.appId,\n // viewId: this.openParams.actionContent,\n // data: searchData,\n // exparams: {\n // currpage: this.currentPage,\n // lines: this.pagesize\n // }\n // });\n },\n\n onWidgetRowClick(row) {\n if (!this.view.readonly) {\n let params = {\n linkType: \"00\",\n appId: this.openParams.appId,\n actionContent:\n this.view.displayType == \"templateForm\"\n ? this.view.templateForm\n : row.formId,\n _select: row.docId,\n viewId: this.view.id,\n parentId: this.openParams.parentId ? this.openParams.parentId : \"\", //包含元素时判断是否有parentId\n isRelate: this.openParams.isRelate ? this.openParams.isRelate : \"\", //包含元素时判断isRelate是否为true\n searchData: this.searchData,\n showtype: this.showtype,\n templateForm: this.view.templateForm ? this.view.templateForm : \"\",\n };\n (params.name = this.view.name), this.$emit(\"event\", \"view\", params);\n }\n },\n /**\n * 隐藏图片\n */\n hiddenImg() {\n this.isShowImg = false;\n },\n /**\n * 判断是否是图片类型\n */\n isImgType(extName) {\n switch (extName) {\n case \".jpg\":\n case \".jpeg\":\n case \".png\":\n case \".gif\":\n case \".bmp\":\n return true;\n default:\n return false;\n }\n },\n /**\n 点击文件直接预览\n */\n handleFileClick(flie) {\n // let flieType = flie.name.substring(flie.name.lastIndexOf(\".\")).toLowerCase();\n // const imgType = this.isImgType(flieType);\n // if(imgType){\n // this.isShowImg = true;\n // this.addHtml = '';\n // }else{\n // this.handlePreview(flie)\n // }\n this.handlePreview(flie);\n },\n\n onRowClick(row) {\n let pageDataStore = { page: this.currentPage, pagesize: this.pagesize, appId: this.openParams.appId, viewId: this.view.id }\n this.$store.commit('pageDataStore', pageDataStore)//点击表格记住分页页码与条数\n\n let mouseCopy = this.getSelected(); //是否是鼠标复制\n if (mouseCopy) {\n return;\n }\n if (!this.isMultiLevelListHeader) {\n this.listViewScrollTop = this.$refs.multipleTable.bodyWrapper.scrollTop;\n let listViewScrollTop = this.listViewScrollTop;\n this.$store.commit(\"saveListViewScrollTop\", listViewScrollTop); //记录列表视图滚动条位置\n }\n let openParams = this.openParams;\n let view = this.view;\n if (row.isSum && row.isSum == true) {\n //汇总不让点击\n return false;\n }\n if (!view.readonly) {\n let formId;\n let params = {\n linkType: \"00\",\n appId: openParams.appId,\n actionContent: \"\", //formId, //row.formId,\n title: \"\",\n _select: row.docId,\n viewId: view.id,\n parentId: openParams.parentId ? openParams.parentId : \"\", //包含元素时判断是否有parentId\n isRelate: openParams.isRelate ? openParams.isRelate : \"\", //包含元素时判断isRelate是否为true\n searchData: this.searchData,\n showtype: this.showtype,\n refreshId: openParams.id, //判断是否得刷新\n id: row.docId + \"_\" + view.id,\n };\n\n if (view.templateForm) {\n //判断是模板表单还是普通表单\n formId = view.templateForm;\n params.actionContent = view.templateForm;\n params.realformId = view.relatedForm;\n } else {\n params.actionContent = row.formId;\n formId = row.formId;\n }\n if (this.includeDisplayType) {\n params.includeDisplayType = this.includeDisplayType;\n }\n if (this.isView) {\n //视图选择框\n let arr = [];\n let doc = this.documents[row.index];\n let newRow = JSON.parse(JSON.stringify(row));\n\n let userFieldList = []; //用户选择框用户信息\n\n for (let key in doc.items) {\n if (doc.items[key].formField == \"DepartmentField\") {\n let deptValue = newRow[key];\n let data = doc.items[key].data;\n if (data && data.length > 0) {\n for (let i = 0; i < data.length; i++) {\n if (data[i].name == deptValue || data[i].id == deptValue) {\n newRow[key] = data[i].id;\n break;\n }\n }\n }\n } else if (doc.items[key].formField == \"UserField\") {\n userFieldList.push(doc.items[key]);\n }\n }\n arr.push(newRow);\n let isRadio = true;\n this.$emit(\"updateViewData\", params, arr, isRadio, userFieldList);\n } else {\n this.$api.hasPermissionToForm(openParams.appId, formId, {\n onSucess: (response) => {\n if (response.data.data) {\n // debugger\n if (this.isWidgetChartView) {\n //如果是widget的视图打开\n params.name = view.name;\n this.$emit(\"action\", params);\n return;\n }\n if (openParams.isOpenNewWindow) {\n //视图时新窗口打开,那么点击后依然是打开新窗口\n params.isOpenNewWindow = openParams.isOpenNewWindow;\n let routeData = this.$router.resolve({\n name: \"open\",\n query: params,\n });\n window.open(routeData.href, \"_blank\");\n } else if (openParams.isExternalLink) {\n //外链打开,然后新建表单,通过opener组件\n params.isExternalLink = true; //url是打开opener组件,判断是外链。\n this.$emit(\"onAction\", params);\n } else {\n if (this.view.newPage) {\n //新窗口打开\n params.isOpenNewWindow = true;\n params.docid = params._select; //params缺少docid会导致视图新窗口打开后的表单 数据没有映射\n let routeData = this.$router.resolve({\n name: \"open\",\n query: params,\n });\n let winObj = window.open(routeData.href, \"_blank\");\n let loop = setInterval(() => {\n if (winObj.closed) {\n clearInterval(loop);\n this.getData(\n this.currentPage,\n this.pagesize,\n this.searchExcelData\n );\n }\n }, 1500);\n } else if (openParams.isPopupLayerDisplay) {\n //如果是弹出层打开的视图\n // this.$parent.setPopupOpenType('FORM', params);\n this.$emit(\"popupOpenType\", \"FORM\", params);\n } else {\n if (view.openType == 1) {\n //1为当前页打开\n if (this.showtype == \"include\") {\n params.isIncludeCreate = \"include\"; //isIncludeCreate判断表单是由包含元素打开\n this.currentPageParams = params;\n this.$refs.multipleTable.toggleRowExpansion(row);\n } else if (this.showtype == \"tab\") {\n this.currentPageParams = params;\n this.$refs.multipleTable.toggleRowExpansion(row);\n } else if (this.showtype == \"target\") {\n let routeData = this.$router.resolve({\n name: \"open\",\n query: params,\n });\n window.open(routeData.href, \"_blank\");\n } else {\n params.name = view.name;\n this.$emit(\"openNewpage\", params);\n // this.addTab(params)\n //this.$emit(\"add-tab\", params); //打开普通视图\n }\n } else if (view.openType == 277) {\n //277为弹窗打开\n if (this.showtype == \"include\") {\n params.isIncludeCreate = \"include\"; //isIncludeCreate判断表单是由包含元素打开\n this.$parent.openForm(params);\n } else {\n params.type = 277;\n this.$parent.openForm(params);\n }\n } else if (view.openType == 288) {\n this.$refs.dialog.show(params);\n } else if (view.openType == 293) {\n params.name = view.name;\n this.addTab(params);\n // this.$emit(\"add-tab\", params); //打开普通视图\n }\n }\n }\n } else {\n this.$message({\n message: this.$t(\"msg.refuse\"),\n type: \"warning\",\n });\n }\n },\n });\n }\n }\n },\n\n viewFieldPath(value, field) {\n if (value && field == \"ImageUploadField\") {\n // // let arr = JSON.parse(value);\n // let name = value.path.name;\n // // if(arr && arr.length > 0) {\n // // for(let i=0; i -1\n ? value.path\n : obpmConfig.obpmFilePath + value.path;\n } else if (\n (value && field == \"AttachmentUploadField\") ||\n field == \"NullField\"\n ) {\n // let arr = JSON.parse(value);\n // let name = \"\";\n // if (arr && arr.length > 0) {\n // for (let i = 0; i < arr.length; i++) {\n // name += arr[i].name + \";\";\n // }\n // }\n // name = name.replace(/^(\\s|;)+|(\\s|;)+$/g, \"\");\n // return name;\n let arr = JSON.parse(value);\n return arr;\n }\n },\n\n //列表视图在线拍照控件显示的图片\n viewPhotoPath(value, field) {\n if (value && field == \"OnLineTakePhotoField\") {\n if (value.charAt(0) == \"[\") {\n value = value.replace(/"/g, '\"');\n let onlinePhotoPath = eval(\"(\" + value + \")\");\n let list = onlinePhotoPath;\n for (let i = 0; i < list.length; i++) {\n list[i] = obpmConfig.obpmFilePath + list[i];\n }\n return list;\n } else {\n //默认保存的value是字符串\"/resource/image/photo.png\"\n let statiContextPath = obpmConfig.statiContextPath;\n if (statiContextPath) {\n value = statiContextPath + value;\n } else {\n value = obpmConfig.obpmFilePath + value;\n }\n let defaultArr = [];\n defaultArr.push(value);\n return defaultArr;\n }\n }\n },\n\n downloadFile(file) {\n //列表文件下载\n if (file.path.indexOf(\"http\") > -1) {\n //obs路径\n window.open(file.path);\n return;\n }\n if (file.name) {\n let name = file.name.split(\".\")[file.name.split(\".\").length - 1];\n name = name.toLowerCase();\n if (name == \"mp3\" || name == \"mp4\" || name == \"rar\" || name == \"zip\") {\n //压缩包直接下载\n if (file.path.indexOf(\"/obpm\") > -1) {\n window.open(file.path);\n return;\n } else {\n window.open(\"/obpm\" + file.path);\n return;\n }\n }\n }\n // let link = document.createElement('a')\n // link.style.display = 'none'\n // link.href = this.obpmConfig.obpmFilePath +\n // \"/runtime/file/download?filename=\"+ file.name +\n // \"&filepath=\" + file.path;\n // link.setAttribute('download', file.name);\n // link.click();\n let link = document.createElement(\"a\");\n link.style.display = \"none\";\n\n let op = obpmConfig.obpmFilePath;\n let statiContextPath = obpmConfig.statiContextPath;\n if (statiContextPath) {\n //5.0 trunk\n op = obpmConfig.contextPath;\n }\n link.href =\n op +\n \"/runtime/file/download?filename=\" +\n file.name +\n \"&filepath=\" +\n file.path;\n link.setAttribute(\"download\", file.name);\n link.click();\n },\n\n handlePreview(file) {\n if (file.path.indexOf(\"http\") > -1) {\n //obs路径\n window.open(file.path);\n return;\n }\n if (file.name) {\n let name = file.name.split(\".\")[file.name.split(\".\").length - 1];\n name = name.toLowerCase();\n if (name == \"rar\" || name == \"zip\" || name == \"mp3\" || name == \"mp4\") {\n //压缩包直接下载\n if (file.path.indexOf(\"/obpm\") > -1) {\n window.open(file.path);\n return;\n } else {\n window.open(\"/obpm\" + file.path);\n return;\n }\n }\n }\n this.$api.getenvironment({\n onSucess: (res) => {\n if (res.data.errcode === 0) {\n if (res.data.data === true) {\n let realName =\n file.path.split(\"/\")[file.path.split(\"/\").length - 1];\n let isEdit = \"edit\";\n let waterMark = \"\";\n let openWaterMark = false;\n let curEditUserId = this.$store.state.myProfile.id;\n let userName = this.$store.state.myProfile.name;\n let showTrackRevisions = false;\n let selectEditPlug = \"tray\";\n let cp = obpmConfig.obpmFilePath;\n sessionStorage.setItem(\"obpmContextPath\", cp);\n let statiContextPath = obpmConfig.statiContextPath;\n let pdfPath = \"\";\n if (statiContextPath) {\n //5.0 trunk\n pdfPath = obpmConfig.statiContextPath;\n } else {\n //4.4 stable\n pdfPath = cp;\n }\n let url =\n pdfPath +\n \"/portal/vue/pdf/pdfviewer.html?action=\" +\n isEdit +\n \"&path=\" +\n file.path +\n \"&name=\" +\n realName +\n \"&showName=\" +\n file.name +\n \"&waterMark=\" +\n waterMark +\n \"&openWaterMark=\" +\n openWaterMark +\n \"&curEditUserId=\" +\n curEditUserId +\n \"&userName=\" +\n userName +\n \"&showTrackRevisions=\" +\n showTrackRevisions +\n \"&selectEditPlug=\" +\n selectEditPlug;\n let URL = encodeURI(url);\n window.open(URL);\n }\n }\n },\n });\n },\n\n /*number 需要保留小数的数\n fractionDigits 保留小数位数\n */\n toFixed(number, fractionDigits) {\n let times = Math.pow(10, fractionDigits);\n let roundNum = Math.round(number * times) / times;\n let currentVal = roundNum.toFixed(fractionDigits);\n if (fractionDigits == \"5\") {\n let num = (roundNum || 0).toString();\n let result = \"\";\n while (num.length > 3) {\n result = \",\" + num.slice(-3) + result;\n num = num.slice(0, num.length - 3);\n }\n if (result) {\n result = num + result + \".\" + currentVal.split(\".\")[1];\n return result;\n } else {\n return currentVal;\n }\n } else {\n return currentVal;\n }\n },\n /* number:要格式化的数字\n * decimals:保留几位小数 默认0位\n * currency:货币类型\n * decPoint:小数点符号 默认.\n * thousandsSep:千分位符号 默认为,\n */\n currencyChange(\n number,\n decimals,\n currency,\n decPoint = \".\",\n thousandsSep = \",\"\n ) {\n number = (number + \"\").replace(/[^0-9+-Ee.]/g, \"\");\n let n = !isFinite(+number) ? 0 : +number;\n let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);\n let sep = typeof thousandsSep === \"undefined\" ? \",\" : thousandsSep;\n let dec = typeof decPoint === \"undefined\" ? \".\" : decPoint;\n let s = \"\";\n let symbol;\n if (currency == \"zh_CN\") {\n symbol = \"¥\";\n } else if (currency == \"en_US\") {\n symbol = \"$\";\n } else if (currency == \"en_GB\") {\n symbol = \"£\";\n } else if (currency == \"ja_JP\") {\n symbol = \"¥\";\n } else {\n symbol = \"\";\n }\n let toFixedFix = function (n, prec) {\n let k = Math.pow(10, prec);\n return \"\" + Math.ceil(n * k) / k;\n };\n s = (prec ? toFixedFix(n, prec) : \"\" + Math.round(n)).split(\".\");\n let re = /(-?\\d+)(\\d{3})/;\n while (re.test(s[0])) {\n s[0] = s[0].replace(re, \"$1\" + sep + \"$2\");\n }\n if ((s[1] || \"\").length < prec) {\n s[1] = s[1] || \"\";\n s[1] += new Array(prec - s[1].length + 1).join(\"0\");\n }\n return symbol + s.join(dec);\n },\n\n //o-action跳转\n calctextJump(openType, params, jumpType, styleParams) {\n if (styleParams) {\n params.styleParams = styleParams;\n }\n params.name = params.title || this.view.name;\n let showtype = this.showtype;\n if (showtype && (showtype == \"tab\" || \"include\") && params.isRefresh) {\n if (showtype == \"include\") {\n params.isIncludeCreate = \"include\";\n } else if (showtype == \"tab\") {\n params.istabCreate = \"tab\";\n }\n params.randomRefreshId = new Date().getTime();\n this.$parent.setViewRefreshId(params.randomRefreshId);\n }\n if (jumpType === \"opendocument\") {\n if (openType == \"open-eject\" || openType == \"dialog\") {\n let type = \"FORM\";\n this.$parent.openDialogJump(params, type);\n } else if (openType == \"open-present\") {\n this.$emit(\"openNewpage\", params);\n } else if (openType == \"open-blank\") {\n let routeData = this.$router.resolve({\n name: \"open\",\n query: params,\n });\n window.open(routeData.href, \"_blank\");\n } else {\n //默认用tab方式打开\n // this.$emit(\"add-tab\", params);\n this.addTab(params);\n }\n } else if (jumpType === \"openview\") {\n if (openType == \"open-eject\" || openType == \"dialog\") {\n let type = \"VIEW\";\n this.$parent.openDialogJump(params, type);\n } else if (openType == \"open-present\") {\n this.$emit(\"openNewpage\", params);\n } else if (openType == \"open-blank\") {\n let routeData = this.$router.resolve({\n name: \"view_blank\",\n query: params,\n });\n window.open(routeData.href, \"_blank\");\n } else {\n //默认用tab方式打开\n this.addTab(params);\n // this.$emit(\"add-tab\", params);\n }\n } else if (jumpType === \"jumpto\") {\n if (openType == \"open-eject\" || openType == \"dialog\") {\n let type = \"JUMP\";\n this.$parent.openDialogJump(params, type);\n } else if (openType == \"open-present\") {\n this.$emit(\"openNewpage\", params);\n } else if (openType == \"open-blank\") {\n let routeData = this.$router.resolve({\n name: \"view_blank\",\n query: params,\n });\n window.open(routeData.href, \"_blank\");\n } else {\n //默认用tab方式打开\n // this.$emit(\"add-tab\", params);\n this.addTab(params);\n }\n }\n },\n\n regReplace(value) {\n if (value) {\n return value.replace(/%/g, \"%\");\n }\n },\n\n /*\n * 脚本,o-action\n */\n template(val) {\n return {\n methods: {\n calctextJump: this.calctextJump,\n },\n template: \"
\" + val + \"
\",\n };\n },\n },\n filters: {\n viewFieldPath: function (value, field) {\n if (value) {\n let arr = JSON.parse(value);\n let name = \"\";\n if (arr && arr.length > 0) {\n for (let i = 0; i < arr.length; i++) {\n name += arr[i].path + \";\";\n }\n }\n name = name.replace(/^(\\s|;)+|(\\s|;)+$/g, \"\");\n return name;\n }\n },\n },\n};\n",null]}