@vue-start/element-pro 0.1.2 → 0.2.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
@@ -82,213 +82,95 @@ 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
- var Content = vue.defineComponent(function () {
86
- var _useProTable = pro.useProTable(),
87
- columns = _useProTable.columns;
88
-
89
- return function () {
90
- return vue.createVNode(vue.Fragment, null, [lodash.map(columns.value, function (item) {
91
- var formatter = function formatter(record, column, value, index) {
92
- if (item.customRender) {
93
- return item.customRender({
94
- value: value,
95
- text: value,
96
- record: record,
97
- column: column,
98
- index: index
99
- });
100
- }
101
-
102
- return value;
103
- };
104
-
105
- return vue.createVNode(elementPlus.ElTableColumn, vue.mergeProps({
106
- "key": item.dataIndex
107
- }, lodash.omit(item, "title", "label", "renderHeader", "prop", "dataIndex", "formatter", "customRender"), {
108
- "label": vue.isVNode(item.title) ? undefined : item.title || lodash.get(item, "label"),
109
- "renderHeader": vue.isVNode(item.title) ? function () {
110
- return item.title;
111
- } : undefined,
112
- "prop": item.dataIndex,
113
- "formatter": formatter
114
- }), null);
115
- })]);
116
- };
117
- });
118
- var ProTable = vue.defineComponent({
119
- inheritAttrs: false,
120
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElTable.props), pro.ProTable.props),
121
- setup: function setup(props, _ref) {
122
- var slots = _ref.slots,
123
- expose = _ref.expose,
124
- attrs = _ref.attrs;
125
- var tableRef = vue.ref();
126
- var originKeys = lodash.keys(pro.ProTable.props);
127
- return function () {
128
- var _slots$default;
129
-
130
- return vue.createVNode(pro.ProTable, vue.mergeProps(attrs, lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
131
- "provideExtra": _objectSpread2({
132
- tableRef: tableRef
133
- }, props.provideExtra)
134
- }), {
135
- "default": function _default() {
136
- return [vue.createVNode(elementPlus.ElTable, vue.mergeProps({
137
- "ref": function ref(el) {
138
- expose(el);
139
- tableRef.value = el;
140
- }
141
- }, lodash.omit(props, originKeys)), _objectSpread2({
142
- "default": function _default() {
143
- return [vue.createVNode(Content, null, null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
144
- }
145
- }, lodash.omit(slots, "default")))];
146
- }
147
- });
148
- };
149
- }
150
- });
85
+ var ProGrid = pro.createGrid(elementPlus.ElRow, elementPlus.ElCol);
151
86
 
152
- var defaultPage = {
153
- page: 1,
154
- pageSize: 10
87
+ var createLoadingId = function createLoadingId() {
88
+ var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "comp";
89
+ return prefix + "-" + pro.generateId();
155
90
  };
156
91
 
157
- var proListProps = function proListProps() {
92
+ var proLoadingProps = function proLoadingProps() {
158
93
  return {
159
- /**
160
- * extra 是否放到SearchForm中
161
- */
162
- extraInSearch: {
163
- type: Boolean,
164
- "default": undefined
94
+ loading: {
95
+ type: Boolean
165
96
  },
166
- //search
167
- searchProps: {
168
- type: Object
97
+ target: {
98
+ type: [String, Object]
169
99
  },
170
- //table
171
- tableProps: {
172
- type: Object
100
+ body: {
101
+ type: Boolean
173
102
  },
174
- //pagination
175
- paginationProps: {
176
- type: Object
103
+ fullscreen: {
104
+ type: Boolean
177
105
  },
178
- //pageState
179
- pageState: {
180
- type: Object
106
+ lock: {
107
+ type: Boolean
108
+ },
109
+ text: {
110
+ type: String
111
+ },
112
+ spinner: {
113
+ type: String
114
+ },
115
+ background: {
116
+ type: String
117
+ },
118
+ customClass: {
119
+ type: String
181
120
  }
182
121
  };
183
122
  };
184
123
 
185
- var ProList = vue.defineComponent({
186
- props: _objectSpread2({}, proListProps()),
124
+ var ProLoading = vue.defineComponent({
125
+ props: _objectSpread2({}, proLoadingProps()),
187
126
  setup: function setup(props, _ref) {
188
- var slots = _ref.slots,
189
- emit = _ref.emit;
190
-
191
- /******************* search pagination ********************/
192
- var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
193
- var prevValues;
194
-
195
- var handleSearch = function handleSearch() {
196
- emit("list", _objectSpread2(_objectSpread2({}, prevValues), pageState));
197
- }; //页数重置1 且搜索
198
-
199
-
200
- var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
201
- prevValues = values;
202
- pageState.page = 1;
203
- handleSearch();
204
- };
127
+ var slots = _ref.slots;
128
+ var id = createLoadingId();
129
+ hooks.useEffect(function () {
130
+ if (!props.loading) {
131
+ return;
132
+ }
205
133
 
206
- return function () {
207
- var _slots$divide, _slots$divide2, _slots$footerLeft, _slots$footerRight;
208
-
209
- var searchProps = props.searchProps;
210
- var tableProps = props.tableProps;
211
- var paginationProps = props.paginationProps; //操作按钮
212
-
213
- var extra = slots.extra ? vue.createVNode("div", {
214
- "class": "pro-list-search"
215
- }, [slots.extra()]) : null; //分页参数
216
-
217
- var pagination = _objectSpread2(_objectSpread2({}, paginationProps), {}, {
218
- currentPage: pageState.page,
219
- pageSize: pageState.pageSize,
220
- onSizeChange: function onSizeChange(pageSize) {
221
- pageState.pageSize = pageSize;
222
- handleSearch();
223
- },
224
- onCurrentChange: function onCurrentChange(current) {
225
- pageState.page = current;
226
- handleSearch();
227
- }
228
- });
134
+ var element = props.target;
229
135
 
230
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(ProSearchForm, vue.mergeProps(searchProps, {
231
- "onFinish": executeSearchWithResetPage
232
- }), {
233
- "default": function _default() {
234
- return [props.extraInSearch && extra];
136
+ if (!slots["default"]) {
137
+ //监听
138
+ if (props.target && lodash.isString(props.target)) {
139
+ element = document.querySelector("#" + props.target);
235
140
  }
236
- }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !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), vue.createVNode("div", {
237
- "class": "pro-list-footer"
238
- }, [(_slots$footerLeft = slots.footerLeft) === null || _slots$footerLeft === void 0 ? void 0 : _slots$footerLeft.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)]), (_slots$footerRight = slots.footerRight) === null || _slots$footerRight === void 0 ? void 0 : _slots$footerRight.call(slots)])]);
239
- };
240
- }
241
- });
242
-
243
- function _isSlot$1(s) {
244
- return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
245
- }
246
-
247
- var proGridProps = function proGridProps() {
248
- return {
249
- /**
250
- * row属性
251
- */
252
- row: {
253
- type: Object,
254
- "default": undefined
255
- },
256
-
257
- /**
258
- * 公共col属性
259
- */
260
- col: {
261
- type: Object
262
- },
141
+ } else {
142
+ //包裹
143
+ element = document.getElementById(id);
144
+ }
263
145
 
264
- /**
265
- *
266
- */
267
- items: {
268
- type: Array
269
- }
270
- };
271
- };
146
+ if (!element) {
147
+ return;
148
+ }
272
149
 
273
- var ProGrid = vue.defineComponent({
274
- props: _objectSpread2({}, proGridProps()),
275
- setup: function setup(props) {
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
159
+ });
160
+ return function () {
161
+ instance && instance.close();
162
+ };
163
+ }, function () {
164
+ return props.loading;
165
+ });
276
166
  return function () {
277
- var _slot;
167
+ if (!slots["default"]) {
168
+ return null;
169
+ }
278
170
 
279
- return vue.createVNode(elementPlus.ElRow, props.row, _isSlot$1(_slot = lodash.map(props.items, function (item) {
280
- return vue.createVNode(elementPlus.ElCol, vue.mergeProps({
281
- "key": item.rowKey
282
- }, lodash.merge(props.col, item.col)), {
283
- "default": function _default() {
284
- return [item.vNode];
285
- }
286
- });
287
- })) ? _slot : {
288
- "default": function _default() {
289
- return [_slot];
290
- }
291
- });
171
+ return vue.createVNode("div", {
172
+ "id": id
173
+ }, [slots["default"]()]);
292
174
  };
293
175
  }
294
176
  });
@@ -313,112 +195,52 @@ var ProFormItem = vue.defineComponent({
313
195
  };
314
196
  }
315
197
  });
316
- //emit;
317
- var ProForm = vue.defineComponent({
318
- inheritAttrs: false,
319
- props: _objectSpread2(_objectSpread2(_objectSpread2({}, elementPlus.ElForm.props), lodash.omit(pro.ProForm.props, "model")), lodash.omit(ProGrid.props, "items")),
198
+ var Form = vue.defineComponent({
199
+ props: _objectSpread2({}, elementPlus.ElForm.props),
320
200
  setup: function setup(props, _ref2) {
321
201
  var slots = _ref2.slots,
322
- expose = _ref2.expose,
323
202
  emit = _ref2.emit,
324
- attrs = _ref2.attrs;
325
- var formRef = vue.ref();
203
+ expose = _ref2.expose;
326
204
  var formState = props.model || vue.reactive({});
327
- var showState = props.showState || vue.reactive({});
328
-
329
- var handleRef = function handleRef(el) {
330
- var nexEl = _objectSpread2(_objectSpread2({}, el), {}, {
331
- submit: function submit() {
332
- var _el$validate;
333
-
334
- (_el$validate = el.validate) === null || _el$validate === void 0 ? void 0 : _el$validate.call(el, function (isValid, invalidFields) {
335
- if (isValid) {
336
- //验证成功
337
- //删除不显示的值再触发事件
338
- var _showValues = pro.getValidValues(formState, showState, props.showStateRules);
339
-
340
- emit("finish", _showValues, vue.toRaw(formState));
341
- } else {
342
- emit("finishFailed", invalidFields);
343
- }
344
- });
345
- }
346
- });
205
+ var formRef = vue.ref();
206
+ var formMethods = ["clearValidate", "resetFields", "scrollToField", "validate", "validateField", "submit"];
207
+ hooks.useEffect(function () {
208
+ if (!formRef.value) {
209
+ return;
210
+ }
347
211
 
348
- expose(nexEl);
349
- formRef.value = nexEl;
350
- };
212
+ formRef.value.submit = function () {
213
+ var _formRef$value;
351
214
 
352
- var originKeys = lodash.keys(lodash.omit(pro.ProForm.props, "model"));
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));
353
225
  return function () {
354
- var _slots$default;
355
-
356
- return vue.createVNode(pro.ProForm, vue.mergeProps(lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
357
- "model": formState,
358
- "showState": showState,
359
- "provideExtra": _objectSpread2({
360
- formRef: formRef
361
- }, props.provideExtra)
362
- }), {
363
- "default": function _default() {
364
- return [vue.createVNode(elementPlus.ElForm, vue.mergeProps({
365
- "ref": handleRef
366
- }, attrs, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["model"])), {
367
- "model": formState
368
- }), {
369
- "default": function _default() {
370
- return [props.formElementMap && lodash.size(props.columns) > 0 && vue.createVNode(vue.Fragment, null, [props.row ? vue.createVNode(ProGrid, {
371
- "row": props.row,
372
- "col": props.col,
373
- "items": lodash.map(props.columns, function (item) {
374
- var vNode = pro.getFormItemEl(props.formElementMap, item, props.needRules);
375
- return {
376
- rowKey: pro.getColumnFormItemName(item),
377
- vNode: vNode,
378
- col: lodash.get(item, ["extra", "col"])
379
- };
380
- })
381
- }, null) : vue.createVNode(vue.Fragment, null, [lodash.map(props.columns, function (item) {
382
- return pro.getFormItemEl(props.formElementMap, item, props.needRules);
383
- })])]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
384
- }
385
- })];
386
- }
387
- });
226
+ return vue.createVNode(elementPlus.ElForm, vue.mergeProps({
227
+ "ref": formRef
228
+ }, lodash.omit(props, "model"), {
229
+ "model": formState
230
+ }), slots);
388
231
  };
389
232
  }
390
233
  });
391
-
392
- var ProSearchForm = vue.defineComponent({
393
- inheritAttrs: false,
394
- props: _objectSpread2(_objectSpread2(_objectSpread2({}, lodash.omit(ProForm.props, "inline")), lodash.omit(pro.ProSearchForm.props, "model", "columns")), {}, {
395
- inline: {
396
- type: Boolean,
397
- "default": true
398
- }
399
- }),
400
- setup: function setup(props, _ref) {
401
- var slots = _ref.slots,
402
- attrs = _ref.attrs;
403
- var formRef = vue.ref();
404
- var formState = props.model || vue.reactive({});
405
- var originKeys = lodash.keys(lodash.omit(pro.ProSearchForm.props, "model", "columns"));
406
- return function () {
407
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(ProForm, vue.mergeProps({
408
- "ref": formRef
409
- }, attrs, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["needRules", "model"])), {
410
- "model": formState,
411
- "needRules": false
412
- }), slots), vue.createVNode(pro.ProSearchForm, vue.mergeProps(lodash.pick(props, originKeys), {
413
- "model": formState,
414
- "columns": props.columns,
415
- "onFinish": function onFinish() {
416
- var _formRef$value;
417
-
418
- (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
419
- }
420
- }), null)]);
421
- };
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
422
244
  }
423
245
  });
424
246
 
@@ -449,7 +271,7 @@ var ProSelect = vue.defineComponent({
449
271
 
450
272
  return vue.createVNode(elementPlus.ElSelect, vue.mergeProps(lodash.omit(props, invalidKeys), {
451
273
  "onUpdate:modelValue": function onUpdateModelValue(v) {
452
- emit("update:modelValue", v);
274
+ emit("update:modelValue", v ? v : undefined);
453
275
  }
454
276
  }), _objectSpread2({
455
277
  "default": function _default() {
@@ -459,7 +281,66 @@ var ProSelect = vue.defineComponent({
459
281
  }, item), null);
460
282
  }), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
461
283
  }
462
- }, lodash.omit(props, "slots")));
284
+ }, lodash.omit(slots, "default")));
285
+ };
286
+ }
287
+ });
288
+
289
+ function _isSlot(s) {
290
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
291
+ }
292
+
293
+ var proRadioProps = function proRadioProps() {
294
+ return {
295
+ options: {
296
+ type: Array
297
+ },
298
+ buttonStyle: {
299
+ type: String,
300
+ "default": "default"
301
+ }
302
+ };
303
+ };
304
+
305
+ var ProRadio = vue.defineComponent({
306
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElRadioGroup.props), proRadioProps()),
307
+ setup: function setup(props, _ref) {
308
+ var emit = _ref.emit;
309
+ var invalidKeys = lodash.keys(proRadioProps());
310
+ return function () {
311
+ var _slot;
312
+
313
+ return vue.createVNode(elementPlus.ElRadioGroup, vue.mergeProps(lodash.omit(props, invalidKeys), {
314
+ "onUpdate:modelValue": function onUpdateModelValue(v) {
315
+ emit("update:modelValue", v);
316
+ }
317
+ }), _isSlot(_slot = lodash.map(props.options, function (item) {
318
+ if (props.buttonStyle === "button") {
319
+ return vue.createVNode(elementPlus.ElRadioButton, vue.mergeProps({
320
+ "key": item.value
321
+ }, item, {
322
+ "label": item.value
323
+ }), {
324
+ "default": function _default() {
325
+ return [item.label];
326
+ }
327
+ });
328
+ }
329
+
330
+ return vue.createVNode(elementPlus.ElRadio, vue.mergeProps({
331
+ "key": item.value
332
+ }, item, {
333
+ "label": item.value
334
+ }), {
335
+ "default": function _default() {
336
+ return [item.label];
337
+ }
338
+ });
339
+ })) ? _slot : {
340
+ "default": function _default() {
341
+ return [_slot];
342
+ }
343
+ });
463
344
  };
464
345
  }
465
346
  });
@@ -500,7 +381,7 @@ var ProFormCheckbox = createFormItemComponent({
500
381
  name: "PFromCheckbox"
501
382
  });
502
383
  var ProFormRadio = createFormItemComponent({
503
- InputComp: elementPlus.ElRadioGroup,
384
+ InputComp: ProRadio,
504
385
  valueType: "radio",
505
386
  name: "PFromRadio"
506
387
  });
@@ -538,6 +419,8 @@ var ProSubmitButton = vue.defineComponent({
538
419
  }
539
420
  });
540
421
 
422
+ var FormList = pro.createFormList(ProFormItem);
423
+
541
424
  var proFormListProps = function proFormListProps() {
542
425
  return {
543
426
  addButtonText: {
@@ -559,215 +442,98 @@ var proFormListProps = function proFormListProps() {
559
442
 
560
443
  var ProFormList = vue.defineComponent({
561
444
  name: "PFormList",
562
- props: _objectSpread2(_objectSpread2({}, ProFormItem.props), proFormListProps()),
445
+ props: _objectSpread2(_objectSpread2({}, FormList.props), proFormListProps()),
563
446
  setup: function setup(props, _ref) {
564
447
  var slots = _ref.slots;
565
- var originKeys = lodash.keys(pro.ProFormList.props);
566
448
  var invalidKeys = lodash.keys(proFormListProps());
567
449
  return function () {
568
- return vue.createVNode(ProFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), _toConsumableArray(invalidKeys))), {
569
- "name": props.name
570
- }), {
571
- "default": function _default() {
572
- return [vue.createVNode(pro.ProFormList, vue.mergeProps(lodash.pick(props, originKeys), {
573
- "name": props.name
574
- }), _objectSpread2({
575
- itemMinus: function itemMinus() {
576
- return vue.createVNode(elementPlus.ElButton, vue.mergeProps({
577
- "link": true
578
- }, props.minusButtonProps), {
579
- "default": function _default() {
580
- return [props.minusButtonText];
581
- }
582
- });
583
- },
584
- add: function add() {
585
- return vue.createVNode(elementPlus.ElButton, vue.mergeProps({
586
- "type": "primary"
587
- }, props.addButtonProps), {
588
- "default": function _default() {
589
- return [props.addButtonText];
590
- }
591
- });
450
+ return vue.createVNode(FormList, lodash.omit(props, invalidKeys), _objectSpread2({
451
+ itemMinus: function itemMinus() {
452
+ return vue.createVNode(elementPlus.ElButton, props.minusButtonProps, {
453
+ "default": function _default() {
454
+ return [props.minusButtonText];
592
455
  }
593
- }, slots))];
594
- }
595
- });
596
- };
597
- }
598
- });
599
-
600
- /**
601
- * 添加 和 修改 时候的确定按钮
602
- */
603
-
604
- var OkButton = vue.defineComponent({
605
- props: _objectSpread2({}, elementPlus.ElButton.props),
606
- setup: function setup(props, _ref) {
607
- var slots = _ref.slots;
608
-
609
- var _useProCurd = pro.useProCurd(),
610
- curdState = _useProCurd.curdState;
611
-
612
- return function () {
613
- return vue.createVNode(ProSubmitButton, vue.mergeProps({
614
- "onClick": function onClick() {
615
- curdState.addAction = pro.CurdAddAction.NORMAL;
616
- }
617
- }, props, {
618
- "loading": curdState.operateLoading
619
- }), {
620
- "default": function _default() {
621
- return [slots["default"] ? slots["default"]() : "确定"];
622
- }
623
- });
624
- };
625
- }
626
- });
627
- /**
628
- * 添加 时候的 确定并继续添加按钮
629
- */
630
-
631
- var ContinueAddButton = vue.defineComponent({
632
- props: _objectSpread2({}, elementPlus.ElButton.props),
633
- setup: function setup(props, _ref2) {
634
- var slots = _ref2.slots;
635
-
636
- var _useProCurd2 = pro.useProCurd(),
637
- curdState = _useProCurd2.curdState;
638
-
639
- return function () {
640
- return vue.createVNode(ProSubmitButton, vue.mergeProps({
641
- "onClick": function onClick() {
642
- curdState.addAction = pro.CurdAddAction.CONTINUE;
643
- }
644
- }, props, {
645
- "loading": curdState.operateLoading
646
- }), {
647
- "default": function _default() {
648
- return [slots["default"] ? slots["default"]() : "确定并继续"];
456
+ });
457
+ },
458
+ add: function add() {
459
+ return vue.createVNode(elementPlus.ElButton, props.addButtonProps, {
460
+ "default": function _default() {
461
+ return [props.addButtonText];
462
+ }
463
+ });
649
464
  }
650
- });
465
+ }, slots));
651
466
  };
652
467
  }
653
468
  });
654
469
 
655
- var proOperateButtonProps = function proOperateButtonProps() {
656
- return {
657
- //显示 确定并继续 按钮
658
- showContinueAdd: {
659
- type: Boolean,
660
- "default": false
661
- },
662
- //
663
- okText: {
664
- type: String,
665
- "default": "确定"
666
- },
667
- okButtonProps: {
668
- type: Object
470
+ var Table = vue.defineComponent({
471
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElTable.props), {}, {
472
+ columns: {
473
+ type: Array
669
474
  },
670
- //
671
- continueText: {
672
- type: String,
673
- "default": "确定并继续"
475
+ dataSource: {
476
+ type: Array
674
477
  },
675
- continueButtonProps: {
676
- type: Object
478
+ loading: {
479
+ type: Boolean
677
480
  }
678
- };
679
- };
680
-
681
- var ProOperateButton = vue.defineComponent({
682
- props: _objectSpread2({}, proOperateButtonProps()),
683
- setup: function setup(props, _ref3) {
684
- var slots = _ref3.slots;
685
-
686
- var _useProCurd3 = pro.useProCurd(),
687
- curdState = _useProCurd3.curdState;
688
-
481
+ }),
482
+ setup: function setup(props, _ref) {
483
+ var slots = _ref.slots;
484
+ var id = createLoadingId("table");
689
485
  return function () {
690
- var _slots$left, _slots$center, _slots$right;
486
+ var _slots$start, _slots$default;
691
487
 
692
- return vue.createVNode("div", {
693
- "class": "pro-curd-form-operate"
694
- }, [(_slots$left = slots.left) === null || _slots$left === void 0 ? void 0 : _slots$left.call(slots), vue.createVNode(OkButton, props.okButtonProps, {
695
- "default": function _default() {
696
- return [props.okText];
697
- }
698
- }), (_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, {
488
+ return vue.createVNode(elementPlus.ElTable, vue.mergeProps({
489
+ "id": id
490
+ }, lodash.omit(props, "columns", "dataSource", "loading"), {
491
+ "data": props.dataSource || props.data
492
+ }), _objectSpread2({
699
493
  "default": function _default() {
700
- return [props.continueText];
494
+ return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), lodash.map(props.columns, function (item) {
495
+ return vue.createVNode(elementPlus.ElTableColumn, vue.mergeProps({
496
+ "key": item.dataIndex
497
+ }, lodash.omit(item, "title", "label", "renderHeader", "prop", "dataIndex", "formatter", "customRender"), {
498
+ "label": vue.isVNode(item.title) ? undefined : item.title || lodash.get(item, "label"),
499
+ "renderHeader": vue.isVNode(item.title) ? function () {
500
+ return item.title;
501
+ } : undefined,
502
+ "prop": item.dataIndex,
503
+ "formatter": function formatter(record, column, value, index) {
504
+ if (item.customRender) {
505
+ return item.customRender({
506
+ value: value,
507
+ text: value,
508
+ record: record,
509
+ column: column,
510
+ index: index
511
+ });
512
+ }
513
+
514
+ return value;
515
+ }
516
+ }), null);
517
+ }), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots), props.loading && vue.createVNode(ProLoading, {
518
+ "target": id,
519
+ "loading": true
520
+ }, null)];
701
521
  }
702
- }), (_slots$right = slots.right) === null || _slots$right === void 0 ? void 0 : _slots$right.call(slots)]);
522
+ }, lodash.omit(slots, "default", "start")));
703
523
  };
704
524
  }
705
525
  });
526
+ var ProTable = pro.createTable(Table);
706
527
 
707
- var proCurdFormProps = function proCurdFormProps() {
528
+ var ProCurdForm = pro.createCurdForm(ProForm, elementPlus.ElButton, function (curdState) {
708
529
  return {
709
- //
710
- operateButtonProps: {
711
- type: Object
712
- }
530
+ hideRequiredAsterisk: curdState.mode === pro.CurdCurrentMode.DETAIL
713
531
  };
714
- };
715
-
716
- var ProCurdForm = vue.defineComponent({
717
- props: _objectSpread2(_objectSpread2({}, ProForm.props), proCurdFormProps()),
718
- setup: function setup(props, _ref4) {
719
- var slots = _ref4.slots;
720
-
721
- var _useProModule = pro.useProModule(),
722
- elementMap = _useProModule.elementMap,
723
- formElementMap = _useProModule.formElementMap;
724
-
725
- var _useProCurd4 = pro.useProCurd(),
726
- curdState = _useProCurd4.curdState,
727
- formColumns = _useProCurd4.formColumns,
728
- sendCurdEvent = _useProCurd4.sendCurdEvent;
729
-
730
- var handleFinish = function handleFinish(values) {
731
- if (curdState.mode === pro.CurdCurrentMode.EDIT) {
732
- //edit
733
- sendCurdEvent({
734
- action: pro.CurdAction.EDIT,
735
- type: pro.CurdSubAction.EXECUTE,
736
- values: values
737
- });
738
- } else {
739
- //add
740
- sendCurdEvent({
741
- action: pro.CurdAction.ADD,
742
- type: pro.CurdSubAction.EXECUTE,
743
- values: values
744
- });
745
- }
746
- };
747
-
748
- return function () {
749
- var _slots$default;
750
-
751
- return vue.createVNode(ProForm, vue.mergeProps(lodash.omit(props, "elementMap", "formElementMap"), {
752
- "elementMap": props.elementMap || elementMap,
753
- "formElementMap": props.formElementMap || formElementMap,
754
- "columns": formColumns.value,
755
- "model": curdState.detailData,
756
- "readonly": curdState.mode === pro.CurdCurrentMode.DETAIL,
757
- "hideRequiredAsterisk": curdState.mode === pro.CurdCurrentMode.DETAIL,
758
- "onFinish": handleFinish
759
- }), _objectSpread2({
760
- "default": function _default() {
761
- 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)];
762
- }
763
- }, lodash.omit(slots, "default")));
764
- };
765
- }
766
532
  });
767
533
  var ProCurdFormConnect = vue.defineComponent({
768
534
  setup: function setup() {
769
- var _useProCurd5 = pro.useProCurd(),
770
- formProps = _useProCurd5.formProps;
535
+ var _useProCurd = pro.useProCurd(),
536
+ formProps = _useProCurd.formProps;
771
537
 
772
538
  return function () {
773
539
  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"));
@@ -775,113 +541,45 @@ var ProCurdFormConnect = vue.defineComponent({
775
541
  }
776
542
  });
777
543
 
778
- /**
779
- * 组合列表
780
- * SearchForm + Table + Pagination
544
+ var CurdList = pro.createCurdList(ProSearchForm, ProTable);
545
+
546
+ /**
547
+ * 组合列表
548
+ * SearchForm + Table + Pagination
781
549
  */
782
550
  var ProCurdList = vue.defineComponent({
783
- props: _objectSpread2({}, ProList.props),
551
+ props: _objectSpread2(_objectSpread2({}, CurdList.props), {}, {
552
+ paginationProps: {
553
+ type: Object
554
+ }
555
+ }),
784
556
  setup: function setup(props, _ref) {
785
557
  var slots = _ref.slots;
786
-
787
- var _useProModule = pro.useProModule(),
788
- elementMap = _useProModule.elementMap,
789
- formElementMap = _useProModule.formElementMap;
790
-
791
- var _useProCurd = pro.useProCurd(),
792
- curdState = _useProCurd.curdState,
793
- searchColumns = _useProCurd.searchColumns,
794
- tableColumns = _useProCurd.tableColumns,
795
- getOperate = _useProCurd.getOperate,
796
- sendCurdEvent = _useProCurd.sendCurdEvent;
797
- /******************* table ********************/
798
-
799
-
800
- var prepareTableItem = function prepareTableItem(action) {
801
- var item = getOperate(action);
802
- return _objectSpread2(_objectSpread2({}, lodash.pick(item, "label", "element", "disabled", "sort")), {}, {
803
- show: !lodash.isUndefined(item === null || item === void 0 ? void 0 : item.show) ? item === null || item === void 0 ? void 0 : item.show : false,
804
- onClick: function onClick(record) {
805
- if (item !== null && item !== void 0 && item.onClick) {
806
- item.onClick(record);
807
- return;
808
- }
809
-
810
- sendCurdEvent({
811
- action: action,
812
- type: pro.CurdSubAction.EMIT,
813
- record: record
814
- });
815
- },
816
- value: action
817
- });
818
- }; //table操作栏 items
819
-
820
-
821
- var tableOperateItems = [prepareTableItem(pro.CurdAction.DETAIL), prepareTableItem(pro.CurdAction.EDIT), prepareTableItem(pro.CurdAction.DELETE)];
822
558
  return function () {
823
- var _curdState$listData, _curdState$listData2;
824
-
825
- var tableProps = props.tableProps;
826
- return vue.createVNode(ProList, vue.mergeProps({
827
- "onList": function onList(values) {
828
- sendCurdEvent({
829
- action: pro.CurdAction.LIST,
830
- type: pro.CurdSubAction.EMIT,
831
- values: values
832
- });
833
- }
834
- }, props, {
835
- "searchProps": _objectSpread2(_objectSpread2({
836
- formElementMap: formElementMap
837
- }, props.searchProps), {}, {
838
- columns: searchColumns.value
839
- }),
840
- "tableProps": _objectSpread2(_objectSpread2({
841
- elementMap: elementMap
842
- }, tableProps), {}, {
843
- operate: lodash.mergeWith({
844
- items: tableOperateItems
845
- }, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate, function (objValue, srcValue) {
846
- if (lodash.isArray(objValue)) {
847
- if (lodash.isArray(srcValue)) {
848
- //合并
849
- return lodash.concat(objValue, lodash.map(srcValue, function (item) {
850
- var nextItem = _objectSpread2({}, item);
851
-
852
- if (!item.onClick) {
853
- nextItem.onClick = function (record) {
854
- sendCurdEvent({
855
- action: pro.CurdAction.LIST,
856
- type: "operate-".concat(item.value),
857
- record: record
858
- });
859
- };
860
- }
861
-
862
- return nextItem;
863
- }));
864
- } else {
865
- //使用curd默认
866
- return objValue;
867
- }
559
+ return vue.createVNode(CurdList, lodash.omit(props, "paginationProps"), _objectSpread2({
560
+ pagination: function pagination(pageState, total, handleSearch) {
561
+ return vue.createVNode(elementPlus.ElPagination, vue.mergeProps(props.paginationProps, {
562
+ "total": total,
563
+ "currentPage": pageState.page,
564
+ "pageSize": pageState.pageSize,
565
+ "onSizeChange": function onSizeChange(pageSize) {
566
+ pageState.pageSize = pageSize;
567
+ handleSearch();
568
+ },
569
+ "onCurrentChange": function onCurrentChange(current) {
570
+ pageState.page = current;
571
+ handleSearch();
868
572
  }
869
- }),
870
- columns: tableColumns.value,
871
- loading: curdState.listLoading,
872
- data: (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
873
- }),
874
- "paginationProps": _objectSpread2(_objectSpread2({}, props.paginationProps), {}, {
875
- total: (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total
876
- })
877
- }), slots);
573
+ }), null);
574
+ }
575
+ }, slots));
878
576
  };
879
577
  }
880
578
  });
881
579
  var ProCurdListConnect = vue.defineComponent({
882
580
  setup: function setup() {
883
- var _useProCurd2 = pro.useProCurd(),
884
- listProps = _useProCurd2.listProps;
581
+ var _useProCurd = pro.useProCurd(),
582
+ listProps = _useProCurd.listProps;
885
583
 
886
584
  return function () {
887
585
  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"));
@@ -889,53 +587,14 @@ var ProCurdListConnect = vue.defineComponent({
889
587
  }
890
588
  });
891
589
 
892
- function _isSlot(s) {
893
- return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
894
- }
895
-
896
- var ProCurdDesc = vue.defineComponent({
897
- props: _objectSpread2({}, elementPlus.ElDescriptions.props),
898
- setup: function setup(props, _ref) {
899
- var slots = _ref.slots;
900
-
901
- var _useProModule = pro.useProModule(),
902
- getItemVNode = _useProModule.getItemVNode;
903
-
904
- var _useProCurd = pro.useProCurd(),
905
- curdState = _useProCurd.curdState,
906
- descColumns = _useProCurd.descColumns;
907
-
908
- var descVNodes = vue.computed(function () {
909
- return lodash.map(descColumns.value, function (item) {
910
- var _slot;
911
-
912
- var value = lodash.get(curdState.detailData, item.dataIndex);
913
- return vue.createVNode(elementPlus.ElDescriptionsItem, vue.mergeProps({
914
- "key": item.dataIndex,
915
- "label": item.title
916
- }, lodash.get(item.extra, "desc")), _isSlot(_slot = getItemVNode(item, value)) ? _slot : {
917
- "default": function _default() {
918
- return [_slot];
919
- }
920
- });
921
- });
922
- });
923
- return function () {
924
- return vue.createVNode(elementPlus.ElDescriptions, props, _objectSpread2({
925
- "default": function _default() {
926
- return descVNodes.value;
927
- }
928
- }, lodash.omit(slots, "default")));
929
- };
930
- }
931
- });
590
+ var ProCurdDesc = pro.createCurdDesc(elementPlus.ElDescriptions, elementPlus.ElDescriptionsItem);
932
591
  var ProCurdDescConnect = vue.defineComponent({
933
592
  setup: function setup() {
934
- var _useProCurd2 = pro.useProCurd(),
935
- descProps = _useProCurd2.descProps;
593
+ var _useProCurd = pro.useProCurd(),
594
+ descProps = _useProCurd.descProps;
936
595
 
937
596
  return function () {
938
- return vue.createVNode(ProCurdList, lodash.omit(descProps === null || descProps === void 0 ? void 0 : descProps.value, "slots"), lodash.get(descProps === null || descProps === void 0 ? void 0 : descProps.value, "slots"));
597
+ 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"));
939
598
  };
940
599
  }
941
600
  });
@@ -997,8 +656,6 @@ var ProCurdModalConnect = vue.defineComponent({
997
656
  }
998
657
  });
999
658
 
1000
- exports.ContinueAddButton = ContinueAddButton;
1001
- exports.OkButton = OkButton;
1002
659
  exports.ProCurdDesc = ProCurdDesc;
1003
660
  exports.ProCurdDescConnect = ProCurdDescConnect;
1004
661
  exports.ProCurdForm = ProCurdForm;
@@ -1021,11 +678,11 @@ exports.ProFormTextNumber = ProFormTextNumber;
1021
678
  exports.ProFormTimePicker = ProFormTimePicker;
1022
679
  exports.ProFormTreeSelect = ProFormTreeSelect;
1023
680
  exports.ProGrid = ProGrid;
1024
- exports.ProList = ProList;
1025
- exports.ProOperateButton = ProOperateButton;
681
+ exports.ProLoading = ProLoading;
682
+ exports.ProRadio = ProRadio;
1026
683
  exports.ProSearchForm = ProSearchForm;
1027
684
  exports.ProSelect = ProSelect;
1028
685
  exports.ProSubmitButton = ProSubmitButton;
1029
686
  exports.ProTable = ProTable;
1030
687
  exports.createFormItemComponent = createFormItemComponent;
1031
- exports.defaultPage = defaultPage;
688
+ exports.createLoadingId = createLoadingId;