{"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\\WidgetHottableLayout.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\WidgetHottableLayout.vue","mtime":1675071992038},{"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\r\nimport { HotTable } from \"@handsontable/vue\";\r\nimport \"handsontable/dist/handsontable.full.css\";\r\nimport Handsontable from \"handsontable\";\r\nimport \"handsontable/languages/zh-CN\";\r\nimport  controlsApi from \"@/api/controlsConfig.js\";\r\n\r\nexport default {\r\n  name: \"widget-hottable-layout\",\r\n  components: {HotTable},\r\n  props: [\"element\", \"select\", \"index\", \"data\"],\r\n  data() {\r\n    return {\r\n      selectWidget: this.select,\r\n      root: 'designer-hot',\r\n      hotSettings: {\r\n        data: [        //数据可以是二维数组，也可以是数组对象\r\n          {xm:'李四',xb:'男',account:'lisi', nl:23},\r\n          {xm:'张三',xb:'男',account:'zhangsan', nl:22},\r\n        ],\r\n        // colHeaders: true,\r\n        startRows: 11,//行列范围\r\n        startCols: 6,\r\n        minRows: 1,  //最小行列\r\n        minCols: 0,\r\n        maxRows: 200,  //最大行列\r\n        maxCols: 200,\r\n        rowHeights: 25,\r\n        rowHeaders: true,//行表头，可以使布尔值（行序号），可以使字符串（左侧行表头相同显示内容，可以解析html），也可以是数组（左侧行表头单独显示内容）。\r\n        colHeaders: [ '姓名','性别', '账号','年龄'],//自定义列表头or 布尔值\r\n        minSpareCols: 0, //列留白\r\n        minSpareRows: 0,//行留白\r\n        // currentRowClassName: 'currentRow', //为选中行添加类名，可以更改样式\r\n        // currentColClassName: 'currentCol',//为选中列添加类名\r\n        autoWrapRow: true, //自动换行\r\n        contextMenu:{\r\n          items:{\r\n              \"row_above\": {\r\n                name:'上方插入一行'\r\n              },\r\n              \"row_below\": {\r\n                name:'下方插入一行'\r\n              },\r\n              \"remove_row\": {\r\n                name: '删除行',\r\n              },\r\n          }\r\n        },\r\n        licenseKey: \"non-commercial-and-evaluation\",\r\n        manualColumnFreeze: true, //手动固定列  ?\r\n        manualColumnMove: true, //手动移动列\r\n        manualRowMove: true,   //手动移动行\r\n        manualColumnResize: true,//手工更改列距\r\n        manualRowResize: true,//手动更改行距\r\n        comments: true, //添加注释  \r\n        customBorders:[],//添加边框\r\n        columnSorting: true,//排序\r\n        stretchH: 'all',//根据宽度横向扩展，last:只扩展最后一列，none：默认不扩展\r\n        fillHandle: true, //选中拖拽复制 possible values: true, false, \"horizontal\", \"vertical\"\r\n        fixedColumnsLeft: 2,//固定左边列数\r\n        fixedRowsTop: 2,//固定上边列数\r\n        beforeRemoveRow: this.beforeRemoveRowMe,\r\n        afterCreateRow: this.afterCreateRow,\r\n        afterChange: this.afterChangeMe,\r\n        mergeCells: [   //合并\r\n            // {row: 1, col: 1, rowspan: 3, colspan: 3},  //指定合并，从（1,1）开始行3列3合并成一格\r\n            // {row: 3, col: 4, rowspan: 2, colspan: 2}\r\n        ],\r\n        columns: [\r\n          {\r\n            data:'xm',\r\n            type: 'text', \r\n          },\r\n          {\r\n            data:'xb',\r\n            type: 'text', \r\n          },\r\n          {\r\n            data:'account',\r\n            type: 'text', \r\n          },\r\n          {\r\n            data:'nl',\r\n            type: 'numeric', \r\n          },\r\n        ],\r\n      }\r\n    };\r\n  },\r\n  methods: {\r\n    handleSelectWidget(index) {\r\n      this.selectWidget = this.data.list[index];\r\n    },\r\n    handleMoveEnd({ newIndex, oldIndex }) {\r\n      console.log(\"index\", newIndex, oldIndex);\r\n    },\r\n    handleWidgetColAdd($event, element) {\r\n      const newIndex = $event.newIndex;\r\n      const oldIndex = $event.oldIndex;\r\n      const item = $event.item;\r\n      if(item.innerText==\"二维码\"){\r\n        this.$message.error(\"子表不允许存在二维码\");\r\n        element.list.splice(newIndex, 1);\r\n        return false;\r\n      }\r\n      if(item.innerText==\"里程碑\"){\r\n        this.$message.error(\"子表不允许存在里程碑\");\r\n        element.list.splice(newIndex, 1);\r\n        return false;\r\n      }\r\n      if(item.innerText==\"高德地图\"){\r\n        this.$message.error(\"子表不允许存在高德地图\");\r\n        element.list.splice(newIndex, 1);\r\n        return false;\r\n      }\r\n      if(item.innerText==\"相关流程\"){\r\n        this.$message.error(\"子表不允许存在相关流程\");\r\n        element.list.splice(newIndex, 1);\r\n        return false;\r\n      }\r\n      if (!controlsApi.handleLayoutComponents(this)) {\r\n        return;\r\n      }\r\n      if(!element.options.boSubEntity){\r\n        this.$message.error(\"请先绑定子表\");\r\n        return false;\r\n      }\r\n      // 防止布局元素的嵌套拖拽\r\n      if (item.isLayout) {\r\n        element.list.list.splice(newIndex, 1);\r\n        return false;\r\n      }\r\n      this.selectWidget = element.list[newIndex];\r\n      this.selectWidget.parentNodeType = \"hot\";\r\n      this.selectWidget.boSubEntity  = element.options.boSubEntity;\r\n    },\r\n    handleWidgetDelete(index) {\r\n      if (this.data.list.length - 1 === index) {\r\n        if (index === 0) {\r\n          this.selectWidget = { options: { validateType: \"\" } };\r\n        } else {\r\n          this.selectWidget = this.data.list[index - 1];\r\n        }\r\n      } else {\r\n        this.selectWidget = this.data.list[index + 1];\r\n      }\r\n\r\n      this.$nextTick(() => {\r\n        this.data.list.splice(index, 1);\r\n      });\r\n    },\r\n    beforeRemoveRowMe: function (changes, source) { // 数据改变时触发此方法\r\n      this.hotSettings.dataList.splice(changes, source)\r\n    },\r\n    // 添加行\r\n    afterCreateRowMe: function (changes) {\r\n      this.hotSettings.dataList.splice(changes, 0, {\r\n        region: '',\r\n        destination: '',\r\n        firstWeight: '',\r\n        firstWeightPrice: '',\r\n        riseWeight: '',\r\n        riseWeightPrice: ''\r\n      })\r\n    },\r\n    // 新增行时，动态改变值\r\n    afterChangeMe: function (changes) {\r\n      if (changes) {\r\n        changes.forEach(([row, prop, oldValue, newValue]) => {\r\n          console.log(oldValue)\r\n          try {\r\n            this.hotSettings.dataList[row][prop] = newValue;\r\n          } catch (error) {}\r\n        })\r\n      }\r\n    },\r\n    // 查看-excel不可编辑\r\n    excalEdit() {\r\n      this.hotSettings.columns.forEach(par => {\r\n        par.readOnly = true\r\n      })\r\n    },\r\n  },\r\n  watch: {\r\n    select(val) {\r\n      this.selectWidget = val;\r\n    },\r\n    selectWidget: {\r\n      handler(val,oldVal) {\r\n        this.$emit(\"update:select\", val);\r\n      },\r\n      deep: true\r\n    },\r\n    'selectWidget.options.colHeadersRelations': {\r\n      handler(val,oldVal) {\r\n        if(val && val.length>0){\r\n          if(oldVal !== val){\r\n            let headers = [];\r\n            let columns = [];\r\n            let dataList = [[]];\r\n            if(val.length>0){\r\n              for (let index = 0; index < val.length; index++) {\r\n                let relation = val[index];\r\n                headers.push(relation.desc);\r\n                columns.push(relation.column);\r\n              }\r\n            }\r\n            this.hotSettings.colHeaders = headers;\r\n            this.hotSettings.columns = columns;\r\n            this.hotSettings.data = dataList;\r\n            if(this.selectWidget.options.initFillbackData && this.selectWidget.options.initFillbackData.length>0){\r\n              this.hotSettings.data = JSON.parse(JSON.stringify(this.selectWidget.options.initFillbackData));\r\n            }\r\n          }\r\n        }\r\n      },\r\n      deep: true\r\n    },\r\n    'selectWidget.options.initFillbackData': {\r\n      handler(val,oldVal) {\r\n        if(oldVal !== val){\r\n          if(val){\r\n            this.hotSettings.data = JSON.parse(JSON.stringify(val));\r\n          }else{\r\n            this.hotSettings.data = [[]];\r\n          }\r\n        }\r\n      },\r\n      deep: true\r\n    },\r\n  }\r\n};\r\n",null]}