@weitutech/by-components 1.1.208 → 1.1.210

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.
@@ -91060,8 +91060,8 @@ var ByCommonSelector_component = normalizeComponent(
91060
91060
  )
91061
91061
 
91062
91062
  /* harmony default export */ var ByCommonSelector = (ByCommonSelector_component.exports);
91063
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-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=6782df62
91064
- var BatchQuerySelectorvue_type_template_id_6782df62_render = function render() {
91063
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-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=240853ac
91064
+ var BatchQuerySelectorvue_type_template_id_240853ac_render = function render() {
91065
91065
  var _vm = this,
91066
91066
  _c = _vm._self._c;
91067
91067
  return _c('div', {
@@ -91121,7 +91121,7 @@ var BatchQuerySelectorvue_type_template_id_6782df62_render = function render() {
91121
91121
  attrs: {
91122
91122
  "title": String(item[_vm.aliasKey])
91123
91123
  }
91124
- }, [_vm._v(_vm._s(item[_vm.aliasKey]))]) : _vm._e()]), _vm.hasDescContent(item) ? _c('span', {
91124
+ }, [_vm._v(_vm._s('(' + item[_vm.aliasKey] + ')'))]) : _vm._e()]), _vm.hasDescContent(item) ? _c('span', {
91125
91125
  staticClass: "option-desc",
91126
91126
  attrs: {
91127
91127
  "title": String(item[_vm.descKey])
@@ -91232,7 +91232,7 @@ var BatchQuerySelectorvue_type_template_id_6782df62_render = function render() {
91232
91232
  }
91233
91233
  })])], 1) : _vm._e()], 1)]);
91234
91234
  };
91235
- var BatchQuerySelectorvue_type_template_id_6782df62_staticRenderFns = [];
91235
+ var BatchQuerySelectorvue_type_template_id_240853ac_staticRenderFns = [];
91236
91236
 
91237
91237
  ;// ./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
91238
91238
 
@@ -91850,8 +91850,8 @@ var BatchQuerySelectorvue_type_template_id_6782df62_staticRenderFns = [];
91850
91850
  ;
91851
91851
  var BatchQuerySelector_component = normalizeComponent(
91852
91852
  batch_query_selector_BatchQuerySelectorvue_type_script_lang_js,
91853
- BatchQuerySelectorvue_type_template_id_6782df62_render,
91854
- BatchQuerySelectorvue_type_template_id_6782df62_staticRenderFns,
91853
+ BatchQuerySelectorvue_type_template_id_240853ac_render,
91854
+ BatchQuerySelectorvue_type_template_id_240853ac_staticRenderFns,
91855
91855
  false,
91856
91856
  null,
91857
91857
  null,
@@ -97796,8 +97796,8 @@ var ByCardView_component = normalizeComponent(
97796
97796
  )
97797
97797
 
97798
97798
  /* harmony default export */ var ByCardView = (ByCardView_component.exports);
97799
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-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/card-selector/ByCardSelector.vue?vue&type=template&id=43f85144
97800
- var ByCardSelectorvue_type_template_id_43f85144_render = function render() {
97799
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-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/card-selector/ByCardSelector.vue?vue&type=template&id=681372fb
97800
+ var ByCardSelectorvue_type_template_id_681372fb_render = function render() {
97801
97801
  var _vm = this,
97802
97802
  _c = _vm._self._c;
97803
97803
  return _c('div', {
@@ -97933,7 +97933,7 @@ var ByCardSelectorvue_type_template_id_43f85144_render = function render() {
97933
97933
  staticClass: "el-icon-question"
97934
97934
  })])])], 1) : _vm._e()], 2);
97935
97935
  };
97936
- var ByCardSelectorvue_type_template_id_43f85144_staticRenderFns = [];
97936
+ var ByCardSelectorvue_type_template_id_681372fb_staticRenderFns = [];
97937
97937
 
97938
97938
  ;// ./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/card-selector/ByCardSelector.vue?vue&type=script&lang=js
97939
97939
 
@@ -97950,15 +97950,31 @@ const DEFAULT_OPTION_PROPS = () => ({
97950
97950
  tags: 'tags'
97951
97951
  });
97952
97952
 
97953
+ /**
97954
+ * 业务约定的字段回退:当业务方未显式配置 optionProps.label / optionProps.value,
97955
+ * 且数据项里不存在对应字段时,按下表自动回退;用于同时兼容 `label/value` 与 `id/name` 两种数据约定。
97956
+ */
97957
+ const LABEL_FALLBACK_FIELD = 'name';
97958
+ const VALUE_FALLBACK_FIELD = 'id';
97959
+
97953
97960
  /**
97954
97961
  * 卡片选择器:单选/多选 + 卡片式布局,行为类似 el-radio-group / el-checkbox-group。
97955
97962
  *
97963
+ * 字段约定:
97964
+ * - 默认字段映射为 `{ value, label, description, icon, tooltip, tags }`;
97965
+ * - 业务直接传 `[{value, label}]` 形态时按默认字段读取;
97966
+ * - 业务直接传 `[{id, name}]` 形态时(未显式配置 optionProps.label / optionProps.value),
97967
+ * 组件会自动按 label → name、value → id 进行回退;
97968
+ * - 业务通过 optionProps 显式指定了 label/value 字段名时(即便值与默认相同),按显式配置严格读取,不再触发回退。
97969
+ *
97956
97970
  * @example
97957
97971
  * <by-card-selector v-model="id" :options="list" />
97958
97972
  * <by-card-selector v-model="ids" :options="list" multiple />
97959
97973
  * <by-card-selector v-model="id" :options="list" :card-width="280" />
97960
- * <by-card-selector v-model="id" :options="list" :show-checkmark="true" />
97974
+ * <by-card-selector v-model="id" :options="list" :show-checkmark="false" />
97961
97975
  * <by-card-selector v-model="id" :options="list" tooltips="整组说明文案" />
97976
+ * <!-- 业务使用 id/name 形态时无需任何额外配置 -->
97977
+ * <by-card-selector v-model="id" :options="[{ id: 1, name: 'A' }, { id: 2, name: 'B' }]" />
97962
97978
  */
97963
97979
  /* harmony default export */ var ByCardSelectorvue_type_script_lang_js = ({
97964
97980
  name: 'ByCardSelector',
@@ -98007,7 +98023,13 @@ const DEFAULT_OPTION_PROPS = () => ({
98007
98023
  type: Boolean,
98008
98024
  default: false
98009
98025
  },
98010
- /** 选项字段映射,默认 value / label / description / icon / tooltip / tags */
98026
+ /**
98027
+ * 选项字段映射,默认 value / label / description / icon / tooltip / tags。
98028
+ * - 仅显式覆盖部分字段时,未覆盖字段保持默认;
98029
+ * - 未显式配置 label 时,组件会在数据项缺少 `label` 字段的情况下自动回退到 `name`;
98030
+ * - 未显式配置 value 时,同理回退到 `id`;
98031
+ * - 显式配置(即便值与默认相同,如 `{ label: 'label', value: 'value' }`)会关闭对应字段的自动回退。
98032
+ */
98011
98033
  optionProps: {
98012
98034
  type: Object,
98013
98035
  default: () => ({})
@@ -98035,10 +98057,10 @@ const DEFAULT_OPTION_PROPS = () => ({
98035
98057
  type: [String, Number],
98036
98058
  default: ''
98037
98059
  },
98038
- /** 是否在卡片右侧展示圆形打钩选中指示,默认不展示 */
98060
+ /** 是否在卡片右侧展示圆形打钩选中指示,默认展示;如不需要可显式设为 false */
98039
98061
  showCheckmark: {
98040
98062
  type: Boolean,
98041
- default: false
98063
+ default: true
98042
98064
  }
98043
98065
  },
98044
98066
  data() {
@@ -98053,8 +98075,21 @@ const DEFAULT_OPTION_PROPS = () => ({
98053
98075
  ...this.optionProps
98054
98076
  };
98055
98077
  },
98056
- keyField() {
98057
- return this.optionKeyField || this.mergedOptionProps.value;
98078
+ /**
98079
+ * 当业务方未显式配置 optionProps.label 时启用 label → name 回退;
98080
+ * 显式配置则关闭回退(严格使用业务方指定的字段)。
98081
+ */
98082
+ labelFallbackField() {
98083
+ if (this.optionProps && this.optionProps.label !== undefined) return '';
98084
+ return LABEL_FALLBACK_FIELD;
98085
+ },
98086
+ /**
98087
+ * 当业务方未显式配置 optionProps.value 时启用 value → id 回退;
98088
+ * 显式配置则关闭回退。
98089
+ */
98090
+ valueFallbackField() {
98091
+ if (this.optionProps && this.optionProps.value !== undefined) return '';
98092
+ return VALUE_FALLBACK_FIELD;
98058
98093
  },
98059
98094
  /** 解析后的卡片宽度(px),无效或未传时为 null */
98060
98095
  resolvedCardWidthPx() {
@@ -98121,16 +98156,32 @@ const DEFAULT_OPTION_PROPS = () => ({
98121
98156
  if (obj == null || key == null || key === '') return undefined;
98122
98157
  return obj[key];
98123
98158
  },
98159
+ /**
98160
+ * 取字段值,主键 `key` 在对象上不存在时回退到 `fallbackKey`。
98161
+ * 仅以 hasOwnProperty 判断字段「是否存在」,因此业务方有意置 null / '' 不会被覆盖。
98162
+ */
98163
+ pickWithFallback(obj, key, fallbackKey) {
98164
+ if (obj == null) return undefined;
98165
+ if (key && Object.prototype.hasOwnProperty.call(obj, key)) return obj[key];
98166
+ if (fallbackKey && Object.prototype.hasOwnProperty.call(obj, fallbackKey)) return obj[fallbackKey];
98167
+ return undefined;
98168
+ },
98124
98169
  optionKey(item, index) {
98125
- const v = this.pick(item, this.keyField);
98170
+ // 显式 optionKeyField 优先按指定字段取键;否则复用 optionValue(带 id 回退)保证 :key 在 value/id 两种约定下都稳定
98171
+ let v;
98172
+ if (this.optionKeyField) {
98173
+ v = this.pick(item, this.optionKeyField);
98174
+ } else {
98175
+ v = this.optionValue(item);
98176
+ }
98126
98177
  if (v !== undefined && v !== null) return v;
98127
98178
  return index;
98128
98179
  },
98129
98180
  optionValue(item) {
98130
- return this.pick(item, this.mergedOptionProps.value);
98181
+ return this.pickWithFallback(item, this.mergedOptionProps.value, this.valueFallbackField);
98131
98182
  },
98132
98183
  optionLabel(item) {
98133
- const v = this.pick(item, this.mergedOptionProps.label);
98184
+ const v = this.pickWithFallback(item, this.mergedOptionProps.label, this.labelFallbackField);
98134
98185
  return v != null && v !== '' ? String(v) : '';
98135
98186
  },
98136
98187
  optionDescription(item) {
@@ -98289,8 +98340,8 @@ const DEFAULT_OPTION_PROPS = () => ({
98289
98340
  ;
98290
98341
  var ByCardSelector_component = normalizeComponent(
98291
98342
  card_selector_ByCardSelectorvue_type_script_lang_js,
98292
- ByCardSelectorvue_type_template_id_43f85144_render,
98293
- ByCardSelectorvue_type_template_id_43f85144_staticRenderFns,
98343
+ ByCardSelectorvue_type_template_id_681372fb_render,
98344
+ ByCardSelectorvue_type_template_id_681372fb_staticRenderFns,
98294
98345
  false,
98295
98346
  null,
98296
98347
  null,
@@ -91070,8 +91070,8 @@ var ByCommonSelector_component = normalizeComponent(
91070
91070
  )
91071
91071
 
91072
91072
  /* harmony default export */ var ByCommonSelector = (ByCommonSelector_component.exports);
91073
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-vue-loader-template"}!./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/batch-query-selector/BatchQuerySelector.vue?vue&type=template&id=6782df62
91074
- var BatchQuerySelectorvue_type_template_id_6782df62_render = function render() {
91073
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-vue-loader-template"}!./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/batch-query-selector/BatchQuerySelector.vue?vue&type=template&id=240853ac
91074
+ var BatchQuerySelectorvue_type_template_id_240853ac_render = function render() {
91075
91075
  var _vm = this,
91076
91076
  _c = _vm._self._c;
91077
91077
  return _c('div', {
@@ -91131,7 +91131,7 @@ var BatchQuerySelectorvue_type_template_id_6782df62_render = function render() {
91131
91131
  attrs: {
91132
91132
  "title": String(item[_vm.aliasKey])
91133
91133
  }
91134
- }, [_vm._v(_vm._s(item[_vm.aliasKey]))]) : _vm._e()]), _vm.hasDescContent(item) ? _c('span', {
91134
+ }, [_vm._v(_vm._s('(' + item[_vm.aliasKey] + ')'))]) : _vm._e()]), _vm.hasDescContent(item) ? _c('span', {
91135
91135
  staticClass: "option-desc",
91136
91136
  attrs: {
91137
91137
  "title": String(item[_vm.descKey])
@@ -91242,7 +91242,7 @@ var BatchQuerySelectorvue_type_template_id_6782df62_render = function render() {
91242
91242
  }
91243
91243
  })])], 1) : _vm._e()], 1)]);
91244
91244
  };
91245
- var BatchQuerySelectorvue_type_template_id_6782df62_staticRenderFns = [];
91245
+ var BatchQuerySelectorvue_type_template_id_240853ac_staticRenderFns = [];
91246
91246
 
91247
91247
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.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
91248
91248
 
@@ -91860,8 +91860,8 @@ var BatchQuerySelectorvue_type_template_id_6782df62_staticRenderFns = [];
91860
91860
  ;
91861
91861
  var BatchQuerySelector_component = normalizeComponent(
91862
91862
  batch_query_selector_BatchQuerySelectorvue_type_script_lang_js,
91863
- BatchQuerySelectorvue_type_template_id_6782df62_render,
91864
- BatchQuerySelectorvue_type_template_id_6782df62_staticRenderFns,
91863
+ BatchQuerySelectorvue_type_template_id_240853ac_render,
91864
+ BatchQuerySelectorvue_type_template_id_240853ac_staticRenderFns,
91865
91865
  false,
91866
91866
  null,
91867
91867
  null,
@@ -97806,8 +97806,8 @@ var ByCardView_component = normalizeComponent(
97806
97806
  )
97807
97807
 
97808
97808
  /* harmony default export */ var ByCardView = (ByCardView_component.exports);
97809
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-vue-loader-template"}!./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/card-selector/ByCardSelector.vue?vue&type=template&id=43f85144
97810
- var ByCardSelectorvue_type_template_id_43f85144_render = function render() {
97809
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8cd600e8-vue-loader-template"}!./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/card-selector/ByCardSelector.vue?vue&type=template&id=681372fb
97810
+ var ByCardSelectorvue_type_template_id_681372fb_render = function render() {
97811
97811
  var _vm = this,
97812
97812
  _c = _vm._self._c;
97813
97813
  return _c('div', {
@@ -97943,7 +97943,7 @@ var ByCardSelectorvue_type_template_id_43f85144_render = function render() {
97943
97943
  staticClass: "el-icon-question"
97944
97944
  })])])], 1) : _vm._e()], 2);
97945
97945
  };
97946
- var ByCardSelectorvue_type_template_id_43f85144_staticRenderFns = [];
97946
+ var ByCardSelectorvue_type_template_id_681372fb_staticRenderFns = [];
97947
97947
 
97948
97948
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.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/card-selector/ByCardSelector.vue?vue&type=script&lang=js
97949
97949
 
@@ -97960,15 +97960,31 @@ const DEFAULT_OPTION_PROPS = () => ({
97960
97960
  tags: 'tags'
97961
97961
  });
97962
97962
 
97963
+ /**
97964
+ * 业务约定的字段回退:当业务方未显式配置 optionProps.label / optionProps.value,
97965
+ * 且数据项里不存在对应字段时,按下表自动回退;用于同时兼容 `label/value` 与 `id/name` 两种数据约定。
97966
+ */
97967
+ const LABEL_FALLBACK_FIELD = 'name';
97968
+ const VALUE_FALLBACK_FIELD = 'id';
97969
+
97963
97970
  /**
97964
97971
  * 卡片选择器:单选/多选 + 卡片式布局,行为类似 el-radio-group / el-checkbox-group。
97965
97972
  *
97973
+ * 字段约定:
97974
+ * - 默认字段映射为 `{ value, label, description, icon, tooltip, tags }`;
97975
+ * - 业务直接传 `[{value, label}]` 形态时按默认字段读取;
97976
+ * - 业务直接传 `[{id, name}]` 形态时(未显式配置 optionProps.label / optionProps.value),
97977
+ * 组件会自动按 label → name、value → id 进行回退;
97978
+ * - 业务通过 optionProps 显式指定了 label/value 字段名时(即便值与默认相同),按显式配置严格读取,不再触发回退。
97979
+ *
97966
97980
  * @example
97967
97981
  * <by-card-selector v-model="id" :options="list" />
97968
97982
  * <by-card-selector v-model="ids" :options="list" multiple />
97969
97983
  * <by-card-selector v-model="id" :options="list" :card-width="280" />
97970
- * <by-card-selector v-model="id" :options="list" :show-checkmark="true" />
97984
+ * <by-card-selector v-model="id" :options="list" :show-checkmark="false" />
97971
97985
  * <by-card-selector v-model="id" :options="list" tooltips="整组说明文案" />
97986
+ * <!-- 业务使用 id/name 形态时无需任何额外配置 -->
97987
+ * <by-card-selector v-model="id" :options="[{ id: 1, name: 'A' }, { id: 2, name: 'B' }]" />
97972
97988
  */
97973
97989
  /* harmony default export */ var ByCardSelectorvue_type_script_lang_js = ({
97974
97990
  name: 'ByCardSelector',
@@ -98017,7 +98033,13 @@ const DEFAULT_OPTION_PROPS = () => ({
98017
98033
  type: Boolean,
98018
98034
  default: false
98019
98035
  },
98020
- /** 选项字段映射,默认 value / label / description / icon / tooltip / tags */
98036
+ /**
98037
+ * 选项字段映射,默认 value / label / description / icon / tooltip / tags。
98038
+ * - 仅显式覆盖部分字段时,未覆盖字段保持默认;
98039
+ * - 未显式配置 label 时,组件会在数据项缺少 `label` 字段的情况下自动回退到 `name`;
98040
+ * - 未显式配置 value 时,同理回退到 `id`;
98041
+ * - 显式配置(即便值与默认相同,如 `{ label: 'label', value: 'value' }`)会关闭对应字段的自动回退。
98042
+ */
98021
98043
  optionProps: {
98022
98044
  type: Object,
98023
98045
  default: () => ({})
@@ -98045,10 +98067,10 @@ const DEFAULT_OPTION_PROPS = () => ({
98045
98067
  type: [String, Number],
98046
98068
  default: ''
98047
98069
  },
98048
- /** 是否在卡片右侧展示圆形打钩选中指示,默认不展示 */
98070
+ /** 是否在卡片右侧展示圆形打钩选中指示,默认展示;如不需要可显式设为 false */
98049
98071
  showCheckmark: {
98050
98072
  type: Boolean,
98051
- default: false
98073
+ default: true
98052
98074
  }
98053
98075
  },
98054
98076
  data() {
@@ -98063,8 +98085,21 @@ const DEFAULT_OPTION_PROPS = () => ({
98063
98085
  ...this.optionProps
98064
98086
  };
98065
98087
  },
98066
- keyField() {
98067
- return this.optionKeyField || this.mergedOptionProps.value;
98088
+ /**
98089
+ * 当业务方未显式配置 optionProps.label 时启用 label → name 回退;
98090
+ * 显式配置则关闭回退(严格使用业务方指定的字段)。
98091
+ */
98092
+ labelFallbackField() {
98093
+ if (this.optionProps && this.optionProps.label !== undefined) return '';
98094
+ return LABEL_FALLBACK_FIELD;
98095
+ },
98096
+ /**
98097
+ * 当业务方未显式配置 optionProps.value 时启用 value → id 回退;
98098
+ * 显式配置则关闭回退。
98099
+ */
98100
+ valueFallbackField() {
98101
+ if (this.optionProps && this.optionProps.value !== undefined) return '';
98102
+ return VALUE_FALLBACK_FIELD;
98068
98103
  },
98069
98104
  /** 解析后的卡片宽度(px),无效或未传时为 null */
98070
98105
  resolvedCardWidthPx() {
@@ -98131,16 +98166,32 @@ const DEFAULT_OPTION_PROPS = () => ({
98131
98166
  if (obj == null || key == null || key === '') return undefined;
98132
98167
  return obj[key];
98133
98168
  },
98169
+ /**
98170
+ * 取字段值,主键 `key` 在对象上不存在时回退到 `fallbackKey`。
98171
+ * 仅以 hasOwnProperty 判断字段「是否存在」,因此业务方有意置 null / '' 不会被覆盖。
98172
+ */
98173
+ pickWithFallback(obj, key, fallbackKey) {
98174
+ if (obj == null) return undefined;
98175
+ if (key && Object.prototype.hasOwnProperty.call(obj, key)) return obj[key];
98176
+ if (fallbackKey && Object.prototype.hasOwnProperty.call(obj, fallbackKey)) return obj[fallbackKey];
98177
+ return undefined;
98178
+ },
98134
98179
  optionKey(item, index) {
98135
- const v = this.pick(item, this.keyField);
98180
+ // 显式 optionKeyField 优先按指定字段取键;否则复用 optionValue(带 id 回退)保证 :key 在 value/id 两种约定下都稳定
98181
+ let v;
98182
+ if (this.optionKeyField) {
98183
+ v = this.pick(item, this.optionKeyField);
98184
+ } else {
98185
+ v = this.optionValue(item);
98186
+ }
98136
98187
  if (v !== undefined && v !== null) return v;
98137
98188
  return index;
98138
98189
  },
98139
98190
  optionValue(item) {
98140
- return this.pick(item, this.mergedOptionProps.value);
98191
+ return this.pickWithFallback(item, this.mergedOptionProps.value, this.valueFallbackField);
98141
98192
  },
98142
98193
  optionLabel(item) {
98143
- const v = this.pick(item, this.mergedOptionProps.label);
98194
+ const v = this.pickWithFallback(item, this.mergedOptionProps.label, this.labelFallbackField);
98144
98195
  return v != null && v !== '' ? String(v) : '';
98145
98196
  },
98146
98197
  optionDescription(item) {
@@ -98299,8 +98350,8 @@ const DEFAULT_OPTION_PROPS = () => ({
98299
98350
  ;
98300
98351
  var ByCardSelector_component = normalizeComponent(
98301
98352
  card_selector_ByCardSelectorvue_type_script_lang_js,
98302
- ByCardSelectorvue_type_template_id_43f85144_render,
98303
- ByCardSelectorvue_type_template_id_43f85144_staticRenderFns,
98353
+ ByCardSelectorvue_type_template_id_681372fb_render,
98354
+ ByCardSelectorvue_type_template_id_681372fb_staticRenderFns,
98304
98355
  false,
98305
98356
  null,
98306
98357
  null,