@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.
@@ -62129,6 +62129,38 @@ const deepClone = target => {
62129
62129
  // 返回最终结果
62130
62130
  return result;
62131
62131
  };
62132
+
62133
+ /**
62134
+ * 比较两个值是否相等,支持字符串和数字类型的自动转换
62135
+ * @param {*} value1 第一个值
62136
+ * @param {*} value2 第二个值
62137
+ * @returns {boolean} 是否相等
62138
+ */
62139
+ const isValueEqual = (value1, value2) => {
62140
+ // 如果两个值严格相等,直接返回 true
62141
+ if (value1 === value2) {
62142
+ return true;
62143
+ }
62144
+
62145
+ // 处理 0 的特殊情况
62146
+ if (value1 === 0 && value2 === 0) {
62147
+ return true;
62148
+ }
62149
+
62150
+ // 尝试数字转换比较
62151
+ const num1 = Number(value1);
62152
+ const num2 = Number(value2);
62153
+
62154
+ // 如果转换后都是有效数字且相等
62155
+ if (!isNaN(num1) && !isNaN(num2) && num1 === num2) {
62156
+ return true;
62157
+ }
62158
+
62159
+ // 尝试字符串转换比较
62160
+ const str1 = String(value1);
62161
+ const str2 = String(value2);
62162
+ return str1 === str2;
62163
+ };
62132
62164
  ;// ./src/utils/tableUtils.js
62133
62165
 
62134
62166
 
@@ -63441,8 +63473,8 @@ var table_component = normalizeComponent(
63441
63473
  )
63442
63474
 
63443
63475
  /* harmony default export */ var table = (table_component.exports);
63444
- ;// ./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-82.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
63445
- var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63476
+ ;// ./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-82.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
63477
+ var formvue_type_template_id_acf332a6_scoped_true_render = function render() {
63446
63478
  var _vm = this,
63447
63479
  _c = _vm._self._c;
63448
63480
  return _c('div', {
@@ -63571,7 +63603,13 @@ var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63571
63603
  "suffixInputOptions": item.suffixInputOptions,
63572
63604
  "showSuffixBatchInput": item.showSuffixBatchInput,
63573
63605
  "suffixBatchInputPopoverTitle": item.suffixBatchInputPopoverTitle,
63574
- "suffixBatchInputPopoverWidth": item.suffixBatchInputPopoverWidth
63606
+ "suffixBatchInputPopoverWidth": item.suffixBatchInputPopoverWidth,
63607
+ "enhancedAllOptions": item.enhancedAllOptions || [],
63608
+ "enhancedTitleKey": item.enhancedTitleKey || 'name',
63609
+ "enhancedDescriptionKey": item.enhancedDescriptionKey || 'mobile',
63610
+ "enhancedDisabledKey": item.enhancedDisabledKey || 'status',
63611
+ "enhancedDisabledCanSelect": item.enhancedDisabledCanSelect || false,
63612
+ "enhancedCollapseTags": item.enhancedCollapseTags || false
63575
63613
  },
63576
63614
  on: {
63577
63615
  "update:suffixInputValue": function ($event) {
@@ -63585,6 +63623,9 @@ var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63585
63623
  },
63586
63624
  "suffix-input-change": function ($event) {
63587
63625
  return _vm.handleSuffixInputChange($event, item);
63626
+ },
63627
+ "search": function ($event) {
63628
+ return _vm.handleEnhancedSearch($event, item);
63588
63629
  }
63589
63630
  }
63590
63631
  }, 'by-common-selector', item.otherOptions || {}, false))] : item.type === 'batchQuerySelector' ? [_c('by-batch-query-selector', _vm._b({
@@ -63794,7 +63835,7 @@ var formvue_type_template_id_5e8c5b90_scoped_true_render = function render() {
63794
63835
  staticClass: "footer"
63795
63836
  }, [_vm._t("footer")], 2)], 1);
63796
63837
  };
63797
- var formvue_type_template_id_5e8c5b90_scoped_true_staticRenderFns = [];
63838
+ var formvue_type_template_id_acf332a6_scoped_true_staticRenderFns = [];
63798
63839
 
63799
63840
  ;// ./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-82.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
63800
63841
  var pair_number_inputvue_type_template_id_604235f6_render = function render() {
@@ -64094,14 +64135,14 @@ var custom_date_picker_component = normalizeComponent(
64094
64135
  )
64095
64136
 
64096
64137
  /* harmony default export */ var custom_date_picker = (custom_date_picker_component.exports);
64097
- ;// ./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-82.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
64098
- var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64138
+ ;// ./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-82.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
64139
+ var ByCommonSelectorvue_type_template_id_d3cd2662_render = function render() {
64099
64140
  var _vm = this,
64100
64141
  _c = _vm._self._c;
64101
64142
  return _c('div', {
64102
64143
  staticClass: "by_selector_container",
64103
64144
  class: {
64104
- 'by_align-center': _vm.type !== 'select' && !_vm.open
64145
+ 'by_align-center': _vm.type !== 'select' && _vm.type !== 'enhancedSelect' && !_vm.open
64105
64146
  }
64106
64147
  }, [_vm.type === 'select' ? _c('el-select', _vm._b({
64107
64148
  attrs: {
@@ -64132,6 +64173,48 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64132
64173
  "disabled": item.status === 0
64133
64174
  }
64134
64175
  });
64176
+ }), 1) : _vm.type === 'enhancedSelect' ? _c('el-select', _vm._b({
64177
+ attrs: {
64178
+ "filterable": "",
64179
+ "clearable": "",
64180
+ "remote": "",
64181
+ "multiple": _vm.multiple,
64182
+ "collapse-tags": _vm.multiple && _vm.enhancedCollapseTags,
64183
+ "remote-method": _vm.getResult,
64184
+ "loading": _vm.loading,
64185
+ "placeholder": _vm.placeholder,
64186
+ "disabled": _vm.enhancedDisabled
64187
+ },
64188
+ on: {
64189
+ "change": _vm.selected,
64190
+ "visible-change": _vm.handleVisibleChange
64191
+ },
64192
+ model: {
64193
+ value: _vm.selectedValue,
64194
+ callback: function ($$v) {
64195
+ _vm.selectedValue = $$v;
64196
+ },
64197
+ expression: "selectedValue"
64198
+ }
64199
+ }, 'el-select', _vm.$attrs, false), _vm._l(_vm.enhancedDataList, function (item, index) {
64200
+ return _c('el-option', {
64201
+ key: index,
64202
+ attrs: {
64203
+ "label": _vm.enhancedDescriptionDisplay ? item[_vm.enhancedTitleKey] + ' ' + item[_vm.enhancedDescriptionKey] : item[_vm.enhancedTitleKey],
64204
+ "value": item.id,
64205
+ "disabled": !_vm.enhancedDisabledCanSelect && item[_vm.enhancedDisabledKey] === 0
64206
+ }
64207
+ }, [_c('span', {
64208
+ staticClass: "enhanced-option-left",
64209
+ class: {
64210
+ 'enhanced-disabled': item[_vm.enhancedDisabledKey] === 0
64211
+ }
64212
+ }, [_vm._v(_vm._s(item[_vm.enhancedTitleKey]))]), _vm.enhancedDescriptionDisplay ? _c('span', {
64213
+ staticClass: "enhanced-option-right",
64214
+ class: {
64215
+ 'enhanced-disabled': item[_vm.enhancedDisabledKey] === 0
64216
+ }
64217
+ }, [_vm._v(_vm._s(item[_vm.enhancedDescriptionKey]))]) : _vm._e()]);
64135
64218
  }), 1) : [!_vm.hiddenAllOptions ? _c('el-checkbox', {
64136
64219
  class: ['by_selected_all', {
64137
64220
  'by_border-transparent': _vm.type !== 'border'
@@ -64479,7 +64562,7 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64479
64562
  return _vm.handlePageChange(_vm.currentPage + 1);
64480
64563
  }
64481
64564
  }
64482
- }, [_vm._v(" 下一页 ")])], 1) : _vm._e()], 1)])], _vm.type !== 'select' && _vm.needExpand && !_vm.forceNoExpand ? _c('el-button', {
64565
+ }, [_vm._v(" 下一页 ")])], 1) : _vm._e()], 1)])], _vm.type !== 'select' && _vm.type !== 'enhancedSelect' && _vm.needExpand && !_vm.forceNoExpand ? _c('el-button', {
64483
64566
  staticClass: "by_openShrink",
64484
64567
  attrs: {
64485
64568
  "type": "text",
@@ -64488,7 +64571,7 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64488
64571
  on: {
64489
64572
  "click": _vm.showList
64490
64573
  }
64491
- }, [_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', {
64574
+ }, [_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', {
64492
64575
  staticClass: "by_openShrink",
64493
64576
  attrs: {
64494
64577
  "type": "text",
@@ -64496,7 +64579,7 @@ var ByCommonSelectorvue_type_template_id_1b8642c2_render = function render() {
64496
64579
  }
64497
64580
  }, [_vm._v(" 加载中... ")]) : _vm._e()], 2);
64498
64581
  };
64499
- var ByCommonSelectorvue_type_template_id_1b8642c2_staticRenderFns = [];
64582
+ var ByCommonSelectorvue_type_template_id_d3cd2662_staticRenderFns = [];
64500
64583
 
64501
64584
  ;// ./node_modules/pinyin-pro/dist/index.mjs
64502
64585
 
@@ -74789,8 +74872,10 @@ function segment(word, options) {
74789
74872
 
74790
74873
 
74791
74874
 
74875
+
74792
74876
  //拼音库,用于搜索栏生成A~Z字母
74793
74877
 
74878
+
74794
74879
  // 全部选项可能的名称
74795
74880
  const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'all'];
74796
74881
  /* harmony default export */ var ByCommonSelectorvue_type_script_lang_js = ({
@@ -74804,7 +74889,11 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74804
74889
  default: ''
74805
74890
  },
74806
74891
  /**
74807
- * 选择器类型 border | checkbox | select(default)
74892
+ * 选择器类型
74893
+ * border
74894
+ * checkbox
74895
+ * select (默认)
74896
+ * enhancedSelect
74808
74897
  */
74809
74898
  type: {
74810
74899
  type: String,
@@ -74845,7 +74934,12 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74845
74934
  */
74846
74935
  placeholder: {
74847
74936
  type: String,
74848
- default: '请选择'
74937
+ default() {
74938
+ if (this.type === 'enhancedSelect') {
74939
+ return '请输入用户名,手机号搜索';
74940
+ }
74941
+ return '请选择';
74942
+ }
74849
74943
  },
74850
74944
  /**
74851
74945
  * 选择器大小
@@ -74893,7 +74987,7 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74893
74987
  type: Boolean,
74894
74988
  default: false
74895
74989
  },
74896
- // ***************** 后置输入框相关
74990
+ // ********************************** 后置输入框相关 **********************************
74897
74991
  /**
74898
74992
  * 是否显示后置输入框
74899
74993
  */
@@ -74950,6 +75044,61 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74950
75044
  suffixBatchInputPopoverWidth: {
74951
75045
  type: [String, Number],
74952
75046
  default: '300'
75047
+ },
75048
+ // ********************************** 增强下拉选择器相关 **********************************
75049
+ /**
75050
+ * 增强下拉选择器中,所有选项数据
75051
+ * @description 该属性是用于默认回显时查找数据,并非用于展示下拉选项
75052
+ * 必填,否则会影响默认回显
75053
+ */
75054
+ enhancedAllOptions: {
75055
+ type: Array,
75056
+ default: () => []
75057
+ },
75058
+ /**
75059
+ * 增强下拉选择器中,选项的title字段
75060
+ */
75061
+ enhancedTitleKey: {
75062
+ type: String,
75063
+ default: 'name'
75064
+ },
75065
+ /**
75066
+ * 增强下拉选择器中,选项的description字段
75067
+ */
75068
+ enhancedDescriptionKey: {
75069
+ type: String,
75070
+ default: 'mobile'
75071
+ },
75072
+ /**
75073
+ * 增强下拉选择器中,选项的禁用字段名(置灰的字段)
75074
+ */
75075
+ enhancedDisabledKey: {
75076
+ type: String,
75077
+ default: 'status'
75078
+ },
75079
+ /**
75080
+ * 增强下拉选择器中,选项的description字段是否显示
75081
+ * true: 显示 标题 + 描述 (如: 何其灿 13063048088)
75082
+ * false: 只显示 标题
75083
+ */
75084
+ enhancedDescriptionDisplay: {
75085
+ type: Boolean,
75086
+ default: true
75087
+ },
75088
+ /**
75089
+ * 增强下拉选择器中,多选时是否折叠标签
75090
+ */
75091
+ enhancedCollapseTags: {
75092
+ type: Boolean,
75093
+ default: false
75094
+ },
75095
+ /**
75096
+ * 增强下拉选择器中,禁用的值是否可选
75097
+ * 是:禁用只是置灰,依然可选; 否:置灰并不可选中
75098
+ */
75099
+ enhancedDisabledCanSelect: {
75100
+ type: Boolean,
75101
+ default: false
74953
75102
  }
74954
75103
  },
74955
75104
  data() {
@@ -74982,7 +75131,15 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74982
75131
 
74983
75132
  popoverVisible: false,
74984
75133
  // 批量输入按钮的弹窗是否显示
74985
- batchInputContent: '' // 批量输入的内容
75134
+ batchInputContent: '',
75135
+ // 批量输入的内容
75136
+
75137
+ // enhancedSelect 相关数据
75138
+ allData: new Map(),
75139
+ // 缓存所有数据
75140
+ enhancedSelectOpened: false,
75141
+ // 标记 enhancedSelect 是否已经打开过
75142
+ enhancedDisabled: false
74986
75143
  };
74987
75144
  },
74988
75145
  computed: {
@@ -74994,10 +75151,43 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
74994
75151
  },
74995
75152
  optionsList() {
74996
75153
  return this.dataList;
75154
+ },
75155
+ enhancedDataList() {
75156
+ if (this.type !== 'enhancedSelect') {
75157
+ return this.dataList;
75158
+ }
75159
+
75160
+ // 只有在未打开过的情况下,如果有默认值且 dataList 为空,则从 enhancedAllOptions 中查找默认选项
75161
+ if (!this.enhancedSelectOpened && this.value !== undefined && this.value !== null && this.value !== '' && this.dataList.length === 0) {
75162
+ if (this.multiple) {
75163
+ // 多选情况:value 是数组
75164
+ if (Array.isArray(this.value) && this.value.length > 0) {
75165
+ const defaultItems = this.enhancedAllOptions.filter(option => this.value.some(val => isValueEqual(val, option.id)));
75166
+ return defaultItems;
75167
+ }
75168
+ } else {
75169
+ // 单选情况:value 是单个值
75170
+ if (this.value !== '') {
75171
+ const defaultItem = this.enhancedAllOptions.find(option => isValueEqual(this.value, option.id));
75172
+ return defaultItem ? [defaultItem] : [];
75173
+ }
75174
+ }
75175
+ }
75176
+ return this.dataList;
74997
75177
  }
74998
75178
  },
74999
75179
  watch: {
75000
75180
  value(value) {
75181
+ if (this.type === 'enhancedSelect') {
75182
+ this.selectedValue = value;
75183
+ // 如果数据已经加载,立即处理默认值
75184
+ if (this.allData.size > 0) {
75185
+ this.$nextTick(() => {
75186
+ this.handleEnhancedSelectDefaultValue();
75187
+ });
75188
+ }
75189
+ return;
75190
+ }
75001
75191
  if (this.type === 'select') {
75002
75192
  this.selectedValue = value;
75003
75193
 
@@ -75023,6 +75213,25 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75023
75213
  },
75024
75214
  options: {
75025
75215
  handler(newOptions, oldOptions) {
75216
+ // enhancedSelect 类型的特殊处理
75217
+ if (this.type === 'enhancedSelect') {
75218
+ this.dataList = newOptions;
75219
+ // 更新缓存
75220
+ this.allData.clear();
75221
+ newOptions.forEach(item => {
75222
+ this.allData.set(item.id, item);
75223
+ });
75224
+ // 数据更新后,自动关闭加载状态
75225
+ this.loading = false;
75226
+
75227
+ // 数据加载完成后,重新处理默认值
75228
+ this.$nextTick(() => {
75229
+ this.handleEnhancedSelectDefaultValue();
75230
+ });
75231
+ return;
75232
+ }
75233
+
75234
+ // 其他类型的处理
75026
75235
  if (!this.loadOptions) {
75027
75236
  this.localOptions = [...this.options];
75028
75237
 
@@ -75067,6 +75276,25 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75067
75276
  if (val !== this.localSuffixInputValue) {
75068
75277
  this.localSuffixInputValue = val;
75069
75278
  }
75279
+ },
75280
+ enhancedAllOptions: {
75281
+ handler(newOptions) {
75282
+ if (this.type === 'enhancedSelect') {
75283
+ this.enhancedDisabled = true;
75284
+ // 验证 enhancedAllOptions 是否已加载
75285
+ if (!newOptions || newOptions.length === 0) {
75286
+ // console.warn('[ByCommonSelector] enhancedSelect 类型需要提供 enhancedAllOptions 属性用于默认值回显')
75287
+ return;
75288
+ }
75289
+
75290
+ // 当 enhancedAllOptions 加载完成后,重新处理默认值
75291
+ this.$nextTick(() => {
75292
+ this.handleEnhancedSelectDefaultValue();
75293
+ this.enhancedDisabled = false;
75294
+ });
75295
+ }
75296
+ },
75297
+ immediate: true
75070
75298
  }
75071
75299
  },
75072
75300
  created() {
@@ -75159,7 +75387,7 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75159
75387
  // 检查是否需要展开按钮
75160
75388
  checkNeedExpand() {
75161
75389
  var _this$$el;
75162
- if (this.type === 'select' || this.forceNoExpand) {
75390
+ if (this.type === 'select' || this.type === 'enhancedSelect' || this.forceNoExpand) {
75163
75391
  this.needExpand = false;
75164
75392
  return;
75165
75393
  }
@@ -75255,6 +75483,16 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75255
75483
  }
75256
75484
  },
75257
75485
  initData() {
75486
+ // enhancedSelect 类型的特殊处理
75487
+ if (this.type === 'enhancedSelect') {
75488
+ this.dataList = this.options;
75489
+ this.selectedValue = this.value;
75490
+ // 缓存所有数据
75491
+ this.options.forEach(item => {
75492
+ this.allData.set(item.id, item);
75493
+ });
75494
+ return;
75495
+ }
75258
75496
  this.dataList = [...this.localOptions];
75259
75497
  this.buildLatterList();
75260
75498
  // 修复:使用严格比较,避免0值被误判为空
@@ -75313,7 +75551,7 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75313
75551
  },
75314
75552
  // 构建A~Z字母列表
75315
75553
  buildLatterList() {
75316
- if (this.type === 'select') {
75554
+ if (this.type === 'select' || this.type === 'enhancedSelect') {
75317
75555
  this.dataList = [...this.localOptions];
75318
75556
  } else {
75319
75557
  // 如果启用了showSearchBar,确保每个选项都有initial字段
@@ -75405,7 +75643,44 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75405
75643
  this.handlePageChange(1);
75406
75644
  },
75407
75645
  selected(value) {
75408
- // 在多选模式下,value是数组;在单选模式下,确保使用selectedValue而不是布尔值
75646
+ // enhancedSelect 类型的特殊处理
75647
+ if (this.type === 'enhancedSelect') {
75648
+ let obj = null;
75649
+ if (this.multiple) {
75650
+ obj = [];
75651
+ // 修复:优先从 enhancedAllOptions 中查找,确保多选时能正确获取对象数组
75652
+ if (Array.isArray(value) && value.length > 0) {
75653
+ // 从 enhancedAllOptions 中查找所有匹配的选项
75654
+ const items = this.enhancedAllOptions.filter(option => value.some(val => isValueEqual(val, option.id)));
75655
+ obj = items;
75656
+ }
75657
+ } else {
75658
+ obj = {};
75659
+ if (value !== undefined && value !== null && value !== '') {
75660
+ // 优先从 enhancedAllOptions 中查找
75661
+ const item = this.enhancedAllOptions.find(option => isValueEqual(value, option.id));
75662
+ if (item) {
75663
+ obj[this.enhancedDescriptionKey] = item[this.enhancedDescriptionKey];
75664
+ obj[this.enhancedTitleKey] = item[this.enhancedTitleKey];
75665
+ obj.id = item.id;
75666
+ } else {
75667
+ // 如果从 enhancedAllOptions 中找不到,再从 dataList 中查找
75668
+ this.dataList.forEach(item => {
75669
+ if (isValueEqual(value, item.id)) {
75670
+ obj[this.enhancedDescriptionKey] = item[this.enhancedDescriptionKey];
75671
+ obj[this.enhancedTitleKey] = item[this.enhancedTitleKey];
75672
+ obj.id = item.id;
75673
+ }
75674
+ });
75675
+ }
75676
+ } else {
75677
+ obj = null;
75678
+ }
75679
+ }
75680
+ this.$emit('input', value);
75681
+ this.$emit('change', obj);
75682
+ return;
75683
+ }
75409
75684
  if (this.multiple) {
75410
75685
  if (Array.isArray(value)) {
75411
75686
  this.selectedValue = value.filter(v => typeof v !== 'boolean');
@@ -75481,13 +75756,56 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75481
75756
  }
75482
75757
  },
75483
75758
  emitChange(value) {
75484
- // console.log('001:触发了-emitChange ==:', value)
75485
75759
  this.$emit('input', value);
75486
75760
  },
75487
75761
  handleSuffixInputChange(value) {
75488
75762
  this.localSuffixInputValue = value;
75489
75763
  this.$emit('suffix-input-change', value);
75490
75764
  this.$emit('update:suffixInputValue', value);
75765
+ },
75766
+ // ******************** enhancedSelect 相关方法 ********************
75767
+
75768
+ getResult(q) {
75769
+ this.loading = true;
75770
+ this.$emit('search', q);
75771
+ return Promise.resolve();
75772
+ },
75773
+ // 处理 enhancedSelect 类型的默认值
75774
+ handleEnhancedSelectDefaultValue() {
75775
+ if (this.value !== undefined && this.value !== null && this.value !== '' && this.enhancedAllOptions && this.enhancedAllOptions.length > 0) {
75776
+ // 确保默认值能正确显示
75777
+ this.selectedValue = this.value;
75778
+ if (this.multiple) {
75779
+ if (Array.isArray(this.value) && this.value.length > 0) {
75780
+ const items = this.enhancedAllOptions.filter(option => this.value.some(val => isValueEqual(val, option.id)));
75781
+ if (items.length > 0) {
75782
+ this.$emit('input', this.value);
75783
+ this.$emit('change', items);
75784
+ }
75785
+ }
75786
+ } else {
75787
+ const item = this.enhancedAllOptions.find(option => isValueEqual(this.value, option.id));
75788
+ if (item) {
75789
+ let obj = {};
75790
+ obj[this.enhancedDescriptionKey] = item[this.enhancedDescriptionKey];
75791
+ obj[this.enhancedTitleKey] = item[this.enhancedTitleKey];
75792
+ obj.id = item.id;
75793
+ this.$emit('input', this.value);
75794
+ this.$emit('change', obj);
75795
+ }
75796
+ }
75797
+ }
75798
+ },
75799
+ handleVisibleChange(visible) {
75800
+ if (this.type === 'enhancedSelect') {
75801
+ if (visible) {
75802
+ // 标记已经打开过
75803
+ this.enhancedSelectOpened = true;
75804
+ // 当下拉框打开时,清空搜索结果
75805
+ this.dataList = [];
75806
+ this.$emit('search', ''); // 触发清空搜索
75807
+ }
75808
+ }
75491
75809
  }
75492
75810
  }
75493
75811
  });
@@ -75503,8 +75821,8 @@ const allOptionsNames = ['全部', '全选', '所有', '全部选项', 'All', 'a
75503
75821
  ;
75504
75822
  var ByCommonSelector_component = normalizeComponent(
75505
75823
  common_selector_ByCommonSelectorvue_type_script_lang_js,
75506
- ByCommonSelectorvue_type_template_id_1b8642c2_render,
75507
- ByCommonSelectorvue_type_template_id_1b8642c2_staticRenderFns,
75824
+ ByCommonSelectorvue_type_template_id_d3cd2662_render,
75825
+ ByCommonSelectorvue_type_template_id_d3cd2662_staticRenderFns,
75508
75826
  false,
75509
75827
  null,
75510
75828
  null,
@@ -76443,15 +76761,22 @@ var BatchQuerySelector_component = normalizeComponent(
76443
76761
  ...event,
76444
76762
  item
76445
76763
  });
76764
+ },
76765
+ // 增强选择器搜索事件处理
76766
+ handleEnhancedSearch(query, item) {
76767
+ this.$emit('enhanced-search', {
76768
+ query,
76769
+ item
76770
+ });
76446
76771
  }
76447
76772
  }
76448
76773
  });
76449
76774
  ;// ./src/components/form/form.vue?vue&type=script&lang=js
76450
76775
  /* harmony default export */ var form_formvue_type_script_lang_js = (formvue_type_script_lang_js);
76451
- ;// ./node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-64.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.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-64.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.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
76776
+ ;// ./node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-64.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.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-64.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.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
76452
76777
  // extracted by mini-css-extract-plugin
76453
76778
 
76454
- ;// ./src/components/form/form.vue?vue&type=style&index=0&id=5e8c5b90&prod&lang=scss&scoped=true
76779
+ ;// ./src/components/form/form.vue?vue&type=style&index=0&id=acf332a6&prod&lang=scss&scoped=true
76455
76780
 
76456
76781
  ;// ./src/components/form/form.vue
76457
76782
 
@@ -76464,11 +76789,11 @@ var BatchQuerySelector_component = normalizeComponent(
76464
76789
 
76465
76790
  var form_component = normalizeComponent(
76466
76791
  form_formvue_type_script_lang_js,
76467
- formvue_type_template_id_5e8c5b90_scoped_true_render,
76468
- formvue_type_template_id_5e8c5b90_scoped_true_staticRenderFns,
76792
+ formvue_type_template_id_acf332a6_scoped_true_render,
76793
+ formvue_type_template_id_acf332a6_scoped_true_staticRenderFns,
76469
76794
  false,
76470
76795
  null,
76471
- "5e8c5b90",
76796
+ "acf332a6",
76472
76797
  null
76473
76798
 
76474
76799
  )