@vue-start/pro 0.3.2 → 0.4.2

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
@@ -199,186 +199,12 @@ var useComposeRequestActor = function useComposeRequestActor(actors, options, ca
199
199
  }, []);
200
200
  };
201
201
 
202
- var treeDefaultNames = {
203
- children: "children",
204
- label: "label",
205
- value: "value"
206
- };
207
- /**
208
- * 根据value从treeData中找到对象
209
- * @param data
210
- * @param value
211
- * @param fieldNames
212
- * @param cb 对象:同步 方法:回调,可以理解为异步
213
- */
214
-
215
- var findTargetInTree = function findTargetInTree(data, value, fieldNames, cb) {
216
- var index = lodash.findIndex(data, function (item) {
217
- return lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
218
- });
219
-
220
- if (index > -1) {
221
- if (lodash.isFunction(cb)) {
222
- cb(index, data[index], data);
223
- } else {
224
- cb.index = index;
225
- cb.target = data[index];
226
- cb.list = data;
227
- }
228
-
229
- return;
230
- }
231
-
232
- lodash.forEach(data, function (item) {
233
- var children = lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
234
-
235
- if (lodash.size(children) > 0) {
236
- findTargetInTree(children, value, fieldNames, cb);
237
- }
238
- });
239
- };
240
- /**
241
- * 根据value从treeData中找出对象及父列表
242
- * @param data
243
- * @param value
244
- * @param fieldNames
245
- * @param cb
246
- * @param parent
247
- */
248
-
249
- var findTargetListInTree = function findTargetListInTree(data, value, fieldNames, cb) {
250
- var parent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
251
- var target = lodash.find(data, function (item) {
252
- return lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
253
- });
254
-
255
- if (target) {
256
- if (lodash.isFunction(cb)) {
257
- cb([].concat(_toConsumableArray(parent), [target]));
258
- } else {
259
- cb.list = [].concat(_toConsumableArray(parent), [target]);
260
- }
261
-
262
- return;
263
- }
264
-
265
- lodash.forEach(data, function (item) {
266
- var children = lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
267
-
268
- if (lodash.size(children) > 0) {
269
- findTargetListInTree(children, value, fieldNames, cb, [].concat(_toConsumableArray(parent), [item]));
270
- }
271
- });
272
- };
273
-
274
- /**
275
- * 剔除showState或showStateRules规则为!true的值
276
- * @param values
277
- * @param showState
278
- * @param showStateRules
279
- */
280
-
281
- var getValidValues = function getValidValues(values, showState, showStateRules) {
282
- if (showState) {
283
- var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
284
- return !showState[key];
285
- });
286
- return lodash.omit(values, invalidKeys);
287
- }
288
-
289
- if (showStateRules) {
290
- var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
291
- return !showStateRules[key](values);
292
- });
293
-
294
- return lodash.omit(values, _invalidKeys);
295
- }
296
-
297
- return values;
298
- };
299
- /**
300
- * string类型的path转为arr
301
- * @param path
302
- */
303
-
304
- var convertPathToList = function convertPathToList(path) {
305
- if (!path) {
306
- return undefined;
307
- }
308
-
309
- if (lodash.isArray(path)) {
310
- return path;
311
- }
312
-
313
- if (path && lodash.isString(path) && path.indexOf(".") > 0) {
314
- return lodash.split(path, ".");
315
- }
316
-
317
- return [path];
318
- };
319
- /**
320
- * 将listState 中的数据通过id merge到 list item中
321
- * ps:数组会替换
322
- * 注意:mergeWith 会改变原始对象
323
- * @param list
324
- * @param listState
325
- * @param id
326
- */
327
-
328
- var mergeStateToList = function mergeStateToList(list, listState, id) {
329
- if (!listState || !id) {
330
- return list;
331
- }
332
-
333
- return lodash.map(list, function (item) {
334
- var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
335
-
336
- var stateData = lodash.get(listState, idName);
337
-
338
- if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
339
- return item;
340
- } //只有是对象(键值对)才合并
341
-
342
-
343
- return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
344
- //如果是数组,替换
345
- if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
346
- return srcValue;
347
- }
348
- });
349
- });
350
- };
351
-
352
- /**
353
- * 唯一id
354
- */
355
-
356
- var generateId = function generateId() {
357
- return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
358
- };
359
- /**
360
- * ref 传递
361
- */
362
-
363
- var createExpose = function createExpose(methods, targetRef) {
364
- return lodash.reduce(methods, function (pair, method) {
365
- return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, method, function () {
366
- var _targetRef$value, _targetRef$value$meth;
367
-
368
- for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
369
- params[_key] = arguments[_key];
370
- }
371
-
372
- 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));
373
- }));
374
- }, {});
375
- };
202
+ /***************************************** curd模式 *****************************************/
376
203
 
377
204
  /**
378
205
  * 获取Column的valueType,默认"text"
379
206
  * @param column
380
207
  */
381
-
382
208
  var getColumnValueType = function getColumnValueType(column) {
383
209
  return column.formValueType || column.valueType || "text";
384
210
  };
@@ -444,6 +270,213 @@ var getItemEl = function getItemEl(elementMap, column, value) {
444
270
  value: value
445
271
  }), (_column$formFieldProp2 = column.formFieldProps) === null || _column$formFieldProp2 === void 0 ? void 0 : _column$formFieldProp2.slots);
446
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
+
447
480
  var ProModuleKey = Symbol("pro-module");
448
481
  var useProModule = function useProModule() {
449
482
  return vue.inject(ProModuleKey);
@@ -466,32 +499,17 @@ var proModuleProps = function proModuleProps() {
466
499
  },
467
500
 
468
501
  /**
469
- * 配置(静态)
470
- */
471
- columns: {
472
- type: Array
473
- },
474
-
475
- /**
476
- * 配置(动态)
477
- * columns动态属性兼容
478
- */
479
- columnState: {
480
- type: Object
481
- },
482
-
483
- /**
484
- * 展示组件集
502
+ * 组件集
485
503
  */
486
504
  elementMap: {
487
505
  type: Object
488
506
  },
489
507
 
490
508
  /**
491
- * 录入组件集
509
+ * 组件描述(树)
492
510
  */
493
- formElementMap: {
494
- type: Object
511
+ elementConfigs: {
512
+ type: Array
495
513
  },
496
514
 
497
515
  /**
@@ -500,34 +518,22 @@ var proModuleProps = function proModuleProps() {
500
518
  requests: {
501
519
  type: Array
502
520
  }
503
- };
504
- };
505
-
506
- var ProModule = vue.defineComponent({
507
- props: _objectSpread2({}, proModuleProps()),
508
- setup: function setup(props, _ref) {
509
- var slots = _ref.slots,
510
- expose = _ref.expose;
511
-
512
- /**
513
- * columns columnState 合并
514
- */
515
- var columns = vue.computed(function () {
516
- return mergeStateToList(props.columns, props.columnState, function (item) {
517
- return getColumnFormItemName(item);
518
- });
519
- });
520
- /*********************************** 渲染组件 ***************************************/
521
- // 获取FormItem VNode
522
-
523
- var getFormItemVNode = function getFormItemVNode(column) {
524
- var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
525
- return getFormItemEl(props.formElementMap, column, needRules);
526
- }; // 获取Item VNode
521
+ };
522
+ };
527
523
 
524
+ var ProModule = vue.defineComponent({
525
+ props: _objectSpread2({}, proModuleProps()),
526
+ setup: function setup(props, _ref) {
527
+ var slots = _ref.slots,
528
+ expose = _ref.expose;
528
529
 
529
- var getItemVNode = function getItemVNode(column, value) {
530
- return getItemEl(props.elementMap, column, value);
530
+ /*********************************** render ***************************************/
531
+ var render = function render(elementConfig) {
532
+ if (lodash.isArray(elementConfig)) {
533
+ return renderElements(props.elementMap, elementConfig);
534
+ }
535
+
536
+ return renderElement(props.elementMap, elementConfig);
531
537
  };
532
538
  /*********************************** 事件处理 ***************************************/
533
539
 
@@ -543,13 +549,15 @@ var ProModule = vue.defineComponent({
543
549
  var state = props.state || vue.reactive({});
544
550
 
545
551
  var dispatch = function dispatch(action) {
546
- //如果要更新的属性值是 object ,执行覆盖操作
547
- if (lodash.isObject(state[action.type])) {
548
- 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);
549
557
  return;
550
558
  }
551
559
 
552
- state[action.type] = action.payload;
560
+ state[action.type] = data;
553
561
  };
554
562
  /*********************************** request ***************************************/
555
563
 
@@ -653,11 +661,7 @@ var ProModule = vue.defineComponent({
653
661
  }
654
662
  }, true);
655
663
  provideProModule({
656
- columns: columns,
657
- getFormItemVNode: getFormItemVNode,
658
- getItemVNode: getItemVNode,
659
664
  elementMap: props.elementMap,
660
- formElementMap: props.formElementMap,
661
665
  //
662
666
  subject$: subject$,
663
667
  sendEvent: sendEvent,
@@ -675,7 +679,7 @@ var ProModule = vue.defineComponent({
675
679
  return function () {
676
680
  var _slots$default;
677
681
 
678
- 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)]);
679
683
  };
680
684
  }
681
685
  });
@@ -754,6 +758,181 @@ exports.CurdAddAction = void 0;
754
758
  CurdAddAction["CONTINUE"] = "CONTINUE";
755
759
  })(exports.CurdAddAction || (exports.CurdAddAction = {}));
756
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
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
+
757
936
  var defaultPage = {
758
937
  page: 1,
759
938
  pageSize: 10
@@ -761,16 +940,38 @@ var defaultPage = {
761
940
 
762
941
  var proCurdProps = function proCurdProps() {
763
942
  return {
764
- /**
765
- * 列表 或 详情 的唯一标识
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
+ * 列表 或 详情 的唯一标识
766
967
  */
767
968
  rowKey: {
768
969
  type: String,
769
970
  "default": "id"
770
971
  },
771
972
 
772
- /**
773
- * operates
973
+ /**
974
+ * operates
774
975
  */
775
976
  operates: {
776
977
  type: Array
@@ -799,58 +1000,67 @@ var Curd = vue.defineComponent({
799
1000
  expose = _ref.expose;
800
1001
 
801
1002
  var _ref2 = useProModule(),
802
- columns = _ref2.columns,
1003
+ elementMap = _ref2.elementMap,
803
1004
  state = _ref2.state,
804
1005
  sendEvent = _ref2.sendEvent,
805
1006
  sendRequest = _ref2.sendRequest;
806
- /**
807
- * 排序
808
- * @param list
809
- * @param propName
1007
+ /**
1008
+ * columns columnState 合并
810
1009
  */
811
1010
 
812
1011
 
813
- var dealSort = function dealSort(list, propName) {
814
- return lodash.sortBy(list, function (item) {
815
- return lodash.get(item, propName);
1012
+ var columns = vue.computed(function () {
1013
+ return mergeStateToList(props.columns, props.columnState, function (item) {
1014
+ return getColumnFormItemName(item);
816
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);
817
1028
  };
818
- /**
819
- * hideInForm columns
1029
+ /**
1030
+ * ${signName} 配置为true 会被选择
1031
+ * @param signName
1032
+ * @param opposite 如果为true,未配置(undefined)会被选择
820
1033
  */
821
1034
 
822
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
+
823
1053
  var formColumns = vue.computed(function () {
824
- return dealSort(lodash.filter(columns.value, function (item) {
825
- return !item.hideInForm;
826
- }), "formSort");
1054
+ return getSignColumns("form", true);
827
1055
  });
828
- /**
829
- * 非 hideInDetail columns
830
- */
831
-
832
1056
  var descColumns = vue.computed(function () {
833
- return dealSort(lodash.filter(columns.value, function (item) {
834
- return !item.hideInDetail;
835
- }), "descSort");
1057
+ return getSignColumns("detail", true);
836
1058
  });
837
- /**
838
- * 非 hideInTable columns
839
- */
840
-
841
1059
  var tableColumns = vue.computed(function () {
842
- return dealSort(lodash.filter(columns.value, function (item) {
843
- return !item.hideInTable;
844
- }), "tableSort");
1060
+ return getSignColumns("table", true);
845
1061
  });
846
- /**
847
- * search columns
848
- */
849
-
850
1062
  var searchColumns = vue.computed(function () {
851
- return dealSort(lodash.filter(columns.value, function (item) {
852
- return !!item.search;
853
- }), "searchSort");
1063
+ return getSignColumns("search");
854
1064
  });
855
1065
  /******************************** 逻辑 *************************************/
856
1066
  //上一次发起列表请求的参数
@@ -935,6 +1145,13 @@ var Curd = vue.defineComponent({
935
1145
  return props.modalProps;
936
1146
  });
937
1147
  provideProCurd({
1148
+ columns: columns,
1149
+ getSignColumns: getSignColumns,
1150
+ getFormItemVNode: getFormItemVNode,
1151
+ getItemVNode: getItemVNode,
1152
+ elementMap: elementMap,
1153
+ formElementMap: props.formElementMap,
1154
+ //
938
1155
  rowKey: props.rowKey,
939
1156
  curdState: state,
940
1157
  formColumns: formColumns,
@@ -1416,21 +1633,38 @@ function _isSlot(s) {
1416
1633
 
1417
1634
  var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
1418
1635
  return vue.defineComponent({
1419
- props: _objectSpread2({}, Descriptions.props),
1636
+ props: _objectSpread2(_objectSpread2({}, Descriptions.props), {}, {
1637
+ //重写Item content
1638
+ renderItem: {
1639
+ type: Function
1640
+ },
1641
+ //标记名称
1642
+ signName: {
1643
+ type: String
1644
+ }
1645
+ }),
1420
1646
  setup: function setup(props, _ref) {
1421
1647
  var slots = _ref.slots;
1422
1648
 
1423
- var _useProModule = useProModule(),
1424
- getItemVNode = _useProModule.getItemVNode;
1425
-
1426
1649
  var _useProCurd = useProCurd(),
1650
+ getItemVNode = _useProCurd.getItemVNode,
1427
1651
  curdState = _useProCurd.curdState,
1428
- descColumns = _useProCurd.descColumns;
1652
+ descColumns = _useProCurd.descColumns,
1653
+ getSignColumns = _useProCurd.getSignColumns;
1429
1654
 
1430
1655
  var descVNodes = vue.computed(function () {
1431
- return lodash.map(descColumns.value, function (item) {
1656
+ var columns = props.signName ? getSignColumns(props.signName) : descColumns.value;
1657
+ return lodash.map(columns, function (item) {
1432
1658
  var _slot;
1433
1659
 
1660
+ var _props$renderItem;
1661
+
1662
+ var vn = (_props$renderItem = props.renderItem) === null || _props$renderItem === void 0 ? void 0 : _props$renderItem.call(props, item);
1663
+
1664
+ if (vn) {
1665
+ return vn;
1666
+ }
1667
+
1434
1668
  var value = lodash.get(curdState.detailData, item.dataIndex);
1435
1669
  return vue.createVNode(DescriptionsItem, vue.mergeProps({
1436
1670
  "key": item.dataIndex,
@@ -1447,7 +1681,7 @@ var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
1447
1681
 
1448
1682
  return vue.createVNode(Descriptions, props, _objectSpread2({
1449
1683
  "default": function _default() {
1450
- return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), descVNodes, (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1684
+ 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)];
1451
1685
  }
1452
1686
  }, lodash.omit(slots, "default", "start")));
1453
1687
  };
@@ -1457,6 +1691,10 @@ var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
1457
1691
 
1458
1692
  var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
1459
1693
  return {
1694
+ //标记名称
1695
+ signName: {
1696
+ type: String
1697
+ },
1460
1698
  //是否使用operate bar
1461
1699
  operateBar: {
1462
1700
  type: Boolean,
@@ -1488,22 +1726,36 @@ var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
1488
1726
 
1489
1727
  var createCurdForm = function createCurdForm(Form, Button, convertFormProps) {
1490
1728
  return vue.defineComponent({
1729
+ inheritAttrs: false,
1491
1730
  props: _objectSpread2(_objectSpread2({}, Form.props), proCurdAddOrEditProps()),
1492
1731
  setup: function setup(props, _ref) {
1493
- var slots = _ref.slots;
1494
-
1495
- var _useProModule = useProModule(),
1496
- elementMap = _useProModule.elementMap,
1497
- formElementMap = _useProModule.formElementMap;
1732
+ var slots = _ref.slots,
1733
+ attrs = _ref.attrs,
1734
+ expose = _ref.expose;
1498
1735
 
1499
1736
  var _useProCurd = useProCurd(),
1737
+ elementMap = _useProCurd.elementMap,
1738
+ formElementMap = _useProCurd.formElementMap,
1500
1739
  curdState = _useProCurd.curdState,
1501
1740
  formColumns = _useProCurd.formColumns,
1741
+ getSignColumns = _useProCurd.getSignColumns,
1502
1742
  sendCurdEvent = _useProCurd.sendCurdEvent;
1503
1743
 
1504
1744
  var formRef = vue.ref();
1745
+ var columns = vue.computed(function () {
1746
+ if (props.signName) {
1747
+ return getSignColumns(props.signName);
1748
+ }
1749
+
1750
+ return formColumns.value;
1751
+ });
1752
+
1753
+ var handleFinish = function handleFinish(values, originValues) {
1754
+ if (attrs.onFinish) {
1755
+ attrs.onFinish(values, originValues);
1756
+ return;
1757
+ }
1505
1758
 
1506
- var handleFinish = function handleFinish(values) {
1507
1759
  if (curdState.mode === exports.CurdCurrentMode.EDIT) {
1508
1760
  //edit
1509
1761
  sendCurdEvent({
@@ -1535,15 +1787,22 @@ var createCurdForm = function createCurdForm(Form, Button, convertFormProps) {
1535
1787
  (_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.submit();
1536
1788
  };
1537
1789
 
1790
+ expose({
1791
+ submit: function submit() {
1792
+ var _formRef$value3;
1793
+
1794
+ (_formRef$value3 = formRef.value) === null || _formRef$value3 === void 0 ? void 0 : _formRef$value3.submit();
1795
+ }
1796
+ });
1538
1797
  return function () {
1539
1798
  var _slots$divide, _slots$operateStart, _slots$operateCenter, _slots$operateEnd, _slots$default;
1540
1799
 
1541
1800
  return vue.createVNode(Form, vue.mergeProps({
1542
1801
  "ref": formRef
1543
- }, props, {
1802
+ }, lodash.omit(attrs, "onFinish"), props, {
1544
1803
  "elementMap": props.elementMap || elementMap,
1545
1804
  "formElementMap": props.formElementMap || formElementMap,
1546
- "columns": formColumns.value,
1805
+ "columns": columns.value,
1547
1806
  "model": curdState.detailData,
1548
1807
  "readonly": curdState.mode === exports.CurdCurrentMode.DETAIL,
1549
1808
  "onFinish": handleFinish
@@ -1605,11 +1864,9 @@ var createCurdList = function createCurdList(SearchForm, Table) {
1605
1864
  setup: function setup(props, _ref) {
1606
1865
  var slots = _ref.slots;
1607
1866
 
1608
- var _useProModule = useProModule(),
1609
- elementMap = _useProModule.elementMap,
1610
- formElementMap = _useProModule.formElementMap;
1611
-
1612
1867
  var _useProCurd = useProCurd(),
1868
+ elementMap = _useProCurd.elementMap,
1869
+ formElementMap = _useProCurd.formElementMap,
1613
1870
  curdState = _useProCurd.curdState,
1614
1871
  searchColumns = _useProCurd.searchColumns,
1615
1872
  tableColumns = _useProCurd.tableColumns,
@@ -1723,6 +1980,114 @@ var createCurdList = function createCurdList(SearchForm, Table) {
1723
1980
  });
1724
1981
  };
1725
1982
 
1983
+ /**
1984
+ * ProFormList ctx
1985
+ */
1986
+
1987
+ var ProFormListKey = Symbol("pro-form-list");
1988
+ var useProFormList = function useProFormList() {
1989
+ return vue.inject(ProFormListKey);
1990
+ };
1991
+ var provideProFormList = function provideProFormList(ctx) {
1992
+ vue.provide(ProFormListKey, ctx);
1993
+ };
1994
+ var FormListProvider = vue.defineComponent({
1995
+ props: {
1996
+ pathList: {
1997
+ type: Array
1998
+ }
1999
+ },
2000
+ setup: function setup(props, _ref) {
2001
+ var slots = _ref.slots;
2002
+ provideProFormList({
2003
+ pathList: props.pathList
2004
+ });
2005
+ return function () {
2006
+ var _slots$default;
2007
+
2008
+ return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
2009
+ };
2010
+ }
2011
+ });
2012
+
2013
+ var createFormList = function createFormList(FormItem) {
2014
+ return vue.defineComponent({
2015
+ props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
2016
+ //每行默认id
2017
+ rowKey: {
2018
+ type: String,
2019
+ "default": "id"
2020
+ }
2021
+ }),
2022
+ setup: function setup(props, _ref2) {
2023
+ var slots = _ref2.slots;
2024
+
2025
+ var _useProForm = useProForm(),
2026
+ formState = _useProForm.formState,
2027
+ readonly = _useProForm.readonly;
2028
+
2029
+ var formListCtx = useProFormList();
2030
+ var nameList = convertPathToList(props.name);
2031
+ var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
2032
+
2033
+ var handleAdd = function handleAdd() {
2034
+ var targetList = lodash.get(formState, path);
2035
+
2036
+ if (!lodash.isArray(targetList)) {
2037
+ targetList = [];
2038
+ }
2039
+
2040
+ targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
2041
+ lodash.set(formState, path, targetList);
2042
+ };
2043
+
2044
+ var handleRemove = function handleRemove(index) {
2045
+ var targetList = lodash.get(formState, path);
2046
+
2047
+ if (lodash.size(targetList) <= 0) {
2048
+ return;
2049
+ }
2050
+
2051
+ targetList.splice(index, 1);
2052
+ };
2053
+
2054
+ return function () {
2055
+ var _slots$add;
2056
+
2057
+ return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
2058
+ "default": function _default() {
2059
+ return [lodash.map(lodash.get(formState, path), function (item, index) {
2060
+ var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2061
+
2062
+ return vue.createVNode(FormListProvider, {
2063
+ "key": item[props.rowKey] || index,
2064
+ "pathList": [].concat(_toConsumableArray(path), [index])
2065
+ }, {
2066
+ "default": function _default() {
2067
+ return [vue.createVNode("div", {
2068
+ "class": "pro-form-list-item"
2069
+ }, [(_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", {
2070
+ "class": "pro-form-list-item-add",
2071
+ "onClick": handleAdd
2072
+ }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
2073
+ "class": "pro-form-list-item-minus",
2074
+ "onClick": function onClick() {
2075
+ return handleRemove(index);
2076
+ }
2077
+ }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
2078
+ }
2079
+ });
2080
+ }), !readonly.value && vue.createVNode("div", {
2081
+ "class": "pro-form-list-add",
2082
+ "onClick": handleAdd
2083
+ }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
2084
+ }
2085
+ });
2086
+ };
2087
+ }
2088
+ });
2089
+ };
2090
+
1726
2091
  var ProFormKey = Symbol("pro-form");
1727
2092
  var useProForm = function useProForm() {
1728
2093
  return vue.inject(ProFormKey);
@@ -1734,24 +2099,24 @@ var provideProForm = function provideProForm(ctx) {
1734
2099
 
1735
2100
  var proFormProps = function proFormProps() {
1736
2101
  return {
1737
- /**
1738
- * 同 antd 或 element form中的model
2102
+ /**
2103
+ * 同 antd 或 element form中的model
1739
2104
  */
1740
2105
  model: {
1741
2106
  type: Object
1742
2107
  },
1743
2108
 
1744
- /**
1745
- * 子组件是否只读样式
2109
+ /**
2110
+ * 子组件是否只读样式
1746
2111
  */
1747
2112
  readonly: {
1748
2113
  type: Boolean,
1749
2114
  "default": undefined
1750
2115
  },
1751
2116
 
1752
- /**
1753
- * FormComponent 根据此项来确定组件是否显示
1754
- * rules 根据rules中方法生成showState对象
2117
+ /**
2118
+ * FormComponent 根据此项来确定组件是否显示
2119
+ * rules 根据rules中方法生成showState对象
1755
2120
  */
1756
2121
  showState: {
1757
2122
  type: Object
@@ -1760,8 +2125,8 @@ var proFormProps = function proFormProps() {
1760
2125
  type: Object
1761
2126
  },
1762
2127
 
1763
- /**
1764
- * 是否只读
2128
+ /**
2129
+ * 是否只读
1765
2130
  */
1766
2131
  readonlyState: {
1767
2132
  type: Object
@@ -1770,8 +2135,8 @@ var proFormProps = function proFormProps() {
1770
2135
  type: Object
1771
2136
  },
1772
2137
 
1773
- /**
1774
- * 是否disabled
2138
+ /**
2139
+ * 是否disabled
1775
2140
  */
1776
2141
  disableState: {
1777
2142
  type: Object
@@ -1780,8 +2145,8 @@ var proFormProps = function proFormProps() {
1780
2145
  type: Object
1781
2146
  },
1782
2147
 
1783
- /**
1784
- *
2148
+ /**
2149
+ *
1785
2150
  */
1786
2151
  columns: {
1787
2152
  type: Array
@@ -1790,30 +2155,30 @@ var proFormProps = function proFormProps() {
1790
2155
  type: Object
1791
2156
  },
1792
2157
 
1793
- /**
1794
- * 展示控件集合,readonly模式下使用这些组件渲染
2158
+ /**
2159
+ * 展示控件集合,readonly模式下使用这些组件渲染
1795
2160
  */
1796
2161
  elementMap: {
1797
2162
  type: Object
1798
2163
  },
1799
2164
 
1800
- /**
1801
- * 录入控件集合
2165
+ /**
2166
+ * 录入控件集合
1802
2167
  */
1803
2168
  formElementMap: {
1804
2169
  type: Object
1805
2170
  },
1806
2171
 
1807
- /**
1808
- * 是否启用rules验证
2172
+ /**
2173
+ * 是否启用rules验证
1809
2174
  */
1810
2175
  needRules: {
1811
2176
  type: Boolean,
1812
2177
  "default": true
1813
2178
  },
1814
2179
 
1815
- /**
1816
- * provide传递
2180
+ /**
2181
+ * provide传递
1817
2182
  */
1818
2183
  provideExtra: {
1819
2184
  type: Object
@@ -1903,7 +2268,9 @@ var createForm = function createForm(Form, Grid) {
1903
2268
  columns: columns,
1904
2269
  //
1905
2270
  formRef: formRef
1906
- }, props.provideExtra));
2271
+ }, props.provideExtra)); //为了不warning ...
2272
+
2273
+ provideProFormList({});
1907
2274
  var invalidKeys = lodash.keys(proFormProps());
1908
2275
  var gridKeys = lodash.keys(lodash.omit(Grid.props, "items"));
1909
2276
  return function () {
@@ -1945,40 +2312,39 @@ exports.SearchMode = void 0;
1945
2312
 
1946
2313
  var proSearchFormProps = function proSearchFormProps() {
1947
2314
  return {
1948
- /**
1949
- * 需要监听的对象
2315
+ /**
2316
+ * 需要监听的对象
1950
2317
  */
1951
2318
  model: {
1952
- type: Object,
1953
- required: true
2319
+ type: Object
1954
2320
  },
1955
2321
 
1956
- /**
1957
- * 初始化触发 onFinish
2322
+ /**
2323
+ * 初始化触发 onFinish
1958
2324
  */
1959
2325
  initEmit: {
1960
2326
  type: Boolean,
1961
2327
  "default": true
1962
2328
  },
1963
2329
 
1964
- /**
1965
- * 模式 自动触发或者手动触发 onFinish
2330
+ /**
2331
+ * 模式 自动触发或者手动触发 onFinish
1966
2332
  */
1967
2333
  searchMode: {
1968
2334
  type: String,
1969
2335
  "default": exports.SearchMode.AUTO
1970
2336
  },
1971
2337
 
1972
- /**
1973
- * 配置 同ProForm中的columns
1974
- * 可以根据column中valueType计算出默认的debounceKeys
2338
+ /**
2339
+ * 配置 同ProForm中的columns
2340
+ * 可以根据column中valueType计算出默认的debounceKeys
1975
2341
  */
1976
2342
  columns: {
1977
2343
  type: Array
1978
2344
  },
1979
2345
 
1980
- /**
1981
- * 需要debounce处理的字段
2346
+ /**
2347
+ * 需要debounce处理的字段
1982
2348
  */
1983
2349
  debounceKeys: {
1984
2350
  type: Array
@@ -1995,9 +2361,9 @@ var proSearchFormProps = function proSearchFormProps() {
1995
2361
  };
1996
2362
  };
1997
2363
 
1998
- /**
1999
- * 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
2000
- * 针对传入的model(监听对象)做相应的finish(回调)处理
2364
+ /**
2365
+ * 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
2366
+ * 针对传入的model(监听对象)做相应的finish(回调)处理
2001
2367
  */
2002
2368
  var createSearchForm = function createSearchForm(Form, Props) {
2003
2369
  return vue.defineComponent({
@@ -2068,116 +2434,6 @@ var createSearchForm = function createSearchForm(Form, Props) {
2068
2434
  });
2069
2435
  };
2070
2436
 
2071
- /**
2072
- * ProFormList ctx
2073
- */
2074
-
2075
- var ProFormListKey = Symbol("pro-form-list");
2076
- var useProFormList = function useProFormList() {
2077
- return vue.inject(ProFormListKey);
2078
- };
2079
-
2080
- var provideProFormList = function provideProFormList(ctx) {
2081
- vue.provide(ProFormListKey, ctx);
2082
- };
2083
-
2084
- var FormListProvider = vue.defineComponent({
2085
- props: {
2086
- pathList: {
2087
- type: Array
2088
- }
2089
- },
2090
- setup: function setup(props, _ref) {
2091
- var slots = _ref.slots;
2092
- provideProFormList({
2093
- pathList: props.pathList
2094
- });
2095
- return function () {
2096
- var _slots$default;
2097
-
2098
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
2099
- };
2100
- }
2101
- });
2102
-
2103
- var createFormList = function createFormList(FormItem) {
2104
- return vue.defineComponent({
2105
- props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
2106
- //每行默认id
2107
- rowKey: {
2108
- type: String,
2109
- "default": "id"
2110
- }
2111
- }),
2112
- setup: function setup(props, _ref2) {
2113
- var slots = _ref2.slots;
2114
-
2115
- var _useProForm = useProForm(),
2116
- formState = _useProForm.formState,
2117
- readonly = _useProForm.readonly;
2118
-
2119
- var formListCtx = useProFormList();
2120
- var nameList = convertPathToList(props.name);
2121
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
2122
-
2123
- var handleAdd = function handleAdd() {
2124
- var targetList = lodash.get(formState, path);
2125
-
2126
- if (!lodash.isArray(targetList)) {
2127
- targetList = [];
2128
- }
2129
-
2130
- targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
2131
- lodash.set(formState, path, targetList);
2132
- };
2133
-
2134
- var handleRemove = function handleRemove(index) {
2135
- var targetList = lodash.get(formState, path);
2136
-
2137
- if (lodash.size(targetList) <= 0) {
2138
- return;
2139
- }
2140
-
2141
- targetList.splice(index, 1);
2142
- };
2143
-
2144
- return function () {
2145
- var _slots$add;
2146
-
2147
- return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
2148
- "default": function _default() {
2149
- return [lodash.map(lodash.get(formState, path), function (item, index) {
2150
- var _slots$default2, _slots$itemAdd, _slots$itemMinus;
2151
-
2152
- return vue.createVNode(FormListProvider, {
2153
- "key": item[props.rowKey] || index,
2154
- "pathList": [].concat(_toConsumableArray(path), [index])
2155
- }, {
2156
- "default": function _default() {
2157
- return [vue.createVNode("div", {
2158
- "class": "pro-form-list-item"
2159
- }, [(_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", {
2160
- "class": "pro-form-list-item-add",
2161
- "onClick": handleAdd
2162
- }, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
2163
- "class": "pro-form-list-item-minus",
2164
- "onClick": function onClick() {
2165
- return handleRemove(index);
2166
- }
2167
- }, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
2168
- }
2169
- });
2170
- }), !readonly.value && vue.createVNode("div", {
2171
- "class": "pro-form-list-add",
2172
- "onClick": handleAdd
2173
- }, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
2174
- }
2175
- });
2176
- };
2177
- }
2178
- });
2179
- };
2180
-
2181
2437
  var proFormItemProps = function proFormItemProps() {
2182
2438
  return {
2183
2439
  readonly: {
@@ -2461,6 +2717,7 @@ exports.ProModalCurd = ProModalCurd;
2461
2717
  exports.ProModule = ProModule;
2462
2718
  exports.ProPageCurd = ProPageCurd;
2463
2719
  exports.RequestAction = RequestAction;
2720
+ exports.Wrapper = Wrapper;
2464
2721
  exports.convertPathToList = convertPathToList;
2465
2722
  exports.createCurdDesc = createCurdDesc;
2466
2723
  exports.createCurdForm = createCurdForm;
@@ -2478,12 +2735,16 @@ exports.findTargetListInTree = findTargetListInTree;
2478
2735
  exports.generateId = generateId;
2479
2736
  exports.getColumnFormItemName = getColumnFormItemName;
2480
2737
  exports.getColumnValueType = getColumnValueType;
2738
+ exports.getFirstPropName = getFirstPropName;
2481
2739
  exports.getFormItemEl = getFormItemEl;
2482
2740
  exports.getItemEl = getItemEl;
2483
2741
  exports.getValidValues = getValidValues;
2484
2742
  exports.mergeStateToList = mergeStateToList;
2485
2743
  exports.provideProCurd = provideProCurd;
2744
+ exports.provideProFormList = provideProFormList;
2486
2745
  exports.provideProModule = provideProModule;
2746
+ exports.renderElement = renderElement;
2747
+ exports.renderElements = renderElements;
2487
2748
  exports.useComposeRequestActor = useComposeRequestActor;
2488
2749
  exports.useDoneRequestActor = useDoneRequestActor;
2489
2750
  exports.useFailedRequestActor = useFailedRequestActor;