@weitutech/by-components 1.1.40 → 1.1.42

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.
@@ -60752,8 +60752,8 @@ var component = normalizeComponent(
60752
60752
  )
60753
60753
 
60754
60754
  /* harmony default export */ var pager = (component.exports);
60755
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/table/index.vue?vue&type=template&id=4a0e3fc6
60756
- var tablevue_type_template_id_4a0e3fc6_render = function render() {
60755
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/table/index.vue?vue&type=template&id=70989b5a
60756
+ var tablevue_type_template_id_70989b5a_render = function render() {
60757
60757
  var _vm = this,
60758
60758
  _c = _vm._self._c;
60759
60759
  return _c('div', [_c('vxe-grid', _vm._g(_vm._b({
@@ -60826,7 +60826,7 @@ var tablevue_type_template_id_4a0e3fc6_render = function render() {
60826
60826
  }
60827
60827
  }) : _vm._e()], 1);
60828
60828
  };
60829
- var tablevue_type_template_id_4a0e3fc6_staticRenderFns = [];
60829
+ var tablevue_type_template_id_70989b5a_staticRenderFns = [];
60830
60830
 
60831
60831
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
60832
60832
  var es_array_push = __webpack_require__(4114);
@@ -60846,8 +60846,8 @@ var es_set_is_superset_of_v2 = __webpack_require__(2475);
60846
60846
  var es_set_symmetric_difference_v2 = __webpack_require__(5024);
60847
60847
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js
60848
60848
  var es_set_union_v2 = __webpack_require__(1698);
60849
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/custom-column/index.vue?vue&type=template&id=1e67094e
60850
- var custom_columnvue_type_template_id_1e67094e_render = function render() {
60849
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/custom-column/index.vue?vue&type=template&id=7378a3b0
60850
+ var custom_columnvue_type_template_id_7378a3b0_render = function render() {
60851
60851
  var _vm = this,
60852
60852
  _c = _vm._self._c;
60853
60853
  return _c('div', {
@@ -61015,7 +61015,12 @@ var custom_columnvue_type_template_id_1e67094e_render = function render() {
61015
61015
  },
61016
61016
  expression: "draggableMenu"
61017
61017
  }
61018
- }, [_c('transition-group', _vm._l(_vm.draggableMenu, function (col) {
61018
+ }, [_c('transition-group', {
61019
+ attrs: {
61020
+ "name": "list",
61021
+ "tag": "div"
61022
+ }
61023
+ }, _vm._l(_vm.draggableMenu, function (col) {
61019
61024
  return _c('div', {
61020
61025
  directives: [{
61021
61026
  name: "show",
@@ -61025,11 +61030,15 @@ var custom_columnvue_type_template_id_1e67094e_render = function render() {
61025
61030
  }],
61026
61031
  key: col.key,
61027
61032
  class: col.key === 'sort-cut-off' ? 'fixedClass' : 'drag_li_box'
61028
- }, [col.key !== 'sort-cut-off' ? _c('div', [_c('i', {
61033
+ }, [col.key !== 'sort-cut-off' ? _c('div', {
61034
+ staticClass: "drag_li_text_box"
61035
+ }, [_c('i', {
61029
61036
  staticClass: "el-icon-rank icon-box"
61030
61037
  }), _c('span', {
61031
61038
  staticClass: "drag_li_text"
61032
- }, [_vm._v(_vm._s(col.label))])]) : _vm._e(), col.key !== 'sort-cut-off' ? _c('i', {
61039
+ }, [_vm._v(_vm._s(col.label))])]) : _vm._e(), col.key !== 'sort-cut-off' && col.parent ? _c('span', {
61040
+ staticClass: "parent-label"
61041
+ }, [_vm._v(" " + _vm._s(col.parent && col.parent.label ? col.parent.label : '') + " ")]) : _vm._e(), col.key !== 'sort-cut-off' ? _c('i', {
61033
61042
  staticClass: "el-icon-close remove",
61034
61043
  on: {
61035
61044
  "click": function ($event) {
@@ -61039,12 +61048,14 @@ var custom_columnvue_type_template_id_1e67094e_render = function render() {
61039
61048
  }) : _vm._e()]);
61040
61049
  }), 0)], 1)], 1)], 1)])])])], 1);
61041
61050
  };
61042
- var custom_columnvue_type_template_id_1e67094e_staticRenderFns = [];
61051
+ var custom_columnvue_type_template_id_7378a3b0_staticRenderFns = [];
61043
61052
 
61044
61053
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
61045
61054
  var es_iterator_filter = __webpack_require__(2489);
61046
61055
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js
61047
61056
  var es_iterator_find = __webpack_require__(116);
61057
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js
61058
+ var es_iterator_flat_map = __webpack_require__(531);
61048
61059
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js
61049
61060
  var es_iterator_map = __webpack_require__(1701);
61050
61061
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js
@@ -61096,6 +61107,7 @@ const deepClone = target => {
61096
61107
 
61097
61108
 
61098
61109
 
61110
+
61099
61111
  /* harmony default export */ var custom_columnvue_type_script_lang_js = ({
61100
61112
  name: 'CustomColumn',
61101
61113
  components: {
@@ -61129,7 +61141,9 @@ const deepClone = target => {
61129
61141
  /** 表格列接口路径 */
61130
61142
  page: '',
61131
61143
  /** 搜索字段 */
61132
- search: ''
61144
+ search: '',
61145
+ /** 原始列数据备份 */
61146
+ columnList: []
61133
61147
  };
61134
61148
  },
61135
61149
  computed: {
@@ -61181,62 +61195,72 @@ const deepClone = target => {
61181
61195
  * @param { object[] } bePreservedColumn 被保存过的列数据
61182
61196
  */
61183
61197
  initTableList(initColumn, bePreservedColumn = []) {
61198
+ //设置拖拽列表数据
61184
61199
  const setDraggableMenu = arr => {
61185
- const cols = [];
61186
- arr.forEach(item => cols.push(...item.data));
61187
- cols.sort((a, b) => a.sort - b.sort);
61188
- if (cols.some(item => item.fixed)) {
61189
- let cutOffIndex = 0;
61190
- for (let index = 0; index <= cols.length; index++) {
61191
- const col = cols[index];
61192
- const nextCol = cols[index + 1];
61193
- if (col.fixed === 'left' && (!nextCol || !nextCol.fixed)) {
61194
- cutOffIndex = index + 1;
61195
- break;
61196
- }
61197
- }
61198
- cols.splice(cutOffIndex, 0, {
61199
- type: true,
61200
- label: '',
61201
- key: 'sort-cut-off',
61202
- parent: ''
61203
- });
61204
- }
61205
- return cols;
61200
+ // 扁平化所有列并按 fixed 属性分类排序
61201
+ const allColumns = arr.flatMap(item => item.data);
61202
+ const fixedCols = allColumns.filter(col => col.fixed === 'left').sort((a, b) => a.sort - b.sort);
61203
+ const normalCols = allColumns.filter(col => col.fixed !== 'left').sort((a, b) => a.sort - b.sort);
61204
+
61205
+ // 创建分割列
61206
+ const separator = {
61207
+ type: true,
61208
+ label: '',
61209
+ key: 'sort-cut-off',
61210
+ fixed: fixedCols.length > 0 ? 'left' : undefined,
61211
+ parent: ''
61212
+ };
61213
+
61214
+ // 根据是否有固定列决定分割列位置
61215
+ return fixedCols.length > 0 ? [...fixedCols, separator, ...normalCols] : [separator, ...normalCols];
61206
61216
  };
61207
61217
  if (bePreservedColumn && bePreservedColumn.length > 0) {
61208
61218
  // 需要处理被保存过的进行回显
61209
61219
  initColumn.forEach(cols => {
61210
61220
  cols.data.forEach(col => {
61211
61221
  const beSaveCol = bePreservedColumn.find(item => item.key === col.key) || {};
61212
- col.type = ['true', true, '1', 1].includes(beSaveCol.type); //这里由于不同项目,接口有的返回“1”,有的返回true
61222
+ col.type = ['true', true, '1', 1].includes(beSaveCol.type); //这里由于不同项目,接口有的返回"1",有的返回true
61213
61223
  col.sort = beSaveCol.sort;
61214
- col.fixed = beSaveCol.fixed ? beSaveCol.fixed : col.fixed, col.parent = {
61224
+ // 设置 fixed parent 属性
61225
+ col.fixed = beSaveCol.fixed; //回显上次保存过的结果
61226
+ col.parent = {
61215
61227
  label: cols.label
61216
61228
  };
61217
61229
  });
61218
61230
  });
61219
- // 需要显示的列的数据
61231
+
61232
+ // 保持原有的列结构,不重新分组
61220
61233
  this.checkBoxMenu = this.deepClone(initColumn);
61221
61234
  this.draggableMenu = setDraggableMenu(this.checkBoxMenu);
61222
61235
  } else {
61236
+ console.log('==========从未被保存过', initColumn);
61237
+
61223
61238
  // 从未被保存过
61224
61239
  let num = 0;
61225
61240
  initColumn.forEach(cols => {
61226
61241
  cols.data.forEach(col => {
61227
61242
  num++;
61228
61243
  col.type = true;
61229
- col.width = col.width ? +col.width : 0, col.sort = num;
61244
+ col.width = col.width ? +col.width : 0;
61245
+ col.sort = num;
61246
+ // 设置 fixed 和 parent 属性
61247
+ col.fixed = cols.fixed;
61230
61248
  col.parent = {
61231
61249
  label: cols.label
61232
61250
  };
61233
61251
  });
61234
61252
  });
61253
+
61254
+ // 保持原有的列结构,不重新分组
61235
61255
  this.checkBoxMenu = this.deepClone(initColumn);
61236
61256
  this.draggableMenu = setDraggableMenu(this.checkBoxMenu);
61237
61257
  }
61238
61258
  this.$emit('changeTable', this.draggableMenu.filter(item => item.key !== 'sort-cut-off').sort((a, b) => a.sort - b.sort));
61239
- this.$emit('changeTableGroup', this.checkBoxMenu);
61259
+
61260
+ // changeTableGroup 回调:对固定列进行重新分组
61261
+ const groupedColumns = this.createGroupedColumnsForTable(this.checkBoxMenu);
61262
+ this.$emit('changeTableGroup', groupedColumns);
61263
+ // this.$emit('changeTableGroup', this.checkBoxMenu)
61240
61264
  },
61241
61265
  // 全不选
61242
61266
  selectNone() {
@@ -61289,9 +61313,11 @@ const deepClone = target => {
61289
61313
  let isFixed = true;
61290
61314
  this.draggableMenu.forEach((item, index) => {
61291
61315
  if (item.key === 'sort-cut-off') {
61316
+ // 分割列本身保持固定属性
61317
+ item.fixed = 'left';
61318
+ item.sort = index + 1;
61292
61319
  isFixed = false;
61293
- }
61294
- if (isFixed) {
61320
+ } else if (isFixed) {
61295
61321
  item.sort = index + 1;
61296
61322
  item.fixed = 'left';
61297
61323
  } else {
@@ -61307,6 +61333,8 @@ const deepClone = target => {
61307
61333
  id: this.id,
61308
61334
  page: this.page
61309
61335
  };
61336
+
61337
+ // 处理普通的列分组(按原有的 parent.label 分组)
61310
61338
  this.draggableMenu.forEach(item => {
61311
61339
  if (item.key !== 'sort-cut-off') {
61312
61340
  const {
@@ -61330,14 +61358,60 @@ const deepClone = target => {
61330
61358
  }
61331
61359
  });
61332
61360
  await this.submitMethod(params);
61361
+
61362
+ // changeTable 回调:返回正常排序的列数据
61333
61363
  const cols = [];
61334
61364
  params.column.forEach(item => {
61335
61365
  cols.push(...item.data);
61336
61366
  });
61337
61367
  this.$emit('changeTable', cols.sort((a, b) => a.sort - b.sort));
61338
- this.$emit('changeTableGroup', params.column);
61368
+
61369
+ // changeTableGroup 回调:对固定列进行重新分组
61370
+ const groupedColumns = this.createGroupedColumnsForTable(params.column);
61371
+ this.$emit('changeTableGroup', groupedColumns);
61339
61372
  this.closeDialog();
61340
61373
  },
61374
+ /**
61375
+ * 为表格创建分组列结构(将固定列按一级表头分组)
61376
+ * @param columns 原始列分组数据
61377
+ */
61378
+ createGroupedColumnsForTable(columns) {
61379
+ const fixedGroups = [];
61380
+ const normalGroups = [];
61381
+ console.log('==========columns', columns);
61382
+ columns.forEach(group => {
61383
+ const fixedItems = [];
61384
+ const normalItems = [];
61385
+ group.data.forEach(col => {
61386
+ if (col.fixed === 'left') {
61387
+ fixedItems.push(col);
61388
+ } else {
61389
+ normalItems.push(col);
61390
+ }
61391
+ });
61392
+
61393
+ // 如果有固定的列,加入固定分组
61394
+ if (fixedItems.length > 0) {
61395
+ fixedGroups.push({
61396
+ label: group.label,
61397
+ fixed: 'left',
61398
+ data: fixedItems
61399
+ });
61400
+ }
61401
+
61402
+ // 如果有普通列,加入普通分组
61403
+ if (normalItems.length > 0) {
61404
+ normalGroups.push({
61405
+ label: group.label,
61406
+ data: normalItems
61407
+ });
61408
+ }
61409
+ });
61410
+ console.log('==========result', [...fixedGroups, ...normalGroups]);
61411
+
61412
+ // 将固定分组添加到最前面
61413
+ return [...fixedGroups, ...normalGroups];
61414
+ },
61341
61415
  // 关闭弹窗
61342
61416
  closeDialog() {
61343
61417
  // 重置数据
@@ -61359,8 +61433,8 @@ const deepClone = target => {
61359
61433
  ;
61360
61434
  var custom_column_component = normalizeComponent(
61361
61435
  components_custom_columnvue_type_script_lang_js,
61362
- custom_columnvue_type_template_id_1e67094e_render,
61363
- custom_columnvue_type_template_id_1e67094e_staticRenderFns,
61436
+ custom_columnvue_type_template_id_7378a3b0_render,
61437
+ custom_columnvue_type_template_id_7378a3b0_staticRenderFns,
61364
61438
  false,
61365
61439
  null,
61366
61440
  null,
@@ -61732,7 +61806,6 @@ const recursiveSlot = (fields, slotSet) => {
61732
61806
  removeCachedTableColumns(this.name);
61733
61807
  this.setHasCache();
61734
61808
  if (this.$refs.xGrid) {
61735
- // console.log('>>>>>>>>>> 重置为 this.originColumns', this.originColumns)
61736
61809
  // 直接重新设置列配置
61737
61810
  this.$refs.xGrid.reloadColumn(this.originColumns);
61738
61811
  }
@@ -61800,6 +61873,7 @@ const recursiveSlot = (fields, slotSet) => {
61800
61873
  arr.push({
61801
61874
  title: item.label,
61802
61875
  align: 'center',
61876
+ fixed: item.fixed,
61803
61877
  children: recursiveData(item.data)
61804
61878
  });
61805
61879
  if (index < cols.length - 1) {
@@ -61807,7 +61881,8 @@ const recursiveSlot = (fields, slotSet) => {
61807
61881
  title: '',
61808
61882
  width: 5,
61809
61883
  headerClassName: 'group-split',
61810
- className: 'group-split'
61884
+ className: 'group-split',
61885
+ fixed: cols[index].fixed && cols[index + 1].fixed //左侧固定列中的分隔列
61811
61886
  });
61812
61887
  }
61813
61888
  }
@@ -61850,8 +61925,8 @@ const recursiveSlot = (fields, slotSet) => {
61850
61925
  ;
61851
61926
  var table_component = normalizeComponent(
61852
61927
  components_tablevue_type_script_lang_js,
61853
- tablevue_type_template_id_4a0e3fc6_render,
61854
- tablevue_type_template_id_4a0e3fc6_staticRenderFns,
61928
+ tablevue_type_template_id_70989b5a_render,
61929
+ tablevue_type_template_id_70989b5a_staticRenderFns,
61855
61930
  false,
61856
61931
  null,
61857
61932
  null,
@@ -61860,8 +61935,8 @@ var table_component = normalizeComponent(
61860
61935
  )
61861
61936
 
61862
61937
  /* harmony default export */ var table = (table_component.exports);
61863
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/form/form.vue?vue&type=template&id=396e0fe6&scoped=true
61864
- var formvue_type_template_id_396e0fe6_scoped_true_render = function render() {
61938
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/form/form.vue?vue&type=template&id=f2397dbe&scoped=true
61939
+ var formvue_type_template_id_f2397dbe_scoped_true_render = function render() {
61865
61940
  var _vm = this,
61866
61941
  _c = _vm._self._c;
61867
61942
  return _c('div', {
@@ -61957,11 +62032,19 @@ var formvue_type_template_id_396e0fe6_scoped_true_render = function render() {
61957
62032
  "clearable": "",
61958
62033
  "filterable": "",
61959
62034
  "size": _vm.elSize,
61960
- "options": item.options
62035
+ "options": item.options,
62036
+ "loadOptions": item.loadOptions,
62037
+ "autoLoad": item.autoLoad !== false
61961
62038
  },
61962
62039
  on: {
61963
62040
  "input": function ($event) {
61964
62041
  return _vm.handleValueChange($event, item);
62042
+ },
62043
+ "load-success": function ($event) {
62044
+ return _vm.handleSelectLoadSuccess($event, item);
62045
+ },
62046
+ "load-error": function ($event) {
62047
+ return _vm.handleSelectLoadError($event, item);
61965
62048
  }
61966
62049
  }
61967
62050
  }, 'by-select', item.otherOptions, false)), _vm._t(item.field)] : item.type === 'datepicker' ? [_c('el-date-picker', _vm._b({
@@ -62130,7 +62213,7 @@ var formvue_type_template_id_396e0fe6_scoped_true_render = function render() {
62130
62213
  staticClass: "footer"
62131
62214
  }, [_vm._t("footer")], 2)], 1);
62132
62215
  };
62133
- var formvue_type_template_id_396e0fe6_scoped_true_staticRenderFns = [];
62216
+ var formvue_type_template_id_f2397dbe_scoped_true_staticRenderFns = [];
62134
62217
 
62135
62218
  ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/form/comps/pair-number-input.vue?vue&type=template&id=3344cc16
62136
62219
  var pair_number_inputvue_type_template_id_3344cc16_render = function render() {
@@ -62606,15 +62689,29 @@ var custom_date_picker_component = normalizeComponent(
62606
62689
  this.$nextTick(() => {
62607
62690
  this.$emit('reset');
62608
62691
  });
62692
+ },
62693
+ handleSelectLoadSuccess(options, item) {
62694
+ // 选择器异步加载成功
62695
+ this.$emit('select-load-success', {
62696
+ options,
62697
+ item
62698
+ });
62699
+ },
62700
+ handleSelectLoadError(error, item) {
62701
+ // 选择器异步加载失败
62702
+ this.$emit('select-load-error', {
62703
+ error,
62704
+ item
62705
+ });
62609
62706
  }
62610
62707
  }
62611
62708
  });
62612
62709
  ;// ./src/components/form/form.vue?vue&type=script&lang=js
62613
62710
  /* harmony default export */ var form_formvue_type_script_lang_js = (formvue_type_script_lang_js);
62614
- ;// ./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=396e0fe6&prod&lang=scss&scoped=true
62711
+ ;// ./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=f2397dbe&prod&lang=scss&scoped=true
62615
62712
  // extracted by mini-css-extract-plugin
62616
62713
 
62617
- ;// ./src/components/form/form.vue?vue&type=style&index=0&id=396e0fe6&prod&lang=scss&scoped=true
62714
+ ;// ./src/components/form/form.vue?vue&type=style&index=0&id=f2397dbe&prod&lang=scss&scoped=true
62618
62715
 
62619
62716
  ;// ./src/components/form/form.vue
62620
62717
 
@@ -62627,11 +62724,11 @@ var custom_date_picker_component = normalizeComponent(
62627
62724
 
62628
62725
  var form_component = normalizeComponent(
62629
62726
  form_formvue_type_script_lang_js,
62630
- formvue_type_template_id_396e0fe6_scoped_true_render,
62631
- formvue_type_template_id_396e0fe6_scoped_true_staticRenderFns,
62727
+ formvue_type_template_id_f2397dbe_scoped_true_render,
62728
+ formvue_type_template_id_f2397dbe_scoped_true_staticRenderFns,
62632
62729
  false,
62633
62730
  null,
62634
- "396e0fe6",
62731
+ "f2397dbe",
62635
62732
  null
62636
62733
 
62637
62734
  )
@@ -62883,15 +62980,16 @@ var fold_search_component = normalizeComponent(
62883
62980
  )
62884
62981
 
62885
62982
  /* harmony default export */ var fold_search = (fold_search_component.exports);
62886
- ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/form/comps/select.vue?vue&type=template&id=7483aaeb
62887
- var selectvue_type_template_id_7483aaeb_render = function render() {
62983
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"72942c6c-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/form/comps/select.vue?vue&type=template&id=2ee8e5b9
62984
+ var selectvue_type_template_id_2ee8e5b9_render = function render() {
62888
62985
  var _vm = this,
62889
62986
  _c = _vm._self._c;
62890
62987
  return _c('el-select', _vm._b({
62891
62988
  ref: "selection",
62892
62989
  attrs: {
62893
62990
  "value": _vm.value,
62894
- "placeholder": _vm.config && _vm.config.placeholder || '请选择'
62991
+ "placeholder": _vm.config && _vm.config.placeholder || '请选择',
62992
+ "loading": _vm.loading
62895
62993
  },
62896
62994
  on: {
62897
62995
  "change": _vm.change,
@@ -62926,7 +63024,7 @@ var selectvue_type_template_id_7483aaeb_render = function render() {
62926
63024
  });
62927
63025
  })], 2);
62928
63026
  };
62929
- var selectvue_type_template_id_7483aaeb_staticRenderFns = [];
63027
+ var selectvue_type_template_id_2ee8e5b9_staticRenderFns = [];
62930
63028
 
62931
63029
  // EXTERNAL MODULE: ./node_modules/element-ui/lib/element-ui.common.js
62932
63030
  var element_ui_common = __webpack_require__(3421);
@@ -62953,6 +63051,16 @@ var element_ui_common = __webpack_require__(3421);
62953
63051
  return [];
62954
63052
  }
62955
63053
  },
63054
+ // 异步加载选项函数
63055
+ loadOptions: {
63056
+ type: Function,
63057
+ default: null
63058
+ },
63059
+ // 是否自动加载(当组件挂载时)
63060
+ autoLoad: {
63061
+ type: Boolean,
63062
+ default: true
63063
+ },
62956
63064
  //当前配置
62957
63065
  config: {
62958
63066
  type: Object,
@@ -62962,19 +63070,55 @@ var element_ui_common = __webpack_require__(3421);
62962
63070
  data() {
62963
63071
  return {
62964
63072
  searchVal: '',
62965
- filterData: []
63073
+ filterData: [],
63074
+ loading: false,
63075
+ asyncOptions: []
62966
63076
  };
62967
63077
  },
62968
63078
  watch: {
62969
63079
  options: {
62970
63080
  handler() {
62971
- this.filterData = this.options;
63081
+ // 如果有 loadOptions,优先使用异步数据,否则使用 options
63082
+ this.filterData = this.loadOptions ? this.asyncOptions : this.options;
62972
63083
  },
62973
63084
  deep: true,
62974
63085
  immediate: true
63086
+ },
63087
+ asyncOptions: {
63088
+ handler() {
63089
+ this.filterData = this.asyncOptions;
63090
+ },
63091
+ deep: true
63092
+ }
63093
+ },
63094
+ async mounted() {
63095
+ // 如果有 loadOptions 且需要自动加载,则在组件挂载时加载数据
63096
+ if (this.loadOptions && this.autoLoad) {
63097
+ await this.loadAsyncOptions();
62975
63098
  }
62976
63099
  },
62977
63100
  methods: {
63101
+ // 异步加载选项数据
63102
+ async loadAsyncOptions() {
63103
+ if (!this.loadOptions) return;
63104
+ try {
63105
+ this.loading = true;
63106
+ const result = await this.loadOptions();
63107
+
63108
+ // 支持直接返回数组或返回包含 data 属性的对象
63109
+ this.asyncOptions = Array.isArray(result) ? result : result.data || [];
63110
+ this.$emit('load-success', this.asyncOptions);
63111
+ } catch (error) {
63112
+ console.error('加载选项数据失败:', error);
63113
+ this.$emit('load-error', error);
63114
+ } finally {
63115
+ this.loading = false;
63116
+ }
63117
+ },
63118
+ // 手动刷新数据
63119
+ async refresh() {
63120
+ await this.loadAsyncOptions();
63121
+ },
62978
63122
  change(e) {
62979
63123
  this.$emit('change', arguments.length === 1 ? e : arguments);
62980
63124
  this.$emit('input', e);
@@ -62985,6 +63129,11 @@ var element_ui_common = __webpack_require__(3421);
62985
63129
  },
62986
63130
  visibleChange(e) {
62987
63131
  this.$emit('visible-change', arguments.length === 1 ? e : arguments);
63132
+
63133
+ // 如果是展开且有 loadOptions,可以重新加载数据(可选功能)
63134
+ if (e && this.loadOptions && this.config.refreshOnOpen) {
63135
+ this.loadAsyncOptions();
63136
+ }
62988
63137
  },
62989
63138
  removeTag(e) {
62990
63139
  this.$emit('remove-tag', arguments.length === 1 ? e : arguments);
@@ -63006,14 +63155,15 @@ var element_ui_common = __webpack_require__(3421);
63006
63155
  searchNoReset() {
63007
63156
  // 离开时重置数据
63008
63157
  this.$refs.selection.$refs.input.blur = () => {
63009
- this.filterData = this.options;
63158
+ this.filterData = this.loadOptions ? this.asyncOptions : this.options;
63010
63159
  };
63011
63160
 
63012
63161
  // 根据数据筛选数据
63013
63162
  this.$refs.selection.$refs.input.onkeyup = () => {
63014
- this.filterData = this.options;
63163
+ this.filterData = this.loadOptions ? this.asyncOptions : this.options;
63015
63164
  this.searchVal = this.$refs.selection.$refs.input.value;
63016
- this.filterData = this.options.filter(item => item[this.config.optionLabel].indexOf(this.searchVal) !== -1);
63165
+ const sourceData = this.loadOptions ? this.asyncOptions : this.options;
63166
+ this.filterData = sourceData.filter(item => item[this.config.optionLabel].indexOf(this.searchVal) !== -1);
63017
63167
  };
63018
63168
  }
63019
63169
  }
@@ -63030,8 +63180,8 @@ var element_ui_common = __webpack_require__(3421);
63030
63180
  ;
63031
63181
  var select_component = normalizeComponent(
63032
63182
  comps_selectvue_type_script_lang_js,
63033
- selectvue_type_template_id_7483aaeb_render,
63034
- selectvue_type_template_id_7483aaeb_staticRenderFns,
63183
+ selectvue_type_template_id_2ee8e5b9_render,
63184
+ selectvue_type_template_id_2ee8e5b9_staticRenderFns,
63035
63185
  false,
63036
63186
  null,
63037
63187
  null,