@vue-start/element-pro 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var vue = require('vue');
6
6
  var elementPlus = require('element-plus');
7
7
  var lodash = require('lodash');
8
- var hooks = require('@vue-start/hooks');
9
8
  var pro = require('@vue-start/pro');
9
+ var hooks = require('@vue-start/hooks');
10
10
 
11
11
  function ownKeys(object, enumerableOnly) {
12
12
  var keys = Object.keys(object);
@@ -82,428 +82,176 @@ function _nonIterableSpread() {
82
82
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
83
83
  }
84
84
 
85
- /**
86
- * ProForm ctx
87
- */
88
- var ProFormKey = Symbol("pro-form");
89
- var useProForm = function useProForm() {
90
- return vue.inject(ProFormKey);
91
- };
92
- var provideProForm = function provideProForm(ctx) {
93
- vue.provide(ProFormKey, ctx);
94
- };
95
- /**
96
- * ProFormList ctx
97
- */
85
+ var ProGrid = pro.createGrid(elementPlus.ElRow, elementPlus.ElCol);
98
86
 
99
- var ProFormListKey = Symbol("pro-form-list");
100
- var useProFormList = function useProFormList() {
101
- return vue.inject(ProFormListKey);
102
- };
103
- var provideProFormList = function provideProFormList(ctx) {
104
- vue.provide(ProFormListKey, ctx);
87
+ var createLoadingId = function createLoadingId() {
88
+ var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "comp";
89
+ return prefix + "-" + pro.generateId();
105
90
  };
106
91
 
107
- var proFormItemProps$1 = function proFormItemProps() {
92
+ var proLoadingProps = function proLoadingProps() {
108
93
  return {
109
- name: {
110
- type: [String, Array]
111
- }
112
- };
113
- };
114
-
115
- var ProFormItem = vue.defineComponent({
116
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElFormItem.props), proFormItemProps$1()),
117
- setup: function setup(props, _ref) {
118
- var slots = _ref.slots;
119
- var invalidKeys = lodash.keys(proFormItemProps$1());
120
- return function () {
121
- return vue.createVNode(elementPlus.ElFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name", "prop"])), {
122
- "prop": props.prop || props.name
123
- }), slots);
124
- };
125
- }
126
- });
127
-
128
- var proFormProps = function proFormProps() {
129
- return {
130
- /**
131
- * 子组件是否只读样式
132
- */
133
- readonly: {
134
- type: Boolean,
135
- "default": undefined
94
+ loading: {
95
+ type: Boolean
136
96
  },
137
-
138
- /**
139
- * FormComponent 根据此项来确定组件是否显示
140
- * rules 根据rules中方法生成showState对象
141
- */
142
- showState: {
143
- type: Object
97
+ target: {
98
+ type: [String, Object]
144
99
  },
145
- showStateRules: {
146
- type: Object
100
+ body: {
101
+ type: Boolean
147
102
  },
148
-
149
- /**
150
- * 是否只读
151
- */
152
- readonlyState: {
153
- type: Object
103
+ fullscreen: {
104
+ type: Boolean
154
105
  },
155
- readonlyStateRules: {
156
- type: Object
106
+ lock: {
107
+ type: Boolean
157
108
  },
158
-
159
- /**
160
- * 是否disabled
161
- */
162
- disableState: {
163
- type: Object
109
+ text: {
110
+ type: String
164
111
  },
165
- disableStateRules: {
166
- type: Object
112
+ spinner: {
113
+ type: String
167
114
  },
168
-
169
- /**
170
- * 展示控件集合,readonly模式下使用这些组件渲染
171
- */
172
- elementMap: {
173
- type: Object
115
+ background: {
116
+ type: String
174
117
  },
175
-
176
- /**
177
- * provide传递
178
- */
179
- provideExtra: {
180
- type: Object
118
+ customClass: {
119
+ type: String
181
120
  }
182
121
  };
183
122
  };
184
123
 
185
- //emit;
186
- var ProForm = vue.defineComponent({
187
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElForm.props), proFormProps()),
188
- setup: function setup(props, _ref2) {
189
- var slots = _ref2.slots,
190
- expose = _ref2.expose,
191
- emit = _ref2.emit;
192
- var form = vue.ref();
193
- var formState = props.model || vue.reactive({}); //组件状态相关
194
-
195
- var showState = props.showState || vue.reactive({});
196
- var readonlyState = props.readonlyState || vue.reactive({});
197
- var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
198
-
124
+ var ProLoading = vue.defineComponent({
125
+ props: _objectSpread2({}, proLoadingProps()),
126
+ setup: function setup(props, _ref) {
127
+ var slots = _ref.slots;
128
+ var id = createLoadingId();
199
129
  hooks.useEffect(function () {
200
- if (props.showStateRules) {
201
- lodash.forEach(props.showStateRules, function (fn, key) {
202
- showState[key] = fn(formState);
203
- });
130
+ if (!props.loading) {
131
+ return;
204
132
  }
205
133
 
206
- if (props.readonlyStateRules) {
207
- lodash.forEach(props.readonlyStateRules, function (fn, key) {
208
- readonlyState[key] = fn(formState);
209
- });
210
- }
134
+ var element = props.target;
211
135
 
212
- if (props.disableStateRules) {
213
- lodash.forEach(props.disableStateRules, function (fn, key) {
214
- disableState[key] = fn(formState);
215
- });
136
+ if (!slots["default"]) {
137
+ //监听
138
+ if (props.target && lodash.isString(props.target)) {
139
+ element = document.querySelector("#" + props.target);
140
+ }
141
+ } else {
142
+ //包裹
143
+ element = document.getElementById(id);
216
144
  }
217
- }, formState); //转换为ref对象
218
-
219
- var readonly = vue.computed(function () {
220
- return props.readonly;
221
- });
222
- provideProForm(_objectSpread2({
223
- formRef: form,
224
- formState: formState,
225
- showState: showState,
226
- readonlyState: readonlyState,
227
- disableState: disableState,
228
- //
229
- elementMap: props.elementMap,
230
- //
231
- readonly: readonly
232
- }, props.provideExtra));
233
-
234
- var formRef = function formRef(el) {
235
- var nexEl = _objectSpread2(_objectSpread2({}, el), {}, {
236
- submit: function submit() {
237
- var _el$validate;
238
145
 
239
- (_el$validate = el.validate) === null || _el$validate === void 0 ? void 0 : _el$validate.call(el, function (isValid, invalidFields) {
240
- if (isValid) {
241
- //验证成功
242
- //删除不显示的值再触发事件
243
- var _showValues = pro.getValidValues(formState, showState, props.showStateRules);
146
+ if (!element) {
147
+ return;
148
+ }
244
149
 
245
- emit("finish", _showValues, vue.toRaw(formState));
246
- } else {
247
- emit("finishFailed", invalidFields);
248
- }
249
- });
250
- }
150
+ var instance = elementPlus.ElLoading.service({
151
+ target: element,
152
+ body: props.body,
153
+ fullscreen: props.fullscreen,
154
+ lock: props.lock,
155
+ text: props.text,
156
+ spinner: props.spinner,
157
+ background: props.background,
158
+ customClass: props.customClass
251
159
  });
252
-
253
- expose(nexEl);
254
- form.value = nexEl;
255
- };
256
-
257
- var invalidKeys = lodash.keys(proFormProps());
160
+ return function () {
161
+ instance && instance.close();
162
+ };
163
+ }, function () {
164
+ return props.loading;
165
+ });
258
166
  return function () {
259
- return vue.createVNode(elementPlus.ElForm, vue.mergeProps({
260
- "ref": formRef
261
- }, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["model"])), {
262
- "model": formState
263
- }), slots);
167
+ if (!slots["default"]) {
168
+ return null;
169
+ }
170
+
171
+ return vue.createVNode("div", {
172
+ "id": id
173
+ }, [slots["default"]()]);
264
174
  };
265
175
  }
266
176
  });
267
177
 
268
- var proSchemaFormProps = function proSchemaFormProps() {
178
+ var proFormItemProps = function proFormItemProps() {
269
179
  return {
270
- columns: {
271
- type: Array
272
- },
273
-
274
- /**
275
- * 录入控件集合,通过column->valueType 查找对应的录入组件
276
- */
277
- formElementMap: {
278
- type: Object
279
- },
280
-
281
- /**
282
- * 是否启用rules验证
283
- */
284
- needRules: {
285
- type: Boolean,
286
- "default": true
180
+ name: {
181
+ type: [String, Array]
287
182
  }
288
183
  };
289
184
  };
290
185
 
291
- var ProSchemaForm = vue.defineComponent({
292
- name: "PSchemaForm",
293
- props: _objectSpread2(_objectSpread2({}, ProForm.props), proSchemaFormProps()),
186
+ var ProFormItem = vue.defineComponent({
187
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElFormItem.props), proFormItemProps()),
294
188
  setup: function setup(props, _ref) {
295
- var slots = _ref.slots,
296
- expose = _ref.expose;
297
- var formItemList = vue.computed(function () {
298
- if (!props.formElementMap || lodash.size(props.formElementMap) <= 0) {
299
- return null;
300
- }
301
-
302
- return lodash.map(props.columns, function (item) {
303
- return pro.getFormItemEl(props.formElementMap, item, props.needRules);
304
- });
305
- });
306
- var invalidKeys = lodash.keys(proSchemaFormProps());
189
+ var slots = _ref.slots;
190
+ var invalidKeys = lodash.keys(proFormItemProps());
307
191
  return function () {
308
- var _slots$default;
309
-
310
- return vue.createVNode(ProForm, vue.mergeProps({
311
- "ref": function ref(el) {
312
- return expose(el);
313
- }
314
- }, lodash.omit(props, invalidKeys)), _objectSpread2({
315
- "default": function _default() {
316
- return [formItemList.value, (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
317
- }
318
- }, lodash.omit(slots, "default")));
192
+ return vue.createVNode(elementPlus.ElFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name", "prop"])), {
193
+ "prop": props.prop || props.name
194
+ }), slots);
319
195
  };
320
196
  }
321
197
  });
322
-
323
- exports.SearchMode = void 0;
324
-
325
- (function (SearchMode) {
326
- SearchMode["AUTO"] = "AUTO";
327
- SearchMode["MANUAL"] = "MANUAL";
328
- })(exports.SearchMode || (exports.SearchMode = {}));
329
-
330
- var proSearchFormProps = function proSearchFormProps() {
331
- return {
332
- /**
333
- * 初始化触发 onFinish
334
- */
335
- initEmit: {
336
- type: Boolean,
337
- "default": true
338
- },
339
-
340
- /**
341
- * 模式 自动触发或者手动触发 onFinish
342
- */
343
- searchMode: {
344
- type: String,
345
- "default": exports.SearchMode.AUTO
346
- },
347
-
348
- /**
349
- * 需要debounce处理的字段
350
- */
351
- debounceKeys: {
352
- type: Array
353
- },
354
- debounceTime: {
355
- type: Number,
356
- "default": 800
357
- },
358
- //
359
- inline: {
360
- type: Boolean,
361
- "default": true
362
- }
363
- };
364
- };
365
-
366
- var ProSearchForm = vue.defineComponent({
367
- name: "PSearchForm",
368
- props: _objectSpread2(_objectSpread2({}, lodash.omit(ProSchemaForm.props, "inline")), proSearchFormProps()),
369
- setup: function setup(props, _ref) {
370
- var slots = _ref.slots,
371
- emit = _ref.emit,
372
- expose = _ref.expose;
198
+ var Form = vue.defineComponent({
199
+ props: _objectSpread2({}, elementPlus.ElForm.props),
200
+ setup: function setup(props, _ref2) {
201
+ var slots = _ref2.slots,
202
+ emit = _ref2.emit,
203
+ expose = _ref2.expose;
373
204
  var formState = props.model || vue.reactive({});
374
-
375
- var handleFinish = function handleFinish() {
376
- var values = vue.toRaw(formState);
377
- var showValues = pro.getValidValues(values, props.showState, props.showStateRules);
378
- emit("finish", showValues, values);
379
- };
380
-
381
- var debounceFinish = lodash.debounce(function () {
382
- handleFinish();
383
- }, props.debounceTime); //初始化
384
-
205
+ var formRef = vue.ref();
206
+ var formMethods = ["clearValidate", "resetFields", "scrollToField", "validate", "validateField", "submit"];
385
207
  hooks.useEffect(function () {
386
- if (props.initEmit) {
387
- handleFinish();
388
- }
389
- }, []);
390
-
391
- var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
392
- return lodash.some(debounceKeys, function (key) {
393
- return lodash.get(state, key) !== lodash.get(prevState, key);
394
- });
395
- }; //监听
396
-
397
-
398
- hooks.useEffect(function (state, prevState) {
399
- if (props.searchMode !== exports.SearchMode.AUTO) {
400
- return;
401
- } //如果改变的值中包括debounceKeys中注册的 延时触发
402
-
403
-
404
- if (props.debounceKeys && lodash.size(props.debounceKeys) > 0 && isDebounceDataChange(state, prevState, props.debounceKeys)) {
405
- debounceFinish();
208
+ if (!formRef.value) {
406
209
  return;
407
210
  }
408
211
 
409
- handleFinish();
410
- }, function () {
411
- return lodash.clone(formState);
412
- });
413
- var invalidKeys = lodash.keys(proSearchFormProps());
212
+ formRef.value.submit = function () {
213
+ var _formRef$value;
214
+
215
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.validate(function (isValid, invalidFields) {
216
+ if (isValid) {
217
+ emit("finish", vue.toRaw(formState));
218
+ } else {
219
+ emit("finishFailed", invalidFields);
220
+ }
221
+ });
222
+ };
223
+ }, []);
224
+ expose(pro.createExpose(formMethods, formRef));
414
225
  return function () {
415
- return vue.createVNode(ProSchemaForm, vue.mergeProps({
416
- "ref": function ref(el) {
417
- return expose(el);
418
- },
419
- "inline": props.inline
420
- }, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["model"])), {
421
- "needRules": false,
226
+ return vue.createVNode(elementPlus.ElForm, vue.mergeProps({
227
+ "ref": formRef
228
+ }, lodash.omit(props, "model"), {
422
229
  "model": formState
423
230
  }), slots);
424
231
  };
425
232
  }
426
233
  });
234
+ //emit;
235
+ var ProForm = pro.createForm(Form, ProGrid);
236
+ var ProSearchForm = pro.createSearchForm(ProForm, {
237
+ needRules: {
238
+ type: Boolean,
239
+ "default": false
240
+ },
241
+ inline: {
242
+ type: Boolean,
243
+ "default": true
244
+ }
245
+ });
427
246
 
428
- var proFormItemProps = function proFormItemProps() {
247
+ var createFormItemComponent = pro.createFormItemCompFn(ProFormItem, function (value, setValue, disabled) {
429
248
  return {
430
- readonly: {
431
- type: Boolean,
432
- "default": undefined
433
- },
434
- fieldProps: {
435
- type: Object
436
- },
437
- showProps: {
438
- type: Object
439
- }
249
+ modelValue: value,
250
+ "onUpdate:modelValue": setValue,
251
+ clearable: true,
252
+ disabled: disabled
440
253
  };
441
- };
442
-
443
- var createFormItemComponent = function createFormItemComponent(_ref) {
444
- var InputComp = _ref.InputComp,
445
- valueType = _ref.valueType,
446
- name = _ref.name;
447
- return vue.defineComponent({
448
- name: name,
449
- props: _objectSpread2(_objectSpread2({}, ProFormItem.props), proFormItemProps()),
450
- setup: function setup(props, _ref2) {
451
- var slots = _ref2.slots;
452
-
453
- var _useProForm = useProForm(),
454
- formState = _useProForm.formState,
455
- showState = _useProForm.showState,
456
- readonlyState = _useProForm.readonlyState,
457
- disableState = _useProForm.disableState,
458
- formReadonly = _useProForm.readonly,
459
- elementMap = _useProForm.elementMap;
460
-
461
- var formListCtx = useProFormList(); //优先级 props.readonly > readonlyState > formContext.readonly
462
-
463
- var readonly = vue.computed(function () {
464
- if (lodash.isBoolean(props.readonly)) {
465
- return props.readonly;
466
- } else if (lodash.isBoolean(readonlyState[props.name])) {
467
- return readonlyState[props.name];
468
- }
469
-
470
- return formReadonly.value;
471
- });
472
- var nameList = pro.convertPathToList(props.name);
473
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
474
- var invalidKeys = lodash.keys(proFormItemProps());
475
- return function () {
476
- var show = lodash.get(showState, props.name);
477
-
478
- if (lodash.isBoolean(show) && !show) {
479
- return null;
480
- }
481
-
482
- var value = lodash.get(formState, path); //valueType对应的展示组件
483
-
484
- var ShowComp = lodash.get(elementMap, valueType);
485
- return vue.createVNode(ProFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name"])), {
486
- "name": path
487
- }), {
488
- "default": function _default() {
489
- return [readonly.value ? vue.createVNode(vue.Fragment, null, [ShowComp ? vue.createVNode(ShowComp, vue.mergeProps({
490
- "value": value
491
- }, props.fieldProps, {
492
- "showProps": props.showProps
493
- }), slots) : vue.createVNode("span", null, [value])]) : vue.createVNode(InputComp, vue.mergeProps({
494
- "modelValue": value,
495
- "onUpdate:modelValue": function onUpdateModelValue(v) {
496
- lodash.set(formState, path, v);
497
- },
498
- "clearable": true,
499
- "disabled": lodash.get(disableState, props.name)
500
- }, props.fieldProps), slots)];
501
- }
502
- });
503
- };
504
- }
505
- });
506
- };
254
+ });
507
255
 
508
256
  var proSelectProps = function proSelectProps() {
509
257
  return {
@@ -523,7 +271,7 @@ var ProSelect = vue.defineComponent({
523
271
 
524
272
  return vue.createVNode(elementPlus.ElSelect, vue.mergeProps(lodash.omit(props, invalidKeys), {
525
273
  "onUpdate:modelValue": function onUpdateModelValue(v) {
526
- emit("update:modelValue", v);
274
+ emit("update:modelValue", v ? v : undefined);
527
275
  }
528
276
  }), _objectSpread2({
529
277
  "default": function _default() {
@@ -594,7 +342,7 @@ var ProSubmitButton = vue.defineComponent({
594
342
  var slots = _ref.slots,
595
343
  emit = _ref.emit;
596
344
 
597
- var _useProForm = useProForm(),
345
+ var _useProForm = pro.useProForm(),
598
346
  formRef = _useProForm.formRef;
599
347
 
600
348
  var handleClick = function handleClick(e) {
@@ -612,24 +360,7 @@ var ProSubmitButton = vue.defineComponent({
612
360
  }
613
361
  });
614
362
 
615
- var FormListProvider = vue.defineComponent({
616
- props: {
617
- pathList: {
618
- type: Array
619
- }
620
- },
621
- setup: function setup(props, _ref) {
622
- var slots = _ref.slots;
623
- provideProFormList({
624
- pathList: props.pathList
625
- });
626
- return function () {
627
- var _slots$default;
628
-
629
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
630
- };
631
- }
632
- });
363
+ var FormList = pro.createFormList(ProFormItem);
633
364
 
634
365
  var proFormListProps = function proFormListProps() {
635
366
  return {
@@ -640,681 +371,240 @@ var proFormListProps = function proFormListProps() {
640
371
  addButtonProps: {
641
372
  type: Object
642
373
  },
643
- //每行默认id
644
- rowKey: {
374
+ minusButtonText: {
645
375
  type: String,
646
- "default": "id"
376
+ "default": "删除"
377
+ },
378
+ minusButtonProps: {
379
+ type: Object
647
380
  }
648
381
  };
649
382
  };
650
383
 
651
384
  var ProFormList = vue.defineComponent({
652
385
  name: "PFormList",
653
- props: _objectSpread2(_objectSpread2({}, ProFormItem.props), proFormListProps()),
654
- setup: function setup(props, _ref2) {
655
- var slots = _ref2.slots;
656
-
657
- var _useProForm = useProForm(),
658
- formState = _useProForm.formState,
659
- readonly = _useProForm.readonly;
660
-
661
- var formListCtx = useProFormList();
662
- var nameList = pro.convertPathToList(props.prop);
663
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
664
-
665
- var handleAdd = function handleAdd() {
666
- var targetList = lodash.get(formState, path);
667
-
668
- if (!lodash.isArray(targetList)) {
669
- targetList = [];
670
- }
671
-
672
- targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
673
- lodash.set(formState, path, targetList);
674
- };
675
-
676
- var handleRemove = function handleRemove(index) {
677
- var targetList = lodash.get(formState, path);
678
-
679
- if (lodash.size(targetList) <= 0) {
680
- return;
681
- }
682
-
683
- targetList.splice(index, 1);
684
- };
685
-
386
+ props: _objectSpread2(_objectSpread2({}, FormList.props), proFormListProps()),
387
+ setup: function setup(props, _ref) {
388
+ var slots = _ref.slots;
686
389
  var invalidKeys = lodash.keys(proFormListProps());
687
390
  return function () {
688
- return vue.createVNode(ProFormItem, lodash.omit(props, invalidKeys), {
689
- "default": function _default() {
690
- return [lodash.map(lodash.get(formState, path), function (item, index) {
691
- var _slots$default2;
692
-
693
- return vue.createVNode(FormListProvider, {
694
- "key": index,
695
- "pathList": [].concat(_toConsumableArray(path), [index])
696
- }, {
697
- "default": function _default() {
698
- return [vue.createVNode("div", {
699
- "class": "pro-form-list-item"
700
- }, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && vue.createVNode("div", {
701
- "class": "pro-form-list-item-minus",
702
- "onClick": function onClick() {
703
- return handleRemove(index);
704
- }
705
- }, [slots.minus ? slots.minus() : vue.createVNode(elementPlus.ElButton, {
706
- "link": true
707
- }, {
708
- "default": function _default() {
709
- return [vue.createTextVNode("\u5220\u9664")];
710
- }
711
- })])])];
712
- }
713
- });
714
- }), !readonly.value && vue.createVNode("div", {
715
- "class": "pro-form-list-item-add",
716
- "onClick": handleAdd
717
- }, [slots.add ? slots.add() : vue.createVNode(elementPlus.ElButton, vue.mergeProps({
718
- "type": "primary"
719
- }, props.addButtonProps), {
391
+ return vue.createVNode(FormList, lodash.omit(props, invalidKeys), _objectSpread2({
392
+ itemMinus: function itemMinus() {
393
+ return vue.createVNode(elementPlus.ElButton, props.minusButtonProps, {
394
+ "default": function _default() {
395
+ return [props.minusButtonText];
396
+ }
397
+ });
398
+ },
399
+ add: function add() {
400
+ return vue.createVNode(elementPlus.ElButton, props.addButtonProps, {
720
401
  "default": function _default() {
721
402
  return [props.addButtonText];
722
403
  }
723
- })])];
404
+ });
724
405
  }
725
- });
406
+ }, slots));
726
407
  };
727
408
  }
728
409
  });
729
410
 
730
- var proTableProps = function proTableProps() {
731
- return {
732
- //操作栏
733
- operate: {
734
- type: Object
735
- },
736
- //默认空字符串
737
- columnEmptyText: {
738
- type: String
739
- },
740
-
741
- /**
742
- * 公共column,会merge到columns item中
743
- */
744
- column: {
745
- type: Object
746
- },
747
- //
411
+ var Table = vue.defineComponent({
412
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElTable.props), {}, {
748
413
  columns: {
749
414
  type: Array
750
415
  },
751
-
752
- /**
753
- * 展示控件集合,readonly模式下使用这些组件渲染
754
- */
755
- elementMap: {
756
- type: Object
416
+ dataSource: {
417
+ type: Array
757
418
  },
758
-
759
- /**
760
- * loading
761
- */
762
419
  loading: {
763
- type: Boolean,
764
- "default": false
420
+ type: Boolean
765
421
  }
766
- };
767
- };
768
-
769
- var ProTable = vue.defineComponent({
770
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElTable.props), proTableProps()),
422
+ }),
771
423
  setup: function setup(props, _ref) {
772
- var slots = _ref.slots,
773
- expose = _ref.expose;
774
- var columns = vue.computed(function () {
775
- //根据valueType选择对应的展示组件
776
- var columns = lodash.map(props.columns, function (item) {
777
- //merge从共item
778
- var nextItem = lodash.merge(props.column, item);
779
-
780
- if (!item.customRender || !item.formatter) {
781
- nextItem.customRender = function (_ref2) {
782
- var text = _ref2.text;
783
- return pro.getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
784
- showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
785
- content: props.columnEmptyText
786
- })
787
- }), text) || text || props.columnEmptyText;
788
- };
789
- }
790
-
791
- return nextItem;
792
- });
793
- var operate = props.operate; //处理operate
794
-
795
- if (operate && lodash.size(operate.items) > 0) {
796
- //将itemState补充的信息拼到item中
797
- var completeItems = lodash.map(operate.items, function (i) {
798
- return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
799
- }); //排序
800
-
801
- var operateList = lodash.sortBy(completeItems, function (item) {
802
- return item.sort;
803
- });
804
- columns.push(_objectSpread2(_objectSpread2({
805
- title: "操作",
806
- valueType: "option",
807
- fixed: "right"
808
- }, props.column), {}, {
809
- customRender: function customRender(_ref3) {
810
- var record = _ref3.record;
811
- var validList = lodash.filter(operateList, function (item) {
812
- if (lodash.isFunction(item.show)) {
813
- return item.show(record);
814
- }
815
-
816
- if (item.show === false) {
817
- return false;
818
- }
819
-
820
- return true;
821
- });
822
- return vue.createVNode("div", {
823
- "class": "pro-table-operate"
824
- }, [lodash.map(validList, function (item) {
825
- // 自定义
826
- if (lodash.isFunction(item.element)) {
827
- return item.element(record, item);
828
- }
829
-
830
- return vue.createVNode(elementPlus.ElButton, {
831
- "key": item.value,
832
- "type": "primary",
833
- "link": true,
834
- "disabled": lodash.isFunction(item.disabled) ? item.disabled(record) : item.disabled,
835
- "onClick": function onClick() {
836
- var _item$onClick;
837
-
838
- (_item$onClick = item.onClick) === null || _item$onClick === void 0 ? void 0 : _item$onClick.call(item, record);
839
- }
840
- }, {
841
- "default": function _default() {
842
- return [item.label];
843
- }
844
- });
845
- })]);
846
- }
847
- }, operate.column));
848
- }
849
-
850
- return columns;
851
- });
852
- var invalidKeys = lodash.keys(proTableProps());
424
+ var slots = _ref.slots;
425
+ var id = createLoadingId("table");
853
426
  return function () {
854
- var _slots$default;
427
+ var _slots$start, _slots$default;
855
428
 
856
- return vue.withDirectives(vue.createVNode(elementPlus.ElTable, vue.mergeProps({
857
- "ref": function ref(el) {
858
- expose(el);
859
- }
860
- }, lodash.omit(props, invalidKeys)), _objectSpread2({
429
+ return vue.createVNode(elementPlus.ElTable, vue.mergeProps({
430
+ "id": id
431
+ }, lodash.omit(props, "columns", "dataSource", "loading"), {
432
+ "data": props.dataSource || props.data
433
+ }), _objectSpread2({
861
434
  "default": function _default() {
862
- return [lodash.map(columns.value, function (item) {
863
- var formatter = function formatter(record, column, value, index) {
864
- if (item.formatter) {
865
- return item.formatter(record, column, value, index);
866
- }
867
-
868
- if (item.customRender) {
869
- return item.customRender({
870
- value: value,
871
- text: value,
872
- record: record,
873
- column: column
874
- });
875
- }
876
-
877
- return null;
878
- };
879
-
435
+ return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), lodash.map(props.columns, function (item) {
880
436
  return vue.createVNode(elementPlus.ElTableColumn, vue.mergeProps({
881
- "key": item.dataIndex || item.prop
437
+ "key": item.dataIndex
882
438
  }, lodash.omit(item, "title", "label", "renderHeader", "prop", "dataIndex", "formatter", "customRender"), {
883
- "label": vue.isVNode(item.title) ? undefined : item.title || item.label,
439
+ "label": vue.isVNode(item.title) ? undefined : item.title || lodash.get(item, "label"),
884
440
  "renderHeader": vue.isVNode(item.title) ? function () {
885
441
  return item.title;
886
442
  } : undefined,
887
- "prop": item.dataIndex || item.prop,
888
- "formatter": item.formatter || item.customRender ? formatter : undefined
443
+ "prop": item.dataIndex,
444
+ "formatter": function formatter(record, column, value, index) {
445
+ if (item.customRender) {
446
+ return item.customRender({
447
+ value: value,
448
+ text: value,
449
+ record: record,
450
+ column: column,
451
+ index: index
452
+ });
453
+ }
454
+
455
+ return value;
456
+ }
889
457
  }), null);
890
- }), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
458
+ }), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots), props.loading && vue.createVNode(ProLoading, {
459
+ "target": id,
460
+ "loading": true
461
+ }, null)];
891
462
  }
892
- }, lodash.omit(slots, "default"))), [[vue.resolveDirective("loading"), props.loading]]);
463
+ }, lodash.omit(slots, "default", "start")));
893
464
  };
894
465
  }
895
466
  });
467
+ var ProTable = pro.createTable(Table);
896
468
 
897
- var defaultPage = {
898
- page: 1,
899
- pageSize: 10
900
- };
901
-
902
- var proListProps = function proListProps() {
469
+ var ProCurdForm = pro.createCurdForm(ProForm, elementPlus.ElButton, function (curdState) {
903
470
  return {
904
- /**
905
- * extra 是否放到SearchForm中
906
- */
907
- extraInSearch: {
908
- type: Boolean,
909
- "default": undefined
910
- },
911
- //search
912
- searchProps: {
913
- type: Object
914
- },
915
- //table
916
- tableProps: {
917
- type: Object
918
- },
919
- //pagination
920
- paginationProps: {
921
- type: Object
922
- },
923
- //pageState
924
- pageState: {
925
- type: Object
926
- }
471
+ hideRequiredAsterisk: curdState.mode === pro.CurdCurrentMode.DETAIL
927
472
  };
928
- };
929
-
930
- var ProList = vue.defineComponent({
931
- props: _objectSpread2({}, proListProps()),
932
- setup: function setup(props, _ref) {
933
- var _props$searchProps;
934
-
935
- var slots = _ref.slots,
936
- emit = _ref.emit;
937
-
938
- /******************* search pagination ********************/
939
- var searchState = ((_props$searchProps = props.searchProps) === null || _props$searchProps === void 0 ? void 0 : _props$searchProps.model) || vue.reactive({});
940
- var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
941
-
942
- var handleSearch = function handleSearch() {
943
- emit("list", _objectSpread2(_objectSpread2({}, searchState), pageState));
944
- }; //页数重置1 且搜索
945
-
946
-
947
- var executeSearchWithResetPage = function executeSearchWithResetPage() {
948
- pageState.page = 1;
949
- handleSearch();
950
- }; //无SearchForm组件 初始化 触发
951
-
952
-
953
- hooks.useEffect(function () {
954
- var _props$searchProps2, _props$searchProps3;
955
-
956
- if (lodash.size((_props$searchProps2 = props.searchProps) === null || _props$searchProps2 === void 0 ? void 0 : _props$searchProps2.columns) <= 0 && ((_props$searchProps3 = props.searchProps) === null || _props$searchProps3 === void 0 ? void 0 : _props$searchProps3.initEmit) !== false) {
957
- handleSearch();
958
- }
959
- }, []); //无SearchForm组件 订阅searchState
960
-
961
- hooks.useWatch(function () {
962
- var _props$searchProps4;
963
-
964
- if (lodash.size((_props$searchProps4 = props.searchProps) === null || _props$searchProps4 === void 0 ? void 0 : _props$searchProps4.columns) <= 0) {
965
- executeSearchWithResetPage();
966
- }
967
- }, searchState);
968
- return function () {
969
- var _slots$divide, _slots$divide2;
970
-
971
- var searchProps = props.searchProps;
972
- var tableProps = props.tableProps;
973
- var paginationProps = props.paginationProps; //操作按钮
974
-
975
- var extra = slots.extra ? vue.createVNode("div", {
976
- "class": "pro-list-search"
977
- }, [slots.extra()]) : null; //分页参数
978
-
979
- var pagination = _objectSpread2(_objectSpread2({}, paginationProps), {}, {
980
- currentPage: pageState.page,
981
- pageSize: pageState.pageSize,
982
- onSizeChange: function onSizeChange(pageSize) {
983
- pageState.pageSize = pageSize;
984
- handleSearch();
985
- },
986
- onCurrentChange: function onCurrentChange(current) {
987
- pageState.page = current;
988
- handleSearch();
989
- }
990
- });
991
-
992
- return vue.createVNode(vue.Fragment, null, [lodash.size(searchProps === null || searchProps === void 0 ? void 0 : searchProps.columns) > 0 && vue.createVNode(ProSearchForm, vue.mergeProps(searchProps, {
993
- "model": searchState,
994
- "onFinish": executeSearchWithResetPage
995
- }), {
996
- "default": function _default() {
997
- return [props.extraInSearch && extra];
998
- }
999
- }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), (lodash.size(searchProps === null || searchProps === void 0 ? void 0 : searchProps.columns) <= 0 || !props.extraInSearch) && extra, slots["default"] ? slots["default"]() : vue.createVNode(ProTable, lodash.omit(tableProps, "slots"), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), lodash.isNumber(paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.total) && paginationProps.total > 0 && vue.createVNode(vue.Fragment, null, [slots.pagination ? slots.pagination(pagination) : vue.createVNode(elementPlus.ElPagination, pagination, null)])]);
1000
- };
1001
- }
1002
473
  });
1003
-
1004
- /**
1005
- * 添加 和 修改 时候的确定按钮
1006
- */
1007
-
1008
- var OkButton = vue.defineComponent({
1009
- props: _objectSpread2({}, elementPlus.ElButton.props),
1010
- setup: function setup(props, _ref) {
1011
- var slots = _ref.slots;
1012
-
474
+ var ProCurdFormConnect = vue.defineComponent({
475
+ setup: function setup() {
1013
476
  var _useProCurd = pro.useProCurd(),
1014
- curdState = _useProCurd.curdState;
477
+ formProps = _useProCurd.formProps;
1015
478
 
1016
479
  return function () {
1017
- return vue.createVNode(ProSubmitButton, vue.mergeProps({
1018
- "onClick": function onClick() {
1019
- curdState.addAction = pro.CurdAddAction.NORMAL;
1020
- }
1021
- }, props, {
1022
- "loading": curdState.operateLoading
1023
- }), {
1024
- "default": function _default() {
1025
- return [slots["default"] ? slots["default"]() : "确定"];
1026
- }
1027
- });
480
+ return vue.createVNode(ProCurdForm, lodash.omit(formProps === null || formProps === void 0 ? void 0 : formProps.value, "slots"), lodash.get(formProps === null || formProps === void 0 ? void 0 : formProps.value, "slots"));
1028
481
  };
1029
482
  }
1030
483
  });
1031
- /**
1032
- * 添加 时候的 确定并继续添加按钮
1033
- */
1034
-
1035
- var ContinueAddButton = vue.defineComponent({
1036
- props: _objectSpread2({}, elementPlus.ElButton.props),
1037
- setup: function setup(props, _ref2) {
1038
- var slots = _ref2.slots;
1039
484
 
1040
- var _useProCurd2 = pro.useProCurd(),
1041
- curdState = _useProCurd2.curdState;
485
+ var CurdList = pro.createCurdList(ProSearchForm, ProTable);
1042
486
 
1043
- return function () {
1044
- return vue.createVNode(ProSubmitButton, vue.mergeProps({
1045
- "onClick": function onClick() {
1046
- curdState.addAction = pro.CurdAddAction.CONTINUE;
1047
- }
1048
- }, props, {
1049
- "loading": curdState.operateLoading
1050
- }), {
1051
- "default": function _default() {
1052
- return [slots["default"] ? slots["default"]() : "确定并继续"];
1053
- }
1054
- });
1055
- };
1056
- }
1057
- });
1058
-
1059
- var proOperateButtonProps = function proOperateButtonProps() {
1060
- return {
1061
- //显示 确定并继续 按钮
1062
- showContinueAdd: {
1063
- type: Boolean,
1064
- "default": false
1065
- },
1066
- //
1067
- okText: {
1068
- type: String,
1069
- "default": "确定"
1070
- },
1071
- okButtonProps: {
1072
- type: Object
1073
- },
1074
- //
1075
- continueText: {
1076
- type: String,
1077
- "default": "确定并继续"
1078
- },
1079
- continueButtonProps: {
487
+ /**
488
+ * 组合列表
489
+ * SearchForm + Table + Pagination
490
+ */
491
+ var ProCurdList = vue.defineComponent({
492
+ props: _objectSpread2(_objectSpread2({}, CurdList.props), {}, {
493
+ paginationProps: {
1080
494
  type: Object
1081
495
  }
1082
- };
1083
- };
1084
-
1085
- var ProOperateButton = vue.defineComponent({
1086
- props: _objectSpread2({}, proOperateButtonProps()),
1087
- setup: function setup(props, _ref3) {
1088
- var slots = _ref3.slots;
1089
-
1090
- var _useProCurd3 = pro.useProCurd(),
1091
- curdState = _useProCurd3.curdState;
1092
-
496
+ }),
497
+ setup: function setup(props, _ref) {
498
+ var slots = _ref.slots;
1093
499
  return function () {
1094
- var _slots$left, _slots$center, _slots$right;
1095
-
1096
- return vue.createVNode("div", {
1097
- "class": "pro-curd-form-operate"
1098
- }, [(_slots$left = slots.left) === null || _slots$left === void 0 ? void 0 : _slots$left.call(slots), vue.createVNode(OkButton, props.okButtonProps, {
1099
- "default": function _default() {
1100
- return [props.okText];
1101
- }
1102
- }), (_slots$center = slots.center) === null || _slots$center === void 0 ? void 0 : _slots$center.call(slots), curdState.mode === pro.CurdCurrentMode.ADD && props.showContinueAdd && vue.createVNode(ContinueAddButton, props.continueButtonProps, {
1103
- "default": function _default() {
1104
- return [props.continueText];
500
+ return vue.createVNode(CurdList, lodash.omit(props, "paginationProps"), _objectSpread2({
501
+ pagination: function pagination(pageState, total, handleSearch) {
502
+ return vue.createVNode(elementPlus.ElPagination, vue.mergeProps(props.paginationProps, {
503
+ "total": total,
504
+ "currentPage": pageState.page,
505
+ "pageSize": pageState.pageSize,
506
+ "onSizeChange": function onSizeChange(pageSize) {
507
+ pageState.pageSize = pageSize;
508
+ handleSearch();
509
+ },
510
+ "onCurrentChange": function onCurrentChange(current) {
511
+ pageState.page = current;
512
+ handleSearch();
513
+ }
514
+ }), null);
1105
515
  }
1106
- }), (_slots$right = slots.right) === null || _slots$right === void 0 ? void 0 : _slots$right.call(slots)]);
516
+ }, slots));
1107
517
  };
1108
518
  }
1109
519
  });
1110
-
1111
- var proCurdFormProps = function proCurdFormProps() {
1112
- return {
1113
- //
1114
- operateButtonProps: {
1115
- type: Object
1116
- }
1117
- };
1118
- };
1119
-
1120
- var ProCurdForm = vue.defineComponent({
1121
- props: _objectSpread2(_objectSpread2({}, ProSchemaForm.props), proCurdFormProps()),
1122
- setup: function setup(props, _ref4) {
1123
- var slots = _ref4.slots;
1124
-
1125
- var _useProModule = pro.useProModule(),
1126
- elementMap = _useProModule.elementMap,
1127
- formElementMap = _useProModule.formElementMap;
1128
-
1129
- var _useProCurd4 = pro.useProCurd(),
1130
- curdState = _useProCurd4.curdState,
1131
- formColumns = _useProCurd4.formColumns,
1132
- sendCurdEvent = _useProCurd4.sendCurdEvent;
1133
-
1134
- var handleFinish = function handleFinish(values) {
1135
- if (curdState.mode === pro.CurdCurrentMode.EDIT) {
1136
- //edit
1137
- sendCurdEvent({
1138
- action: pro.CurdAction.EDIT,
1139
- type: "execute",
1140
- values: values
1141
- });
1142
- } else {
1143
- //add
1144
- sendCurdEvent({
1145
- action: pro.CurdAction.ADD,
1146
- type: "execute",
1147
- values: values
1148
- });
1149
- }
1150
- };
520
+ var ProCurdListConnect = vue.defineComponent({
521
+ setup: function setup() {
522
+ var _useProCurd = pro.useProCurd(),
523
+ listProps = _useProCurd.listProps;
1151
524
 
1152
525
  return function () {
1153
- var _slots$default;
1154
-
1155
- return vue.createVNode(ProSchemaForm, vue.mergeProps({
1156
- "elementMap": elementMap,
1157
- "formElementMap": formElementMap
1158
- }, props, {
1159
- "columns": formColumns,
1160
- "model": curdState.detailData,
1161
- "readonly": curdState.mode === pro.CurdCurrentMode.DETAIL,
1162
- "hideRequiredAsterisk": curdState.mode === pro.CurdCurrentMode.DETAIL,
1163
- "onFinish": handleFinish
1164
- }), _objectSpread2({
1165
- "default": function _default() {
1166
- return [curdState.mode !== pro.CurdCurrentMode.DETAIL && vue.createVNode(ProOperateButton, lodash.omit(props.operateButtonProps, "slots"), lodash.get(props.operateButtonProps, "slots")), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1167
- }
1168
- }, lodash.omit(slots, "default")));
526
+ return vue.createVNode(ProCurdList, lodash.omit(listProps === null || listProps === void 0 ? void 0 : listProps.value, "slots"), lodash.get(listProps === null || listProps === void 0 ? void 0 : listProps.value, "slots"));
1169
527
  };
1170
528
  }
1171
529
  });
1172
- var ProCurdFormConnect = vue.defineComponent({
530
+
531
+ var ProCurdDesc = pro.createCurdDesc(elementPlus.ElDescriptions, elementPlus.ElDescriptionsItem);
532
+ var ProCurdDescConnect = vue.defineComponent({
1173
533
  setup: function setup() {
1174
- var _useProCurd5 = pro.useProCurd(),
1175
- formProps = _useProCurd5.formProps;
534
+ var _useProCurd = pro.useProCurd(),
535
+ descProps = _useProCurd.descProps;
1176
536
 
1177
537
  return function () {
1178
- return vue.createVNode(ProCurdForm, lodash.omit(formProps, "slots"), lodash.get(formProps, "slots"));
538
+ return vue.createVNode(ProCurdDesc, lodash.omit(descProps === null || descProps === void 0 ? void 0 : descProps.value, "slots"), lodash.get(descProps === null || descProps === void 0 ? void 0 : descProps.value, "slots"));
1179
539
  };
1180
540
  }
1181
541
  });
1182
542
 
1183
- /**
1184
- * 组合列表
1185
- * SearchForm + Table + Pagination
1186
- */
1187
- var ProCurdList = vue.defineComponent({
1188
- props: _objectSpread2({}, ProList.props),
543
+ var ProCurdModal = vue.defineComponent({
544
+ props: _objectSpread2({}, elementPlus.ElDialog.props),
1189
545
  setup: function setup(props, _ref) {
1190
546
  var slots = _ref.slots;
1191
547
 
1192
- var _useProModule = pro.useProModule(),
1193
- elementMap = _useProModule.elementMap,
1194
- formElementMap = _useProModule.formElementMap;
1195
-
1196
548
  var _useProCurd = pro.useProCurd(),
1197
549
  curdState = _useProCurd.curdState,
1198
- searchColumns = _useProCurd.searchColumns,
1199
- tableColumns = _useProCurd.tableColumns,
1200
- getOperate = _useProCurd.getOperate,
1201
- sendCurdEvent = _useProCurd.sendCurdEvent;
1202
- /******************* table ********************/
550
+ getOperate = _useProCurd.getOperate; //根据当前模式展示不同的Title
1203
551
 
1204
552
 
1205
- var prepareTableItem = function prepareTableItem(action) {
1206
- return _objectSpread2(_objectSpread2({}, lodash.pick(getOperate(action), "label", "element", "show", "disabled", "onClick", "sort")), {}, {
1207
- value: action
1208
- });
1209
- }; //table操作栏 items
553
+ var getTitle = function getTitle() {
554
+ var _getOperate, _getOperate2, _getOperate3;
1210
555
 
556
+ switch (curdState.mode) {
557
+ case pro.CurdAction.ADD:
558
+ return (_getOperate = getOperate(pro.CurdAction.ADD)) === null || _getOperate === void 0 ? void 0 : _getOperate.label;
1211
559
 
1212
- var tableOperateItems = [prepareTableItem(pro.CurdAction.DETAIL), prepareTableItem(pro.CurdAction.EDIT), prepareTableItem(pro.CurdAction.DELETE)];
1213
- return function () {
1214
- var _tableProps$operate, _tableProps$operate2, _curdState$listData, _curdState$listData2;
560
+ case pro.CurdAction.EDIT:
561
+ return (_getOperate2 = getOperate(pro.CurdAction.EDIT)) === null || _getOperate2 === void 0 ? void 0 : _getOperate2.label;
1215
562
 
1216
- var tableProps = props.tableProps;
1217
- return vue.createVNode(ProList, vue.mergeProps({
1218
- "onList": function onList(values) {
1219
- sendCurdEvent({
1220
- action: pro.CurdAction.LIST,
1221
- type: "emit",
1222
- values: values
1223
- });
1224
- }
1225
- }, props, {
1226
- "searchProps": _objectSpread2(_objectSpread2({
1227
- formElementMap: formElementMap
1228
- }, props.searchProps), {}, {
1229
- columns: searchColumns.value
1230
- }),
1231
- "tableProps": _objectSpread2(_objectSpread2({
1232
- elementMap: elementMap
1233
- }, tableProps), {}, {
1234
- operate: _objectSpread2(_objectSpread2({}, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate), {}, {
1235
- items: tableProps !== null && tableProps !== void 0 && (_tableProps$operate = tableProps.operate) !== null && _tableProps$operate !== void 0 && _tableProps$operate.items ? [].concat(tableOperateItems, _toConsumableArray(tableProps === null || tableProps === void 0 ? void 0 : (_tableProps$operate2 = tableProps.operate) === null || _tableProps$operate2 === void 0 ? void 0 : _tableProps$operate2.items)) : tableOperateItems
1236
- }),
1237
- columns: tableColumns.value,
1238
- loading: curdState.listLoading,
1239
- data: (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
1240
- }),
1241
- "paginationProps": _objectSpread2(_objectSpread2({}, props.paginationProps), {}, {
1242
- total: (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total
1243
- })
1244
- }), slots);
563
+ case pro.CurdAction.DETAIL:
564
+ return (_getOperate3 = getOperate(pro.CurdAction.DETAIL)) === null || _getOperate3 === void 0 ? void 0 : _getOperate3.label;
565
+ }
1245
566
  };
1246
- }
1247
- });
1248
- var ProCurdListConnect = vue.defineComponent({
1249
- setup: function setup() {
1250
- var _useProCurd2 = pro.useProCurd(),
1251
- listProps = _useProCurd2.listProps;
1252
567
 
1253
- return function () {
1254
- return vue.createVNode(ProCurdList, lodash.omit(listProps, "slots"), lodash.get(listProps, "slots"));
568
+ var handleCancel = function handleCancel() {
569
+ curdState.mode = undefined;
570
+ hooks.setReactiveValue(curdState.detailData, {});
571
+ curdState.detailLoading = false;
572
+ curdState.addAction = undefined;
1255
573
  };
1256
- }
1257
- });
1258
-
1259
- function _isSlot(s) {
1260
- return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1261
- }
1262
-
1263
- var ProCurdDesc = vue.defineComponent({
1264
- props: _objectSpread2({}, elementPlus.ElDescriptions.props),
1265
- setup: function setup(props, _ref) {
1266
- var slots = _ref.slots;
1267
-
1268
- var _useProModule = pro.useProModule(),
1269
- getItemVNode = _useProModule.getItemVNode;
1270
-
1271
- var _useProCurd = pro.useProCurd(),
1272
- curdState = _useProCurd.curdState,
1273
- descColumns = _useProCurd.descColumns;
1274
574
 
1275
- var descVNodes = vue.computed(function () {
1276
- return lodash.map(descColumns.value, function (item) {
1277
- var _slot;
1278
-
1279
- var value = lodash.get(curdState.detailData, item.dataIndex);
1280
- return vue.createVNode(elementPlus.ElDescriptionsItem, vue.mergeProps({
1281
- "key": item.dataIndex,
1282
- "label": item.title
1283
- }, lodash.get(item.extra, "desc")), _isSlot(_slot = getItemVNode(item, value)) ? _slot : {
1284
- "default": function _default() {
1285
- return [_slot];
1286
- }
1287
- });
1288
- });
1289
- });
1290
575
  return function () {
1291
- return vue.createVNode(elementPlus.ElDescriptions, props, _objectSpread2({
1292
- "default": function _default() {
1293
- return descVNodes.value;
1294
- }
1295
- }, lodash.omit(slots, "default")));
576
+ return vue.createVNode(elementPlus.ElDialog, vue.mergeProps({
577
+ "destroyOnClose": true,
578
+ "title": getTitle(),
579
+ "modelValue": !!curdState.mode,
580
+ "onClose": handleCancel
581
+ }, props), slots);
1296
582
  };
1297
583
  }
1298
584
  });
1299
- var ProCurdDescConnect = vue.defineComponent({
585
+ var ProCurdModalConnect = vue.defineComponent({
1300
586
  setup: function setup() {
1301
587
  var _useProCurd2 = pro.useProCurd(),
1302
- descProps = _useProCurd2.descProps;
588
+ modalProps = _useProCurd2.modalProps;
1303
589
 
1304
590
  return function () {
1305
- return vue.createVNode(ProCurdList, lodash.omit(descProps, "slots"), lodash.get(descProps, "slots"));
591
+ return vue.createVNode(ProCurdModal, lodash.omit(modalProps === null || modalProps === void 0 ? void 0 : modalProps.value, "slots"), _objectSpread2({
592
+ "default": function _default() {
593
+ return [vue.createVNode(ProCurdFormConnect, null, null)];
594
+ }
595
+ }, lodash.get(modalProps === null || modalProps === void 0 ? void 0 : modalProps.value, "slots")));
1306
596
  };
1307
597
  }
1308
598
  });
1309
599
 
1310
- exports.ContinueAddButton = ContinueAddButton;
1311
- exports.OkButton = OkButton;
1312
600
  exports.ProCurdDesc = ProCurdDesc;
1313
601
  exports.ProCurdDescConnect = ProCurdDescConnect;
1314
602
  exports.ProCurdForm = ProCurdForm;
1315
603
  exports.ProCurdFormConnect = ProCurdFormConnect;
1316
604
  exports.ProCurdList = ProCurdList;
1317
605
  exports.ProCurdListConnect = ProCurdListConnect;
606
+ exports.ProCurdModal = ProCurdModal;
607
+ exports.ProCurdModalConnect = ProCurdModalConnect;
1318
608
  exports.ProForm = ProForm;
1319
609
  exports.ProFormCascader = ProFormCascader;
1320
610
  exports.ProFormCheckbox = ProFormCheckbox;
@@ -1328,16 +618,11 @@ exports.ProFormText = ProFormText;
1328
618
  exports.ProFormTextNumber = ProFormTextNumber;
1329
619
  exports.ProFormTimePicker = ProFormTimePicker;
1330
620
  exports.ProFormTreeSelect = ProFormTreeSelect;
1331
- exports.ProList = ProList;
1332
- exports.ProOperateButton = ProOperateButton;
1333
- exports.ProSchemaForm = ProSchemaForm;
621
+ exports.ProGrid = ProGrid;
622
+ exports.ProLoading = ProLoading;
1334
623
  exports.ProSearchForm = ProSearchForm;
1335
624
  exports.ProSelect = ProSelect;
1336
625
  exports.ProSubmitButton = ProSubmitButton;
1337
626
  exports.ProTable = ProTable;
1338
627
  exports.createFormItemComponent = createFormItemComponent;
1339
- exports.defaultPage = defaultPage;
1340
- exports.provideProForm = provideProForm;
1341
- exports.provideProFormList = provideProFormList;
1342
- exports.useProForm = useProForm;
1343
- exports.useProFormList = useProFormList;
628
+ exports.createLoadingId = createLoadingId;