{"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        '<tr class=\"sub-table-header\" @click=\"transitionIndex = -1\">\\n' +\r\n        \"\\n\" +\r\n        '    <th colspan=\"2\" style=\"min-width: 200px;font-weight:normal;color:#969799;;;\"><span>*</span>\\n' +\r\n        '        <span style=\"color:#969799;margin-left: 5px;\">一级表头名称</span>\\n' +\r\n        \"    </th>\\n\" +\r\n        \"\\n\" +\r\n        \"</tr>\\n\" +\r\n        '<tr class=\"sub-table-header\" @click=\"transitionIndex = -1\">\\n' +\r\n        \"\\n\" +\r\n        '    <th v-if=\"permission.fields.表名.字段名!=\\'n\\'\" style=\"min-width: 200px;font-weight:normal;color:#969799;;;\"><span\\n' +\r\n        \"            v-if=\\\"permission.fields.表名.字段名=='b'\\\">*</span>\\n\" +\r\n        '        <span style=\"color:#969799;margin-left: 5px;\">默认显示字段名</span>\\n' +\r\n        \"    </th>\\n\" +\r\n        '    <th v-if=\"permission.fields.表名.字段名!=\\'n\\'\" style=\"min-width: 200px;font-weight:normal;color:#969799;;;\"><span\\n' +\r\n        \"            v-if=\\\"permission.fields.表名.字段名=='b'\\\">*</span>\\n\" +\r\n        '        <span style=\"color:#969799;margin-left: 5px;\">默认显示字段名</span>\\n' +\r\n        \"    </th>\\n\" +\r\n        \"\\n\" +\r\n        \"</tr>\",\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;i<oldList.length;i++){\r\n          if(oldList[i].ctrlType==\"grid\"){//DIV子表存在栅格布局\r\n            if(oldList[i].columns.length>0){\r\n              for(let j = 0;j<oldList[i].columns.length;j++){\r\n                if(oldList[i].columns[j].list.length>0){\r\n                  for(let k = 0;k<oldList[i].columns[j].list.length;k++){\r\n                    newList.push(oldList[i].columns[j].list[k]);\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }else{\r\n            newList.push(oldList[i]);\r\n          }\r\n        }\r\n        this.data.list=newList;\r\n      }\r\n    },\r\n    openFormtbsDialog(index) {\r\n      this.$refs.FormtbsDialog.openDialog(index);\r\n    },\r\n    closeQueryDialog() {\r\n      this.selectQueryDialog = false;\r\n      this.data.customQuery = { isUse: this.data.customQuery.isUse };\r\n      $message(\"清空成功\");\r\n    },\r\n    //选择下拉框控件并绑定关联查询\r\n    setSelectQuery(alias) {\r\n      const _this = this;\r\n      _this.customQuerys.forEach((item) => {\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;i<this.selectList.length;i++){\r\n          if(this.selectList[i].selectField == \"\" || this.selectList[i].bindSelectd == \"\"){\r\n            this.$message.warning(\"关联查询第\"+(i+1)+\"行表单字段、数据报表字段为空！\");\r\n            return false;\r\n          }\r\n        }\r\n      }\r\n      if(this.bindList && this.bindList.length >0){\r\n        for(var i=0;i<this.bindList.length;i++){\r\n          if(this.bindList[i].fillField == \"\" || this.bindList[i].bindFilld == \"\"){\r\n            this.$message.warning(\"关联填充第\"+(i+1)+\"行表单字段、数据报表字段为空！\");\r\n            return false;\r\n          }\r\n        }\r\n      }\r\n      let resField = this.isRepeat(this.selectList, \"selectField\");\r\n      if(!resField) {\r\n        this.$message.warning(\"关联查询字段只能绑定唯一的表单字段\");\r\n        return false;\r\n      }\r\n      let resultSelect = this.isRepeat(this.selectList, \"bindSelectd\");\r\n      if(!resultSelect) {\r\n        this.$message.warning(\"关联查询字段只能绑定唯一的表单列表字段\");\r\n        return false;\r\n      }\r\n      let resultFill = this.isRepeat(this.bindList, \"fillField\");\r\n      if(!resultFill) {\r\n        this.$message.warning(\"关联填充字段只能绑定唯一的表单字段\");\r\n        return false;\r\n      }\r\n      let resultBind = this.isRepeat(this.bindList, \"bindFilld\");\r\n      if(!resultBind) {\r\n        this.$message.warning(\"关联填充字段只能绑定唯一的表单列表字段\");\r\n        return false;\r\n      }\r\n      this.data.options.selectList = JSON.parse(JSON.stringify(this.selectList));\r\n      this.data.options.bindList = JSON.parse(JSON.stringify(this.bindList));\r\n      this.dialogDataViewVisible = false;\r\n    },\r\n    isRepeat(arr, key){\r\n      var obj = {};\r\n      for(let i=0;i<arr.length;i++){\r\n        if(obj[arr[i][key]]){\r\n          return false;\r\n        }else{\r\n          obj[arr[i][key]] = arr[i];\r\n        }\r\n      }\r\n      return true;\r\n    },\r\n    addSelectList() {\r\n      if(this.tablefields){\r\n        for(let i=0;i<this.tablefields.length;i++){\r\n          if(this.tablefields[i].nodeType == 'main'){\r\n            let children = this.tablefields[i].children;\r\n            if(children){\r\n              if(this.selectList.length >= 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<this.tablefields.length;i++){\r\n          if(this.tablefields[i].nodeType == 'main'){\r\n            let children = this.tablefields[i].children;\r\n            if(children){\r\n              if(this.bindList.length >= 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]}