{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\LayoutProperty.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\LayoutProperty.vue","mtime":1675071992022},{"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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 Draggable from \"vuedraggable\";\r\nimport IconDialog from \"@/components/dialog/IconDialog.vue\";\r\nimport i18nMessageEdit from \"@/components/system/I18nMessageEdit\";\r\nimport HotTableFieldDialog from \"@/components/form/HotTableFieldDialog\";\r\nimport HotSubDialog from \"@/components/form/HotSubDialog\";\r\nimport MathDialog from \"@/components/form/customView/MathDialog.vue\";\r\nimport MathRowDialog from \"@/components/form/customView/MathRowDialog.vue\";\r\nimport CellMathDialog from \"@/components/form/customView/CellMathDialog.vue\";\r\nimport FormTabsDialog from \"@/components/form/FormTabsDialog.vue\";\r\nimport { Base64 } from \"js-base64\";\r\nimport utils from \"@/hotent-ui-util.js\";\r\nimport form from \"@/api/form.js\";\r\nconst EipDataTemplateSelector = () =>\r\n import(\"@/components/selector/EipDataTemplateSelector.vue\");\r\nconst SubImportMergeDialog = () => import(\"@/components/form/customView/SubImportMergeDialog.vue\");\r\nimport deepmerge from 'deepmerge'\r\nexport default {\r\n name: \"layout-property\",\r\n components: {\r\n FormTabsDialog,\r\n Draggable,\r\n IconDialog,\r\n i18nMessageEdit,\r\n EipDataTemplateSelector,\r\n HotTableFieldDialog,\r\n HotSubDialog,\r\n MathDialog,\r\n MathRowDialog,\r\n CellMathDialog,\r\n SubImportMergeDialog,\r\n },\r\n props: [\"data\", \"subTables\", \"sunTables\", \"tablefields\", \"boDefData\",\"formType\"],\r\n data() {\r\n return {\r\n selectQueryDialog: false,\r\n subCustomHeader: \"\",\r\n customQuerys: [{ alias: \"\", name: \"\" }],\r\n subTableEnt: [{ name: \"\", desc: \"\" }],\r\n customDialogs: [], //对话框列表数据,\r\n dialogcustDialogVisible: false,\r\n dialogSunDialog: false,\r\n custDialogprop: {},\r\n dialogincluddingFileVisible: false,\r\n pageBtnScriptDialog: false,\r\n pageBtnScriptBase: \"\",\r\n i18nMessageKey: \"\",\r\n dialogStyleVisible: false, //编写栅格布局样式对话框\r\n selectList: [],\r\n bindList: [],\r\n dialogDataViewVisible: false, //\r\n templateShow: false,\r\n style: \"\", //栅格布局样式\r\n styleIndex: \"\", //栅格布局样式下标\r\n cmStyle: {\r\n value: \"\",\r\n mode: \"css\",\r\n readOnly: false,\r\n smartIndent: true,\r\n tabSize: 2,\r\n theme: \"base16-light\",\r\n lineNumbers: true,\r\n line: true,\r\n },\r\n relationVisible: false,\r\n relations: [],\r\n dialogHotHeaderDialogVisible: false,\r\n dialogHotCrossMappingVisible: false,\r\n dialogHotNestedHeadersVisible: false,\r\n dialogHotCountVisible: false,\r\n dialogCellCountVisible: false,\r\n dialogHotRowsCountVisible: false,\r\n currentHotColumnField: {},\r\n dialogcustOrgVisible: false,\r\n dialogMainTableCalcVisible: false,\r\n dialogCellCalcVisible: false,\r\n currentMainTableCalcField: {},\r\n currentCellCalcField: {},\r\n clickColor: \"\",\r\n selectBorderType: \"\",\r\n borderType: [\r\n { value: \" border-style: solid; \", label: \"————————————\" },\r\n { value: \" border-style: dotted; \", label: \"●●●●●●●●●●●●●●●●●●●●\" },\r\n {\r\n value: \" border-style: dashed; \",\r\n label: \"------------------------------\",\r\n },\r\n { value: \" border-style: double; \", label: \"==================\" },\r\n ],\r\n hiddenBorder: \"\",\r\n hiddenBorderType: [\r\n { value: \" border-left: none; \", label: \"隐藏左边框\" },\r\n { value: \" border-right: none; \", label: \"隐藏右边框\" },\r\n { value: \" border-top: none; \", label: \"隐藏上边框\" },\r\n { value: \" border-bottom: none; \", label: \"隐藏下边框\" },\r\n ],\r\n tableHeaderExample:\r\n '\\n' +\r\n \"\\n\" +\r\n ' *\\n' +\r\n ' 一级表头名称\\n' +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\\n\" +\r\n '\\n' +\r\n \"\\n\" +\r\n ' *\\n\" +\r\n ' 默认显示字段名\\n' +\r\n \" \\n\" +\r\n ' *\\n\" +\r\n ' 默认显示字段名\\n' +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\",\r\n tableTempAddRowIndex: 0,\r\n tableTempAddColIndex: 0,\r\n tableTempDelRowIndex: 0,\r\n tableTempDelColIndex: 0,\r\n };\r\n },\r\n mounted() {\r\n //回填显示数据视图控件\r\n if (this.data.ctrlType) {\r\n if (this.data.templateId) {\r\n if (this.data.templateId != \"\") {\r\n form\r\n .getBpmDataTemplateById(this.data.templateId, \"\")\r\n .then((response) => {\r\n this.data.templateObj = response.data;\r\n this.templateShow = true;\r\n });\r\n }\r\n } else {\r\n this.templateShow = true;\r\n }\r\n }\r\n },\r\n watch: {\r\n \"data.subtablePagination\" : function(newVal){\r\n // 子表不支持前端分页时,也取消前端导入导出。\r\n if(!newVal){\r\n delete this.data.subtableImportExport;\r\n delete this.data.subtableImportMergeExp;\r\n }\r\n },\r\n \"data.subtableImportExport\" : function(newVal){\r\n // 不支持导入导出时,也删除导入合并代码\r\n if(!newVal){\r\n delete this.data.subtableImportMergeExp;\r\n }\r\n },\r\n \"data.templateObj\" : function(newVal, oldVal) {\r\n if(JSON.stringify(newVal) !=\"{}\"){\r\n //保存boDefAlias\r\n this.tablefields.forEach((item) => {\r\n if (item.type == \"main\") {\r\n this.data.options.boDefAlias = item.boDefAlias;\r\n }\r\n });\r\n if (newVal) {\r\n this.data.templateKey = newVal.alias;\r\n this.data.templateId = newVal.id;\r\n let data = newVal.formField;\r\n if (data) {\r\n this.data.templateField = JSON.parse(data);\r\n }\r\n this.selectList = JSON.parse(JSON.stringify(this.data.options.selectList));\r\n this.bindList = JSON.parse(JSON.stringify(this.data.options.bindList));\r\n }\r\n } else {\r\n this.data.templateField = [];\r\n this.data.templateKey = \"\";\r\n this.data.templateId = \"\";\r\n this.data.options = {\r\n showLabel: true,\r\n boDefAlias: \"\",\r\n selectList: [],\r\n bindList: [],\r\n }\r\n }\r\n },\r\n \"data.ctrlType\": function (newVal, oldVal) {\r\n if (newVal != oldVal) {\r\n if (newVal == \"hottable\") {\r\n if (!this.data.customDialogjson.orgConfig) {\r\n this.data.customDialogjson.orgConfig = {\r\n name: \"\",\r\n code: \"\",\r\n id: \"\",\r\n };\r\n }\r\n if (!this.data.options.hasOwnProperty(\"initSumRowField\")) {\r\n this.data.options.initSumRowField = \"\";\r\n }\r\n if (!this.data.options.hasOwnProperty(\"initSumRowValue\")) {\r\n this.data.options.initSumRowValue = \"\";\r\n }\r\n }\r\n }\r\n },\r\n },\r\n methods: {\r\n //子表布局切换\r\n subChange(){\r\n if(this.data.ctrlType==\"subtable\" && this.data.list.length>0){\r\n let oldList = this.data.list;\r\n let newList = [];\r\n for(let i=0;i0){\r\n for(let j = 0;j0){\r\n for(let k = 0;k {\r\n //判断选择的关联查询是否存在\r\n if (alias == item.alias) {\r\n if (typeof item.conditionfield == \"string\") {\r\n item.conditionfield = JSON.parse(item.conditionfield); //parseToJson(item.customQuery.conditionfield);\r\n item.resultfield = JSON.parse(item.resultfield); // parseToJson(item.customQuery.resultfield);\r\n item.conditionfield.forEach((res) => {\r\n _this.$set(res, \"fieldPath\", \"\"); //关联查询条件字段绑定的表单参数路径\r\n });\r\n item.resultfield.forEach((res) => {\r\n _this.$set(res, \"fieldPath\", \"\"); //关联查询返回字段绑定的表单参数路径\r\n });\r\n }\r\n //把当前对象克隆一份到控件属性配置\r\n Object.assign(_this.data.customQuery, item);\r\n // 删除多余属性\r\n _this.slimCustomQuery(_this.data.customQuery);\r\n }\r\n });\r\n },\r\n // 当字段与关联查询绑定后,将关联查询中多余的属性删除\r\n slimCustomQuery(customQuery) {\r\n if (customQuery && customQuery.constructor == Object) {\r\n // 删除多余的属性\r\n delete customQuery[\"id\"];\r\n delete customQuery[\"createTime\"];\r\n delete customQuery[\"pkVal\"];\r\n delete customQuery[\"objName\"];\r\n delete customQuery[\"needPage\"];\r\n delete customQuery[\"pageSize\"];\r\n delete customQuery[\"dsalias\"];\r\n delete customQuery[\"dataParam\"];\r\n delete customQuery[\"sortfield\"];\r\n delete customQuery[\"diySql\"];\r\n delete customQuery[\"isTable\"];\r\n delete customQuery[\"sqlBuildType\"];\r\n // delete customQuery[\"dsType\"];\r\n delete customQuery[\"url\"];\r\n delete customQuery[\"header\"];\r\n delete customQuery[\"requestType\"];\r\n delete customQuery[\"pageKey\"];\r\n delete customQuery[\"pageSizeKey\"];\r\n delete customQuery[\"totalKey\"];\r\n delete customQuery[\"listKey\"];\r\n }\r\n },\r\n afterCustomQueryLoadData(data) {},\r\n //打开下拉框绑定关联查询弹框\r\n showSelectQueryDialog() {\r\n if (!this.data.options.boSubEntity) {\r\n this.$message.warning(\"请先绑定子表\");\r\n return;\r\n }\r\n this.subTableEnt = this.subTables.filter(\r\n (ent) => ent.name == this.data.options.boSubEntity\r\n );\r\n this.data.customQuery.path = \"data.\" + this.subTableEnt[0].path;\r\n\r\n this.$http.post(\"${form}/form/customQuery/v1/list\").then((res) => {\r\n this.customQuerys = res.data.rows;\r\n this.selectQueryDialog = true;\r\n });\r\n },\r\n filterFields(obj) {\r\n if (obj.nodeType == \"sub\") {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n //编写栅格布局样式后取消事件\r\n includeStyleNo() {\r\n this.style = \"\";\r\n this.styleIndex = \"\";\r\n this.clickColor = \"\";\r\n this.hiddenBorder = \"\";\r\n this.selectBorderType = \"\";\r\n this.dialogStyleVisible = false;\r\n },\r\n //编写栅格布局样式后确认事件\r\n includeStyleOk() {\r\n let color = \"\";\r\n if (this.clickColor) {\r\n color = \" border-color: \" + this.clickColor + \"; \";\r\n }\r\n let hiddenBorder = \"\";\r\n if (this.hiddenBorder) {\r\n this.hiddenBorder.forEach((v) => {\r\n hiddenBorder += v;\r\n });\r\n }\r\n if (this.style || color || this.selectBorderType || hiddenBorder) {\r\n this.data.columns[this.styleIndex].style =\r\n this.style + color + this.selectBorderType + hiddenBorder;\r\n } else {\r\n this.data.columns[this.styleIndex].style = \"\";\r\n }\r\n this.style = \"\";\r\n this.clickColor = \"\";\r\n this.hiddenBorder = \"\";\r\n this.selectBorderType = \"\";\r\n this.styleIndex = \"\";\r\n this.dialogStyleVisible = false;\r\n },\r\n //打开编写栅格布局样式对话框\r\n handleGridColumnStyle(index) {\r\n this.styleIndex = index;\r\n if (this.data.columns[index].style) {\r\n this.style = this.data.columns[index].style;\r\n } else {\r\n this.style = \"\";\r\n }\r\n this.dialogStyleVisible = true;\r\n },\r\n autoRunJSScript(type, isBnt) {\r\n this.BtnScriptType = type;\r\n let script;\r\n if (type == 1) {\r\n //下一步按钮的前置脚本\r\n script = this.data.options.nextBntjson.preScript;\r\n }\r\n this.pageBtnScriptDialog = true;\r\n if (!script) return;\r\n this.pageBtnScriptBase = Base64.decode(script);\r\n },\r\n pageBtnScriptDialogOk() {\r\n this.pageBtnScriptDialog = false;\r\n },\r\n pageBtnScriptDialogClose() {\r\n this.pageBtnScriptDialog = false;\r\n },\r\n pegeNextIcon(icon) {\r\n this.data.nextButton.icon = icon;\r\n },\r\n pegeBackIcon(icon) {\r\n this.data.backButton.icon = icon;\r\n },\r\n includeFilesOk() {\r\n this.dialogincluddingFileVisible = false;\r\n if (this.subCustomHeader) {\r\n this.data.customHeader = Base64.encode(this.subCustomHeader, \"utf-8\");\r\n }else{\r\n this.data.customHeader=\"\";\r\n }\r\n },\r\n includdingFile() {\r\n this.dialogincluddingFileVisible = true;\r\n if (this.data.customHeader){\r\n this.subCustomHeader=Base64.decode(this.data.customHeader, \"utf-8\")\r\n }else{\r\n this.subCustomHeader=\"\";\r\n }\r\n },\r\n unbind(key) {\r\n for (var item in this.custDialogprop) {\r\n if (key == item) {\r\n this.$set(this.custDialogprop, key, \"\");\r\n delete this.custDialogprop[key];\r\n }\r\n }\r\n },\r\n editI18nMessage() {\r\n this.i18nMessageKey = this.data.options.subTablePath;\r\n this.$refs.i18nMessageEdit.handleOpen();\r\n },\r\n afterSaveI18n(data) {\r\n data.key = data.key.replace(\"$\", \"#\");\r\n this.data.desc = data.key;\r\n this.data.desc_zh = data.desc;\r\n },\r\n // 子表对话框确定事件\r\n custDialogOk(isDialog) {\r\n //对话框返回值\r\n var mappingConf = [];\r\n for (var key in this.custDialogprop) {\r\n mappingConf.push({\r\n from: key,\r\n target: [this.custDialogprop[key]],\r\n });\r\n }\r\n this.data.customDialogjson.custDialog.mappingConf = mappingConf;\r\n this.dialogcustDialogVisible = false;\r\n },\r\n custOrgDialogOk() {\r\n this.dialogcustOrgVisible = false;\r\n },\r\n //打开设置子表对话框返回值\r\n custDialogClick() {\r\n this.dialogcustDialogVisible = true;\r\n this.custDialogprop = null;\r\n let tempGroup = {};\r\n var initConf = this.data.customDialogjson;\r\n if (initConf.custDialog.mappingConf) {\r\n for (var i = 0, c; (c = initConf.custDialog.mappingConf[i++]); ) {\r\n if (!c) continue;\r\n var target = c.target;\r\n if (target) target = target.join(\",\");\r\n tempGroup[c.from] = target;\r\n }\r\n }\r\n initConf.resultField.forEach((f) => {\r\n if (!tempGroup[f.comment]) {\r\n tempGroup[f.comment] = \"\";\r\n }\r\n });\r\n this.custDialogprop = tempGroup;\r\n },\r\n custOrgClick() {\r\n if (!this.data.customDialogjson.orgConfig) {\r\n this.data.customDialogjson.orgConfig = {\r\n name: \"\",\r\n code: \"\",\r\n id: \"\",\r\n instId: \"\",\r\n };\r\n }\r\n this.dialogcustOrgVisible = true;\r\n },\r\n initHotColHeaders() {\r\n let nowHeaders = this.data.options.colHeadersRelations;\r\n let children = [];\r\n this.subTables.forEach((sub) => {\r\n if (sub.name == this.data.options.boSubEntity) {\r\n children = sub.children;\r\n }\r\n });\r\n if (children.length > 0) {\r\n for (let index = 0; index < children.length; index++) {\r\n let child = children[index];\r\n let isExist = false;\r\n nowHeaders.forEach((f) => {\r\n if (f.name == child.name) {\r\n isExist = true;\r\n }\r\n });\r\n if (!isExist) {\r\n let columnPropertis = {\r\n data: child.name,\r\n readOnly: false,\r\n readOnlyRows: \"\",\r\n required: false,\r\n requiredRows: \"\",\r\n mergeCell: false,\r\n type: \"text\",\r\n source: [],\r\n dateFormat: \"\",\r\n mathExp: \"\",\r\n rowMathExp: [],\r\n width: 90,\r\n style: {\r\n size: 0,\r\n color: \"\",\r\n bold: false,\r\n background: \"\",\r\n diyStyle: \"\",\r\n },\r\n };\r\n this.data.options.colHeadersRelations.push({\r\n name: child.name,\r\n desc: child.comment,\r\n column: columnPropertis,\r\n isSum: false,\r\n });\r\n }\r\n }\r\n }\r\n },\r\n setColHeader() {\r\n this.dialogHotHeaderDialogVisible = true;\r\n },\r\n setCrossMapping() {\r\n if (!this.data.options.crossMapping) {\r\n this.data.options.crossMapping = [\r\n {\r\n toField: \"\",\r\n toIndex: 1,\r\n fromFields: [{ fromSubTabPath: \"\", fromField: \"\", fromIndex: 1 }],\r\n },\r\n ];\r\n }\r\n this.dialogHotCrossMappingVisible = true;\r\n },\r\n setNestedHeaders() {\r\n if (!this.data.options.nestedHeaders) {\r\n this.data.options.nestedHeaders = [];\r\n }\r\n this.dialogHotNestedHeadersVisible = true;\r\n },\r\n setMainTableCalc() {\r\n if (!this.data.options.mainTableCalcs) {\r\n this.data.options.mainTableCalcs = [];\r\n }\r\n this.dialogMainTableCalcVisible = true;\r\n },\r\n setCellCalc() {\r\n if (!this.data.options.cellCalcs) {\r\n this.data.options.cellCalcs = [];\r\n }\r\n this.dialogCellCalcVisible = true;\r\n },\r\n hotHeaderDialogOk(isDialog) {\r\n if (this.data.options.colHeadersRelations) {\r\n let newColHeadersRelations = JSON.stringify(\r\n this.data.options.colHeadersRelations\r\n );\r\n this.data.options.colHeadersRelations = [];\r\n this.data.options.colHeadersRelations = JSON.parse(\r\n newColHeadersRelations\r\n );\r\n }\r\n this.dialogHotHeaderDialogVisible = false;\r\n },\r\n hotCrossMappingDialogOk() {\r\n this.dialogHotCrossMappingVisible = false;\r\n },\r\n hotMainTableCalcDialogOk() {\r\n this.dialogMainTableCalcVisible = false;\r\n },\r\n hotCellCalcDialogOk() {\r\n this.dialogCellCalcVisible = false;\r\n },\r\n hotNestedHeadersDialogOk() {\r\n this.dialogHotNestedHeadersVisible = false;\r\n },\r\n addHotCrossMapping() {\r\n this.data.options.crossMapping.push({\r\n toField: \"\",\r\n toIndex: 1,\r\n fromFields: [{ fromSubTabPath: \"\", fromField: \"\", fromIndex: 1 }],\r\n });\r\n },\r\n addHotCrossMappingField(field) {\r\n field.fromFields.push({\r\n fromSubTabPath: \"\",\r\n fromField: \"\",\r\n fromIndex: 1,\r\n });\r\n },\r\n addHotMainTableCalc() {\r\n this.data.options.mainTableCalcs.push({\r\n name: \"\",\r\n mainField: \"\",\r\n sumField: \"\",\r\n });\r\n },\r\n addHotCellCalc() {\r\n this.data.options.cellCalcs.push({\r\n cellField: \"\",\r\n rowIndex: 1,\r\n mathExp: \"\",\r\n });\r\n },\r\n addHotNestedHeaders() {\r\n this.data.options.nestedHeaders.push({\r\n headers: [{ name: \"\", startField: \"\", endField: \"\" }],\r\n });\r\n },\r\n hotHeaderRemove(item) {\r\n this.data.options.colHeadersRelations.remove(item);\r\n },\r\n hotCrossMappingRemove(item) {\r\n this.data.options.crossMapping.remove(item);\r\n },\r\n hotCrossMappingFiledRemove(field, item) {\r\n field.fromFields.remove(item);\r\n },\r\n hotMainTableCalcRemove(item) {\r\n this.data.options.mainTableCalcs.remove(item);\r\n },\r\n hotCellCalcRemove(item) {\r\n this.data.options.cellCalcs.remove(item);\r\n },\r\n hotMainTableCalcEdit(item) {\r\n this.currentHotColumnField = {};\r\n this.dialogHotCountVisible = true;\r\n let _this = this;\r\n setTimeout(function () {\r\n _this.$refs.mathDialog.mathExpAssign(item.script);\r\n _this.currentMainTableCalcField = item;\r\n }, 0);\r\n },\r\n hotCellCalcEdit(item) {\r\n this.currentCellCalcField = {};\r\n this.dialogCellCountVisible = true;\r\n let _this = this;\r\n setTimeout(function () {\r\n _this.$refs.cellMathDialog.mathExpAssign(item.mathExp);\r\n _this.currentCellCalcField = item;\r\n }, 0);\r\n },\r\n hotNestedHeadersRemove(item) {\r\n this.data.options.nestedHeaders.remove(item);\r\n },\r\n hotNestedHeadersItemAdd(headers) {\r\n headers.push({ name: \"\", startField: \"\", endField: \"\" });\r\n },\r\n hotNestedHeadersItemRemove(headers, item) {\r\n headers.remove(item);\r\n },\r\n setHotMathExp(fillField) {\r\n this.currentMainTableCalcField = {};\r\n this.dialogHotCountVisible = true;\r\n let _this = this;\r\n setTimeout(function () {\r\n _this.$refs.mathDialog.mathExpAssign(fillField.column.mathExp);\r\n _this.currentHotColumnField = fillField;\r\n }, 0);\r\n },\r\n setHotRowMathExp(fillField) {\r\n this.currentMainTableCalcField = {};\r\n this.dialogHotRowsCountVisible = true;\r\n let _this = this;\r\n setTimeout(function () {\r\n if (!fillField.column.rowMathExp) {\r\n fillField.column.rowMathExp = [];\r\n }\r\n _this.$refs.mathRowDialog.mathExpAssign(fillField.column.rowMathExp);\r\n _this.currentHotColumnField = fillField;\r\n }, 0);\r\n },\r\n setHotColumMathExp(exp) {\r\n if (Object.keys(this.currentMainTableCalcField) != 0) {\r\n this.currentMainTableCalcField.script = exp;\r\n } else if (Object.keys(this.currentHotColumnField) != 0) {\r\n this.currentHotColumnField.column.mathExp = exp;\r\n }\r\n this.$refs.mathDialog.mathExpAssign(\"\");\r\n },\r\n setHotCellMathExp(exp) {\r\n if (Object.keys(this.currentCellCalcField) != 0) {\r\n this.currentCellCalcField.mathExp = exp;\r\n }\r\n this.$refs.cellMathDialog.mathExpAssign(\"\");\r\n },\r\n setHotColumRowMathExp(exp) {\r\n this.currentHotColumnField.column.rowMathExp = exp;\r\n this.$refs.mathRowDialog.mathExpAssign([]);\r\n },\r\n setHotColumType(item) {\r\n this.$refs.hotTableFieldDialog.handleOpen(item);\r\n },\r\n hotTableFieldSave(field) {},\r\n // 孙表对话框确定事件\r\n custDialogSunOk(isDialog) {\r\n //对话框返回值\r\n var mappingConf = [];\r\n for (var key in this.custDialogprop) {\r\n mappingConf.push({\r\n from: key,\r\n target: [this.custDialogprop[key]],\r\n });\r\n }\r\n this.data.customDialogjson.custDialog.mappingConf = mappingConf;\r\n this.dialogSunDialog = false;\r\n },\r\n //打开设置孙表对话框返回值\r\n custDialogSunClick() {\r\n this.dialogSunDialog = true;\r\n this.custDialogprop = null;\r\n let tempGroup = {};\r\n var initConf = this.data.customDialogjson;\r\n if (initConf.custDialog.mappingConf) {\r\n for (var i = 0, c; (c = initConf.custDialog.mappingConf[i++]); ) {\r\n if (!c) continue;\r\n var target = c.target;\r\n if (target) target = target.join(\",\");\r\n tempGroup[c.from] = target;\r\n }\r\n }\r\n initConf.resultField.forEach((f) => {\r\n if (!tempGroup[f.comment]) {\r\n tempGroup[f.comment] = \"\";\r\n }\r\n });\r\n this.custDialogprop = tempGroup;\r\n },\r\n //数据视图控件方法\r\n dataViewClick() {\r\n if(!this.data.templateKey || this.data.templateKey == \"\"){\r\n this.$message.warning(\"请先选择表单列表\");\r\n return;\r\n }\r\n if(this.data.options.selectList){\r\n this.selectList = JSON.parse(JSON.stringify(this.data.options.selectList));\r\n }\r\n if(this.data.options.bindList){\r\n this.bindList = JSON.parse(JSON.stringify(this.data.options.bindList))\r\n }\r\n this.dialogDataViewVisible = true;\r\n },\r\n handleDataRemove(){\r\n //删除方法\r\n this.selectList = [{selectField: \"\", bindSelectd: \"\"}];\r\n this.bindList = [{fillField: \"\", bindFilld: \"\"}];\r\n this.data.templateObj = {};\r\n },\r\n confirmDataView() {\r\n //校验\r\n if(this.selectList && this.selectList.length >0){\r\n for(var i=0;i0){\r\n for(var i=0;i= children.length){\r\n this.$message.warning(\"不能添加更多的关联查询字段!\");\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let selectObj = {selectField: \"\", bindSelectd: \"\"};\r\n this.selectList.push(selectObj);\r\n },\r\n addBindList() {\r\n if(this.tablefields){\r\n for(let i=0;i= children.length){\r\n this.$message.warning(\"不能添加更多的关联填充字段!\");\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let bindObj = {fillField: \"\", bindFilld: \"\"};\r\n this.bindList.push(bindObj);\r\n },\r\n afterCustomDialogLoadData(data) {\r\n this.customDialogs = data;\r\n },\r\n icons(icon) {\r\n this.data.options.customDialogjson.icon = icon;\r\n },\r\n changeCustDialog() {\r\n this.custDialogprop = {};\r\n this.data.customDialogjson.custDialog.conditions = [];\r\n this.data.customDialogjson.custDialog.conditions.custQueryJson = [];\r\n this.data.customDialogjson.custDialog.mappingConf = [];\r\n if (this.customDialogs.length == 0) return;\r\n if (this.data.customDialogjson.custDialog.alias == null) {\r\n this.data.customDialogjson.custDialog.conditions = [];\r\n return;\r\n }\r\n for (var i = 0, d; (d = this.customDialogs[i++]); ) {\r\n if (d.alias == this.data.customDialogjson.custDialog.alias) {\r\n var treeData;\r\n if (d.listDialog && d.listDialog.resultfield) {\r\n treeData = eval(\"(\" + d.listDialog.resultfield + \")\");\r\n this.data.customDialogjson.custDialog.type = \"combiDialog\";\r\n }\r\n if (d.resultfield) {\r\n treeData = eval(\"(\" + d.resultfield + \")\");\r\n this.data.customDialogjson.custDialog.type = \"custDialog\";\r\n }\r\n for (var q = 0, f; (f = treeData[q++]); ) {\r\n f.field = f.comment;\r\n }\r\n this.data.customDialogjson.resultField = treeData;\r\n var conditionList = eval(\"(\" + d.conditionfield + \")\");\r\n this.data.customDialogjson.custDialog.conditions = [];\r\n //只处理类型等于1的对话框参数(defaultType:1:用户输入,2:固定值 ,3:参数传入)\r\n if (conditionList && conditionList.length > 0) {\r\n for (var j = 0, c; (c = conditionList[j++]); ) {\r\n if (c.defaultType == \"3\") {\r\n var has = false;\r\n if (!has)\r\n this.data.customDialogjson.custDialog.conditions.push(c);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n handleGridColumnRemove(index) {\r\n if (this.data.options.activeNames != undefined) {\r\n this.data.options.activeNames.remove(this.data.columns[index].idKey);\r\n }\r\n this.data.columns.splice(index, 1);\r\n },\r\n handleGridColumnAdd(type) {\r\n if (type == \"tab\") {\r\n this.data.columns.push({\r\n span: \"标签页\" + (this.data.columns.length + 1),\r\n list: [],\r\n permission: \"\",\r\n permissionPath: \"\",\r\n });\r\n } else if (type == \"page\") {\r\n this.data.columns.push({\r\n span: \"分页\" + (this.data.columns.length + 1),\r\n list: [],\r\n });\r\n } else if (type == \"collapse\") {\r\n this.data.columns.push({\r\n span: \"折叠面板\" + (this.data.columns.length + 1),\r\n idKey: Date.parse(new Date()) + utils.getName(),\r\n isOpen: false,\r\n list: [],\r\n });\r\n } else {\r\n this.data.columns.push({\r\n span: \"\",\r\n list: [],\r\n });\r\n }\r\n },\r\n switchChange(item) {\r\n if (eval(item.isOpen)) {\r\n this.data.options.activeNames.push(item.idKey);\r\n } else {\r\n this.data.options.activeNames.remove(item.idKey);\r\n }\r\n },\r\n subTableChange(value, data) {\r\n this.data.name = data.name;\r\n this.data.list = [];\r\n this.data.desc = data.desc;\r\n this.data.options.subTablePath = data.path;\r\n if (data.show == \"子实体\") {\r\n this.data.options.subDivTablePath = data.path;\r\n }\r\n this.data.options.relation = data.relation;\r\n if (this.data.ctrlType == \"hottable\" && data.children) {\r\n let fields = [];\r\n let list = [];\r\n for (let index = 0; index < data.children.length; index++) {\r\n let child = data.children[index];\r\n let columnPropertis = {\r\n data: child.name,\r\n readOnly: false,\r\n readOnlyRows: \"\",\r\n required: false,\r\n requiredRows: \"\",\r\n mergeCell: false,\r\n type: \"text\",\r\n source: [],\r\n dateFormat: \"\",\r\n mathExp: \"\",\r\n rowMathExp: [],\r\n width: 90,\r\n style: {\r\n size: 0,\r\n color: \"\",\r\n bold: false,\r\n background: \"\",\r\n diyStyle: \"\",\r\n },\r\n };\r\n fields.push({\r\n name: child.name,\r\n desc: child.comment,\r\n column: columnPropertis,\r\n });\r\n let listField = { options: {} };\r\n listField.boDefId = child.boDefId;\r\n listField.boAttrId = child.id;\r\n listField.fieldPath = child.path + \".\" + child.name;\r\n listField.name = child.name;\r\n listField.desc = child.desc;\r\n listField.title = child.desc;\r\n listField.entId = child.entId;\r\n listField.boDefAlias = child.boDefAlias;\r\n listField.tableName = child.tableName;\r\n listField.columnType = child.columnType;\r\n if (child.dataType == \"date\") {\r\n listField.options.format = child.format;\r\n listField.options.inputFormat = child.format;\r\n } else if (child.dataType == \"number\") {\r\n listField.options.maxDecimalDigits = child.decimalLen;\r\n listField.options.decimalDigits = child.decimalLen;\r\n }\r\n list.push(listField);\r\n }\r\n this.data.list = list;\r\n this.data.options.colHeadersRelations = fields;\r\n }\r\n },\r\n addRelation() {\r\n this.relationVisible = true;\r\n this.relations = [];\r\n this.data.list.forEach((item) => {\r\n if (item.options.mapping) {\r\n this.relations.push({\r\n key_: item.name,\r\n value_: item.options.mapping,\r\n });\r\n }\r\n });\r\n },\r\n add() {\r\n this.relations.push({\r\n key_: \"\",\r\n value_: \"\",\r\n });\r\n },\r\n remove(index) {\r\n this.relations.splice(index, 1);\r\n },\r\n submit() {\r\n let flag = false;\r\n let map = new Map();\r\n this.relations.forEach((item) => {\r\n if (!item.key_ || !item.value_) {\r\n flag = true;\r\n }\r\n map.set(item.key_, item.value_);\r\n });\r\n if (flag) {\r\n this.$message(\"映射关系不能为空\");\r\n return;\r\n }\r\n this.data.list.forEach((item) => {\r\n if (map.has(item.name)) {\r\n item.options.mapping = map.get(item.name);\r\n } else {\r\n delete item.options.mapping;\r\n }\r\n });\r\n this.relationVisible = false;\r\n },\r\n initHotTableData() {\r\n this.$refs.hotSubDialog.showDialog();\r\n },\r\n hotTableInitData(initData) {\r\n this.data.options.initFillbackData = initData;\r\n },\r\n up(index, data) {\r\n if (index === 0) {\r\n this.$message({\r\n message: \"已经是列表中第一位\",\r\n type: \"warning\",\r\n });\r\n } else {\r\n let temp = data[index - 1];\r\n this.$set(data, index - 1, data[index]);\r\n this.$set(data, index, temp);\r\n }\r\n },\r\n down(index, data) {\r\n if (index === data.length - 1) {\r\n this.$message({\r\n message: \"已经是列表中最后一位\",\r\n type: \"warning\",\r\n });\r\n } else {\r\n this.isTransition = true;\r\n let i = data[index + 1];\r\n this.$set(data, index + 1, data[index]);\r\n this.$set(data, index, i);\r\n }\r\n },\r\n handleTableTdClose(rowIndex, colIndex) {\r\n const tempRow = this.data.rows[rowIndex];\r\n if (tempRow.cols.length > 1) {\r\n if (colIndex > 0) {\r\n tempRow.cols[colIndex - 1].colspan += 1;\r\n } else if (colIndex == 0 && tempRow.cols.length > 1) {\r\n tempRow.cols[colIndex + 1].colspan += 1;\r\n }\r\n tempRow.cols.splice(colIndex, 1);\r\n } else {\r\n const rows = this.data.rows;\r\n rows.splice(rowIndex, 1);\r\n this.$set(this.data, \"rows\", rows);\r\n }\r\n },\r\n tableOperation(oType, dType) {\r\n const rows = this.data.rows;\r\n if (dType == \"row\") {\r\n let rowIndex =\r\n oType == \"add\"\r\n ? this.tableTempAddRowIndex\r\n : this.tableTempDelRowIndex;\r\n if (!rowIndex) {\r\n this.$message({\r\n message: \"请输入具体下标(大于0)。\",\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n if (\r\n (oType == \"add\" && rowIndex > rows.length + 1) ||\r\n (oType == \"del\" && rowIndex > rows.length)\r\n ) {\r\n this.$message({\r\n message: \"行下标超出范围,当前最大值为:\" + rows.length,\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n if (oType == \"add\") {\r\n rows.splice(\r\n rowIndex - 1,\r\n 0,\r\n this.getTableRowInit(rows[0].cols)\r\n );\r\n } else if (oType == \"del\") {\r\n rows.splice(rowIndex - 1, 1);\r\n }\r\n this.$set(this.data, \"rows\", [...rows]);\r\n } else if (dType == \"col\") {\r\n let celIndex =\r\n oType == \"add\"\r\n ? this.tableTempAddColIndex\r\n : this.tableTempDelColIndex;\r\n if (!celIndex) {\r\n this.$message({\r\n message: \"请输入具体下标(大于0)。\",\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n let colslen = 0;\r\n rows[0].cols.forEach(_item=>{\r\n colslen += _item.colspan;\r\n });\r\n if (\r\n (oType == \"add\" && celIndex > colslen + 1) ||\r\n (oType == \"del\" && celIndex > colslen)\r\n ) {\r\n this.$message({\r\n message: \"列下标超出范围,当前最大值为:\" + colslen,\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n if (oType == \"add\") {\r\n rows.forEach((item) => {\r\n let cols = item.cols;\r\n cols.splice(celIndex - 1, 0, { colspan: 1, list: [] });\r\n });\r\n } else if (oType == \"del\") {\r\n let countColSpan = 0;\r\n rows.forEach((item) => {\r\n countColSpan = 0;\r\n let _celIndex = celIndex-1;\r\n\r\n let removeColIndex = 0;\r\n // 中间的删除\r\n let modifyColspan = false;\r\n item.cols.forEach(_item=>{\r\n countColSpan += _item.colspan;\r\n if(countColSpan>=_celIndex+1){\r\n if(_item.colspan>1){\r\n //_item.list.pop();\r\n _item.colspan = _item.colspan -1;\r\n modifyColspan = true;\r\n }else{\r\n if(removeColIndex==0){\r\n removeColIndex = _celIndex;\r\n }\r\n }\r\n }\r\n })\r\n if(removeColIndex!=0 && !modifyColspan ){\r\n if(removeColIndex>=item.cols.length){\r\n removeColIndex = item.cols.length -1;\r\n }\r\n item.cols.splice(removeColIndex,1);\r\n }\r\n\r\n });\r\n }\r\n this.$nextTick(()=>{\r\n this.$set(this.data, \"rows\", [...rows]);\r\n });\r\n }\r\n },\r\n getTableRowInit(cols) {\r\n let size = 2;\r\n if(cols && cols.length>0){\r\n size = 0;\r\n cols.forEach(col =>{\r\n size += col.colspan;\r\n })\r\n }\r\n let row = { cols: [] };\r\n for (let i = 0; i < size; i++) {\r\n row.cols.push({ colspan: 1, list: [] });\r\n }\r\n return { ...row };\r\n },\r\n isFill(column) {\r\n if (\r\n column.readOnly ||\r\n column.readOnlyRows ||\r\n column.required ||\r\n column.requiredRows ||\r\n column.mergeCell ||\r\n column.dateFormat ||\r\n column.style.background ||\r\n column.style.color ||\r\n column.style.bold ||\r\n column.style.size !== 0 ||\r\n column.style.diyStyle\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n handleTableCol(rowIndex, colIndex) {\r\n let rows = this.data.rows;\r\n if(rows.length == 1 && rows[rowIndex].cols.length == 1){\r\n this.$message({message: \"最后一行不能删除!\", type: \"warning\"});\r\n return;\r\n }\r\n if (rows[rowIndex].cols.length == 1) {\r\n rows.splice(rowIndex, 1);\r\n } else if (rows[rowIndex].cols.length > 1) {\r\n if (colIndex > 0) {\r\n rows[rowIndex].cols[colIndex - 1].colspan =\r\n rows[rowIndex].cols[colIndex - 1].colspan +\r\n rows[rowIndex].cols[colIndex].colspan;\r\n } else {\r\n rows[rowIndex].cols[colIndex + 1].colspan =\r\n rows[rowIndex].cols[colIndex + 1].colspan +\r\n rows[rowIndex].cols[colIndex].colspan;\r\n }\r\n rows[rowIndex].cols.splice(colIndex, 1);\r\n }\r\n this.$set(this.data,'rows',[...rows]);\r\n },\r\n // 打开子表导入数据合并代码的编辑对话框\r\n openSubImportMergeDialog(){\r\n this.$refs.subImportMergeDialog && this.$refs.subImportMergeDialog.open();\r\n },\r\n // 更新子表导入数据合并代码\r\n handleUpdateExpression(expression){\r\n this.$set(this.data, \"subtableImportMergeExp\", expression);\r\n },\r\n tableHasColspan(rowIndex){\r\n let row = this.data.rows[rowIndex];\r\n let showAdd = false;\r\n row.cols.forEach(td =>{\r\n if(td.colspan>1){\r\n showAdd = true;\r\n return true;\r\n }\r\n })\r\n return showAdd;\r\n },\r\n tableAddTd(rowIndex) {\r\n let row = this.data.rows[rowIndex];\r\n let canAdd = false;\r\n for (let index = row.cols.length-1; index >=0; index--) {\r\n const col = row.cols[index];\r\n if(col.colspan>1){\r\n --col.colspan;\r\n this.data.rows[rowIndex].cols.push({colspan:1,list: []});\r\n return ;\r\n }\r\n }\r\n this.$message({message: \"当前行列数已达上限,请按整列添加!\", type: \"warning\"});\r\n },\r\n },\r\n};\r\n",null]}