@weitutech/by-components 1.1.85 → 1.1.86

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.
@@ -62119,6 +62119,38 @@ const deepClone = target => {
62119
62119
  // 返回最终结果
62120
62120
  return result;
62121
62121
  };
62122
+
62123
+ /**
62124
+ * 比较两个值是否相等,支持字符串和数字类型的自动转换
62125
+ * @param {*} value1 第一个值
62126
+ * @param {*} value2 第二个值
62127
+ * @returns {boolean} 是否相等
62128
+ */
62129
+ const isValueEqual = (value1, value2) => {
62130
+ // 如果两个值严格相等,直接返回 true
62131
+ if (value1 === value2) {
62132
+ return true;
62133
+ }
62134
+
62135
+ // 处理 0 的特殊情况
62136
+ if (value1 === 0 && value2 === 0) {
62137
+ return true;
62138
+ }
62139
+
62140
+ // 尝试数字转换比较
62141
+ const num1 = Number(value1);
62142
+ const num2 = Number(value2);
62143
+
62144
+ // 如果转换后都是有效数字且相等
62145
+ if (!isNaN(num1) && !isNaN(num2) && num1 === num2) {
62146
+ return true;
62147
+ }
62148
+
62149
+ // 尝试字符串转换比较
62150
+ const str1 = String(value1);
62151
+ const str2 = String(value2);
62152
+ return str1 === str2;
62153
+ };
62122
62154
  ;// ./src/utils/tableUtils.js
62123
62155
 
62124
62156
 
@@ -63431,8 +63463,8 @@ var table_component = normalizeComponent(
63431
63463
  )
63432
63464
 
63433
63465
  /* harmony default export */ var table = (table_component.exports);
63434
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"35e2e9c6-vue-loader-template"}!./node_modules/thread-loader/dist/cjs.js!./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=5e8c5b90&scoped=true
63435
- var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63466
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"35e2e9c6-vue-loader-template"}!./node_modules/thread-loader/dist/cjs.js!./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=acf332a6&scoped=true
63467
+ var formvue_type_template_id_acf332a6_scoped_true_render = function render() {
63436
63468
  var _vm = this,
63437
63469
  _c = _vm._self._c;
63438
63470
  return _c('div', {
@@ -63561,7 +63593,13 @@ var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63561
63593
  "suffixInputOptions": item.suffixInputOptions,
63562
63594
  "showSuffixBatchInput": item.showSuffixBatchInput,
63563
63595
  "suffixBatchInputPopoverTitle": item.suffixBatchInputPopoverTitle,
63564
- "suffixBatchInputPopoverWidth": item.suffixBatchInputPopoverWidth
63596
+ "suffixBatchInputPopoverWidth": item.suffixBatchInputPopoverWidth,
63597
+ "enhancedAllOptions": item.enhancedAllOptions || [],
63598
+ "enhancedTitleKey": item.enhancedTitleKey || 'name',
63599
+ "enhancedDescriptionKey": item.enhancedDescriptionKey || 'mobile',
63600
+ "enhancedDisabledKey": item.enhancedDisabledKey || 'status',
63601
+ "enhancedDisabledCanSelect": item.enhancedDisabledCanSelect || false,
63602
+ "enhancedCollapseTags": item.enhancedCollapseTags || false
63565
63603
  },
63566
63604
  on: {
63567
63605
  "update:suffixInputValue": function ($event) {
@@ -63575,6 +63613,9 @@ var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63575
63613
  },
63576
63614
  "suffix-input-change": function ($event) {
63577
63615
  return _vm.handleSuffixInputChange($event, item);
63616
+ },
63617
+ "search": function ($event) {
63618
+ return _vm.handleEnhancedSearch($event, item);
63578
63619
  }
63579
63620
  }
63580
63621
  }, 'by-common-selector', item.otherOptions || {}, false))] : item.type === 'batchQuerySelector' ? [_c('by-batch-query-selector', _vm._b({
@@ -63784,7 +63825,7 @@ var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63784
63825
  staticClass: "footer"
63785
63826
  }, [_vm._t("footer")], 2)], 1);
63786
63827
  };
63787
- var formvue_type_template_id_5e8c5b90_scoped_true_staticRenderFns = [];
63828
+ var formvue_type_template_id_acf332a6_scoped_true_staticRenderFns = [];
63788
63829
 
63789
63830
  ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"35e2e9c6-vue-loader-template"}!./node_modules/thread-loader/dist/cjs.js!./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
63790
63831
  var pair_number_inputvue_type_template_id_604235f6_render = function render() {
@@ -64084,14 +64125,14 @@ var custom_date_picker_component = normalizeComponent(
64084
64125
  )
64085
64126
 
64086
64127
  /* harmony default export */ var custom_date_picker = (custom_date_picker_component.exports);
64087
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"35e2e9c6-vue-loader-template"}!./node_modules/thread-loader/dist/cjs.js!./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/common-selector/ByCommonSelector.vue?vue&type=template&id=1b8642c2
64088
- var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64128
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"35e2e9c6-vue-loader-template"}!./node_modules/thread-loader/dist/cjs.js!./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/common-selector/ByCommonSelector.vue?vue&type=template&id=d3cd2662
64129
+ var ByCommonSelectorvue_type_template_id_d3cd2662_render = function render() {
64089
64130
  var _vm = this,
64090
64131
  _c = _vm._self._c;
64091
64132
  return _c('div', {
64092
64133
  staticClass: "by_selector_container",
64093
64134
  class: {
64094
- 'by_align-center': _vm.type !== 'select' && !_vm.open
64135
+ 'by_align-center': _vm.type !== 'select' && _vm.type !== 'enhancedSelect' && !_vm.open
64095
64136
  }
64096
64137
  }, [_vm.type === 'select' ? _c('el-select', _vm._b({
64097
64138
  attrs: {
@@ -64122,6 +64163,48 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64122
64163
  "disabled": item.status === 0
64123
64164
  }
64124
64165
  });
64166
+ }), 1) : _vm.type === 'enhancedSelect' ? _c('el-select', _vm._b({
64167
+ attrs: {
64168
+ "filterable": "",
64169
+ "clearable": "",
64170
+ "remote": "",
64171
+ "multiple": _vm.multiple,
64172
+ "collapse-tags": _vm.multiple && _vm.enhancedCollapseTags,
64173
+ "remote-method": _vm.getResult,
64174
+ "loading": _vm.loading,
64175
+ "placeholder": _vm.placeholder,
64176
+ "disabled": _vm.enhancedDisabled
64177
+ },
64178
+ on: {
64179
+ "change": _vm.selected,
64180
+ "visible-change": _vm.handleVisibleChange
64181
+ },
64182
+ model: {
64183
+ value: _vm.selectedValue,
64184
+ callback: function ($$v) {
64185
+ _vm.selectedValue = $$v;
64186
+ },
64187
+ expression: "selectedValue"
64188
+ }
64189
+ }, 'el-select', _vm.$attrs, false), _vm._l(_vm.enhancedDataList, function (item, index) {
64190
+ return _c('el-option', {
64191
+ key: index,
64192
+ attrs: {
64193
+ "label": _vm.enhancedDescriptionDisplay ? item[_vm.enhancedTitleKey] + ' ' + item[_vm.enhancedDescriptionKey] : item[_vm.enhancedTitleKey],
64194
+ "value": item.id,
64195
+ "disabled": !_vm.enhancedDisabledCanSelect && item[_vm.enhancedDisabledKey] === 0
64196
+ }
64197
+ }, [_c('span', {
64198
+ staticClass: "enhanced-option-left",
64199
+ class: {
64200
+ 'enhanced-disabled': item[_vm.enhancedDisabledKey] === 0
64201
+ }
64202
+ }, [_vm._v(_vm._s(item[_vm.enhancedTitleKey]))]), _vm.enhancedDescriptionDisplay ? _c('span', {
64203
+ staticClass: "enhanced-option-right",
64204
+ class: {
64205
+ 'enhanced-disabled': item[_vm.enhancedDisabledKey] === 0
64206
+ }
64207
+ }, [_vm._v(_vm._s(item[_vm.enhancedDescriptionKey]))]) : _vm._e()]);
64125
64208
  }), 1) : [!_vm.hiddenAllOptions ? _c('el-checkbox', {
64126
64209
  class: ['by_selected_all', {
64127
64210
  'by_border-transparent': _vm.type !== 'border'
@@ -64469,7 +64552,7 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64469
64552
  return _vm.handlePageChange(_vm.currentPage + 1);
64470
64553
  }
64471
64554
  }
64472
- }, [_vm._v(" 下一页 ")])], 1) : _vm._e()], 1)])], _vm.type !== 'select' && _vm.needExpand && !_vm.forceNoExpand ? _c('el-button', {
64555
+ }, [_vm._v(" 下一页 ")])], 1) : _vm._e()], 1)])], _vm.type !== 'select' && _vm.type !== 'enhancedSelect' && _vm.needExpand && !_vm.forceNoExpand ? _c('el-button', {
64473
64556
  staticClass: "by_openShrink",
64474
64557
  attrs: {
64475
64558
  "type": "text",
@@ -64478,7 +64561,7 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64478
64561
  on: {
64479
64562
  "click": _vm.showList
64480
64563
  }
64481
- }, [_vm._v(" " + _vm._s(_vm.needShowLoading && _vm.loading ? '加载中...' : _vm.open ? '收起' : '展开') + " ")]) : _vm._e(), _vm.type !== 'select' && !_vm.needExpand && !_vm.forceNoExpand && _vm.needShowLoading && _vm.loading ? _c('el-button', {
64564
+ }, [_vm._v(" " + _vm._s(_vm.needShowLoading && _vm.loading ? '加载中...' : _vm.open ? '收起' : '展开') + " ")]) : _vm._e(), _vm.type !== 'select' && _vm.type !== 'enhancedSelect' && !_vm.needExpand && !_vm.forceNoExpand && _vm.needShowLoading && _vm.loading ? _c('el-button', {
64482
64565
  staticClass: "by_openShrink",
64483
64566
  attrs: {
64484
64567
  "type": "text",
@@ -64486,7 +64569,7 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64486
64569
  }
64487
64570
  }, [_vm._v(" 加载中... ")]) : _vm._e()], 2);
64488
64571
  };
64489
- var ByCommonSelectorvue_type_template_id_1b8642c2_staticRenderFns = [];
64572
+ var ByCommonSelectorvue_type_template_id_d3cd2662_staticRenderFns = [];
64490
64573
 
64491
64574
  ;// ./node_modules/pinyin-pro/dist/index.mjs
64492
64575
 
@@ -74779,8 +74862,10 @@ function segment(word, options) {
74779
74862
 
74780
74863
 
74781
74864
 
74865
+
74782
74866
  //拼音库,用于搜索栏生成A~Z字母
74783
74867
 
74868
+
74784
74869
  // 全部选项可能的名称
74785
74870
  const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'all'];
74786
74871
  /* harmony default export */ var ByCommonSelectorvue_type_script_lang_js = ({
@@ -74794,7 +74879,11 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74794
74879
  default: ''
74795
74880
  },
74796
74881
  /**
74797
- * 选择器类型 border | checkbox | select(default)
74882
+ * 选择器类型
74883
+ * border
74884
+ * checkbox
74885
+ * select (默认)
74886
+ * enhancedSelect
74798
74887
  */
74799
74888
  type: {
74800
74889
  type: String,
@@ -74835,7 +74924,12 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74835
74924
  */
74836
74925
  placeholder: {
74837
74926
  type: String,
74838
- default: '请选择'
74927
+ default() {
74928
+ if (this.type === 'enhancedSelect') {
74929
+ return '请输入用户名,手机号搜索';
74930
+ }
74931
+ return '请选择';
74932
+ }
74839
74933
  },
74840
74934
  /**
74841
74935
  * 选择器大小
@@ -74883,7 +74977,7 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74883
74977
  type: Boolean,
74884
74978
  default: false
74885
74979
  },
74886
- // ***************** 后置输入框相关
74980
+ // ********************************** 后置输入框相关 **********************************
74887
74981
  /**
74888
74982
  * 是否显示后置输入框
74889
74983
  */
@@ -74940,6 +75034,61 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74940
75034
  suffixBatchInputPopoverWidth: {
74941
75035
  type: [String, Number],
74942
75036
  default: '300'
75037
+ },
75038
+ // ********************************** 增强下拉选择器相关 **********************************
75039
+ /**
75040
+ * 增强下拉选择器中,所有选项数据
75041
+ * @description 该属性是用于默认回显时查找数据,并非用于展示下拉选项
75042
+ * 必填,否则会影响默认回显
75043
+ */
75044
+ enhancedAllOptions: {
75045
+ type: Array,
75046
+ default: () => []
75047
+ },
75048
+ /**
75049
+ * 增强下拉选择器中,选项的title字段
75050
+ */
75051
+ enhancedTitleKey: {
75052
+ type: String,
75053
+ default: 'name'
75054
+ },
75055
+ /**
75056
+ * 增强下拉选择器中,选项的description字段
75057
+ */
75058
+ enhancedDescriptionKey: {
75059
+ type: String,
75060
+ default: 'mobile'
75061
+ },
75062
+ /**
75063
+ * 增强下拉选择器中,选项的禁用字段名(置灰的字段)
75064
+ */
75065
+ enhancedDisabledKey: {
75066
+ type: String,
75067
+ default: 'status'
75068
+ },
75069
+ /**
75070
+ * 增强下拉选择器中,选项的description字段是否显示
75071
+ * true: 显示 标题 + 描述 (如: 何其灿 13063048088)
75072
+ * false: 只显示 标题
75073
+ */
75074
+ enhancedDescriptionDisplay: {
75075
+ type: Boolean,
75076
+ default: true
75077
+ },
75078
+ /**
75079
+ * 增强下拉选择器中,多选时是否折叠标签
75080
+ */
75081
+ enhancedCollapseTags: {
75082
+ type: Boolean,
75083
+ default: false
75084
+ },
75085
+ /**
75086
+ * 增强下拉选择器中,禁用的值是否可选
75087
+ * 是:禁用只是置灰,依然可选; 否:置灰并不可选中
75088
+ */
75089
+ enhancedDisabledCanSelect: {
75090
+ type: Boolean,
75091
+ default: false
74943
75092
  }
74944
75093
  },
74945
75094
  data() {
@@ -74972,7 +75121,15 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74972
75121
 
74973
75122
  popoverVisible: false,
74974
75123
  // 批量输入按钮的弹窗是否显示
74975
- batchInputContent: '' // 批量输入的内容
75124
+ batchInputContent: '',
75125
+ // 批量输入的内容
75126
+
75127
+ // enhancedSelect 相关数据
75128
+ allData: new Map(),
75129
+ // 缓存所有数据
75130
+ enhancedSelectOpened: false,
75131
+ // 标记 enhancedSelect 是否已经打开过
75132
+ enhancedDisabled: false
74976
75133
  };
74977
75134
  },
74978
75135
  computed: {
@@ -74984,10 +75141,43 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74984
75141
  },
74985
75142
  optionsList() {
74986
75143
  return this.dataList;
75144
+ },
75145
+ enhancedDataList() {
75146
+ if (this.type !== 'enhancedSelect') {
75147
+ return this.dataList;
75148
+ }
75149
+
75150
+ // 只有在未打开过的情况下,如果有默认值且 dataList 为空,则从 enhancedAllOptions 中查找默认选项
75151
+ if (!this.enhancedSelectOpened && this.value !== undefined && this.value !== null && this.value !== '' && this.dataList.length === 0) {
75152
+ if (this.multiple) {
75153
+ // 多选情况:value 是数组
75154
+ if (Array.isArray(this.value) && this.value.length > 0) {
75155
+ const defaultItems = this.enhancedAllOptions.filter(option => this.value.some(val => isValueEqual(val, option.id)));
75156
+ return defaultItems;
75157
+ }
75158
+ } else {
75159
+ // 单选情况:value 是单个值
75160
+ if (this.value !== '') {
75161
+ const defaultItem = this.enhancedAllOptions.find(option => isValueEqual(this.value, option.id));
75162
+ return defaultItem ? [defaultItem] : [];
75163
+ }
75164
+ }
75165
+ }
75166
+ return this.dataList;
74987
75167
  }
74988
75168
  },
74989
75169
  watch: {
74990
75170
  value(value) {
75171
+ if (this.type === 'enhancedSelect') {
75172
+ this.selectedValue = value;
75173
+ // 如果数据已经加载,立即处理默认值
75174
+ if (this.allData.size > 0) {
75175
+ this.$nextTick(() => {
75176
+ this.handleEnhancedSelectDefaultValue();
75177
+ });
75178
+ }
75179
+ return;
75180
+ }
74991
75181
  if (this.type === 'select') {
74992
75182
  this.selectedValue = value;
74993
75183
 
@@ -75013,6 +75203,25 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75013
75203
  },
75014
75204
  options: {
75015
75205
  handler(newOptions, oldOptions) {
75206
+ // enhancedSelect 类型的特殊处理
75207
+ if (this.type === 'enhancedSelect') {
75208
+ this.dataList = newOptions;
75209
+ // 更新缓存
75210
+ this.allData.clear();
75211
+ newOptions.forEach(item => {
75212
+ this.allData.set(item.id, item);
75213
+ });
75214
+ // 数据更新后,自动关闭加载状态
75215
+ this.loading = false;
75216
+
75217
+ // 数据加载完成后,重新处理默认值
75218
+ this.$nextTick(() => {
75219
+ this.handleEnhancedSelectDefaultValue();
75220
+ });
75221
+ return;
75222
+ }
75223
+
75224
+ // 其他类型的处理
75016
75225
  if (!this.loadOptions) {
75017
75226
  this.localOptions = [...this.options];
75018
75227
 
@@ -75057,6 +75266,25 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75057
75266
  if (val !== this.localSuffixInputValue) {
75058
75267
  this.localSuffixInputValue = val;
75059
75268
  }
75269
+ },
75270
+ enhancedAllOptions: {
75271
+ handler(newOptions) {
75272
+ if (this.type === 'enhancedSelect') {
75273
+ this.enhancedDisabled = true;
75274
+ // 验证 enhancedAllOptions 是否已加载
75275
+ if (!newOptions || newOptions.length === 0) {
75276
+ // console.warn('[ByCommonSelector] enhancedSelect 类型需要提供 enhancedAllOptions 属性用于默认值回显')
75277
+ return;
75278
+ }
75279
+
75280
+ // 当 enhancedAllOptions 加载完成后,重新处理默认值
75281
+ this.$nextTick(() => {
75282
+ this.handleEnhancedSelectDefaultValue();
75283
+ this.enhancedDisabled = false;
75284
+ });
75285
+ }
75286
+ },
75287
+ immediate: true
75060
75288
  }
75061
75289
  },
75062
75290
  created() {
@@ -75149,7 +75377,7 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75149
75377
  // 检查是否需要展开按钮
75150
75378
  checkNeedExpand() {
75151
75379
  var _this$$el;
75152
- if (this.type === 'select' || this.forceNoExpand) {
75380
+ if (this.type === 'select' || this.type === 'enhancedSelect' || this.forceNoExpand) {
75153
75381
  this.needExpand = false;
75154
75382
  return;
75155
75383
  }
@@ -75245,6 +75473,16 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75245
75473
  }
75246
75474
  },
75247
75475
  initData() {
75476
+ // enhancedSelect 类型的特殊处理
75477
+ if (this.type === 'enhancedSelect') {
75478
+ this.dataList = this.options;
75479
+ this.selectedValue = this.value;
75480
+ // 缓存所有数据
75481
+ this.options.forEach(item => {
75482
+ this.allData.set(item.id, item);
75483
+ });
75484
+ return;
75485
+ }
75248
75486
  this.dataList = [...this.localOptions];
75249
75487
  this.buildLatterList();
75250
75488
  // 修复:使用严格比较,避免0值被误判为空
@@ -75303,7 +75541,7 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75303
75541
  },
75304
75542
  // 构建A~Z字母列表
75305
75543
  buildLatterList() {
75306
- if (this.type === 'select') {
75544
+ if (this.type === 'select' || this.type === 'enhancedSelect') {
75307
75545
  this.dataList = [...this.localOptions];
75308
75546
  } else {
75309
75547
  // 如果启用了showSearchBar,确保每个选项都有initial字段
@@ -75395,7 +75633,44 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75395
75633
  this.handlePageChange(1);
75396
75634
  },
75397
75635
  selected(value) {
75398
- // 在多选模式下,value是数组;在单选模式下,确保使用selectedValue而不是布尔值
75636
+ // enhancedSelect 类型的特殊处理
75637
+ if (this.type === 'enhancedSelect') {
75638
+ let obj = null;
75639
+ if (this.multiple) {
75640
+ obj = [];
75641
+ // 修复:优先从 enhancedAllOptions 中查找,确保多选时能正确获取对象数组
75642
+ if (Array.isArray(value) && value.length > 0) {
75643
+ // 从 enhancedAllOptions 中查找所有匹配的选项
75644
+ const items = this.enhancedAllOptions.filter(option => value.some(val => isValueEqual(val, option.id)));
75645
+ obj = items;
75646
+ }
75647
+ } else {
75648
+ obj = {};
75649
+ if (value !== undefined && value !== null && value !== '') {
75650
+ // 优先从 enhancedAllOptions 中查找
75651
+ const item = this.enhancedAllOptions.find(option => isValueEqual(value, option.id));
75652
+ if (item) {
75653
+ obj[this.enhancedDescriptionKey] = item[this.enhancedDescriptionKey];
75654
+ obj[this.enhancedTitleKey] = item[this.enhancedTitleKey];
75655
+ obj.id = item.id;
75656
+ } else {
75657
+ // 如果从 enhancedAllOptions 中找不到,再从 dataList 中查找
75658
+ this.dataList.forEach(item => {
75659
+ if (isValueEqual(value, item.id)) {
75660
+ obj[this.enhancedDescriptionKey] = item[this.enhancedDescriptionKey];
75661
+ obj[this.enhancedTitleKey] = item[this.enhancedTitleKey];
75662
+ obj.id = item.id;
75663
+ }
75664
+ });
75665
+ }
75666
+ } else {
75667
+ obj = null;
75668
+ }
75669
+ }
75670
+ this.$emit('input', value);
75671
+ this.$emit('change', obj);
75672
+ return;
75673
+ }
75399
75674
  if (this.multiple) {
75400
75675
  if (Array.isArray(value)) {
75401
75676
  this.selectedValue = value.filter(v => typeof v !== 'boolean');
@@ -75471,13 +75746,56 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75471
75746
  }
75472
75747
  },
75473
75748
  emitChange(value) {
75474
- // console.log('001:触发了-emitChange ==:', value)
75475
75749
  this.$emit('input', value);
75476
75750
  },
75477
75751
  handleSuffixInputChange(value) {
75478
75752
  this.localSuffixInputValue = value;
75479
75753
  this.$emit('suffix-input-change', value);
75480
75754
  this.$emit('update:suffixInputValue', value);
75755
+ },
75756
+ // ******************** enhancedSelect 相关方法 ********************
75757
+
75758
+ getResult(q) {
75759
+ this.loading = true;
75760
+ this.$emit('search', q);
75761
+ return Promise.resolve();
75762
+ },
75763
+ // 处理 enhancedSelect 类型的默认值
75764
+ handleEnhancedSelectDefaultValue() {
75765
+ if (this.value !== undefined && this.value !== null && this.value !== '' && this.enhancedAllOptions && this.enhancedAllOptions.length > 0) {
75766
+ // 确保默认值能正确显示
75767
+ this.selectedValue = this.value;
75768
+ if (this.multiple) {
75769
+ if (Array.isArray(this.value) && this.value.length > 0) {
75770
+ const items = this.enhancedAllOptions.filter(option => this.value.some(val => isValueEqual(val, option.id)));
75771
+ if (items.length > 0) {
75772
+ this.$emit('input', this.value);
75773
+ this.$emit('change', items);
75774
+ }
75775
+ }
75776
+ } else {
75777
+ const item = this.enhancedAllOptions.find(option => isValueEqual(this.value, option.id));
75778
+ if (item) {
75779
+ let obj = {};
75780
+ obj[this.enhancedDescriptionKey] = item[this.enhancedDescriptionKey];
75781
+ obj[this.enhancedTitleKey] = item[this.enhancedTitleKey];
75782
+ obj.id = item.id;
75783
+ this.$emit('input', this.value);
75784
+ this.$emit('change', obj);
75785
+ }
75786
+ }
75787
+ }
75788
+ },
75789
+ handleVisibleChange(visible) {
75790
+ if (this.type === 'enhancedSelect') {
75791
+ if (visible) {
75792
+ // 标记已经打开过
75793
+ this.enhancedSelectOpened = true;
75794
+ // 当下拉框打开时,清空搜索结果
75795
+ this.dataList = [];
75796
+ this.$emit('search', ''); // 触发清空搜索
75797
+ }
75798
+ }
75481
75799
  }
75482
75800
  }
75483
75801
  });
@@ -75493,8 +75811,8 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75493
75811
  ;
75494
75812
  var ByCommonSelector_component = normalizeComponent(
75495
75813
  common_selector_ByCommonSelectorvue_type_script_lang_js,
75496
- ByCommonSelectorvue_type_template_id_1b8642c2_render,
75497
- ByCommonSelectorvue_type_template_id_1b8642c2_staticRenderFns,
75814
+ ByCommonSelectorvue_type_template_id_d3cd2662_render,
75815
+ ByCommonSelectorvue_type_template_id_d3cd2662_staticRenderFns,
75498
75816
  false,
75499
75817
  null,
75500
75818
  null,
@@ -76433,15 +76751,22 @@ var BatchQuerySelector_component = normalizeComponent(
76433
76751
  ...event,
76434
76752
  item
76435
76753
  });
76754
+ },
76755
+ // 增强选择器搜索事件处理
76756
+ handleEnhancedSearch(query, item) {
76757
+ this.$emit('enhanced-search', {
76758
+ query,
76759
+ item
76760
+ });
76436
76761
  }
76437
76762
  }
76438
76763
  });
76439
76764
  ;// ./src/components/form/form.vue?vue&type=script&lang=js
76440
76765
  /* harmony default export */ var form_formvue_type_script_lang_js = (formvue_type_script_lang_js);
76441
- ;// ./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=5e8c5b90&prod&lang=scss&scoped=true
76766
+ ;// ./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=acf332a6&prod&lang=scss&scoped=true
76442
76767
  // extracted by mini-css-extract-plugin
76443
76768
 
76444
- ;// ./src/components/form/form.vue?vue&type=style&index=0&id=5e8c5b90&prod&lang=scss&scoped=true
76769
+ ;// ./src/components/form/form.vue?vue&type=style&index=0&id=acf332a6&prod&lang=scss&scoped=true
76445
76770
 
76446
76771
  ;// ./src/components/form/form.vue
76447
76772
 
@@ -76454,11 +76779,11 @@ var BatchQuerySelector_component = normalizeComponent(
76454
76779
 
76455
76780
  var form_component = normalizeComponent(
76456
76781
  form_formvue_type_script_lang_js,
76457
- formvue_type_template_id_5e8c5b90_scoped_true_render,
76458
- formvue_type_template_id_5e8c5b90_scoped_true_staticRenderFns,
76782
+ formvue_type_template_id_acf332a6_scoped_true_render,
76783
+ formvue_type_template_id_acf332a6_scoped_true_staticRenderFns,
76459
76784
  false,
76460
76785
  null,
76461
- "5e8c5b90",
76786
+ "acf332a6",
76462
76787
  null
76463
76788
 
76464
76789
  )
@@ -1 +1 @@
1
- .b-form .header[data-v-5e8c5b90]{margin-bottom:20px}.b-form .footer[data-v-5e8c5b90]{margin-top:20px}
1
+ .b-form .header[data-v-acf332a6]{margin-bottom:20px}.b-form .footer[data-v-acf332a6]{margin-top:20px}