@vue-start/pro 0.3.1 → 0.4.1

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.js CHANGED
@@ -83,6 +83,50 @@ function _nonIterableSpread() {
83
83
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
84
84
  }
85
85
 
86
+ function _isSlot$1(s) {
87
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
88
+ }
89
+
90
+ var proGridProps = function proGridProps() {
91
+ return {
92
+ row: {
93
+ type: Object,
94
+ "default": undefined
95
+ },
96
+ col: {
97
+ type: Object
98
+ },
99
+ items: {
100
+ type: Array
101
+ }
102
+ };
103
+ };
104
+
105
+ var createGrid = function createGrid(Row, Col) {
106
+ return vue.defineComponent({
107
+ props: _objectSpread2({}, proGridProps()),
108
+ setup: function setup(props) {
109
+ return function () {
110
+ var _slot;
111
+
112
+ return vue.createVNode(Row, props.row, _isSlot$1(_slot = lodash.map(props.items, function (item) {
113
+ return vue.createVNode(Col, vue.mergeProps({
114
+ "key": item.rowKey
115
+ }, props.col, item.col), {
116
+ "default": function _default() {
117
+ return [item.vNode];
118
+ }
119
+ });
120
+ })) ? _slot : {
121
+ "default": function _default() {
122
+ return [_slot];
123
+ }
124
+ });
125
+ };
126
+ }
127
+ });
128
+ };
129
+
86
130
  var createUseRequestActor = function createUseRequestActor(filterFun) {
87
131
  return function (actors, callback) {
88
132
  var _useRequestProvide = request.useRequestProvide(),
@@ -155,94 +199,12 @@ var useComposeRequestActor = function useComposeRequestActor(actors, options, ca
155
199
  }, []);
156
200
  };
157
201
 
158
- /**
159
- * 剔除showState或showStateRules规则为!true的值
160
- * @param values
161
- * @param showState
162
- * @param showStateRules
163
- */
164
- var getValidValues = function getValidValues(values, showState, showStateRules) {
165
- if (showState) {
166
- var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
167
- return !showState[key];
168
- });
169
- return lodash.omit(values, invalidKeys);
170
- }
171
-
172
- if (showStateRules) {
173
- var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
174
- return !showStateRules[key](values);
175
- });
176
-
177
- return lodash.omit(values, _invalidKeys);
178
- }
179
-
180
- return values;
181
- };
182
- /**
183
- * string类型的path转为arr
184
- * @param path
185
- */
186
-
187
- var convertPathToList = function convertPathToList(path) {
188
- if (!path) {
189
- return undefined;
190
- }
191
-
192
- if (lodash.isArray(path)) {
193
- return path;
194
- }
195
-
196
- if (path && lodash.isString(path) && path.indexOf(".") > 0) {
197
- return lodash.split(path, ".");
198
- }
199
-
200
- return [path];
201
- };
202
- /**
203
- * 唯一id
204
- */
205
-
206
- var generateId = function generateId() {
207
- return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
208
- };
209
- /**
210
- * 将listState 中的数据通过id merge到 list item中
211
- * ps:数组会替换
212
- * @param list
213
- * @param listState
214
- * @param id
215
- */
216
-
217
- var mergeStateToList = function mergeStateToList(list, listState, id) {
218
- if (!listState || !id) {
219
- return list;
220
- }
221
-
222
- return lodash.map(list, function (item) {
223
- var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
224
-
225
- var stateData = lodash.get(listState, idName);
226
-
227
- if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
228
- return item;
229
- } //只有是对象(键值对)才合并
230
-
231
-
232
- return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
233
- //如果是数组,替换
234
- if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
235
- return srcValue;
236
- }
237
- });
238
- });
239
- };
202
+ /***************************************** curd模式 *****************************************/
240
203
 
241
204
  /**
242
205
  * 获取Column的valueType,默认"text"
243
206
  * @param column
244
207
  */
245
-
246
208
  var getColumnValueType = function getColumnValueType(column) {
247
209
  return column.formValueType || column.valueType || "text";
248
210
  };
@@ -308,6 +270,213 @@ var getItemEl = function getItemEl(elementMap, column, value) {
308
270
  value: value
309
271
  }), (_column$formFieldProp2 = column.formFieldProps) === null || _column$formFieldProp2 === void 0 ? void 0 : _column$formFieldProp2.slots);
310
272
  };
273
+ /***************************************** 通用模式 *****************************************/
274
+
275
+ var renderElements = function renderElements(elementMap, elementConfigs) {
276
+ return lodash.map(elementConfigs, function (elementConfig) {
277
+ return renderElement(elementMap, elementConfig);
278
+ });
279
+ };
280
+ /**
281
+ * props转换
282
+ */
283
+
284
+ var convertPropsEl = function convertPropsEl(elementMap, elementConfig) {
285
+ var _elementConfig$highCo;
286
+
287
+ var elementProps = elementConfig.elementProps;
288
+
289
+ var nextProps = _objectSpread2({}, elementConfig.elementProps);
290
+
291
+ lodash.forEach((_elementConfig$highCo = elementConfig.highConfig$) === null || _elementConfig$highCo === void 0 ? void 0 : _elementConfig$highCo.registerPropsTrans, function (item) {
292
+ var target = lodash.get(elementProps, item.name);
293
+
294
+ if (!target || vue.isVNode(target)) {
295
+ return;
296
+ }
297
+
298
+ if (lodash.isArray(target)) {
299
+ //如果list中存在VNode,不转换
300
+ if (lodash.some(target, function (sub) {
301
+ return vue.isVNode(sub);
302
+ })) {
303
+ return;
304
+ } //如果碰到特殊场景,可以替换成单个渲染模式
305
+
306
+
307
+ lodash.set(nextProps, item.name, renderElements(elementMap, target));
308
+ return;
309
+ }
310
+
311
+ if (!target.elementType) {
312
+ return;
313
+ }
314
+
315
+ if (item.isFun) {
316
+ lodash.set(nextProps, item.name, function () {
317
+ for (var _len = arguments.length, params$ = new Array(_len), _key = 0; _key < _len; _key++) {
318
+ params$[_key] = arguments[_key];
319
+ }
320
+
321
+ var ep = item.needParams ? _objectSpread2(_objectSpread2({}, target.elementProps), {}, {
322
+ params$: params$
323
+ }) : target.elementProps;
324
+ return renderElement(elementMap, _objectSpread2(_objectSpread2({}, target), {}, {
325
+ elementProps: ep
326
+ }));
327
+ });
328
+ } else {
329
+ lodash.set(nextProps, item.name, renderElement(elementMap, target));
330
+ }
331
+ });
332
+ return nextProps;
333
+ };
334
+ /**
335
+ * slots转换
336
+ */
337
+
338
+
339
+ var convertSlots = function convertSlots(elementMap, elementConfig) {
340
+ var children = lodash.size(elementConfig.children) > 0 ? renderElements(elementMap, elementConfig.children) : undefined; //children插槽名称
341
+
342
+ var childrenSlotName = elementConfig.childrenSlotName || "default";
343
+ var validSlots = lodash.omit(elementConfig.slots, children ? childrenSlotName : ""); //如果slots注册的是 IElementConfig ,进行转换
344
+
345
+ lodash.forEach(lodash.keys(validSlots), function (k) {
346
+ var v = validSlots[k]; //IElementConfig
347
+
348
+ if (v && !lodash.isFunction(v) && v.elementType) {
349
+ validSlots[k] = function () {
350
+ for (var _len2 = arguments.length, params$ = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
351
+ params$[_key2] = arguments[_key2];
352
+ }
353
+
354
+ //如果需要params,在props中注入 params$
355
+ var elementProps = v.needParams ? _objectSpread2(_objectSpread2({}, v.elementProps), {}, {
356
+ params$: params$
357
+ }) : v.elementProps;
358
+ return renderElement(elementMap, _objectSpread2(_objectSpread2({}, v), {}, {
359
+ elementProps: elementProps
360
+ }));
361
+ };
362
+ }
363
+ });
364
+ return _objectSpread2(_defineProperty({}, childrenSlotName, children ? function () {
365
+ return children;
366
+ } : undefined), validSlots);
367
+ };
368
+ /**
369
+ *
370
+ * @param elementMap
371
+ * @param elementConfig
372
+ */
373
+
374
+
375
+ var renderElement = function renderElement(elementMap, elementConfig) {
376
+ var El = lodash.get(elementMap, elementConfig.elementType) || elementConfig.elementType; //如果有highConfig$,包裹一层Wrapper
377
+
378
+ if (elementConfig.highConfig$) {
379
+ return vue.h(Wrapper, {
380
+ key: elementConfig.elementId,
381
+ elementMap: elementMap,
382
+ elementConfig: elementConfig
383
+ });
384
+ }
385
+
386
+ var slots = convertSlots(elementMap, elementConfig);
387
+ var elementProps = convertPropsEl(elementMap, elementConfig);
388
+ return vue.h(El, _objectSpread2({
389
+ key: elementConfig.elementId
390
+ }, elementProps), slots);
391
+ };
392
+ /**
393
+ * 获取第一层级属性名
394
+ * 如:['aaa','bbb',...] 中的 'aaa'
395
+ * 如:"aaa.bbb.ccc..." 中的 'aaa'
396
+ */
397
+
398
+ var getFirstPropName = function getFirstPropName(name) {
399
+ if (lodash.isArray(name)) {
400
+ return lodash.head(name);
401
+ } else if (lodash.isString(name) && name.indexOf(".") > 0) {
402
+ return name.substring(0, name.indexOf("."));
403
+ }
404
+
405
+ return name;
406
+ };
407
+ /**
408
+ * 处理highConfig$
409
+ */
410
+
411
+ var Wrapper = vue.defineComponent({
412
+ props: {
413
+ elementMap: {
414
+ type: Object
415
+ },
416
+ elementConfig: {
417
+ type: Object
418
+ }
419
+ },
420
+ setup: function setup(props) {
421
+ var _useProModule = useProModule(),
422
+ state = _useProModule.state,
423
+ sendEvent = _useProModule.sendEvent;
424
+
425
+ var elementMap = props.elementMap,
426
+ elementConfig = props.elementConfig;
427
+ var highConfig$ = elementConfig.highConfig$; //转换props
428
+
429
+ var elementProps = convertPropsEl(elementMap, elementConfig); //事件订阅
430
+
431
+ var events = lodash.reduce(highConfig$.registerEventList, function (pair, item) {
432
+ return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, item.name, function () {
433
+ for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
434
+ params[_key3] = arguments[_key3];
435
+ }
436
+
437
+ sendEvent({
438
+ type: item.sendEventName || elementConfig.elementId,
439
+ payload: params
440
+ });
441
+ }));
442
+ }, {}); //receiveStateList 订阅
443
+
444
+ var receiveStates = vue.computed(function () {
445
+ if (!highConfig$.registerStateList || lodash.size(highConfig$.registerStateList) <= 0) {
446
+ return undefined;
447
+ }
448
+
449
+ var changeProps = _objectSpread2({}, elementProps); //赋值 && 返回一级属性名称
450
+
451
+
452
+ var firstPropNameList = lodash.map(highConfig$.registerStateList, function (item) {
453
+ var targetName = item.mapName || item.name; //从state中取值
454
+
455
+ var value = lodash.get(state, item.name); //赋值
456
+
457
+ lodash.set(changeProps, targetName, value); //返回一级属性名称
458
+
459
+ return getFirstPropName(targetName);
460
+ });
461
+ return lodash.pick(changeProps, firstPropNameList);
462
+ });
463
+ var El = lodash.get(elementMap, elementConfig.elementType) || elementConfig.elementType;
464
+ var slots = convertSlots(elementMap, elementConfig);
465
+ return function () {
466
+ //如果标记show$值为false,不渲染组件
467
+ var show$ = lodash.get(receiveStates.value, "show$");
468
+
469
+ if (show$ === false) {
470
+ return null;
471
+ }
472
+
473
+ return vue.h(El, _objectSpread2(_objectSpread2(_objectSpread2({
474
+ key: elementConfig.elementId
475
+ }, elementProps), lodash.omit(receiveStates.value, "show$")), events), slots);
476
+ };
477
+ }
478
+ });
479
+
311
480
  var ProModuleKey = Symbol("pro-module");
312
481
  var useProModule = function useProModule() {
313
482
  return vue.inject(ProModuleKey);
@@ -330,32 +499,17 @@ var proModuleProps = function proModuleProps() {
330
499
  },
331
500
 
332
501
  /**
333
- * 配置(静态)
334
- */
335
- columns: {
336
- type: Array
337
- },
338
-
339
- /**
340
- * 配置(动态)
341
- * columns动态属性兼容
342
- */
343
- columnState: {
344
- type: Object
345
- },
346
-
347
- /**
348
- * 展示组件集
502
+ * 组件集
349
503
  */
350
504
  elementMap: {
351
505
  type: Object
352
506
  },
353
507
 
354
508
  /**
355
- * 录入组件集
509
+ * 组件描述(树)
356
510
  */
357
- formElementMap: {
358
- type: Object
511
+ elementConfigs: {
512
+ type: Array
359
513
  },
360
514
 
361
515
  /**
@@ -373,25 +527,13 @@ var ProModule = vue.defineComponent({
373
527
  var slots = _ref.slots,
374
528
  expose = _ref.expose;
375
529
 
376
- /**
377
- * columns columnState 合并
378
- */
379
- var columns = vue.computed(function () {
380
- return mergeStateToList(props.columns, props.columnState, function (item) {
381
- return getColumnFormItemName(item);
382
- });
383
- });
384
- /*********************************** 渲染组件 ***************************************/
385
- // 获取FormItem VNode
386
-
387
- var getFormItemVNode = function getFormItemVNode(column) {
388
- var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
389
- return getFormItemEl(props.formElementMap, column, needRules);
390
- }; // 获取Item VNode
391
-
530
+ /*********************************** render ***************************************/
531
+ var render = function render(elementConfig) {
532
+ if (lodash.isArray(elementConfig)) {
533
+ return renderElements(props.elementMap, elementConfig);
534
+ }
392
535
 
393
- var getItemVNode = function getItemVNode(column, value) {
394
- return getItemEl(props.elementMap, column, value);
536
+ return renderElement(props.elementMap, elementConfig);
395
537
  };
396
538
  /*********************************** 事件处理 ***************************************/
397
539
 
@@ -407,13 +549,15 @@ var ProModule = vue.defineComponent({
407
549
  var state = props.state || vue.reactive({});
408
550
 
409
551
  var dispatch = function dispatch(action) {
410
- //如果要更新的属性值是 object ,执行覆盖操作
411
- if (lodash.isObject(state[action.type])) {
412
- hooks.setReactiveValue(state[action.type], action.payload);
552
+ var prev = state[action.type];
553
+ var data = lodash.isFunction(action.payload) ? action.payload(prev) : action.payload; //如果要更新的属性值是 object ,执行覆盖操作
554
+
555
+ if (lodash.isObject(prev)) {
556
+ hooks.setReactiveValue(state[action.type], data);
413
557
  return;
414
558
  }
415
559
 
416
- state[action.type] = action.payload;
560
+ state[action.type] = data;
417
561
  };
418
562
  /*********************************** request ***************************************/
419
563
 
@@ -517,11 +661,7 @@ var ProModule = vue.defineComponent({
517
661
  }
518
662
  }, true);
519
663
  provideProModule({
520
- columns: columns,
521
- getFormItemVNode: getFormItemVNode,
522
- getItemVNode: getItemVNode,
523
664
  elementMap: props.elementMap,
524
- formElementMap: props.formElementMap,
525
665
  //
526
666
  subject$: subject$,
527
667
  sendEvent: sendEvent,
@@ -539,7 +679,7 @@ var ProModule = vue.defineComponent({
539
679
  return function () {
540
680
  var _slots$default;
541
681
 
542
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
682
+ return vue.createVNode(vue.Fragment, null, [lodash.size(props.elementConfigs) > 0 && render(props.elementConfigs), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
543
683
  };
544
684
  }
545
685
  });
@@ -618,20 +758,217 @@ exports.CurdAddAction = void 0;
618
758
  CurdAddAction["CONTINUE"] = "CONTINUE";
619
759
  })(exports.CurdAddAction || (exports.CurdAddAction = {}));
620
760
 
621
- var defaultPage = {
622
- page: 1,
623
- pageSize: 10
761
+ var treeDefaultNames = {
762
+ children: "children",
763
+ label: "label",
764
+ value: "value"
624
765
  };
766
+ /**
767
+ * 根据value从treeData中找到对象
768
+ * @param data
769
+ * @param value
770
+ * @param fieldNames
771
+ * @param cb 对象:同步 方法:回调,可以理解为异步
772
+ */
625
773
 
626
- var proCurdProps = function proCurdProps() {
627
- return {
628
- /**
629
- * 列表 或 详情 的唯一标识
630
- */
631
- rowKey: {
632
- type: String,
633
- "default": "id"
634
- },
774
+ var findTargetInTree = function findTargetInTree(data, value, fieldNames, cb) {
775
+ var index = lodash.findIndex(data, function (item) {
776
+ return lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
777
+ });
778
+
779
+ if (index > -1) {
780
+ if (lodash.isFunction(cb)) {
781
+ cb(index, data[index], data);
782
+ } else {
783
+ cb.index = index;
784
+ cb.target = data[index];
785
+ cb.list = data;
786
+ }
787
+
788
+ return;
789
+ }
790
+
791
+ lodash.forEach(data, function (item) {
792
+ var children = lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
793
+
794
+ if (lodash.size(children) > 0) {
795
+ findTargetInTree(children, value, fieldNames, cb);
796
+ }
797
+ });
798
+ };
799
+ /**
800
+ * 根据value从treeData中找出对象及父列表
801
+ * @param data
802
+ * @param value
803
+ * @param fieldNames
804
+ * @param cb
805
+ * @param parent
806
+ */
807
+
808
+ var findTargetListInTree = function findTargetListInTree(data, value, fieldNames, cb) {
809
+ var parent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
810
+ var target = lodash.find(data, function (item) {
811
+ return lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
812
+ });
813
+
814
+ if (target) {
815
+ if (lodash.isFunction(cb)) {
816
+ cb([].concat(_toConsumableArray(parent), [target]));
817
+ } else {
818
+ cb.list = [].concat(_toConsumableArray(parent), [target]);
819
+ }
820
+
821
+ return;
822
+ }
823
+
824
+ lodash.forEach(data, function (item) {
825
+ var children = lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
826
+
827
+ if (lodash.size(children) > 0) {
828
+ findTargetListInTree(children, value, fieldNames, cb, [].concat(_toConsumableArray(parent), [item]));
829
+ }
830
+ });
831
+ };
832
+
833
+ /**
834
+ * 剔除showState或showStateRules规则为!true的值
835
+ * @param values
836
+ * @param showState
837
+ * @param showStateRules
838
+ */
839
+
840
+ var getValidValues = function getValidValues(values, showState, showStateRules) {
841
+ if (showState) {
842
+ var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
843
+ return !showState[key];
844
+ });
845
+ return lodash.omit(values, invalidKeys);
846
+ }
847
+
848
+ if (showStateRules) {
849
+ var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
850
+ return !showStateRules[key](values);
851
+ });
852
+
853
+ return lodash.omit(values, _invalidKeys);
854
+ }
855
+
856
+ return values;
857
+ };
858
+ /**
859
+ * string类型的path转为arr
860
+ * @param path
861
+ */
862
+
863
+ var convertPathToList = function convertPathToList(path) {
864
+ if (!path) {
865
+ return undefined;
866
+ }
867
+
868
+ if (lodash.isArray(path)) {
869
+ return path;
870
+ }
871
+
872
+ if (path && lodash.isString(path) && path.indexOf(".") > 0) {
873
+ return lodash.split(path, ".");
874
+ }
875
+
876
+ return [path];
877
+ };
878
+ /**
879
+ * 将listState 中的数据通过id merge到 list item中
880
+ * ps:数组会替换
881
+ * 注意:mergeWith 会改变原始对象
882
+ * @param list
883
+ * @param listState
884
+ * @param id
885
+ */
886
+
887
+ var mergeStateToList = function mergeStateToList(list, listState, id) {
888
+ if (!listState || !id) {
889
+ return list;
890
+ }
891
+
892
+ return lodash.map(list, function (item) {
893
+ var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
894
+
895
+ var stateData = lodash.get(listState, idName);
896
+
897
+ if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
898
+ return item;
899
+ } //只有是对象(键值对)才合并
900
+
901
+
902
+ return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
903
+ //如果是数组,替换
904
+ if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
905
+ return srcValue;
906
+ }
907
+ });
908
+ });
909
+ };
910
+
911
+ /**
912
+ * 唯一id
913
+ */
914
+
915
+ var generateId = function generateId() {
916
+ return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
917
+ };
918
+ /**
919
+ * ref 传递
920
+ */
921
+
922
+ var createExpose = function createExpose(methods, targetRef) {
923
+ return lodash.reduce(methods, function (pair, method) {
924
+ return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, method, function () {
925
+ var _targetRef$value, _targetRef$value$meth;
926
+
927
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
928
+ params[_key] = arguments[_key];
929
+ }
930
+
931
+ 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));
932
+ }));
933
+ }, {});
934
+ };
935
+
936
+ var defaultPage = {
937
+ page: 1,
938
+ pageSize: 10
939
+ };
940
+
941
+ var proCurdProps = function proCurdProps() {
942
+ return {
943
+ /**
944
+ * 配置(静态)
945
+ */
946
+ columns: {
947
+ type: Array
948
+ },
949
+
950
+ /**
951
+ * 配置(动态)
952
+ * columns动态属性兼容
953
+ */
954
+ columnState: {
955
+ type: Object
956
+ },
957
+
958
+ /**
959
+ * 录入组件集
960
+ */
961
+ formElementMap: {
962
+ type: Object
963
+ },
964
+
965
+ /**
966
+ * 列表 或 详情 的唯一标识
967
+ */
968
+ rowKey: {
969
+ type: String,
970
+ "default": "id"
971
+ },
635
972
 
636
973
  /**
637
974
  * operates
@@ -663,58 +1000,67 @@ var Curd = vue.defineComponent({
663
1000
  expose = _ref.expose;
664
1001
 
665
1002
  var _ref2 = useProModule(),
666
- columns = _ref2.columns,
1003
+ elementMap = _ref2.elementMap,
667
1004
  state = _ref2.state,
668
1005
  sendEvent = _ref2.sendEvent,
669
1006
  sendRequest = _ref2.sendRequest;
670
1007
  /**
671
- * 排序
672
- * @param list
673
- * @param propName
1008
+ * columns columnState 合并
674
1009
  */
675
1010
 
676
1011
 
677
- var dealSort = function dealSort(list, propName) {
678
- return lodash.sortBy(list, function (item) {
679
- return lodash.get(item, propName);
1012
+ var columns = vue.computed(function () {
1013
+ return mergeStateToList(props.columns, props.columnState, function (item) {
1014
+ return getColumnFormItemName(item);
680
1015
  });
1016
+ });
1017
+ /*********************************** 渲染组件 ***************************************/
1018
+ // 获取FormItem VNode
1019
+
1020
+ var getFormItemVNode = function getFormItemVNode(column) {
1021
+ var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1022
+ return getFormItemEl(props.formElementMap, column, needRules);
1023
+ }; // 获取Item VNode
1024
+
1025
+
1026
+ var getItemVNode = function getItemVNode(column, value) {
1027
+ return getItemEl(elementMap, column, value);
681
1028
  };
682
1029
  /**
683
- * hideInForm columns
1030
+ * ${signName} 配置为true 会被选择
1031
+ * @param signName
1032
+ * @param opposite 如果为true,未配置(undefined)会被选择
684
1033
  */
685
1034
 
686
1035
 
1036
+ var getSignColumns = function getSignColumns(signName, opposite) {
1037
+ var signColumns = lodash.filter(columns.value, function (item) {
1038
+ var sign = lodash.get(item, ["extra", signName]) || lodash.get(item, signName);
1039
+
1040
+ if (opposite) {
1041
+ //不为false 即为选中
1042
+ return sign !== false;
1043
+ } //只有true 才为选中
1044
+
1045
+
1046
+ return sign;
1047
+ });
1048
+ return lodash.sortBy(signColumns, function (item) {
1049
+ return lodash.get(item, ["extra", "".concat(signName, "Sort")]) || lodash.get(item, "".concat(signName, "Sort"));
1050
+ });
1051
+ };
1052
+
687
1053
  var formColumns = vue.computed(function () {
688
- return dealSort(lodash.filter(columns.value, function (item) {
689
- return !item.hideInForm;
690
- }), "formSort");
1054
+ return getSignColumns("form", true);
691
1055
  });
692
- /**
693
- * 非 hideInDetail columns
694
- */
695
-
696
1056
  var descColumns = vue.computed(function () {
697
- return dealSort(lodash.filter(columns.value, function (item) {
698
- return !item.hideInDetail;
699
- }), "descSort");
1057
+ return getSignColumns("detail", true);
700
1058
  });
701
- /**
702
- * 非 hideInTable columns
703
- */
704
-
705
1059
  var tableColumns = vue.computed(function () {
706
- return dealSort(lodash.filter(columns.value, function (item) {
707
- return !item.hideInTable;
708
- }), "tableSort");
1060
+ return getSignColumns("table", true);
709
1061
  });
710
- /**
711
- * search columns
712
- */
713
-
714
1062
  var searchColumns = vue.computed(function () {
715
- return dealSort(lodash.filter(columns.value, function (item) {
716
- return !!item.search;
717
- }), "searchSort");
1063
+ return getSignColumns("search");
718
1064
  });
719
1065
  /******************************** 逻辑 *************************************/
720
1066
  //上一次发起列表请求的参数
@@ -799,6 +1145,13 @@ var Curd = vue.defineComponent({
799
1145
  return props.modalProps;
800
1146
  });
801
1147
  provideProCurd({
1148
+ columns: columns,
1149
+ getSignColumns: getSignColumns,
1150
+ getFormItemVNode: getFormItemVNode,
1151
+ getItemVNode: getItemVNode,
1152
+ elementMap: elementMap,
1153
+ formElementMap: props.formElementMap,
1154
+ //
802
1155
  rowKey: props.rowKey,
803
1156
  curdState: state,
804
1157
  formColumns: formColumns,
@@ -1274,97 +1627,525 @@ var ProPageCurd = vue.defineComponent({
1274
1627
  }
1275
1628
  });
1276
1629
 
1277
- var ProFormKey = Symbol("pro-form");
1278
- var useProForm = function useProForm() {
1279
- return vue.inject(ProFormKey);
1280
- };
1630
+ function _isSlot(s) {
1631
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1632
+ }
1281
1633
 
1282
- var provideProForm = function provideProForm(ctx) {
1283
- vue.provide(ProFormKey, ctx);
1634
+ var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
1635
+ return vue.defineComponent({
1636
+ props: _objectSpread2(_objectSpread2({}, Descriptions.props), {}, {
1637
+ //重写Item content
1638
+ renderItem: {
1639
+ type: Function
1640
+ }
1641
+ }),
1642
+ setup: function setup(props, _ref) {
1643
+ var slots = _ref.slots;
1644
+
1645
+ var _useProCurd = useProCurd(),
1646
+ getItemVNode = _useProCurd.getItemVNode,
1647
+ curdState = _useProCurd.curdState,
1648
+ descColumns = _useProCurd.descColumns;
1649
+
1650
+ var descVNodes = vue.computed(function () {
1651
+ return lodash.map(descColumns.value, function (item) {
1652
+ var _slot;
1653
+
1654
+ var _props$renderItem;
1655
+
1656
+ var vn = (_props$renderItem = props.renderItem) === null || _props$renderItem === void 0 ? void 0 : _props$renderItem.call(props, item);
1657
+
1658
+ if (vn) {
1659
+ return vn;
1660
+ }
1661
+
1662
+ var value = lodash.get(curdState.detailData, item.dataIndex);
1663
+ return vue.createVNode(DescriptionsItem, vue.mergeProps({
1664
+ "key": item.dataIndex,
1665
+ "label": item.title
1666
+ }, lodash.get(item.extra, "desc")), _isSlot(_slot = getItemVNode(item, value)) ? _slot : {
1667
+ "default": function _default() {
1668
+ return [_slot];
1669
+ }
1670
+ });
1671
+ });
1672
+ });
1673
+ return function () {
1674
+ var _slots$start, _slots$default;
1675
+
1676
+ return vue.createVNode(Descriptions, props, _objectSpread2({
1677
+ "default": function _default() {
1678
+ 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)];
1679
+ }
1680
+ }, lodash.omit(slots, "default", "start")));
1681
+ };
1682
+ }
1683
+ });
1284
1684
  };
1285
1685
 
1286
- var proFormProps = function proFormProps() {
1686
+ var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
1287
1687
  return {
1288
- /**
1289
- * 同 antd 或 element form中的model
1290
- */
1291
- model: {
1292
- type: Object
1293
- },
1294
-
1295
- /**
1296
- * 子组件是否只读样式
1297
- */
1298
- readonly: {
1688
+ //是否使用operate bar
1689
+ operateBar: {
1299
1690
  type: Boolean,
1300
- "default": undefined
1301
- },
1302
-
1303
- /**
1304
- * FormComponent 根据此项来确定组件是否显示
1305
- * rules 根据rules中方法生成showState对象
1306
- */
1307
- showState: {
1308
- type: Object
1691
+ "default": true
1309
1692
  },
1310
- showStateRules: {
1311
- type: Object
1693
+ //显示 确定并继续 按钮
1694
+ showContinueAdd: {
1695
+ type: Boolean,
1696
+ "default": false
1312
1697
  },
1313
-
1314
- /**
1315
- * 是否只读
1316
- */
1317
- readonlyState: {
1318
- type: Object
1698
+ //
1699
+ okText: {
1700
+ type: String,
1701
+ "default": "确定"
1319
1702
  },
1320
- readonlyStateRules: {
1703
+ okButtonProps: {
1321
1704
  type: Object
1322
1705
  },
1323
-
1324
- /**
1325
- * 是否disabled
1326
- */
1327
- disableState: {
1328
- type: Object
1706
+ //
1707
+ continueText: {
1708
+ type: String,
1709
+ "default": "确定并继续"
1329
1710
  },
1330
- disableStateRules: {
1711
+ continueButtonProps: {
1331
1712
  type: Object
1332
- },
1713
+ }
1714
+ };
1715
+ };
1333
1716
 
1334
- /**
1335
- *
1336
- */
1337
- columns: {
1717
+ var createCurdForm = function createCurdForm(Form, Button, convertFormProps) {
1718
+ return vue.defineComponent({
1719
+ props: _objectSpread2(_objectSpread2({}, Form.props), proCurdAddOrEditProps()),
1720
+ setup: function setup(props, _ref) {
1721
+ var slots = _ref.slots;
1722
+
1723
+ var _useProCurd = useProCurd(),
1724
+ elementMap = _useProCurd.elementMap,
1725
+ formElementMap = _useProCurd.formElementMap,
1726
+ curdState = _useProCurd.curdState,
1727
+ formColumns = _useProCurd.formColumns,
1728
+ sendCurdEvent = _useProCurd.sendCurdEvent;
1729
+
1730
+ var formRef = vue.ref();
1731
+
1732
+ var handleFinish = function handleFinish(values) {
1733
+ if (curdState.mode === exports.CurdCurrentMode.EDIT) {
1734
+ //edit
1735
+ sendCurdEvent({
1736
+ action: exports.CurdAction.EDIT,
1737
+ type: exports.CurdSubAction.EXECUTE,
1738
+ values: values
1739
+ });
1740
+ } else {
1741
+ //add
1742
+ sendCurdEvent({
1743
+ action: exports.CurdAction.ADD,
1744
+ type: exports.CurdSubAction.EXECUTE,
1745
+ values: values
1746
+ });
1747
+ }
1748
+ };
1749
+
1750
+ var handleAdd = function handleAdd() {
1751
+ var _formRef$value;
1752
+
1753
+ curdState.addAction = exports.CurdAddAction.NORMAL;
1754
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
1755
+ };
1756
+
1757
+ var handleContinueAdd = function handleContinueAdd() {
1758
+ var _formRef$value2;
1759
+
1760
+ curdState.addAction = exports.CurdAddAction.CONTINUE;
1761
+ (_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.submit();
1762
+ };
1763
+
1764
+ return function () {
1765
+ var _slots$divide, _slots$operateStart, _slots$operateCenter, _slots$operateEnd, _slots$default;
1766
+
1767
+ return vue.createVNode(Form, vue.mergeProps({
1768
+ "ref": formRef
1769
+ }, props, {
1770
+ "elementMap": props.elementMap || elementMap,
1771
+ "formElementMap": props.formElementMap || formElementMap,
1772
+ "columns": formColumns.value,
1773
+ "model": curdState.detailData,
1774
+ "readonly": curdState.mode === exports.CurdCurrentMode.DETAIL,
1775
+ "onFinish": handleFinish
1776
+ }, convertFormProps === null || convertFormProps === void 0 ? void 0 : convertFormProps(curdState)), _objectSpread2({
1777
+ "default": function _default() {
1778
+ return [(_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), props.operateBar && vue.createVNode("div", {
1779
+ "class": "pro-curd-form-operate"
1780
+ }, [(_slots$operateStart = slots.operateStart) === null || _slots$operateStart === void 0 ? void 0 : _slots$operateStart.call(slots), curdState.mode !== exports.CurdCurrentMode.DETAIL && vue.createVNode(Button, vue.mergeProps({
1781
+ "onClick": handleAdd
1782
+ }, props.okButtonProps, {
1783
+ "loading": curdState.operateLoading
1784
+ }), {
1785
+ "default": function _default() {
1786
+ return [props.okText];
1787
+ }
1788
+ }), (_slots$operateCenter = slots.operateCenter) === null || _slots$operateCenter === void 0 ? void 0 : _slots$operateCenter.call(slots), props.showContinueAdd && curdState.mode === exports.CurdCurrentMode.ADD && vue.createVNode(Button, vue.mergeProps({
1789
+ "onClick": handleContinueAdd
1790
+ }, props.continueButtonProps, {
1791
+ "loading": curdState.operateLoading
1792
+ }), {
1793
+ "default": function _default() {
1794
+ return [props.continueText];
1795
+ }
1796
+ }), (_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)];
1797
+ }
1798
+ }, lodash.omit(slots, "default", "divide", "operateStart", "operateCenter", "operateEnd")));
1799
+ };
1800
+ }
1801
+ });
1802
+ };
1803
+
1804
+ var proCurdListProps = function proCurdListProps() {
1805
+ return {
1806
+ /**
1807
+ * extra 是否放到SearchForm中
1808
+ */
1809
+ extraInSearch: {
1810
+ type: Boolean,
1811
+ "default": undefined
1812
+ },
1813
+ //search
1814
+ searchProps: {
1815
+ type: Object
1816
+ },
1817
+ //table
1818
+ tableProps: {
1819
+ type: Object
1820
+ },
1821
+ //pageState
1822
+ pageState: {
1823
+ type: Object
1824
+ }
1825
+ };
1826
+ };
1827
+
1828
+ var createCurdList = function createCurdList(SearchForm, Table) {
1829
+ return vue.defineComponent({
1830
+ props: _objectSpread2({}, proCurdListProps()),
1831
+ setup: function setup(props, _ref) {
1832
+ var slots = _ref.slots;
1833
+
1834
+ var _useProCurd = useProCurd(),
1835
+ elementMap = _useProCurd.elementMap,
1836
+ formElementMap = _useProCurd.formElementMap,
1837
+ curdState = _useProCurd.curdState,
1838
+ searchColumns = _useProCurd.searchColumns,
1839
+ tableColumns = _useProCurd.tableColumns,
1840
+ getOperate = _useProCurd.getOperate,
1841
+ sendCurdEvent = _useProCurd.sendCurdEvent;
1842
+ /******************* search pagination ********************/
1843
+
1844
+
1845
+ var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
1846
+ var prevValues;
1847
+
1848
+ var handleSearch = function handleSearch() {
1849
+ sendCurdEvent({
1850
+ action: exports.CurdAction.LIST,
1851
+ type: exports.CurdSubAction.EMIT,
1852
+ values: _objectSpread2(_objectSpread2({}, prevValues), pageState)
1853
+ });
1854
+ };
1855
+
1856
+ var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
1857
+ prevValues = values;
1858
+ pageState.page = 1;
1859
+ handleSearch();
1860
+ };
1861
+ /******************* table ********************/
1862
+
1863
+
1864
+ var createTableItem = function createTableItem(action) {
1865
+ var operate = getOperate(action);
1866
+
1867
+ var item = _objectSpread2(_objectSpread2({}, lodash.pick(operate, "label", "element", "disabled", "sort", "onClick")), {}, {
1868
+ show: !lodash.isUndefined(operate === null || operate === void 0 ? void 0 : operate.show) ? operate === null || operate === void 0 ? void 0 : operate.show : false,
1869
+ value: action
1870
+ });
1871
+
1872
+ if (!item.onClick) {
1873
+ return _objectSpread2(_objectSpread2({}, item), {}, {
1874
+ onClick: function onClick(record) {
1875
+ //默认发送事件
1876
+ sendCurdEvent({
1877
+ action: action,
1878
+ type: exports.CurdSubAction.EMIT,
1879
+ record: record
1880
+ });
1881
+ }
1882
+ });
1883
+ }
1884
+
1885
+ return item;
1886
+ }; //table操作栏 items
1887
+
1888
+
1889
+ var tableOperateItems = [createTableItem(exports.CurdAction.DETAIL), createTableItem(exports.CurdAction.EDIT), createTableItem(exports.CurdAction.DELETE)]; //新配置的operate item,添加默认发送事件方法
1890
+
1891
+ var convertOperateItems = function convertOperateItems(list) {
1892
+ return lodash.map(list, function (item) {
1893
+ if (!item.onClick) {
1894
+ return _objectSpread2(_objectSpread2({}, item), {}, {
1895
+ onClick: function onClick(record) {
1896
+ sendCurdEvent({
1897
+ action: "operate",
1898
+ type: item.value,
1899
+ record: record
1900
+ });
1901
+ }
1902
+ });
1903
+ }
1904
+
1905
+ return item;
1906
+ });
1907
+ };
1908
+
1909
+ return function () {
1910
+ var _props$searchProps, _slots$divide, _curdState$listData, _slots$divide2, _slots$footerStart, _slots$pagination, _curdState$listData2, _slots$footerEnd;
1911
+
1912
+ var tableProps = props.tableProps;
1913
+ var extra = slots.extra ? vue.createVNode("div", {
1914
+ "class": "pro-curd-list-extra"
1915
+ }, [slots.extra()]) : null;
1916
+ return vue.createVNode(vue.Fragment, null, [vue.createVNode(SearchForm, vue.mergeProps({
1917
+ "formElementMap": formElementMap
1918
+ }, lodash.omit(props.searchProps, "slots"), {
1919
+ "columns": searchColumns.value,
1920
+ "onFinish": executeSearchWithResetPage
1921
+ }), _objectSpread2({
1922
+ "default": function _default() {
1923
+ return [props.extraInSearch && extra];
1924
+ }
1925
+ }, (_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() : vue.createVNode(Table, vue.mergeProps({
1926
+ "elementMap": elementMap
1927
+ }, lodash.omit(tableProps, "slots", "operate"), {
1928
+ "operate": lodash.mergeWith({
1929
+ items: tableOperateItems
1930
+ }, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate, function (objValue, srcValue) {
1931
+ if (lodash.isArray(objValue) && lodash.isArray(srcValue)) {
1932
+ return lodash.concat(objValue, convertOperateItems(srcValue));
1933
+ }
1934
+ }),
1935
+ "paginationState": {
1936
+ page: pageState.page,
1937
+ pageSize: pageState.pageSize
1938
+ },
1939
+ "columns": tableColumns.value,
1940
+ "loading": curdState.listLoading,
1941
+ "dataSource": (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
1942
+ }), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), vue.createVNode("div", {
1943
+ "class": "pro-curd-list-footer"
1944
+ }, [(_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)])]);
1945
+ };
1946
+ }
1947
+ });
1948
+ };
1949
+
1950
+ /**
1951
+ * ProFormList ctx
1952
+ */
1953
+
1954
+ var ProFormListKey = Symbol("pro-form-list");
1955
+ var useProFormList = function useProFormList() {
1956
+ return vue.inject(ProFormListKey);
1957
+ };
1958
+ var provideProFormList = function provideProFormList(ctx) {
1959
+ vue.provide(ProFormListKey, ctx);
1960
+ };
1961
+ var FormListProvider = vue.defineComponent({
1962
+ props: {
1963
+ pathList: {
1964
+ type: Array
1965
+ }
1966
+ },
1967
+ setup: function setup(props, _ref) {
1968
+ var slots = _ref.slots;
1969
+ provideProFormList({
1970
+ pathList: props.pathList
1971
+ });
1972
+ return function () {
1973
+ var _slots$default;
1974
+
1975
+ return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1976
+ };
1977
+ }
1978
+ });
1979
+
1980
+ var createFormList = function createFormList(FormItem) {
1981
+ return vue.defineComponent({
1982
+ props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
1983
+ //每行默认id
1984
+ rowKey: {
1985
+ type: String,
1986
+ "default": "id"
1987
+ }
1988
+ }),
1989
+ setup: function setup(props, _ref2) {
1990
+ var slots = _ref2.slots;
1991
+
1992
+ var _useProForm = useProForm(),
1993
+ formState = _useProForm.formState,
1994
+ readonly = _useProForm.readonly;
1995
+
1996
+ var formListCtx = useProFormList();
1997
+ var nameList = convertPathToList(props.name);
1998
+ var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
1999
+
2000
+ var handleAdd = function handleAdd() {
2001
+ var targetList = lodash.get(formState, path);
2002
+
2003
+ if (!lodash.isArray(targetList)) {
2004
+ targetList = [];
2005
+ }
2006
+
2007
+ targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
2008
+ lodash.set(formState, path, targetList);
2009
+ };
2010
+
2011
+ var handleRemove = function handleRemove(index) {
2012
+ var targetList = lodash.get(formState, path);
2013
+
2014
+ if (lodash.size(targetList) <= 0) {
2015
+ return;
2016
+ }
2017
+
2018
+ targetList.splice(index, 1);
2019
+ };
2020
+
2021
+ return function () {
2022
+ var _slots$add;
2023
+
2024
+ return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
2025
+ "default": function _default() {
2026
+ return [lodash.map(lodash.get(formState, path), function (item, index) {
2027
+ var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2028
+
2029
+ return vue.createVNode(FormListProvider, {
2030
+ "key": item[props.rowKey] || index,
2031
+ "pathList": [].concat(_toConsumableArray(path), [index])
2032
+ }, {
2033
+ "default": function _default() {
2034
+ return [vue.createVNode("div", {
2035
+ "class": "pro-form-list-item"
2036
+ }, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
2037
+ "class": "pro-form-list-item-add",
2038
+ "onClick": handleAdd
2039
+ }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
2040
+ "class": "pro-form-list-item-minus",
2041
+ "onClick": function onClick() {
2042
+ return handleRemove(index);
2043
+ }
2044
+ }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
2045
+ }
2046
+ });
2047
+ }), !readonly.value && vue.createVNode("div", {
2048
+ "class": "pro-form-list-add",
2049
+ "onClick": handleAdd
2050
+ }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
2051
+ }
2052
+ });
2053
+ };
2054
+ }
2055
+ });
2056
+ };
2057
+
2058
+ var ProFormKey = Symbol("pro-form");
2059
+ var useProForm = function useProForm() {
2060
+ return vue.inject(ProFormKey);
2061
+ };
2062
+
2063
+ var provideProForm = function provideProForm(ctx) {
2064
+ vue.provide(ProFormKey, ctx);
2065
+ };
2066
+
2067
+ var proFormProps = function proFormProps() {
2068
+ return {
2069
+ /**
2070
+ * 同 antd 或 element form中的model
2071
+ */
2072
+ model: {
2073
+ type: Object
2074
+ },
2075
+
2076
+ /**
2077
+ * 子组件是否只读样式
2078
+ */
2079
+ readonly: {
2080
+ type: Boolean,
2081
+ "default": undefined
2082
+ },
2083
+
2084
+ /**
2085
+ * FormComponent 根据此项来确定组件是否显示
2086
+ * rules 根据rules中方法生成showState对象
2087
+ */
2088
+ showState: {
2089
+ type: Object
2090
+ },
2091
+ showStateRules: {
2092
+ type: Object
2093
+ },
2094
+
2095
+ /**
2096
+ * 是否只读
2097
+ */
2098
+ readonlyState: {
2099
+ type: Object
2100
+ },
2101
+ readonlyStateRules: {
2102
+ type: Object
2103
+ },
2104
+
2105
+ /**
2106
+ * 是否disabled
2107
+ */
2108
+ disableState: {
2109
+ type: Object
2110
+ },
2111
+ disableStateRules: {
2112
+ type: Object
2113
+ },
2114
+
2115
+ /**
2116
+ *
2117
+ */
2118
+ columns: {
1338
2119
  type: Array
1339
2120
  },
1340
2121
  columnState: {
1341
2122
  type: Object
1342
2123
  },
1343
2124
 
1344
- /**
1345
- * 展示控件集合,readonly模式下使用这些组件渲染
2125
+ /**
2126
+ * 展示控件集合,readonly模式下使用这些组件渲染
1346
2127
  */
1347
2128
  elementMap: {
1348
2129
  type: Object
1349
2130
  },
1350
2131
 
1351
- /**
1352
- * 录入控件集合
2132
+ /**
2133
+ * 录入控件集合
1353
2134
  */
1354
2135
  formElementMap: {
1355
2136
  type: Object
1356
2137
  },
1357
2138
 
1358
- /**
1359
- * 是否启用rules验证
2139
+ /**
2140
+ * 是否启用rules验证
1360
2141
  */
1361
2142
  needRules: {
1362
2143
  type: Boolean,
1363
2144
  "default": true
1364
2145
  },
1365
2146
 
1366
- /**
1367
- * provide传递
2147
+ /**
2148
+ * provide传递
1368
2149
  */
1369
2150
  provideExtra: {
1370
2151
  type: Object
@@ -1372,65 +2153,122 @@ var proFormProps = function proFormProps() {
1372
2153
  };
1373
2154
  };
1374
2155
 
1375
- var ProForm = vue.defineComponent({
1376
- props: _objectSpread2({}, proFormProps()),
1377
- setup: function setup(props, _ref) {
1378
- var slots = _ref.slots;
1379
- var formState = props.model || vue.reactive({}); //组件状态相关
2156
+ var createForm = function createForm(Form, Grid) {
2157
+ return vue.defineComponent({
2158
+ inheritAttrs: false,
2159
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), proFormProps()), lodash.omit(Grid.props, "items")),
2160
+ setup: function setup(props, _ref) {
2161
+ var slots = _ref.slots,
2162
+ emit = _ref.emit,
2163
+ expose = _ref.expose,
2164
+ attrs = _ref.attrs;
2165
+ var formState = props.model || vue.reactive({}); //组件状态相关
2166
+
2167
+ var showState = props.showState || vue.reactive({});
2168
+ var readonlyState = props.readonlyState || vue.reactive({});
2169
+ var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
2170
+
2171
+ hooks.useEffect(function () {
2172
+ if (props.showStateRules) {
2173
+ lodash.forEach(props.showStateRules, function (fn, key) {
2174
+ showState[key] = fn(formState);
2175
+ });
2176
+ }
1380
2177
 
1381
- var showState = props.showState || vue.reactive({});
1382
- var readonlyState = props.readonlyState || vue.reactive({});
1383
- var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
2178
+ if (props.readonlyStateRules) {
2179
+ lodash.forEach(props.readonlyStateRules, function (fn, key) {
2180
+ readonlyState[key] = fn(formState);
2181
+ });
2182
+ }
1384
2183
 
1385
- hooks.useEffect(function () {
1386
- if (props.showStateRules) {
1387
- lodash.forEach(props.showStateRules, function (fn, key) {
1388
- showState[key] = fn(formState);
1389
- });
1390
- }
2184
+ if (props.disableStateRules) {
2185
+ lodash.forEach(props.disableStateRules, function (fn, key) {
2186
+ disableState[key] = fn(formState);
2187
+ });
2188
+ }
2189
+ }, formState); //readonly
1391
2190
 
1392
- if (props.readonlyStateRules) {
1393
- lodash.forEach(props.readonlyStateRules, function (fn, key) {
1394
- readonlyState[key] = fn(formState);
1395
- });
1396
- }
2191
+ var readonly = vue.computed(function () {
2192
+ return props.readonly;
2193
+ }); //columns合并
1397
2194
 
1398
- if (props.disableStateRules) {
1399
- lodash.forEach(props.disableStateRules, function (fn, key) {
1400
- disableState[key] = fn(formState);
2195
+ var columns = vue.computed(function () {
2196
+ return mergeStateToList(props.columns, props.columnState, function (item) {
2197
+ return getColumnFormItemName(item);
1401
2198
  });
1402
- }
1403
- }, formState); //转换为ref对象
1404
-
1405
- var readonly = vue.computed(function () {
1406
- return props.readonly;
1407
- });
1408
- var columns = vue.computed(function () {
1409
- return mergeStateToList(props.columns, props.columnState, function (item) {
1410
- return getColumnFormItemName(item);
1411
2199
  });
1412
- });
1413
- provideProForm(_objectSpread2({
1414
- formState: formState,
1415
- showState: showState,
1416
- readonlyState: readonlyState,
1417
- disableState: disableState,
1418
- //
1419
- elementMap: props.elementMap,
1420
- formElementMap: props.formElementMap,
1421
- //
1422
- readonly: readonly,
1423
- //
1424
- columns: columns
1425
- }, props.provideExtra));
1426
- return function () {
1427
- var _slots$default;
1428
2200
 
1429
- // console.log("########", columns.value, props.columns, props.columnState);
1430
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1431
- };
1432
- }
1433
- });
2201
+ var handleFinish = function handleFinish(values) {
2202
+ //删除不显示的值再触发事件
2203
+ var showValues = getValidValues(values, showState, props.showStateRules);
2204
+ emit("finish", showValues, values);
2205
+ };
2206
+
2207
+ var formRef = vue.ref();
2208
+ expose({
2209
+ submit: function submit() {
2210
+ var _formRef$value;
2211
+
2212
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
2213
+ },
2214
+ resetFields: function resetFields() {
2215
+ var _formRef$value2;
2216
+
2217
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
2218
+ params[_key] = arguments[_key];
2219
+ }
2220
+
2221
+ (_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.resetFields.apply(_formRef$value2, params);
2222
+ }
2223
+ });
2224
+ provideProForm(_objectSpread2({
2225
+ formState: formState,
2226
+ showState: showState,
2227
+ readonlyState: readonlyState,
2228
+ disableState: disableState,
2229
+ //
2230
+ elementMap: props.elementMap,
2231
+ formElementMap: props.formElementMap,
2232
+ //
2233
+ readonly: readonly,
2234
+ //
2235
+ columns: columns,
2236
+ //
2237
+ formRef: formRef
2238
+ }, props.provideExtra)); //为了不warning ...
2239
+
2240
+ provideProFormList({});
2241
+ var invalidKeys = lodash.keys(proFormProps());
2242
+ var gridKeys = lodash.keys(lodash.omit(Grid.props, "items"));
2243
+ return function () {
2244
+ var _slots$start, _slots$default;
2245
+
2246
+ return vue.createVNode(Form, vue.mergeProps({
2247
+ "ref": formRef
2248
+ }, lodash.omit(attrs, "onFinish"), lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), _toConsumableArray(gridKeys), ["onFinish"])), {
2249
+ "model": formState,
2250
+ "onFinish": handleFinish
2251
+ }), _objectSpread2({
2252
+ "default": function _default() {
2253
+ return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), props.formElementMap && lodash.size(columns.value) > 0 && vue.createVNode(vue.Fragment, null, [props.row ? vue.createVNode(Grid, {
2254
+ "row": props.row,
2255
+ "col": props.col,
2256
+ "items": lodash.map(columns.value, function (item) {
2257
+ return {
2258
+ rowKey: getColumnFormItemName(item),
2259
+ vNode: getFormItemEl(props.formElementMap, item, props.needRules),
2260
+ col: lodash.get(item, ["extra", "col"])
2261
+ };
2262
+ })
2263
+ }, null) : lodash.map(columns.value, function (item) {
2264
+ return getFormItemEl(props.formElementMap, item, props.needRules);
2265
+ })]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
2266
+ }
2267
+ }, lodash.omit(slots, "default")));
2268
+ };
2269
+ }
2270
+ });
2271
+ };
1434
2272
 
1435
2273
  exports.SearchMode = void 0;
1436
2274
 
@@ -1441,44 +2279,48 @@ exports.SearchMode = void 0;
1441
2279
 
1442
2280
  var proSearchFormProps = function proSearchFormProps() {
1443
2281
  return {
1444
- /**
1445
- * 需要监听的对象
2282
+ /**
2283
+ * 需要监听的对象
1446
2284
  */
1447
2285
  model: {
1448
- type: Object,
1449
- required: true
2286
+ type: Object
1450
2287
  },
1451
2288
 
1452
- /**
1453
- * 初始化触发 onFinish
2289
+ /**
2290
+ * 初始化触发 onFinish
1454
2291
  */
1455
2292
  initEmit: {
1456
2293
  type: Boolean,
1457
2294
  "default": true
1458
2295
  },
1459
2296
 
1460
- /**
1461
- * 模式 自动触发或者手动触发 onFinish
2297
+ /**
2298
+ * 模式 自动触发或者手动触发 onFinish
1462
2299
  */
1463
2300
  searchMode: {
1464
2301
  type: String,
1465
2302
  "default": exports.SearchMode.AUTO
1466
2303
  },
1467
2304
 
1468
- /**
1469
- * 配置 同ProForm中的columns
1470
- * 可以根据column中valueType计算出默认的debounceKeys
2305
+ /**
2306
+ * 配置 同ProForm中的columns
2307
+ * 可以根据column中valueType计算出默认的debounceKeys
1471
2308
  */
1472
2309
  columns: {
1473
2310
  type: Array
1474
2311
  },
1475
2312
 
1476
- /**
1477
- * 需要debounce处理的字段
2313
+ /**
2314
+ * 需要debounce处理的字段
1478
2315
  */
1479
2316
  debounceKeys: {
1480
2317
  type: Array
1481
2318
  },
2319
+ //默认 valueType 为 text 的控件会debounce处理
2320
+ debounceTypes: {
2321
+ type: Array,
2322
+ "default": ["text"]
2323
+ },
1482
2324
  debounceTime: {
1483
2325
  type: Number,
1484
2326
  "default": 800
@@ -1486,180 +2328,79 @@ var proSearchFormProps = function proSearchFormProps() {
1486
2328
  };
1487
2329
  };
1488
2330
 
1489
- /**
1490
- * 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
1491
- * 针对传入的model(监听对象)做相应的finish(回调)处理
2331
+ /**
2332
+ * 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
2333
+ * 针对传入的model(监听对象)做相应的finish(回调)处理
1492
2334
  */
1493
- var ProSearchForm = vue.defineComponent({
1494
- props: _objectSpread2({}, proSearchFormProps()),
1495
- setup: function setup(props, _ref) {
1496
- var emit = _ref.emit;
1497
- //根据column valueType 算出默认需要debounce处理的属性集合
1498
- var defaultDebounceKeys = lodash.map(lodash.filter(props.columns, function (column) {
1499
- var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
1500
-
1501
- return valueType === "text";
1502
- }), function (column) {
1503
- return getColumnFormItemName(column);
1504
- });
1505
-
1506
- var handleFinish = function handleFinish() {
1507
- emit("finish");
1508
- };
1509
-
1510
- var debounceFinish = lodash.debounce(function () {
1511
- handleFinish();
1512
- }, props.debounceTime); //初始化
1513
-
1514
- hooks.useEffect(function () {
1515
- if (props.initEmit) {
1516
- handleFinish();
1517
- }
1518
- }, []);
1519
-
1520
- var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
1521
- return lodash.some(debounceKeys, function (key) {
1522
- return lodash.get(state, key) !== lodash.get(prevState, key);
2335
+ var createSearchForm = function createSearchForm(Form, Props) {
2336
+ return vue.defineComponent({
2337
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), Props), proSearchFormProps()),
2338
+ setup: function setup(props, _ref) {
2339
+ var slots = _ref.slots;
2340
+ var formState = props.model || vue.reactive({});
2341
+ var valueTypeSet = new Set(props.debounceTypes); //根据column valueType 算出默认需要debounce处理的属性集合
2342
+
2343
+ var defaultDebounceKeys = lodash.map(lodash.filter(props.columns, function (column) {
2344
+ var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
2345
+
2346
+ return valueTypeSet.has(valueType);
2347
+ }), function (column) {
2348
+ return getColumnFormItemName(column);
1523
2349
  });
1524
- }; //监听
1525
-
2350
+ var formRef = vue.ref();
1526
2351
 
1527
- hooks.useWatch(function (state, prevState) {
1528
- if (props.searchMode !== exports.SearchMode.AUTO) {
1529
- return;
1530
- } //如果改变的值中包括debounceKeys中注册的 延时触发
2352
+ var handleFinish = function handleFinish() {
2353
+ var _formRef$value;
1531
2354
 
2355
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
2356
+ };
1532
2357
 
1533
- var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
2358
+ var debounceFinish = lodash.debounce(function () {
2359
+ handleFinish();
2360
+ }, props.debounceTime); //初始化
1534
2361
 
1535
- if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
1536
- debounceFinish();
1537
- return;
1538
- }
2362
+ hooks.useEffect(function () {
2363
+ if (props.initEmit) {
2364
+ handleFinish();
2365
+ }
2366
+ }, []);
1539
2367
 
1540
- handleFinish();
1541
- }, function () {
1542
- return lodash.clone(props.model);
1543
- });
1544
- return function () {
1545
- return null;
1546
- };
1547
- }
1548
- });
2368
+ var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
2369
+ return lodash.some(debounceKeys, function (key) {
2370
+ return lodash.get(state, key) !== lodash.get(prevState, key);
2371
+ });
2372
+ }; //监听
1549
2373
 
1550
- /**
1551
- * ProFormList ctx
1552
- */
1553
2374
 
1554
- var ProFormListKey = Symbol("pro-form-list");
1555
- var useProFormList = function useProFormList() {
1556
- return vue.inject(ProFormListKey);
1557
- };
2375
+ hooks.useWatch(function (state, prevState) {
2376
+ if (props.searchMode !== exports.SearchMode.AUTO) {
2377
+ return;
2378
+ } //如果改变的值中包括debounceKeys中注册的 延时触发
1558
2379
 
1559
- var provideProFormList = function provideProFormList(ctx) {
1560
- vue.provide(ProFormListKey, ctx);
1561
- };
1562
2380
 
1563
- var FormListProvider = vue.defineComponent({
1564
- props: {
1565
- pathList: {
1566
- type: Array
1567
- }
1568
- },
1569
- setup: function setup(props, _ref) {
1570
- var slots = _ref.slots;
1571
- provideProFormList({
1572
- pathList: props.pathList
1573
- });
1574
- return function () {
1575
- var _slots$default;
2381
+ var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
1576
2382
 
1577
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1578
- };
1579
- }
1580
- });
2383
+ if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
2384
+ debounceFinish();
2385
+ return;
2386
+ }
1581
2387
 
1582
- var proFormListProps = function proFormListProps() {
1583
- return {
1584
- //每行默认id
1585
- rowKey: {
1586
- type: String,
1587
- "default": "id"
1588
- },
1589
- //name
1590
- name: {
1591
- type: [String, Number, Array],
1592
- required: true
2388
+ handleFinish();
2389
+ }, function () {
2390
+ return lodash.clone(formState);
2391
+ });
2392
+ var invalidKeys = lodash.keys(lodash.omit(proSearchFormProps(), "columns"));
2393
+ return function () {
2394
+ return vue.createVNode(Form, vue.mergeProps({
2395
+ "ref": formRef
2396
+ }, lodash.omit(props, invalidKeys), {
2397
+ "model": formState
2398
+ }), slots);
2399
+ };
1593
2400
  }
1594
- };
2401
+ });
1595
2402
  };
1596
2403
 
1597
- var ProFormList = vue.defineComponent({
1598
- props: _objectSpread2({}, proFormListProps()),
1599
- setup: function setup(props, _ref2) {
1600
- var slots = _ref2.slots;
1601
-
1602
- var _useProForm = useProForm(),
1603
- formState = _useProForm.formState,
1604
- readonly = _useProForm.readonly;
1605
-
1606
- var formListCtx = useProFormList();
1607
- var nameList = convertPathToList(props.name);
1608
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
1609
-
1610
- var handleAdd = function handleAdd() {
1611
- var targetList = lodash.get(formState, path);
1612
-
1613
- if (!lodash.isArray(targetList)) {
1614
- targetList = [];
1615
- }
1616
-
1617
- targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
1618
- lodash.set(formState, path, targetList);
1619
- };
1620
-
1621
- var handleRemove = function handleRemove(index) {
1622
- var targetList = lodash.get(formState, path);
1623
-
1624
- if (lodash.size(targetList) <= 0) {
1625
- return;
1626
- }
1627
-
1628
- targetList.splice(index, 1);
1629
- };
1630
-
1631
- return function () {
1632
- var _slots$add;
1633
-
1634
- return vue.createVNode(vue.Fragment, null, [lodash.map(lodash.get(formState, path), function (item, index) {
1635
- var _slots$default2, _slots$itemAdd, _slots$itemMinus;
1636
-
1637
- return vue.createVNode(FormListProvider, {
1638
- "key": index,
1639
- "pathList": [].concat(_toConsumableArray(path), [index])
1640
- }, {
1641
- "default": function _default() {
1642
- return [vue.createVNode("div", {
1643
- "class": "pro-form-list-item"
1644
- }, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
1645
- "class": "pro-form-list-item-add",
1646
- "onClick": handleAdd
1647
- }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
1648
- "class": "pro-form-list-item-minus",
1649
- "onClick": function onClick() {
1650
- return handleRemove(index);
1651
- }
1652
- }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
1653
- }
1654
- });
1655
- }), !readonly.value && vue.createVNode("div", {
1656
- "class": "pro-form-list-add",
1657
- "onClick": handleAdd
1658
- }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])]);
1659
- };
1660
- }
1661
- });
1662
-
1663
2404
  var proFormItemProps = function proFormItemProps() {
1664
2405
  return {
1665
2406
  readonly: {
@@ -1763,8 +2504,8 @@ var proTableProps = function proTableProps() {
1763
2504
  type: String
1764
2505
  },
1765
2506
 
1766
- /**
1767
- * 公共column,会merge到columns item中
2507
+ /**
2508
+ * 公共column,会merge到columns item中
1768
2509
  */
1769
2510
  column: {
1770
2511
  type: Object
@@ -1777,36 +2518,29 @@ var proTableProps = function proTableProps() {
1777
2518
  type: Object
1778
2519
  },
1779
2520
 
1780
- /**
1781
- * 展示控件集合,readonly模式下使用这些组件渲染
2521
+ /**
2522
+ * 展示控件集合,readonly模式下使用这些组件渲染
1782
2523
  */
1783
2524
  elementMap: {
1784
2525
  type: Object
1785
2526
  },
1786
2527
 
1787
- /**
1788
- * loading
1789
- */
1790
- loading: {
1791
- type: Boolean
1792
- },
1793
-
1794
- /**
1795
- * 序号
2528
+ /**
2529
+ * 序号
1796
2530
  */
1797
2531
  serialNumber: {
1798
2532
  type: Boolean
1799
2533
  },
1800
2534
 
1801
- /**
1802
- * 分页
2535
+ /**
2536
+ * 分页
1803
2537
  */
1804
- pagination: {
2538
+ paginationState: {
1805
2539
  type: Object
1806
2540
  },
1807
2541
 
1808
- /**
1809
- * provide传递
2542
+ /**
2543
+ * provide传递
1810
2544
  */
1811
2545
  provideExtra: {
1812
2546
  type: Object
@@ -1814,62 +2548,35 @@ var proTableProps = function proTableProps() {
1814
2548
  };
1815
2549
  };
1816
2550
 
1817
- var ProTable = vue.defineComponent({
1818
- props: _objectSpread2({}, proTableProps()),
1819
- setup: function setup(props, _ref) {
1820
- var slots = _ref.slots;
1821
- var columns = vue.computed(function () {
1822
- var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
1823
- return item.dataIndex;
1824
- }); //根据valueType选择对应的展示组件
1825
-
1826
- var columns = lodash.map(mergeColumns, function (item) {
1827
- //merge公共item
1828
- var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
1829
-
1830
- if (!item.customRender) {
1831
- nextItem.customRender = function (_ref2) {
1832
- var text = _ref2.text;
1833
- var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
1834
- showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
1835
- content: props.columnEmptyText
1836
- })
1837
- }), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
1838
-
1839
- return vn || text || props.columnEmptyText;
1840
- };
1841
- }
2551
+ var createTable = function createTable(Table, Props) {
2552
+ return vue.defineComponent({
2553
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Table.props), Props), proTableProps()),
2554
+ setup: function setup(props, _ref) {
2555
+ var slots = _ref.slots;
1842
2556
 
1843
- return nextItem;
1844
- }); //处理序号
1845
-
1846
- if (props.serialNumber) {
1847
- columns.unshift(_objectSpread2(_objectSpread2({
2557
+ var createNumberColumn = function createNumberColumn() {
2558
+ return _objectSpread2(_objectSpread2({
1848
2559
  title: "序号",
1849
2560
  dataIndex: "serialNumber",
1850
2561
  width: 80
1851
2562
  }, props.column), {}, {
1852
- // @ts-ignore
1853
- customRender: function customRender(_ref3) {
1854
- var _props$pagination, _props$pagination2;
2563
+ customRender: function customRender(_ref2) {
2564
+ var _props$paginationStat, _props$paginationStat2;
1855
2565
 
1856
- var index = _ref3.index;
2566
+ var index = _ref2.index;
1857
2567
 
1858
- 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) {
1859
- return props.pagination.pageSize * (props.pagination.page - 1) + index + 1;
2568
+ 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) {
2569
+ return props.paginationState.pageSize * (props.paginationState.page - 1) + index + 1;
1860
2570
  }
1861
2571
 
1862
2572
  return index + 1;
1863
2573
  }
1864
- }));
1865
- }
2574
+ });
2575
+ };
1866
2576
 
1867
- var operate = props.operate; //处理operate
2577
+ var createOperateColumn = function createOperateColumn() {
2578
+ var operate = props.operate; //将itemState补充的信息拼到item中
1868
2579
 
1869
- if (operate && operate.items && lodash.some(operate.items, function (item) {
1870
- return item.show;
1871
- })) {
1872
- //将itemState补充的信息拼到item中
1873
2580
  var items = lodash.map(operate.items, function (i) {
1874
2581
  return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
1875
2582
  }); //排序
@@ -1877,14 +2584,14 @@ var ProTable = vue.defineComponent({
1877
2584
  var sortedItems = lodash.sortBy(items, function (item) {
1878
2585
  return item.sort;
1879
2586
  });
1880
- columns.push(_objectSpread2(_objectSpread2({
2587
+ return _objectSpread2(_objectSpread2(_objectSpread2({}, props.column), {}, {
1881
2588
  title: "操作",
1882
2589
  dataIndex: "operate",
1883
2590
  fixed: "right"
1884
- }, props.column), {}, {
1885
- customRender: function customRender(_ref4) {
1886
- var record = _ref4.record;
1887
- var validItems = lodash.filter(sortedItems, function (item) {
2591
+ }, operate.column), {}, {
2592
+ customRender: function customRender(_ref3) {
2593
+ var record = _ref3.record;
2594
+ var showItems = lodash.filter(sortedItems, function (item) {
1888
2595
  if (item.show && lodash.isFunction(item.show)) {
1889
2596
  return item.show(record);
1890
2597
  }
@@ -1897,7 +2604,7 @@ var ProTable = vue.defineComponent({
1897
2604
  });
1898
2605
  return vue.createVNode("div", {
1899
2606
  "class": "pro-table-operate"
1900
- }, [lodash.map(validItems, function (item) {
2607
+ }, [lodash.map(showItems, function (item) {
1901
2608
  //自定义
1902
2609
  if (lodash.isFunction(item.element)) {
1903
2610
  return item.element(record, item);
@@ -1914,43 +2621,97 @@ var ProTable = vue.defineComponent({
1914
2621
  }, [item.label]);
1915
2622
  })]);
1916
2623
  }
1917
- }, operate.column));
1918
- }
2624
+ });
2625
+ };
1919
2626
 
1920
- return columns;
1921
- });
1922
- provideProTable(_objectSpread2({
1923
- columns: columns
1924
- }, props.provideExtra));
1925
- return function () {
1926
- var _slots$default;
2627
+ var columns = vue.computed(function () {
2628
+ var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
2629
+ return item.dataIndex;
2630
+ }); //根据valueType选择对应的展示组件
2631
+
2632
+ var columns = lodash.map(mergeColumns, function (item) {
2633
+ //merge公共item
2634
+ var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
2635
+
2636
+ if (!item.customRender) {
2637
+ nextItem.customRender = function (_ref4) {
2638
+ var text = _ref4.text;
2639
+ var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
2640
+ showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
2641
+ content: props.columnEmptyText
2642
+ })
2643
+ }), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
2644
+
2645
+ return vn || text || props.columnEmptyText;
2646
+ };
2647
+ }
1927
2648
 
1928
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1929
- };
1930
- }
1931
- });
2649
+ return nextItem;
2650
+ }); //处理序号
2651
+
2652
+ if (props.serialNumber) {
2653
+ columns.unshift(createNumberColumn());
2654
+ } //处理operate
2655
+
2656
+
2657
+ if (props.operate && props.operate.items && lodash.some(props.operate.items, function (item) {
2658
+ return item.show;
2659
+ })) {
2660
+ columns.push(createOperateColumn());
2661
+ }
2662
+
2663
+ return columns;
2664
+ });
2665
+ var tableRef = vue.ref();
2666
+ provideProTable(_objectSpread2({
2667
+ columns: columns,
2668
+ tableRef: tableRef
2669
+ }, props.provideExtra));
2670
+ var invalidKeys = lodash.keys(proTableProps());
2671
+ return function () {
2672
+ return vue.createVNode(Table, vue.mergeProps({
2673
+ "ref": tableRef
2674
+ }, lodash.omit(props, invalidKeys), {
2675
+ "columns": columns.value
2676
+ }), slots);
2677
+ };
2678
+ }
2679
+ });
2680
+ };
1932
2681
 
1933
2682
  exports.ProCurd = ProCurd;
1934
- exports.ProForm = ProForm;
1935
- exports.ProFormList = ProFormList;
1936
2683
  exports.ProModalCurd = ProModalCurd;
1937
2684
  exports.ProModule = ProModule;
1938
2685
  exports.ProPageCurd = ProPageCurd;
1939
- exports.ProSearchForm = ProSearchForm;
1940
- exports.ProTable = ProTable;
1941
2686
  exports.RequestAction = RequestAction;
2687
+ exports.Wrapper = Wrapper;
1942
2688
  exports.convertPathToList = convertPathToList;
2689
+ exports.createCurdDesc = createCurdDesc;
2690
+ exports.createCurdForm = createCurdForm;
2691
+ exports.createCurdList = createCurdList;
2692
+ exports.createExpose = createExpose;
2693
+ exports.createForm = createForm;
1943
2694
  exports.createFormItemCompFn = createFormItemCompFn;
2695
+ exports.createFormList = createFormList;
2696
+ exports.createGrid = createGrid;
2697
+ exports.createSearchForm = createSearchForm;
2698
+ exports.createTable = createTable;
1944
2699
  exports.defaultPage = defaultPage;
2700
+ exports.findTargetInTree = findTargetInTree;
2701
+ exports.findTargetListInTree = findTargetListInTree;
1945
2702
  exports.generateId = generateId;
1946
2703
  exports.getColumnFormItemName = getColumnFormItemName;
1947
2704
  exports.getColumnValueType = getColumnValueType;
2705
+ exports.getFirstPropName = getFirstPropName;
1948
2706
  exports.getFormItemEl = getFormItemEl;
1949
2707
  exports.getItemEl = getItemEl;
1950
2708
  exports.getValidValues = getValidValues;
1951
2709
  exports.mergeStateToList = mergeStateToList;
1952
2710
  exports.provideProCurd = provideProCurd;
2711
+ exports.provideProFormList = provideProFormList;
1953
2712
  exports.provideProModule = provideProModule;
2713
+ exports.renderElement = renderElement;
2714
+ exports.renderElements = renderElements;
1954
2715
  exports.useComposeRequestActor = useComposeRequestActor;
1955
2716
  exports.useDoneRequestActor = useDoneRequestActor;
1956
2717
  exports.useFailedRequestActor = useFailedRequestActor;