@vue-start/element-pro 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,9 +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 pro = require('@vue-start/pro');
8
9
  var hooks = require('@vue-start/hooks');
9
- var request = require('@vue-start/request');
10
- var rxjs = require('rxjs');
11
10
 
12
11
  function ownKeys(object, enumerableOnly) {
13
12
  var keys = Object.keys(object);
@@ -83,201 +82,389 @@ function _nonIterableSpread() {
83
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.");
84
83
  }
85
84
 
86
- /**
87
- * ProForm ctx
88
- */
89
- var ProFormKey = Symbol("pro-form");
90
- var useProForm = function useProForm() {
91
- return vue.inject(ProFormKey);
85
+ var createLoadingId = function createLoadingId() {
86
+ var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "comp";
87
+ return prefix + "-" + pro.generateId();
92
88
  };
93
- var provideProForm = function provideProForm(ctx) {
94
- vue.provide(ProFormKey, ctx);
95
- };
96
- /**
97
- * ProFormList ctx
98
- */
99
89
 
100
- var ProFormListKey = Symbol("pro-form-list");
101
- var useProFormList = function useProFormList() {
102
- return vue.inject(ProFormListKey);
103
- };
104
- var provideProFormList = function provideProFormList(ctx) {
105
- vue.provide(ProFormListKey, ctx);
90
+ var proLoadingProps = function proLoadingProps() {
91
+ return {
92
+ loading: {
93
+ type: Boolean
94
+ },
95
+ target: {
96
+ type: [String, Object]
97
+ },
98
+ body: {
99
+ type: Boolean
100
+ },
101
+ fullscreen: {
102
+ type: Boolean
103
+ },
104
+ lock: {
105
+ type: Boolean
106
+ },
107
+ text: {
108
+ type: String
109
+ },
110
+ spinner: {
111
+ type: String
112
+ },
113
+ background: {
114
+ type: String
115
+ },
116
+ customClass: {
117
+ type: String
118
+ }
119
+ };
106
120
  };
107
121
 
108
- /**
109
- * 剔除showState或showStateRules规则为!true的值
110
- * @param values
111
- * @param showState
112
- * @param showStateRules
113
- */
114
- var getValidValues = function getValidValues(values, showState, showStateRules) {
115
- if (showState) {
116
- var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
117
- return !showState[key];
118
- });
119
- return lodash.omit(values, invalidKeys);
120
- }
122
+ var ProLoading = vue.defineComponent({
123
+ props: _objectSpread2({}, proLoadingProps()),
124
+ setup: function setup(props, _ref) {
125
+ var slots = _ref.slots;
126
+ var id = createLoadingId();
127
+ hooks.useEffect(function () {
128
+ if (!props.loading) {
129
+ return;
130
+ }
121
131
 
122
- if (showStateRules) {
123
- var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
124
- return !showStateRules[key](values);
125
- });
132
+ var element = props.target;
126
133
 
127
- return lodash.omit(values, _invalidKeys);
128
- }
134
+ if (!slots["default"]) {
135
+ //监听
136
+ if (props.target && lodash.isString(props.target)) {
137
+ element = document.querySelector("#" + props.target);
138
+ }
139
+ } else {
140
+ //包裹
141
+ element = document.getElementById(id);
142
+ }
129
143
 
130
- return values;
131
- };
132
- /**
133
- * string类型的path转为arr
134
- * @param path
135
- */
144
+ if (!element) {
145
+ return;
146
+ }
136
147
 
137
- var convertPathToList = function convertPathToList(path) {
138
- if (!path) {
139
- return undefined;
140
- }
148
+ var instance = elementPlus.ElLoading.service({
149
+ target: element,
150
+ body: props.body,
151
+ fullscreen: props.fullscreen,
152
+ lock: props.lock,
153
+ text: props.text,
154
+ spinner: props.spinner,
155
+ background: props.background,
156
+ customClass: props.customClass
157
+ });
158
+ return function () {
159
+ instance && instance.close();
160
+ };
161
+ }, function () {
162
+ return props.loading;
163
+ });
164
+ return function () {
165
+ if (!slots["default"]) {
166
+ return null;
167
+ }
141
168
 
142
- if (lodash.isArray(path)) {
143
- return path;
169
+ return vue.createVNode("div", {
170
+ "id": id
171
+ }, [slots["default"]()]);
172
+ };
144
173
  }
174
+ });
145
175
 
146
- if (path && lodash.isString(path) && path.indexOf(".") > 0) {
147
- return lodash.split(path, ".");
148
- }
176
+ var Content$1 = vue.defineComponent(function () {
177
+ var _useProTable = pro.useProTable(),
178
+ columns = _useProTable.columns;
179
+
180
+ return function () {
181
+ return vue.createVNode(vue.Fragment, null, [lodash.map(columns.value, function (item) {
182
+ var formatter = function formatter(record, column, value, index) {
183
+ if (item.customRender) {
184
+ return item.customRender({
185
+ value: value,
186
+ text: value,
187
+ record: record,
188
+ column: column,
189
+ index: index
190
+ });
191
+ }
149
192
 
150
- return [path];
151
- };
193
+ return value;
194
+ };
152
195
 
153
- var proFormItemProps$1 = function proFormItemProps() {
154
- return {
155
- name: {
156
- type: [String, Array]
157
- }
196
+ return vue.createVNode(elementPlus.ElTableColumn, vue.mergeProps({
197
+ "key": item.dataIndex
198
+ }, lodash.omit(item, "title", "label", "renderHeader", "prop", "dataIndex", "formatter", "customRender"), {
199
+ "label": vue.isVNode(item.title) ? undefined : item.title || lodash.get(item, "label"),
200
+ "renderHeader": vue.isVNode(item.title) ? function () {
201
+ return item.title;
202
+ } : undefined,
203
+ "prop": item.dataIndex,
204
+ "formatter": formatter
205
+ }), null);
206
+ })]);
158
207
  };
159
- };
160
-
161
- var ProFormItem = vue.defineComponent({
162
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElFormItem.props), proFormItemProps$1()),
208
+ });
209
+ var ProTable = vue.defineComponent({
210
+ inheritAttrs: false,
211
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElTable.props), pro.ProTable.props),
163
212
  setup: function setup(props, _ref) {
164
- var slots = _ref.slots;
165
- var invalidKeys = lodash.keys(proFormItemProps$1());
213
+ var slots = _ref.slots,
214
+ expose = _ref.expose,
215
+ attrs = _ref.attrs;
216
+ var id = createLoadingId("table");
217
+ var tableRef = vue.ref();
218
+ expose({
219
+ tableRef: tableRef
220
+ });
221
+ var originKeys = lodash.keys(pro.ProTable.props);
166
222
  return function () {
167
- return vue.createVNode(elementPlus.ElFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name", "prop"])), {
168
- "prop": props.prop || props.name
169
- }), slots);
223
+ var _slots$top, _slots$default;
224
+
225
+ return vue.createVNode(pro.ProTable, vue.mergeProps(lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
226
+ "provideExtra": _objectSpread2({
227
+ tableRef: tableRef
228
+ }, props.provideExtra)
229
+ }), {
230
+ "default": function _default() {
231
+ return [vue.createVNode(elementPlus.ElTable, vue.mergeProps({
232
+ "ref": tableRef,
233
+ "id": id
234
+ }, attrs, lodash.omit(props, originKeys)), _objectSpread2({
235
+ "default": function _default() {
236
+ return [(_slots$top = slots.top) === null || _slots$top === void 0 ? void 0 : _slots$top.call(slots), vue.createVNode(Content$1, null, null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots), props.loading && vue.createVNode(ProLoading, {
237
+ "target": id,
238
+ "loading": true
239
+ }, null)];
240
+ }
241
+ }, lodash.omit(slots, "default")))];
242
+ }
243
+ });
170
244
  };
171
245
  }
172
246
  });
173
247
 
174
- var proFormProps = function proFormProps() {
248
+ var defaultPage = {
249
+ page: 1,
250
+ pageSize: 10
251
+ };
252
+
253
+ var proListProps = function proListProps() {
175
254
  return {
176
255
  /**
177
- * 子组件是否只读样式
256
+ * extra 是否放到SearchForm中
178
257
  */
179
- readonly: {
258
+ extraInSearch: {
180
259
  type: Boolean,
181
260
  "default": undefined
182
261
  },
183
-
184
- /**
185
- * FormComponent 根据此项来确定组件是否显示
186
- * rules 根据rules中方法生成showState对象
187
- */
188
- showState: {
262
+ //search
263
+ searchProps: {
189
264
  type: Object
190
265
  },
191
- showStateRules: {
266
+ //table
267
+ tableProps: {
192
268
  type: Object
193
269
  },
194
-
195
- /**
196
- * 是否只读
197
- */
198
- readonlyState: {
270
+ //pagination
271
+ paginationProps: {
199
272
  type: Object
200
273
  },
201
- readonlyStateRules: {
274
+ //pageState
275
+ pageState: {
202
276
  type: Object
203
- },
277
+ }
278
+ };
279
+ };
280
+
281
+ var ProList = vue.defineComponent({
282
+ props: _objectSpread2({}, proListProps()),
283
+ setup: function setup(props, _ref) {
284
+ var slots = _ref.slots,
285
+ emit = _ref.emit;
286
+
287
+ /******************* search pagination ********************/
288
+ var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
289
+ var prevValues;
290
+
291
+ var handleSearch = function handleSearch() {
292
+ emit("list", _objectSpread2(_objectSpread2({}, prevValues), pageState));
293
+ }; //页数重置1 且搜索
294
+
295
+
296
+ var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
297
+ prevValues = values;
298
+ pageState.page = 1;
299
+ handleSearch();
300
+ };
301
+
302
+ return function () {
303
+ var _slots$divide, _slots$divide2, _slots$footerLeft, _slots$footerRight;
304
+
305
+ var searchProps = props.searchProps;
306
+ var tableProps = props.tableProps;
307
+ var paginationProps = props.paginationProps; //操作按钮
308
+
309
+ var extra = slots.extra ? vue.createVNode("div", {
310
+ "class": "pro-list-search"
311
+ }, [slots.extra()]) : null; //分页参数
312
+
313
+ var pagination = _objectSpread2(_objectSpread2({}, paginationProps), {}, {
314
+ currentPage: pageState.page,
315
+ pageSize: pageState.pageSize,
316
+ onSizeChange: function onSizeChange(pageSize) {
317
+ pageState.pageSize = pageSize;
318
+ handleSearch();
319
+ },
320
+ onCurrentChange: function onCurrentChange(current) {
321
+ pageState.page = current;
322
+ handleSearch();
323
+ }
324
+ });
325
+
326
+ return vue.createVNode(vue.Fragment, null, [vue.createVNode(ProSearchForm, vue.mergeProps(searchProps, {
327
+ "onFinish": executeSearchWithResetPage
328
+ }), {
329
+ "default": function _default() {
330
+ return [props.extraInSearch && extra];
331
+ }
332
+ }), (_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, vue.mergeProps({
333
+ "pagination": {
334
+ page: pageState.page,
335
+ pageSize: pageState.pageSize
336
+ }
337
+ }, 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", {
338
+ "class": "pro-list-footer"
339
+ }, [(_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)])]);
340
+ };
341
+ }
342
+ });
343
+
344
+ function _isSlot$1(s) {
345
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
346
+ }
204
347
 
348
+ var proGridProps = function proGridProps() {
349
+ return {
205
350
  /**
206
- * 是否disabled
351
+ * row属性
207
352
  */
208
- disableState: {
209
- type: Object
210
- },
211
- disableStateRules: {
212
- type: Object
353
+ row: {
354
+ type: Object,
355
+ "default": undefined
213
356
  },
214
357
 
215
358
  /**
216
- * 展示控件集合,readonly模式下使用这些组件渲染
359
+ * 公共col属性
217
360
  */
218
- elementMap: {
361
+ col: {
219
362
  type: Object
220
363
  },
221
364
 
222
365
  /**
223
- * provide传递
366
+ *
224
367
  */
225
- provideExtra: {
226
- type: Object
368
+ items: {
369
+ type: Array
227
370
  }
228
371
  };
229
372
  };
230
373
 
231
- //emit;
232
- var ProForm = vue.defineComponent({
233
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElForm.props), proFormProps()),
234
- setup: function setup(props, _ref2) {
235
- var slots = _ref2.slots,
236
- expose = _ref2.expose,
237
- emit = _ref2.emit;
238
- var form = vue.ref();
239
- var formState = props.model || vue.reactive({}); //组件状态相关
240
-
241
- var showState = props.showState || vue.reactive({});
242
- var readonlyState = props.readonlyState || vue.reactive({});
243
- var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
374
+ var ProGrid = vue.defineComponent({
375
+ props: _objectSpread2({}, proGridProps()),
376
+ setup: function setup(props) {
377
+ return function () {
378
+ var _slot;
244
379
 
245
- hooks.useEffect(function () {
246
- if (props.showStateRules) {
247
- lodash.forEach(props.showStateRules, function (fn, key) {
248
- showState[key] = fn(formState);
380
+ return vue.createVNode(elementPlus.ElRow, props.row, _isSlot$1(_slot = lodash.map(props.items, function (item) {
381
+ return vue.createVNode(elementPlus.ElCol, vue.mergeProps({
382
+ "key": item.rowKey
383
+ }, props.col, item.col), {
384
+ "default": function _default() {
385
+ return [item.vNode];
386
+ }
249
387
  });
250
- }
388
+ })) ? _slot : {
389
+ "default": function _default() {
390
+ return [_slot];
391
+ }
392
+ });
393
+ };
394
+ }
395
+ });
251
396
 
252
- if (props.readonlyStateRules) {
253
- lodash.forEach(props.readonlyStateRules, function (fn, key) {
254
- readonlyState[key] = fn(formState);
255
- });
397
+ var proFormItemProps = function proFormItemProps() {
398
+ return {
399
+ name: {
400
+ type: [String, Array]
401
+ }
402
+ };
403
+ };
404
+
405
+ var ProFormItem = vue.defineComponent({
406
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElFormItem.props), proFormItemProps()),
407
+ setup: function setup(props, _ref) {
408
+ var slots = _ref.slots;
409
+ var invalidKeys = lodash.keys(proFormItemProps());
410
+ return function () {
411
+ return vue.createVNode(elementPlus.ElFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name", "prop"])), {
412
+ "prop": props.prop || props.name
413
+ }), slots);
414
+ };
415
+ }
416
+ });
417
+ //emit;
418
+ var Content = vue.defineComponent({
419
+ props: _objectSpread2(_objectSpread2({}, ProGrid.props), {}, {
420
+ needRules: {
421
+ type: Boolean
422
+ }
423
+ }),
424
+ setup: function setup(props) {
425
+ var _useProForm = pro.useProForm(),
426
+ formElementMap = _useProForm.formElementMap,
427
+ columns = _useProForm.columns;
428
+
429
+ return function () {
430
+ if (!formElementMap || lodash.size(columns.value) <= 0) {
431
+ return null;
256
432
  }
257
433
 
258
- if (props.disableStateRules) {
259
- lodash.forEach(props.disableStateRules, function (fn, key) {
260
- disableState[key] = fn(formState);
434
+ if (!props.row) {
435
+ return lodash.map(columns.value, function (item) {
436
+ return pro.getFormItemEl(formElementMap, item, props.needRules);
261
437
  });
262
438
  }
263
- }, formState); //转换为ref对象
264
439
 
265
- var readonly = vue.computed(function () {
266
- return props.readonly;
267
- });
268
- provideProForm(_objectSpread2({
269
- formRef: form,
270
- formState: formState,
271
- showState: showState,
272
- readonlyState: readonlyState,
273
- disableState: disableState,
274
- //
275
- elementMap: props.elementMap,
276
- //
277
- readonly: readonly
278
- }, props.provideExtra));
279
-
280
- var formRef = function formRef(el) {
440
+ return vue.createVNode(ProGrid, {
441
+ "row": props.row,
442
+ "col": props.col,
443
+ "items": lodash.map(columns.value, function (item) {
444
+ var vNode = pro.getFormItemEl(formElementMap, item, props.needRules);
445
+ return {
446
+ rowKey: pro.getColumnFormItemName(item),
447
+ vNode: vNode,
448
+ col: lodash.get(item, ["extra", "col"])
449
+ };
450
+ })
451
+ }, null);
452
+ };
453
+ }
454
+ });
455
+ var ProForm = vue.defineComponent({
456
+ inheritAttrs: false,
457
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, elementPlus.ElForm.props), lodash.omit(pro.ProForm.props, "model")), lodash.omit(ProGrid.props, "items")),
458
+ setup: function setup(props, _ref2) {
459
+ var slots = _ref2.slots,
460
+ expose = _ref2.expose,
461
+ emit = _ref2.emit,
462
+ attrs = _ref2.attrs;
463
+ var formRef = vue.ref();
464
+ var formState = props.model || vue.reactive({});
465
+ var showState = props.showState || vue.reactive({});
466
+
467
+ var handleRef = function handleRef(el) {
281
468
  var nexEl = _objectSpread2(_objectSpread2({}, el), {}, {
282
469
  submit: function submit() {
283
470
  var _el$validate;
@@ -286,7 +473,7 @@ var ProForm = vue.defineComponent({
286
473
  if (isValid) {
287
474
  //验证成功
288
475
  //删除不显示的值再触发事件
289
- var _showValues = getValidValues(formState, showState, props.showStateRules);
476
+ var _showValues = pro.getValidValues(formState, showState, props.showStateRules);
290
477
 
291
478
  emit("finish", _showValues, vue.toRaw(formState));
292
479
  } else {
@@ -297,440 +484,96 @@ var ProForm = vue.defineComponent({
297
484
  });
298
485
 
299
486
  expose(nexEl);
300
- form.value = nexEl;
487
+ formRef.value = nexEl;
301
488
  };
302
489
 
303
- var invalidKeys = lodash.keys(proFormProps());
490
+ var originKeys = lodash.keys(lodash.omit(pro.ProForm.props, "model"));
491
+ var gridKeys = lodash.keys(ProGrid.props);
304
492
  return function () {
305
- return vue.createVNode(elementPlus.ElForm, vue.mergeProps({
306
- "ref": formRef
307
- }, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["model"])), {
308
- "model": formState
309
- }), slots);
493
+ var _slots$top, _slots$default;
494
+
495
+ return vue.createVNode(pro.ProForm, vue.mergeProps(lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
496
+ "model": formState,
497
+ "showState": showState,
498
+ "provideExtra": _objectSpread2({
499
+ formRef: formRef
500
+ }, props.provideExtra)
501
+ }), {
502
+ "default": function _default() {
503
+ return [vue.createVNode(elementPlus.ElForm, vue.mergeProps({
504
+ "ref": handleRef
505
+ }, attrs, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["model"], _toConsumableArray(gridKeys))), {
506
+ "model": formState
507
+ }), {
508
+ "default": function _default() {
509
+ return [(_slots$top = slots.top) === null || _slots$top === void 0 ? void 0 : _slots$top.call(slots), vue.createVNode(Content, vue.mergeProps(lodash.pick(props, gridKeys), {
510
+ "needRules": props.needRules
511
+ }), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
512
+ }
513
+ })];
514
+ }
515
+ });
310
516
  };
311
517
  }
312
518
  });
313
519
 
314
- var ProModuleKey = Symbol("pro-module");
315
- var useProModule = function useProModule() {
316
- return vue.inject(ProModuleKey);
317
- };
318
- var provideProModule = function provideProModule(ctx) {
319
- vue.provide(ProModuleKey, ctx);
320
- };
321
-
322
- /**
323
- * 获取Column的valueType,默认"text"
324
- * @param column
325
- */
326
-
327
- var getColumnValueType = function getColumnValueType(column) {
328
- return column.formValueType || column.valueType || "text";
329
- };
330
- /**
331
- *获取Column的FormItem name
332
- * @param column
333
- */
520
+ var ProSearchForm = vue.defineComponent({
521
+ inheritAttrs: false,
522
+ props: _objectSpread2(_objectSpread2(_objectSpread2({}, lodash.omit(ProForm.props, "inline")), lodash.omit(pro.ProSearchForm.props, "model", "columns")), {}, {
523
+ inline: {
524
+ type: Boolean,
525
+ "default": true
526
+ }
527
+ }),
528
+ setup: function setup(props, _ref) {
529
+ var slots = _ref.slots,
530
+ attrs = _ref.attrs;
531
+ var formRef = vue.ref();
532
+ var formState = props.model || vue.reactive({});
533
+ var originKeys = lodash.keys(lodash.omit(pro.ProSearchForm.props, "model", "columns"));
534
+ return function () {
535
+ return vue.createVNode(vue.Fragment, null, [vue.createVNode(ProForm, vue.mergeProps({
536
+ "ref": formRef
537
+ }, attrs, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["needRules", "model"])), {
538
+ "model": formState,
539
+ "needRules": false
540
+ }), slots), vue.createVNode(pro.ProSearchForm, vue.mergeProps(lodash.pick(props, originKeys), {
541
+ "model": formState,
542
+ "columns": props.columns,
543
+ "onFinish": function onFinish() {
544
+ var _formRef$value;
545
+
546
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
547
+ }
548
+ }), null)]);
549
+ };
550
+ }
551
+ });
334
552
 
335
- var getColumnFormItemName = function getColumnFormItemName(column) {
336
- var _column$formItemProps;
553
+ var createFormItemComponent = pro.createFormItemCompFn(ProFormItem, function (value, setValue, disabled) {
554
+ return {
555
+ modelValue: value,
556
+ "onUpdate:modelValue": setValue,
557
+ clearable: true,
558
+ disabled: disabled
559
+ };
560
+ });
337
561
 
338
- return ((_column$formItemProps = column.formItemProps) === null || _column$formItemProps === void 0 ? void 0 : _column$formItemProps.name) || column.dataIndex;
562
+ var proSelectProps = function proSelectProps() {
563
+ return {
564
+ options: Array
565
+ };
339
566
  };
340
- /**
341
- * 根据Column生成FormItem VNode
342
- * formFieldProps中的slots参数会以v-slots的形式传递到FormItem的录入组件(子组件)中
343
- * @param formElementMap
344
- * @param column
345
- * @param needRules
346
- */
347
567
 
348
- var getFormItemEl = function getFormItemEl(formElementMap, column) {
349
- var _column$formFieldProp;
350
-
351
- var needRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
352
- var valueType = getColumnValueType(column);
353
- var Comp = lodash.get(formElementMap, valueType);
354
-
355
- if (!Comp) {
356
- return null;
357
- }
358
-
359
- var name = getColumnFormItemName(column);
360
- var itemProps = needRules ? column.formItemProps : lodash.omit(column.formItemProps, "rules");
361
- return vue.createVNode(Comp, vue.mergeProps({
362
- "key": name,
363
- "name": name,
364
- "label": column.title
365
- }, itemProps, {
366
- "fieldProps": lodash.omit(column.formFieldProps, "slots"),
367
- "showProps": column.showProps
368
- }), (_column$formFieldProp = column.formFieldProps) === null || _column$formFieldProp === void 0 ? void 0 : _column$formFieldProp.slots);
369
- };
370
- /**
371
- * 根据Column生成Item VNode
372
- * @param elementMap
373
- * @param column
374
- * @param value
375
- */
376
-
377
- var getItemEl = function getItemEl(elementMap, column, value) {
378
- var _column$formFieldProp2;
379
-
380
- var valueType = column.valueType || "text";
381
- var Comp = lodash.get(elementMap, valueType);
382
-
383
- if (!Comp) {
384
- return null;
385
- }
386
-
387
- return vue.createVNode(Comp, vue.mergeProps(lodash.omit(column.formFieldProps, "slots"), {
388
- "showProps": column.showProps,
389
- "value": value
390
- }), (_column$formFieldProp2 = column.formFieldProps) === null || _column$formFieldProp2 === void 0 ? void 0 : _column$formFieldProp2.slots);
391
- };
392
-
393
- var proModuleProps = function proModuleProps() {
394
- return {
395
- /**
396
- * 配置(静态)
397
- */
398
- columns: {
399
- type: Array
400
- },
401
-
402
- /**
403
- * 配置(动态)
404
- * columns动态属性兼容
405
- */
406
- columnState: {
407
- type: Object
408
- },
409
-
410
- /**
411
- * 展示组件集
412
- */
413
- elementMap: {
414
- type: Object
415
- },
416
-
417
- /**
418
- * 录入组件集
419
- */
420
- formElementMap: {
421
- type: Object
422
- }
423
- };
424
- };
425
-
426
- var ProModule = vue.defineComponent({
427
- name: "PModule",
428
- props: _objectSpread2({}, proModuleProps()),
429
- setup: function setup(props, _ref) {
430
- var slots = _ref.slots;
431
-
432
- /**
433
- * columns columnState 合并
434
- */
435
- var columns = vue.computed(function () {
436
- return lodash.map(props.columns, function (item) {
437
- //如果columnState中有值,merge处理
438
- var mapData = lodash.get(props.columnState, getColumnFormItemName(item));
439
-
440
- if (lodash.isObject(mapData) && !lodash.isEmpty(mapData) && !lodash.isArray(mapData) && !lodash.isFunction(mapData)) {
441
- //合并
442
- return lodash.mergeWith(item, mapData, function (objValue, srcValue) {
443
- //如果是数组,替换
444
- if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
445
- return srcValue;
446
- }
447
- });
448
- }
449
-
450
- return item;
451
- });
452
- }); // 获取FormItem VNode
453
-
454
- var getFormItemVNode = function getFormItemVNode(column) {
455
- var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
456
- return getFormItemEl(props.formElementMap, column, needRules);
457
- }; // 获取Item VNode
458
-
459
-
460
- var getItemVNode = function getItemVNode(column, value) {
461
- return getItemEl(props.elementMap, column, value);
462
- };
463
-
464
- provideProModule({
465
- columns: columns,
466
- getFormItemVNode: getFormItemVNode,
467
- getItemVNode: getItemVNode,
468
- elementMap: props.elementMap,
469
- formElementMap: props.formElementMap
470
- });
471
- return function () {
472
- var _slots$default;
473
-
474
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
475
- };
476
- }
477
- });
478
-
479
- var proSchemaFormProps = function proSchemaFormProps() {
480
- return {
481
- columns: {
482
- type: Array
483
- },
484
-
485
- /**
486
- * 录入控件集合,通过column->valueType 查找对应的录入组件
487
- */
488
- formElementMap: {
489
- type: Object
490
- },
491
-
492
- /**
493
- * 是否启用rules验证
494
- */
495
- needRules: {
496
- type: Boolean,
497
- "default": true
498
- }
499
- };
500
- };
501
-
502
- var ProSchemaForm = vue.defineComponent({
503
- name: "PSchemaForm",
504
- props: _objectSpread2(_objectSpread2({}, ProForm.props), proSchemaFormProps()),
505
- setup: function setup(props, _ref) {
506
- var slots = _ref.slots,
507
- expose = _ref.expose;
508
- var formItemList = vue.computed(function () {
509
- if (!props.formElementMap || lodash.size(props.formElementMap) <= 0) {
510
- return null;
511
- }
512
-
513
- return lodash.map(props.columns, function (item) {
514
- return getFormItemEl(props.formElementMap, item, props.needRules);
515
- });
516
- });
517
- var invalidKeys = lodash.keys(proSchemaFormProps());
518
- return function () {
519
- var _slots$default;
520
-
521
- return vue.createVNode(ProForm, vue.mergeProps({
522
- "ref": function ref(el) {
523
- return expose(el);
524
- }
525
- }, lodash.omit(props, invalidKeys)), {
526
- "default": function _default() {
527
- return [formItemList.value, (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
528
- }
529
- });
530
- };
531
- }
532
- });
533
-
534
- exports.SearchMode = void 0;
535
-
536
- (function (SearchMode) {
537
- SearchMode["AUTO"] = "AUTO";
538
- SearchMode["MANUAL"] = "MANUAL";
539
- })(exports.SearchMode || (exports.SearchMode = {}));
540
-
541
- var proSearchFormProps = function proSearchFormProps() {
542
- return {
543
- /**
544
- * 初始化触发 onFinish
545
- */
546
- initEmit: {
547
- type: Boolean,
548
- "default": true
549
- },
550
-
551
- /**
552
- * 模式 自动触发或者手动触发 onFinish
553
- */
554
- searchMode: {
555
- type: String,
556
- "default": exports.SearchMode.AUTO
557
- },
558
-
559
- /**
560
- * 需要debounce处理的字段
561
- */
562
- debounceKeys: {
563
- type: Array
564
- },
565
- debounceTime: {
566
- type: Number,
567
- "default": 800
568
- },
569
- //
570
- inline: {
571
- type: Boolean,
572
- "default": true
573
- }
574
- };
575
- };
576
-
577
- var ProSearchForm = vue.defineComponent({
578
- name: "PSearchForm",
579
- props: _objectSpread2(_objectSpread2({}, lodash.omit(ProSchemaForm.props, "inline")), proSearchFormProps()),
580
- setup: function setup(props, _ref) {
581
- var slots = _ref.slots,
582
- emit = _ref.emit,
583
- expose = _ref.expose;
584
- var formState = props.model || vue.reactive({});
585
-
586
- var handleFinish = function handleFinish() {
587
- var values = vue.toRaw(formState);
588
- var showValues = getValidValues(values, props.showState, props.showStateRules);
589
- emit("finish", showValues, values);
590
- };
591
-
592
- var debounceFinish = lodash.debounce(function () {
593
- handleFinish();
594
- }, props.debounceTime); //初始化
595
-
596
- hooks.useEffect(function () {
597
- if (props.initEmit) {
598
- handleFinish();
599
- }
600
- }, []);
601
-
602
- var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
603
- return lodash.some(debounceKeys, function (key) {
604
- return lodash.get(state, key) !== lodash.get(prevState, key);
605
- });
606
- }; //监听
607
-
608
-
609
- hooks.useEffect(function (state, prevState) {
610
- if (props.searchMode !== exports.SearchMode.AUTO) {
611
- return;
612
- } //如果改变的值中包括debounceKeys中注册的 延时触发
613
-
614
-
615
- if (props.debounceKeys && lodash.size(props.debounceKeys) > 0 && isDebounceDataChange(state, prevState, props.debounceKeys)) {
616
- debounceFinish();
617
- return;
618
- }
619
-
620
- handleFinish();
621
- }, function () {
622
- return lodash.clone(formState);
623
- });
624
- var invalidKeys = lodash.keys(proSearchFormProps());
625
- return function () {
626
- return vue.createVNode(ProSchemaForm, vue.mergeProps({
627
- "ref": function ref(el) {
628
- return expose(el);
629
- },
630
- "inline": props.inline
631
- }, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["model"])), {
632
- "needRules": false,
633
- "model": formState
634
- }), slots);
635
- };
636
- }
637
- });
638
-
639
- var proFormItemProps = function proFormItemProps() {
640
- return {
641
- readonly: {
642
- type: Boolean,
643
- "default": undefined
644
- },
645
- fieldProps: {
646
- type: Object
647
- },
648
- showProps: {
649
- type: Object
650
- }
651
- };
652
- };
653
-
654
- var createFormItemComponent = function createFormItemComponent(_ref) {
655
- var InputComp = _ref.InputComp,
656
- valueType = _ref.valueType,
657
- name = _ref.name;
658
- return vue.defineComponent({
659
- name: name,
660
- props: _objectSpread2(_objectSpread2({}, ProFormItem.props), proFormItemProps()),
661
- setup: function setup(props, _ref2) {
662
- var slots = _ref2.slots;
663
-
664
- var _useProForm = useProForm(),
665
- formState = _useProForm.formState,
666
- showState = _useProForm.showState,
667
- readonlyState = _useProForm.readonlyState,
668
- disableState = _useProForm.disableState,
669
- formReadonly = _useProForm.readonly,
670
- elementMap = _useProForm.elementMap;
671
-
672
- var formListCtx = useProFormList(); //优先级 props.readonly > readonlyState > formContext.readonly
673
-
674
- var readonly = vue.computed(function () {
675
- if (lodash.isBoolean(props.readonly)) {
676
- return props.readonly;
677
- } else if (lodash.isBoolean(readonlyState[props.name])) {
678
- return readonlyState[props.name];
679
- }
680
-
681
- return formReadonly.value;
682
- });
683
- var nameList = convertPathToList(props.name);
684
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
685
- var invalidKeys = lodash.keys(proFormItemProps());
686
- return function () {
687
- var show = lodash.get(showState, props.name);
688
-
689
- if (lodash.isBoolean(show) && !show) {
690
- return null;
691
- }
692
-
693
- var value = lodash.get(formState, path); //valueType对应的展示组件
694
-
695
- var ShowComp = lodash.get(elementMap, valueType);
696
- return vue.createVNode(ProFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name"])), {
697
- "name": path
698
- }), {
699
- "default": function _default() {
700
- return [readonly.value ? vue.createVNode(vue.Fragment, null, [ShowComp ? vue.createVNode(ShowComp, vue.mergeProps({
701
- "value": value
702
- }, props.fieldProps, {
703
- "showProps": props.showProps
704
- }), slots) : vue.createVNode("span", null, [value])]) : vue.createVNode(InputComp, vue.mergeProps({
705
- "modelValue": value,
706
- "onUpdate:modelValue": function onUpdateModelValue(v) {
707
- lodash.set(formState, path, v);
708
- },
709
- "clearable": true,
710
- "disabled": lodash.get(disableState, props.name)
711
- }, props.fieldProps), slots)];
712
- }
713
- });
714
- };
715
- }
716
- });
717
- };
718
-
719
- var proSelectProps = function proSelectProps() {
720
- return {
721
- options: Array
722
- };
723
- };
724
-
725
- var ProSelect = vue.defineComponent({
726
- name: "PSelect",
727
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElSelect.props), proSelectProps()),
728
- setup: function setup(props, _ref) {
729
- var slots = _ref.slots,
730
- emit = _ref.emit;
731
- var invalidKeys = lodash.keys(proSelectProps());
732
- return function () {
733
- var _slots$default;
568
+ var ProSelect = vue.defineComponent({
569
+ name: "PSelect",
570
+ props: _objectSpread2(_objectSpread2({}, elementPlus.ElSelect.props), proSelectProps()),
571
+ setup: function setup(props, _ref) {
572
+ var slots = _ref.slots,
573
+ emit = _ref.emit;
574
+ var invalidKeys = lodash.keys(proSelectProps());
575
+ return function () {
576
+ var _slots$default;
734
577
 
735
578
  return vue.createVNode(elementPlus.ElSelect, vue.mergeProps(lodash.omit(props, invalidKeys), {
736
579
  "onUpdate:modelValue": function onUpdateModelValue(v) {
@@ -765,720 +608,117 @@ var ProFormDatePicker = createFormItemComponent({
765
608
  name: "PFormDate"
766
609
  });
767
610
  var ProFormTimePicker = createFormItemComponent({
768
- InputComp: elementPlus.ElTimePicker,
769
- valueType: "time",
770
- name: "PFormTime"
771
- });
772
- var ProFormSelect = createFormItemComponent({
773
- InputComp: ProSelect,
774
- valueType: "select",
775
- name: "PFormSelect"
776
- });
777
- var ProFormTreeSelect = createFormItemComponent({
778
- InputComp: elementPlus.ElTreeSelect,
779
- valueType: "treeSelect",
780
- name: "PFormTreeSelect"
781
- });
782
- var ProFormCheckbox = createFormItemComponent({
783
- InputComp: elementPlus.ElCheckboxGroup,
784
- valueType: "checkbox",
785
- name: "PFromCheckbox"
786
- });
787
- var ProFormRadio = createFormItemComponent({
788
- InputComp: elementPlus.ElRadioGroup,
789
- valueType: "radio",
790
- name: "PFromRadio"
791
- });
792
- var ProFormSwitch = createFormItemComponent({
793
- InputComp: elementPlus.ElSwitch,
794
- valueType: "switch",
795
- name: "PFromSwitch"
796
- });
797
- var ProFormCascader = createFormItemComponent({
798
- InputComp: elementPlus.ElCascader,
799
- valueType: "cascader",
800
- name: "PFormCascader"
801
- });
802
- var ProSubmitButton = vue.defineComponent({
803
- props: _objectSpread2({}, elementPlus.ElButton.props),
804
- setup: function setup(props, _ref) {
805
- var slots = _ref.slots,
806
- emit = _ref.emit;
807
-
808
- var _useProForm = useProForm(),
809
- formRef = _useProForm.formRef;
810
-
811
- var handleClick = function handleClick(e) {
812
- var _formRef$value, _formRef$value$submit;
813
-
814
- emit("click", e);
815
- (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : (_formRef$value$submit = _formRef$value.submit) === null || _formRef$value$submit === void 0 ? void 0 : _formRef$value$submit.call(_formRef$value);
816
- };
817
-
818
- return function () {
819
- return vue.createVNode(elementPlus.ElButton, vue.mergeProps({
820
- "onClick": handleClick
821
- }, props), slots);
822
- };
823
- }
824
- });
825
-
826
- var FormListProvider = vue.defineComponent({
827
- props: {
828
- pathList: {
829
- type: Array
830
- }
831
- },
832
- setup: function setup(props, _ref) {
833
- var slots = _ref.slots;
834
- provideProFormList({
835
- pathList: props.pathList
836
- });
837
- return function () {
838
- var _slots$default;
839
-
840
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
841
- };
842
- }
843
- });
844
-
845
- var proFormListProps = function proFormListProps() {
846
- return {
847
- addButtonText: {
848
- type: String,
849
- "default": "添加一项"
850
- },
851
- addButtonProps: {
852
- type: Object
853
- },
854
- //每行默认id
855
- rowKey: {
856
- type: String,
857
- "default": "id"
858
- }
859
- };
860
- };
861
-
862
- var ProFormList = vue.defineComponent({
863
- name: "PFormList",
864
- props: _objectSpread2(_objectSpread2({}, ProFormItem.props), proFormListProps()),
865
- setup: function setup(props, _ref2) {
866
- var slots = _ref2.slots;
867
-
868
- var _useProForm = useProForm(),
869
- formState = _useProForm.formState,
870
- readonly = _useProForm.readonly;
871
-
872
- var formListCtx = useProFormList();
873
- var nameList = convertPathToList(props.prop);
874
- var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
875
-
876
- var handleAdd = function handleAdd() {
877
- var targetList = lodash.get(formState, path);
878
-
879
- if (!lodash.isArray(targetList)) {
880
- targetList = [];
881
- }
882
-
883
- targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
884
- lodash.set(formState, path, targetList);
885
- };
886
-
887
- var handleRemove = function handleRemove(index) {
888
- var targetList = lodash.get(formState, path);
889
-
890
- if (lodash.size(targetList) <= 0) {
891
- return;
892
- }
893
-
894
- targetList.splice(index, 1);
895
- };
896
-
897
- var invalidKeys = lodash.keys(proFormListProps());
898
- return function () {
899
- return vue.createVNode(ProFormItem, lodash.omit(props, invalidKeys), {
900
- "default": function _default() {
901
- return [lodash.map(lodash.get(formState, path), function (item, index) {
902
- var _slots$default2;
903
-
904
- return vue.createVNode(FormListProvider, {
905
- "key": index,
906
- "pathList": [].concat(_toConsumableArray(path), [index])
907
- }, {
908
- "default": function _default() {
909
- return [vue.createVNode("div", {
910
- "class": "pro-form-list-item"
911
- }, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && vue.createVNode("div", {
912
- "class": "pro-form-list-item-minus",
913
- "onClick": function onClick() {
914
- return handleRemove(index);
915
- }
916
- }, [slots.minus ? slots.minus() : vue.createVNode(elementPlus.ElButton, {
917
- "link": true
918
- }, {
919
- "default": function _default() {
920
- return [vue.createTextVNode("\u5220\u9664")];
921
- }
922
- })])])];
923
- }
924
- });
925
- }), !readonly.value && vue.createVNode("div", {
926
- "class": "pro-form-list-item-add",
927
- "onClick": handleAdd
928
- }, [slots.add ? slots.add() : vue.createVNode(elementPlus.ElButton, vue.mergeProps({
929
- "type": "primary"
930
- }, props.addButtonProps), {
931
- "default": function _default() {
932
- return [props.addButtonText];
933
- }
934
- })])];
935
- }
936
- });
937
- };
938
- }
939
- });
940
-
941
- var proTableProps = function proTableProps() {
942
- return {
943
- //操作栏
944
- operate: {
945
- type: Object
946
- },
947
- //默认空字符串
948
- columnEmptyText: {
949
- type: String
950
- },
951
-
952
- /**
953
- * 公共column,会merge到columns item中
954
- */
955
- column: {
956
- type: Object
957
- },
958
- //
959
- columns: {
960
- type: Array
961
- },
962
-
963
- /**
964
- * 展示控件集合,readonly模式下使用这些组件渲染
965
- */
966
- elementMap: {
967
- type: Object
968
- }
969
- };
970
- };
971
-
972
- var ProTable = vue.defineComponent({
973
- props: _objectSpread2(_objectSpread2({}, elementPlus.ElTable.props), proTableProps()),
974
- setup: function setup(props, _ref) {
975
- var slots = _ref.slots,
976
- expose = _ref.expose;
977
- var columns = vue.computed(function () {
978
- //根据valueType选择对应的展示组件
979
- var columns = lodash.map(props.columns, function (item) {
980
- //merge从共item
981
- var nextItem = lodash.merge(props.column, item);
982
-
983
- if (!item.customRender || !item.formatter) {
984
- nextItem.customRender = function (_ref2) {
985
- var text = _ref2.text;
986
- return getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
987
- showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
988
- content: props.columnEmptyText
989
- })
990
- }), text) || text || props.columnEmptyText;
991
- };
992
- }
993
-
994
- return nextItem;
995
- });
996
- var operate = props.operate; //处理operate
997
-
998
- if (operate && lodash.size(operate.items) > 0) {
999
- //将itemState补充的信息拼到item中
1000
- var completeItems = lodash.map(operate.items, function (i) {
1001
- return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
1002
- }); //排序
1003
-
1004
- var operateList = lodash.sortBy(completeItems, function (item) {
1005
- return item.sort;
1006
- });
1007
- columns.push(_objectSpread2(_objectSpread2({
1008
- title: "操作",
1009
- valueType: "option",
1010
- fixed: "right"
1011
- }, props.column), {}, {
1012
- customRender: function customRender(_ref3) {
1013
- var record = _ref3.record;
1014
- var validList = lodash.filter(operateList, function (item) {
1015
- if (item.show && lodash.isFunction(item.show)) {
1016
- return item.show(record);
1017
- }
1018
-
1019
- return true;
1020
- });
1021
- return vue.createVNode("div", {
1022
- "class": "pro-table-operate"
1023
- }, [lodash.map(validList, function (item) {
1024
- // 自定义
1025
- if (lodash.isFunction(item.element)) {
1026
- return item.element(record, item);
1027
- }
1028
-
1029
- return vue.createVNode(elementPlus.ElButton, {
1030
- "key": item.value,
1031
- "link": true,
1032
- "disabled": lodash.isFunction(item.disabled) ? item.disabled(record) : item.disabled,
1033
- "onClick": function onClick() {
1034
- var _item$onClick;
1035
-
1036
- (_item$onClick = item.onClick) === null || _item$onClick === void 0 ? void 0 : _item$onClick.call(item, record);
1037
- }
1038
- }, {
1039
- "default": function _default() {
1040
- return [item.label];
1041
- }
1042
- });
1043
- })]);
1044
- }
1045
- }, operate.column));
1046
- }
1047
-
1048
- return columns;
1049
- });
1050
- var invalidKeys = lodash.keys(proTableProps());
1051
- return function () {
1052
- var _slots$default;
1053
-
1054
- return vue.createVNode(elementPlus.ElTable, vue.mergeProps({
1055
- "ref": function ref(el) {
1056
- expose(el);
1057
- }
1058
- }, lodash.omit(props, invalidKeys)), _objectSpread2({
1059
- "default": function _default() {
1060
- return [lodash.map(columns.value, function (item) {
1061
- var formatter = function formatter(record, column, value, index) {
1062
- if (item.formatter) {
1063
- return item.formatter(record, column, value, index);
1064
- }
1065
-
1066
- if (item.customRender) {
1067
- return item.customRender({
1068
- value: value,
1069
- text: value,
1070
- record: record,
1071
- column: column
1072
- });
1073
- }
1074
-
1075
- return null;
1076
- };
1077
-
1078
- return vue.createVNode(elementPlus.ElTableColumn, vue.mergeProps({
1079
- "key": item.dataIndex || item.prop
1080
- }, lodash.omit(item, "title", "label", "renderHeader", "prop", "dataIndex", "formatter", "customRender"), {
1081
- "label": vue.isVNode(item.title) ? undefined : item.title || item.label,
1082
- "renderHeader": vue.isVNode(item.title) ? function () {
1083
- return item.title;
1084
- } : undefined,
1085
- "prop": item.dataIndex || item.prop,
1086
- "formatter": item.formatter || item.customRender ? formatter : undefined
1087
- }), null);
1088
- }), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1089
- }
1090
- }, lodash.omit(slots, "default")));
1091
- };
1092
- }
1093
- });
1094
-
1095
- var ProCurdModuleKey = Symbol("pro-curd-module");
1096
- var useProCurdModule = function useProCurdModule() {
1097
- return vue.inject(ProCurdModuleKey);
1098
- };
1099
- var provideProCurdModule = function provideProCurdModule(ctx) {
1100
- vue.provide(ProCurdModuleKey, ctx);
1101
- };
1102
-
1103
- /**
1104
- * curd 操作模式
1105
- */
1106
- exports.CurdCurrentMode = void 0;
1107
-
1108
- (function (CurdCurrentMode) {
1109
- CurdCurrentMode["ADD"] = "ADD";
1110
- CurdCurrentMode["EDIT"] = "EDIT";
1111
- CurdCurrentMode["DETAIL"] = "DETAIL";
1112
- })(exports.CurdCurrentMode || (exports.CurdCurrentMode = {}));
1113
-
1114
- /**
1115
- * curd add 模式下 标记 "确定" "确定并继续" 触发
1116
- */
1117
- exports.CurdAddAction = void 0;
1118
-
1119
- (function (CurdAddAction) {
1120
- CurdAddAction["NORMAL"] = "NORMAL";
1121
- CurdAddAction["CONTINUE"] = "CONTINUE";
1122
- })(exports.CurdAddAction || (exports.CurdAddAction = {}));
1123
-
1124
- var proCurdModuleProps = function proCurdModuleProps() {
1125
- return {
1126
- /**
1127
- * 状态
1128
- */
1129
- curdState: {
1130
- type: Object
1131
- },
1132
-
1133
- /**
1134
- * 操作配置
1135
- */
1136
- operate: {
1137
- type: Object
1138
- },
1139
-
1140
- /**
1141
- * 列表 或 详情 的唯一标识
1142
- */
1143
- rowKey: {
1144
- type: String,
1145
- "default": "id"
1146
- },
1147
-
1148
- /************************* 子组件props *******************************/
1149
- listProps: {
1150
- type: Object
1151
- },
1152
- formProps: {
1153
- type: Object
1154
- },
1155
- descProps: {
1156
- type: Object
1157
- },
1158
- modalProps: {
1159
- type: Object
1160
- }
1161
- };
1162
- };
1163
-
1164
- var CurdModule = vue.defineComponent({
1165
- props: _objectSpread2({}, proCurdModuleProps()),
611
+ InputComp: elementPlus.ElTimePicker,
612
+ valueType: "time",
613
+ name: "PFormTime"
614
+ });
615
+ var ProFormSelect = createFormItemComponent({
616
+ InputComp: ProSelect,
617
+ valueType: "select",
618
+ name: "PFormSelect"
619
+ });
620
+ var ProFormTreeSelect = createFormItemComponent({
621
+ InputComp: elementPlus.ElTreeSelect,
622
+ valueType: "treeSelect",
623
+ name: "PFormTreeSelect"
624
+ });
625
+ var ProFormCheckbox = createFormItemComponent({
626
+ InputComp: elementPlus.ElCheckboxGroup,
627
+ valueType: "checkbox",
628
+ name: "PFromCheckbox"
629
+ });
630
+ var ProFormRadio = createFormItemComponent({
631
+ InputComp: elementPlus.ElRadioGroup,
632
+ valueType: "radio",
633
+ name: "PFromRadio"
634
+ });
635
+ var ProFormSwitch = createFormItemComponent({
636
+ InputComp: elementPlus.ElSwitch,
637
+ valueType: "switch",
638
+ name: "PFromSwitch"
639
+ });
640
+ var ProFormCascader = createFormItemComponent({
641
+ InputComp: elementPlus.ElCascader,
642
+ valueType: "cascader",
643
+ name: "PFormCascader"
644
+ });
645
+ var ProSubmitButton = vue.defineComponent({
646
+ props: _objectSpread2({}, elementPlus.ElButton.props),
1166
647
  setup: function setup(props, _ref) {
1167
- var slots = _ref.slots;
648
+ var slots = _ref.slots,
649
+ emit = _ref.emit;
1168
650
 
1169
- var _useProModule = useProModule(),
1170
- columns = _useProModule.columns;
651
+ var _useProForm = pro.useProForm(),
652
+ formRef = _useProForm.formRef;
1171
653
 
1172
- var curdState = props.curdState || vue.reactive({
1173
- detailData: {}
1174
- });
1175
- /**
1176
- * 排序
1177
- * @param list
1178
- * @param propName
1179
- */
654
+ var handleClick = function handleClick(e) {
655
+ var _formRef$value, _formRef$value$submit;
1180
656
 
1181
- var dealSort = function dealSort(list, propName) {
1182
- return lodash.sortBy(list, function (item) {
1183
- return lodash.get(item, propName);
1184
- });
657
+ emit("click", e);
658
+ (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : (_formRef$value$submit = _formRef$value.submit) === null || _formRef$value$submit === void 0 ? void 0 : _formRef$value$submit.call(_formRef$value);
1185
659
  };
1186
- /**
1187
- * 非 hideInForm columns
1188
- */
1189
-
1190
-
1191
- var formColumns = vue.computed(function () {
1192
- return dealSort(lodash.filter(columns.value, function (item) {
1193
- return !item.hideInForm;
1194
- }), "formSort");
1195
- });
1196
- /**
1197
- * 非 hideInDetail columns
1198
- */
1199
-
1200
- var descColumns = vue.computed(function () {
1201
- return dealSort(lodash.filter(columns.value, function (item) {
1202
- return !item.hideInDetail;
1203
- }), "descSort");
1204
- });
1205
- /**
1206
- * 非 hideInTable columns
1207
- */
1208
-
1209
- var tableColumns = vue.computed(function () {
1210
- return dealSort(lodash.filter(columns.value, function (item) {
1211
- return !item.hideInTable;
1212
- }), "tableSort");
1213
- });
1214
- /**
1215
- * search columns
1216
- */
1217
-
1218
- var searchColumns = vue.computed(function () {
1219
- return dealSort(lodash.filter(columns.value, function (item) {
1220
- return !!item.search;
1221
- }), "searchSort");
1222
- });
1223
-
1224
- var operate = _objectSpread2({
1225
- detailLabel: "详情",
1226
- editLabel: "编辑",
1227
- addLabel: "添加",
1228
- deleteLabel: "删除"
1229
- }, props.operate);
1230
-
1231
- provideProCurdModule({
1232
- rowKey: props.rowKey,
1233
- curdState: curdState,
1234
- formColumns: formColumns,
1235
- descColumns: descColumns,
1236
- tableColumns: tableColumns,
1237
- searchColumns: searchColumns,
1238
- operate: operate,
1239
- //
1240
- listProps: props.listProps,
1241
- formProps: props.formProps,
1242
- descProps: props.descProps,
1243
- modalProps: props.modalProps
1244
- });
1245
- return function () {
1246
- var _slots$default;
1247
660
 
1248
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1249
- };
1250
- }
1251
- });
1252
- var ProCurd = vue.defineComponent({
1253
- props: _objectSpread2(_objectSpread2({}, ProModule.props), proCurdModuleProps()),
1254
- setup: function setup(props, _ref2) {
1255
- var slots = _ref2.slots;
1256
- var moduleKeys = lodash.keys(ProModule.props);
1257
661
  return function () {
1258
- var _slots$default2;
1259
-
1260
- return vue.createVNode(ProModule, lodash.pick(props, moduleKeys), {
1261
- "default": function _default() {
1262
- return [vue.createVNode(CurdModule, lodash.omit(props, moduleKeys), {
1263
- "default": function _default() {
1264
- return [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots)];
1265
- }
1266
- })];
1267
- }
1268
- });
662
+ return vue.createVNode(elementPlus.ElButton, vue.mergeProps({
663
+ "onClick": handleClick
664
+ }, props), slots);
1269
665
  };
1270
666
  }
1271
667
  });
1272
668
 
1273
- var proCurdNetProps = function proCurdNetProps() {
669
+ var proFormListProps = function proFormListProps() {
1274
670
  return {
1275
- //发起接口参数/接口回来数据 转换
1276
- converts: {
671
+ addButtonText: {
672
+ type: String,
673
+ "default": "添加一项"
674
+ },
675
+ addButtonProps: {
1277
676
  type: Object
1278
677
  },
1279
- //
1280
- operate: {
678
+ minusButtonText: {
679
+ type: String,
680
+ "default": "删除"
681
+ },
682
+ minusButtonProps: {
1281
683
  type: Object
1282
684
  }
1283
685
  };
1284
686
  };
1285
687
 
1286
- var ProCurdNet = vue.defineComponent({
1287
- props: _objectSpread2(_objectSpread2({}, ProCurd.props), proCurdNetProps()),
688
+ var ProFormList = vue.defineComponent({
689
+ name: "PFormList",
690
+ props: _objectSpread2(_objectSpread2({}, ProFormItem.props), proFormListProps()),
1288
691
  setup: function setup(props, _ref) {
1289
- var _actionConvertParamsM;
1290
-
1291
692
  var slots = _ref.slots;
1292
-
1293
- var _useRequestProvide = request.useRequestProvide(),
1294
- dispatchRequest = _useRequestProvide.dispatchRequest,
1295
- requestSubject$ = _useRequestProvide.requestSubject$;
1296
-
1297
- var curdState = props.curdState || vue.reactive({
1298
- detailData: {}
1299
- });
1300
- /********************************** 网络请求相关 ***************************************/
1301
- //默认converts
1302
-
1303
- var converts = _objectSpread2({
1304
- convertListParams: function convertListParams(values) {
1305
- return values;
1306
- },
1307
- convertListData: function convertListData(actor) {
1308
- var _actor$res;
1309
-
1310
- return (_actor$res = actor.res) === null || _actor$res === void 0 ? void 0 : _actor$res.data;
1311
- },
1312
- convertDetailParams: function convertDetailParams(record, rowKey) {
1313
- return lodash.pick(record, rowKey);
1314
- },
1315
- convertDetailData: function convertDetailData(actor) {
1316
- var _actor$res2;
1317
-
1318
- return (_actor$res2 = actor.res) === null || _actor$res2 === void 0 ? void 0 : _actor$res2.data;
1319
- },
1320
- convertAddParams: function convertAddParams(values, record) {
1321
- return {
1322
- body: _objectSpread2(_objectSpread2({}, record), values)
1323
- };
1324
- },
1325
- convertEditParams: function convertEditParams(values, record) {
1326
- return {
1327
- body: _objectSpread2(_objectSpread2({}, record), values)
1328
- };
1329
- }
1330
- }, props.converts);
1331
-
1332
- var Action = {
1333
- List: "list",
1334
- Detail: "detail",
1335
- Add: "add",
1336
- Edit: "edit",
1337
- Delete: "delete"
1338
- }; //接口map {`${actorName}`:action}
1339
-
1340
- var actorNameMap = {};
1341
- var lastRequestActors = {};
1342
- var actionConvertParamsMap = (_actionConvertParamsM = {}, _defineProperty(_actionConvertParamsM, Action.List, converts.convertListParams), _defineProperty(_actionConvertParamsM, Action.Detail, converts.convertDetailParams), _defineProperty(_actionConvertParamsM, Action.Add, converts.convertAddParams), _defineProperty(_actionConvertParamsM, Action.Edit, converts.convertEditParams), _defineProperty(_actionConvertParamsM, Action.Delete, converts.convertDeleteParams), _actionConvertParamsM);
1343
-
1344
- var createRequestFun = function createRequestFun(action) {
1345
- return function () {
1346
- var actor = lodash.get(props.operate, "".concat(action, "Actor"));
1347
-
1348
- if (!actor) {
1349
- return;
1350
- } // action he actorName 绑定
1351
-
1352
-
1353
- actorNameMap[actor.name] = action;
1354
- var convertParams = lodash.get(actionConvertParamsMap, action); // @ts-ignore
1355
-
1356
- var nextParams = convertParams ? convertParams.apply(void 0, arguments) : undefined;
1357
- lastRequestActors[action] = dispatchRequest(actor, nextParams);
1358
- };
1359
- };
1360
-
1361
- var actions = {
1362
- executeList: createRequestFun(Action.List),
1363
- executeDetail: createRequestFun(Action.Detail),
1364
- executeAdd: createRequestFun(Action.Add),
1365
- executeEdit: createRequestFun(Action.Edit),
1366
- executeDelete: createRequestFun(Action.Delete)
1367
- };
1368
- /********************************** operate ***************************************/
1369
-
1370
- var prevListParams;
1371
-
1372
- var handleSearch = function handleSearch() {
1373
- actions.executeList(prevListParams);
1374
- };
1375
-
1376
- var operate = _objectSpread2({
1377
- //list
1378
- onList: function onList(values) {
1379
- var _props$operate, _props$operate$onList;
1380
-
1381
- prevListParams = values;
1382
- handleSearch();
1383
- (_props$operate = props.operate) === null || _props$operate === void 0 ? void 0 : (_props$operate$onList = _props$operate.onListBubble) === null || _props$operate$onList === void 0 ? void 0 : _props$operate$onList.call(_props$operate, "emit", values);
1384
- },
1385
- onListDone: function onListDone(actor) {
1386
- var _converts$convertList, _props$operate2, _props$operate2$onLis;
1387
-
1388
- curdState.listLoading = false;
1389
- curdState.listData = (_converts$convertList = converts.convertListData) === null || _converts$convertList === void 0 ? void 0 : _converts$convertList.call(converts, actor);
1390
- (_props$operate2 = props.operate) === null || _props$operate2 === void 0 ? void 0 : (_props$operate2$onLis = _props$operate2.onListBubble) === null || _props$operate2$onLis === void 0 ? void 0 : _props$operate2$onLis.call(_props$operate2, "done", actor);
1391
- },
1392
- onListFail: function onListFail(actor) {
1393
- var _props$operate3, _props$operate3$onLis;
1394
-
1395
- curdState.listLoading = false;
1396
- (_props$operate3 = props.operate) === null || _props$operate3 === void 0 ? void 0 : (_props$operate3$onLis = _props$operate3.onListBubble) === null || _props$operate3$onLis === void 0 ? void 0 : _props$operate3$onLis.call(_props$operate3, "fail", actor);
1397
- },
1398
- //detail
1399
- onDetailDone: function onDetailDone(actor) {
1400
- var _converts$convertDeta, _props$operate4, _props$operate4$onDet;
1401
-
1402
- curdState.detailLoading = false;
1403
- hooks.setReactiveValue(curdState.detailData, (_converts$convertDeta = converts.convertDetailData) === null || _converts$convertDeta === void 0 ? void 0 : _converts$convertDeta.call(converts, actor));
1404
- (_props$operate4 = props.operate) === null || _props$operate4 === void 0 ? void 0 : (_props$operate4$onDet = _props$operate4.onDetailBubble) === null || _props$operate4$onDet === void 0 ? void 0 : _props$operate4$onDet.call(_props$operate4, "done", actor);
1405
- },
1406
- onDetailFail: function onDetailFail(actor) {
1407
- var _props$operate5, _props$operate5$onDet;
1408
-
1409
- curdState.detailLoading = false;
1410
- (_props$operate5 = props.operate) === null || _props$operate5 === void 0 ? void 0 : (_props$operate5$onDet = _props$operate5.onDetailBubble) === null || _props$operate5$onDet === void 0 ? void 0 : _props$operate5$onDet.call(_props$operate5, "fail", actor);
1411
- },
1412
- //add
1413
- onAddExecute: function onAddExecute(values) {
1414
- var _props$operate6, _props$operate6$onAdd;
1415
-
1416
- curdState.operateLoading = true;
1417
- actions.executeAdd(values, curdState.detailData);
1418
- (_props$operate6 = props.operate) === null || _props$operate6 === void 0 ? void 0 : (_props$operate6$onAdd = _props$operate6.onAddBubble) === null || _props$operate6$onAdd === void 0 ? void 0 : _props$operate6$onAdd.call(_props$operate6, "execute", values);
1419
- },
1420
- onAddFail: function onAddFail(actor) {
1421
- var _props$operate7, _props$operate7$onAdd;
1422
-
1423
- curdState.operateLoading = false;
1424
- (_props$operate7 = props.operate) === null || _props$operate7 === void 0 ? void 0 : (_props$operate7$onAdd = _props$operate7.onAddBubble) === null || _props$operate7$onAdd === void 0 ? void 0 : _props$operate7$onAdd.call(_props$operate7, "fail", actor);
1425
- },
1426
- //edit
1427
- onEditExecute: function onEditExecute(values) {
1428
- var _props$operate8, _props$operate8$onEdi;
1429
-
1430
- curdState.operateLoading = true;
1431
- actions.executeEdit(values, curdState.detailData);
1432
- (_props$operate8 = props.operate) === null || _props$operate8 === void 0 ? void 0 : (_props$operate8$onEdi = _props$operate8.onEditBubble) === null || _props$operate8$onEdi === void 0 ? void 0 : _props$operate8$onEdi.call(_props$operate8, "execute", values);
1433
- },
1434
- onEditFail: function onEditFail(actor) {
1435
- var _props$operate9, _props$operate9$onEdi;
1436
-
1437
- curdState.operateLoading = false;
1438
- (_props$operate9 = props.operate) === null || _props$operate9 === void 0 ? void 0 : (_props$operate9$onEdi = _props$operate9.onEditBubble) === null || _props$operate9$onEdi === void 0 ? void 0 : _props$operate9$onEdi.call(_props$operate9, "fail", actor);
1439
- },
1440
- //delete
1441
- onDelete: function onDelete(record) {
1442
- var _props$operate10, _props$operate10$onDe;
1443
-
1444
- actions.executeDelete(record, props.rowKey);
1445
- (_props$operate10 = props.operate) === null || _props$operate10 === void 0 ? void 0 : (_props$operate10$onDe = _props$operate10.onDeleteBubble) === null || _props$operate10$onDe === void 0 ? void 0 : _props$operate10$onDe.call(_props$operate10, "emit", record);
1446
- }
1447
- }, props.operate); //网络请求订阅
1448
-
1449
-
1450
- hooks.useEffect(function () {
1451
- //请求成功
1452
- var doneSub = requestSubject$.pipe(rxjs.filter(request.isDoneRequestActor), rxjs.tap(function (actor) {
1453
- var action = actorNameMap[actor.name];
1454
- var actionDone = lodash.get(operate, lodash.camelCase("on-".concat(action, "-done")));
1455
- actionDone === null || actionDone === void 0 ? void 0 : actionDone(actor);
1456
- lastRequestActors[action] = undefined;
1457
- })).subscribe(); //请求失败
1458
-
1459
- var failSub = requestSubject$.pipe(rxjs.filter(request.isFailedRequestActor), rxjs.tap(function (actor) {
1460
- var action = actorNameMap[actor.name];
1461
- var actionFail = lodash.get(operate, lodash.camelCase("on-".concat(action, "-fail")));
1462
- actionFail === null || actionFail === void 0 ? void 0 : actionFail(actor);
1463
- lastRequestActors[action] = undefined;
1464
- })).subscribe();
1465
- return function () {
1466
- doneSub.unsubscribe();
1467
- failSub.unsubscribe(); //组件销毁的时候cancel请求
1468
-
1469
- lodash.forEach(lastRequestActors, function (actor) {
1470
- actor && dispatchRequest(_objectSpread2(_objectSpread2({}, actor), {}, {
1471
- stage: "CANCEL"
1472
- }));
1473
- });
1474
- };
1475
- }, []);
693
+ var originKeys = lodash.keys(pro.ProFormList.props);
694
+ var invalidKeys = lodash.keys(proFormListProps());
1476
695
  return function () {
1477
- var _slots$default;
1478
-
1479
- return vue.createVNode(ProCurd, lodash.omit(props, "converts"), {
696
+ return vue.createVNode(ProFormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), _toConsumableArray(invalidKeys))), {
697
+ "name": props.name
698
+ }), {
1480
699
  "default": function _default() {
1481
- return [(_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
700
+ return [vue.createVNode(pro.ProFormList, vue.mergeProps(lodash.pick(props, originKeys), {
701
+ "name": props.name
702
+ }), _objectSpread2({
703
+ itemMinus: function itemMinus() {
704
+ return vue.createVNode(elementPlus.ElButton, vue.mergeProps({
705
+ "link": true
706
+ }, props.minusButtonProps), {
707
+ "default": function _default() {
708
+ return [props.minusButtonText];
709
+ }
710
+ });
711
+ },
712
+ add: function add() {
713
+ return vue.createVNode(elementPlus.ElButton, vue.mergeProps({
714
+ "type": "primary"
715
+ }, props.addButtonProps), {
716
+ "default": function _default() {
717
+ return [props.addButtonText];
718
+ }
719
+ });
720
+ }
721
+ }, slots))];
1482
722
  }
1483
723
  });
1484
724
  };
@@ -1494,13 +734,13 @@ var OkButton = vue.defineComponent({
1494
734
  setup: function setup(props, _ref) {
1495
735
  var slots = _ref.slots;
1496
736
 
1497
- var _useProCurdModule = useProCurdModule(),
1498
- curdState = _useProCurdModule.curdState;
737
+ var _useProCurd = pro.useProCurd(),
738
+ curdState = _useProCurd.curdState;
1499
739
 
1500
740
  return function () {
1501
741
  return vue.createVNode(ProSubmitButton, vue.mergeProps({
1502
742
  "onClick": function onClick() {
1503
- curdState.addAction = exports.CurdAddAction.NORMAL;
743
+ curdState.addAction = pro.CurdAddAction.NORMAL;
1504
744
  }
1505
745
  }, props, {
1506
746
  "loading": curdState.operateLoading
@@ -1521,13 +761,13 @@ var ContinueAddButton = vue.defineComponent({
1521
761
  setup: function setup(props, _ref2) {
1522
762
  var slots = _ref2.slots;
1523
763
 
1524
- var _useProCurdModule2 = useProCurdModule(),
1525
- curdState = _useProCurdModule2.curdState;
764
+ var _useProCurd2 = pro.useProCurd(),
765
+ curdState = _useProCurd2.curdState;
1526
766
 
1527
767
  return function () {
1528
768
  return vue.createVNode(ProSubmitButton, vue.mergeProps({
1529
769
  "onClick": function onClick() {
1530
- curdState.addAction = exports.CurdAddAction.CONTINUE;
770
+ curdState.addAction = pro.CurdAddAction.CONTINUE;
1531
771
  }
1532
772
  }, props, {
1533
773
  "loading": curdState.operateLoading
@@ -1571,8 +811,8 @@ var ProOperateButton = vue.defineComponent({
1571
811
  setup: function setup(props, _ref3) {
1572
812
  var slots = _ref3.slots;
1573
813
 
1574
- var _useProCurdModule3 = useProCurdModule(),
1575
- curdState = _useProCurdModule3.curdState;
814
+ var _useProCurd3 = pro.useProCurd(),
815
+ curdState = _useProCurd3.curdState;
1576
816
 
1577
817
  return function () {
1578
818
  var _slots$left, _slots$center, _slots$right;
@@ -1583,7 +823,7 @@ var ProOperateButton = vue.defineComponent({
1583
823
  "default": function _default() {
1584
824
  return [props.okText];
1585
825
  }
1586
- }), (_slots$center = slots.center) === null || _slots$center === void 0 ? void 0 : _slots$center.call(slots), curdState.mode === exports.CurdCurrentMode.ADD && props.showContinueAdd && vue.createVNode(ContinueAddButton, props.continueButtonProps, {
826
+ }), (_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, {
1587
827
  "default": function _default() {
1588
828
  return [props.continueText];
1589
829
  }
@@ -1606,45 +846,47 @@ var ProCurdForm = vue.defineComponent({
1606
846
  setup: function setup(props, _ref4) {
1607
847
  var slots = _ref4.slots;
1608
848
 
1609
- var _useProModule = useProModule(),
1610
- getFormItemVNode = _useProModule.getFormItemVNode;
1611
-
1612
- var _useProCurdModule4 = useProCurdModule(),
1613
- curdState = _useProCurdModule4.curdState,
1614
- formColumns = _useProCurdModule4.formColumns,
1615
- operate = _useProCurdModule4.operate;
849
+ var _useProModule = pro.useProModule(),
850
+ elementMap = _useProModule.elementMap,
851
+ formElementMap = _useProModule.formElementMap;
1616
852
 
1617
- var formVNodes = vue.computed(function () {
1618
- return lodash.map(formColumns.value, function (item) {
1619
- return getFormItemVNode(item, true);
1620
- });
1621
- });
853
+ var _useProCurd4 = pro.useProCurd(),
854
+ curdState = _useProCurd4.curdState,
855
+ formColumns = _useProCurd4.formColumns,
856
+ sendCurdEvent = _useProCurd4.sendCurdEvent;
1622
857
 
1623
858
  var handleFinish = function handleFinish(values) {
1624
- if (curdState.mode === exports.CurdCurrentMode.EDIT) {
1625
- var _operate$onEditExecut;
1626
-
859
+ if (curdState.mode === pro.CurdCurrentMode.EDIT) {
1627
860
  //edit
1628
- (_operate$onEditExecut = operate.onEditExecute) === null || _operate$onEditExecut === void 0 ? void 0 : _operate$onEditExecut.call(operate, values);
861
+ sendCurdEvent({
862
+ action: pro.CurdAction.EDIT,
863
+ type: pro.CurdSubAction.EXECUTE,
864
+ values: values
865
+ });
1629
866
  } else {
1630
- var _operate$onAddExecute;
1631
-
1632
867
  //add
1633
- (_operate$onAddExecute = operate.onAddExecute) === null || _operate$onAddExecute === void 0 ? void 0 : _operate$onAddExecute.call(operate, values);
868
+ sendCurdEvent({
869
+ action: pro.CurdAction.ADD,
870
+ type: pro.CurdSubAction.EXECUTE,
871
+ values: values
872
+ });
1634
873
  }
1635
874
  };
1636
875
 
1637
876
  return function () {
1638
- return vue.createVNode(ProForm, vue.mergeProps(props, {
877
+ var _slots$default;
878
+
879
+ return vue.createVNode(ProForm, vue.mergeProps(lodash.omit(props, "elementMap", "formElementMap"), {
880
+ "elementMap": props.elementMap || elementMap,
881
+ "formElementMap": props.formElementMap || formElementMap,
882
+ "columns": formColumns.value,
1639
883
  "model": curdState.detailData,
1640
- "readonly": curdState.mode === exports.CurdCurrentMode.DETAIL,
1641
- "hideRequiredAsterisk": curdState.mode === exports.CurdCurrentMode.DETAIL,
884
+ "readonly": curdState.mode === pro.CurdCurrentMode.DETAIL,
885
+ "hideRequiredAsterisk": curdState.mode === pro.CurdCurrentMode.DETAIL,
1642
886
  "onFinish": handleFinish
1643
887
  }), _objectSpread2({
1644
888
  "default": function _default() {
1645
- var _slots$default;
1646
-
1647
- return vue.createVNode(vue.Fragment, null, [formVNodes.value, curdState.mode !== exports.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)]);
889
+ 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)];
1648
890
  }
1649
891
  }, lodash.omit(slots, "default")));
1650
892
  };
@@ -1652,184 +894,126 @@ var ProCurdForm = vue.defineComponent({
1652
894
  });
1653
895
  var ProCurdFormConnect = vue.defineComponent({
1654
896
  setup: function setup() {
1655
- var _useProCurdModule5 = useProCurdModule(),
1656
- formProps = _useProCurdModule5.formProps;
897
+ var _useProCurd5 = pro.useProCurd(),
898
+ formProps = _useProCurd5.formProps;
1657
899
 
1658
900
  return function () {
1659
- return vue.createVNode(ProCurdForm, lodash.omit(formProps, "slots"), lodash.get(formProps, "slots"));
901
+ 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"));
1660
902
  };
1661
903
  }
1662
904
  });
1663
905
 
1664
- var defaultPage = {
1665
- page: 1,
1666
- pageSize: 10
1667
- };
1668
-
1669
- var curdListProps = function curdListProps() {
1670
- return {
1671
- /**
1672
- * extra 是否放到SearchForm中
1673
- */
1674
- extraInSearch: {
1675
- type: Boolean,
1676
- "default": undefined
1677
- },
1678
- //search
1679
- searchProps: {
1680
- type: Object
1681
- },
1682
- //table
1683
- tableProps: {
1684
- type: Object
1685
- },
1686
- //pagination
1687
- paginationProps: {
1688
- type: Object
1689
- },
1690
- //pageState
1691
- pageState: {
1692
- type: Object
1693
- }
1694
- };
1695
- };
1696
-
1697
906
  /**
1698
907
  * 组合列表
1699
908
  * SearchForm + Table + Pagination
1700
909
  */
1701
910
  var ProCurdList = vue.defineComponent({
1702
- props: _objectSpread2({}, curdListProps()),
911
+ props: _objectSpread2({}, ProList.props),
1703
912
  setup: function setup(props, _ref) {
1704
- var _props$searchProps;
1705
-
1706
913
  var slots = _ref.slots;
1707
914
 
1708
- var _useProModule = useProModule(),
915
+ var _useProModule = pro.useProModule(),
1709
916
  elementMap = _useProModule.elementMap,
1710
917
  formElementMap = _useProModule.formElementMap;
1711
918
 
1712
- var _useProCurdModule = useProCurdModule(),
1713
- curdState = _useProCurdModule.curdState,
1714
- searchColumns = _useProCurdModule.searchColumns,
1715
- tableColumns = _useProCurdModule.tableColumns,
1716
- operate = _useProCurdModule.operate;
919
+ var _useProCurd = pro.useProCurd(),
920
+ curdState = _useProCurd.curdState,
921
+ searchColumns = _useProCurd.searchColumns,
922
+ tableColumns = _useProCurd.tableColumns,
923
+ getOperate = _useProCurd.getOperate,
924
+ sendCurdEvent = _useProCurd.sendCurdEvent;
1717
925
  /******************* table ********************/
1718
926
 
1719
927
 
1720
- var prepareTableItem = function prepareTableItem(propName) {
1721
- return {
1722
- value: propName,
1723
- label: lodash.get(operate, "".concat(propName, "Label")),
1724
- show: lodash.get(operate, propName, false),
928
+ var prepareTableItem = function prepareTableItem(action) {
929
+ var item = getOperate(action);
930
+ return _objectSpread2(_objectSpread2({}, lodash.pick(item, "label", "element", "disabled", "sort")), {}, {
931
+ show: !lodash.isUndefined(item === null || item === void 0 ? void 0 : item.show) ? item === null || item === void 0 ? void 0 : item.show : false,
1725
932
  onClick: function onClick(record) {
1726
- var fun = lodash.get(operate, lodash.camelCase("on-".concat(propName)));
1727
- fun === null || fun === void 0 ? void 0 : fun(record);
1728
- }
1729
- };
1730
- }; //table操作栏 items
1731
-
1732
-
1733
- var tableOperateItems = [prepareTableItem("detail"), prepareTableItem("edit"), prepareTableItem("delete")];
1734
- /******************* search pagination ********************/
1735
-
1736
- var searchState = ((_props$searchProps = props.searchProps) === null || _props$searchProps === void 0 ? void 0 : _props$searchProps.model) || vue.reactive({});
1737
- var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
1738
-
1739
- var handleSearch = function handleSearch() {
1740
- operate.onList && operate.onList(_objectSpread2(_objectSpread2({}, searchState), pageState));
1741
- };
1742
-
1743
- var executeSearchWithResetPage = function executeSearchWithResetPage() {
1744
- pageState.page = 1;
1745
- handleSearch();
1746
- }; //无SearchForm组件 初始化
1747
-
1748
-
1749
- hooks.useEffect(function () {
1750
- var _props$searchProps2;
933
+ if (item !== null && item !== void 0 && item.onClick) {
934
+ item.onClick(record);
935
+ return;
936
+ }
1751
937
 
1752
- // 处理触发onList 操作
1753
- if (lodash.size(searchColumns.value) <= 0 && ((_props$searchProps2 = props.searchProps) === null || _props$searchProps2 === void 0 ? void 0 : _props$searchProps2.initEmit) !== false) {
1754
- handleSearch();
1755
- }
1756
- }, []); //无SearchForm组件 订阅searchState
938
+ sendCurdEvent({
939
+ action: action,
940
+ type: pro.CurdSubAction.EMIT,
941
+ record: record
942
+ });
943
+ },
944
+ value: action
945
+ });
946
+ }; //table操作栏 items
1757
947
 
1758
- hooks.useWatch(function () {
1759
- if (lodash.size(searchColumns.value) > 0) {
1760
- return;
1761
- }
1762
948
 
1763
- executeSearchWithResetPage();
1764
- }, searchState);
949
+ var tableOperateItems = [prepareTableItem(pro.CurdAction.DETAIL), prepareTableItem(pro.CurdAction.EDIT), prepareTableItem(pro.CurdAction.DELETE)];
1765
950
  return function () {
1766
- var _slots$extra, _slots$divide, _curdState$listData, _props$tableProps, _slots$divide2, _curdState$listData2;
1767
-
1768
- var pagination = props.paginationProps; //
1769
-
1770
- var _extra = vue.createVNode("div", {
1771
- "class": "pro-curd-list-search"
1772
- }, [operate.add && vue.createVNode(elementPlus.ElButton, {
1773
- "type": "primary",
1774
- "onClick": function onClick() {
1775
- var _operate$onAdd;
1776
-
1777
- (_operate$onAdd = operate.onAdd) === null || _operate$onAdd === void 0 ? void 0 : _operate$onAdd.call(operate);
1778
- }
1779
- }, {
1780
- "default": function _default() {
1781
- return [operate.addLabel];
951
+ var _curdState$listData, _curdState$listData2;
952
+
953
+ var tableProps = props.tableProps;
954
+ var paginationProps = props.paginationProps;
955
+ return vue.createVNode(ProList, vue.mergeProps({
956
+ "onList": function onList(values) {
957
+ sendCurdEvent({
958
+ action: pro.CurdAction.LIST,
959
+ type: pro.CurdSubAction.EMIT,
960
+ values: values
961
+ });
1782
962
  }
1783
- }), (_slots$extra = slots.extra) === null || _slots$extra === void 0 ? void 0 : _slots$extra.call(slots)]);
963
+ }, props, {
964
+ "searchProps": _objectSpread2(_objectSpread2({
965
+ formElementMap: formElementMap
966
+ }, props.searchProps), {}, {
967
+ columns: searchColumns.value
968
+ }),
969
+ "tableProps": _objectSpread2(_objectSpread2({
970
+ elementMap: elementMap
971
+ }, tableProps), {}, {
972
+ operate: lodash.mergeWith({
973
+ items: tableOperateItems
974
+ }, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate, function (objValue, srcValue) {
975
+ if (lodash.isArray(objValue)) {
976
+ if (lodash.isArray(srcValue)) {
977
+ //合并
978
+ return lodash.concat(objValue, lodash.map(srcValue, function (item) {
979
+ var nextItem = _objectSpread2({}, item);
980
+
981
+ if (!item.onClick) {
982
+ nextItem.onClick = function (record) {
983
+ sendCurdEvent({
984
+ action: "operate",
985
+ type: item.value,
986
+ record: record
987
+ });
988
+ };
989
+ }
1784
990
 
1785
- return vue.createVNode(vue.Fragment, null, [lodash.size(searchColumns.value) > 0 && vue.createVNode(ProSearchForm, vue.mergeProps({
1786
- "formElementMap": formElementMap,
1787
- "columns": searchColumns.value
1788
- }, props.searchProps, {
1789
- "model": searchState,
1790
- "onFinish": executeSearchWithResetPage
1791
- }), {
1792
- //extraInSearch 模式下放入SearchForm
1793
- extra: function extra() {
1794
- return props.extraInSearch ? _extra : null;
1795
- }
1796
- }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), (lodash.size(searchColumns.value) <= 0 || !props.extraInSearch) && (operate.add || slots.extra) && _extra, slots["default"] ? slots["default"]() : vue.withDirectives(vue.createVNode(ProTable, vue.mergeProps({
1797
- "elementMap": elementMap,
1798
- "columns": tableColumns.value,
1799
- "operate": lodash.mergeWith({
1800
- items: tableOperateItems
1801
- }, operate.tableOperate, function (objValue, srcValue) {
1802
- if (lodash.isArray(objValue) && lodash.isArray(srcValue)) {
1803
- return lodash.concat(objValue, srcValue);
1804
- }
991
+ return nextItem;
992
+ }));
993
+ } else {
994
+ //使用curd默认
995
+ return objValue;
996
+ }
997
+ }
998
+ }),
999
+ columns: tableColumns.value,
1000
+ loading: curdState.listLoading,
1001
+ data: (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
1002
+ }),
1003
+ "paginationProps": _objectSpread2(_objectSpread2({}, paginationProps), {}, {
1004
+ total: (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total
1805
1005
  })
1806
- }, lodash.omit(props.tableProps, "slots", "operate"), {
1807
- "data": (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
1808
- }), (_props$tableProps = props.tableProps) === null || _props$tableProps === void 0 ? void 0 : _props$tableProps.slots), [[vue.resolveDirective("loading"), curdState.listLoading]]), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), curdState.listData && lodash.isNumber((_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total) && curdState.listData.total > 0 && vue.createVNode("div", {
1809
- "class": "pro-curd-list-bottom"
1810
- }, [vue.createVNode(elementPlus.ElPagination, vue.mergeProps(pagination, {
1811
- "total": curdState.listData.total,
1812
- "currentPage": pageState.page,
1813
- "pageSize": pageState.pageSize,
1814
- "onSizeChange": function onSizeChange(pageSize) {
1815
- pageState.pageSize = pageSize;
1816
- handleSearch();
1817
- },
1818
- "onCurrentChange": function onCurrentChange(current) {
1819
- pageState.page = current;
1820
- handleSearch();
1821
- }
1822
- }), null)])]);
1006
+ }), slots);
1823
1007
  };
1824
1008
  }
1825
1009
  });
1826
1010
  var ProCurdListConnect = vue.defineComponent({
1827
1011
  setup: function setup() {
1828
- var _useProCurdModule2 = useProCurdModule(),
1829
- listProps = _useProCurdModule2.listProps;
1012
+ var _useProCurd2 = pro.useProCurd(),
1013
+ listProps = _useProCurd2.listProps;
1830
1014
 
1831
1015
  return function () {
1832
- return vue.createVNode(ProCurdList, lodash.omit(listProps, "slots"), lodash.get(listProps, "slots"));
1016
+ 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"));
1833
1017
  };
1834
1018
  }
1835
1019
  });
@@ -1843,12 +1027,12 @@ var ProCurdDesc = vue.defineComponent({
1843
1027
  setup: function setup(props, _ref) {
1844
1028
  var slots = _ref.slots;
1845
1029
 
1846
- var _useProModule = useProModule(),
1030
+ var _useProModule = pro.useProModule(),
1847
1031
  getItemVNode = _useProModule.getItemVNode;
1848
1032
 
1849
- var _useProCurdModule = useProCurdModule(),
1850
- curdState = _useProCurdModule.curdState,
1851
- descColumns = _useProCurdModule.descColumns;
1033
+ var _useProCurd = pro.useProCurd(),
1034
+ curdState = _useProCurd.curdState,
1035
+ descColumns = _useProCurd.descColumns;
1852
1036
 
1853
1037
  var descVNodes = vue.computed(function () {
1854
1038
  return lodash.map(descColumns.value, function (item) {
@@ -1876,25 +1060,82 @@ var ProCurdDesc = vue.defineComponent({
1876
1060
  });
1877
1061
  var ProCurdDescConnect = vue.defineComponent({
1878
1062
  setup: function setup() {
1879
- var _useProCurdModule2 = useProCurdModule(),
1880
- descProps = _useProCurdModule2.descProps;
1063
+ var _useProCurd2 = pro.useProCurd(),
1064
+ descProps = _useProCurd2.descProps;
1065
+
1066
+ return function () {
1067
+ 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"));
1068
+ };
1069
+ }
1070
+ });
1071
+
1072
+ var ProCurdModal = vue.defineComponent({
1073
+ props: _objectSpread2({}, elementPlus.ElDialog.props),
1074
+ setup: function setup(props, _ref) {
1075
+ var slots = _ref.slots;
1076
+
1077
+ var _useProCurd = pro.useProCurd(),
1078
+ curdState = _useProCurd.curdState,
1079
+ getOperate = _useProCurd.getOperate; //根据当前模式展示不同的Title
1080
+
1081
+
1082
+ var getTitle = function getTitle() {
1083
+ var _getOperate, _getOperate2, _getOperate3;
1084
+
1085
+ switch (curdState.mode) {
1086
+ case pro.CurdAction.ADD:
1087
+ return (_getOperate = getOperate(pro.CurdAction.ADD)) === null || _getOperate === void 0 ? void 0 : _getOperate.label;
1088
+
1089
+ case pro.CurdAction.EDIT:
1090
+ return (_getOperate2 = getOperate(pro.CurdAction.EDIT)) === null || _getOperate2 === void 0 ? void 0 : _getOperate2.label;
1091
+
1092
+ case pro.CurdAction.DETAIL:
1093
+ return (_getOperate3 = getOperate(pro.CurdAction.DETAIL)) === null || _getOperate3 === void 0 ? void 0 : _getOperate3.label;
1094
+ }
1095
+ };
1096
+
1097
+ var handleCancel = function handleCancel() {
1098
+ curdState.mode = undefined;
1099
+ hooks.setReactiveValue(curdState.detailData, {});
1100
+ curdState.detailLoading = false;
1101
+ curdState.addAction = undefined;
1102
+ };
1103
+
1104
+ return function () {
1105
+ return vue.createVNode(elementPlus.ElDialog, vue.mergeProps({
1106
+ "destroyOnClose": true,
1107
+ "title": getTitle(),
1108
+ "modelValue": !!curdState.mode,
1109
+ "onClose": handleCancel
1110
+ }, props), slots);
1111
+ };
1112
+ }
1113
+ });
1114
+ var ProCurdModalConnect = vue.defineComponent({
1115
+ setup: function setup() {
1116
+ var _useProCurd2 = pro.useProCurd(),
1117
+ modalProps = _useProCurd2.modalProps;
1881
1118
 
1882
1119
  return function () {
1883
- return vue.createVNode(ProCurdList, lodash.omit(descProps, "slots"), lodash.get(descProps, "slots"));
1120
+ return vue.createVNode(ProCurdModal, lodash.omit(modalProps === null || modalProps === void 0 ? void 0 : modalProps.value, "slots"), _objectSpread2({
1121
+ "default": function _default() {
1122
+ return [vue.createVNode(ProCurdFormConnect, null, null)];
1123
+ }
1124
+ }, lodash.get(modalProps === null || modalProps === void 0 ? void 0 : modalProps.value, "slots")));
1884
1125
  };
1885
1126
  }
1886
1127
  });
1887
1128
 
1888
1129
  exports.ContinueAddButton = ContinueAddButton;
1889
1130
  exports.OkButton = OkButton;
1890
- exports.ProCurd = ProCurd;
1891
1131
  exports.ProCurdDesc = ProCurdDesc;
1892
1132
  exports.ProCurdDescConnect = ProCurdDescConnect;
1893
1133
  exports.ProCurdForm = ProCurdForm;
1894
1134
  exports.ProCurdFormConnect = ProCurdFormConnect;
1895
1135
  exports.ProCurdList = ProCurdList;
1896
1136
  exports.ProCurdListConnect = ProCurdListConnect;
1897
- exports.ProCurdNet = ProCurdNet;
1137
+ exports.ProCurdModal = ProCurdModal;
1138
+ exports.ProCurdModalConnect = ProCurdModalConnect;
1898
1139
  exports.ProForm = ProForm;
1899
1140
  exports.ProFormCascader = ProFormCascader;
1900
1141
  exports.ProFormCheckbox = ProFormCheckbox;
@@ -1908,26 +1149,14 @@ exports.ProFormText = ProFormText;
1908
1149
  exports.ProFormTextNumber = ProFormTextNumber;
1909
1150
  exports.ProFormTimePicker = ProFormTimePicker;
1910
1151
  exports.ProFormTreeSelect = ProFormTreeSelect;
1911
- exports.ProModule = ProModule;
1152
+ exports.ProGrid = ProGrid;
1153
+ exports.ProList = ProList;
1154
+ exports.ProLoading = ProLoading;
1912
1155
  exports.ProOperateButton = ProOperateButton;
1913
- exports.ProSchemaForm = ProSchemaForm;
1914
1156
  exports.ProSearchForm = ProSearchForm;
1915
1157
  exports.ProSelect = ProSelect;
1916
1158
  exports.ProSubmitButton = ProSubmitButton;
1917
1159
  exports.ProTable = ProTable;
1918
- exports.convertPathToList = convertPathToList;
1919
1160
  exports.createFormItemComponent = createFormItemComponent;
1161
+ exports.createLoadingId = createLoadingId;
1920
1162
  exports.defaultPage = defaultPage;
1921
- exports.getColumnFormItemName = getColumnFormItemName;
1922
- exports.getColumnValueType = getColumnValueType;
1923
- exports.getFormItemEl = getFormItemEl;
1924
- exports.getItemEl = getItemEl;
1925
- exports.getValidValues = getValidValues;
1926
- exports.provideProCurdModule = provideProCurdModule;
1927
- exports.provideProForm = provideProForm;
1928
- exports.provideProFormList = provideProFormList;
1929
- exports.provideProModule = provideProModule;
1930
- exports.useProCurdModule = useProCurdModule;
1931
- exports.useProForm = useProForm;
1932
- exports.useProFormList = useProFormList;
1933
- exports.useProModule = useProModule;