@vue-start/pro 0.3.0 → 0.4.0

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/dist/index.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { defineComponent, computed, reactive, inject, h, provide, ref, createVNode, mergeProps, Fragment } from 'vue';
2
- import { map, isString, forEach, filter as filter$1, keys, omit, isArray, split, isFunction, get, isEmpty, isObject, mergeWith, reduce, sortBy, pick, debounce, size, some, clone, set, isBoolean, merge as merge$1 } from 'lodash';
1
+ import { defineComponent, createVNode, mergeProps, isVNode, computed, h, inject, reactive, Fragment, provide, ref } from 'vue';
2
+ import { map, isString, forEach, reduce, size, get, set, pick, omit, isArray, some, keys, isFunction, head, isObject, findIndex, find, filter as filter$1, split, isEmpty, mergeWith, sortBy, concat, isUndefined, debounce, clone, isBoolean } from 'lodash';
3
3
  import { filter, tap, merge, Subject } from 'rxjs';
4
4
  import { useEffect, setReactiveValue, useWatch } from '@vue-start/hooks';
5
5
  import { useRequestProvide, isFailedRequestActor, isPreRequestActor, isDoneRequestActor } from '@vue-start/request';
@@ -79,6 +79,50 @@ function _nonIterableSpread() {
79
79
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
80
80
  }
81
81
 
82
+ function _isSlot$1(s) {
83
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !isVNode(s);
84
+ }
85
+
86
+ var proGridProps = function proGridProps() {
87
+ return {
88
+ row: {
89
+ type: Object,
90
+ "default": undefined
91
+ },
92
+ col: {
93
+ type: Object
94
+ },
95
+ items: {
96
+ type: Array
97
+ }
98
+ };
99
+ };
100
+
101
+ var createGrid = function createGrid(Row, Col) {
102
+ return defineComponent({
103
+ props: _objectSpread2({}, proGridProps()),
104
+ setup: function setup(props) {
105
+ return function () {
106
+ var _slot;
107
+
108
+ return createVNode(Row, props.row, _isSlot$1(_slot = map(props.items, function (item) {
109
+ return createVNode(Col, mergeProps({
110
+ "key": item.rowKey
111
+ }, props.col, item.col), {
112
+ "default": function _default() {
113
+ return [item.vNode];
114
+ }
115
+ });
116
+ })) ? _slot : {
117
+ "default": function _default() {
118
+ return [_slot];
119
+ }
120
+ });
121
+ };
122
+ }
123
+ });
124
+ };
125
+
82
126
  var createUseRequestActor = function createUseRequestActor(filterFun) {
83
127
  return function (actors, callback) {
84
128
  var _useRequestProvide = useRequestProvide(),
@@ -151,94 +195,12 @@ var useComposeRequestActor = function useComposeRequestActor(actors, options, ca
151
195
  }, []);
152
196
  };
153
197
 
154
- /**
155
- * 剔除showState或showStateRules规则为!true的值
156
- * @param values
157
- * @param showState
158
- * @param showStateRules
159
- */
160
- var getValidValues = function getValidValues(values, showState, showStateRules) {
161
- if (showState) {
162
- var invalidKeys = filter$1(keys(showState), function (key) {
163
- return !showState[key];
164
- });
165
- return omit(values, invalidKeys);
166
- }
167
-
168
- if (showStateRules) {
169
- var _invalidKeys = filter$1(keys(showStateRules), function (key) {
170
- return !showStateRules[key](values);
171
- });
172
-
173
- return omit(values, _invalidKeys);
174
- }
175
-
176
- return values;
177
- };
178
- /**
179
- * string类型的path转为arr
180
- * @param path
181
- */
182
-
183
- var convertPathToList = function convertPathToList(path) {
184
- if (!path) {
185
- return undefined;
186
- }
187
-
188
- if (isArray(path)) {
189
- return path;
190
- }
191
-
192
- if (path && isString(path) && path.indexOf(".") > 0) {
193
- return split(path, ".");
194
- }
195
-
196
- return [path];
197
- };
198
- /**
199
- * 唯一id
200
- */
201
-
202
- var generateId = function generateId() {
203
- return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
204
- };
205
- /**
206
- * 将listState 中的数据通过id merge到 list item中
207
- * ps:数组会替换
208
- * @param list
209
- * @param listState
210
- * @param id
211
- */
212
-
213
- var mergeStateToList = function mergeStateToList(list, listState, id) {
214
- if (!listState || !id) {
215
- return list;
216
- }
217
-
218
- return map(list, function (item) {
219
- var idName = isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
220
-
221
- var stateData = get(listState, idName);
222
-
223
- if (!stateData || isEmpty(stateData) || isFunction(stateData) || !isObject(stateData)) {
224
- return item;
225
- } //只有是对象(键值对)才合并
226
-
227
-
228
- return mergeWith(item, stateData, function (objValue, srcValue) {
229
- //如果是数组,替换
230
- if (isArray(objValue) || isArray(srcValue)) {
231
- return srcValue;
232
- }
233
- });
234
- });
235
- };
198
+ /***************************************** curd模式 *****************************************/
236
199
 
237
200
  /**
238
201
  * 获取Column的valueType,默认"text"
239
202
  * @param column
240
203
  */
241
-
242
204
  var getColumnValueType = function getColumnValueType(column) {
243
205
  return column.formValueType || column.valueType || "text";
244
206
  };
@@ -304,6 +266,213 @@ var getItemEl = function getItemEl(elementMap, column, value) {
304
266
  value: value
305
267
  }), (_column$formFieldProp2 = column.formFieldProps) === null || _column$formFieldProp2 === void 0 ? void 0 : _column$formFieldProp2.slots);
306
268
  };
269
+ /***************************************** 通用模式 *****************************************/
270
+
271
+ var renderElements = function renderElements(elementMap, elementConfigs) {
272
+ return map(elementConfigs, function (elementConfig) {
273
+ return renderElement(elementMap, elementConfig);
274
+ });
275
+ };
276
+ /**
277
+ * props转换
278
+ */
279
+
280
+ var convertPropsEl = function convertPropsEl(elementMap, elementConfig) {
281
+ var _elementConfig$highCo;
282
+
283
+ var elementProps = elementConfig.elementProps;
284
+
285
+ var nextProps = _objectSpread2({}, elementConfig.elementProps);
286
+
287
+ forEach((_elementConfig$highCo = elementConfig.highConfig$) === null || _elementConfig$highCo === void 0 ? void 0 : _elementConfig$highCo.registerPropsTrans, function (item) {
288
+ var target = get(elementProps, item.name);
289
+
290
+ if (!target || isVNode(target)) {
291
+ return;
292
+ }
293
+
294
+ if (isArray(target)) {
295
+ //如果list中存在VNode,不转换
296
+ if (some(target, function (sub) {
297
+ return isVNode(sub);
298
+ })) {
299
+ return;
300
+ } //如果碰到特殊场景,可以替换成单个渲染模式
301
+
302
+
303
+ set(nextProps, item.name, renderElements(elementMap, target));
304
+ return;
305
+ }
306
+
307
+ if (!target.elementType) {
308
+ return;
309
+ }
310
+
311
+ if (item.isFun) {
312
+ set(nextProps, item.name, function () {
313
+ for (var _len = arguments.length, params$ = new Array(_len), _key = 0; _key < _len; _key++) {
314
+ params$[_key] = arguments[_key];
315
+ }
316
+
317
+ var ep = item.needParams ? _objectSpread2(_objectSpread2({}, target.elementProps), {}, {
318
+ params$: params$
319
+ }) : target.elementProps;
320
+ return renderElement(elementMap, _objectSpread2(_objectSpread2({}, target), {}, {
321
+ elementProps: ep
322
+ }));
323
+ });
324
+ } else {
325
+ set(nextProps, item.name, renderElement(elementMap, target));
326
+ }
327
+ });
328
+ return nextProps;
329
+ };
330
+ /**
331
+ * slots转换
332
+ */
333
+
334
+
335
+ var convertSlots = function convertSlots(elementMap, elementConfig) {
336
+ var children = size(elementConfig.children) > 0 ? renderElements(elementMap, elementConfig.children) : undefined; //children插槽名称
337
+
338
+ var childrenSlotName = elementConfig.childrenSlotName || "default";
339
+ var validSlots = omit(elementConfig.slots, children ? childrenSlotName : ""); //如果slots注册的是 IElementConfig ,进行转换
340
+
341
+ forEach(keys(validSlots), function (k) {
342
+ var v = validSlots[k]; //IElementConfig
343
+
344
+ if (v && !isFunction(v) && v.elementType) {
345
+ validSlots[k] = function () {
346
+ for (var _len2 = arguments.length, params$ = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
347
+ params$[_key2] = arguments[_key2];
348
+ }
349
+
350
+ //如果需要params,在props中注入 params$
351
+ var elementProps = v.needParams ? _objectSpread2(_objectSpread2({}, v.elementProps), {}, {
352
+ params$: params$
353
+ }) : v.elementProps;
354
+ return renderElement(elementMap, _objectSpread2(_objectSpread2({}, v), {}, {
355
+ elementProps: elementProps
356
+ }));
357
+ };
358
+ }
359
+ });
360
+ return _objectSpread2(_defineProperty({}, childrenSlotName, children ? function () {
361
+ return children;
362
+ } : undefined), validSlots);
363
+ };
364
+ /**
365
+ *
366
+ * @param elementMap
367
+ * @param elementConfig
368
+ */
369
+
370
+
371
+ var renderElement = function renderElement(elementMap, elementConfig) {
372
+ var El = get(elementMap, elementConfig.elementType) || elementConfig.elementType; //如果有highConfig$,包裹一层Wrapper
373
+
374
+ if (elementConfig.highConfig$) {
375
+ return h(Wrapper, {
376
+ key: elementConfig.elementId,
377
+ elementMap: elementMap,
378
+ elementConfig: elementConfig
379
+ });
380
+ }
381
+
382
+ var slots = convertSlots(elementMap, elementConfig);
383
+ var elementProps = convertPropsEl(elementMap, elementConfig);
384
+ return h(El, _objectSpread2({
385
+ key: elementConfig.elementId
386
+ }, elementProps), slots);
387
+ };
388
+ /**
389
+ * 获取第一层级属性名
390
+ * 如:['aaa','bbb',...] 中的 'aaa'
391
+ * 如:"aaa.bbb.ccc..." 中的 'aaa'
392
+ */
393
+
394
+ var getFirstPropName = function getFirstPropName(name) {
395
+ if (isArray(name)) {
396
+ return head(name);
397
+ } else if (isString(name) && name.indexOf(".") > 0) {
398
+ return name.substring(0, name.indexOf("."));
399
+ }
400
+
401
+ return name;
402
+ };
403
+ /**
404
+ * 处理highConfig$
405
+ */
406
+
407
+ var Wrapper = defineComponent({
408
+ props: {
409
+ elementMap: {
410
+ type: Object
411
+ },
412
+ elementConfig: {
413
+ type: Object
414
+ }
415
+ },
416
+ setup: function setup(props) {
417
+ var _useProModule = useProModule(),
418
+ state = _useProModule.state,
419
+ sendEvent = _useProModule.sendEvent;
420
+
421
+ var elementMap = props.elementMap,
422
+ elementConfig = props.elementConfig;
423
+ var highConfig$ = elementConfig.highConfig$; //转换props
424
+
425
+ var elementProps = convertPropsEl(elementMap, elementConfig); //事件订阅
426
+
427
+ var events = reduce(highConfig$.registerEventList, function (pair, item) {
428
+ return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, item.name, function () {
429
+ for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
430
+ params[_key3] = arguments[_key3];
431
+ }
432
+
433
+ sendEvent({
434
+ type: item.sendEventName || elementConfig.elementId,
435
+ payload: params
436
+ });
437
+ }));
438
+ }, {}); //receiveStateList 订阅
439
+
440
+ var receiveStates = computed(function () {
441
+ if (!highConfig$.registerStateList || size(highConfig$.registerStateList) <= 0) {
442
+ return undefined;
443
+ }
444
+
445
+ var changeProps = _objectSpread2({}, elementProps); //赋值 && 返回一级属性名称
446
+
447
+
448
+ var firstPropNameList = map(highConfig$.registerStateList, function (item) {
449
+ var targetName = item.mapName || item.name; //从state中取值
450
+
451
+ var value = get(state, item.name); //赋值
452
+
453
+ set(changeProps, targetName, value); //返回一级属性名称
454
+
455
+ return getFirstPropName(targetName);
456
+ });
457
+ return pick(changeProps, firstPropNameList);
458
+ });
459
+ var El = get(elementMap, elementConfig.elementType) || elementConfig.elementType;
460
+ var slots = convertSlots(elementMap, elementConfig);
461
+ return function () {
462
+ //如果标记show$值为false,不渲染组件
463
+ var show$ = get(receiveStates.value, "show$");
464
+
465
+ if (show$ === false) {
466
+ return null;
467
+ }
468
+
469
+ return h(El, _objectSpread2(_objectSpread2(_objectSpread2({
470
+ key: elementConfig.elementId
471
+ }, elementProps), omit(receiveStates.value, "show$")), events), slots);
472
+ };
473
+ }
474
+ });
475
+
307
476
  var ProModuleKey = Symbol("pro-module");
308
477
  var useProModule = function useProModule() {
309
478
  return inject(ProModuleKey);
@@ -326,32 +495,17 @@ var proModuleProps = function proModuleProps() {
326
495
  },
327
496
 
328
497
  /**
329
- * 配置(静态)
330
- */
331
- columns: {
332
- type: Array
333
- },
334
-
335
- /**
336
- * 配置(动态)
337
- * columns动态属性兼容
338
- */
339
- columnState: {
340
- type: Object
341
- },
342
-
343
- /**
344
- * 展示组件集
498
+ * 组件集
345
499
  */
346
500
  elementMap: {
347
501
  type: Object
348
502
  },
349
503
 
350
504
  /**
351
- * 录入组件集
505
+ * 组件描述(树)
352
506
  */
353
- formElementMap: {
354
- type: Object
507
+ elementConfigs: {
508
+ type: Array
355
509
  },
356
510
 
357
511
  /**
@@ -369,25 +523,13 @@ var ProModule = defineComponent({
369
523
  var slots = _ref.slots,
370
524
  expose = _ref.expose;
371
525
 
372
- /**
373
- * columns columnState 合并
374
- */
375
- var columns = computed(function () {
376
- return mergeStateToList(props.columns, props.columnState, function (item) {
377
- return getColumnFormItemName(item);
378
- });
379
- });
380
- /*********************************** 渲染组件 ***************************************/
381
- // 获取FormItem VNode
382
-
383
- var getFormItemVNode = function getFormItemVNode(column) {
384
- var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
385
- return getFormItemEl(props.formElementMap, column, needRules);
386
- }; // 获取Item VNode
387
-
526
+ /*********************************** render ***************************************/
527
+ var render = function render(elementConfig) {
528
+ if (isArray(elementConfig)) {
529
+ return renderElements(props.elementMap, elementConfig);
530
+ }
388
531
 
389
- var getItemVNode = function getItemVNode(column, value) {
390
- return getItemEl(props.elementMap, column, value);
532
+ return renderElement(props.elementMap, elementConfig);
391
533
  };
392
534
  /*********************************** 事件处理 ***************************************/
393
535
 
@@ -403,13 +545,15 @@ var ProModule = defineComponent({
403
545
  var state = props.state || reactive({});
404
546
 
405
547
  var dispatch = function dispatch(action) {
406
- //如果要更新的属性值是 object ,执行覆盖操作
407
- if (isObject(state[action.type])) {
408
- setReactiveValue(state[action.type], action.payload);
548
+ var prev = state[action.type];
549
+ var data = isFunction(action.payload) ? action.payload(prev) : action.payload; //如果要更新的属性值是 object ,执行覆盖操作
550
+
551
+ if (isObject(prev)) {
552
+ setReactiveValue(state[action.type], data);
409
553
  return;
410
554
  }
411
555
 
412
- state[action.type] = action.payload;
556
+ state[action.type] = data;
413
557
  };
414
558
  /*********************************** request ***************************************/
415
559
 
@@ -513,11 +657,7 @@ var ProModule = defineComponent({
513
657
  }
514
658
  }, true);
515
659
  provideProModule({
516
- columns: columns,
517
- getFormItemVNode: getFormItemVNode,
518
- getItemVNode: getItemVNode,
519
660
  elementMap: props.elementMap,
520
- formElementMap: props.formElementMap,
521
661
  //
522
662
  subject$: subject$,
523
663
  sendEvent: sendEvent,
@@ -535,7 +675,7 @@ var ProModule = defineComponent({
535
675
  return function () {
536
676
  var _slots$default;
537
677
 
538
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
678
+ return createVNode(Fragment, null, [size(props.elementConfigs) > 0 && render(props.elementConfigs), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
539
679
  };
540
680
  }
541
681
  });
@@ -593,26 +733,201 @@ var CurdSubAction;
593
733
  CurdSubAction["FAIL"] = "FAIL";
594
734
  })(CurdSubAction || (CurdSubAction = {}));
595
735
 
596
- /**
597
- * curd 操作模式
736
+ /**
737
+ * curd 操作模式
738
+ */
739
+ var CurdCurrentMode;
740
+
741
+ (function (CurdCurrentMode) {
742
+ CurdCurrentMode["ADD"] = "ADD";
743
+ CurdCurrentMode["EDIT"] = "EDIT";
744
+ CurdCurrentMode["DETAIL"] = "DETAIL";
745
+ })(CurdCurrentMode || (CurdCurrentMode = {}));
746
+
747
+ /**
748
+ * curd add 模式下 标记 "确定" "确定并继续" 触发
749
+ */
750
+ var CurdAddAction;
751
+
752
+ (function (CurdAddAction) {
753
+ CurdAddAction["NORMAL"] = "NORMAL";
754
+ CurdAddAction["CONTINUE"] = "CONTINUE";
755
+ })(CurdAddAction || (CurdAddAction = {}));
756
+
757
+ var treeDefaultNames = {
758
+ children: "children",
759
+ label: "label",
760
+ value: "value"
761
+ };
762
+ /**
763
+ * 根据value从treeData中找到对象
764
+ * @param data
765
+ * @param value
766
+ * @param fieldNames
767
+ * @param cb 对象:同步 方法:回调,可以理解为异步
768
+ */
769
+
770
+ var findTargetInTree = function findTargetInTree(data, value, fieldNames, cb) {
771
+ var index = findIndex(data, function (item) {
772
+ return get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
773
+ });
774
+
775
+ if (index > -1) {
776
+ if (isFunction(cb)) {
777
+ cb(index, data[index], data);
778
+ } else {
779
+ cb.index = index;
780
+ cb.target = data[index];
781
+ cb.list = data;
782
+ }
783
+
784
+ return;
785
+ }
786
+
787
+ forEach(data, function (item) {
788
+ var children = get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
789
+
790
+ if (size(children) > 0) {
791
+ findTargetInTree(children, value, fieldNames, cb);
792
+ }
793
+ });
794
+ };
795
+ /**
796
+ * 根据value从treeData中找出对象及父列表
797
+ * @param data
798
+ * @param value
799
+ * @param fieldNames
800
+ * @param cb
801
+ * @param parent
802
+ */
803
+
804
+ var findTargetListInTree = function findTargetListInTree(data, value, fieldNames, cb) {
805
+ var parent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
806
+ var target = find(data, function (item) {
807
+ return get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
808
+ });
809
+
810
+ if (target) {
811
+ if (isFunction(cb)) {
812
+ cb([].concat(_toConsumableArray(parent), [target]));
813
+ } else {
814
+ cb.list = [].concat(_toConsumableArray(parent), [target]);
815
+ }
816
+
817
+ return;
818
+ }
819
+
820
+ forEach(data, function (item) {
821
+ var children = get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
822
+
823
+ if (size(children) > 0) {
824
+ findTargetListInTree(children, value, fieldNames, cb, [].concat(_toConsumableArray(parent), [item]));
825
+ }
826
+ });
827
+ };
828
+
829
+ /**
830
+ * 剔除showState或showStateRules规则为!true的值
831
+ * @param values
832
+ * @param showState
833
+ * @param showStateRules
834
+ */
835
+
836
+ var getValidValues = function getValidValues(values, showState, showStateRules) {
837
+ if (showState) {
838
+ var invalidKeys = filter$1(keys(showState), function (key) {
839
+ return !showState[key];
840
+ });
841
+ return omit(values, invalidKeys);
842
+ }
843
+
844
+ if (showStateRules) {
845
+ var _invalidKeys = filter$1(keys(showStateRules), function (key) {
846
+ return !showStateRules[key](values);
847
+ });
848
+
849
+ return omit(values, _invalidKeys);
850
+ }
851
+
852
+ return values;
853
+ };
854
+ /**
855
+ * string类型的path转为arr
856
+ * @param path
857
+ */
858
+
859
+ var convertPathToList = function convertPathToList(path) {
860
+ if (!path) {
861
+ return undefined;
862
+ }
863
+
864
+ if (isArray(path)) {
865
+ return path;
866
+ }
867
+
868
+ if (path && isString(path) && path.indexOf(".") > 0) {
869
+ return split(path, ".");
870
+ }
871
+
872
+ return [path];
873
+ };
874
+ /**
875
+ * 将listState 中的数据通过id merge到 list item中
876
+ * ps:数组会替换
877
+ * 注意:mergeWith 会改变原始对象
878
+ * @param list
879
+ * @param listState
880
+ * @param id
881
+ */
882
+
883
+ var mergeStateToList = function mergeStateToList(list, listState, id) {
884
+ if (!listState || !id) {
885
+ return list;
886
+ }
887
+
888
+ return map(list, function (item) {
889
+ var idName = isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
890
+
891
+ var stateData = get(listState, idName);
892
+
893
+ if (!stateData || isEmpty(stateData) || isFunction(stateData) || !isObject(stateData)) {
894
+ return item;
895
+ } //只有是对象(键值对)才合并
896
+
897
+
898
+ return mergeWith(item, stateData, function (objValue, srcValue) {
899
+ //如果是数组,替换
900
+ if (isArray(objValue) || isArray(srcValue)) {
901
+ return srcValue;
902
+ }
903
+ });
904
+ });
905
+ };
906
+
907
+ /**
908
+ * 唯一id
598
909
  */
599
- var CurdCurrentMode;
600
-
601
- (function (CurdCurrentMode) {
602
- CurdCurrentMode["ADD"] = "ADD";
603
- CurdCurrentMode["EDIT"] = "EDIT";
604
- CurdCurrentMode["DETAIL"] = "DETAIL";
605
- })(CurdCurrentMode || (CurdCurrentMode = {}));
606
910
 
607
- /**
608
- * curd add 模式下 标记 "确定" "确定并继续" 触发
911
+ var generateId = function generateId() {
912
+ return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
913
+ };
914
+ /**
915
+ * ref 传递
609
916
  */
610
- var CurdAddAction;
611
917
 
612
- (function (CurdAddAction) {
613
- CurdAddAction["NORMAL"] = "NORMAL";
614
- CurdAddAction["CONTINUE"] = "CONTINUE";
615
- })(CurdAddAction || (CurdAddAction = {}));
918
+ var createExpose = function createExpose(methods, targetRef) {
919
+ return reduce(methods, function (pair, method) {
920
+ return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, method, function () {
921
+ var _targetRef$value, _targetRef$value$meth;
922
+
923
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
924
+ params[_key] = arguments[_key];
925
+ }
926
+
927
+ return (_targetRef$value = targetRef.value) === null || _targetRef$value === void 0 ? void 0 : (_targetRef$value$meth = _targetRef$value[method]) === null || _targetRef$value$meth === void 0 ? void 0 : _targetRef$value$meth.call.apply(_targetRef$value$meth, [_targetRef$value].concat(params));
928
+ }));
929
+ }, {});
930
+ };
616
931
 
617
932
  var defaultPage = {
618
933
  page: 1,
@@ -621,6 +936,28 @@ var defaultPage = {
621
936
 
622
937
  var proCurdProps = function proCurdProps() {
623
938
  return {
939
+ /**
940
+ * 配置(静态)
941
+ */
942
+ columns: {
943
+ type: Array
944
+ },
945
+
946
+ /**
947
+ * 配置(动态)
948
+ * columns动态属性兼容
949
+ */
950
+ columnState: {
951
+ type: Object
952
+ },
953
+
954
+ /**
955
+ * 录入组件集
956
+ */
957
+ formElementMap: {
958
+ type: Object
959
+ },
960
+
624
961
  /**
625
962
  * 列表 或 详情 的唯一标识
626
963
  */
@@ -659,58 +996,67 @@ var Curd = defineComponent({
659
996
  expose = _ref.expose;
660
997
 
661
998
  var _ref2 = useProModule(),
662
- columns = _ref2.columns,
999
+ elementMap = _ref2.elementMap,
663
1000
  state = _ref2.state,
664
1001
  sendEvent = _ref2.sendEvent,
665
1002
  sendRequest = _ref2.sendRequest;
666
1003
  /**
667
- * 排序
668
- * @param list
669
- * @param propName
1004
+ * columns columnState 合并
670
1005
  */
671
1006
 
672
1007
 
673
- var dealSort = function dealSort(list, propName) {
674
- return sortBy(list, function (item) {
675
- return get(item, propName);
1008
+ var columns = computed(function () {
1009
+ return mergeStateToList(props.columns, props.columnState, function (item) {
1010
+ return getColumnFormItemName(item);
676
1011
  });
1012
+ });
1013
+ /*********************************** 渲染组件 ***************************************/
1014
+ // 获取FormItem VNode
1015
+
1016
+ var getFormItemVNode = function getFormItemVNode(column) {
1017
+ var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1018
+ return getFormItemEl(props.formElementMap, column, needRules);
1019
+ }; // 获取Item VNode
1020
+
1021
+
1022
+ var getItemVNode = function getItemVNode(column, value) {
1023
+ return getItemEl(elementMap, column, value);
677
1024
  };
678
1025
  /**
679
- * hideInForm columns
1026
+ * ${signName} 配置为true 会被选择
1027
+ * @param signName
1028
+ * @param opposite 如果为true,未配置(undefined)会被选择
680
1029
  */
681
1030
 
682
1031
 
1032
+ var getSignColumns = function getSignColumns(signName, opposite) {
1033
+ var signColumns = filter$1(columns.value, function (item) {
1034
+ var sign = get(item, ["extra", signName]) || get(item, signName);
1035
+
1036
+ if (opposite) {
1037
+ //不为false 即为选中
1038
+ return sign !== false;
1039
+ } //只有true 才为选中
1040
+
1041
+
1042
+ return sign;
1043
+ });
1044
+ return sortBy(signColumns, function (item) {
1045
+ return get(item, ["extra", "".concat(signName, "Sort")]) || get(item, "".concat(signName, "Sort"));
1046
+ });
1047
+ };
1048
+
683
1049
  var formColumns = computed(function () {
684
- return dealSort(filter$1(columns.value, function (item) {
685
- return !item.hideInForm;
686
- }), "formSort");
1050
+ return getSignColumns("form", true);
687
1051
  });
688
- /**
689
- * 非 hideInDetail columns
690
- */
691
-
692
1052
  var descColumns = computed(function () {
693
- return dealSort(filter$1(columns.value, function (item) {
694
- return !item.hideInDetail;
695
- }), "descSort");
1053
+ return getSignColumns("detail", true);
696
1054
  });
697
- /**
698
- * 非 hideInTable columns
699
- */
700
-
701
1055
  var tableColumns = computed(function () {
702
- return dealSort(filter$1(columns.value, function (item) {
703
- return !item.hideInTable;
704
- }), "tableSort");
1056
+ return getSignColumns("table", true);
705
1057
  });
706
- /**
707
- * search columns
708
- */
709
-
710
1058
  var searchColumns = computed(function () {
711
- return dealSort(filter$1(columns.value, function (item) {
712
- return !!item.search;
713
- }), "searchSort");
1059
+ return getSignColumns("search");
714
1060
  });
715
1061
  /******************************** 逻辑 *************************************/
716
1062
  //上一次发起列表请求的参数
@@ -795,6 +1141,13 @@ var Curd = defineComponent({
795
1141
  return props.modalProps;
796
1142
  });
797
1143
  provideProCurd({
1144
+ columns: columns,
1145
+ getSignColumns: getSignColumns,
1146
+ getFormItemVNode: getFormItemVNode,
1147
+ getItemVNode: getItemVNode,
1148
+ elementMap: elementMap,
1149
+ formElementMap: props.formElementMap,
1150
+ //
798
1151
  rowKey: props.rowKey,
799
1152
  curdState: state,
800
1153
  formColumns: formColumns,
@@ -1176,99 +1529,419 @@ var PageCurd = defineComponent({
1176
1529
  type: "detailData",
1177
1530
  payload: props.defaultAddRecord || {}
1178
1531
  });
1179
- } else if (subAction === CurdSubAction.SUCCESS) {
1180
- if (curdState.addAction === CurdAddAction.CONTINUE) {
1181
- dispatch({
1182
- type: "detailData",
1183
- payload: props.defaultAddRecord || {}
1184
- });
1185
- } else {
1186
- props.routeBack ? props.routeBack(CurdAction.ADD) : router.go(-1);
1187
- }
1188
- }
1189
- };
1532
+ } else if (subAction === CurdSubAction.SUCCESS) {
1533
+ if (curdState.addAction === CurdAddAction.CONTINUE) {
1534
+ dispatch({
1535
+ type: "detailData",
1536
+ payload: props.defaultAddRecord || {}
1537
+ });
1538
+ } else {
1539
+ props.routeBack ? props.routeBack(CurdAction.ADD) : router.go(-1);
1540
+ }
1541
+ }
1542
+ };
1543
+
1544
+ var dealEdit = function dealEdit(subAction, _ref2) {
1545
+ var record = _ref2.record;
1546
+
1547
+ if (subAction === CurdSubAction.EMIT) {
1548
+ router.push({
1549
+ path: "".concat(route.path, "/edit"),
1550
+ query: pick(record, rowKey)
1551
+ });
1552
+ } else if (subAction === CurdSubAction.PAGE) {
1553
+ dispatch({
1554
+ type: "mode",
1555
+ payload: CurdCurrentMode.EDIT
1556
+ });
1557
+ sendRequest(CurdAction.DETAIL, route.query, rowKey);
1558
+ } else if (subAction === CurdSubAction.SUCCESS) {
1559
+ props.routeBack ? props.routeBack(CurdAction.EDIT) : router.go(-1);
1560
+ }
1561
+ };
1562
+
1563
+ useModuleEvent(function (_ref3) {
1564
+ var type = _ref3.type,
1565
+ payload = _ref3.payload,
1566
+ source = _ref3.source;
1567
+
1568
+ if (source) {
1569
+ return;
1570
+ }
1571
+
1572
+ var action = type;
1573
+ var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
1574
+ var record = payload === null || payload === void 0 ? void 0 : payload.record;
1575
+
1576
+ if (action === RequestAction.Success) {
1577
+ //覆盖
1578
+ action = get(payload, ["requestOpts", "action"]);
1579
+ subAction = CurdSubAction.SUCCESS;
1580
+ }
1581
+
1582
+ switch (action) {
1583
+ case CurdAction.LIST:
1584
+ dealList(subAction);
1585
+ break;
1586
+
1587
+ case CurdAction.DETAIL:
1588
+ dealDetail(subAction, {
1589
+ record: record
1590
+ });
1591
+ break;
1592
+
1593
+ case CurdAction.ADD:
1594
+ dealAdd(subAction);
1595
+ break;
1596
+
1597
+ case CurdAction.EDIT:
1598
+ dealEdit(subAction, {
1599
+ record: record
1600
+ });
1601
+ break;
1602
+ }
1603
+ });
1604
+ return function () {
1605
+ return null;
1606
+ };
1607
+ }
1608
+ });
1609
+ var ProPageCurd = defineComponent({
1610
+ props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
1611
+ setup: function setup(props, _ref4) {
1612
+ var slots = _ref4.slots;
1613
+ var invalidKeys = keys(PageCurd.props);
1614
+ return function () {
1615
+ var _slots$default;
1616
+
1617
+ return createVNode(ProCurd, omit(props, invalidKeys), {
1618
+ "default": function _default() {
1619
+ return [createVNode(PageCurd, pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1620
+ }
1621
+ });
1622
+ };
1623
+ }
1624
+ });
1625
+
1626
+ function _isSlot(s) {
1627
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !isVNode(s);
1628
+ }
1629
+
1630
+ var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
1631
+ return defineComponent({
1632
+ props: _objectSpread2(_objectSpread2({}, Descriptions.props), {}, {
1633
+ //重写Item content
1634
+ renderItem: {
1635
+ type: Function
1636
+ }
1637
+ }),
1638
+ setup: function setup(props, _ref) {
1639
+ var slots = _ref.slots;
1640
+
1641
+ var _useProCurd = useProCurd(),
1642
+ getItemVNode = _useProCurd.getItemVNode,
1643
+ curdState = _useProCurd.curdState,
1644
+ descColumns = _useProCurd.descColumns;
1645
+
1646
+ var descVNodes = computed(function () {
1647
+ return map(descColumns.value, function (item) {
1648
+ var _slot;
1649
+
1650
+ var _props$renderItem;
1651
+
1652
+ var vn = (_props$renderItem = props.renderItem) === null || _props$renderItem === void 0 ? void 0 : _props$renderItem.call(props, item);
1653
+
1654
+ if (vn) {
1655
+ return vn;
1656
+ }
1657
+
1658
+ var value = get(curdState.detailData, item.dataIndex);
1659
+ return createVNode(DescriptionsItem, mergeProps({
1660
+ "key": item.dataIndex,
1661
+ "label": item.title
1662
+ }, get(item.extra, "desc")), _isSlot(_slot = getItemVNode(item, value)) ? _slot : {
1663
+ "default": function _default() {
1664
+ return [_slot];
1665
+ }
1666
+ });
1667
+ });
1668
+ });
1669
+ return function () {
1670
+ var _slots$start, _slots$default;
1671
+
1672
+ return createVNode(Descriptions, props, _objectSpread2({
1673
+ "default": function _default() {
1674
+ return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), descVNodes.value, (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1675
+ }
1676
+ }, omit(slots, "default", "start")));
1677
+ };
1678
+ }
1679
+ });
1680
+ };
1681
+
1682
+ var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
1683
+ return {
1684
+ //是否使用operate bar
1685
+ operateBar: {
1686
+ type: Boolean,
1687
+ "default": true
1688
+ },
1689
+ //显示 确定并继续 按钮
1690
+ showContinueAdd: {
1691
+ type: Boolean,
1692
+ "default": false
1693
+ },
1694
+ //
1695
+ okText: {
1696
+ type: String,
1697
+ "default": "确定"
1698
+ },
1699
+ okButtonProps: {
1700
+ type: Object
1701
+ },
1702
+ //
1703
+ continueText: {
1704
+ type: String,
1705
+ "default": "确定并继续"
1706
+ },
1707
+ continueButtonProps: {
1708
+ type: Object
1709
+ }
1710
+ };
1711
+ };
1712
+
1713
+ var createCurdForm = function createCurdForm(Form, Button, convertFormProps) {
1714
+ return defineComponent({
1715
+ props: _objectSpread2(_objectSpread2({}, Form.props), proCurdAddOrEditProps()),
1716
+ setup: function setup(props, _ref) {
1717
+ var slots = _ref.slots;
1718
+
1719
+ var _useProCurd = useProCurd(),
1720
+ elementMap = _useProCurd.elementMap,
1721
+ formElementMap = _useProCurd.formElementMap,
1722
+ curdState = _useProCurd.curdState,
1723
+ formColumns = _useProCurd.formColumns,
1724
+ sendCurdEvent = _useProCurd.sendCurdEvent;
1725
+
1726
+ var formRef = ref();
1727
+
1728
+ var handleFinish = function handleFinish(values) {
1729
+ if (curdState.mode === CurdCurrentMode.EDIT) {
1730
+ //edit
1731
+ sendCurdEvent({
1732
+ action: CurdAction.EDIT,
1733
+ type: CurdSubAction.EXECUTE,
1734
+ values: values
1735
+ });
1736
+ } else {
1737
+ //add
1738
+ sendCurdEvent({
1739
+ action: CurdAction.ADD,
1740
+ type: CurdSubAction.EXECUTE,
1741
+ values: values
1742
+ });
1743
+ }
1744
+ };
1745
+
1746
+ var handleAdd = function handleAdd() {
1747
+ var _formRef$value;
1748
+
1749
+ curdState.addAction = CurdAddAction.NORMAL;
1750
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
1751
+ };
1752
+
1753
+ var handleContinueAdd = function handleContinueAdd() {
1754
+ var _formRef$value2;
1755
+
1756
+ curdState.addAction = CurdAddAction.CONTINUE;
1757
+ (_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.submit();
1758
+ };
1759
+
1760
+ return function () {
1761
+ var _slots$divide, _slots$operateStart, _slots$operateCenter, _slots$operateEnd, _slots$default;
1762
+
1763
+ return createVNode(Form, mergeProps({
1764
+ "ref": formRef
1765
+ }, props, {
1766
+ "elementMap": props.elementMap || elementMap,
1767
+ "formElementMap": props.formElementMap || formElementMap,
1768
+ "columns": formColumns.value,
1769
+ "model": curdState.detailData,
1770
+ "readonly": curdState.mode === CurdCurrentMode.DETAIL,
1771
+ "onFinish": handleFinish
1772
+ }, convertFormProps === null || convertFormProps === void 0 ? void 0 : convertFormProps(curdState)), _objectSpread2({
1773
+ "default": function _default() {
1774
+ return [(_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), props.operateBar && createVNode("div", {
1775
+ "class": "pro-curd-form-operate"
1776
+ }, [(_slots$operateStart = slots.operateStart) === null || _slots$operateStart === void 0 ? void 0 : _slots$operateStart.call(slots), curdState.mode !== CurdCurrentMode.DETAIL && createVNode(Button, mergeProps({
1777
+ "onClick": handleAdd
1778
+ }, props.okButtonProps, {
1779
+ "loading": curdState.operateLoading
1780
+ }), {
1781
+ "default": function _default() {
1782
+ return [props.okText];
1783
+ }
1784
+ }), (_slots$operateCenter = slots.operateCenter) === null || _slots$operateCenter === void 0 ? void 0 : _slots$operateCenter.call(slots), props.showContinueAdd && curdState.mode === CurdCurrentMode.ADD && createVNode(Button, mergeProps({
1785
+ "onClick": handleContinueAdd
1786
+ }, props.continueButtonProps, {
1787
+ "loading": curdState.operateLoading
1788
+ }), {
1789
+ "default": function _default() {
1790
+ return [props.continueText];
1791
+ }
1792
+ }), (_slots$operateEnd = slots.operateEnd) === null || _slots$operateEnd === void 0 ? void 0 : _slots$operateEnd.call(slots)]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1793
+ }
1794
+ }, omit(slots, "default", "divide", "operateStart", "operateCenter", "operateEnd")));
1795
+ };
1796
+ }
1797
+ });
1798
+ };
1799
+
1800
+ var proCurdListProps = function proCurdListProps() {
1801
+ return {
1802
+ /**
1803
+ * extra 是否放到SearchForm中
1804
+ */
1805
+ extraInSearch: {
1806
+ type: Boolean,
1807
+ "default": undefined
1808
+ },
1809
+ //search
1810
+ searchProps: {
1811
+ type: Object
1812
+ },
1813
+ //table
1814
+ tableProps: {
1815
+ type: Object
1816
+ },
1817
+ //pageState
1818
+ pageState: {
1819
+ type: Object
1820
+ }
1821
+ };
1822
+ };
1823
+
1824
+ var createCurdList = function createCurdList(SearchForm, Table) {
1825
+ return defineComponent({
1826
+ props: _objectSpread2({}, proCurdListProps()),
1827
+ setup: function setup(props, _ref) {
1828
+ var slots = _ref.slots;
1829
+
1830
+ var _useProCurd = useProCurd(),
1831
+ elementMap = _useProCurd.elementMap,
1832
+ formElementMap = _useProCurd.formElementMap,
1833
+ curdState = _useProCurd.curdState,
1834
+ searchColumns = _useProCurd.searchColumns,
1835
+ tableColumns = _useProCurd.tableColumns,
1836
+ getOperate = _useProCurd.getOperate,
1837
+ sendCurdEvent = _useProCurd.sendCurdEvent;
1838
+ /******************* search pagination ********************/
1839
+
1840
+
1841
+ var pageState = props.pageState || reactive(_objectSpread2({}, defaultPage));
1842
+ var prevValues;
1843
+
1844
+ var handleSearch = function handleSearch() {
1845
+ sendCurdEvent({
1846
+ action: CurdAction.LIST,
1847
+ type: CurdSubAction.EMIT,
1848
+ values: _objectSpread2(_objectSpread2({}, prevValues), pageState)
1849
+ });
1850
+ };
1190
1851
 
1191
- var dealEdit = function dealEdit(subAction, _ref2) {
1192
- var record = _ref2.record;
1852
+ var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
1853
+ prevValues = values;
1854
+ pageState.page = 1;
1855
+ handleSearch();
1856
+ };
1857
+ /******************* table ********************/
1193
1858
 
1194
- if (subAction === CurdSubAction.EMIT) {
1195
- router.push({
1196
- path: "".concat(route.path, "/edit"),
1197
- query: pick(record, rowKey)
1198
- });
1199
- } else if (subAction === CurdSubAction.PAGE) {
1200
- dispatch({
1201
- type: "mode",
1202
- payload: CurdCurrentMode.EDIT
1203
- });
1204
- sendRequest(CurdAction.DETAIL, route.query, rowKey);
1205
- } else if (subAction === CurdSubAction.SUCCESS) {
1206
- props.routeBack ? props.routeBack(CurdAction.EDIT) : router.go(-1);
1207
- }
1208
- };
1209
1859
 
1210
- useModuleEvent(function (_ref3) {
1211
- var type = _ref3.type,
1212
- payload = _ref3.payload,
1213
- source = _ref3.source;
1860
+ var createTableItem = function createTableItem(action) {
1861
+ var operate = getOperate(action);
1214
1862
 
1215
- if (source) {
1216
- return;
1217
- }
1863
+ var item = _objectSpread2(_objectSpread2({}, pick(operate, "label", "element", "disabled", "sort", "onClick")), {}, {
1864
+ show: !isUndefined(operate === null || operate === void 0 ? void 0 : operate.show) ? operate === null || operate === void 0 ? void 0 : operate.show : false,
1865
+ value: action
1866
+ });
1218
1867
 
1219
- var action = type;
1220
- var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
1221
- var record = payload === null || payload === void 0 ? void 0 : payload.record;
1868
+ if (!item.onClick) {
1869
+ return _objectSpread2(_objectSpread2({}, item), {}, {
1870
+ onClick: function onClick(record) {
1871
+ //默认发送事件
1872
+ sendCurdEvent({
1873
+ action: action,
1874
+ type: CurdSubAction.EMIT,
1875
+ record: record
1876
+ });
1877
+ }
1878
+ });
1879
+ }
1222
1880
 
1223
- if (action === RequestAction.Success) {
1224
- //覆盖
1225
- action = get(payload, ["requestOpts", "action"]);
1226
- subAction = CurdSubAction.SUCCESS;
1227
- }
1881
+ return item;
1882
+ }; //table操作栏 items
1228
1883
 
1229
- switch (action) {
1230
- case CurdAction.LIST:
1231
- dealList(subAction);
1232
- break;
1233
1884
 
1234
- case CurdAction.DETAIL:
1235
- dealDetail(subAction, {
1236
- record: record
1237
- });
1238
- break;
1885
+ var tableOperateItems = [createTableItem(CurdAction.DETAIL), createTableItem(CurdAction.EDIT), createTableItem(CurdAction.DELETE)]; //新配置的operate item,添加默认发送事件方法
1239
1886
 
1240
- case CurdAction.ADD:
1241
- dealAdd(subAction);
1242
- break;
1887
+ var convertOperateItems = function convertOperateItems(list) {
1888
+ return map(list, function (item) {
1889
+ if (!item.onClick) {
1890
+ return _objectSpread2(_objectSpread2({}, item), {}, {
1891
+ onClick: function onClick(record) {
1892
+ sendCurdEvent({
1893
+ action: "operate",
1894
+ type: item.value,
1895
+ record: record
1896
+ });
1897
+ }
1898
+ });
1899
+ }
1243
1900
 
1244
- case CurdAction.EDIT:
1245
- dealEdit(subAction, {
1246
- record: record
1247
- });
1248
- break;
1249
- }
1250
- });
1251
- return function () {
1252
- return null;
1253
- };
1254
- }
1255
- });
1256
- var ProPageCurd = defineComponent({
1257
- props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
1258
- setup: function setup(props, _ref4) {
1259
- var slots = _ref4.slots;
1260
- var invalidKeys = keys(PageCurd.props);
1261
- return function () {
1262
- var _slots$default;
1901
+ return item;
1902
+ });
1903
+ };
1263
1904
 
1264
- return createVNode(ProCurd, omit(props, invalidKeys), {
1265
- "default": function _default() {
1266
- return [createVNode(PageCurd, pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1267
- }
1268
- });
1269
- };
1270
- }
1271
- });
1905
+ return function () {
1906
+ var _props$searchProps, _slots$divide, _curdState$listData, _slots$divide2, _slots$footerStart, _slots$pagination, _curdState$listData2, _slots$footerEnd;
1907
+
1908
+ var tableProps = props.tableProps;
1909
+ var extra = slots.extra ? createVNode("div", {
1910
+ "class": "pro-curd-list-extra"
1911
+ }, [slots.extra()]) : null;
1912
+ return createVNode(Fragment, null, [createVNode(SearchForm, mergeProps({
1913
+ "formElementMap": formElementMap
1914
+ }, omit(props.searchProps, "slots"), {
1915
+ "columns": searchColumns.value,
1916
+ "onFinish": executeSearchWithResetPage
1917
+ }), _objectSpread2({
1918
+ "default": function _default() {
1919
+ return [props.extraInSearch && extra];
1920
+ }
1921
+ }, (_props$searchProps = props.searchProps) === null || _props$searchProps === void 0 ? void 0 : _props$searchProps.slots)), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !props.extraInSearch && extra, slots.table ? slots.table() : createVNode(Table, mergeProps({
1922
+ "elementMap": elementMap
1923
+ }, omit(tableProps, "slots", "operate"), {
1924
+ "operate": mergeWith({
1925
+ items: tableOperateItems
1926
+ }, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate, function (objValue, srcValue) {
1927
+ if (isArray(objValue) && isArray(srcValue)) {
1928
+ return concat(objValue, convertOperateItems(srcValue));
1929
+ }
1930
+ }),
1931
+ "paginationState": {
1932
+ page: pageState.page,
1933
+ pageSize: pageState.pageSize
1934
+ },
1935
+ "columns": tableColumns.value,
1936
+ "loading": curdState.listLoading,
1937
+ "dataSource": (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
1938
+ }), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), createVNode("div", {
1939
+ "class": "pro-curd-list-footer"
1940
+ }, [(_slots$footerStart = slots.footerStart) === null || _slots$footerStart === void 0 ? void 0 : _slots$footerStart.call(slots), (_slots$pagination = slots.pagination) === null || _slots$pagination === void 0 ? void 0 : _slots$pagination.call(slots, pageState, (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total, handleSearch), (_slots$footerEnd = slots.footerEnd) === null || _slots$footerEnd === void 0 ? void 0 : _slots$footerEnd.call(slots)])]);
1941
+ };
1942
+ }
1943
+ });
1944
+ };
1272
1945
 
1273
1946
  var ProFormKey = Symbol("pro-form");
1274
1947
  var useProForm = function useProForm() {
@@ -1368,65 +2041,120 @@ var proFormProps = function proFormProps() {
1368
2041
  };
1369
2042
  };
1370
2043
 
1371
- var ProForm = defineComponent({
1372
- props: _objectSpread2({}, proFormProps()),
1373
- setup: function setup(props, _ref) {
1374
- var slots = _ref.slots;
1375
- var formState = props.model || reactive({}); //组件状态相关
2044
+ var createForm = function createForm(Form, Grid) {
2045
+ return defineComponent({
2046
+ inheritAttrs: false,
2047
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), proFormProps()), omit(Grid.props, "items")),
2048
+ setup: function setup(props, _ref) {
2049
+ var slots = _ref.slots,
2050
+ emit = _ref.emit,
2051
+ expose = _ref.expose,
2052
+ attrs = _ref.attrs;
2053
+ var formState = props.model || reactive({}); //组件状态相关
2054
+
2055
+ var showState = props.showState || reactive({});
2056
+ var readonlyState = props.readonlyState || reactive({});
2057
+ var disableState = props.disableState || reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
2058
+
2059
+ useEffect(function () {
2060
+ if (props.showStateRules) {
2061
+ forEach(props.showStateRules, function (fn, key) {
2062
+ showState[key] = fn(formState);
2063
+ });
2064
+ }
1376
2065
 
1377
- var showState = props.showState || reactive({});
1378
- var readonlyState = props.readonlyState || reactive({});
1379
- var disableState = props.disableState || reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
2066
+ if (props.readonlyStateRules) {
2067
+ forEach(props.readonlyStateRules, function (fn, key) {
2068
+ readonlyState[key] = fn(formState);
2069
+ });
2070
+ }
1380
2071
 
1381
- useEffect(function () {
1382
- if (props.showStateRules) {
1383
- forEach(props.showStateRules, function (fn, key) {
1384
- showState[key] = fn(formState);
1385
- });
1386
- }
2072
+ if (props.disableStateRules) {
2073
+ forEach(props.disableStateRules, function (fn, key) {
2074
+ disableState[key] = fn(formState);
2075
+ });
2076
+ }
2077
+ }, formState); //readonly
1387
2078
 
1388
- if (props.readonlyStateRules) {
1389
- forEach(props.readonlyStateRules, function (fn, key) {
1390
- readonlyState[key] = fn(formState);
1391
- });
1392
- }
2079
+ var readonly = computed(function () {
2080
+ return props.readonly;
2081
+ }); //columns合并
1393
2082
 
1394
- if (props.disableStateRules) {
1395
- forEach(props.disableStateRules, function (fn, key) {
1396
- disableState[key] = fn(formState);
2083
+ var columns = computed(function () {
2084
+ return mergeStateToList(props.columns, props.columnState, function (item) {
2085
+ return getColumnFormItemName(item);
1397
2086
  });
1398
- }
1399
- }, formState); //转换为ref对象
1400
-
1401
- var readonly = computed(function () {
1402
- return props.readonly;
1403
- });
1404
- var columns = computed(function () {
1405
- return mergeStateToList(props.columns, props.columnState, function (item) {
1406
- return getColumnFormItemName(item);
1407
2087
  });
1408
- });
1409
- provideProForm(_objectSpread2({
1410
- formState: formState,
1411
- showState: showState,
1412
- readonlyState: readonlyState,
1413
- disableState: disableState,
1414
- //
1415
- elementMap: props.elementMap,
1416
- formElementMap: props.formElementMap,
1417
- //
1418
- readonly: readonly,
1419
- //
1420
- columns: columns
1421
- }, props.provideExtra));
1422
- return function () {
1423
- var _slots$default;
1424
2088
 
1425
- // console.log("########", columns.value, props.columns, props.columnState);
1426
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1427
- };
1428
- }
1429
- });
2089
+ var handleFinish = function handleFinish(values) {
2090
+ //删除不显示的值再触发事件
2091
+ var showValues = getValidValues(values, showState, props.showStateRules);
2092
+ emit("finish", showValues, values);
2093
+ };
2094
+
2095
+ var formRef = ref();
2096
+ expose({
2097
+ submit: function submit() {
2098
+ var _formRef$value;
2099
+
2100
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
2101
+ },
2102
+ resetFields: function resetFields() {
2103
+ var _formRef$value2;
2104
+
2105
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
2106
+ params[_key] = arguments[_key];
2107
+ }
2108
+
2109
+ (_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.resetFields.apply(_formRef$value2, params);
2110
+ }
2111
+ });
2112
+ provideProForm(_objectSpread2({
2113
+ formState: formState,
2114
+ showState: showState,
2115
+ readonlyState: readonlyState,
2116
+ disableState: disableState,
2117
+ //
2118
+ elementMap: props.elementMap,
2119
+ formElementMap: props.formElementMap,
2120
+ //
2121
+ readonly: readonly,
2122
+ //
2123
+ columns: columns,
2124
+ //
2125
+ formRef: formRef
2126
+ }, props.provideExtra));
2127
+ var invalidKeys = keys(proFormProps());
2128
+ var gridKeys = keys(omit(Grid.props, "items"));
2129
+ return function () {
2130
+ var _slots$start, _slots$default;
2131
+
2132
+ return createVNode(Form, mergeProps({
2133
+ "ref": formRef
2134
+ }, omit(attrs, "onFinish"), omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), _toConsumableArray(gridKeys), ["onFinish"])), {
2135
+ "model": formState,
2136
+ "onFinish": handleFinish
2137
+ }), _objectSpread2({
2138
+ "default": function _default() {
2139
+ return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), props.formElementMap && size(columns.value) > 0 && createVNode(Fragment, null, [props.row ? createVNode(Grid, {
2140
+ "row": props.row,
2141
+ "col": props.col,
2142
+ "items": map(columns.value, function (item) {
2143
+ return {
2144
+ rowKey: getColumnFormItemName(item),
2145
+ vNode: getFormItemEl(props.formElementMap, item, props.needRules),
2146
+ col: get(item, ["extra", "col"])
2147
+ };
2148
+ })
2149
+ }, null) : map(columns.value, function (item) {
2150
+ return getFormItemEl(props.formElementMap, item, props.needRules);
2151
+ })]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
2152
+ }
2153
+ }, omit(slots, "default")));
2154
+ };
2155
+ }
2156
+ });
2157
+ };
1430
2158
 
1431
2159
  var SearchMode;
1432
2160
 
@@ -1475,6 +2203,11 @@ var proSearchFormProps = function proSearchFormProps() {
1475
2203
  debounceKeys: {
1476
2204
  type: Array
1477
2205
  },
2206
+ //默认 valueType 为 text 的控件会debounce处理
2207
+ debounceTypes: {
2208
+ type: Array,
2209
+ "default": ["text"]
2210
+ },
1478
2211
  debounceTime: {
1479
2212
  type: Number,
1480
2213
  "default": 800
@@ -1486,62 +2219,74 @@ var proSearchFormProps = function proSearchFormProps() {
1486
2219
  * 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
1487
2220
  * 针对传入的model(监听对象)做相应的finish(回调)处理
1488
2221
  */
1489
- var ProSearchForm = defineComponent({
1490
- props: _objectSpread2({}, proSearchFormProps()),
1491
- setup: function setup(props, _ref) {
1492
- var emit = _ref.emit;
1493
- //根据column valueType 算出默认需要debounce处理的属性集合
1494
- var defaultDebounceKeys = map(filter$1(props.columns, function (column) {
1495
- var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
1496
-
1497
- return valueType === "text";
1498
- }), function (column) {
1499
- return getColumnFormItemName(column);
1500
- });
2222
+ var createSearchForm = function createSearchForm(Form, Props) {
2223
+ return defineComponent({
2224
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), Props), proSearchFormProps()),
2225
+ setup: function setup(props, _ref) {
2226
+ var slots = _ref.slots;
2227
+ var formState = props.model || reactive({});
2228
+ var valueTypeSet = new Set(props.debounceTypes); //根据column valueType 算出默认需要debounce处理的属性集合
2229
+
2230
+ var defaultDebounceKeys = map(filter$1(props.columns, function (column) {
2231
+ var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
2232
+
2233
+ return valueTypeSet.has(valueType);
2234
+ }), function (column) {
2235
+ return getColumnFormItemName(column);
2236
+ });
2237
+ var formRef = ref();
1501
2238
 
1502
- var handleFinish = function handleFinish() {
1503
- emit("finish");
1504
- };
2239
+ var handleFinish = function handleFinish() {
2240
+ var _formRef$value;
1505
2241
 
1506
- var debounceFinish = debounce(function () {
1507
- handleFinish();
1508
- }, props.debounceTime); //初始化
2242
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
2243
+ };
1509
2244
 
1510
- useEffect(function () {
1511
- if (props.initEmit) {
2245
+ var debounceFinish = debounce(function () {
1512
2246
  handleFinish();
1513
- }
1514
- }, []);
2247
+ }, props.debounceTime); //初始化
1515
2248
 
1516
- var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
1517
- return some(debounceKeys, function (key) {
1518
- return get(state, key) !== get(prevState, key);
1519
- });
1520
- }; //监听
2249
+ useEffect(function () {
2250
+ if (props.initEmit) {
2251
+ handleFinish();
2252
+ }
2253
+ }, []);
1521
2254
 
2255
+ var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
2256
+ return some(debounceKeys, function (key) {
2257
+ return get(state, key) !== get(prevState, key);
2258
+ });
2259
+ }; //监听
1522
2260
 
1523
- useWatch(function (state, prevState) {
1524
- if (props.searchMode !== SearchMode.AUTO) {
1525
- return;
1526
- } //如果改变的值中包括debounceKeys中注册的 延时触发
1527
2261
 
2262
+ useWatch(function (state, prevState) {
2263
+ if (props.searchMode !== SearchMode.AUTO) {
2264
+ return;
2265
+ } //如果改变的值中包括debounceKeys中注册的 延时触发
1528
2266
 
1529
- var debounceKeys = size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
1530
2267
 
1531
- if (size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
1532
- debounceFinish();
1533
- return;
1534
- }
2268
+ var debounceKeys = size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
1535
2269
 
1536
- handleFinish();
1537
- }, function () {
1538
- return clone(props.model);
1539
- });
1540
- return function () {
1541
- return null;
1542
- };
1543
- }
1544
- });
2270
+ if (size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
2271
+ debounceFinish();
2272
+ return;
2273
+ }
2274
+
2275
+ handleFinish();
2276
+ }, function () {
2277
+ return clone(formState);
2278
+ });
2279
+ var invalidKeys = keys(omit(proSearchFormProps(), "columns"));
2280
+ return function () {
2281
+ return createVNode(Form, mergeProps({
2282
+ "ref": formRef
2283
+ }, omit(props, invalidKeys), {
2284
+ "model": formState
2285
+ }), slots);
2286
+ };
2287
+ }
2288
+ });
2289
+ };
1545
2290
 
1546
2291
  /**
1547
2292
  * ProFormList ctx
@@ -1575,86 +2320,83 @@ var FormListProvider = defineComponent({
1575
2320
  }
1576
2321
  });
1577
2322
 
1578
- var proFormListProps = function proFormListProps() {
1579
- return {
1580
- //每行默认id
1581
- rowKey: {
1582
- type: String,
1583
- "default": "id"
1584
- },
1585
- //name
1586
- name: {
1587
- type: [String, Number, Array],
1588
- required: true
1589
- }
1590
- };
1591
- };
1592
-
1593
- var ProFormList = defineComponent({
1594
- props: _objectSpread2({}, proFormListProps()),
1595
- setup: function setup(props, _ref2) {
1596
- var slots = _ref2.slots;
1597
-
1598
- var _useProForm = useProForm(),
1599
- formState = _useProForm.formState,
1600
- readonly = _useProForm.readonly;
2323
+ var createFormList = function createFormList(FormItem) {
2324
+ return defineComponent({
2325
+ props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
2326
+ //每行默认id
2327
+ rowKey: {
2328
+ type: String,
2329
+ "default": "id"
2330
+ }
2331
+ }),
2332
+ setup: function setup(props, _ref2) {
2333
+ var slots = _ref2.slots;
1601
2334
 
1602
- var formListCtx = useProFormList();
1603
- var nameList = convertPathToList(props.name);
1604
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
2335
+ var _useProForm = useProForm(),
2336
+ formState = _useProForm.formState,
2337
+ readonly = _useProForm.readonly;
1605
2338
 
1606
- var handleAdd = function handleAdd() {
1607
- var targetList = get(formState, path);
2339
+ var formListCtx = useProFormList();
2340
+ var nameList = convertPathToList(props.name);
2341
+ var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
1608
2342
 
1609
- if (!isArray(targetList)) {
1610
- targetList = [];
1611
- }
2343
+ var handleAdd = function handleAdd() {
2344
+ var targetList = get(formState, path);
1612
2345
 
1613
- targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
1614
- set(formState, path, targetList);
1615
- };
2346
+ if (!isArray(targetList)) {
2347
+ targetList = [];
2348
+ }
1616
2349
 
1617
- var handleRemove = function handleRemove(index) {
1618
- var targetList = get(formState, path);
2350
+ targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
2351
+ set(formState, path, targetList);
2352
+ };
1619
2353
 
1620
- if (size(targetList) <= 0) {
1621
- return;
1622
- }
2354
+ var handleRemove = function handleRemove(index) {
2355
+ var targetList = get(formState, path);
1623
2356
 
1624
- targetList.splice(index, 1);
1625
- };
2357
+ if (size(targetList) <= 0) {
2358
+ return;
2359
+ }
1626
2360
 
1627
- return function () {
1628
- var _slots$add;
2361
+ targetList.splice(index, 1);
2362
+ };
1629
2363
 
1630
- return createVNode(Fragment, null, [map(get(formState, path), function (item, index) {
1631
- var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2364
+ return function () {
2365
+ var _slots$add;
1632
2366
 
1633
- return createVNode(FormListProvider, {
1634
- "key": index,
1635
- "pathList": [].concat(_toConsumableArray(path), [index])
1636
- }, {
2367
+ return createVNode(FormItem, omit(props, "rowKey"), {
1637
2368
  "default": function _default() {
1638
- return [createVNode("div", {
1639
- "class": "pro-form-list-item"
1640
- }, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && createVNode(Fragment, null, [createVNode("div", {
1641
- "class": "pro-form-list-item-add",
2369
+ return [map(get(formState, path), function (item, index) {
2370
+ var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2371
+
2372
+ return createVNode(FormListProvider, {
2373
+ "key": item[props.rowKey] || index,
2374
+ "pathList": [].concat(_toConsumableArray(path), [index])
2375
+ }, {
2376
+ "default": function _default() {
2377
+ return [createVNode("div", {
2378
+ "class": "pro-form-list-item"
2379
+ }, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && createVNode(Fragment, null, [createVNode("div", {
2380
+ "class": "pro-form-list-item-add",
2381
+ "onClick": handleAdd
2382
+ }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), createVNode("div", {
2383
+ "class": "pro-form-list-item-minus",
2384
+ "onClick": function onClick() {
2385
+ return handleRemove(index);
2386
+ }
2387
+ }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
2388
+ }
2389
+ });
2390
+ }), !readonly.value && createVNode("div", {
2391
+ "class": "pro-form-list-add",
1642
2392
  "onClick": handleAdd
1643
- }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), createVNode("div", {
1644
- "class": "pro-form-list-item-minus",
1645
- "onClick": function onClick() {
1646
- return handleRemove(index);
1647
- }
1648
- }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
2393
+ }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
1649
2394
  }
1650
2395
  });
1651
- }), !readonly.value && createVNode("div", {
1652
- "class": "pro-form-list-add",
1653
- "onClick": handleAdd
1654
- }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])]);
1655
- };
1656
- }
1657
- });
2396
+ };
2397
+ }
2398
+ });
2399
+ };
1658
2400
 
1659
2401
  var proFormItemProps = function proFormItemProps() {
1660
2402
  return {
@@ -1780,13 +2522,6 @@ var proTableProps = function proTableProps() {
1780
2522
  type: Object
1781
2523
  },
1782
2524
 
1783
- /**
1784
- * loading
1785
- */
1786
- loading: {
1787
- type: Boolean
1788
- },
1789
-
1790
2525
  /**
1791
2526
  * 序号
1792
2527
  */
@@ -1797,7 +2532,7 @@ var proTableProps = function proTableProps() {
1797
2532
  /**
1798
2533
  * 分页
1799
2534
  */
1800
- pagination: {
2535
+ paginationState: {
1801
2536
  type: Object
1802
2537
  },
1803
2538
 
@@ -1810,62 +2545,35 @@ var proTableProps = function proTableProps() {
1810
2545
  };
1811
2546
  };
1812
2547
 
1813
- var ProTable = defineComponent({
1814
- props: _objectSpread2({}, proTableProps()),
1815
- setup: function setup(props, _ref) {
1816
- var slots = _ref.slots;
1817
- var columns = computed(function () {
1818
- var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
1819
- return item.dataIndex;
1820
- }); //根据valueType选择对应的展示组件
1821
-
1822
- var columns = map(mergeColumns, function (item) {
1823
- //merge公共item
1824
- var nextItem = merge$1(props.column, item);
1825
-
1826
- if (!item.customRender) {
1827
- nextItem.customRender = function (_ref2) {
1828
- var text = _ref2.text;
1829
- var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
1830
- showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
1831
- content: props.columnEmptyText
1832
- })
1833
- }), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
1834
-
1835
- return vn || text || props.columnEmptyText;
1836
- };
1837
- }
1838
-
1839
- return nextItem;
1840
- }); //处理序号
2548
+ var createTable = function createTable(Table, Props) {
2549
+ return defineComponent({
2550
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Table.props), Props), proTableProps()),
2551
+ setup: function setup(props, _ref) {
2552
+ var slots = _ref.slots;
1841
2553
 
1842
- if (props.serialNumber) {
1843
- columns.unshift(_objectSpread2(_objectSpread2({
2554
+ var createNumberColumn = function createNumberColumn() {
2555
+ return _objectSpread2(_objectSpread2({
1844
2556
  title: "序号",
1845
2557
  dataIndex: "serialNumber",
1846
2558
  width: 80
1847
2559
  }, props.column), {}, {
1848
- // @ts-ignore
1849
- customRender: function customRender(_ref3) {
1850
- var _props$pagination, _props$pagination2;
2560
+ customRender: function customRender(_ref2) {
2561
+ var _props$paginationStat, _props$paginationStat2;
1851
2562
 
1852
- var index = _ref3.index;
2563
+ var index = _ref2.index;
1853
2564
 
1854
- if ((_props$pagination = props.pagination) !== null && _props$pagination !== void 0 && _props$pagination.page && (_props$pagination2 = props.pagination) !== null && _props$pagination2 !== void 0 && _props$pagination2.pageSize) {
1855
- return props.pagination.pageSize * (props.pagination.page - 1) + index + 1;
2565
+ if ((_props$paginationStat = props.paginationState) !== null && _props$paginationStat !== void 0 && _props$paginationStat.page && (_props$paginationStat2 = props.paginationState) !== null && _props$paginationStat2 !== void 0 && _props$paginationStat2.pageSize) {
2566
+ return props.paginationState.pageSize * (props.paginationState.page - 1) + index + 1;
1856
2567
  }
1857
2568
 
1858
2569
  return index + 1;
1859
2570
  }
1860
- }));
1861
- }
2571
+ });
2572
+ };
1862
2573
 
1863
- var operate = props.operate; //处理operate
2574
+ var createOperateColumn = function createOperateColumn() {
2575
+ var operate = props.operate; //将itemState补充的信息拼到item中
1864
2576
 
1865
- if (operate && operate.items && some(operate.items, function (item) {
1866
- return item.show;
1867
- })) {
1868
- //将itemState补充的信息拼到item中
1869
2577
  var items = map(operate.items, function (i) {
1870
2578
  return _objectSpread2(_objectSpread2({}, i), get(operate.itemState, i.value));
1871
2579
  }); //排序
@@ -1873,14 +2581,14 @@ var ProTable = defineComponent({
1873
2581
  var sortedItems = sortBy(items, function (item) {
1874
2582
  return item.sort;
1875
2583
  });
1876
- columns.push(_objectSpread2(_objectSpread2({
2584
+ return _objectSpread2(_objectSpread2(_objectSpread2({}, props.column), {}, {
1877
2585
  title: "操作",
1878
2586
  dataIndex: "operate",
1879
2587
  fixed: "right"
1880
- }, props.column), {}, {
1881
- customRender: function customRender(_ref4) {
1882
- var record = _ref4.record;
1883
- var validItems = filter$1(sortedItems, function (item) {
2588
+ }, operate.column), {}, {
2589
+ customRender: function customRender(_ref3) {
2590
+ var record = _ref3.record;
2591
+ var showItems = filter$1(sortedItems, function (item) {
1884
2592
  if (item.show && isFunction(item.show)) {
1885
2593
  return item.show(record);
1886
2594
  }
@@ -1893,7 +2601,7 @@ var ProTable = defineComponent({
1893
2601
  });
1894
2602
  return createVNode("div", {
1895
2603
  "class": "pro-table-operate"
1896
- }, [map(validItems, function (item) {
2604
+ }, [map(showItems, function (item) {
1897
2605
  //自定义
1898
2606
  if (isFunction(item.element)) {
1899
2607
  return item.element(record, item);
@@ -1910,20 +2618,62 @@ var ProTable = defineComponent({
1910
2618
  }, [item.label]);
1911
2619
  })]);
1912
2620
  }
1913
- }, operate.column));
1914
- }
2621
+ });
2622
+ };
1915
2623
 
1916
- return columns;
1917
- });
1918
- provideProTable(_objectSpread2({
1919
- columns: columns
1920
- }, props.provideExtra));
1921
- return function () {
1922
- var _slots$default;
2624
+ var columns = computed(function () {
2625
+ var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
2626
+ return item.dataIndex;
2627
+ }); //根据valueType选择对应的展示组件
2628
+
2629
+ var columns = map(mergeColumns, function (item) {
2630
+ //merge公共item
2631
+ var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
2632
+
2633
+ if (!item.customRender) {
2634
+ nextItem.customRender = function (_ref4) {
2635
+ var text = _ref4.text;
2636
+ var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
2637
+ showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
2638
+ content: props.columnEmptyText
2639
+ })
2640
+ }), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
2641
+
2642
+ return vn || text || props.columnEmptyText;
2643
+ };
2644
+ }
1923
2645
 
1924
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1925
- };
1926
- }
1927
- });
2646
+ return nextItem;
2647
+ }); //处理序号
2648
+
2649
+ if (props.serialNumber) {
2650
+ columns.unshift(createNumberColumn());
2651
+ } //处理operate
2652
+
2653
+
2654
+ if (props.operate && props.operate.items && some(props.operate.items, function (item) {
2655
+ return item.show;
2656
+ })) {
2657
+ columns.push(createOperateColumn());
2658
+ }
2659
+
2660
+ return columns;
2661
+ });
2662
+ var tableRef = ref();
2663
+ provideProTable(_objectSpread2({
2664
+ columns: columns,
2665
+ tableRef: tableRef
2666
+ }, props.provideExtra));
2667
+ var invalidKeys = keys(proTableProps());
2668
+ return function () {
2669
+ return createVNode(Table, mergeProps({
2670
+ "ref": tableRef
2671
+ }, omit(props, invalidKeys), {
2672
+ "columns": columns.value
2673
+ }), slots);
2674
+ };
2675
+ }
2676
+ });
2677
+ };
1928
2678
 
1929
- export { CurdAction, CurdAddAction, CurdCurrentMode, CurdSubAction, ProCurd, ProForm, ProFormList, ProModalCurd, ProModule, ProPageCurd, ProSearchForm, ProTable, RequestAction, SearchMode, convertPathToList, createFormItemCompFn, defaultPage, generateId, getColumnFormItemName, getColumnValueType, getFormItemEl, getItemEl, getValidValues, mergeStateToList, provideProCurd, provideProModule, useComposeRequestActor, useDoneRequestActor, useFailedRequestActor, useModuleEvent, useProCurd, useProForm, useProFormList, useProModule, useProTable };
2679
+ export { CurdAction, CurdAddAction, CurdCurrentMode, CurdSubAction, ProCurd, ProModalCurd, ProModule, ProPageCurd, RequestAction, SearchMode, Wrapper, convertPathToList, createCurdDesc, createCurdForm, createCurdList, createExpose, createForm, createFormItemCompFn, createFormList, createGrid, createSearchForm, createTable, defaultPage, findTargetInTree, findTargetListInTree, generateId, getColumnFormItemName, getColumnValueType, getFirstPropName, getFormItemEl, getItemEl, getValidValues, mergeStateToList, provideProCurd, provideProModule, renderElement, renderElements, useComposeRequestActor, useDoneRequestActor, useFailedRequestActor, useModuleEvent, useProCurd, useProForm, useProFormList, useProModule, useProTable };