{"remainingRequest":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\artfess-module\\src\\components\\common\\Selector.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\artfess-module\\src\\components\\common\\Selector.vue","mtime":1675232038652},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\artfess-module\\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\r\nimport utils from \"@/utils.js\";\r\nimport { setTimeout } from \"timers\";\r\nimport Locale from \"@/mixins/locale\";\r\n\r\nexport default {\r\n  name: \"ht-selector\",\r\n  mixins: [Locale],\r\n  props: {\r\n    searchPlaceholder: {\r\n      type: String,\r\n      default: \"\"\r\n    },\r\n    selectLabel: {\r\n      type: String,\r\n      default: \"name\"\r\n    },\r\n    tableColumns: {\r\n      type: Array,\r\n      default: () => {\r\n        return  [];\r\n      }\r\n    },\r\n    value: {\r\n      type: Array,\r\n      default: () => {\r\n        return [];\r\n      }\r\n    },\r\n    data: Array,\r\n    single: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    //服务端分页\r\n    pagination: {\r\n      type: Object,\r\n      default: () => {\r\n        return {\r\n          page: 1,\r\n          pageSize: 10,\r\n          total: 31214,\r\n          showTotal: true\r\n        };\r\n      }\r\n    },\r\n    quickSearchProps: {\r\n      type: [String, Array],\r\n      required: true\r\n    },\r\n    //唯一标识字段\r\n    primaryField: {\r\n      type: String,\r\n      default: \"\"\r\n    }\r\n  },\r\n  data() {\r\n    return {\r\n      sizeType:\"small\",\r\n      loading: false,\r\n      searchWord: null,\r\n      //客户端分页\r\n      paging: {\r\n        page: 1,\r\n        pageSize: 10\r\n      },\r\n      selectedId: null,\r\n      selects: [],\r\n      defaultCheckedKeys:[]\r\n    };\r\n  },\r\n  computed: {\r\n    treeProps: function() {\r\n      return { label: this.selectLabel };\r\n    }\r\n  },\r\n  watch: {\r\n    data: function(newVal) {\r\n      if (newVal && newVal.length > 0) {\r\n        this.syncCheckedStatus();\r\n      }\r\n    }\r\n  },\r\n  created() {\r\n    // 组件初始化时，复制一份分页信息\r\n    this.oldPaging = { ...this.paging };\r\n    if(this.$smallScreenDialog){\r\n      this.sizeType = \"mini\";\r\n    }\r\n  },\r\n  methods: {\r\n    hideTip(tipField,val){\r\n      if (!tipField || !val) {\r\n        return true;\r\n      }\r\n      return false;\r\n    },\r\n    // 同步已选行到已选数据中去\r\n    syncSelection2selects() {\r\n      // 复制一份当前已选数据\r\n      let tmpSelects = [...this.selects];\r\n      // 先将当前页中的数据从已选数据中移除\r\n      this.data.forEach(m => {\r\n        tmpSelects.remove(m);\r\n      });\r\n      // 将剩余的已选数据与当前页选中的数据合并\r\n      tmpSelects = [...tmpSelects, ...this.$refs.selectorTable.selection];\r\n      // 数组去重\r\n      this.selects = tmpSelects.unique(this.primaryField?this.primaryField:\"id\");\r\n\r\n      this.defaultCheckedKeys = this.defaultCheckedKeys.concat(this.$refs.selectorTable.selection.extractByKey(\"id\"));\r\n    },\r\n    // 同步已选数据在Table中的选中状态\r\n    syncCheckedStatus() {\r\n      this.selectedId = null;\r\n      if (this.single) {\r\n        this.selects.length === 1 && (this.selectedId = this.selects[0].id);\r\n      } else {\r\n        if (!this.$refs.selectorTable || !this.$refs.selectorTable.selection) {\r\n          throw \"未获取到数据列表，无法选择数据。\";\r\n        }\r\n        this.$refs.selectorTable.clearSelection();\r\n        this.selects.length > 0 &&\r\n          setTimeout(() => {\r\n            this.selects.forEach(m => {\r\n              if (\r\n                this.data.some(n => {\r\n                  return utils.objectEquals(m, n);\r\n                })\r\n              ) {\r\n                this.$refs.selectorTable.toggleRowSelection(m);\r\n              }\r\n            });\r\n          });\r\n      }\r\n    },\r\n    onShow(initSelectors) {\r\n      // 每一次显示选择器时，重置当前选中数据为外部的v-model对象\r\n      if (!initSelectors) {\r\n        this.selects = [...this.value];\r\n      } else {\r\n        this.selects = initSelectors;\r\n      }\r\n      this.defaultCheckedKeys=this.selects.extractByKey(\"id\");\r\n      this.reset();\r\n    },\r\n    onHide(sure) {\r\n      // 在隐藏选择器时，如果点击的是确定按钮，则将当前选中数据更新到外部的v-model对象上\r\n      if (sure) {\r\n        this.$emit(\"input\", this.selects);\r\n      }\r\n    },\r\n    getQueryFilter(isPageChange) {\r\n       let queryFilter = {\r\n        querys: [],\r\n        pageBean: this.paging\r\n      };\r\n\r\n      if (\r\n        this.quickSearchProps &&\r\n        this.quickSearchProps.constructor == String &&\r\n        this.searchWord\r\n      ) {\r\n         //有搜索条件并且不是切换分页的时候，重置分页\r\n        if (!isPageChange) {\r\n          queryFilter.pageBean.page = 1;\r\n        }\r\n        \r\n        let props = this.quickSearchProps.split(\",\");\r\n        props.forEach(item => {\r\n          let query = {\r\n            property: item,\r\n            value: this.searchWord,\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"OR\"\r\n          };\r\n          queryFilter.querys.push(query);\r\n        });\r\n      }\r\n\r\n      return queryFilter;\r\n    },\r\n    // 加载数据，根据当前的搜索关键词及分页条件\r\n    load(isPageChange) {\r\n      this.loading = true;\r\n\r\n      this.$emit(\"load\", this.getQueryFilter(isPageChange), () => {\r\n        this.loading = false;\r\n      });\r\n    },\r\n    // 搜索事件\r\n    search() {\r\n      if (this.loading) {\r\n        return;\r\n      }\r\n      this.paging = this.oldPaging;\r\n      this.load();\r\n    },\r\n    // 重置事件\r\n    reset() {\r\n      this.$emit(\"reset\");\r\n      this.searchWord = null;\r\n      this.paging = this.oldPaging;\r\n      this.load();\r\n    },\r\n    clear() {\r\n      this.reset();\r\n    },\r\n    handleRowClick(row, column, event) {\r\n      if (this.single) {\r\n        this.selects = [row];\r\n        this.selectedId = row.id;\r\n        this.defaultCheckedKeys = [];\r\n        this.defaultCheckedKeys.push(this.selectedId);\r\n      } else {\r\n        if (!this.$refs.selectorTable || !this.$refs.selectorTable.selection) {\r\n          throw \"未获取到数据列表，无法选择数据。\";\r\n        }\r\n        let _tag = true;\r\n        this.$refs.selectorTable.selection.forEach(m => {\r\n          if (m === row) {\r\n            // 已选中该行时，取消选中状态\r\n            this.$refs.selectorTable.toggleRowSelection(row, false);\r\n            _tag = false;\r\n          }\r\n        });\r\n        // 非取消选中情况下，将当前行设置为选中状态\r\n        _tag && this.$refs.selectorTable.toggleRowSelection(row);\r\n        this.syncSelection2selects();\r\n      }\r\n    },\r\n    handleTableSelect() {\r\n      this.syncSelection2selects();\r\n    },\r\n    handleSizeChange(size) {\r\n      this.paging.pageSize = size;\r\n      this.load();\r\n    },\r\n    handleCurrentChange(currentPage) {\r\n      this.paging.page = currentPage;\r\n      this.load(true);\r\n    },\r\n    move(direct) {\r\n      let selectedAry = this.$refs.selectTree.getCheckedNodes();\r\n      // 将调整顺序之后的数组赋值给Tree\r\n      this.selects = utils.arrayMove(this.selects, selectedAry, direct);\r\n      setTimeout(() => {\r\n        // 调整顺序后恢复勾选状态\r\n        this.$refs.selectTree.setCheckedNodes(selectedAry);\r\n      });\r\n    },\r\n    removeSelected() {\r\n      let selectedAry = this.$refs.selectTree.getCheckedNodes();\r\n      selectedAry.forEach(item => {\r\n        this.selects.remove(item);\r\n      });\r\n      this.syncCheckedStatus();\r\n    },\r\n    clearAllSelects() {\r\n      this.selects = [];\r\n      this.syncCheckedStatus();\r\n    }\r\n  }\r\n};\r\n",null]}