{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\customDialog\\CustomDialogList.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\customDialog\\CustomDialogList.vue","mtime":1675071992928},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 { Message, TableColumn } from \"element-ui\";\r\nimport req from \"@/request.js\";\r\nimport form from \"@/api/form.js\";\r\nconst customDialogShow = () =>\r\n import(\"@/views/form/customDialog/CustomDialogShow.vue\");\r\nconst customDialogShowTree = () =>\r\n import(\"@/views/form/customDialog/CustomDialogShowTree.vue\");\r\nconst eipTreeDialog = () =>\r\n import(\"@/views/form/customDialog/EipTreeDialog.vue\");\r\nconst paramSettingDialog = () =>\r\n import(\"@/views/form/customDialog/ParamSettingDialog.vue\");\r\nconst VariablesSelector = () =>\r\n import(\"@/components/common/VariablesSelector.vue\");\r\nimport deepmerge from \"deepmerge\";\r\nexport default {\r\n components: {\r\n customDialogShow,\r\n customDialogShowTree,\r\n eipTreeDialog,\r\n paramSettingDialog,\r\n VariablesSelector\r\n },\r\n computed: {\r\n //删除对话框数据的URL\r\n deleteUrl: function () {\r\n return window.context.form + \"/form/customDialog/v1/removes\";\r\n },\r\n //保存对话框数据的URL (对话框新增修改时)\r\n saveUrl: function () {\r\n return window.context.form + \"/form/customDialog/v1/save\";\r\n },\r\n addColumnsTitle: function () {\r\n let statusWord = \"\";\r\n switch (this.tabStatus) {\r\n case \"display\":\r\n statusWord = \"显示\";\r\n break;\r\n case \"condition\":\r\n statusWord = \"条件\";\r\n break;\r\n case \"return\":\r\n statusWord = \"返回\";\r\n break;\r\n case \"order\":\r\n statusWord = \"排序\";\r\n break;\r\n }\r\n return `将左侧所选字段添加到${statusWord}字段中`;\r\n },\r\n },\r\n data() {\r\n return {\r\n selectOp: \"\",\r\n selectOptions: [],\r\n isSqlBuildType: false,\r\n customDialogPreview: {}, //自定义对话框预览配置参数\r\n aliasPreview: \"\", //自定义对话框预览别名参数\r\n titlePreview: \"\", //自定义对话框预览标题参数\r\n isSubmit: true, //侧边栏是否提交\r\n number_opList: [\r\n { value: \"等于\", key: \"EQ\" },\r\n { value: \"大于等于\", key: \"GE\" },\r\n { value: \"大于\", key: \"GT\" },\r\n { value: \"小于\", key: \"LT\" },\r\n { value: \"小于等于\", key: \"LE\" },\r\n { value: \"in\", key: \"IN\" },\r\n ], //运算条件数组-number\r\n string_opList: [\r\n { value: \"等于\", key: \"EQ\" },\r\n { value: \"like\", key: \"LK\" },\r\n { value: \"likeEnd\", key: \"LFK\" },\r\n { value: \"in\", key: \"IN\" },\r\n ], //运算条件数组-varchar\r\n date_opList: [\r\n { value: \"等于\", key: \"EQ\" },\r\n // { value: \"between\", key: \"BETWEEN\" },\r\n { value: \"大于等于\", key: \"GE\" },\r\n { value: \"小于等于\", key: \"LE\" },\r\n ], //运算条件数组-日期\r\n value_sourceList_list: [\r\n { value: \"参数传入\", key: \"3\" },\r\n { value: \"用户输入\", key: \"1\" },\r\n { value: \"固定值\", key: \"2\" },\r\n { value: \"脚本\", key: \"5\" },\r\n ], //值来源数组_列表\r\n value_sourceList_tree: [\r\n { value: \"固定值\", key: \"2\" },\r\n { value: \"动态传入\", key: \"4\" },\r\n { value: \"脚本\", key: \"5\" },\r\n ], //值来源数组_树\r\n sort_typeList: [\r\n { value: \"升序\", key: \"asc\" },\r\n { value: \"降序\", key: \"desc\" },\r\n ], //排序字段升序还是降序\r\n param_ctList: [\r\n { value: \"单行文本框\", key: \"1\" },\r\n {\r\n value: \"单选框\",\r\n key: \"2\",\r\n config: {\r\n options: [],\r\n choiceType: \"static\", //默认固定值\r\n customQuery: {\r\n custQueryJson: [],\r\n valueBind: \"\",\r\n labelBind: \"\",\r\n conditionfield: [],\r\n },\r\n bind: [], //绑定的返回值\r\n },\r\n },\r\n {\r\n value: \"下拉框\",\r\n key: \"3\",\r\n config: {\r\n options: [],\r\n choiceType: \"static\", //默认固定值\r\n customQuery: {\r\n custQueryJson: [],\r\n valueBind: \"\",\r\n labelBind: \"\",\r\n conditionfield: [],\r\n },\r\n bind: [], //绑定的返回值\r\n },\r\n },\r\n {\r\n value: \"标签\",\r\n key: \"4\",\r\n config: {\r\n defaultValue: [],\r\n type: \"tag\",\r\n bind: [], //绑定\r\n tag: \"\", //标签别名\r\n filterable: false, //标签是否可搜索\r\n placeholder: \"请选择\",\r\n expand: false,\r\n },\r\n },\r\n ], //控制器的类型\r\n displayfieldTree: { isScript: false }, //用来存储对话框为树形时的显示字段\r\n tabStatus: \"display\", //设置列的条件字段、显示字段、返回字段等的tabs标签页\r\n table: {}, //获取设置列获取字段信息\r\n titleSetting: \"未命名-设置列\", //设置列侧边栏的名称\r\n dialogVisibleSetting: false, //是否显示可配置设置列\r\n disabled: false, //是否禁止操作\r\n // dialogVisiblePost:false,//参数模板设置弹框\r\n tableOrViewList: [], //数据源表\r\n objName: \"\", //查询数据源时表或视图名称\r\n title: \"添加对话框\",\r\n data: [], //列表数据\r\n treeSidebarData: {\r\n diySql: \"\",\r\n }, //对话框的新增修改数据\r\n pageResult: {\r\n page: 1,\r\n pageSize: 20,\r\n total: 0,\r\n },\r\n dataSourcesInBean: [], //数据源池\r\n isTableList: [\r\n {\r\n key: 0,\r\n value: \"视图\",\r\n },\r\n {\r\n key: 1,\r\n value: \"表\",\r\n },\r\n ], //表和视图\r\n dialogVisible: false, //侧边栏是否显示\r\n uploadDialogVisible: false,\r\n uploadUrl: window.context.form + \"/form/customDialog/v1/import\",\r\n fileList: [],\r\n leftTreeDialogList: [],\r\n rightDialogList: [],\r\n treeDialogFields:[],\r\n listDialogFields:[],\r\n combinationRule:{\r\n leftTree:\"\",\r\n rightDialog:\"\",\r\n rules:[]\r\n },\r\n cmOptions: {\r\n showCursorWhenSelecting: true,\r\n value: \"\",\r\n mode: \"application/json\",\r\n readOnly: false,\r\n smartIndent: true,\r\n autofocus: true,\r\n tabSize: 2,\r\n theme: \"eclipse\",\r\n lineNumbers: true,\r\n line: true,\r\n inputStyle: \"textarea\",\r\n \r\n },\r\n innerValidation: true\r\n };\r\n },\r\n methods: {\r\n handleTabSwitch(m) {\r\n if (m.name == \"dataParam\") {\r\n this.$refs.dataParamCode && this.$refs.dataParamCode.refresh();\r\n }\r\n },\r\n handleVarSelectorClick(s, n) {\r\n if (n && n.data && n.data.field) {\r\n const fieldExp = \"${\" + n.data.field + \"}\";\r\n this.$refs.dataParamCode &&\r\n this.$refs.dataParamCode.codemirror.replaceSelection(fieldExp);\r\n }\r\n },\r\n //鼠标选中行改变复选框\r\n rowClick(row, column, event) {\r\n this.$refs.htTable.$refs.htTable.toggleRowSelection(row);\r\n },\r\n returnVal(val, row) {\r\n row.config = val;\r\n },\r\n paramChange(val, row) {\r\n this.param_ctList.forEach((item) => {\r\n if (item.key == val) {\r\n row.config = item.config;\r\n }\r\n });\r\n console.log(val, row);\r\n },\r\n changeOptions() {\r\n if (this.treeSidebarData.diySql) {\r\n this.treeSidebarData.diySql =\r\n this.treeSidebarData.diySql + this.selectOp;\r\n } else {\r\n this.treeSidebarData.diySql = this.selectOp;\r\n }\r\n },\r\n //监听列表预览页面的确认事件\r\n handleSavePreview(data) {\r\n Message.success(\"返回数据为:\" + JSON.stringify(data));\r\n },\r\n //预览\r\n preview(alias) {\r\n const this_ = this;\r\n let url = \"${form}/form/customDialog/v1/getByAlias?alias=\" + 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.toLowerCase();\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 || customDialog.style == 2) {\r\n this_.aliasPreview = alias;\r\n this_.customDialogPreview = customDialog;\r\n this_.titlePreview = customDialog.style == 0?(customDialog.name + \"-对话框列表预览\"):(customDialog.name + \"-组合对话框预览\")\r\n setTimeout(() => {\r\n this_.$refs.customDialogShow.showDialog(); //显示自定义对话框列表预览弹框\r\n });\r\n } else if(customDialog.style == 1) {\r\n //树形\r\n this_.aliasPreview = alias;\r\n this_.customDialogPreview = customDialog;\r\n this_.titlePreview = customDialog.name + \"-对话框树形预览\";\r\n let param = {};\r\n if (customDialog.conditionfield.length > 0) {\r\n for (let i = customDialog.conditionfield.length - 1; i >= 0; i--) {\r\n //判断条件字段是否是动态传入(defaultType:4:动态传入,2:固定值 )\r\n if (customDialog.conditionfield[i].defaultType == \"4\") {\r\n param[customDialog.conditionfield[i].field] =\r\n customDialog.conditionfield[i].comment;\r\n }\r\n }\r\n }\r\n //有动态传入的字段\r\n if (JSON.stringify(param) != \"{}\") {\r\n customDialog.param = param;\r\n setTimeout(() => {\r\n this_.$refs.customDialogShowTree.showDialog(); //显示自定义对话框列表预览弹框\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this_.$refs.eipTreeDialog.showDialog();\r\n });\r\n }\r\n }\r\n });\r\n },\r\n //判断数据是否包含某个对象,并返回数据包含对象的下标\r\n indexArray(array, item) {\r\n if (array.length == 0) {\r\n return -1;\r\n }\r\n for (let i = 0; i < array.length; i++) {\r\n if (JSON.stringify(array[i]) == JSON.stringify(item)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n //批量勾选设置列的字段\r\n handleSelectionChange(rows) {\r\n //先把所有选择的字段设置为未选中\r\n for (let i = 0; i < this.table.columnList.length; i++) {\r\n if (this.table.columnList[i].selected) {\r\n this.table.columnList[i].selected = false;\r\n }\r\n }\r\n if (rows && rows.length > 0) {\r\n //再根据勾选的字段设置为选中\r\n for (let i = 0; i < rows.length; i++) {\r\n let res = this.indexArray(this.table.columnList, rows[i]);\r\n this.table.columnList[res].selected = true;\r\n }\r\n }\r\n },\r\n //保存设置列的内容\r\n save() {\r\n const this_ = this;\r\n if (this_.treeSidebarData.style == \"1\") {\r\n this_.$validator.validateAll(\"editSysTypeForm\").then((result) => {\r\n if (result) {\r\n this_.doSave();\r\n } else {\r\n this_.$message({\r\n showClose: true,\r\n message: `有字段未通过校验,请正确填写表单内容。`,\r\n type: \"warning\",\r\n });\r\n }\r\n });\r\n } else {\r\n this.doSave();\r\n }\r\n },\r\n doSave() {\r\n const this_ = this;\r\n this_.$validator.validateAll(\"settingSave\").then((result) => {\r\n if (result) {\r\n //如果是树形对话框则给显示字段重新赋值,把显示字段的数组格式设置为对象格式\r\n if (this_.treeSidebarData.style == \"1\") {\r\n this_.treeSidebarData.displayfield = {};\r\n this_.treeSidebarData.displayfield = { ...this_.displayfieldTree };\r\n }\r\n if (!this_.treeSidebarData.diySql && this_.isSqlBuildType) {\r\n Message.warning(\"请添加sql语句\");\r\n return;\r\n }\r\n for (let i in this_.treeSidebarData.conditionfield) {\r\n let column = this_.treeSidebarData.conditionfield[i];\r\n if (column.dbType == \"date\" && column.condition == \"BETWEEN\") {\r\n column.defaultValue += \"|\" + column.endDate;\r\n }\r\n }\r\n if (\r\n this_.treeSidebarData.sortfield &&\r\n this_.treeSidebarData.sortfield.length > 3\r\n ) {\r\n Message.warning(\"您添加的排序字段太多,最多只能添加3个排序字段!\");\r\n return;\r\n }\r\n this_.innerValidation = true;\r\n this_.dialogVisibleSetting = false;\r\n } else {\r\n let arr = this_.$validator.errors.items.filter(\r\n (item) => item.scope == \"settingSave\"\r\n );\r\n let errorLength = arr.length;\r\n this_.$message({\r\n showClose: true,\r\n message: `有字段未通过校验,请正确填写表单内容。`,\r\n type: \"warning\",\r\n });\r\n }\r\n });\r\n },\r\n //关闭设置列弹框\r\n close() {\r\n let this_ = this;\r\n if(this_.treeSidebarData.style == \"1\"){\r\n this.$validator.validateAll(\"settingSave\").then(result=>{\r\n if(!result){\r\n this_.innerValidation = false;\r\n this_.doClose();\r\n return ;\r\n }else{\r\n this_.doNextValidate();\r\n }\r\n })\r\n }else{\r\n this_.doNextValidate();\r\n }\r\n },\r\n doClose(){\r\n this.dialogVisibleSetting = false;\r\n this.displayfieldTree = {isScript: false};\r\n },\r\n doNextValidate(){\r\n let this_ = this;\r\n this_.$validator.validateAll(\"settingSave\").then(result=>{\r\n if(!result){\r\n \r\n this_.innerValidation = false;\r\n this.doClose();\r\n return ;\r\n }else{\r\n if (this_.treeSidebarData.style == \"1\") {\r\n this_.treeSidebarData.displayfield = {};\r\n this_.treeSidebarData.displayfield = { ...this_.displayfieldTree };\r\n }\r\n if (!this_.treeSidebarData.diySql && this_.isSqlBuildType) {\r\n //Message.warning(\"请添加sql语句\");\r\n this_.innerValidation = false;\r\n this_.doClose();\r\n return;\r\n }\r\n for (let i in this_.treeSidebarData.conditionfield) {\r\n let column = this_.treeSidebarData.conditionfield[i];\r\n if (column.dbType == \"date\" && column.condition == \"BETWEEN\") {\r\n column.defaultValue += \"|\" + column.endDate;\r\n }\r\n }\r\n if (\r\n this_.treeSidebarData.sortfield &&\r\n this_.treeSidebarData.sortfield.length > 3\r\n ) {\r\n //Message.warning(\"您添加的排序字段太多,最多只能添加3个排序字段!\");\r\n this_.innerValidation = false;\r\n this_.doClose();\r\n return;\r\n }\r\n this_.innerValidation = true;\r\n this_.doClose();\r\n }\r\n })\r\n },\r\n //添加设置列的字段\r\n addFields() {\r\n let column = {};\r\n column.fieldName = \"\";\r\n column.comment = \"\";\r\n column.columnType = \"varchar\";\r\n this.table.columnList.push(column);\r\n },\r\n //把设置列的字段新增到条件字段、显示字段、返回字段等\r\n addColumns() {\r\n let _this = this;\r\n //检查是否选择了列\r\n for (let i in this.table.columnList) {\r\n let c = this.table.columnList[i];\r\n if (c.selected) break;\r\n if (i == this.table.columnList.length - 1) {\r\n if (i == this.table.columnList.length - 1) {\r\n Message.warning(\"请选择左边的列\");\r\n }\r\n }\r\n }\r\n //判断tabs标签页是否选择了显示字段\r\n if (this.tabStatus == \"display\") {\r\n for (let i in this.table.columnList) {\r\n let c = this.table.columnList[i];\r\n if (!c.selected) continue;\r\n let column = {};\r\n column.field = c.fieldName;\r\n column.comment = c.comment;\r\n column.nameKey = \"0\";\r\n if (this.treeSidebarData.style == \"0\") {\r\n let show = this.judgeAryData(\r\n this.treeSidebarData.displayfield,\r\n column\r\n );\r\n if (show) {\r\n this.treeSidebarData.displayfield.push(column);\r\n }\r\n } else if (this.treeSidebarData.style == \"1\") {\r\n eval(\"this.\" + this.activeModelStr + \"='\" + c.fieldName + \"'\");\r\n }\r\n }\r\n //判断tabs标签页是否选择了条件字段\r\n } else if (this.tabStatus == \"condition\") {\r\n for (let i in this.table.columnList) {\r\n let c = this.table.columnList[i];\r\n if (!c.selected) continue;\r\n let column = {};\r\n column.field = c.fieldName;\r\n column.comment = c.comment;\r\n column.condition = \"EQ\";\r\n column.dbType = c.columnType;\r\n column.defaultType = \"2\";\r\n column.defaultValue = \"\";\r\n\r\n let show = this.judgeAryData(\r\n this.treeSidebarData.conditionfield,\r\n column\r\n );\r\n if (show) {\r\n this.treeSidebarData.conditionfield.push(column);\r\n }\r\n }\r\n //去除重复项\r\n this.treeSidebarData.resultfield.unique(function (a, b) {\r\n return a.field == b.field;\r\n });\r\n //判断tabs标签页是否选择了返回字段\r\n } else if (this.tabStatus == \"return\") {\r\n for (let i in this.table.columnList) {\r\n let c = this.table.columnList[i];\r\n\r\n if (!c.selected) continue;\r\n let column = {};\r\n column.field = c.fieldName;\r\n column.comment = c.comment;\r\n column.idKey = \"0\";\r\n column.AggFuncOp = \"\"; //合计函数运算符\r\n column.columnType = c.columnType; //字段类型\r\n\r\n let show = this.judgeAryData(\r\n this.treeSidebarData.resultfield,\r\n column\r\n );\r\n if (show) {\r\n this.treeSidebarData.resultfield.push(column);\r\n }\r\n }\r\n //去除重复项\r\n this.treeSidebarData.resultfield.unique(function (a, b) {\r\n return a.field == b.field;\r\n });\r\n //判断tabs标签页是否选择了排序字段\r\n } else if (this.tabStatus == \"order\") {\r\n let errorMsg = \"\";\r\n for (let i in this.table.columnList) {\r\n let c = this.table.columnList[i];\r\n if (!c.selected) continue;\r\n //大文本类型与一些未明确的字段类型不可作为排序字段\r\n if (c.columnType == \"clob\" || !c.columnType) {\r\n errorMsg += c.fieldName + \" \";\r\n continue;\r\n }\r\n let column = {};\r\n column.field = c.fieldName;\r\n column.sortType = \"asc\";\r\n column.comment = c.comment;\r\n\r\n let show = this.judgeAryData(this.treeSidebarData.sortfield, column);\r\n if (show) {\r\n this.treeSidebarData.sortfield.push(column);\r\n }\r\n }\r\n if (errorMsg) {\r\n this.$message.error(\r\n \"字段:\" + errorMsg + \"的字段类型不支持作为排序字段\"\r\n );\r\n }\r\n //去除重复项\r\n this.treeSidebarData.sortfield.unique(function (a, b) {\r\n return a.field == b.field;\r\n });\r\n }\r\n },\r\n //判断是否存在重复字段\r\n judgeAryData(data, column) {\r\n let show = true;\r\n for (var i = 0; i < data.length; i++) {\r\n if (\r\n data[i].field == column.field &&\r\n data[i].comment == column.comment\r\n ) {\r\n show = false;\r\n break;\r\n }\r\n }\r\n return show;\r\n },\r\n //删除字段\r\n deleteSetting(list, index) {\r\n list.splice(index, 1);\r\n },\r\n //打开设置列弹框\r\n showSettingDialog() {\r\n this.tabStatus = \"display\"; //默认打开显示字段\r\n this.dialogVisibleSetting = true;\r\n if(this.treeSidebarData.style==1){//树形\r\n this.displayfieldTree = { ...this.treeSidebarData.displayfield };\r\n }\r\n if (\r\n this.treeSidebarData.conditionfield &&\r\n this.treeSidebarData.conditionfield.length > 0 &&\r\n this.selectOptions.length == 0\r\n ) {\r\n this.treeSidebarData.conditionfield.forEach((item) => {\r\n if (item.defaultType == \"1\") {\r\n let selectOp = {};\r\n selectOp.field = item.field;\r\n selectOp.comment = item.comment;\r\n this.selectOptions.push(selectOp);\r\n }\r\n // if(!item.config){\r\n // item.config = false;\r\n // }\r\n });\r\n }\r\n if (\r\n this.treeSidebarData.sqlBuildType === 0 ||\r\n !this.treeSidebarData.sqlBuildType\r\n ) {\r\n this.isSqlBuildType = false;\r\n } else {\r\n this.isSqlBuildType = true;\r\n }\r\n if (this.treeSidebarData.name) {\r\n this.titleSetting = this.treeSidebarData.name + \"-设置列\";\r\n } else {\r\n this.titleSetting = \"未命名-设置列\";\r\n }\r\n //打开设置如果是数据源,先获取数据源的字段\r\n if (this.treeSidebarData.dsType == \"dataSource\") {\r\n let params = {\r\n dsalias: this.treeSidebarData.dsalias,\r\n isTable: this.treeSidebarData.isTable,\r\n objName: this.treeSidebarData.objName,\r\n };\r\n const this_ = this;\r\n //获取数据源的字段\r\n let url = window.context.form + \"/form/customQuery/v1/getTable\";\r\n req.post(url, params).then(function (data) {\r\n this_.table = data.data.table;\r\n this_.handleFilterColumn();\r\n });\r\n }\r\n //打开设置列如果不是数据源\r\n if (this.treeSidebarData.dsType != \"dataSource\") {\r\n //值来源数组_树改变如下\r\n this.value_sourceList_tree = [{ value: \"固定值\", key: \"2\" }];\r\n //判断REST接口是否是GET请求\r\n if (this.treeSidebarData.requestType == \"GET\") {\r\n //运算条件数组-varchar改变如下\r\n this.string_opList = [{ value: \"等于\", key: \"EQ\" }];\r\n } else {\r\n //运算条件数组-varchar改变如下\r\n this.string_opList = [\r\n { value: \"等于\", key: \"EQ\" },\r\n { value: \"like\", key: \"LK\" },\r\n { value: \"likeEnd\", key: \"LFK\" },\r\n { value: \"in\", key: \"IN\" },\r\n ];\r\n }\r\n //字段设置为空\r\n this.table = { columnList: [] };\r\n }else{\r\n this.string_opList = [\r\n { value: \"等于\", key: \"EQ\" },\r\n { value: \"like\", key: \"LK\" },\r\n { value: \"likeEnd\", key: \"LFK\" },\r\n { value: \"in\", key: \"IN\" },\r\n ];\r\n }\r\n },\r\n // //保存参数模板设置\r\n // handleSave(){\r\n // this.treeSidebarData.dataParam = this.treeSidebarData.dataParam==\"{}\"?\"\":this.treeSidebarData.dataParam;\r\n // if(this.treeSidebarData.dataParam){\r\n // Message.success(\"设置成功\");\r\n // }\r\n // this.dialogVisiblePost=false;\r\n // },\r\n // //打开参数模板设置\r\n // showSetParamDialog(){\r\n // this.dialogVisiblePost=true;\r\n // },\r\n // //关闭参数模板设置\r\n // handleClosePost(){\r\n // this.dialogVisiblePost=false;\r\n // },\r\n //查询数据源表或视图\r\n getByDsObjectName() {\r\n if(this.treeSidebarData.id){\r\n return ;\r\n }\r\n if (this.treeSidebarData.dsalias == null) {\r\n Message.warning(\"请选择数据源\");\r\n return;\r\n }\r\n this.params = {};\r\n this.params.dsalias = this.treeSidebarData.dsalias;\r\n this.params.isTable = this.treeSidebarData.isTable;\r\n this.params.objName = this.objName;\r\n const this_ = this;\r\n let url = window.context.form + \"/form/customQuery/v1/getByDsObjectName\";\r\n req.post(url, this_.params).then(function (data) {\r\n this_.tableOrViewList = []; //每次查询前先设置为空\r\n if (!data || data.data.length == 0) {\r\n Message.warning(\"该数据源中未查询到表或视图\");\r\n return;\r\n }\r\n Message.success(\"查询成功\");\r\n for (let i = 0; i < data.data.length; i++) {\r\n data.data[i].comment =\r\n data.data[i].name + \"(\" + data.data[i].comment + \")\";\r\n this_.tableOrViewList.push(data.data[i]);\r\n }\r\n //选择表或试图时默认选择第一个\r\n this_.treeSidebarData.objName = this_.tableOrViewList[0].name;\r\n });\r\n },\r\n //关闭侧边栏\r\n handleClose() {\r\n this.treeSidebarData = {}; //清除保存过的数据\r\n this.isSqlBuildType = false;\r\n this.dialogVisible = false;\r\n this.combinationRule = {\r\n leftTree:\"\",\r\n rightDialog:\"\",\r\n rules:[]\r\n }\r\n },\r\n //对话框新增修改保存后操作\r\n afterSaveData() {\r\n if (this.treeSidebarData.conditionfield.length == 0) {\r\n this.selectOptions = [];\r\n }\r\n this.dialogVisible = false;\r\n this.$refs.htTable.load(); //重新加载列表数据\r\n this.$store.dispatch(\"form/clearCustomDialog\", this.treeSidebarData.alias);\r\n this.combinationRule = {\r\n leftTree:\"\",\r\n rightDialog:\"\",\r\n rules:[]\r\n }\r\n },\r\n //对话框新增修改保存前操作\r\n beforeSaveData() {\r\n if(!this.innerValidation){\r\n Message.warning(\"设置列校验失败,请进入设置列中完善信息并点击右上角保存按钮\")\r\n this.isSubmit = false;\r\n return ;\r\n }\r\n //如果数据来源不是数据源则没有所属数据源\r\n if (this.treeSidebarData.dsType != \"dataSource\") {\r\n this.treeSidebarData.dsalias = \"\";\r\n }\r\n //sql生成的方式(0:页面设置 1:diy)\r\n if (this.isSqlBuildType) {\r\n this.treeSidebarData.sqlBuildType = 1;\r\n } else {\r\n this.treeSidebarData.sqlBuildType = 0;\r\n }\r\n if (\r\n this.treeSidebarData.dsType == \"dataSource\" &&\r\n !this.treeSidebarData.id\r\n ) {\r\n if (this.treeSidebarData.objName == \"\" && this.treeSidebarData.style != 2) {\r\n Message.warning(\"请选择表或视图\");\r\n this.isSubmit = false;\r\n return;\r\n }\r\n }\r\n //树形\r\n if (this.treeSidebarData.style == 1) {\r\n if (\r\n this.treeSidebarData.displayfield.length == 0 ||\r\n this.treeSidebarData.resultfield.length == 0\r\n ) {\r\n Message.warning(\"请设置需要显示和返回的字段\");\r\n this.isSubmit = false;\r\n return;\r\n }\r\n } else if(this.treeSidebarData.style != 2) {\r\n if (this.treeSidebarData.displayfield.length == 0) {\r\n Message.warning(\"请设置需要显示的字段\");\r\n this.isSubmit = false;\r\n return;\r\n }\r\n }else if(this.treeSidebarData.style == 2){\r\n //校验数据\r\n if(!this.combinationRule.leftTree){\r\n Message.warning(\"请设置树对话框\");\r\n this.isSubmit = false;\r\n return ;\r\n }\r\n if(!this.combinationRule.rightDialog){\r\n Message.warning(\"请设置列表对话框\");\r\n this.isSubmit = false;\r\n return;\r\n }\r\n if(!this.combinationRule.rules || this.combinationRule.rules == 0){\r\n Message.warning(\"请添加组合规则\");\r\n this.isSubmit = false;\r\n return ;\r\n }\r\n for(let i = 0 ; i < this.combinationRule.rules.length;i++){\r\n if(!this.combinationRule.rules[i].treeField || !this.combinationRule.rules[i].listField){\r\n Message.warning(\"请完善组合规则\");\r\n this.isSubmit = false;\r\n return ;\r\n }\r\n }\r\n\r\n //保存组合规则\r\n this.treeSidebarData.combinationRule = this.combinationRule;\r\n }\r\n\r\n this.isSubmit = true;\r\n },\r\n //添加为关联查询\r\n saveQueryByDialog(id) {\r\n this.$confirm(\"确认添加为关联查询?\")\r\n .then((_) => {\r\n this.getDialogById(id, \"add\");\r\n })\r\n .catch((_) => {});\r\n },\r\n //点击按钮打开侧边栏\r\n showDialog(action, row) {\r\n this.loadDialogData();\r\n this.dialogVisible = false;\r\n this.$nextTick(() => {\r\n this.dialogVisible = true;\r\n })\r\n\r\n if (action) {\r\n this.objName = \"\";\r\n if (action == \"add\") {\r\n this.title = \"添加对话框\";\r\n this.disabled = false;\r\n this.treeSidebarData = {\r\n objName: \"\",\r\n displayfield: [],\r\n conditionfield: [],\r\n resultfield: [],\r\n sortfield: [],\r\n style: 0,\r\n needPage: true,\r\n selectNum: 1,\r\n dsType: \"dataSource\",\r\n width: 800,\r\n height: 600,\r\n isTable: 1,\r\n dsalias: \"LOCAL\",\r\n alias: \"\",\r\n requestType: \"POST\",\r\n pageKey: \"page\",\r\n pageSizeKey: \"pageSize\",\r\n totalKey: \"total\",\r\n listKey: \"rows\",\r\n };\r\n } else if (action == \"edit\") {\r\n this.disabled = true;\r\n this.title = \"编辑对话框\";\r\n let this_=this;\r\n let data= deepmerge({}, row, {clone: true});\r\n this_.treeSidebarData = data;\r\n this_.treeSidebarData.displayfield = JSON.parse(data.displayfield);\r\n this_.treeSidebarData.resultfield = JSON.parse(data.resultfield);\r\n this_.treeSidebarData.sortfield = JSON.parse(data.sortfield);\r\n this_.treeSidebarData.conditionfield = JSON.parse(data.conditionfield);\r\n this_.displayfieldTree = { ...this_.treeSidebarData.displayfield };\r\n if(data.style == 2){\r\n this_.combinationRule = JSON.parse(data.combinationRule);\r\n this_.loadDialogFields(this_.combinationRule.leftTree,true);\r\n this_.loadDialogFields(this_.combinationRule.rightDialog,true);\r\n }\r\n }\r\n }\r\n },\r\n //根据对话框信息ID查询对话框所有信息\r\n getDialogById(id, action) {\r\n const this_ = this;\r\n if (!id) return;\r\n let url = window.context.form + \"/form/customDialog/v1/\" + id;\r\n req.get(url).then(function (data) {\r\n data = data.data;\r\n this_.treeSidebarData = data;\r\n this_.treeSidebarData.displayfield = JSON.parse(data.displayfield);\r\n this_.treeSidebarData.resultfield = JSON.parse(data.resultfield);\r\n this_.treeSidebarData.sortfield = JSON.parse(data.sortfield);\r\n this_.treeSidebarData.conditionfield = JSON.parse(data.conditionfield);\r\n this_.displayfieldTree = { ...this_.treeSidebarData.displayfield };\r\n if(data.style == 2){\r\n this_.combinationRule = JSON.parse(data.combinationRule);\r\n this_.loadDialogFields(this_.combinationRule.leftTree,true);\r\n this_.loadDialogFields(this_.combinationRule.rightDialog,true);\r\n }\r\n\r\n\r\n //添加为关联查询\r\n if (action && action == \"add\") {\r\n for (\r\n let i = 0;\r\n i < this_.treeSidebarData.conditionfield.length;\r\n i++\r\n ) {\r\n //如果对话框的条件字段有为参数传入的即对应关联查询的参数传入\r\n //并且对话框的条件字段有为用户输入的即对应关联查询的参数传入\r\n //(defaultType:1:用户输入,2:固定值 ,3:参数传入 )\r\n if (this_.treeSidebarData.conditionfield[i].defaultType == \"3\") {\r\n this_.treeSidebarData.conditionfield[i].defaultType = \"1\";\r\n }\r\n }\r\n if (this_.treeSidebarData.needPage == false) {\r\n this_.treeSidebarData.needPage = 0;\r\n } else {\r\n this_.treeSidebarData.needPage = 1;\r\n }\r\n for (let i = 0; i < this_.treeSidebarData.displayfield.length; i++) {\r\n this_.treeSidebarData.displayfield[i].idKey = \"0\";\r\n this_.treeSidebarData.displayfield[i].AggFuncOp = \"\"; //合计函数运算符\r\n }\r\n let url =\r\n window.context.form + \"/form/customQuery/v1/saveQueryByDialog\";\r\n req.post(url, this_.treeSidebarData).then(function (rep) {\r\n rep = rep.data;\r\n if (rep && rep.state) {\r\n Message.success(rep.message);\r\n } else {\r\n Message.error(rep.message || \"保存失败\");\r\n }\r\n });\r\n }\r\n });\r\n },\r\n //页面加载显示数据\r\n loadData(param, cb) {\r\n req\r\n .post(window.context.form + \"/form/customDialog/v1/list\", param)\r\n .then((response) => {\r\n this.data = response.data.rows;\r\n this.pageResult = {\r\n page: response.data.page,\r\n pageSize: response.data.pageSize,\r\n total: response.data.total,\r\n };\r\n })\r\n .finally(() => cb());\r\n },\r\n handleCommond(param) {\r\n switch (param.command) {\r\n case \"preview\":\r\n this.preview(param.row.alias);\r\n break;\r\n case \"relation\":\r\n this.saveQueryByDialog(param.row.id);\r\n break;\r\n }\r\n },\r\n controllerTypeChange(row) {\r\n if (row.defaultType == \"1\") {\r\n let options = {};\r\n options.comment = row.comment;\r\n options.field = row.field;\r\n this.selectOptions.push(options);\r\n this.$set(row, \"controllerType\", \"1\");\r\n }\r\n },\r\n //导入\r\n handleImport(param){\r\n let formData = new FormData();\r\n formData.append(\"file\",param.file);\r\n form.importCustomDialog(formData).then(resp=>{\r\n if(resp.state){\r\n this.$message({type:\"success\",message:resp.message});\r\n this.fileList = [];\r\n this.uploadDialogVisible = false;\r\n this.$refs.htTable.load(); //重新加载列表数据\r\n }else{\r\n this.beforeClose();\r\n }\r\n })\r\n },\r\n //导出\r\n handleExport(){\r\n let selection = this.$refs.htTable.$refs.htTable.selection;\r\n if(!selection || selection.length == 0){\r\n this.$message({type:\"warning\",message:\"请至少选择一条记录\"});\r\n return;\r\n };\r\n let ids = [];\r\n for(let i = 0 ; i < selection.length;i++){\r\n ids.push(selection[i].id);\r\n }\r\n req.download(\r\n window.context.form +\r\n \"/form/customDialog/v1\" +\r\n \"/export?ids=\"+\r\n ids.join(\",\")\r\n )\r\n },\r\n beforeClose(){\r\n this.uploadDialogVisible = false;\r\n this.fileList = [];\r\n },\r\n //加载对话框数据\r\n loadDialogData(){\r\n this.leftTreeDialogList = [];\r\n this.rightDialogList = [];\r\n req.post(window.context.form + \"/form/customDialog/v1/getAll\").then(resp=>{\r\n let data = resp.data;\r\n data.forEach(item=>{\r\n if(item.style == 1){\r\n this.leftTreeDialogList.push({\r\n alias: item.alias,\r\n name: item.name\r\n })\r\n }else if(item.style == 0){\r\n this.rightDialogList.push({\r\n alias: item.alias,\r\n name: item.name\r\n })\r\n }\r\n })\r\n })\r\n },\r\n uploadSubmit(){\r\n if(this.$refs.elUpload.uploadFiles.length == 0){\r\n this.$message({type:\"warning\",message:\"请上传文件\"});\r\n return ;\r\n }\r\n this.$refs.elUpload.submit();\r\n },\r\n addCombinationRule(){\r\n this.combinationRule.rules.push({\r\n treeField:\"\",\r\n listField:\"\",\r\n condition:\"\",\r\n })\r\n },\r\n //加载对话框数据\r\n loadDialogFields(alias,isInit){\r\n //清空旧数据\r\n let this_ = this;\r\n //初始化时不清空\r\n if(!isInit){\r\n this_.combinationRule.rules.splice(0);\r\n }\r\n form.getCustomDialogByAlias(alias).then(data=>{\r\n //如果是树形对话框,则加载返回值字段\r\n if(data.style == 1){\r\n this_.treeDialogFields.splice(0);\r\n JSON.parse(data.resultfield).forEach(item=>{\r\n this_.treeDialogFields.push({\r\n name:item.comment,\r\n alias:item.field\r\n })\r\n })\r\n }else if(data.style == 0){\r\n //列表对话框,加载条件字段\r\n this_.listDialogFields.splice(0);\r\n JSON.parse(data.conditionfield).forEach(item=>{\r\n if(item.defaultType == 3){\r\n this_.listDialogFields.push({\r\n name:item.comment,\r\n alias:item.field,\r\n condition:item.condition\r\n })\r\n }\r\n })\r\n }\r\n })\r\n },\r\n setCondition(alias,index){\r\n let this_ = this;\r\n this_.listDialogFields.forEach(item=>{\r\n if(item.alias == alias){\r\n this_.combinationRule.rules[index].condition = item.condition;\r\n }\r\n })\r\n\r\n },\r\n deleteRule(index){\r\n this.combinationRule.rules.splice(index,1);\r\n },\r\n handleFilterColumn(){\r\n for(let i = this.table.columnList.length - 1 ; i >= 0 ; i--){\r\n if(this.table.columnList[i].fieldName && this.table.columnList[i].fieldName.toLowerCase() == \"f_form_data_rev_\"){\r\n this.table.columnList.splice(i,1);\r\n }\r\n }\r\n }\r\n },\r\n mounted() {\r\n this.$validator = this.$root.$validator;\r\n const this_ = this;\r\n //获取数据源池\r\n req\r\n .get(window.context.portal + \"/sys/sysDataSource/v1/getDataSources\")\r\n .then(function (data) {\r\n this_.dataSourcesInBean = data.data;\r\n });\r\n },\r\n};\r\n",null]}