@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.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
  });
@@ -597,26 +737,201 @@ exports.CurdSubAction = void 0;
597
737
  CurdSubAction["FAIL"] = "FAIL";
598
738
  })(exports.CurdSubAction || (exports.CurdSubAction = {}));
599
739
 
600
- /**
601
- * curd 操作模式
740
+ /**
741
+ * curd 操作模式
742
+ */
743
+ exports.CurdCurrentMode = void 0;
744
+
745
+ (function (CurdCurrentMode) {
746
+ CurdCurrentMode["ADD"] = "ADD";
747
+ CurdCurrentMode["EDIT"] = "EDIT";
748
+ CurdCurrentMode["DETAIL"] = "DETAIL";
749
+ })(exports.CurdCurrentMode || (exports.CurdCurrentMode = {}));
750
+
751
+ /**
752
+ * curd add 模式下 标记 "确定" "确定并继续" 触发
753
+ */
754
+ exports.CurdAddAction = void 0;
755
+
756
+ (function (CurdAddAction) {
757
+ CurdAddAction["NORMAL"] = "NORMAL";
758
+ CurdAddAction["CONTINUE"] = "CONTINUE";
759
+ })(exports.CurdAddAction || (exports.CurdAddAction = {}));
760
+
761
+ var treeDefaultNames = {
762
+ children: "children",
763
+ label: "label",
764
+ value: "value"
765
+ };
766
+ /**
767
+ * 根据value从treeData中找到对象
768
+ * @param data
769
+ * @param value
770
+ * @param fieldNames
771
+ * @param cb 对象:同步 方法:回调,可以理解为异步
772
+ */
773
+
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
602
913
  */
603
- exports.CurdCurrentMode = void 0;
604
-
605
- (function (CurdCurrentMode) {
606
- CurdCurrentMode["ADD"] = "ADD";
607
- CurdCurrentMode["EDIT"] = "EDIT";
608
- CurdCurrentMode["DETAIL"] = "DETAIL";
609
- })(exports.CurdCurrentMode || (exports.CurdCurrentMode = {}));
610
914
 
611
- /**
612
- * curd add 模式下 标记 "确定" "确定并继续" 触发
915
+ var generateId = function generateId() {
916
+ return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
917
+ };
918
+ /**
919
+ * ref 传递
613
920
  */
614
- exports.CurdAddAction = void 0;
615
921
 
616
- (function (CurdAddAction) {
617
- CurdAddAction["NORMAL"] = "NORMAL";
618
- CurdAddAction["CONTINUE"] = "CONTINUE";
619
- })(exports.CurdAddAction || (exports.CurdAddAction = {}));
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
+ };
620
935
 
621
936
  var defaultPage = {
622
937
  page: 1,
@@ -625,6 +940,28 @@ var defaultPage = {
625
940
 
626
941
  var proCurdProps = function proCurdProps() {
627
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
+
628
965
  /**
629
966
  * 列表 或 详情 的唯一标识
630
967
  */
@@ -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,
@@ -1180,99 +1533,419 @@ var PageCurd = vue.defineComponent({
1180
1533
  type: "detailData",
1181
1534
  payload: props.defaultAddRecord || {}
1182
1535
  });
1183
- } else if (subAction === exports.CurdSubAction.SUCCESS) {
1184
- if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
1185
- dispatch({
1186
- type: "detailData",
1187
- payload: props.defaultAddRecord || {}
1188
- });
1189
- } else {
1190
- props.routeBack ? props.routeBack(exports.CurdAction.ADD) : router.go(-1);
1191
- }
1192
- }
1193
- };
1536
+ } else if (subAction === exports.CurdSubAction.SUCCESS) {
1537
+ if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
1538
+ dispatch({
1539
+ type: "detailData",
1540
+ payload: props.defaultAddRecord || {}
1541
+ });
1542
+ } else {
1543
+ props.routeBack ? props.routeBack(exports.CurdAction.ADD) : router.go(-1);
1544
+ }
1545
+ }
1546
+ };
1547
+
1548
+ var dealEdit = function dealEdit(subAction, _ref2) {
1549
+ var record = _ref2.record;
1550
+
1551
+ if (subAction === exports.CurdSubAction.EMIT) {
1552
+ router.push({
1553
+ path: "".concat(route.path, "/edit"),
1554
+ query: lodash.pick(record, rowKey)
1555
+ });
1556
+ } else if (subAction === exports.CurdSubAction.PAGE) {
1557
+ dispatch({
1558
+ type: "mode",
1559
+ payload: exports.CurdCurrentMode.EDIT
1560
+ });
1561
+ sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
1562
+ } else if (subAction === exports.CurdSubAction.SUCCESS) {
1563
+ props.routeBack ? props.routeBack(exports.CurdAction.EDIT) : router.go(-1);
1564
+ }
1565
+ };
1566
+
1567
+ useModuleEvent(function (_ref3) {
1568
+ var type = _ref3.type,
1569
+ payload = _ref3.payload,
1570
+ source = _ref3.source;
1571
+
1572
+ if (source) {
1573
+ return;
1574
+ }
1575
+
1576
+ var action = type;
1577
+ var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
1578
+ var record = payload === null || payload === void 0 ? void 0 : payload.record;
1579
+
1580
+ if (action === RequestAction.Success) {
1581
+ //覆盖
1582
+ action = lodash.get(payload, ["requestOpts", "action"]);
1583
+ subAction = exports.CurdSubAction.SUCCESS;
1584
+ }
1585
+
1586
+ switch (action) {
1587
+ case exports.CurdAction.LIST:
1588
+ dealList(subAction);
1589
+ break;
1590
+
1591
+ case exports.CurdAction.DETAIL:
1592
+ dealDetail(subAction, {
1593
+ record: record
1594
+ });
1595
+ break;
1596
+
1597
+ case exports.CurdAction.ADD:
1598
+ dealAdd(subAction);
1599
+ break;
1600
+
1601
+ case exports.CurdAction.EDIT:
1602
+ dealEdit(subAction, {
1603
+ record: record
1604
+ });
1605
+ break;
1606
+ }
1607
+ });
1608
+ return function () {
1609
+ return null;
1610
+ };
1611
+ }
1612
+ });
1613
+ var ProPageCurd = vue.defineComponent({
1614
+ props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
1615
+ setup: function setup(props, _ref4) {
1616
+ var slots = _ref4.slots;
1617
+ var invalidKeys = lodash.keys(PageCurd.props);
1618
+ return function () {
1619
+ var _slots$default;
1620
+
1621
+ return vue.createVNode(ProCurd, lodash.omit(props, invalidKeys), {
1622
+ "default": function _default() {
1623
+ return [vue.createVNode(PageCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1624
+ }
1625
+ });
1626
+ };
1627
+ }
1628
+ });
1629
+
1630
+ function _isSlot(s) {
1631
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1632
+ }
1633
+
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
+ });
1684
+ };
1685
+
1686
+ var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
1687
+ return {
1688
+ //是否使用operate bar
1689
+ operateBar: {
1690
+ type: Boolean,
1691
+ "default": true
1692
+ },
1693
+ //显示 确定并继续 按钮
1694
+ showContinueAdd: {
1695
+ type: Boolean,
1696
+ "default": false
1697
+ },
1698
+ //
1699
+ okText: {
1700
+ type: String,
1701
+ "default": "确定"
1702
+ },
1703
+ okButtonProps: {
1704
+ type: Object
1705
+ },
1706
+ //
1707
+ continueText: {
1708
+ type: String,
1709
+ "default": "确定并继续"
1710
+ },
1711
+ continueButtonProps: {
1712
+ type: Object
1713
+ }
1714
+ };
1715
+ };
1716
+
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
+ };
1194
1855
 
1195
- var dealEdit = function dealEdit(subAction, _ref2) {
1196
- var record = _ref2.record;
1856
+ var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
1857
+ prevValues = values;
1858
+ pageState.page = 1;
1859
+ handleSearch();
1860
+ };
1861
+ /******************* table ********************/
1197
1862
 
1198
- if (subAction === exports.CurdSubAction.EMIT) {
1199
- router.push({
1200
- path: "".concat(route.path, "/edit"),
1201
- query: lodash.pick(record, rowKey)
1202
- });
1203
- } else if (subAction === exports.CurdSubAction.PAGE) {
1204
- dispatch({
1205
- type: "mode",
1206
- payload: exports.CurdCurrentMode.EDIT
1207
- });
1208
- sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
1209
- } else if (subAction === exports.CurdSubAction.SUCCESS) {
1210
- props.routeBack ? props.routeBack(exports.CurdAction.EDIT) : router.go(-1);
1211
- }
1212
- };
1213
1863
 
1214
- useModuleEvent(function (_ref3) {
1215
- var type = _ref3.type,
1216
- payload = _ref3.payload,
1217
- source = _ref3.source;
1864
+ var createTableItem = function createTableItem(action) {
1865
+ var operate = getOperate(action);
1218
1866
 
1219
- if (source) {
1220
- return;
1221
- }
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
+ });
1222
1871
 
1223
- var action = type;
1224
- var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
1225
- var record = payload === null || payload === void 0 ? void 0 : payload.record;
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
+ }
1226
1884
 
1227
- if (action === RequestAction.Success) {
1228
- //覆盖
1229
- action = lodash.get(payload, ["requestOpts", "action"]);
1230
- subAction = exports.CurdSubAction.SUCCESS;
1231
- }
1885
+ return item;
1886
+ }; //table操作栏 items
1232
1887
 
1233
- switch (action) {
1234
- case exports.CurdAction.LIST:
1235
- dealList(subAction);
1236
- break;
1237
1888
 
1238
- case exports.CurdAction.DETAIL:
1239
- dealDetail(subAction, {
1240
- record: record
1241
- });
1242
- break;
1889
+ var tableOperateItems = [createTableItem(exports.CurdAction.DETAIL), createTableItem(exports.CurdAction.EDIT), createTableItem(exports.CurdAction.DELETE)]; //新配置的operate item,添加默认发送事件方法
1243
1890
 
1244
- case exports.CurdAction.ADD:
1245
- dealAdd(subAction);
1246
- break;
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
+ }
1247
1904
 
1248
- case exports.CurdAction.EDIT:
1249
- dealEdit(subAction, {
1250
- record: record
1251
- });
1252
- break;
1253
- }
1254
- });
1255
- return function () {
1256
- return null;
1257
- };
1258
- }
1259
- });
1260
- var ProPageCurd = vue.defineComponent({
1261
- props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
1262
- setup: function setup(props, _ref4) {
1263
- var slots = _ref4.slots;
1264
- var invalidKeys = lodash.keys(PageCurd.props);
1265
- return function () {
1266
- var _slots$default;
1905
+ return item;
1906
+ });
1907
+ };
1267
1908
 
1268
- return vue.createVNode(ProCurd, lodash.omit(props, invalidKeys), {
1269
- "default": function _default() {
1270
- return [vue.createVNode(PageCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1271
- }
1272
- });
1273
- };
1274
- }
1275
- });
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
+ };
1276
1949
 
1277
1950
  var ProFormKey = Symbol("pro-form");
1278
1951
  var useProForm = function useProForm() {
@@ -1372,65 +2045,120 @@ var proFormProps = function proFormProps() {
1372
2045
  };
1373
2046
  };
1374
2047
 
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({}); //组件状态相关
2048
+ var createForm = function createForm(Form, Grid) {
2049
+ return vue.defineComponent({
2050
+ inheritAttrs: false,
2051
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), proFormProps()), lodash.omit(Grid.props, "items")),
2052
+ setup: function setup(props, _ref) {
2053
+ var slots = _ref.slots,
2054
+ emit = _ref.emit,
2055
+ expose = _ref.expose,
2056
+ attrs = _ref.attrs;
2057
+ var formState = props.model || vue.reactive({}); //组件状态相关
2058
+
2059
+ var showState = props.showState || vue.reactive({});
2060
+ var readonlyState = props.readonlyState || vue.reactive({});
2061
+ var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
2062
+
2063
+ hooks.useEffect(function () {
2064
+ if (props.showStateRules) {
2065
+ lodash.forEach(props.showStateRules, function (fn, key) {
2066
+ showState[key] = fn(formState);
2067
+ });
2068
+ }
1380
2069
 
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状态
2070
+ if (props.readonlyStateRules) {
2071
+ lodash.forEach(props.readonlyStateRules, function (fn, key) {
2072
+ readonlyState[key] = fn(formState);
2073
+ });
2074
+ }
1384
2075
 
1385
- hooks.useEffect(function () {
1386
- if (props.showStateRules) {
1387
- lodash.forEach(props.showStateRules, function (fn, key) {
1388
- showState[key] = fn(formState);
1389
- });
1390
- }
2076
+ if (props.disableStateRules) {
2077
+ lodash.forEach(props.disableStateRules, function (fn, key) {
2078
+ disableState[key] = fn(formState);
2079
+ });
2080
+ }
2081
+ }, formState); //readonly
1391
2082
 
1392
- if (props.readonlyStateRules) {
1393
- lodash.forEach(props.readonlyStateRules, function (fn, key) {
1394
- readonlyState[key] = fn(formState);
1395
- });
1396
- }
2083
+ var readonly = vue.computed(function () {
2084
+ return props.readonly;
2085
+ }); //columns合并
1397
2086
 
1398
- if (props.disableStateRules) {
1399
- lodash.forEach(props.disableStateRules, function (fn, key) {
1400
- disableState[key] = fn(formState);
2087
+ var columns = vue.computed(function () {
2088
+ return mergeStateToList(props.columns, props.columnState, function (item) {
2089
+ return getColumnFormItemName(item);
1401
2090
  });
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
2091
  });
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
2092
 
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
- });
2093
+ var handleFinish = function handleFinish(values) {
2094
+ //删除不显示的值再触发事件
2095
+ var showValues = getValidValues(values, showState, props.showStateRules);
2096
+ emit("finish", showValues, values);
2097
+ };
2098
+
2099
+ var formRef = vue.ref();
2100
+ expose({
2101
+ submit: function submit() {
2102
+ var _formRef$value;
2103
+
2104
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
2105
+ },
2106
+ resetFields: function resetFields() {
2107
+ var _formRef$value2;
2108
+
2109
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
2110
+ params[_key] = arguments[_key];
2111
+ }
2112
+
2113
+ (_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.resetFields.apply(_formRef$value2, params);
2114
+ }
2115
+ });
2116
+ provideProForm(_objectSpread2({
2117
+ formState: formState,
2118
+ showState: showState,
2119
+ readonlyState: readonlyState,
2120
+ disableState: disableState,
2121
+ //
2122
+ elementMap: props.elementMap,
2123
+ formElementMap: props.formElementMap,
2124
+ //
2125
+ readonly: readonly,
2126
+ //
2127
+ columns: columns,
2128
+ //
2129
+ formRef: formRef
2130
+ }, props.provideExtra));
2131
+ var invalidKeys = lodash.keys(proFormProps());
2132
+ var gridKeys = lodash.keys(lodash.omit(Grid.props, "items"));
2133
+ return function () {
2134
+ var _slots$start, _slots$default;
2135
+
2136
+ return vue.createVNode(Form, vue.mergeProps({
2137
+ "ref": formRef
2138
+ }, lodash.omit(attrs, "onFinish"), lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), _toConsumableArray(gridKeys), ["onFinish"])), {
2139
+ "model": formState,
2140
+ "onFinish": handleFinish
2141
+ }), _objectSpread2({
2142
+ "default": function _default() {
2143
+ 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, {
2144
+ "row": props.row,
2145
+ "col": props.col,
2146
+ "items": lodash.map(columns.value, function (item) {
2147
+ return {
2148
+ rowKey: getColumnFormItemName(item),
2149
+ vNode: getFormItemEl(props.formElementMap, item, props.needRules),
2150
+ col: lodash.get(item, ["extra", "col"])
2151
+ };
2152
+ })
2153
+ }, null) : lodash.map(columns.value, function (item) {
2154
+ return getFormItemEl(props.formElementMap, item, props.needRules);
2155
+ })]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
2156
+ }
2157
+ }, lodash.omit(slots, "default")));
2158
+ };
2159
+ }
2160
+ });
2161
+ };
1434
2162
 
1435
2163
  exports.SearchMode = void 0;
1436
2164
 
@@ -1479,6 +2207,11 @@ var proSearchFormProps = function proSearchFormProps() {
1479
2207
  debounceKeys: {
1480
2208
  type: Array
1481
2209
  },
2210
+ //默认 valueType 为 text 的控件会debounce处理
2211
+ debounceTypes: {
2212
+ type: Array,
2213
+ "default": ["text"]
2214
+ },
1482
2215
  debounceTime: {
1483
2216
  type: Number,
1484
2217
  "default": 800
@@ -1490,62 +2223,74 @@ var proSearchFormProps = function proSearchFormProps() {
1490
2223
  * 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
1491
2224
  * 针对传入的model(监听对象)做相应的finish(回调)处理
1492
2225
  */
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
- });
2226
+ var createSearchForm = function createSearchForm(Form, Props) {
2227
+ return vue.defineComponent({
2228
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), Props), proSearchFormProps()),
2229
+ setup: function setup(props, _ref) {
2230
+ var slots = _ref.slots;
2231
+ var formState = props.model || vue.reactive({});
2232
+ var valueTypeSet = new Set(props.debounceTypes); //根据column valueType 算出默认需要debounce处理的属性集合
2233
+
2234
+ var defaultDebounceKeys = lodash.map(lodash.filter(props.columns, function (column) {
2235
+ var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
2236
+
2237
+ return valueTypeSet.has(valueType);
2238
+ }), function (column) {
2239
+ return getColumnFormItemName(column);
2240
+ });
2241
+ var formRef = vue.ref();
1505
2242
 
1506
- var handleFinish = function handleFinish() {
1507
- emit("finish");
1508
- };
2243
+ var handleFinish = function handleFinish() {
2244
+ var _formRef$value;
1509
2245
 
1510
- var debounceFinish = lodash.debounce(function () {
1511
- handleFinish();
1512
- }, props.debounceTime); //初始化
2246
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
2247
+ };
1513
2248
 
1514
- hooks.useEffect(function () {
1515
- if (props.initEmit) {
2249
+ var debounceFinish = lodash.debounce(function () {
1516
2250
  handleFinish();
1517
- }
1518
- }, []);
2251
+ }, props.debounceTime); //初始化
1519
2252
 
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);
1523
- });
1524
- }; //监听
2253
+ hooks.useEffect(function () {
2254
+ if (props.initEmit) {
2255
+ handleFinish();
2256
+ }
2257
+ }, []);
1525
2258
 
2259
+ var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
2260
+ return lodash.some(debounceKeys, function (key) {
2261
+ return lodash.get(state, key) !== lodash.get(prevState, key);
2262
+ });
2263
+ }; //监听
1526
2264
 
1527
- hooks.useWatch(function (state, prevState) {
1528
- if (props.searchMode !== exports.SearchMode.AUTO) {
1529
- return;
1530
- } //如果改变的值中包括debounceKeys中注册的 延时触发
1531
2265
 
2266
+ hooks.useWatch(function (state, prevState) {
2267
+ if (props.searchMode !== exports.SearchMode.AUTO) {
2268
+ return;
2269
+ } //如果改变的值中包括debounceKeys中注册的 延时触发
1532
2270
 
1533
- var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
1534
2271
 
1535
- if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
1536
- debounceFinish();
1537
- return;
1538
- }
2272
+ var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
1539
2273
 
1540
- handleFinish();
1541
- }, function () {
1542
- return lodash.clone(props.model);
1543
- });
1544
- return function () {
1545
- return null;
1546
- };
1547
- }
1548
- });
2274
+ if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
2275
+ debounceFinish();
2276
+ return;
2277
+ }
2278
+
2279
+ handleFinish();
2280
+ }, function () {
2281
+ return lodash.clone(formState);
2282
+ });
2283
+ var invalidKeys = lodash.keys(lodash.omit(proSearchFormProps(), "columns"));
2284
+ return function () {
2285
+ return vue.createVNode(Form, vue.mergeProps({
2286
+ "ref": formRef
2287
+ }, lodash.omit(props, invalidKeys), {
2288
+ "model": formState
2289
+ }), slots);
2290
+ };
2291
+ }
2292
+ });
2293
+ };
1549
2294
 
1550
2295
  /**
1551
2296
  * ProFormList ctx
@@ -1579,86 +2324,83 @@ var FormListProvider = vue.defineComponent({
1579
2324
  }
1580
2325
  });
1581
2326
 
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
1593
- }
1594
- };
1595
- };
1596
-
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;
2327
+ var createFormList = function createFormList(FormItem) {
2328
+ return vue.defineComponent({
2329
+ props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
2330
+ //每行默认id
2331
+ rowKey: {
2332
+ type: String,
2333
+ "default": "id"
2334
+ }
2335
+ }),
2336
+ setup: function setup(props, _ref2) {
2337
+ var slots = _ref2.slots;
1605
2338
 
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;
2339
+ var _useProForm = useProForm(),
2340
+ formState = _useProForm.formState,
2341
+ readonly = _useProForm.readonly;
1609
2342
 
1610
- var handleAdd = function handleAdd() {
1611
- var targetList = lodash.get(formState, path);
2343
+ var formListCtx = useProFormList();
2344
+ var nameList = convertPathToList(props.name);
2345
+ var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
1612
2346
 
1613
- if (!lodash.isArray(targetList)) {
1614
- targetList = [];
1615
- }
2347
+ var handleAdd = function handleAdd() {
2348
+ var targetList = lodash.get(formState, path);
1616
2349
 
1617
- targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
1618
- lodash.set(formState, path, targetList);
1619
- };
2350
+ if (!lodash.isArray(targetList)) {
2351
+ targetList = [];
2352
+ }
1620
2353
 
1621
- var handleRemove = function handleRemove(index) {
1622
- var targetList = lodash.get(formState, path);
2354
+ targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
2355
+ lodash.set(formState, path, targetList);
2356
+ };
1623
2357
 
1624
- if (lodash.size(targetList) <= 0) {
1625
- return;
1626
- }
2358
+ var handleRemove = function handleRemove(index) {
2359
+ var targetList = lodash.get(formState, path);
1627
2360
 
1628
- targetList.splice(index, 1);
1629
- };
2361
+ if (lodash.size(targetList) <= 0) {
2362
+ return;
2363
+ }
1630
2364
 
1631
- return function () {
1632
- var _slots$add;
2365
+ targetList.splice(index, 1);
2366
+ };
1633
2367
 
1634
- return vue.createVNode(vue.Fragment, null, [lodash.map(lodash.get(formState, path), function (item, index) {
1635
- var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2368
+ return function () {
2369
+ var _slots$add;
1636
2370
 
1637
- return vue.createVNode(FormListProvider, {
1638
- "key": index,
1639
- "pathList": [].concat(_toConsumableArray(path), [index])
1640
- }, {
2371
+ return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
1641
2372
  "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",
2373
+ return [lodash.map(lodash.get(formState, path), function (item, index) {
2374
+ var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2375
+
2376
+ return vue.createVNode(FormListProvider, {
2377
+ "key": item[props.rowKey] || index,
2378
+ "pathList": [].concat(_toConsumableArray(path), [index])
2379
+ }, {
2380
+ "default": function _default() {
2381
+ return [vue.createVNode("div", {
2382
+ "class": "pro-form-list-item"
2383
+ }, [(_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", {
2384
+ "class": "pro-form-list-item-add",
2385
+ "onClick": handleAdd
2386
+ }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
2387
+ "class": "pro-form-list-item-minus",
2388
+ "onClick": function onClick() {
2389
+ return handleRemove(index);
2390
+ }
2391
+ }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
2392
+ }
2393
+ });
2394
+ }), !readonly.value && vue.createVNode("div", {
2395
+ "class": "pro-form-list-add",
1646
2396
  "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)])])])];
2397
+ }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
1653
2398
  }
1654
2399
  });
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
- });
2400
+ };
2401
+ }
2402
+ });
2403
+ };
1662
2404
 
1663
2405
  var proFormItemProps = function proFormItemProps() {
1664
2406
  return {
@@ -1784,13 +2526,6 @@ var proTableProps = function proTableProps() {
1784
2526
  type: Object
1785
2527
  },
1786
2528
 
1787
- /**
1788
- * loading
1789
- */
1790
- loading: {
1791
- type: Boolean
1792
- },
1793
-
1794
2529
  /**
1795
2530
  * 序号
1796
2531
  */
@@ -1801,7 +2536,7 @@ var proTableProps = function proTableProps() {
1801
2536
  /**
1802
2537
  * 分页
1803
2538
  */
1804
- pagination: {
2539
+ paginationState: {
1805
2540
  type: Object
1806
2541
  },
1807
2542
 
@@ -1814,62 +2549,35 @@ var proTableProps = function proTableProps() {
1814
2549
  };
1815
2550
  };
1816
2551
 
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 = lodash.merge(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
- }
1842
-
1843
- return nextItem;
1844
- }); //处理序号
2552
+ var createTable = function createTable(Table, Props) {
2553
+ return vue.defineComponent({
2554
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, Table.props), Props), proTableProps()),
2555
+ setup: function setup(props, _ref) {
2556
+ var slots = _ref.slots;
1845
2557
 
1846
- if (props.serialNumber) {
1847
- columns.unshift(_objectSpread2(_objectSpread2({
2558
+ var createNumberColumn = function createNumberColumn() {
2559
+ return _objectSpread2(_objectSpread2({
1848
2560
  title: "序号",
1849
2561
  dataIndex: "serialNumber",
1850
2562
  width: 80
1851
2563
  }, props.column), {}, {
1852
- // @ts-ignore
1853
- customRender: function customRender(_ref3) {
1854
- var _props$pagination, _props$pagination2;
2564
+ customRender: function customRender(_ref2) {
2565
+ var _props$paginationStat, _props$paginationStat2;
1855
2566
 
1856
- var index = _ref3.index;
2567
+ var index = _ref2.index;
1857
2568
 
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;
2569
+ 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) {
2570
+ return props.paginationState.pageSize * (props.paginationState.page - 1) + index + 1;
1860
2571
  }
1861
2572
 
1862
2573
  return index + 1;
1863
2574
  }
1864
- }));
1865
- }
2575
+ });
2576
+ };
1866
2577
 
1867
- var operate = props.operate; //处理operate
2578
+ var createOperateColumn = function createOperateColumn() {
2579
+ var operate = props.operate; //将itemState补充的信息拼到item中
1868
2580
 
1869
- if (operate && operate.items && lodash.some(operate.items, function (item) {
1870
- return item.show;
1871
- })) {
1872
- //将itemState补充的信息拼到item中
1873
2581
  var items = lodash.map(operate.items, function (i) {
1874
2582
  return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
1875
2583
  }); //排序
@@ -1877,14 +2585,14 @@ var ProTable = vue.defineComponent({
1877
2585
  var sortedItems = lodash.sortBy(items, function (item) {
1878
2586
  return item.sort;
1879
2587
  });
1880
- columns.push(_objectSpread2(_objectSpread2({
2588
+ return _objectSpread2(_objectSpread2(_objectSpread2({}, props.column), {}, {
1881
2589
  title: "操作",
1882
2590
  dataIndex: "operate",
1883
2591
  fixed: "right"
1884
- }, props.column), {}, {
1885
- customRender: function customRender(_ref4) {
1886
- var record = _ref4.record;
1887
- var validItems = lodash.filter(sortedItems, function (item) {
2592
+ }, operate.column), {}, {
2593
+ customRender: function customRender(_ref3) {
2594
+ var record = _ref3.record;
2595
+ var showItems = lodash.filter(sortedItems, function (item) {
1888
2596
  if (item.show && lodash.isFunction(item.show)) {
1889
2597
  return item.show(record);
1890
2598
  }
@@ -1897,7 +2605,7 @@ var ProTable = vue.defineComponent({
1897
2605
  });
1898
2606
  return vue.createVNode("div", {
1899
2607
  "class": "pro-table-operate"
1900
- }, [lodash.map(validItems, function (item) {
2608
+ }, [lodash.map(showItems, function (item) {
1901
2609
  //自定义
1902
2610
  if (lodash.isFunction(item.element)) {
1903
2611
  return item.element(record, item);
@@ -1914,43 +2622,96 @@ var ProTable = vue.defineComponent({
1914
2622
  }, [item.label]);
1915
2623
  })]);
1916
2624
  }
1917
- }, operate.column));
1918
- }
2625
+ });
2626
+ };
1919
2627
 
1920
- return columns;
1921
- });
1922
- provideProTable(_objectSpread2({
1923
- columns: columns
1924
- }, props.provideExtra));
1925
- return function () {
1926
- var _slots$default;
2628
+ var columns = vue.computed(function () {
2629
+ var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
2630
+ return item.dataIndex;
2631
+ }); //根据valueType选择对应的展示组件
2632
+
2633
+ var columns = lodash.map(mergeColumns, function (item) {
2634
+ //merge公共item
2635
+ var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
2636
+
2637
+ if (!item.customRender) {
2638
+ nextItem.customRender = function (_ref4) {
2639
+ var text = _ref4.text;
2640
+ var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
2641
+ showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
2642
+ content: props.columnEmptyText
2643
+ })
2644
+ }), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
2645
+
2646
+ return vn || text || props.columnEmptyText;
2647
+ };
2648
+ }
1927
2649
 
1928
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1929
- };
1930
- }
1931
- });
2650
+ return nextItem;
2651
+ }); //处理序号
2652
+
2653
+ if (props.serialNumber) {
2654
+ columns.unshift(createNumberColumn());
2655
+ } //处理operate
2656
+
2657
+
2658
+ if (props.operate && props.operate.items && lodash.some(props.operate.items, function (item) {
2659
+ return item.show;
2660
+ })) {
2661
+ columns.push(createOperateColumn());
2662
+ }
2663
+
2664
+ return columns;
2665
+ });
2666
+ var tableRef = vue.ref();
2667
+ provideProTable(_objectSpread2({
2668
+ columns: columns,
2669
+ tableRef: tableRef
2670
+ }, props.provideExtra));
2671
+ var invalidKeys = lodash.keys(proTableProps());
2672
+ return function () {
2673
+ return vue.createVNode(Table, vue.mergeProps({
2674
+ "ref": tableRef
2675
+ }, lodash.omit(props, invalidKeys), {
2676
+ "columns": columns.value
2677
+ }), slots);
2678
+ };
2679
+ }
2680
+ });
2681
+ };
1932
2682
 
1933
2683
  exports.ProCurd = ProCurd;
1934
- exports.ProForm = ProForm;
1935
- exports.ProFormList = ProFormList;
1936
2684
  exports.ProModalCurd = ProModalCurd;
1937
2685
  exports.ProModule = ProModule;
1938
2686
  exports.ProPageCurd = ProPageCurd;
1939
- exports.ProSearchForm = ProSearchForm;
1940
- exports.ProTable = ProTable;
1941
2687
  exports.RequestAction = RequestAction;
2688
+ exports.Wrapper = Wrapper;
1942
2689
  exports.convertPathToList = convertPathToList;
2690
+ exports.createCurdDesc = createCurdDesc;
2691
+ exports.createCurdForm = createCurdForm;
2692
+ exports.createCurdList = createCurdList;
2693
+ exports.createExpose = createExpose;
2694
+ exports.createForm = createForm;
1943
2695
  exports.createFormItemCompFn = createFormItemCompFn;
2696
+ exports.createFormList = createFormList;
2697
+ exports.createGrid = createGrid;
2698
+ exports.createSearchForm = createSearchForm;
2699
+ exports.createTable = createTable;
1944
2700
  exports.defaultPage = defaultPage;
2701
+ exports.findTargetInTree = findTargetInTree;
2702
+ exports.findTargetListInTree = findTargetListInTree;
1945
2703
  exports.generateId = generateId;
1946
2704
  exports.getColumnFormItemName = getColumnFormItemName;
1947
2705
  exports.getColumnValueType = getColumnValueType;
2706
+ exports.getFirstPropName = getFirstPropName;
1948
2707
  exports.getFormItemEl = getFormItemEl;
1949
2708
  exports.getItemEl = getItemEl;
1950
2709
  exports.getValidValues = getValidValues;
1951
2710
  exports.mergeStateToList = mergeStateToList;
1952
2711
  exports.provideProCurd = provideProCurd;
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;