@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.
package/README.md CHANGED
@@ -55,6 +55,7 @@ npm publish --access public
55
55
  > **💡 提示**
56
56
  > 本地link调试时,需要把组件库的package.json中的main字段改为src/index.js("main": "src/index.js")
57
57
  > 调试完成后,切记改回 "main": "lib/by-components.umd.js",
58
+ > 如果组件库更新,宿主项目没有同步更新, 尝试重新编译组件库npm run build, 且清除宿主项目缓存rm -rf node_modules/.cache
58
59
 
59
60
  ### 组件文档构建
60
61
 
@@ -60742,8 +60742,8 @@ var component = normalizeComponent(
60742
60742
  )
60743
60743
 
60744
60744
  /* harmony default export */ var pager = (component.exports);
60745
- ;// ./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-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/table/index.vue?vue&type=template&id=4a0e3fc6
60746
- var tablevue_type_template_id_4a0e3fc6_render = function render() {
60745
+ ;// ./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-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/table/index.vue?vue&type=template&id=70989b5a
60746
+ var tablevue_type_template_id_70989b5a_render = function render() {
60747
60747
  var _vm = this,
60748
60748
  _c = _vm._self._c;
60749
60749
  return _c('div', [_c('vxe-grid', _vm._g(_vm._b({
@@ -60816,7 +60816,7 @@ var tablevue_type_template_id_4a0e3fc6_render = function render() {
60816
60816
  }
60817
60817
  }) : _vm._e()], 1);
60818
60818
  };
60819
- var tablevue_type_template_id_4a0e3fc6_staticRenderFns = [];
60819
+ var tablevue_type_template_id_70989b5a_staticRenderFns = [];
60820
60820
 
60821
60821
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
60822
60822
  var es_array_push = __webpack_require__(4114);
@@ -60836,8 +60836,8 @@ var es_set_is_superset_of_v2 = __webpack_require__(2475);
60836
60836
  var es_set_symmetric_difference_v2 = __webpack_require__(5024);
60837
60837
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js
60838
60838
  var es_set_union_v2 = __webpack_require__(1698);
60839
- ;// ./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-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/custom-column/index.vue?vue&type=template&id=1e67094e
60840
- var custom_columnvue_type_template_id_1e67094e_render = function render() {
60839
+ ;// ./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-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/custom-column/index.vue?vue&type=template&id=7378a3b0
60840
+ var custom_columnvue_type_template_id_7378a3b0_render = function render() {
60841
60841
  var _vm = this,
60842
60842
  _c = _vm._self._c;
60843
60843
  return _c('div', {
@@ -61005,7 +61005,12 @@ var custom_columnvue_type_template_id_1e67094e_render = function render() {
61005
61005
  },
61006
61006
  expression: "draggableMenu"
61007
61007
  }
61008
- }, [_c('transition-group', _vm._l(_vm.draggableMenu, function (col) {
61008
+ }, [_c('transition-group', {
61009
+ attrs: {
61010
+ "name": "list",
61011
+ "tag": "div"
61012
+ }
61013
+ }, _vm._l(_vm.draggableMenu, function (col) {
61009
61014
  return _c('div', {
61010
61015
  directives: [{
61011
61016
  name: "show",
@@ -61015,11 +61020,15 @@ var custom_columnvue_type_template_id_1e67094e_render = function render() {
61015
61020
  }],
61016
61021
  key: col.key,
61017
61022
  class: col.key === 'sort-cut-off' ? 'fixedClass' : 'drag_li_box'
61018
- }, [col.key !== 'sort-cut-off' ? _c('div', [_c('i', {
61023
+ }, [col.key !== 'sort-cut-off' ? _c('div', {
61024
+ staticClass: "drag_li_text_box"
61025
+ }, [_c('i', {
61019
61026
  staticClass: "el-icon-rank icon-box"
61020
61027
  }), _c('span', {
61021
61028
  staticClass: "drag_li_text"
61022
- }, [_vm._v(_vm._s(col.label))])]) : _vm._e(), col.key !== 'sort-cut-off' ? _c('i', {
61029
+ }, [_vm._v(_vm._s(col.label))])]) : _vm._e(), col.key !== 'sort-cut-off' && col.parent ? _c('span', {
61030
+ staticClass: "parent-label"
61031
+ }, [_vm._v(" " + _vm._s(col.parent && col.parent.label ? col.parent.label : '') + " ")]) : _vm._e(), col.key !== 'sort-cut-off' ? _c('i', {
61023
61032
  staticClass: "el-icon-close remove",
61024
61033
  on: {
61025
61034
  "click": function ($event) {
@@ -61029,12 +61038,14 @@ var custom_columnvue_type_template_id_1e67094e_render = function render() {
61029
61038
  }) : _vm._e()]);
61030
61039
  }), 0)], 1)], 1)], 1)])])])], 1);
61031
61040
  };
61032
- var custom_columnvue_type_template_id_1e67094e_staticRenderFns = [];
61041
+ var custom_columnvue_type_template_id_7378a3b0_staticRenderFns = [];
61033
61042
 
61034
61043
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
61035
61044
  var es_iterator_filter = __webpack_require__(2489);
61036
61045
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js
61037
61046
  var es_iterator_find = __webpack_require__(116);
61047
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js
61048
+ var es_iterator_flat_map = __webpack_require__(531);
61038
61049
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js
61039
61050
  var es_iterator_map = __webpack_require__(1701);
61040
61051
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js
@@ -61086,6 +61097,7 @@ const deepClone = target => {
61086
61097
 
61087
61098
 
61088
61099
 
61100
+
61089
61101
  /* harmony default export */ var custom_columnvue_type_script_lang_js = ({
61090
61102
  name: 'CustomColumn',
61091
61103
  components: {
@@ -61119,7 +61131,9 @@ const deepClone = target => {
61119
61131
  /** 表格列接口路径 */
61120
61132
  page: '',
61121
61133
  /** 搜索字段 */
61122
- search: ''
61134
+ search: '',
61135
+ /** 原始列数据备份 */
61136
+ columnList: []
61123
61137
  };
61124
61138
  },
61125
61139
  computed: {
@@ -61171,62 +61185,72 @@ const deepClone = target => {
61171
61185
  * @param { object[] } bePreservedColumn 被保存过的列数据
61172
61186
  */
61173
61187
  initTableList(initColumn, bePreservedColumn = []) {
61188
+ //设置拖拽列表数据
61174
61189
  const setDraggableMenu = arr => {
61175
- const cols = [];
61176
- arr.forEach(item => cols.push(...item.data));
61177
- cols.sort((a, b) => a.sort - b.sort);
61178
- if (cols.some(item => item.fixed)) {
61179
- let cutOffIndex = 0;
61180
- for (let index = 0; index <= cols.length; index++) {
61181
- const col = cols[index];
61182
- const nextCol = cols[index + 1];
61183
- if (col.fixed === 'left' && (!nextCol || !nextCol.fixed)) {
61184
- cutOffIndex = index + 1;
61185
- break;
61186
- }
61187
- }
61188
- cols.splice(cutOffIndex, 0, {
61189
- type: true,
61190
- label: '',
61191
- key: 'sort-cut-off',
61192
- parent: ''
61193
- });
61194
- }
61195
- return cols;
61190
+ // 扁平化所有列并按 fixed 属性分类排序
61191
+ const allColumns = arr.flatMap(item => item.data);
61192
+ const fixedCols = allColumns.filter(col => col.fixed === 'left').sort((a, b) => a.sort - b.sort);
61193
+ const normalCols = allColumns.filter(col => col.fixed !== 'left').sort((a, b) => a.sort - b.sort);
61194
+
61195
+ // 创建分割列
61196
+ const separator = {
61197
+ type: true,
61198
+ label: '',
61199
+ key: 'sort-cut-off',
61200
+ fixed: fixedCols.length > 0 ? 'left' : undefined,
61201
+ parent: ''
61202
+ };
61203
+
61204
+ // 根据是否有固定列决定分割列位置
61205
+ return fixedCols.length > 0 ? [...fixedCols, separator, ...normalCols] : [separator, ...normalCols];
61196
61206
  };
61197
61207
  if (bePreservedColumn && bePreservedColumn.length > 0) {
61198
61208
  // 需要处理被保存过的进行回显
61199
61209
  initColumn.forEach(cols => {
61200
61210
  cols.data.forEach(col => {
61201
61211
  const beSaveCol = bePreservedColumn.find(item => item.key === col.key) || {};
61202
- col.type = ['true', true, '1', 1].includes(beSaveCol.type); //这里由于不同项目,接口有的返回“1”,有的返回true
61212
+ col.type = ['true', true, '1', 1].includes(beSaveCol.type); //这里由于不同项目,接口有的返回"1",有的返回true
61203
61213
  col.sort = beSaveCol.sort;
61204
- col.fixed = beSaveCol.fixed ? beSaveCol.fixed : col.fixed, col.parent = {
61214
+ // 设置 fixed parent 属性
61215
+ col.fixed = beSaveCol.fixed; //回显上次保存过的结果
61216
+ col.parent = {
61205
61217
  label: cols.label
61206
61218
  };
61207
61219
  });
61208
61220
  });
61209
- // 需要显示的列的数据
61221
+
61222
+ // 保持原有的列结构,不重新分组
61210
61223
  this.checkBoxMenu = this.deepClone(initColumn);
61211
61224
  this.draggableMenu = setDraggableMenu(this.checkBoxMenu);
61212
61225
  } else {
61226
+ console.log('==========从未被保存过', initColumn);
61227
+
61213
61228
  // 从未被保存过
61214
61229
  let num = 0;
61215
61230
  initColumn.forEach(cols => {
61216
61231
  cols.data.forEach(col => {
61217
61232
  num++;
61218
61233
  col.type = true;
61219
- col.width = col.width ? +col.width : 0, col.sort = num;
61234
+ col.width = col.width ? +col.width : 0;
61235
+ col.sort = num;
61236
+ // 设置 fixed 和 parent 属性
61237
+ col.fixed = cols.fixed;
61220
61238
  col.parent = {
61221
61239
  label: cols.label
61222
61240
  };
61223
61241
  });
61224
61242
  });
61243
+
61244
+ // 保持原有的列结构,不重新分组
61225
61245
  this.checkBoxMenu = this.deepClone(initColumn);
61226
61246
  this.draggableMenu = setDraggableMenu(this.checkBoxMenu);
61227
61247
  }
61228
61248
  this.$emit('changeTable', this.draggableMenu.filter(item => item.key !== 'sort-cut-off').sort((a, b) => a.sort - b.sort));
61229
- this.$emit('changeTableGroup', this.checkBoxMenu);
61249
+
61250
+ // changeTableGroup 回调:对固定列进行重新分组
61251
+ const groupedColumns = this.createGroupedColumnsForTable(this.checkBoxMenu);
61252
+ this.$emit('changeTableGroup', groupedColumns);
61253
+ // this.$emit('changeTableGroup', this.checkBoxMenu)
61230
61254
  },
61231
61255
  // 全不选
61232
61256
  selectNone() {
@@ -61279,9 +61303,11 @@ const deepClone = target => {
61279
61303
  let isFixed = true;
61280
61304
  this.draggableMenu.forEach((item, index) => {
61281
61305
  if (item.key === 'sort-cut-off') {
61306
+ // 分割列本身保持固定属性
61307
+ item.fixed = 'left';
61308
+ item.sort = index + 1;
61282
61309
  isFixed = false;
61283
- }
61284
- if (isFixed) {
61310
+ } else if (isFixed) {
61285
61311
  item.sort = index + 1;
61286
61312
  item.fixed = 'left';
61287
61313
  } else {
@@ -61297,6 +61323,8 @@ const deepClone = target => {
61297
61323
  id: this.id,
61298
61324
  page: this.page
61299
61325
  };
61326
+
61327
+ // 处理普通的列分组(按原有的 parent.label 分组)
61300
61328
  this.draggableMenu.forEach(item => {
61301
61329
  if (item.key !== 'sort-cut-off') {
61302
61330
  const {
@@ -61320,14 +61348,60 @@ const deepClone = target => {
61320
61348
  }
61321
61349
  });
61322
61350
  await this.submitMethod(params);
61351
+
61352
+ // changeTable 回调:返回正常排序的列数据
61323
61353
  const cols = [];
61324
61354
  params.column.forEach(item => {
61325
61355
  cols.push(...item.data);
61326
61356
  });
61327
61357
  this.$emit('changeTable', cols.sort((a, b) => a.sort - b.sort));
61328
- this.$emit('changeTableGroup', params.column);
61358
+
61359
+ // changeTableGroup 回调:对固定列进行重新分组
61360
+ const groupedColumns = this.createGroupedColumnsForTable(params.column);
61361
+ this.$emit('changeTableGroup', groupedColumns);
61329
61362
  this.closeDialog();
61330
61363
  },
61364
+ /**
61365
+ * 为表格创建分组列结构(将固定列按一级表头分组)
61366
+ * @param columns 原始列分组数据
61367
+ */
61368
+ createGroupedColumnsForTable(columns) {
61369
+ const fixedGroups = [];
61370
+ const normalGroups = [];
61371
+ console.log('==========columns', columns);
61372
+ columns.forEach(group => {
61373
+ const fixedItems = [];
61374
+ const normalItems = [];
61375
+ group.data.forEach(col => {
61376
+ if (col.fixed === 'left') {
61377
+ fixedItems.push(col);
61378
+ } else {
61379
+ normalItems.push(col);
61380
+ }
61381
+ });
61382
+
61383
+ // 如果有固定的列,加入固定分组
61384
+ if (fixedItems.length > 0) {
61385
+ fixedGroups.push({
61386
+ label: group.label,
61387
+ fixed: 'left',
61388
+ data: fixedItems
61389
+ });
61390
+ }
61391
+
61392
+ // 如果有普通列,加入普通分组
61393
+ if (normalItems.length > 0) {
61394
+ normalGroups.push({
61395
+ label: group.label,
61396
+ data: normalItems
61397
+ });
61398
+ }
61399
+ });
61400
+ console.log('==========result', [...fixedGroups, ...normalGroups]);
61401
+
61402
+ // 将固定分组添加到最前面
61403
+ return [...fixedGroups, ...normalGroups];
61404
+ },
61331
61405
  // 关闭弹窗
61332
61406
  closeDialog() {
61333
61407
  // 重置数据
@@ -61349,8 +61423,8 @@ const deepClone = target => {
61349
61423
  ;
61350
61424
  var custom_column_component = normalizeComponent(
61351
61425
  components_custom_columnvue_type_script_lang_js,
61352
- custom_columnvue_type_template_id_1e67094e_render,
61353
- custom_columnvue_type_template_id_1e67094e_staticRenderFns,
61426
+ custom_columnvue_type_template_id_7378a3b0_render,
61427
+ custom_columnvue_type_template_id_7378a3b0_staticRenderFns,
61354
61428
  false,
61355
61429
  null,
61356
61430
  null,
@@ -61722,7 +61796,6 @@ const recursiveSlot = (fields, slotSet) => {
61722
61796
  removeCachedTableColumns(this.name);
61723
61797
  this.setHasCache();
61724
61798
  if (this.$refs.xGrid) {
61725
- // console.log('>>>>>>>>>> 重置为 this.originColumns', this.originColumns)
61726
61799
  // 直接重新设置列配置
61727
61800
  this.$refs.xGrid.reloadColumn(this.originColumns);
61728
61801
  }
@@ -61790,6 +61863,7 @@ const recursiveSlot = (fields, slotSet) => {
61790
61863
  arr.push({
61791
61864
  title: item.label,
61792
61865
  align: 'center',
61866
+ fixed: item.fixed,
61793
61867
  children: recursiveData(item.data)
61794
61868
  });
61795
61869
  if (index < cols.length - 1) {
@@ -61797,7 +61871,8 @@ const recursiveSlot = (fields, slotSet) => {
61797
61871
  title: '',
61798
61872
  width: 5,
61799
61873
  headerClassName: 'group-split',
61800
- className: 'group-split'
61874
+ className: 'group-split',
61875
+ fixed: cols[index].fixed && cols[index + 1].fixed //左侧固定列中的分隔列
61801
61876
  });
61802
61877
  }
61803
61878
  }
@@ -61840,8 +61915,8 @@ const recursiveSlot = (fields, slotSet) => {
61840
61915
  ;
61841
61916
  var table_component = normalizeComponent(
61842
61917
  components_tablevue_type_script_lang_js,
61843
- tablevue_type_template_id_4a0e3fc6_render,
61844
- tablevue_type_template_id_4a0e3fc6_staticRenderFns,
61918
+ tablevue_type_template_id_70989b5a_render,
61919
+ tablevue_type_template_id_70989b5a_staticRenderFns,
61845
61920
  false,
61846
61921
  null,
61847
61922
  null,
@@ -61850,8 +61925,8 @@ var table_component = normalizeComponent(
61850
61925
  )
61851
61926
 
61852
61927
  /* harmony default export */ var table = (table_component.exports);
61853
- ;// ./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-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=396e0fe6&scoped=true
61854
- var formvue_type_template_id_396e0fe6_scoped_true_render = function render() {
61928
+ ;// ./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-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=f2397dbe&scoped=true
61929
+ var formvue_type_template_id_f2397dbe_scoped_true_render = function render() {
61855
61930
  var _vm = this,
61856
61931
  _c = _vm._self._c;
61857
61932
  return _c('div', {
@@ -61947,11 +62022,19 @@ var formvue_type_template_id_396e0fe6_scoped_true_render = function render() {
61947
62022
  "clearable": "",
61948
62023
  "filterable": "",
61949
62024
  "size": _vm.elSize,
61950
- "options": item.options
62025
+ "options": item.options,
62026
+ "loadOptions": item.loadOptions,
62027
+ "autoLoad": item.autoLoad !== false
61951
62028
  },
61952
62029
  on: {
61953
62030
  "input": function ($event) {
61954
62031
  return _vm.handleValueChange($event, item);
62032
+ },
62033
+ "load-success": function ($event) {
62034
+ return _vm.handleSelectLoadSuccess($event, item);
62035
+ },
62036
+ "load-error": function ($event) {
62037
+ return _vm.handleSelectLoadError($event, item);
61955
62038
  }
61956
62039
  }
61957
62040
  }, 'by-select', item.otherOptions, false)), _vm._t(item.field)] : item.type === 'datepicker' ? [_c('el-date-picker', _vm._b({
@@ -62120,7 +62203,7 @@ var formvue_type_template_id_396e0fe6_scoped_true_render = function render() {
62120
62203
  staticClass: "footer"
62121
62204
  }, [_vm._t("footer")], 2)], 1);
62122
62205
  };
62123
- var formvue_type_template_id_396e0fe6_scoped_true_staticRenderFns = [];
62206
+ var formvue_type_template_id_f2397dbe_scoped_true_staticRenderFns = [];
62124
62207
 
62125
62208
  ;// ./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-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=3344cc16
62126
62209
  var pair_number_inputvue_type_template_id_3344cc16_render = function render() {
@@ -62596,15 +62679,29 @@ var custom_date_picker_component = normalizeComponent(
62596
62679
  this.$nextTick(() => {
62597
62680
  this.$emit('reset');
62598
62681
  });
62682
+ },
62683
+ handleSelectLoadSuccess(options, item) {
62684
+ // 选择器异步加载成功
62685
+ this.$emit('select-load-success', {
62686
+ options,
62687
+ item
62688
+ });
62689
+ },
62690
+ handleSelectLoadError(error, item) {
62691
+ // 选择器异步加载失败
62692
+ this.$emit('select-load-error', {
62693
+ error,
62694
+ item
62695
+ });
62599
62696
  }
62600
62697
  }
62601
62698
  });
62602
62699
  ;// ./src/components/form/form.vue?vue&type=script&lang=js
62603
62700
  /* harmony default export */ var form_formvue_type_script_lang_js = (formvue_type_script_lang_js);
62604
- ;// ./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=396e0fe6&prod&lang=scss&scoped=true
62701
+ ;// ./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=f2397dbe&prod&lang=scss&scoped=true
62605
62702
  // extracted by mini-css-extract-plugin
62606
62703
 
62607
- ;// ./src/components/form/form.vue?vue&type=style&index=0&id=396e0fe6&prod&lang=scss&scoped=true
62704
+ ;// ./src/components/form/form.vue?vue&type=style&index=0&id=f2397dbe&prod&lang=scss&scoped=true
62608
62705
 
62609
62706
  ;// ./src/components/form/form.vue
62610
62707
 
@@ -62617,11 +62714,11 @@ var custom_date_picker_component = normalizeComponent(
62617
62714
 
62618
62715
  var form_component = normalizeComponent(
62619
62716
  form_formvue_type_script_lang_js,
62620
- formvue_type_template_id_396e0fe6_scoped_true_render,
62621
- formvue_type_template_id_396e0fe6_scoped_true_staticRenderFns,
62717
+ formvue_type_template_id_f2397dbe_scoped_true_render,
62718
+ formvue_type_template_id_f2397dbe_scoped_true_staticRenderFns,
62622
62719
  false,
62623
62720
  null,
62624
- "396e0fe6",
62721
+ "f2397dbe",
62625
62722
  null
62626
62723
 
62627
62724
  )
@@ -62873,15 +62970,16 @@ var fold_search_component = normalizeComponent(
62873
62970
  )
62874
62971
 
62875
62972
  /* harmony default export */ var fold_search = (fold_search_component.exports);
62876
- ;// ./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-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/select.vue?vue&type=template&id=7483aaeb
62877
- var selectvue_type_template_id_7483aaeb_render = function render() {
62973
+ ;// ./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-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/select.vue?vue&type=template&id=2ee8e5b9
62974
+ var selectvue_type_template_id_2ee8e5b9_render = function render() {
62878
62975
  var _vm = this,
62879
62976
  _c = _vm._self._c;
62880
62977
  return _c('el-select', _vm._b({
62881
62978
  ref: "selection",
62882
62979
  attrs: {
62883
62980
  "value": _vm.value,
62884
- "placeholder": _vm.config && _vm.config.placeholder || '请选择'
62981
+ "placeholder": _vm.config && _vm.config.placeholder || '请选择',
62982
+ "loading": _vm.loading
62885
62983
  },
62886
62984
  on: {
62887
62985
  "change": _vm.change,
@@ -62916,7 +63014,7 @@ var selectvue_type_template_id_7483aaeb_render = function render() {
62916
63014
  });
62917
63015
  })], 2);
62918
63016
  };
62919
- var selectvue_type_template_id_7483aaeb_staticRenderFns = [];
63017
+ var selectvue_type_template_id_2ee8e5b9_staticRenderFns = [];
62920
63018
 
62921
63019
  // EXTERNAL MODULE: ./node_modules/element-ui/lib/element-ui.common.js
62922
63020
  var element_ui_common = __webpack_require__(4927);
@@ -62943,6 +63041,16 @@ var element_ui_common = __webpack_require__(4927);
62943
63041
  return [];
62944
63042
  }
62945
63043
  },
63044
+ // 异步加载选项函数
63045
+ loadOptions: {
63046
+ type: Function,
63047
+ default: null
63048
+ },
63049
+ // 是否自动加载(当组件挂载时)
63050
+ autoLoad: {
63051
+ type: Boolean,
63052
+ default: true
63053
+ },
62946
63054
  //当前配置
62947
63055
  config: {
62948
63056
  type: Object,
@@ -62952,19 +63060,55 @@ var element_ui_common = __webpack_require__(4927);
62952
63060
  data() {
62953
63061
  return {
62954
63062
  searchVal: '',
62955
- filterData: []
63063
+ filterData: [],
63064
+ loading: false,
63065
+ asyncOptions: []
62956
63066
  };
62957
63067
  },
62958
63068
  watch: {
62959
63069
  options: {
62960
63070
  handler() {
62961
- this.filterData = this.options;
63071
+ // 如果有 loadOptions,优先使用异步数据,否则使用 options
63072
+ this.filterData = this.loadOptions ? this.asyncOptions : this.options;
62962
63073
  },
62963
63074
  deep: true,
62964
63075
  immediate: true
63076
+ },
63077
+ asyncOptions: {
63078
+ handler() {
63079
+ this.filterData = this.asyncOptions;
63080
+ },
63081
+ deep: true
63082
+ }
63083
+ },
63084
+ async mounted() {
63085
+ // 如果有 loadOptions 且需要自动加载,则在组件挂载时加载数据
63086
+ if (this.loadOptions && this.autoLoad) {
63087
+ await this.loadAsyncOptions();
62965
63088
  }
62966
63089
  },
62967
63090
  methods: {
63091
+ // 异步加载选项数据
63092
+ async loadAsyncOptions() {
63093
+ if (!this.loadOptions) return;
63094
+ try {
63095
+ this.loading = true;
63096
+ const result = await this.loadOptions();
63097
+
63098
+ // 支持直接返回数组或返回包含 data 属性的对象
63099
+ this.asyncOptions = Array.isArray(result) ? result : result.data || [];
63100
+ this.$emit('load-success', this.asyncOptions);
63101
+ } catch (error) {
63102
+ console.error('加载选项数据失败:', error);
63103
+ this.$emit('load-error', error);
63104
+ } finally {
63105
+ this.loading = false;
63106
+ }
63107
+ },
63108
+ // 手动刷新数据
63109
+ async refresh() {
63110
+ await this.loadAsyncOptions();
63111
+ },
62968
63112
  change(e) {
62969
63113
  this.$emit('change', arguments.length === 1 ? e : arguments);
62970
63114
  this.$emit('input', e);
@@ -62975,6 +63119,11 @@ var element_ui_common = __webpack_require__(4927);
62975
63119
  },
62976
63120
  visibleChange(e) {
62977
63121
  this.$emit('visible-change', arguments.length === 1 ? e : arguments);
63122
+
63123
+ // 如果是展开且有 loadOptions,可以重新加载数据(可选功能)
63124
+ if (e && this.loadOptions && this.config.refreshOnOpen) {
63125
+ this.loadAsyncOptions();
63126
+ }
62978
63127
  },
62979
63128
  removeTag(e) {
62980
63129
  this.$emit('remove-tag', arguments.length === 1 ? e : arguments);
@@ -62996,14 +63145,15 @@ var element_ui_common = __webpack_require__(4927);
62996
63145
  searchNoReset() {
62997
63146
  // 离开时重置数据
62998
63147
  this.$refs.selection.$refs.input.blur = () => {
62999
- this.filterData = this.options;
63148
+ this.filterData = this.loadOptions ? this.asyncOptions : this.options;
63000
63149
  };
63001
63150
 
63002
63151
  // 根据数据筛选数据
63003
63152
  this.$refs.selection.$refs.input.onkeyup = () => {
63004
- this.filterData = this.options;
63153
+ this.filterData = this.loadOptions ? this.asyncOptions : this.options;
63005
63154
  this.searchVal = this.$refs.selection.$refs.input.value;
63006
- this.filterData = this.options.filter(item => item[this.config.optionLabel].indexOf(this.searchVal) !== -1);
63155
+ const sourceData = this.loadOptions ? this.asyncOptions : this.options;
63156
+ this.filterData = sourceData.filter(item => item[this.config.optionLabel].indexOf(this.searchVal) !== -1);
63007
63157
  };
63008
63158
  }
63009
63159
  }
@@ -63020,8 +63170,8 @@ var element_ui_common = __webpack_require__(4927);
63020
63170
  ;
63021
63171
  var select_component = normalizeComponent(
63022
63172
  comps_selectvue_type_script_lang_js,
63023
- selectvue_type_template_id_7483aaeb_render,
63024
- selectvue_type_template_id_7483aaeb_staticRenderFns,
63173
+ selectvue_type_template_id_2ee8e5b9_render,
63174
+ selectvue_type_template_id_2ee8e5b9_staticRenderFns,
63025
63175
  false,
63026
63176
  null,
63027
63177
  null,
@@ -1 +1 @@
1
- .b-form .header[data-v-396e0fe6]{margin-bottom:20px}.b-form .footer[data-v-396e0fe6]{margin-top:20px}
1
+ .b-form .header[data-v-f2397dbe]{margin-bottom:20px}.b-form .footer[data-v-f2397dbe]{margin-top:20px}