@weitutech/by-components 1.1.65 → 1.1.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60502,6 +60502,7 @@ __webpack_require__.r(__webpack_exports__);
60502
60502
 
60503
60503
  // EXPORTS
60504
60504
  __webpack_require__.d(__webpack_exports__, {
60505
+ ByBatchQuerySelector: function() { return /* reexport */ BatchQuerySelector; },
60505
60506
  ByCommonSelector: function() { return /* reexport */ ByCommonSelector; },
60506
60507
  ByCustomDatePicker: function() { return /* reexport */ custom_date_picker; },
60507
60508
  ByDatePickerRange: function() { return /* reexport */ date_picker_range; },
@@ -60745,8 +60746,8 @@ var component = normalizeComponent(
60745
60746
  )
60746
60747
 
60747
60748
  /* harmony default export */ var pager = (component.exports);
60748
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d802f52-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/table/index.vue?vue&type=template&id=d8304908
60749
- var tablevue_type_template_id_d8304908_render = function render() {
60749
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d802f52-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/table/index.vue?vue&type=template&id=746a119a
60750
+ var tablevue_type_template_id_746a119a_render = function render() {
60750
60751
  var _vm = this,
60751
60752
  _c = _vm._self._c;
60752
60753
  return _c('div', [_c('vxe-grid', _vm._g(_vm._b({
@@ -60820,12 +60821,14 @@ var tablevue_type_template_id_d8304908_render = function render() {
60820
60821
  }
60821
60822
  }) : _vm._e()], 1);
60822
60823
  };
60823
- var tablevue_type_template_id_d8304908_staticRenderFns = [];
60824
+ var tablevue_type_template_id_746a119a_staticRenderFns = [];
60824
60825
 
60825
60826
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
60826
60827
  var es_array_push = __webpack_require__(4114);
60827
60828
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.every.js
60828
60829
  var es_iterator_every = __webpack_require__(1148);
60830
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js
60831
+ var es_iterator_map = __webpack_require__(1701);
60829
60832
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.difference.v2.js
60830
60833
  var es_set_difference_v2 = __webpack_require__(7642);
60831
60834
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.intersection.v2.js
@@ -61050,8 +61053,6 @@ var es_iterator_filter = __webpack_require__(2489);
61050
61053
  var es_iterator_find = __webpack_require__(116);
61051
61054
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js
61052
61055
  var es_iterator_flat_map = __webpack_require__(531);
61053
- // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js
61054
- var es_iterator_map = __webpack_require__(1701);
61055
61056
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js
61056
61057
  var es_iterator_some = __webpack_require__(3579);
61057
61058
  // EXTERNAL MODULE: ./node_modules/vuedraggable/dist/vuedraggable.umd.js
@@ -61743,6 +61744,7 @@ var custom_column_component = normalizeComponent(
61743
61744
 
61744
61745
 
61745
61746
 
61747
+
61746
61748
  /* harmony default export */ var tablevue_type_script_lang_js = ({
61747
61749
  name: 'ByTable',
61748
61750
  components: {
@@ -61819,11 +61821,20 @@ var custom_column_component = normalizeComponent(
61819
61821
  sortState: {
61820
61822
  field: null,
61821
61823
  order: null
61822
- }
61824
+ },
61825
+ // 表格容器宽度
61826
+ tableWidth: window.innerWidth,
61827
+ // 是否为移动设备
61828
+ isMobile: false
61823
61829
  };
61824
61830
  },
61825
61831
  mounted() {
61826
61832
  this.showResetCache = !!this.name;
61833
+ this.checkDeviceType();
61834
+ this.initResizeListener();
61835
+ },
61836
+ beforeDestroy() {
61837
+ this.removeResizeListener();
61827
61838
  },
61828
61839
  watch: {
61829
61840
  'gridOptions.columns': {
@@ -61876,9 +61887,14 @@ var custom_column_component = normalizeComponent(
61876
61887
  this.originColumns = rewriteWidthColumns(this.tempColumns, columns);
61877
61888
 
61878
61889
  // 使用列宽缓存值(若有)
61879
- const newColumns = replaceColumnWidthToColumns(this.name, columns);
61890
+ let newColumns = replaceColumnWidthToColumns(this.name, columns);
61880
61891
  this.setHasCache();
61881
61892
 
61893
+ // 处理固定列限制
61894
+ if (this.isMobile || this.tableWidth < 1000) {
61895
+ newColumns = this.removeFixedColumns(newColumns);
61896
+ }
61897
+
61882
61898
  // 处理前端分页
61883
61899
  let data = others.data || [];
61884
61900
  if ((_others$pagerConfig = others.pagerConfig) !== null && _others$pagerConfig !== void 0 && _others$pagerConfig.frontendPagination || (_others$sortConfig = others.sortConfig) !== null && _others$sortConfig !== void 0 && _others$sortConfig.frontendSort) {
@@ -61974,6 +61990,58 @@ var custom_column_component = normalizeComponent(
61974
61990
  }
61975
61991
  },
61976
61992
  methods: {
61993
+ // ********************************************** 设备、宽度 校验,取消去定列 *****************************************
61994
+ // 检查设备类型
61995
+ checkDeviceType() {
61996
+ const userAgent = navigator.userAgent || navigator.vendor || window.opera;
61997
+ const isMobileByUA = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent.toLowerCase());
61998
+ const isSmallScreen = window.innerWidth <= 1024;
61999
+ this.isMobile = isMobileByUA || isSmallScreen;
62000
+ },
62001
+ // 初始化窗口大小监听
62002
+ initResizeListener() {
62003
+ window.addEventListener('resize', this.handleResize);
62004
+ // 初始获取表格宽度
62005
+ this.$nextTick(() => {
62006
+ if (this.$refs.xGrid && this.$refs.xGrid.$el) {
62007
+ this.tableWidth = this.$refs.xGrid.$el.offsetWidth;
62008
+ }
62009
+ });
62010
+ },
62011
+ // 移除窗口大小监听
62012
+ removeResizeListener() {
62013
+ window.removeEventListener('resize', this.handleResize);
62014
+ },
62015
+ // 处理窗口大小变化
62016
+ handleResize() {
62017
+ if (this.$refs.xGrid && this.$refs.xGrid.$el) {
62018
+ this.tableWidth = this.$refs.xGrid.$el.offsetWidth;
62019
+ } else {
62020
+ this.tableWidth = window.innerWidth;
62021
+ }
62022
+ },
62023
+ // 移除固定列
62024
+ removeFixedColumns(columns) {
62025
+ if (!columns || !Array.isArray(columns)) return columns;
62026
+ return columns.map(column => {
62027
+ const newColumn = {
62028
+ ...column
62029
+ };
62030
+
62031
+ // 移除固定列属性
62032
+ if (newColumn.fixed) {
62033
+ delete newColumn.fixed;
62034
+ }
62035
+
62036
+ // 处理子列
62037
+ if (newColumn.children && Array.isArray(newColumn.children)) {
62038
+ newColumn.children = this.removeFixedColumns(newColumn.children);
62039
+ }
62040
+ return newColumn;
62041
+ });
62042
+ },
62043
+ // ********************************************** 设备、宽度 校验,取消去定列 *****************************************
62044
+
61977
62045
  handleCellClick(context) {
61978
62046
  if (this.options.copyFields.includes(context.column.field)) {
61979
62047
  const text = context.cell.outerText;
@@ -62315,8 +62383,8 @@ var custom_column_component = normalizeComponent(
62315
62383
  ;
62316
62384
  var table_component = normalizeComponent(
62317
62385
  components_tablevue_type_script_lang_js,
62318
- tablevue_type_template_id_d8304908_render,
62319
- tablevue_type_template_id_d8304908_staticRenderFns,
62386
+ tablevue_type_template_id_746a119a_render,
62387
+ tablevue_type_template_id_746a119a_staticRenderFns,
62320
62388
  false,
62321
62389
  null,
62322
62390
  null,
@@ -62325,8 +62393,8 @@ var table_component = normalizeComponent(
62325
62393
  )
62326
62394
 
62327
62395
  /* harmony default export */ var table = (table_component.exports);
62328
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d802f52-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/form/form.vue?vue&type=template&id=9bf2745a&scoped=true
62329
- var formvue_type_template_id_9bf2745a_scoped_true_render = function render() {
62396
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d802f52-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/form/form.vue?vue&type=template&id=c208c726&scoped=true
62397
+ var formvue_type_template_id_c208c726_scoped_true_render = function render() {
62330
62398
  var _vm = this,
62331
62399
  _c = _vm._self._c;
62332
62400
  return _c('div', {
@@ -62468,7 +62536,45 @@ var formvue_type_template_id_9bf2745a_scoped_true_render = function render() {
62468
62536
  return _vm.handleSuffixInputChange($event, item);
62469
62537
  }
62470
62538
  }
62471
- }, 'by-common-selector', item.otherOptions || {}, false))] : item.type === 'datepicker' ? [_c('el-date-picker', _vm._b({
62539
+ }, 'by-common-selector', item.otherOptions || {}, false))] : item.type === 'batchQuerySelector' ? [_c('by-batch-query-selector', _vm._b({
62540
+ attrs: {
62541
+ "value": _vm.value[`${item.field}`],
62542
+ "config": item,
62543
+ "options": item.options || [],
62544
+ "loadOptions": item.loadOptions,
62545
+ "autoLoad": item.autoLoad !== false,
62546
+ "valueKey": item.valueKey || 'id',
62547
+ "labelKey": item.labelKey || 'name',
62548
+ "disabledKey": item.disabledKey || 'disabled',
62549
+ "disabledMethod": item.disabledMethod,
62550
+ "multiple": item.multiple !== false,
62551
+ "collapseTags": item.collapseTags !== false,
62552
+ "placeholder": item.placeholder || '请选择',
62553
+ "disabled": item.disabled,
62554
+ "clearable": item.clearable !== false,
62555
+ "size": _vm.elSize,
62556
+ "maxWidth": item.maxWidth || '100%',
62557
+ "popoverWidth": item.popoverWidth || 300,
62558
+ "customMapFunction": item.customMapFunction
62559
+ },
62560
+ on: {
62561
+ "input": function ($event) {
62562
+ return _vm.handleValueChange($event, item);
62563
+ },
62564
+ "change": function ($event) {
62565
+ return _vm.handleValueChange($event, item);
62566
+ },
62567
+ "options-loaded": function ($event) {
62568
+ return _vm.handleBatchSelectorOptionsLoaded($event, item);
62569
+ },
62570
+ "options-load-error": function ($event) {
62571
+ return _vm.handleBatchSelectorOptionsLoadError($event, item);
62572
+ },
62573
+ "batch-input-complete": function ($event) {
62574
+ return _vm.handleBatchInputComplete($event, item);
62575
+ }
62576
+ }
62577
+ }, 'by-batch-query-selector', item.otherOptions || {}, false))] : item.type === 'datepicker' ? [_c('el-date-picker', _vm._b({
62472
62578
  staticStyle: {
62473
62579
  "width": "100%"
62474
62580
  },
@@ -62634,7 +62740,7 @@ var formvue_type_template_id_9bf2745a_scoped_true_render = function render() {
62634
62740
  staticClass: "footer"
62635
62741
  }, [_vm._t("footer")], 2)], 1);
62636
62742
  };
62637
- var formvue_type_template_id_9bf2745a_scoped_true_staticRenderFns = [];
62743
+ var formvue_type_template_id_c208c726_scoped_true_staticRenderFns = [];
62638
62744
 
62639
62745
  ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d802f52-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/form/comps/pair-number-input.vue?vue&type=template&id=604235f6
62640
62746
  var pair_number_inputvue_type_template_id_604235f6_render = function render() {
@@ -74091,6 +74197,414 @@ var ByCommonSelector_component = normalizeComponent(
74091
74197
  )
74092
74198
 
74093
74199
  /* harmony default export */ var ByCommonSelector = (ByCommonSelector_component.exports);
74200
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d802f52-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/batch-query-selector/BatchQuerySelector.vue?vue&type=template&id=87a7b5d8
74201
+ var BatchQuerySelectorvue_type_template_id_87a7b5d8_render = function render() {
74202
+ var _vm = this,
74203
+ _c = _vm._self._c;
74204
+ return _c('div', {
74205
+ staticClass: "by-batch-query-selector",
74206
+ style: _vm.containerStyle
74207
+ }, [_c('div', {
74208
+ staticClass: "selector-container"
74209
+ }, [_c('el-select', {
74210
+ staticClass: "selector-input",
74211
+ attrs: {
74212
+ "placeholder": _vm.placeholder,
74213
+ "disabled": _vm.disabled || _vm.loading,
74214
+ "size": _vm.size,
74215
+ "clearable": _vm.clearable,
74216
+ "multiple": _vm.multiple,
74217
+ "collapse-tags": _vm.collapseTags,
74218
+ "loading": _vm.loading
74219
+ },
74220
+ on: {
74221
+ "change": _vm.handleChange,
74222
+ "focus": _vm.handleFocus
74223
+ },
74224
+ model: {
74225
+ value: _vm.selectedValues,
74226
+ callback: function ($$v) {
74227
+ _vm.selectedValues = $$v;
74228
+ },
74229
+ expression: "selectedValues"
74230
+ }
74231
+ }, _vm._l(_vm.optionsList, function (item) {
74232
+ return _c('el-option', {
74233
+ key: item[_vm.valueKey],
74234
+ attrs: {
74235
+ "label": item[_vm.labelKey],
74236
+ "value": item[_vm.valueKey],
74237
+ "disabled": _vm.isOptionDisabled(item)
74238
+ }
74239
+ });
74240
+ }), 1), _c('el-popover', {
74241
+ attrs: {
74242
+ "placement": "bottom-end",
74243
+ "width": _vm.popoverWidth,
74244
+ "trigger": "click",
74245
+ "popper-class": "batch-input-popover"
74246
+ },
74247
+ model: {
74248
+ value: _vm.popoverVisible,
74249
+ callback: function ($$v) {
74250
+ _vm.popoverVisible = $$v;
74251
+ },
74252
+ expression: "popoverVisible"
74253
+ }
74254
+ }, [_c('div', {
74255
+ staticClass: "batch-input-container"
74256
+ }, [_c('div', {
74257
+ staticClass: "popover-title"
74258
+ }, [_vm._v("批量输入")]), _c('div', {
74259
+ staticClass: "input-type-selector"
74260
+ }, [_c('el-radio', {
74261
+ attrs: {
74262
+ "label": 'id'
74263
+ },
74264
+ model: {
74265
+ value: _vm.inputType,
74266
+ callback: function ($$v) {
74267
+ _vm.inputType = $$v;
74268
+ },
74269
+ expression: "inputType"
74270
+ }
74271
+ }, [_vm._v("ID")]), _c('el-radio', {
74272
+ attrs: {
74273
+ "label": 'name'
74274
+ },
74275
+ model: {
74276
+ value: _vm.inputType,
74277
+ callback: function ($$v) {
74278
+ _vm.inputType = $$v;
74279
+ },
74280
+ expression: "inputType"
74281
+ }
74282
+ }, [_vm._v("名称")])], 1), _c('el-input', {
74283
+ staticClass: "batch-input-textarea",
74284
+ attrs: {
74285
+ "type": "textarea",
74286
+ "rows": 10,
74287
+ "placeholder": _vm.inputType === 'id' ? '请输入ID,多个ID用换行、逗号、分号、空格分隔' : '请输入名称,多个名称用换行、逗号、分号、空格分隔'
74288
+ },
74289
+ model: {
74290
+ value: _vm.batchInputContent,
74291
+ callback: function ($$v) {
74292
+ _vm.batchInputContent = $$v;
74293
+ },
74294
+ expression: "batchInputContent"
74295
+ }
74296
+ }), _c('div', {
74297
+ staticClass: "popover-footer"
74298
+ }, [_c('el-button', {
74299
+ attrs: {
74300
+ "size": "mini"
74301
+ },
74302
+ on: {
74303
+ "click": function ($event) {
74304
+ _vm.popoverVisible = false;
74305
+ }
74306
+ }
74307
+ }, [_vm._v("取消")]), _c('el-button', {
74308
+ attrs: {
74309
+ "size": "mini",
74310
+ "type": "primary"
74311
+ },
74312
+ on: {
74313
+ "click": _vm.handleBatchInput
74314
+ }
74315
+ }, [_vm._v("确定")])], 1)], 1), _c('el-button', {
74316
+ staticClass: "batch-input-btn",
74317
+ attrs: {
74318
+ "slot": "reference",
74319
+ "disabled": _vm.disabled || _vm.loading,
74320
+ "size": _vm.size
74321
+ },
74322
+ slot: "reference"
74323
+ }, [_c('i', {
74324
+ staticClass: "el-icon-edit-outline",
74325
+ staticStyle: {
74326
+ "transform": "scale(2)",
74327
+ "display": "inline-block"
74328
+ }
74329
+ })])], 1)], 1)]);
74330
+ };
74331
+ var BatchQuerySelectorvue_type_template_id_87a7b5d8_staticRenderFns = [];
74332
+
74333
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/batch-query-selector/BatchQuerySelector.vue?vue&type=script&lang=js
74334
+
74335
+
74336
+
74337
+
74338
+
74339
+
74340
+
74341
+
74342
+
74343
+
74344
+ /* harmony default export */ var BatchQuerySelectorvue_type_script_lang_js = ({
74345
+ name: 'BatchQuerySelector',
74346
+ props: {
74347
+ // 绑定值
74348
+ value: {
74349
+ type: [Array, String, Number],
74350
+ default: () => []
74351
+ },
74352
+ // 数据源
74353
+ options: {
74354
+ type: Array,
74355
+ default: () => []
74356
+ },
74357
+ // 异步加载数据源
74358
+ loadOptions: {
74359
+ type: Function,
74360
+ default: null
74361
+ },
74362
+ // 是否自动加载数据(首次获取焦点时)
74363
+ autoLoad: {
74364
+ type: Boolean,
74365
+ default: true
74366
+ },
74367
+ // 值字段名
74368
+ valueKey: {
74369
+ type: String,
74370
+ default: 'id'
74371
+ },
74372
+ // 标签字段名
74373
+ labelKey: {
74374
+ type: String,
74375
+ default: 'name'
74376
+ },
74377
+ // 禁用字段名,用于判断选项是否禁用
74378
+ disabledKey: {
74379
+ type: String,
74380
+ default: 'disabled'
74381
+ },
74382
+ // 禁用条件,自定义函数判断选项是否禁用
74383
+ disabledMethod: {
74384
+ type: Function,
74385
+ default: null
74386
+ },
74387
+ // 是否多选
74388
+ multiple: {
74389
+ type: Boolean,
74390
+ default: true
74391
+ },
74392
+ // 是否折叠标签
74393
+ collapseTags: {
74394
+ type: Boolean,
74395
+ default: true
74396
+ },
74397
+ // 占位符
74398
+ placeholder: {
74399
+ type: String,
74400
+ default: '请选择'
74401
+ },
74402
+ // 是否禁用
74403
+ disabled: {
74404
+ type: Boolean,
74405
+ default: false
74406
+ },
74407
+ // 是否可清空
74408
+ clearable: {
74409
+ type: Boolean,
74410
+ default: true
74411
+ },
74412
+ // 大小
74413
+ size: {
74414
+ type: String,
74415
+ default: 'mini'
74416
+ },
74417
+ // 最大宽度,默认为100%(充满容器宽度)
74418
+ maxWidth: {
74419
+ type: [String, Number],
74420
+ default: '100%'
74421
+ },
74422
+ // 弹窗宽度
74423
+ popoverWidth: {
74424
+ type: [String, Number],
74425
+ default: '300'
74426
+ },
74427
+ // 自定义映射函数,用于处理批量输入后的映射逻辑
74428
+ customMapFunction: {
74429
+ type: Function,
74430
+ default: null
74431
+ }
74432
+ },
74433
+ data() {
74434
+ return {
74435
+ selectedValues: [],
74436
+ popoverVisible: false,
74437
+ inputType: 'id',
74438
+ batchInputContent: '',
74439
+ optionsList: [],
74440
+ loading: false,
74441
+ hasLoaded: false
74442
+ };
74443
+ },
74444
+ computed: {
74445
+ hasInitialValue() {
74446
+ if (this.multiple) {
74447
+ return Array.isArray(this.value) && this.value.length > 0;
74448
+ }
74449
+ return this.value !== null && this.value !== undefined && this.value !== '';
74450
+ },
74451
+ containerStyle() {
74452
+ // 处理maxWidth属性,支持数字(自动添加px)或字符串
74453
+ const width = typeof this.maxWidth === 'number' ? `${this.maxWidth}px` : this.maxWidth;
74454
+ return {
74455
+ maxWidth: width
74456
+ };
74457
+ }
74458
+ },
74459
+ watch: {
74460
+ value: {
74461
+ handler(val) {
74462
+ this.selectedValues = this.multiple ? [...(Array.isArray(val) ? val : [])] : val;
74463
+ },
74464
+ immediate: true
74465
+ },
74466
+ options: {
74467
+ handler(val) {
74468
+ this.optionsList = [...val];
74469
+ },
74470
+ immediate: true
74471
+ }
74472
+ },
74473
+ created() {
74474
+ // 如果有初始值且提供了loadOptions方法,但没有提供options,则自动加载数据
74475
+ if (this.hasInitialValue && this.loadOptions && !this.options.length) {
74476
+ this.fetchOptions();
74477
+ }
74478
+ },
74479
+ methods: {
74480
+ // 判断选项是否禁用
74481
+ isOptionDisabled(option) {
74482
+ // 如果提供了自定义禁用方法,则使用自定义方法判断
74483
+ if (this.disabledMethod) {
74484
+ return this.disabledMethod(option);
74485
+ }
74486
+
74487
+ // 否则根据禁用字段名判断
74488
+ return !!option[this.disabledKey];
74489
+ },
74490
+ // 处理选择变化
74491
+ handleChange(val) {
74492
+ this.$emit('input', val);
74493
+ this.$emit('change', val);
74494
+ },
74495
+ // 处理获取焦点
74496
+ handleFocus() {
74497
+ // 如果配置了自动加载且提供了loadOptions方法且还没有加载过数据
74498
+ if (this.autoLoad && this.loadOptions && !this.hasLoaded && this.optionsList.length === 0) {
74499
+ this.fetchOptions();
74500
+ }
74501
+ },
74502
+ // 获取选项数据
74503
+ async fetchOptions(params) {
74504
+ if (!this.loadOptions) return;
74505
+ try {
74506
+ this.loading = true;
74507
+ const result = await this.loadOptions(params);
74508
+ if (Array.isArray(result)) {
74509
+ this.optionsList = result;
74510
+ } else {
74511
+ console.warn('【BatchQuerySelector组件】: loadOptions 应该返回一个数组');
74512
+ }
74513
+ this.hasLoaded = true;
74514
+ this.$emit('options-loaded', this.optionsList);
74515
+ } catch (error) {
74516
+ this.$emit('options-load-error', error);
74517
+ } finally {
74518
+ this.loading = false;
74519
+ }
74520
+ },
74521
+ // 手动刷新选项
74522
+ refreshOptions(params) {
74523
+ return this.fetchOptions(params);
74524
+ },
74525
+ // 处理批量输入
74526
+ handleBatchInput() {
74527
+ if (!this.batchInputContent.trim()) {
74528
+ this.popoverVisible = false;
74529
+ return;
74530
+ }
74531
+
74532
+ // 分割输入内容(支持换行、逗号、分号等分隔符)
74533
+ const inputValues = this.batchInputContent.split(/[\n,;,;\s]+/).filter(item => item.trim()).map(item => item.trim());
74534
+ if (inputValues.length === 0) {
74535
+ this.popoverVisible = false;
74536
+ return;
74537
+ }
74538
+
74539
+ // 根据输入类型匹配数据
74540
+ let matchedValues = [];
74541
+ if (this.customMapFunction) {
74542
+ // 使用自定义映射函数
74543
+ matchedValues = this.customMapFunction(inputValues, this.inputType, this.options);
74544
+ } else {
74545
+ // 默认映射逻辑
74546
+ const searchKey = this.inputType === 'id' ? this.valueKey : this.labelKey;
74547
+ const resultKey = this.valueKey;
74548
+ matchedValues = this.optionsList.filter(item => {
74549
+ // 排除禁用的选项
74550
+ if (this.isOptionDisabled(item)) {
74551
+ return false;
74552
+ }
74553
+ return inputValues.includes(String(item[searchKey]));
74554
+ }).map(item => item[resultKey]);
74555
+ }
74556
+
74557
+ // 更新选中值
74558
+ if (this.multiple) {
74559
+ // 多选模式,合并已选和新匹配的值,去重
74560
+ const newValues = [...new Set([...this.selectedValues, ...matchedValues])];
74561
+ this.selectedValues = newValues;
74562
+ this.$emit('input', newValues);
74563
+ this.$emit('change', newValues);
74564
+ } else {
74565
+ // 单选模式,只取第一个匹配值
74566
+ if (matchedValues.length > 0) {
74567
+ this.selectedValues = matchedValues[0];
74568
+ this.$emit('input', matchedValues[0]);
74569
+ this.$emit('change', matchedValues[0]);
74570
+ }
74571
+ }
74572
+
74573
+ // 关闭弹出框
74574
+ this.popoverVisible = false;
74575
+ this.batchInputContent = '';
74576
+
74577
+ // 触发批量输入完成事件
74578
+ this.$emit('batch-input-complete', {
74579
+ inputValues,
74580
+ matchedValues,
74581
+ type: this.inputType
74582
+ });
74583
+ }
74584
+ }
74585
+ });
74586
+ ;// ./src/components/batch-query-selector/BatchQuerySelector.vue?vue&type=script&lang=js
74587
+ /* harmony default export */ var batch_query_selector_BatchQuerySelectorvue_type_script_lang_js = (BatchQuerySelectorvue_type_script_lang_js);
74588
+ ;// ./src/components/batch-query-selector/BatchQuerySelector.vue
74589
+
74590
+
74591
+
74592
+
74593
+
74594
+ /* normalize component */
74595
+ ;
74596
+ var BatchQuerySelector_component = normalizeComponent(
74597
+ batch_query_selector_BatchQuerySelectorvue_type_script_lang_js,
74598
+ BatchQuerySelectorvue_type_template_id_87a7b5d8_render,
74599
+ BatchQuerySelectorvue_type_template_id_87a7b5d8_staticRenderFns,
74600
+ false,
74601
+ null,
74602
+ null,
74603
+ null
74604
+
74605
+ )
74606
+
74607
+ /* harmony default export */ var BatchQuerySelector = (BatchQuerySelector_component.exports);
74094
74608
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/form/form.vue?vue&type=script&lang=js
74095
74609
 
74096
74610
 
@@ -74098,12 +74612,14 @@ var ByCommonSelector_component = normalizeComponent(
74098
74612
 
74099
74613
 
74100
74614
 
74615
+
74101
74616
  /* harmony default export */ var formvue_type_script_lang_js = ({
74102
74617
  name: 'ByForm',
74103
74618
  components: {
74104
74619
  PairNumberInput: pair_number_input,
74105
74620
  CustomDatePicker: custom_date_picker,
74106
- ByCommonSelector: ByCommonSelector
74621
+ ByCommonSelector: ByCommonSelector,
74622
+ ByBatchQuerySelector: BatchQuerySelector
74107
74623
  },
74108
74624
  props: {
74109
74625
  value: {
@@ -74348,15 +74864,37 @@ var ByCommonSelector_component = normalizeComponent(
74348
74864
  error,
74349
74865
  item
74350
74866
  });
74867
+ },
74868
+ // 批量查询选择器相关事件处理
74869
+ handleBatchSelectorOptionsLoaded(options, item) {
74870
+ // 批量查询选择器异步加载成功
74871
+ this.$emit('batch-selector-options-loaded', {
74872
+ options,
74873
+ item
74874
+ });
74875
+ },
74876
+ handleBatchSelectorOptionsLoadError(error, item) {
74877
+ // 批量查询选择器异步加载失败
74878
+ this.$emit('batch-selector-options-error', {
74879
+ error,
74880
+ item
74881
+ });
74882
+ },
74883
+ handleBatchInputComplete(data, item) {
74884
+ // 批量输入完成事件
74885
+ this.$emit('batch-input-complete', {
74886
+ ...data,
74887
+ item
74888
+ });
74351
74889
  }
74352
74890
  }
74353
74891
  });
74354
74892
  ;// ./src/components/form/form.vue?vue&type=script&lang=js
74355
74893
  /* harmony default export */ var form_formvue_type_script_lang_js = (formvue_type_script_lang_js);
74356
- ;// ./node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/form/form.vue?vue&type=style&index=0&id=9bf2745a&prod&lang=scss&scoped=true
74894
+ ;// ./node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/form/form.vue?vue&type=style&index=0&id=c208c726&prod&lang=scss&scoped=true
74357
74895
  // extracted by mini-css-extract-plugin
74358
74896
 
74359
- ;// ./src/components/form/form.vue?vue&type=style&index=0&id=9bf2745a&prod&lang=scss&scoped=true
74897
+ ;// ./src/components/form/form.vue?vue&type=style&index=0&id=c208c726&prod&lang=scss&scoped=true
74360
74898
 
74361
74899
  ;// ./src/components/form/form.vue
74362
74900
 
@@ -74369,11 +74907,11 @@ var ByCommonSelector_component = normalizeComponent(
74369
74907
 
74370
74908
  var form_component = normalizeComponent(
74371
74909
  form_formvue_type_script_lang_js,
74372
- formvue_type_template_id_9bf2745a_scoped_true_render,
74373
- formvue_type_template_id_9bf2745a_scoped_true_staticRenderFns,
74910
+ formvue_type_template_id_c208c726_scoped_true_render,
74911
+ formvue_type_template_id_c208c726_scoped_true_staticRenderFns,
74374
74912
  false,
74375
74913
  null,
74376
- "9bf2745a",
74914
+ "c208c726",
74377
74915
  null
74378
74916
 
74379
74917
  )
@@ -75505,6 +76043,7 @@ updateVar();
75505
76043
 
75506
76044
 
75507
76045
 
76046
+
75508
76047
  const components = {
75509
76048
  ByPager: pager,
75510
76049
  ByTable: table,
@@ -75515,7 +76054,8 @@ const components = {
75515
76054
  ByDatePickerRange: date_picker_range,
75516
76055
  ByCustomDatePicker: custom_date_picker,
75517
76056
  ByToolBar: ByToolBar,
75518
- ByCommonSelector: ByCommonSelector
76057
+ ByCommonSelector: ByCommonSelector,
76058
+ ByBatchQuerySelector: BatchQuerySelector
75519
76059
  };
75520
76060
 
75521
76061
  // 设置当前 z-index 起始值