@vue-start/pro 0.4.10 → 0.4.12
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/CHANGELOG.md +77 -77
- package/README.md +149 -149
- package/dist/index.d.ts +82 -94
- package/dist/index.es.js +1379 -2552
- package/dist/index.js +1 -2715
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,2715 +1 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var vue = require('vue');
|
|
6
|
-
var lodash = require('lodash');
|
|
7
|
-
var rxjs = require('rxjs');
|
|
8
|
-
var hooks = require('@vue-start/hooks');
|
|
9
|
-
var request = require('@vue-start/request');
|
|
10
|
-
var vueRouter = require('vue-router');
|
|
11
|
-
|
|
12
|
-
function ownKeys(object, enumerableOnly) {
|
|
13
|
-
var keys = Object.keys(object);
|
|
14
|
-
|
|
15
|
-
if (Object.getOwnPropertySymbols) {
|
|
16
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
17
|
-
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
18
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
19
|
-
})), keys.push.apply(keys, symbols);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return keys;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function _objectSpread2(target) {
|
|
26
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
27
|
-
var source = null != arguments[i] ? arguments[i] : {};
|
|
28
|
-
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
29
|
-
_defineProperty(target, key, source[key]);
|
|
30
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
31
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return target;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function _defineProperty(obj, key, value) {
|
|
39
|
-
if (key in obj) {
|
|
40
|
-
Object.defineProperty(obj, key, {
|
|
41
|
-
value: value,
|
|
42
|
-
enumerable: true,
|
|
43
|
-
configurable: true,
|
|
44
|
-
writable: true
|
|
45
|
-
});
|
|
46
|
-
} else {
|
|
47
|
-
obj[key] = value;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return obj;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function _toConsumableArray(arr) {
|
|
54
|
-
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function _arrayWithoutHoles(arr) {
|
|
58
|
-
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function _iterableToArray(iter) {
|
|
62
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
66
|
-
if (!o) return;
|
|
67
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
68
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
69
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
70
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
|
71
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function _arrayLikeToArray(arr, len) {
|
|
75
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
76
|
-
|
|
77
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
78
|
-
|
|
79
|
-
return arr2;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function _nonIterableSpread() {
|
|
83
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function _isSlot$1(s) {
|
|
87
|
-
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
var proGridProps = function proGridProps() {
|
|
91
|
-
return {
|
|
92
|
-
row: {
|
|
93
|
-
type: Object,
|
|
94
|
-
"default": undefined
|
|
95
|
-
},
|
|
96
|
-
col: {
|
|
97
|
-
type: Object
|
|
98
|
-
},
|
|
99
|
-
items: {
|
|
100
|
-
type: Array
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
var createGrid = function createGrid(Row, Col) {
|
|
106
|
-
return vue.defineComponent({
|
|
107
|
-
props: _objectSpread2({}, proGridProps()),
|
|
108
|
-
setup: function setup(props) {
|
|
109
|
-
return function () {
|
|
110
|
-
var _slot;
|
|
111
|
-
|
|
112
|
-
return vue.createVNode(Row, props.row, _isSlot$1(_slot = lodash.map(props.items, function (item) {
|
|
113
|
-
return vue.createVNode(Col, vue.mergeProps({
|
|
114
|
-
"key": item.rowKey
|
|
115
|
-
}, props.col, item.col), {
|
|
116
|
-
"default": function _default() {
|
|
117
|
-
return [item.vNode];
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
})) ? _slot : {
|
|
121
|
-
"default": function _default() {
|
|
122
|
-
return [_slot];
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
var createUseRequestActor = function createUseRequestActor(filterFun) {
|
|
131
|
-
return function (actors, callback) {
|
|
132
|
-
var _useRequestProvide = request.useRequestProvide(),
|
|
133
|
-
requestSubject$ = _useRequestProvide.requestSubject$;
|
|
134
|
-
|
|
135
|
-
var nameSet = new Set(lodash.map(actors, function (actor) {
|
|
136
|
-
return lodash.isString(actor) ? actor : actor.name;
|
|
137
|
-
}));
|
|
138
|
-
hooks.useEffect(function () {
|
|
139
|
-
var sub = requestSubject$.pipe(rxjs.filter(filterFun), rxjs.tap(function (actor) {
|
|
140
|
-
if (nameSet.has(actor.name)) {
|
|
141
|
-
callback(actor);
|
|
142
|
-
}
|
|
143
|
-
})).subscribe();
|
|
144
|
-
return function () {
|
|
145
|
-
sub.unsubscribe();
|
|
146
|
-
};
|
|
147
|
-
}, []);
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
var useDoneRequestActor = createUseRequestActor(request.isDoneRequestActor);
|
|
152
|
-
var useFailedRequestActor = createUseRequestActor(request.isFailedRequestActor);
|
|
153
|
-
var useComposeRequestActor = function useComposeRequestActor(actors, options, cancelWhileUnmount) {
|
|
154
|
-
var _useRequestProvide2 = request.useRequestProvide(),
|
|
155
|
-
requestSubject$ = _useRequestProvide2.requestSubject$,
|
|
156
|
-
dispatchRequest = _useRequestProvide2.dispatchRequest;
|
|
157
|
-
|
|
158
|
-
var nameSet = new Set(lodash.map(actors, function (actor) {
|
|
159
|
-
return lodash.isString(actor) ? actor : actor.name;
|
|
160
|
-
}));
|
|
161
|
-
var lastRequestActors = {};
|
|
162
|
-
hooks.useEffect(function () {
|
|
163
|
-
var sub = rxjs.merge(requestSubject$.pipe(rxjs.filter(request.isPreRequestActor), rxjs.tap(function (actor) {
|
|
164
|
-
if (nameSet.has(actor.name)) {
|
|
165
|
-
var _options$onStart;
|
|
166
|
-
|
|
167
|
-
(_options$onStart = options.onStart) === null || _options$onStart === void 0 ? void 0 : _options$onStart.call(options, actor);
|
|
168
|
-
lastRequestActors[actor.name] = actor;
|
|
169
|
-
}
|
|
170
|
-
})), requestSubject$.pipe(rxjs.filter(request.isDoneRequestActor), rxjs.tap(function (actor) {
|
|
171
|
-
if (nameSet.has(actor.name)) {
|
|
172
|
-
var _options$onSuccess, _options$onFinish;
|
|
173
|
-
|
|
174
|
-
(_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 ? void 0 : _options$onSuccess.call(options, actor);
|
|
175
|
-
(_options$onFinish = options.onFinish) === null || _options$onFinish === void 0 ? void 0 : _options$onFinish.call(options, actor);
|
|
176
|
-
lastRequestActors[actor.name] = undefined;
|
|
177
|
-
}
|
|
178
|
-
})), requestSubject$.pipe(rxjs.filter(request.isFailedRequestActor), rxjs.tap(function (actor) {
|
|
179
|
-
if (nameSet.has(actor.name)) {
|
|
180
|
-
var _options$onFailed, _options$onFinish2;
|
|
181
|
-
|
|
182
|
-
(_options$onFailed = options.onFailed) === null || _options$onFailed === void 0 ? void 0 : _options$onFailed.call(options, actor);
|
|
183
|
-
(_options$onFinish2 = options.onFinish) === null || _options$onFinish2 === void 0 ? void 0 : _options$onFinish2.call(options, actor);
|
|
184
|
-
lastRequestActors[actor.name] = undefined;
|
|
185
|
-
}
|
|
186
|
-
}))).subscribe();
|
|
187
|
-
return function () {
|
|
188
|
-
sub.unsubscribe();
|
|
189
|
-
|
|
190
|
-
if (cancelWhileUnmount) {
|
|
191
|
-
//组件销毁的时候cancel请求
|
|
192
|
-
lodash.forEach(lastRequestActors, function (actor) {
|
|
193
|
-
actor && dispatchRequest(_objectSpread2(_objectSpread2({}, actor), {}, {
|
|
194
|
-
stage: "CANCEL"
|
|
195
|
-
}));
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
}, []);
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
/***************************************** curd模式 *****************************************/
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* 获取Column的valueType,默认"text"
|
|
206
|
-
* @param column
|
|
207
|
-
*/
|
|
208
|
-
var getColumnValueType = function getColumnValueType(column) {
|
|
209
|
-
return column.formValueType || column.valueType || "text";
|
|
210
|
-
};
|
|
211
|
-
/**
|
|
212
|
-
*获取Column的FormItem name
|
|
213
|
-
* @param column
|
|
214
|
-
*/
|
|
215
|
-
|
|
216
|
-
var getColumnFormItemName = function getColumnFormItemName(column) {
|
|
217
|
-
var _column$formItemProps;
|
|
218
|
-
|
|
219
|
-
return ((_column$formItemProps = column.formItemProps) === null || _column$formItemProps === void 0 ? void 0 : _column$formItemProps.name) || column.dataIndex;
|
|
220
|
-
};
|
|
221
|
-
/**
|
|
222
|
-
* 根据Column生成FormItem VNode
|
|
223
|
-
* formFieldProps中的slots参数会以v-slots的形式传递到FormItem的录入组件(子组件)中
|
|
224
|
-
* @param formElementMap
|
|
225
|
-
* @param column
|
|
226
|
-
* @param needRules
|
|
227
|
-
*/
|
|
228
|
-
|
|
229
|
-
var getFormItemEl = function getFormItemEl(formElementMap, column) {
|
|
230
|
-
var _column$formFieldProp;
|
|
231
|
-
|
|
232
|
-
var needRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
233
|
-
var valueType = getColumnValueType(column);
|
|
234
|
-
var Comp = lodash.get(formElementMap, valueType);
|
|
235
|
-
|
|
236
|
-
if (!Comp) {
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
var name = getColumnFormItemName(column);
|
|
241
|
-
var itemProps = needRules ? column.formItemProps : lodash.omit(column.formItemProps, "rules");
|
|
242
|
-
return vue.h(Comp, _objectSpread2(_objectSpread2({
|
|
243
|
-
key: name,
|
|
244
|
-
name: name,
|
|
245
|
-
label: column.title
|
|
246
|
-
}, itemProps), {}, {
|
|
247
|
-
fieldProps: lodash.omit(column.formFieldProps, "slots"),
|
|
248
|
-
showProps: column.showProps
|
|
249
|
-
}), (_column$formFieldProp = column.formFieldProps) === null || _column$formFieldProp === void 0 ? void 0 : _column$formFieldProp.slots);
|
|
250
|
-
};
|
|
251
|
-
/**
|
|
252
|
-
* 根据Column生成Item VNode
|
|
253
|
-
* @param elementMap
|
|
254
|
-
* @param column
|
|
255
|
-
* @param value
|
|
256
|
-
*/
|
|
257
|
-
|
|
258
|
-
var getItemEl = function getItemEl(elementMap, column, value) {
|
|
259
|
-
var _column$formFieldProp2;
|
|
260
|
-
|
|
261
|
-
var valueType = column.valueType || "text";
|
|
262
|
-
var Comp = lodash.get(elementMap, valueType);
|
|
263
|
-
|
|
264
|
-
if (!Comp) {
|
|
265
|
-
return null;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
return vue.h(Comp, _objectSpread2(_objectSpread2({}, lodash.omit(column.formFieldProps, "slots")), {}, {
|
|
269
|
-
showProps: column.showProps,
|
|
270
|
-
value: value
|
|
271
|
-
}), (_column$formFieldProp2 = column.formFieldProps) === null || _column$formFieldProp2 === void 0 ? void 0 : _column$formFieldProp2.slots);
|
|
272
|
-
};
|
|
273
|
-
/***************************************** 通用模式 *****************************************/
|
|
274
|
-
|
|
275
|
-
var renderElements = function renderElements(elementMap, elementConfigs) {
|
|
276
|
-
return lodash.map(elementConfigs, function (elementConfig) {
|
|
277
|
-
return renderElement(elementMap, elementConfig);
|
|
278
|
-
});
|
|
279
|
-
};
|
|
280
|
-
/**
|
|
281
|
-
* props转换
|
|
282
|
-
*/
|
|
283
|
-
|
|
284
|
-
var convertPropsEl = function convertPropsEl(elementMap, elementConfig) {
|
|
285
|
-
var _elementConfig$highCo;
|
|
286
|
-
|
|
287
|
-
var elementProps = elementConfig.elementProps;
|
|
288
|
-
|
|
289
|
-
var nextProps = _objectSpread2({}, elementConfig.elementProps);
|
|
290
|
-
|
|
291
|
-
lodash.forEach((_elementConfig$highCo = elementConfig.highConfig$) === null || _elementConfig$highCo === void 0 ? void 0 : _elementConfig$highCo.registerPropsTrans, function (item) {
|
|
292
|
-
var target = lodash.get(elementProps, item.name);
|
|
293
|
-
|
|
294
|
-
if (!target || vue.isVNode(target)) {
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
if (lodash.isArray(target)) {
|
|
299
|
-
//如果list中存在VNode,不转换
|
|
300
|
-
if (lodash.some(target, function (sub) {
|
|
301
|
-
return vue.isVNode(sub);
|
|
302
|
-
})) {
|
|
303
|
-
return;
|
|
304
|
-
} //如果碰到特殊场景,可以替换成单个渲染模式
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
lodash.set(nextProps, item.name, renderElements(elementMap, target));
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
if (!target.elementType) {
|
|
312
|
-
return;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
if (item.isFun) {
|
|
316
|
-
lodash.set(nextProps, item.name, function () {
|
|
317
|
-
for (var _len = arguments.length, params$ = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
318
|
-
params$[_key] = arguments[_key];
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
var ep = item.needParams ? _objectSpread2(_objectSpread2({}, target.elementProps), {}, {
|
|
322
|
-
params$: params$
|
|
323
|
-
}) : target.elementProps;
|
|
324
|
-
return renderElement(elementMap, _objectSpread2(_objectSpread2({}, target), {}, {
|
|
325
|
-
elementProps: ep
|
|
326
|
-
}));
|
|
327
|
-
});
|
|
328
|
-
} else {
|
|
329
|
-
lodash.set(nextProps, item.name, renderElement(elementMap, target));
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
return nextProps;
|
|
333
|
-
};
|
|
334
|
-
/**
|
|
335
|
-
* slots转换
|
|
336
|
-
*/
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
var convertSlots = function convertSlots(elementMap, elementConfig) {
|
|
340
|
-
var children = lodash.size(elementConfig.children) > 0 ? renderElements(elementMap, elementConfig.children) : undefined; //children插槽名称
|
|
341
|
-
|
|
342
|
-
var childrenSlotName = elementConfig.childrenSlotName || "default";
|
|
343
|
-
var validSlots = lodash.omit(elementConfig.slots, children ? childrenSlotName : ""); //如果slots注册的是 IElementConfig ,进行转换
|
|
344
|
-
|
|
345
|
-
lodash.forEach(lodash.keys(validSlots), function (k) {
|
|
346
|
-
var v = validSlots[k]; //IElementConfig
|
|
347
|
-
|
|
348
|
-
if (v && !lodash.isFunction(v) && v.elementType) {
|
|
349
|
-
validSlots[k] = function () {
|
|
350
|
-
for (var _len2 = arguments.length, params$ = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
351
|
-
params$[_key2] = arguments[_key2];
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
//如果需要params,在props中注入 params$
|
|
355
|
-
var elementProps = v.needParams ? _objectSpread2(_objectSpread2({}, v.elementProps), {}, {
|
|
356
|
-
params$: params$
|
|
357
|
-
}) : v.elementProps;
|
|
358
|
-
return renderElement(elementMap, _objectSpread2(_objectSpread2({}, v), {}, {
|
|
359
|
-
elementProps: elementProps
|
|
360
|
-
}));
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
});
|
|
364
|
-
return _objectSpread2(_defineProperty({}, childrenSlotName, children ? function () {
|
|
365
|
-
return children;
|
|
366
|
-
} : undefined), validSlots);
|
|
367
|
-
};
|
|
368
|
-
/**
|
|
369
|
-
*
|
|
370
|
-
* @param elementMap
|
|
371
|
-
* @param elementConfig
|
|
372
|
-
*/
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
var renderElement = function renderElement(elementMap, elementConfig) {
|
|
376
|
-
var El = lodash.get(elementMap, elementConfig.elementType) || elementConfig.elementType; //如果有highConfig$,包裹一层Wrapper
|
|
377
|
-
|
|
378
|
-
if (elementConfig.highConfig$) {
|
|
379
|
-
return vue.h(Wrapper, {
|
|
380
|
-
key: elementConfig.elementId,
|
|
381
|
-
elementMap: elementMap,
|
|
382
|
-
elementConfig: elementConfig
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
var slots = convertSlots(elementMap, elementConfig);
|
|
387
|
-
var elementProps = convertPropsEl(elementMap, elementConfig);
|
|
388
|
-
return vue.h(El, _objectSpread2({
|
|
389
|
-
key: elementConfig.elementId
|
|
390
|
-
}, elementProps), slots);
|
|
391
|
-
};
|
|
392
|
-
/**
|
|
393
|
-
* 获取第一层级属性名
|
|
394
|
-
* 如:['aaa','bbb',...] 中的 'aaa'
|
|
395
|
-
* 如:"aaa.bbb.ccc..." 中的 'aaa'
|
|
396
|
-
*/
|
|
397
|
-
|
|
398
|
-
var getFirstPropName = function getFirstPropName(name) {
|
|
399
|
-
if (lodash.isArray(name)) {
|
|
400
|
-
return lodash.head(name);
|
|
401
|
-
} else if (lodash.isString(name) && name.indexOf(".") > 0) {
|
|
402
|
-
return name.substring(0, name.indexOf("."));
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
return name;
|
|
406
|
-
};
|
|
407
|
-
/**
|
|
408
|
-
* 处理highConfig$
|
|
409
|
-
*/
|
|
410
|
-
|
|
411
|
-
var Wrapper = vue.defineComponent({
|
|
412
|
-
props: {
|
|
413
|
-
elementMap: {
|
|
414
|
-
type: Object
|
|
415
|
-
},
|
|
416
|
-
elementConfig: {
|
|
417
|
-
type: Object
|
|
418
|
-
}
|
|
419
|
-
},
|
|
420
|
-
setup: function setup(props) {
|
|
421
|
-
var _useProModule = useProModule(),
|
|
422
|
-
state = _useProModule.state,
|
|
423
|
-
sendEvent = _useProModule.sendEvent;
|
|
424
|
-
|
|
425
|
-
var elementMap = props.elementMap,
|
|
426
|
-
elementConfig = props.elementConfig;
|
|
427
|
-
var highConfig$ = elementConfig.highConfig$; //转换props
|
|
428
|
-
|
|
429
|
-
var elementProps = convertPropsEl(elementMap, elementConfig); //事件订阅
|
|
430
|
-
|
|
431
|
-
var events = lodash.reduce(highConfig$.registerEventList, function (pair, item) {
|
|
432
|
-
return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, item.name, function () {
|
|
433
|
-
for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
434
|
-
params[_key3] = arguments[_key3];
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
sendEvent({
|
|
438
|
-
type: item.sendEventName || elementConfig.elementId,
|
|
439
|
-
payload: params
|
|
440
|
-
});
|
|
441
|
-
}));
|
|
442
|
-
}, {}); //receiveStateList 订阅
|
|
443
|
-
|
|
444
|
-
var receiveStates = vue.computed(function () {
|
|
445
|
-
if (!highConfig$.registerStateList || lodash.size(highConfig$.registerStateList) <= 0) {
|
|
446
|
-
return undefined;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
var changeProps = _objectSpread2({}, elementProps); //赋值 && 返回一级属性名称
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
var firstPropNameList = lodash.map(highConfig$.registerStateList, function (item) {
|
|
453
|
-
var targetName = item.mapName || item.name; //从state中取值
|
|
454
|
-
|
|
455
|
-
var value = lodash.get(state, item.name); //赋值
|
|
456
|
-
|
|
457
|
-
lodash.set(changeProps, targetName, value); //返回一级属性名称
|
|
458
|
-
|
|
459
|
-
return getFirstPropName(targetName);
|
|
460
|
-
});
|
|
461
|
-
return lodash.pick(changeProps, firstPropNameList);
|
|
462
|
-
});
|
|
463
|
-
var El = lodash.get(elementMap, elementConfig.elementType) || elementConfig.elementType;
|
|
464
|
-
var slots = convertSlots(elementMap, elementConfig);
|
|
465
|
-
return function () {
|
|
466
|
-
//如果标记show$值为false,不渲染组件
|
|
467
|
-
var show$ = lodash.get(receiveStates.value, "show$");
|
|
468
|
-
|
|
469
|
-
if (show$ === false) {
|
|
470
|
-
return null;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
return vue.h(El, _objectSpread2(_objectSpread2(_objectSpread2({
|
|
474
|
-
key: elementConfig.elementId
|
|
475
|
-
}, elementProps), lodash.omit(receiveStates.value, "show$")), events), slots);
|
|
476
|
-
};
|
|
477
|
-
}
|
|
478
|
-
});
|
|
479
|
-
|
|
480
|
-
var ProModuleKey = Symbol("pro-module");
|
|
481
|
-
var useProModule = function useProModule() {
|
|
482
|
-
return vue.inject(ProModuleKey);
|
|
483
|
-
};
|
|
484
|
-
var provideProModule = function provideProModule(ctx) {
|
|
485
|
-
vue.provide(ProModuleKey, ctx);
|
|
486
|
-
};
|
|
487
|
-
var RequestAction = {
|
|
488
|
-
Success: "request-success$",
|
|
489
|
-
Fail: "request-fail$"
|
|
490
|
-
};
|
|
491
|
-
|
|
492
|
-
var proModuleProps = function proModuleProps() {
|
|
493
|
-
return {
|
|
494
|
-
/**
|
|
495
|
-
* module状态
|
|
496
|
-
*/
|
|
497
|
-
state: {
|
|
498
|
-
type: Object
|
|
499
|
-
},
|
|
500
|
-
|
|
501
|
-
/**
|
|
502
|
-
* 组件集
|
|
503
|
-
*/
|
|
504
|
-
elementMap: {
|
|
505
|
-
type: Object
|
|
506
|
-
},
|
|
507
|
-
|
|
508
|
-
/**
|
|
509
|
-
* 组件描述(树)
|
|
510
|
-
*/
|
|
511
|
-
elementConfigs: {
|
|
512
|
-
type: Array
|
|
513
|
-
},
|
|
514
|
-
|
|
515
|
-
/**
|
|
516
|
-
* requests
|
|
517
|
-
*/
|
|
518
|
-
requests: {
|
|
519
|
-
type: Array
|
|
520
|
-
}
|
|
521
|
-
};
|
|
522
|
-
};
|
|
523
|
-
|
|
524
|
-
var ProModule = vue.defineComponent({
|
|
525
|
-
props: _objectSpread2({}, proModuleProps()),
|
|
526
|
-
setup: function setup(props, _ref) {
|
|
527
|
-
var slots = _ref.slots,
|
|
528
|
-
expose = _ref.expose;
|
|
529
|
-
|
|
530
|
-
/*********************************** render ***************************************/
|
|
531
|
-
var render = function render(elementConfig) {
|
|
532
|
-
if (lodash.isArray(elementConfig)) {
|
|
533
|
-
return renderElements(props.elementMap, elementConfig);
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
return renderElement(props.elementMap, elementConfig);
|
|
537
|
-
};
|
|
538
|
-
/*********************************** 事件处理 ***************************************/
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
var subject$ = new rxjs.Subject(); //发送Module事件
|
|
542
|
-
|
|
543
|
-
var sendEvent = function sendEvent(action) {
|
|
544
|
-
subject$.next(action);
|
|
545
|
-
};
|
|
546
|
-
/*********************************** 页面状态 ***************************************/
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
var state = props.state || vue.reactive({});
|
|
550
|
-
|
|
551
|
-
var dispatch = function dispatch(action) {
|
|
552
|
-
var prev = state[action.type];
|
|
553
|
-
var data = lodash.isFunction(action.payload) ? action.payload(prev) : action.payload; //如果要更新的属性值是 object ,执行覆盖操作
|
|
554
|
-
|
|
555
|
-
if (lodash.isObject(prev)) {
|
|
556
|
-
hooks.setReactiveValue(state[action.type], data);
|
|
557
|
-
return;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
state[action.type] = data;
|
|
561
|
-
};
|
|
562
|
-
/*********************************** request ***************************************/
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
var _useRequestProvide = request.useRequestProvide(),
|
|
566
|
-
dispatchRequest = _useRequestProvide.dispatchRequest;
|
|
567
|
-
|
|
568
|
-
var requestMap = lodash.reduce(props.requests, function (pair, item) {
|
|
569
|
-
var _item$actor;
|
|
570
|
-
|
|
571
|
-
return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, (_item$actor = item.actor) === null || _item$actor === void 0 ? void 0 : _item$actor.name, item));
|
|
572
|
-
}, {});
|
|
573
|
-
var actionMap = lodash.reduce(props.requests, function (pair, item) {
|
|
574
|
-
return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, item.action, item));
|
|
575
|
-
}, {}); //发送请求
|
|
576
|
-
|
|
577
|
-
var sendRequest = function sendRequest(requestNameOrAction) {
|
|
578
|
-
var requestOpts = lodash.get(requestMap, requestNameOrAction) || lodash.get(actionMap, requestNameOrAction);
|
|
579
|
-
|
|
580
|
-
if (!requestOpts) {
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
var nextParams;
|
|
585
|
-
|
|
586
|
-
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
587
|
-
params[_key - 1] = arguments[_key];
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
if (requestOpts.convertParams) {
|
|
591
|
-
nextParams = requestOpts.convertParams.apply(requestOpts, params);
|
|
592
|
-
} else {
|
|
593
|
-
nextParams = lodash.get(params, 0);
|
|
594
|
-
}
|
|
595
|
-
|
|
596
|
-
dispatchRequest(requestOpts.actor, nextParams);
|
|
597
|
-
};
|
|
598
|
-
|
|
599
|
-
useComposeRequestActor(lodash.keys(requestMap), {
|
|
600
|
-
onStart: function onStart(actor) {
|
|
601
|
-
//如果设置了loading,将请求状态维护到state中
|
|
602
|
-
var loadingName = lodash.get(requestMap, [actor.name, "loadingName"]);
|
|
603
|
-
|
|
604
|
-
if (loadingName) {
|
|
605
|
-
dispatch({
|
|
606
|
-
type: loadingName,
|
|
607
|
-
payload: true
|
|
608
|
-
});
|
|
609
|
-
}
|
|
610
|
-
},
|
|
611
|
-
onSuccess: function onSuccess(actor) {
|
|
612
|
-
var _requestOpts$onSucces;
|
|
613
|
-
|
|
614
|
-
var requestOpts = lodash.get(requestMap, actor.name); //如果设置了stateName,将结果维护到state中
|
|
615
|
-
|
|
616
|
-
if (requestOpts !== null && requestOpts !== void 0 && requestOpts.stateName) {
|
|
617
|
-
var _actor$res;
|
|
618
|
-
|
|
619
|
-
var data = requestOpts.convertData ? requestOpts.convertData(actor) : (_actor$res = actor.res) === null || _actor$res === void 0 ? void 0 : _actor$res.data;
|
|
620
|
-
dispatch({
|
|
621
|
-
type: requestOpts.stateName,
|
|
622
|
-
payload: data
|
|
623
|
-
});
|
|
624
|
-
} //发送成功事件
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
sendEvent({
|
|
628
|
-
type: RequestAction.Success,
|
|
629
|
-
payload: {
|
|
630
|
-
actor: actor,
|
|
631
|
-
requestOpts: requestOpts
|
|
632
|
-
}
|
|
633
|
-
}); //回调事件
|
|
634
|
-
|
|
635
|
-
(_requestOpts$onSucces = requestOpts.onSuccess) === null || _requestOpts$onSucces === void 0 ? void 0 : _requestOpts$onSucces.call(requestOpts, actor);
|
|
636
|
-
},
|
|
637
|
-
onFailed: function onFailed(actor) {
|
|
638
|
-
var _requestOpts$onFailed;
|
|
639
|
-
|
|
640
|
-
var requestOpts = lodash.get(requestMap, actor.name); //发送失败事件
|
|
641
|
-
|
|
642
|
-
sendEvent({
|
|
643
|
-
type: RequestAction.Fail,
|
|
644
|
-
payload: {
|
|
645
|
-
actor: actor,
|
|
646
|
-
requestOpts: requestOpts
|
|
647
|
-
}
|
|
648
|
-
}); //回调事件
|
|
649
|
-
|
|
650
|
-
(_requestOpts$onFailed = requestOpts.onFailed) === null || _requestOpts$onFailed === void 0 ? void 0 : _requestOpts$onFailed.call(requestOpts, actor);
|
|
651
|
-
},
|
|
652
|
-
onFinish: function onFinish(actor) {
|
|
653
|
-
var loadingName = lodash.get(requestMap, [actor.name, "loadingName"]);
|
|
654
|
-
|
|
655
|
-
if (loadingName) {
|
|
656
|
-
dispatch({
|
|
657
|
-
type: loadingName,
|
|
658
|
-
payload: false
|
|
659
|
-
});
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
}, true);
|
|
663
|
-
provideProModule({
|
|
664
|
-
elementMap: props.elementMap,
|
|
665
|
-
//
|
|
666
|
-
subject$: subject$,
|
|
667
|
-
sendEvent: sendEvent,
|
|
668
|
-
//
|
|
669
|
-
state: state,
|
|
670
|
-
dispatch: dispatch,
|
|
671
|
-
//
|
|
672
|
-
requests: props.requests,
|
|
673
|
-
sendRequest: sendRequest
|
|
674
|
-
});
|
|
675
|
-
expose({
|
|
676
|
-
sendEvent: sendEvent,
|
|
677
|
-
sendRequest: sendRequest
|
|
678
|
-
});
|
|
679
|
-
return function () {
|
|
680
|
-
var _slots$default;
|
|
681
|
-
|
|
682
|
-
return vue.createVNode(vue.Fragment, null, [lodash.size(props.elementConfigs) > 0 && render(props.elementConfigs), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
|
|
683
|
-
};
|
|
684
|
-
}
|
|
685
|
-
});
|
|
686
|
-
|
|
687
|
-
//订阅module事件
|
|
688
|
-
var useModuleEvent = function useModuleEvent(cb) {
|
|
689
|
-
var _useProModule = useProModule(),
|
|
690
|
-
subject$ = _useProModule.subject$;
|
|
691
|
-
|
|
692
|
-
hooks.useEffect(function () {
|
|
693
|
-
var sub = subject$.subscribe({
|
|
694
|
-
next: function next(action) {
|
|
695
|
-
cb(action);
|
|
696
|
-
}
|
|
697
|
-
});
|
|
698
|
-
return function () {
|
|
699
|
-
return sub.unsubscribe();
|
|
700
|
-
};
|
|
701
|
-
}, []);
|
|
702
|
-
};
|
|
703
|
-
|
|
704
|
-
var ProCurdKey = Symbol("pro-curd");
|
|
705
|
-
var useProCurd = function useProCurd() {
|
|
706
|
-
return vue.inject(ProCurdKey);
|
|
707
|
-
};
|
|
708
|
-
var provideProCurd = function provideProCurd(ctx) {
|
|
709
|
-
return vue.provide(ProCurdKey, ctx);
|
|
710
|
-
};
|
|
711
|
-
/************************************ 常量 *************************************/
|
|
712
|
-
|
|
713
|
-
/**
|
|
714
|
-
* curd 5种基础Action
|
|
715
|
-
*/
|
|
716
|
-
|
|
717
|
-
exports.CurdAction = void 0;
|
|
718
|
-
|
|
719
|
-
(function (CurdAction) {
|
|
720
|
-
CurdAction["LIST"] = "LIST";
|
|
721
|
-
CurdAction["DETAIL"] = "DETAIL";
|
|
722
|
-
CurdAction["ADD"] = "ADD";
|
|
723
|
-
CurdAction["EDIT"] = "EDIT";
|
|
724
|
-
CurdAction["DELETE"] = "DELETE";
|
|
725
|
-
})(exports.CurdAction || (exports.CurdAction = {}));
|
|
726
|
-
|
|
727
|
-
/**
|
|
728
|
-
* CurdAction 的子事件
|
|
729
|
-
*/
|
|
730
|
-
exports.CurdSubAction = void 0;
|
|
731
|
-
|
|
732
|
-
(function (CurdSubAction) {
|
|
733
|
-
CurdSubAction["EMIT"] = "EMIT";
|
|
734
|
-
CurdSubAction["EXECUTE"] = "EXECUTE";
|
|
735
|
-
CurdSubAction["PAGE"] = "PAGE";
|
|
736
|
-
CurdSubAction["SUCCESS"] = "SUCCESS";
|
|
737
|
-
CurdSubAction["FAIL"] = "FAIL";
|
|
738
|
-
})(exports.CurdSubAction || (exports.CurdSubAction = {}));
|
|
739
|
-
|
|
740
|
-
/**
|
|
741
|
-
* curd 操作模式
|
|
742
|
-
*/
|
|
743
|
-
exports.CurdCurrentMode = void 0;
|
|
744
|
-
|
|
745
|
-
(function (CurdCurrentMode) {
|
|
746
|
-
CurdCurrentMode["ADD"] = "ADD";
|
|
747
|
-
CurdCurrentMode["EDIT"] = "EDIT";
|
|
748
|
-
CurdCurrentMode["DETAIL"] = "DETAIL";
|
|
749
|
-
})(exports.CurdCurrentMode || (exports.CurdCurrentMode = {}));
|
|
750
|
-
|
|
751
|
-
/**
|
|
752
|
-
* curd add 模式下 标记 "确定" "确定并继续" 触发
|
|
753
|
-
*/
|
|
754
|
-
exports.CurdAddAction = void 0;
|
|
755
|
-
|
|
756
|
-
(function (CurdAddAction) {
|
|
757
|
-
CurdAddAction["NORMAL"] = "NORMAL";
|
|
758
|
-
CurdAddAction["CONTINUE"] = "CONTINUE";
|
|
759
|
-
})(exports.CurdAddAction || (exports.CurdAddAction = {}));
|
|
760
|
-
|
|
761
|
-
/**
|
|
762
|
-
* 剔除showState或showStateRules规则为!true的值
|
|
763
|
-
* @param values
|
|
764
|
-
* @param showState
|
|
765
|
-
* @param showStateRules
|
|
766
|
-
*/
|
|
767
|
-
|
|
768
|
-
var getValidValues = function getValidValues(values, showState, showStateRules) {
|
|
769
|
-
if (showState) {
|
|
770
|
-
var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
|
|
771
|
-
return !showState[key];
|
|
772
|
-
});
|
|
773
|
-
return lodash.omit(values, invalidKeys);
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
if (showStateRules) {
|
|
777
|
-
var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
|
|
778
|
-
return !showStateRules[key](values);
|
|
779
|
-
});
|
|
780
|
-
|
|
781
|
-
return lodash.omit(values, _invalidKeys);
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
return values;
|
|
785
|
-
};
|
|
786
|
-
/**
|
|
787
|
-
* string类型的path转为arr
|
|
788
|
-
* @param path
|
|
789
|
-
*/
|
|
790
|
-
|
|
791
|
-
var convertPathToList = function convertPathToList(path) {
|
|
792
|
-
if (!path) {
|
|
793
|
-
return undefined;
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
if (lodash.isArray(path)) {
|
|
797
|
-
return path;
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
if (path && lodash.isString(path) && path.indexOf(".") > 0) {
|
|
801
|
-
return lodash.split(path, ".");
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
return [path];
|
|
805
|
-
};
|
|
806
|
-
/**
|
|
807
|
-
* 将listState 中的数据通过id merge到 list item中
|
|
808
|
-
* ps:数组会替换
|
|
809
|
-
* 注意:mergeWith 会改变原始对象
|
|
810
|
-
* @param list
|
|
811
|
-
* @param listState
|
|
812
|
-
* @param id
|
|
813
|
-
*/
|
|
814
|
-
|
|
815
|
-
var mergeStateToList = function mergeStateToList(list, listState, id) {
|
|
816
|
-
if (!listState || !id) {
|
|
817
|
-
return list;
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
return lodash.map(list, function (item) {
|
|
821
|
-
var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
|
|
822
|
-
|
|
823
|
-
var stateData = lodash.get(listState, idName);
|
|
824
|
-
|
|
825
|
-
if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
|
|
826
|
-
return item;
|
|
827
|
-
} //只有是对象(键值对)才合并
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
|
|
831
|
-
//如果是数组,替换
|
|
832
|
-
if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
|
|
833
|
-
return srcValue;
|
|
834
|
-
}
|
|
835
|
-
});
|
|
836
|
-
});
|
|
837
|
-
};
|
|
838
|
-
|
|
839
|
-
/**
|
|
840
|
-
* ref 传递
|
|
841
|
-
*/
|
|
842
|
-
|
|
843
|
-
var createExpose = function createExpose(methods, targetRef) {
|
|
844
|
-
return lodash.reduce(methods, function (pair, method) {
|
|
845
|
-
return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, method, function () {
|
|
846
|
-
var _targetRef$value, _targetRef$value$meth;
|
|
847
|
-
|
|
848
|
-
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
849
|
-
params[_key] = arguments[_key];
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
return (_targetRef$value = targetRef.value) === null || _targetRef$value === void 0 ? void 0 : (_targetRef$value$meth = _targetRef$value[method]) === null || _targetRef$value$meth === void 0 ? void 0 : _targetRef$value$meth.call.apply(_targetRef$value$meth, [_targetRef$value].concat(params));
|
|
853
|
-
}));
|
|
854
|
-
}, {});
|
|
855
|
-
};
|
|
856
|
-
|
|
857
|
-
var defaultPage = {
|
|
858
|
-
page: 1,
|
|
859
|
-
pageSize: 10
|
|
860
|
-
};
|
|
861
|
-
|
|
862
|
-
var proCurdProps = function proCurdProps() {
|
|
863
|
-
return {
|
|
864
|
-
/**
|
|
865
|
-
* 配置(静态)
|
|
866
|
-
*/
|
|
867
|
-
columns: {
|
|
868
|
-
type: Array
|
|
869
|
-
},
|
|
870
|
-
|
|
871
|
-
/**
|
|
872
|
-
* 配置(动态)
|
|
873
|
-
* columns动态属性兼容
|
|
874
|
-
*/
|
|
875
|
-
columnState: {
|
|
876
|
-
type: Object
|
|
877
|
-
},
|
|
878
|
-
|
|
879
|
-
/**
|
|
880
|
-
* 录入组件集
|
|
881
|
-
*/
|
|
882
|
-
formElementMap: {
|
|
883
|
-
type: Object
|
|
884
|
-
},
|
|
885
|
-
|
|
886
|
-
/**
|
|
887
|
-
* 列表 或 详情 的唯一标识
|
|
888
|
-
*/
|
|
889
|
-
rowKey: {
|
|
890
|
-
type: String,
|
|
891
|
-
"default": "id"
|
|
892
|
-
},
|
|
893
|
-
|
|
894
|
-
/**
|
|
895
|
-
* operates
|
|
896
|
-
*/
|
|
897
|
-
operates: {
|
|
898
|
-
type: Array
|
|
899
|
-
},
|
|
900
|
-
|
|
901
|
-
/************************* 子组件props *******************************/
|
|
902
|
-
listProps: {
|
|
903
|
-
type: Object
|
|
904
|
-
},
|
|
905
|
-
formProps: {
|
|
906
|
-
type: Object
|
|
907
|
-
},
|
|
908
|
-
descProps: {
|
|
909
|
-
type: Object
|
|
910
|
-
},
|
|
911
|
-
modalProps: {
|
|
912
|
-
type: Object
|
|
913
|
-
}
|
|
914
|
-
};
|
|
915
|
-
};
|
|
916
|
-
|
|
917
|
-
var CurdMethods = ["sendCurdEvent", "refreshList", "sendEvent", "sendRequest"];
|
|
918
|
-
var Curd = vue.defineComponent({
|
|
919
|
-
props: _objectSpread2({}, proCurdProps()),
|
|
920
|
-
setup: function setup(props, _ref) {
|
|
921
|
-
var slots = _ref.slots,
|
|
922
|
-
expose = _ref.expose;
|
|
923
|
-
|
|
924
|
-
var _ref2 = useProModule(),
|
|
925
|
-
elementMap = _ref2.elementMap,
|
|
926
|
-
state = _ref2.state,
|
|
927
|
-
sendEvent = _ref2.sendEvent,
|
|
928
|
-
sendRequest = _ref2.sendRequest;
|
|
929
|
-
/**
|
|
930
|
-
* columns columnState 合并
|
|
931
|
-
*/
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
var columns = vue.computed(function () {
|
|
935
|
-
return mergeStateToList(props.columns, props.columnState, function (item) {
|
|
936
|
-
return getColumnFormItemName(item);
|
|
937
|
-
});
|
|
938
|
-
});
|
|
939
|
-
/*********************************** 渲染组件 ***************************************/
|
|
940
|
-
// 获取FormItem VNode
|
|
941
|
-
|
|
942
|
-
var getFormItemVNode = function getFormItemVNode(column) {
|
|
943
|
-
var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
944
|
-
return getFormItemEl(props.formElementMap, column, needRules);
|
|
945
|
-
}; // 获取Item VNode
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
var getItemVNode = function getItemVNode(column, value) {
|
|
949
|
-
return getItemEl(elementMap, column, value);
|
|
950
|
-
};
|
|
951
|
-
/**
|
|
952
|
-
* ${signName} 配置为true 会被选择
|
|
953
|
-
* @param signName
|
|
954
|
-
* @param opposite 如果为true,未配置(undefined)会被选择
|
|
955
|
-
*/
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
var getSignColumns = function getSignColumns(signName, opposite) {
|
|
959
|
-
var signColumns = lodash.filter(columns.value, function (item) {
|
|
960
|
-
var sign = lodash.get(item, ["extra", signName]) || lodash.get(item, signName);
|
|
961
|
-
|
|
962
|
-
if (opposite) {
|
|
963
|
-
//不为false 即为选中
|
|
964
|
-
return sign !== false;
|
|
965
|
-
} //只有true 才为选中
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
return sign;
|
|
969
|
-
});
|
|
970
|
-
return lodash.sortBy(signColumns, function (item) {
|
|
971
|
-
return lodash.get(item, ["extra", "".concat(signName, "Sort")]) || lodash.get(item, "".concat(signName, "Sort"));
|
|
972
|
-
});
|
|
973
|
-
};
|
|
974
|
-
|
|
975
|
-
var formColumns = vue.computed(function () {
|
|
976
|
-
return getSignColumns("form", true);
|
|
977
|
-
});
|
|
978
|
-
var descColumns = vue.computed(function () {
|
|
979
|
-
return getSignColumns("detail", true);
|
|
980
|
-
});
|
|
981
|
-
var tableColumns = vue.computed(function () {
|
|
982
|
-
return getSignColumns("table", true);
|
|
983
|
-
});
|
|
984
|
-
var searchColumns = vue.computed(function () {
|
|
985
|
-
return getSignColumns("search");
|
|
986
|
-
});
|
|
987
|
-
/******************************** 逻辑 *************************************/
|
|
988
|
-
//上一次发起列表请求的参数
|
|
989
|
-
|
|
990
|
-
var prevListParams; //刷新列表
|
|
991
|
-
|
|
992
|
-
var handleSearch = function handleSearch(extra) {
|
|
993
|
-
sendRequest(exports.CurdAction.LIST, _objectSpread2(_objectSpread2({}, prevListParams), extra));
|
|
994
|
-
}; //发送事件
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
var sendCurdEvent = function sendCurdEvent(event) {
|
|
998
|
-
sendEvent({
|
|
999
|
-
type: event.action,
|
|
1000
|
-
payload: lodash.omit(event, "action", "source"),
|
|
1001
|
-
source: event.source
|
|
1002
|
-
});
|
|
1003
|
-
}; //事件订阅
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
useModuleEvent(function (_ref3) {
|
|
1007
|
-
var type = _ref3.type,
|
|
1008
|
-
payload = _ref3.payload,
|
|
1009
|
-
source = _ref3.source;
|
|
1010
|
-
|
|
1011
|
-
//如果当前event存在source 不处理
|
|
1012
|
-
if (source) {
|
|
1013
|
-
return;
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
var action = type;
|
|
1017
|
-
var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
|
|
1018
|
-
|
|
1019
|
-
if (action === RequestAction.Success) {
|
|
1020
|
-
//覆盖
|
|
1021
|
-
action = lodash.get(payload, ["requestOpts", "action"]);
|
|
1022
|
-
subAction = exports.CurdSubAction.SUCCESS;
|
|
1023
|
-
}
|
|
1024
|
-
|
|
1025
|
-
var _ref4 = payload,
|
|
1026
|
-
values = _ref4.values,
|
|
1027
|
-
record = _ref4.record;
|
|
1028
|
-
|
|
1029
|
-
switch (action) {
|
|
1030
|
-
case exports.CurdAction.LIST:
|
|
1031
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1032
|
-
prevListParams = values;
|
|
1033
|
-
handleSearch();
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
return;
|
|
1037
|
-
|
|
1038
|
-
case exports.CurdAction.ADD:
|
|
1039
|
-
if (subAction === exports.CurdSubAction.EXECUTE) {
|
|
1040
|
-
sendRequest(exports.CurdAction.ADD, values, state.detailData);
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
|
-
return;
|
|
1044
|
-
|
|
1045
|
-
case exports.CurdAction.EDIT:
|
|
1046
|
-
if (subAction === exports.CurdSubAction.EXECUTE) {
|
|
1047
|
-
sendRequest(exports.CurdAction.EDIT, values, state.detailData);
|
|
1048
|
-
}
|
|
1049
|
-
|
|
1050
|
-
return;
|
|
1051
|
-
|
|
1052
|
-
case exports.CurdAction.DELETE:
|
|
1053
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1054
|
-
sendRequest(exports.CurdAction.DELETE, record, props.rowKey);
|
|
1055
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1056
|
-
handleSearch();
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
return;
|
|
1060
|
-
} //非 CurdAction 五种操作的其他请求
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
if (action && type === exports.CurdSubAction.EXECUTE) {
|
|
1064
|
-
sendRequest(action, values);
|
|
1065
|
-
}
|
|
1066
|
-
});
|
|
1067
|
-
var operateMap = lodash.reduce(props.operates, function (pair, item) {
|
|
1068
|
-
return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, item.action, item));
|
|
1069
|
-
}, {}); //根据Action获取ICurdOperateOpts
|
|
1070
|
-
|
|
1071
|
-
var getOperate = function getOperate(action) {
|
|
1072
|
-
return lodash.get(operateMap, action);
|
|
1073
|
-
};
|
|
1074
|
-
|
|
1075
|
-
var listProps = vue.computed(function () {
|
|
1076
|
-
return props.listProps;
|
|
1077
|
-
});
|
|
1078
|
-
var formProps = vue.computed(function () {
|
|
1079
|
-
return props.formProps;
|
|
1080
|
-
});
|
|
1081
|
-
var descProps = vue.computed(function () {
|
|
1082
|
-
return props.descProps;
|
|
1083
|
-
});
|
|
1084
|
-
var modalProps = vue.computed(function () {
|
|
1085
|
-
return props.modalProps;
|
|
1086
|
-
});
|
|
1087
|
-
provideProCurd({
|
|
1088
|
-
columns: columns,
|
|
1089
|
-
getSignColumns: getSignColumns,
|
|
1090
|
-
getFormItemVNode: getFormItemVNode,
|
|
1091
|
-
getItemVNode: getItemVNode,
|
|
1092
|
-
elementMap: elementMap,
|
|
1093
|
-
formElementMap: props.formElementMap,
|
|
1094
|
-
//
|
|
1095
|
-
rowKey: props.rowKey,
|
|
1096
|
-
curdState: state,
|
|
1097
|
-
formColumns: formColumns,
|
|
1098
|
-
descColumns: descColumns,
|
|
1099
|
-
tableColumns: tableColumns,
|
|
1100
|
-
searchColumns: searchColumns,
|
|
1101
|
-
//
|
|
1102
|
-
sendCurdEvent: sendCurdEvent,
|
|
1103
|
-
//
|
|
1104
|
-
operates: props.operates,
|
|
1105
|
-
getOperate: getOperate,
|
|
1106
|
-
//
|
|
1107
|
-
refreshList: handleSearch,
|
|
1108
|
-
//
|
|
1109
|
-
listProps: listProps,
|
|
1110
|
-
formProps: formProps,
|
|
1111
|
-
descProps: descProps,
|
|
1112
|
-
modalProps: modalProps
|
|
1113
|
-
});
|
|
1114
|
-
expose({
|
|
1115
|
-
sendCurdEvent: sendCurdEvent,
|
|
1116
|
-
refreshList: handleSearch
|
|
1117
|
-
});
|
|
1118
|
-
return function () {
|
|
1119
|
-
var _slots$default;
|
|
1120
|
-
|
|
1121
|
-
return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
|
|
1122
|
-
};
|
|
1123
|
-
}
|
|
1124
|
-
});
|
|
1125
|
-
var ProCurd = vue.defineComponent({
|
|
1126
|
-
props: _objectSpread2(_objectSpread2(_objectSpread2({}, lodash.omit(ProModule.props, "state", "requests")), Curd.props), {}, {
|
|
1127
|
-
curdState: {
|
|
1128
|
-
type: Object
|
|
1129
|
-
}
|
|
1130
|
-
}),
|
|
1131
|
-
setup: function setup(props, _ref5) {
|
|
1132
|
-
var _curdOperateOpts;
|
|
1133
|
-
|
|
1134
|
-
var slots = _ref5.slots,
|
|
1135
|
-
expose = _ref5.expose;
|
|
1136
|
-
var moduleRef = vue.ref();
|
|
1137
|
-
var curdRef = vue.ref();
|
|
1138
|
-
var curdState = props.curdState || vue.reactive({
|
|
1139
|
-
detailData: {}
|
|
1140
|
-
});
|
|
1141
|
-
/****************** 请求处理 **********************/
|
|
1142
|
-
//curd默认网络属性
|
|
1143
|
-
|
|
1144
|
-
var curdOperateOpts = (_curdOperateOpts = {}, _defineProperty(_curdOperateOpts, exports.CurdAction.LIST, {
|
|
1145
|
-
convertParams: function convertParams(values) {
|
|
1146
|
-
return values;
|
|
1147
|
-
},
|
|
1148
|
-
convertData: function convertData(actor) {
|
|
1149
|
-
var _actor$res;
|
|
1150
|
-
|
|
1151
|
-
return (_actor$res = actor.res) === null || _actor$res === void 0 ? void 0 : _actor$res.data;
|
|
1152
|
-
},
|
|
1153
|
-
loadingName: "listLoading",
|
|
1154
|
-
stateName: "listData"
|
|
1155
|
-
}), _defineProperty(_curdOperateOpts, exports.CurdAction.DETAIL, {
|
|
1156
|
-
convertParams: function convertParams(record, rowKey) {
|
|
1157
|
-
return lodash.pick(record, rowKey);
|
|
1158
|
-
},
|
|
1159
|
-
convertData: function convertData(actor) {
|
|
1160
|
-
var _actor$res2;
|
|
1161
|
-
|
|
1162
|
-
return (_actor$res2 = actor.res) === null || _actor$res2 === void 0 ? void 0 : _actor$res2.data;
|
|
1163
|
-
},
|
|
1164
|
-
loadingName: "detailLoading",
|
|
1165
|
-
stateName: "detailData",
|
|
1166
|
-
label: "详情"
|
|
1167
|
-
}), _defineProperty(_curdOperateOpts, exports.CurdAction.ADD, {
|
|
1168
|
-
convertParams: function convertParams(values, record) {
|
|
1169
|
-
return {
|
|
1170
|
-
body: _objectSpread2(_objectSpread2({}, record), values)
|
|
1171
|
-
};
|
|
1172
|
-
},
|
|
1173
|
-
loadingName: "operateLoading",
|
|
1174
|
-
label: "添加"
|
|
1175
|
-
}), _defineProperty(_curdOperateOpts, exports.CurdAction.EDIT, {
|
|
1176
|
-
convertParams: function convertParams(values, record) {
|
|
1177
|
-
return {
|
|
1178
|
-
body: _objectSpread2(_objectSpread2({}, record), values)
|
|
1179
|
-
};
|
|
1180
|
-
},
|
|
1181
|
-
loadingName: "operateLoading",
|
|
1182
|
-
label: "编辑"
|
|
1183
|
-
}), _defineProperty(_curdOperateOpts, exports.CurdAction.DELETE, {
|
|
1184
|
-
convertParams: function convertParams(record, rowKey) {
|
|
1185
|
-
return lodash.pick(record, rowKey);
|
|
1186
|
-
},
|
|
1187
|
-
label: "删除"
|
|
1188
|
-
}), _curdOperateOpts);
|
|
1189
|
-
/****************************** columns分类 *************************************/
|
|
1190
|
-
|
|
1191
|
-
var operates = lodash.map(props.operates, function (item) {
|
|
1192
|
-
var curdOpts = lodash.get(curdOperateOpts, item.action);
|
|
1193
|
-
return _objectSpread2(_objectSpread2({}, curdOpts), item);
|
|
1194
|
-
}); //只取配置actor的项
|
|
1195
|
-
|
|
1196
|
-
var requests = lodash.filter(operates, function (item) {
|
|
1197
|
-
return item.actor;
|
|
1198
|
-
});
|
|
1199
|
-
var moduleKeys = lodash.keys(lodash.omit(ProModule.props, "state", "requests"));
|
|
1200
|
-
expose({
|
|
1201
|
-
sendCurdEvent: function sendCurdEvent(event) {
|
|
1202
|
-
var _curdRef$value;
|
|
1203
|
-
|
|
1204
|
-
(_curdRef$value = curdRef.value) === null || _curdRef$value === void 0 ? void 0 : _curdRef$value.sendCurdEvent(event);
|
|
1205
|
-
},
|
|
1206
|
-
refreshList: function refreshList(extra) {
|
|
1207
|
-
var _curdRef$value2;
|
|
1208
|
-
|
|
1209
|
-
(_curdRef$value2 = curdRef.value) === null || _curdRef$value2 === void 0 ? void 0 : _curdRef$value2.refreshList(extra);
|
|
1210
|
-
},
|
|
1211
|
-
sendEvent: function sendEvent(action) {
|
|
1212
|
-
var _moduleRef$value;
|
|
1213
|
-
|
|
1214
|
-
(_moduleRef$value = moduleRef.value) === null || _moduleRef$value === void 0 ? void 0 : _moduleRef$value.sendEvent(action);
|
|
1215
|
-
},
|
|
1216
|
-
sendRequest: function sendRequest(requestNameOrAction) {
|
|
1217
|
-
var _moduleRef$value2;
|
|
1218
|
-
|
|
1219
|
-
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
1220
|
-
params[_key - 1] = arguments[_key];
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
(_moduleRef$value2 = moduleRef.value) === null || _moduleRef$value2 === void 0 ? void 0 : _moduleRef$value2.sendRequest.apply(_moduleRef$value2, [requestNameOrAction].concat(params));
|
|
1224
|
-
}
|
|
1225
|
-
});
|
|
1226
|
-
return function () {
|
|
1227
|
-
return vue.createVNode(ProModule, vue.mergeProps({
|
|
1228
|
-
"ref": moduleRef
|
|
1229
|
-
}, lodash.pick(props, moduleKeys), {
|
|
1230
|
-
"state": curdState,
|
|
1231
|
-
"requests": requests
|
|
1232
|
-
}), {
|
|
1233
|
-
"default": function _default() {
|
|
1234
|
-
return [vue.createVNode(Curd, vue.mergeProps({
|
|
1235
|
-
"ref": curdRef
|
|
1236
|
-
}, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(moduleKeys), ["curdState", "operates"])), {
|
|
1237
|
-
"operates": operates
|
|
1238
|
-
}), slots)];
|
|
1239
|
-
}
|
|
1240
|
-
});
|
|
1241
|
-
};
|
|
1242
|
-
}
|
|
1243
|
-
});
|
|
1244
|
-
|
|
1245
|
-
var modalCurdProps = function modalCurdProps() {
|
|
1246
|
-
return {
|
|
1247
|
-
defaultAddRecord: {
|
|
1248
|
-
type: Object
|
|
1249
|
-
}
|
|
1250
|
-
};
|
|
1251
|
-
};
|
|
1252
|
-
|
|
1253
|
-
/**
|
|
1254
|
-
* 事件处理
|
|
1255
|
-
*/
|
|
1256
|
-
var ModalCurd = vue.defineComponent({
|
|
1257
|
-
props: _objectSpread2({}, modalCurdProps()),
|
|
1258
|
-
setup: function setup(props) {
|
|
1259
|
-
var _listProps$value;
|
|
1260
|
-
|
|
1261
|
-
var _useProModule = useProModule(),
|
|
1262
|
-
dispatch = _useProModule.dispatch,
|
|
1263
|
-
sendRequest = _useProModule.sendRequest;
|
|
1264
|
-
|
|
1265
|
-
var _useProCurd = useProCurd(),
|
|
1266
|
-
rowKey = _useProCurd.rowKey,
|
|
1267
|
-
curdState = _useProCurd.curdState,
|
|
1268
|
-
listProps = _useProCurd.listProps,
|
|
1269
|
-
getOperate = _useProCurd.getOperate,
|
|
1270
|
-
refreshList = _useProCurd.refreshList;
|
|
1271
|
-
|
|
1272
|
-
var pageState = listProps === null || listProps === void 0 ? void 0 : (_listProps$value = listProps.value) === null || _listProps$value === void 0 ? void 0 : _listProps$value.pageState; //发送详情接口
|
|
1273
|
-
|
|
1274
|
-
var sendDetailRequest = function sendDetailRequest(record) {
|
|
1275
|
-
var operateOpts = getOperate(exports.CurdAction.DETAIL);
|
|
1276
|
-
|
|
1277
|
-
if (operateOpts !== null && operateOpts !== void 0 && operateOpts.actor) {
|
|
1278
|
-
//如果注册了详情接口 发起请求
|
|
1279
|
-
sendRequest(exports.CurdAction.DETAIL, record, rowKey);
|
|
1280
|
-
} else {
|
|
1281
|
-
//直接使用当前record作为详情数据
|
|
1282
|
-
dispatch({
|
|
1283
|
-
type: "detailData",
|
|
1284
|
-
payload: record
|
|
1285
|
-
});
|
|
1286
|
-
}
|
|
1287
|
-
};
|
|
1288
|
-
|
|
1289
|
-
var dealDetail = function dealDetail(subAction, _ref) {
|
|
1290
|
-
var record = _ref.record;
|
|
1291
|
-
|
|
1292
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1293
|
-
dispatch({
|
|
1294
|
-
type: "mode",
|
|
1295
|
-
payload: exports.CurdCurrentMode.DETAIL
|
|
1296
|
-
});
|
|
1297
|
-
sendDetailRequest(record);
|
|
1298
|
-
}
|
|
1299
|
-
};
|
|
1300
|
-
|
|
1301
|
-
var dealAdd = function dealAdd(subAction) {
|
|
1302
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1303
|
-
dispatch({
|
|
1304
|
-
type: "mode",
|
|
1305
|
-
payload: exports.CurdCurrentMode.ADD
|
|
1306
|
-
});
|
|
1307
|
-
dispatch({
|
|
1308
|
-
type: "detailData",
|
|
1309
|
-
payload: props.defaultAddRecord || {}
|
|
1310
|
-
});
|
|
1311
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1312
|
-
//添加成功
|
|
1313
|
-
if (pageState) {
|
|
1314
|
-
pageState.page = 1; //重置当前页数
|
|
1315
|
-
} //刷新List
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
refreshList();
|
|
1319
|
-
|
|
1320
|
-
if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
|
|
1321
|
-
dispatch({
|
|
1322
|
-
type: "detailData",
|
|
1323
|
-
payload: props.defaultAddRecord || {}
|
|
1324
|
-
});
|
|
1325
|
-
} else {
|
|
1326
|
-
dispatch({
|
|
1327
|
-
type: "mode",
|
|
1328
|
-
payload: undefined
|
|
1329
|
-
});
|
|
1330
|
-
}
|
|
1331
|
-
}
|
|
1332
|
-
};
|
|
1333
|
-
|
|
1334
|
-
var dealEdit = function dealEdit(subAction, _ref2) {
|
|
1335
|
-
var record = _ref2.record;
|
|
1336
|
-
|
|
1337
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1338
|
-
dispatch({
|
|
1339
|
-
type: "mode",
|
|
1340
|
-
payload: exports.CurdCurrentMode.EDIT
|
|
1341
|
-
});
|
|
1342
|
-
sendDetailRequest(record);
|
|
1343
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1344
|
-
// 编辑成功
|
|
1345
|
-
dispatch({
|
|
1346
|
-
type: "mode",
|
|
1347
|
-
payload: undefined
|
|
1348
|
-
}); //刷新列表
|
|
1349
|
-
|
|
1350
|
-
refreshList();
|
|
1351
|
-
}
|
|
1352
|
-
};
|
|
1353
|
-
|
|
1354
|
-
useModuleEvent(function (_ref3) {
|
|
1355
|
-
var type = _ref3.type,
|
|
1356
|
-
payload = _ref3.payload,
|
|
1357
|
-
source = _ref3.source;
|
|
1358
|
-
|
|
1359
|
-
if (source) {
|
|
1360
|
-
return;
|
|
1361
|
-
}
|
|
1362
|
-
|
|
1363
|
-
var action = type;
|
|
1364
|
-
var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
|
|
1365
|
-
var record = payload === null || payload === void 0 ? void 0 : payload.record;
|
|
1366
|
-
|
|
1367
|
-
if (action === RequestAction.Success) {
|
|
1368
|
-
//覆盖
|
|
1369
|
-
action = lodash.get(payload, ["requestOpts", "action"]);
|
|
1370
|
-
subAction = exports.CurdSubAction.SUCCESS;
|
|
1371
|
-
}
|
|
1372
|
-
|
|
1373
|
-
switch (action) {
|
|
1374
|
-
case exports.CurdAction.DETAIL:
|
|
1375
|
-
dealDetail(subAction, {
|
|
1376
|
-
record: record
|
|
1377
|
-
});
|
|
1378
|
-
break;
|
|
1379
|
-
|
|
1380
|
-
case exports.CurdAction.ADD:
|
|
1381
|
-
dealAdd(subAction);
|
|
1382
|
-
break;
|
|
1383
|
-
|
|
1384
|
-
case exports.CurdAction.EDIT:
|
|
1385
|
-
dealEdit(subAction, {
|
|
1386
|
-
record: record
|
|
1387
|
-
});
|
|
1388
|
-
break;
|
|
1389
|
-
}
|
|
1390
|
-
});
|
|
1391
|
-
return function () {
|
|
1392
|
-
return null;
|
|
1393
|
-
};
|
|
1394
|
-
}
|
|
1395
|
-
});
|
|
1396
|
-
var ProModalCurd = vue.defineComponent({
|
|
1397
|
-
props: _objectSpread2(_objectSpread2({}, ProCurd.props), ModalCurd.props),
|
|
1398
|
-
setup: function setup(props, _ref4) {
|
|
1399
|
-
var slots = _ref4.slots,
|
|
1400
|
-
expose = _ref4.expose;
|
|
1401
|
-
var curdRef = vue.ref();
|
|
1402
|
-
expose(createExpose(CurdMethods, curdRef));
|
|
1403
|
-
var invalidKeys = lodash.keys(ModalCurd.props);
|
|
1404
|
-
return function () {
|
|
1405
|
-
var _slots$default;
|
|
1406
|
-
|
|
1407
|
-
return vue.createVNode(ProCurd, vue.mergeProps({
|
|
1408
|
-
"ref": curdRef
|
|
1409
|
-
}, lodash.omit(props, invalidKeys)), {
|
|
1410
|
-
"default": function _default() {
|
|
1411
|
-
return [vue.createVNode(ModalCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
1412
|
-
}
|
|
1413
|
-
});
|
|
1414
|
-
};
|
|
1415
|
-
}
|
|
1416
|
-
});
|
|
1417
|
-
|
|
1418
|
-
var pageCurdProps = function pageCurdProps() {
|
|
1419
|
-
return {
|
|
1420
|
-
defaultAddRecord: {
|
|
1421
|
-
type: Object
|
|
1422
|
-
},
|
|
1423
|
-
routeBack: {
|
|
1424
|
-
type: Function
|
|
1425
|
-
}
|
|
1426
|
-
};
|
|
1427
|
-
};
|
|
1428
|
-
|
|
1429
|
-
var PageCurd = vue.defineComponent({
|
|
1430
|
-
props: _objectSpread2({}, pageCurdProps()),
|
|
1431
|
-
setup: function setup(props) {
|
|
1432
|
-
var router = vueRouter.useRouter();
|
|
1433
|
-
var route = vueRouter.useRoute();
|
|
1434
|
-
|
|
1435
|
-
var _useProModule = useProModule(),
|
|
1436
|
-
dispatch = _useProModule.dispatch,
|
|
1437
|
-
sendRequest = _useProModule.sendRequest;
|
|
1438
|
-
|
|
1439
|
-
var _useProCurd = useProCurd(),
|
|
1440
|
-
rowKey = _useProCurd.rowKey,
|
|
1441
|
-
curdState = _useProCurd.curdState;
|
|
1442
|
-
|
|
1443
|
-
var dealList = function dealList(subAction) {
|
|
1444
|
-
if (subAction === exports.CurdSubAction.PAGE) {
|
|
1445
|
-
//其实就是个重置过程
|
|
1446
|
-
dispatch({
|
|
1447
|
-
type: "mode",
|
|
1448
|
-
payload: undefined
|
|
1449
|
-
});
|
|
1450
|
-
dispatch({
|
|
1451
|
-
type: "detailData",
|
|
1452
|
-
payload: {}
|
|
1453
|
-
});
|
|
1454
|
-
dispatch({
|
|
1455
|
-
type: "detailLoading",
|
|
1456
|
-
payload: false
|
|
1457
|
-
});
|
|
1458
|
-
dispatch({
|
|
1459
|
-
type: "addAction",
|
|
1460
|
-
payload: undefined
|
|
1461
|
-
});
|
|
1462
|
-
}
|
|
1463
|
-
};
|
|
1464
|
-
|
|
1465
|
-
var dealDetail = function dealDetail(subAction, _ref) {
|
|
1466
|
-
var record = _ref.record;
|
|
1467
|
-
|
|
1468
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1469
|
-
router.push({
|
|
1470
|
-
path: "".concat(route.path, "/detail"),
|
|
1471
|
-
query: lodash.pick(record, rowKey)
|
|
1472
|
-
});
|
|
1473
|
-
} else if (subAction === exports.CurdSubAction.PAGE) {
|
|
1474
|
-
dispatch({
|
|
1475
|
-
type: "mode",
|
|
1476
|
-
payload: exports.CurdCurrentMode.DETAIL
|
|
1477
|
-
});
|
|
1478
|
-
sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
|
|
1479
|
-
}
|
|
1480
|
-
};
|
|
1481
|
-
|
|
1482
|
-
var dealAdd = function dealAdd(subAction) {
|
|
1483
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1484
|
-
router.push({
|
|
1485
|
-
path: "".concat(route.path, "/add")
|
|
1486
|
-
});
|
|
1487
|
-
} else if (subAction === exports.CurdSubAction.PAGE) {
|
|
1488
|
-
dispatch({
|
|
1489
|
-
type: "mode",
|
|
1490
|
-
payload: exports.CurdCurrentMode.ADD
|
|
1491
|
-
});
|
|
1492
|
-
dispatch({
|
|
1493
|
-
type: "detailData",
|
|
1494
|
-
payload: props.defaultAddRecord || {}
|
|
1495
|
-
});
|
|
1496
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1497
|
-
if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
|
|
1498
|
-
dispatch({
|
|
1499
|
-
type: "detailData",
|
|
1500
|
-
payload: props.defaultAddRecord || {}
|
|
1501
|
-
});
|
|
1502
|
-
} else {
|
|
1503
|
-
props.routeBack ? props.routeBack(exports.CurdAction.ADD) : router.go(-1);
|
|
1504
|
-
}
|
|
1505
|
-
}
|
|
1506
|
-
};
|
|
1507
|
-
|
|
1508
|
-
var dealEdit = function dealEdit(subAction, _ref2) {
|
|
1509
|
-
var record = _ref2.record;
|
|
1510
|
-
|
|
1511
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1512
|
-
router.push({
|
|
1513
|
-
path: "".concat(route.path, "/edit"),
|
|
1514
|
-
query: lodash.pick(record, rowKey)
|
|
1515
|
-
});
|
|
1516
|
-
} else if (subAction === exports.CurdSubAction.PAGE) {
|
|
1517
|
-
dispatch({
|
|
1518
|
-
type: "mode",
|
|
1519
|
-
payload: exports.CurdCurrentMode.EDIT
|
|
1520
|
-
});
|
|
1521
|
-
sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
|
|
1522
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1523
|
-
props.routeBack ? props.routeBack(exports.CurdAction.EDIT) : router.go(-1);
|
|
1524
|
-
}
|
|
1525
|
-
};
|
|
1526
|
-
|
|
1527
|
-
useModuleEvent(function (_ref3) {
|
|
1528
|
-
var type = _ref3.type,
|
|
1529
|
-
payload = _ref3.payload,
|
|
1530
|
-
source = _ref3.source;
|
|
1531
|
-
|
|
1532
|
-
if (source) {
|
|
1533
|
-
return;
|
|
1534
|
-
}
|
|
1535
|
-
|
|
1536
|
-
var action = type;
|
|
1537
|
-
var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
|
|
1538
|
-
var record = payload === null || payload === void 0 ? void 0 : payload.record;
|
|
1539
|
-
|
|
1540
|
-
if (action === RequestAction.Success) {
|
|
1541
|
-
//覆盖
|
|
1542
|
-
action = lodash.get(payload, ["requestOpts", "action"]);
|
|
1543
|
-
subAction = exports.CurdSubAction.SUCCESS;
|
|
1544
|
-
}
|
|
1545
|
-
|
|
1546
|
-
switch (action) {
|
|
1547
|
-
case exports.CurdAction.LIST:
|
|
1548
|
-
dealList(subAction);
|
|
1549
|
-
break;
|
|
1550
|
-
|
|
1551
|
-
case exports.CurdAction.DETAIL:
|
|
1552
|
-
dealDetail(subAction, {
|
|
1553
|
-
record: record
|
|
1554
|
-
});
|
|
1555
|
-
break;
|
|
1556
|
-
|
|
1557
|
-
case exports.CurdAction.ADD:
|
|
1558
|
-
dealAdd(subAction);
|
|
1559
|
-
break;
|
|
1560
|
-
|
|
1561
|
-
case exports.CurdAction.EDIT:
|
|
1562
|
-
dealEdit(subAction, {
|
|
1563
|
-
record: record
|
|
1564
|
-
});
|
|
1565
|
-
break;
|
|
1566
|
-
}
|
|
1567
|
-
});
|
|
1568
|
-
return function () {
|
|
1569
|
-
return null;
|
|
1570
|
-
};
|
|
1571
|
-
}
|
|
1572
|
-
});
|
|
1573
|
-
var ProPageCurd = vue.defineComponent({
|
|
1574
|
-
props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
|
|
1575
|
-
setup: function setup(props, _ref4) {
|
|
1576
|
-
var slots = _ref4.slots,
|
|
1577
|
-
expose = _ref4.expose;
|
|
1578
|
-
var curdRef = vue.ref();
|
|
1579
|
-
expose(createExpose(CurdMethods, curdRef));
|
|
1580
|
-
var invalidKeys = lodash.keys(PageCurd.props);
|
|
1581
|
-
return function () {
|
|
1582
|
-
var _slots$default;
|
|
1583
|
-
|
|
1584
|
-
return vue.createVNode(ProCurd, vue.mergeProps({
|
|
1585
|
-
"ref": curdRef
|
|
1586
|
-
}, lodash.omit(props, invalidKeys)), {
|
|
1587
|
-
"default": function _default() {
|
|
1588
|
-
return [vue.createVNode(PageCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
1589
|
-
}
|
|
1590
|
-
});
|
|
1591
|
-
};
|
|
1592
|
-
}
|
|
1593
|
-
});
|
|
1594
|
-
|
|
1595
|
-
function _isSlot(s) {
|
|
1596
|
-
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
1597
|
-
}
|
|
1598
|
-
|
|
1599
|
-
var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
|
|
1600
|
-
return vue.defineComponent({
|
|
1601
|
-
props: _objectSpread2(_objectSpread2({}, Descriptions.props), {}, {
|
|
1602
|
-
//重写Item content
|
|
1603
|
-
renderItem: {
|
|
1604
|
-
type: Function
|
|
1605
|
-
},
|
|
1606
|
-
//标记名称
|
|
1607
|
-
signName: {
|
|
1608
|
-
type: String
|
|
1609
|
-
}
|
|
1610
|
-
}),
|
|
1611
|
-
setup: function setup(props, _ref) {
|
|
1612
|
-
var slots = _ref.slots;
|
|
1613
|
-
|
|
1614
|
-
var _useProCurd = useProCurd(),
|
|
1615
|
-
getItemVNode = _useProCurd.getItemVNode,
|
|
1616
|
-
curdState = _useProCurd.curdState,
|
|
1617
|
-
descColumns = _useProCurd.descColumns,
|
|
1618
|
-
getSignColumns = _useProCurd.getSignColumns;
|
|
1619
|
-
|
|
1620
|
-
var descVNodes = vue.computed(function () {
|
|
1621
|
-
var columns = props.signName ? getSignColumns(props.signName) : descColumns.value;
|
|
1622
|
-
return lodash.map(columns, function (item) {
|
|
1623
|
-
var _slot;
|
|
1624
|
-
|
|
1625
|
-
var _props$renderItem;
|
|
1626
|
-
|
|
1627
|
-
var vn = (_props$renderItem = props.renderItem) === null || _props$renderItem === void 0 ? void 0 : _props$renderItem.call(props, item);
|
|
1628
|
-
|
|
1629
|
-
if (vn) {
|
|
1630
|
-
return vn;
|
|
1631
|
-
}
|
|
1632
|
-
|
|
1633
|
-
var value = lodash.get(curdState.detailData, item.dataIndex);
|
|
1634
|
-
return vue.createVNode(DescriptionsItem, vue.mergeProps({
|
|
1635
|
-
"key": item.dataIndex,
|
|
1636
|
-
"label": item.title
|
|
1637
|
-
}, lodash.get(item.extra, "desc")), _isSlot(_slot = getItemVNode(item, value)) ? _slot : {
|
|
1638
|
-
"default": function _default() {
|
|
1639
|
-
return [_slot];
|
|
1640
|
-
}
|
|
1641
|
-
});
|
|
1642
|
-
});
|
|
1643
|
-
});
|
|
1644
|
-
return function () {
|
|
1645
|
-
var _slots$start, _slots$default;
|
|
1646
|
-
|
|
1647
|
-
return vue.createVNode(Descriptions, props, _objectSpread2({
|
|
1648
|
-
"default": function _default() {
|
|
1649
|
-
return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), descVNodes.value, (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
1650
|
-
}
|
|
1651
|
-
}, lodash.omit(slots, "default", "start")));
|
|
1652
|
-
};
|
|
1653
|
-
}
|
|
1654
|
-
});
|
|
1655
|
-
};
|
|
1656
|
-
|
|
1657
|
-
var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
|
|
1658
|
-
return {
|
|
1659
|
-
//标记名称
|
|
1660
|
-
signName: {
|
|
1661
|
-
type: String
|
|
1662
|
-
},
|
|
1663
|
-
//form model 绑定的curdState中的对象
|
|
1664
|
-
modelName: {
|
|
1665
|
-
type: String,
|
|
1666
|
-
"default": "detailData"
|
|
1667
|
-
},
|
|
1668
|
-
//是否使用operate bar
|
|
1669
|
-
operateBar: {
|
|
1670
|
-
type: Boolean,
|
|
1671
|
-
"default": true
|
|
1672
|
-
},
|
|
1673
|
-
//显示 确定并继续 按钮
|
|
1674
|
-
showContinueAdd: {
|
|
1675
|
-
type: Boolean,
|
|
1676
|
-
"default": false
|
|
1677
|
-
},
|
|
1678
|
-
//
|
|
1679
|
-
okText: {
|
|
1680
|
-
type: String,
|
|
1681
|
-
"default": "确定"
|
|
1682
|
-
},
|
|
1683
|
-
okButtonProps: {
|
|
1684
|
-
type: Object
|
|
1685
|
-
},
|
|
1686
|
-
//
|
|
1687
|
-
continueText: {
|
|
1688
|
-
type: String,
|
|
1689
|
-
"default": "确定并继续"
|
|
1690
|
-
},
|
|
1691
|
-
continueButtonProps: {
|
|
1692
|
-
type: Object
|
|
1693
|
-
}
|
|
1694
|
-
};
|
|
1695
|
-
};
|
|
1696
|
-
|
|
1697
|
-
var createCurdForm = function createCurdForm(Form, Button, convertFormProps, formMethods) {
|
|
1698
|
-
return vue.defineComponent({
|
|
1699
|
-
inheritAttrs: false,
|
|
1700
|
-
props: _objectSpread2(_objectSpread2({}, Form.props), proCurdAddOrEditProps()),
|
|
1701
|
-
setup: function setup(props, _ref) {
|
|
1702
|
-
var slots = _ref.slots,
|
|
1703
|
-
attrs = _ref.attrs,
|
|
1704
|
-
expose = _ref.expose;
|
|
1705
|
-
|
|
1706
|
-
var _useProCurd = useProCurd(),
|
|
1707
|
-
elementMap = _useProCurd.elementMap,
|
|
1708
|
-
formElementMap = _useProCurd.formElementMap,
|
|
1709
|
-
curdState = _useProCurd.curdState,
|
|
1710
|
-
formColumns = _useProCurd.formColumns,
|
|
1711
|
-
getSignColumns = _useProCurd.getSignColumns,
|
|
1712
|
-
sendCurdEvent = _useProCurd.sendCurdEvent;
|
|
1713
|
-
|
|
1714
|
-
var formRef = vue.ref();
|
|
1715
|
-
var columns = vue.computed(function () {
|
|
1716
|
-
if (props.signName) {
|
|
1717
|
-
return getSignColumns(props.signName);
|
|
1718
|
-
}
|
|
1719
|
-
|
|
1720
|
-
return formColumns.value;
|
|
1721
|
-
});
|
|
1722
|
-
|
|
1723
|
-
var handleFinish = function handleFinish(values, originValues) {
|
|
1724
|
-
if (attrs.onFinish) {
|
|
1725
|
-
attrs.onFinish(values, originValues);
|
|
1726
|
-
return;
|
|
1727
|
-
}
|
|
1728
|
-
|
|
1729
|
-
if (curdState.mode === exports.CurdCurrentMode.EDIT) {
|
|
1730
|
-
//edit
|
|
1731
|
-
sendCurdEvent({
|
|
1732
|
-
action: exports.CurdAction.EDIT,
|
|
1733
|
-
type: exports.CurdSubAction.EXECUTE,
|
|
1734
|
-
values: values
|
|
1735
|
-
});
|
|
1736
|
-
} else {
|
|
1737
|
-
//add
|
|
1738
|
-
sendCurdEvent({
|
|
1739
|
-
action: exports.CurdAction.ADD,
|
|
1740
|
-
type: exports.CurdSubAction.EXECUTE,
|
|
1741
|
-
values: values
|
|
1742
|
-
});
|
|
1743
|
-
}
|
|
1744
|
-
};
|
|
1745
|
-
|
|
1746
|
-
var handleAdd = function handleAdd() {
|
|
1747
|
-
var _formRef$value;
|
|
1748
|
-
|
|
1749
|
-
curdState.addAction = exports.CurdAddAction.NORMAL;
|
|
1750
|
-
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
1751
|
-
};
|
|
1752
|
-
|
|
1753
|
-
var handleContinueAdd = function handleContinueAdd() {
|
|
1754
|
-
var _formRef$value2;
|
|
1755
|
-
|
|
1756
|
-
curdState.addAction = exports.CurdAddAction.CONTINUE;
|
|
1757
|
-
(_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.submit();
|
|
1758
|
-
};
|
|
1759
|
-
|
|
1760
|
-
expose(createExpose(formMethods, formRef));
|
|
1761
|
-
return function () {
|
|
1762
|
-
var _slots$divide, _slots$operateStart, _slots$operateCenter, _slots$operateEnd, _slots$default;
|
|
1763
|
-
|
|
1764
|
-
return vue.createVNode(Form, vue.mergeProps({
|
|
1765
|
-
"ref": formRef
|
|
1766
|
-
}, lodash.omit(attrs, "onFinish"), props, {
|
|
1767
|
-
"elementMap": props.elementMap || elementMap,
|
|
1768
|
-
"formElementMap": props.formElementMap || formElementMap,
|
|
1769
|
-
"columns": props.columns || columns.value,
|
|
1770
|
-
"model": props.model || curdState[props.modelName],
|
|
1771
|
-
"readonly": curdState.mode === exports.CurdCurrentMode.DETAIL,
|
|
1772
|
-
"onFinish": handleFinish
|
|
1773
|
-
}, convertFormProps === null || convertFormProps === void 0 ? void 0 : convertFormProps(curdState)), _objectSpread2({
|
|
1774
|
-
"default": function _default() {
|
|
1775
|
-
return [(_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), props.operateBar && vue.createVNode("div", {
|
|
1776
|
-
"class": "pro-curd-form-operate"
|
|
1777
|
-
}, [(_slots$operateStart = slots.operateStart) === null || _slots$operateStart === void 0 ? void 0 : _slots$operateStart.call(slots), curdState.mode !== exports.CurdCurrentMode.DETAIL && vue.createVNode(Button, vue.mergeProps({
|
|
1778
|
-
"onClick": handleAdd
|
|
1779
|
-
}, props.okButtonProps, {
|
|
1780
|
-
"loading": curdState.operateLoading
|
|
1781
|
-
}), {
|
|
1782
|
-
"default": function _default() {
|
|
1783
|
-
return [props.okText];
|
|
1784
|
-
}
|
|
1785
|
-
}), (_slots$operateCenter = slots.operateCenter) === null || _slots$operateCenter === void 0 ? void 0 : _slots$operateCenter.call(slots), props.showContinueAdd && curdState.mode === exports.CurdCurrentMode.ADD && vue.createVNode(Button, vue.mergeProps({
|
|
1786
|
-
"onClick": handleContinueAdd
|
|
1787
|
-
}, props.continueButtonProps, {
|
|
1788
|
-
"loading": curdState.operateLoading
|
|
1789
|
-
}), {
|
|
1790
|
-
"default": function _default() {
|
|
1791
|
-
return [props.continueText];
|
|
1792
|
-
}
|
|
1793
|
-
}), (_slots$operateEnd = slots.operateEnd) === null || _slots$operateEnd === void 0 ? void 0 : _slots$operateEnd.call(slots)]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
1794
|
-
}
|
|
1795
|
-
}, lodash.omit(slots, "default", "divide", "operateStart", "operateCenter", "operateEnd")));
|
|
1796
|
-
};
|
|
1797
|
-
}
|
|
1798
|
-
});
|
|
1799
|
-
};
|
|
1800
|
-
|
|
1801
|
-
var proCurdListProps = function proCurdListProps() {
|
|
1802
|
-
return {
|
|
1803
|
-
/**
|
|
1804
|
-
* extra 是否放到SearchForm中
|
|
1805
|
-
*/
|
|
1806
|
-
extraInSearch: {
|
|
1807
|
-
type: Boolean,
|
|
1808
|
-
"default": undefined
|
|
1809
|
-
},
|
|
1810
|
-
//search
|
|
1811
|
-
searchProps: {
|
|
1812
|
-
type: Object
|
|
1813
|
-
},
|
|
1814
|
-
//table
|
|
1815
|
-
tableProps: {
|
|
1816
|
-
type: Object
|
|
1817
|
-
},
|
|
1818
|
-
//pagination是否展示
|
|
1819
|
-
paginationProps: {
|
|
1820
|
-
type: Object
|
|
1821
|
-
},
|
|
1822
|
-
showPagination: {
|
|
1823
|
-
type: Boolean,
|
|
1824
|
-
"default": true
|
|
1825
|
-
},
|
|
1826
|
-
//pageState
|
|
1827
|
-
pageState: {
|
|
1828
|
-
type: Object
|
|
1829
|
-
}
|
|
1830
|
-
};
|
|
1831
|
-
};
|
|
1832
|
-
|
|
1833
|
-
var createCurdList = function createCurdList(SearchForm, Table) {
|
|
1834
|
-
return vue.defineComponent({
|
|
1835
|
-
props: _objectSpread2({}, proCurdListProps()),
|
|
1836
|
-
setup: function setup(props, _ref) {
|
|
1837
|
-
var slots = _ref.slots;
|
|
1838
|
-
|
|
1839
|
-
var _useProCurd = useProCurd(),
|
|
1840
|
-
elementMap = _useProCurd.elementMap,
|
|
1841
|
-
formElementMap = _useProCurd.formElementMap,
|
|
1842
|
-
curdState = _useProCurd.curdState,
|
|
1843
|
-
searchColumns = _useProCurd.searchColumns,
|
|
1844
|
-
tableColumns = _useProCurd.tableColumns,
|
|
1845
|
-
sendCurdEvent = _useProCurd.sendCurdEvent,
|
|
1846
|
-
operates = _useProCurd.operates;
|
|
1847
|
-
/******************* search pagination ********************/
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
|
|
1851
|
-
var prevValues;
|
|
1852
|
-
|
|
1853
|
-
var handleSearch = function handleSearch() {
|
|
1854
|
-
sendCurdEvent({
|
|
1855
|
-
action: exports.CurdAction.LIST,
|
|
1856
|
-
type: exports.CurdSubAction.EMIT,
|
|
1857
|
-
values: _objectSpread2(_objectSpread2({}, prevValues), pageState)
|
|
1858
|
-
});
|
|
1859
|
-
};
|
|
1860
|
-
|
|
1861
|
-
var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
|
|
1862
|
-
prevValues = values;
|
|
1863
|
-
pageState.page = 1;
|
|
1864
|
-
handleSearch();
|
|
1865
|
-
};
|
|
1866
|
-
/******************* table ********************/
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
var tableOperateItems = lodash.map(lodash.filter(operates, function (item) {
|
|
1870
|
-
var action = item.action;
|
|
1871
|
-
return action === exports.CurdAction.DETAIL || action === exports.CurdAction.EDIT || action === exports.CurdAction.DELETE || item.tableOperate;
|
|
1872
|
-
}), function (operate) {
|
|
1873
|
-
var item = _objectSpread2(_objectSpread2({}, lodash.pick(operate, "label", "element", "disabled", "sort", "onClick")), {}, {
|
|
1874
|
-
show: !lodash.isUndefined(operate === null || operate === void 0 ? void 0 : operate.show) ? operate === null || operate === void 0 ? void 0 : operate.show : false,
|
|
1875
|
-
value: operate.action
|
|
1876
|
-
});
|
|
1877
|
-
|
|
1878
|
-
if (!item.onClick) {
|
|
1879
|
-
item.onClick = function (record) {
|
|
1880
|
-
sendCurdEvent({
|
|
1881
|
-
action: operate.action,
|
|
1882
|
-
type: exports.CurdSubAction.EMIT,
|
|
1883
|
-
record: record
|
|
1884
|
-
});
|
|
1885
|
-
};
|
|
1886
|
-
}
|
|
1887
|
-
|
|
1888
|
-
return item;
|
|
1889
|
-
}); //新配置的operate item,添加默认发送事件方法
|
|
1890
|
-
|
|
1891
|
-
var convertOperateItems = function convertOperateItems(list) {
|
|
1892
|
-
return lodash.map(list, function (item) {
|
|
1893
|
-
if (!item.onClick) {
|
|
1894
|
-
return _objectSpread2(_objectSpread2({}, item), {}, {
|
|
1895
|
-
onClick: function onClick(record) {
|
|
1896
|
-
sendCurdEvent({
|
|
1897
|
-
action: "operate",
|
|
1898
|
-
type: item.value,
|
|
1899
|
-
record: record
|
|
1900
|
-
});
|
|
1901
|
-
}
|
|
1902
|
-
});
|
|
1903
|
-
}
|
|
1904
|
-
|
|
1905
|
-
return item;
|
|
1906
|
-
});
|
|
1907
|
-
};
|
|
1908
|
-
|
|
1909
|
-
return function () {
|
|
1910
|
-
var _curdState$listData, _slots$start, _props$searchProps, _slots$divide, _slots$divide2, _slots$footerStart, _slots$pagination, _curdState$listData2, _slots$footerEnd, _slots$end;
|
|
1911
|
-
|
|
1912
|
-
var tableProps = props.tableProps;
|
|
1913
|
-
|
|
1914
|
-
var rewriteTableProps = _objectSpread2(_objectSpread2({
|
|
1915
|
-
elementMap: elementMap,
|
|
1916
|
-
columns: tableColumns.value
|
|
1917
|
-
}, lodash.omit(tableProps, "slots", "operate")), {}, {
|
|
1918
|
-
operate: lodash.mergeWith({
|
|
1919
|
-
items: tableOperateItems
|
|
1920
|
-
}, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate, function (objValue, srcValue) {
|
|
1921
|
-
if (lodash.isArray(objValue) && lodash.isArray(srcValue)) {
|
|
1922
|
-
return lodash.concat(objValue, convertOperateItems(srcValue));
|
|
1923
|
-
}
|
|
1924
|
-
}),
|
|
1925
|
-
paginationState: {
|
|
1926
|
-
page: pageState.page,
|
|
1927
|
-
pageSize: pageState.pageSize
|
|
1928
|
-
},
|
|
1929
|
-
loading: curdState.listLoading,
|
|
1930
|
-
dataSource: (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
|
|
1931
|
-
});
|
|
1932
|
-
|
|
1933
|
-
var extra = slots.extra ? vue.createVNode("div", {
|
|
1934
|
-
"class": "pro-curd-list-extra"
|
|
1935
|
-
}, [slots.extra()]) : null;
|
|
1936
|
-
return vue.createVNode(vue.Fragment, null, [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), slots.search ? slots.search({
|
|
1937
|
-
executeSearchWithResetPage: executeSearchWithResetPage
|
|
1938
|
-
}) : vue.createVNode(SearchForm, vue.mergeProps({
|
|
1939
|
-
"formElementMap": formElementMap,
|
|
1940
|
-
"columns": searchColumns.value
|
|
1941
|
-
}, lodash.omit(props.searchProps, "slots"), {
|
|
1942
|
-
"onFinish": executeSearchWithResetPage
|
|
1943
|
-
}), _objectSpread2({
|
|
1944
|
-
"default": function _default() {
|
|
1945
|
-
return [props.extraInSearch && extra];
|
|
1946
|
-
}
|
|
1947
|
-
}, (_props$searchProps = props.searchProps) === null || _props$searchProps === void 0 ? void 0 : _props$searchProps.slots)), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !props.extraInSearch && extra, slots.table ? slots.table(rewriteTableProps) : vue.createVNode(Table, rewriteTableProps, tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), props.showPagination && vue.createVNode("div", {
|
|
1948
|
-
"class": "pro-curd-list-footer"
|
|
1949
|
-
}, [(_slots$footerStart = slots.footerStart) === null || _slots$footerStart === void 0 ? void 0 : _slots$footerStart.call(slots), (_slots$pagination = slots.pagination) === null || _slots$pagination === void 0 ? void 0 : _slots$pagination.call(slots, pageState, (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total, handleSearch), (_slots$footerEnd = slots.footerEnd) === null || _slots$footerEnd === void 0 ? void 0 : _slots$footerEnd.call(slots)]), (_slots$end = slots.end) === null || _slots$end === void 0 ? void 0 : _slots$end.call(slots)]);
|
|
1950
|
-
};
|
|
1951
|
-
}
|
|
1952
|
-
});
|
|
1953
|
-
};
|
|
1954
|
-
|
|
1955
|
-
/**
|
|
1956
|
-
* ProFormList ctx
|
|
1957
|
-
*/
|
|
1958
|
-
|
|
1959
|
-
var ProFormListKey = Symbol("pro-form-list");
|
|
1960
|
-
var useProFormList = function useProFormList() {
|
|
1961
|
-
return vue.inject(ProFormListKey);
|
|
1962
|
-
};
|
|
1963
|
-
var provideProFormList = function provideProFormList(ctx) {
|
|
1964
|
-
vue.provide(ProFormListKey, ctx);
|
|
1965
|
-
};
|
|
1966
|
-
var FormListProvider = vue.defineComponent({
|
|
1967
|
-
props: {
|
|
1968
|
-
pathList: {
|
|
1969
|
-
type: Array
|
|
1970
|
-
}
|
|
1971
|
-
},
|
|
1972
|
-
setup: function setup(props, _ref) {
|
|
1973
|
-
var slots = _ref.slots;
|
|
1974
|
-
provideProFormList({
|
|
1975
|
-
pathList: props.pathList
|
|
1976
|
-
});
|
|
1977
|
-
return function () {
|
|
1978
|
-
var _slots$default;
|
|
1979
|
-
|
|
1980
|
-
return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
|
|
1981
|
-
};
|
|
1982
|
-
}
|
|
1983
|
-
});
|
|
1984
|
-
|
|
1985
|
-
var createFormList = function createFormList(FormItem) {
|
|
1986
|
-
return vue.defineComponent({
|
|
1987
|
-
props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
|
|
1988
|
-
//每行默认id
|
|
1989
|
-
rowKey: {
|
|
1990
|
-
type: String,
|
|
1991
|
-
"default": "id"
|
|
1992
|
-
}
|
|
1993
|
-
}),
|
|
1994
|
-
setup: function setup(props, _ref2) {
|
|
1995
|
-
var slots = _ref2.slots;
|
|
1996
|
-
|
|
1997
|
-
var _useProForm = useProForm(),
|
|
1998
|
-
formState = _useProForm.formState,
|
|
1999
|
-
readonly = _useProForm.readonly;
|
|
2000
|
-
|
|
2001
|
-
var formListCtx = useProFormList();
|
|
2002
|
-
var nameList = convertPathToList(props.name);
|
|
2003
|
-
var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
|
|
2004
|
-
|
|
2005
|
-
var handleAdd = function handleAdd() {
|
|
2006
|
-
var targetList = lodash.get(formState, path);
|
|
2007
|
-
|
|
2008
|
-
if (!lodash.isArray(targetList)) {
|
|
2009
|
-
targetList = [];
|
|
2010
|
-
}
|
|
2011
|
-
|
|
2012
|
-
targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
|
|
2013
|
-
lodash.set(formState, path, targetList);
|
|
2014
|
-
};
|
|
2015
|
-
|
|
2016
|
-
var handleRemove = function handleRemove(index) {
|
|
2017
|
-
var targetList = lodash.get(formState, path);
|
|
2018
|
-
|
|
2019
|
-
if (lodash.size(targetList) <= 0) {
|
|
2020
|
-
return;
|
|
2021
|
-
}
|
|
2022
|
-
|
|
2023
|
-
targetList.splice(index, 1);
|
|
2024
|
-
};
|
|
2025
|
-
|
|
2026
|
-
return function () {
|
|
2027
|
-
var _slots$add;
|
|
2028
|
-
|
|
2029
|
-
return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
|
|
2030
|
-
"default": function _default() {
|
|
2031
|
-
return [lodash.map(lodash.get(formState, path), function (item, index) {
|
|
2032
|
-
var _slots$default2, _slots$itemAdd, _slots$itemMinus;
|
|
2033
|
-
|
|
2034
|
-
return vue.createVNode(FormListProvider, {
|
|
2035
|
-
"key": item[props.rowKey] || index,
|
|
2036
|
-
"pathList": [].concat(_toConsumableArray(path), [index])
|
|
2037
|
-
}, {
|
|
2038
|
-
"default": function _default() {
|
|
2039
|
-
return [vue.createVNode("div", {
|
|
2040
|
-
"class": "pro-form-list-item"
|
|
2041
|
-
}, [(_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots), !readonly.value && vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
|
|
2042
|
-
"class": "pro-form-list-item-add",
|
|
2043
|
-
"onClick": handleAdd
|
|
2044
|
-
}, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
|
|
2045
|
-
"class": "pro-form-list-item-minus",
|
|
2046
|
-
"onClick": function onClick() {
|
|
2047
|
-
return handleRemove(index);
|
|
2048
|
-
}
|
|
2049
|
-
}, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
|
|
2050
|
-
}
|
|
2051
|
-
});
|
|
2052
|
-
}), !readonly.value && vue.createVNode("div", {
|
|
2053
|
-
"class": "pro-form-list-add",
|
|
2054
|
-
"onClick": handleAdd
|
|
2055
|
-
}, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
|
|
2056
|
-
}
|
|
2057
|
-
});
|
|
2058
|
-
};
|
|
2059
|
-
}
|
|
2060
|
-
});
|
|
2061
|
-
};
|
|
2062
|
-
|
|
2063
|
-
var ProFormKey = Symbol("pro-form");
|
|
2064
|
-
var useProForm = function useProForm() {
|
|
2065
|
-
return vue.inject(ProFormKey);
|
|
2066
|
-
};
|
|
2067
|
-
|
|
2068
|
-
var provideProForm = function provideProForm(ctx) {
|
|
2069
|
-
vue.provide(ProFormKey, ctx);
|
|
2070
|
-
};
|
|
2071
|
-
|
|
2072
|
-
var proFormProps = function proFormProps() {
|
|
2073
|
-
return {
|
|
2074
|
-
/**
|
|
2075
|
-
* 同 antd 或 element form中的model
|
|
2076
|
-
*/
|
|
2077
|
-
model: {
|
|
2078
|
-
type: Object
|
|
2079
|
-
},
|
|
2080
|
-
|
|
2081
|
-
/**
|
|
2082
|
-
* 子组件是否只读样式
|
|
2083
|
-
*/
|
|
2084
|
-
readonly: {
|
|
2085
|
-
type: Boolean,
|
|
2086
|
-
"default": undefined
|
|
2087
|
-
},
|
|
2088
|
-
|
|
2089
|
-
/**
|
|
2090
|
-
* FormComponent 根据此项来确定组件是否显示
|
|
2091
|
-
* rules 根据rules中方法生成showState对象
|
|
2092
|
-
*/
|
|
2093
|
-
showState: {
|
|
2094
|
-
type: Object
|
|
2095
|
-
},
|
|
2096
|
-
showStateRules: {
|
|
2097
|
-
type: Object
|
|
2098
|
-
},
|
|
2099
|
-
|
|
2100
|
-
/**
|
|
2101
|
-
* 是否只读
|
|
2102
|
-
*/
|
|
2103
|
-
readonlyState: {
|
|
2104
|
-
type: Object
|
|
2105
|
-
},
|
|
2106
|
-
readonlyStateRules: {
|
|
2107
|
-
type: Object
|
|
2108
|
-
},
|
|
2109
|
-
|
|
2110
|
-
/**
|
|
2111
|
-
* 是否disabled
|
|
2112
|
-
*/
|
|
2113
|
-
disableState: {
|
|
2114
|
-
type: Object
|
|
2115
|
-
},
|
|
2116
|
-
disableStateRules: {
|
|
2117
|
-
type: Object
|
|
2118
|
-
},
|
|
2119
|
-
|
|
2120
|
-
/**
|
|
2121
|
-
*
|
|
2122
|
-
*/
|
|
2123
|
-
columns: {
|
|
2124
|
-
type: Array
|
|
2125
|
-
},
|
|
2126
|
-
columnState: {
|
|
2127
|
-
type: Object
|
|
2128
|
-
},
|
|
2129
|
-
|
|
2130
|
-
/**
|
|
2131
|
-
* 展示控件集合,readonly模式下使用这些组件渲染
|
|
2132
|
-
*/
|
|
2133
|
-
elementMap: {
|
|
2134
|
-
type: Object
|
|
2135
|
-
},
|
|
2136
|
-
|
|
2137
|
-
/**
|
|
2138
|
-
* 录入控件集合
|
|
2139
|
-
*/
|
|
2140
|
-
formElementMap: {
|
|
2141
|
-
type: Object
|
|
2142
|
-
},
|
|
2143
|
-
|
|
2144
|
-
/**
|
|
2145
|
-
* 是否启用rules验证
|
|
2146
|
-
*/
|
|
2147
|
-
needRules: {
|
|
2148
|
-
type: Boolean,
|
|
2149
|
-
"default": true
|
|
2150
|
-
},
|
|
2151
|
-
|
|
2152
|
-
/**
|
|
2153
|
-
* provide传递
|
|
2154
|
-
*/
|
|
2155
|
-
provideExtra: {
|
|
2156
|
-
type: Object
|
|
2157
|
-
}
|
|
2158
|
-
};
|
|
2159
|
-
};
|
|
2160
|
-
|
|
2161
|
-
var createForm = function createForm(Form, Grid, formMethods) {
|
|
2162
|
-
return vue.defineComponent({
|
|
2163
|
-
inheritAttrs: false,
|
|
2164
|
-
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), proFormProps()), lodash.omit(Grid.props, "items")),
|
|
2165
|
-
setup: function setup(props, _ref) {
|
|
2166
|
-
var slots = _ref.slots,
|
|
2167
|
-
emit = _ref.emit,
|
|
2168
|
-
expose = _ref.expose,
|
|
2169
|
-
attrs = _ref.attrs;
|
|
2170
|
-
var formState = props.model || vue.reactive({}); //组件状态相关
|
|
2171
|
-
|
|
2172
|
-
var showState = props.showState || vue.reactive({});
|
|
2173
|
-
var readonlyState = props.readonlyState || vue.reactive({});
|
|
2174
|
-
var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
|
|
2175
|
-
|
|
2176
|
-
hooks.useEffect(function () {
|
|
2177
|
-
if (props.showStateRules) {
|
|
2178
|
-
lodash.forEach(props.showStateRules, function (fn, key) {
|
|
2179
|
-
showState[key] = fn(formState);
|
|
2180
|
-
});
|
|
2181
|
-
}
|
|
2182
|
-
|
|
2183
|
-
if (props.readonlyStateRules) {
|
|
2184
|
-
lodash.forEach(props.readonlyStateRules, function (fn, key) {
|
|
2185
|
-
readonlyState[key] = fn(formState);
|
|
2186
|
-
});
|
|
2187
|
-
}
|
|
2188
|
-
|
|
2189
|
-
if (props.disableStateRules) {
|
|
2190
|
-
lodash.forEach(props.disableStateRules, function (fn, key) {
|
|
2191
|
-
disableState[key] = fn(formState);
|
|
2192
|
-
});
|
|
2193
|
-
}
|
|
2194
|
-
}, formState); //readonly
|
|
2195
|
-
|
|
2196
|
-
var readonly = vue.computed(function () {
|
|
2197
|
-
return props.readonly;
|
|
2198
|
-
}); //columns合并
|
|
2199
|
-
|
|
2200
|
-
var columns = vue.computed(function () {
|
|
2201
|
-
return mergeStateToList(props.columns, props.columnState, function (item) {
|
|
2202
|
-
return getColumnFormItemName(item);
|
|
2203
|
-
});
|
|
2204
|
-
});
|
|
2205
|
-
|
|
2206
|
-
var handleFinish = function handleFinish(values) {
|
|
2207
|
-
//删除不显示的值再触发事件
|
|
2208
|
-
var showValues = getValidValues(values, showState, props.showStateRules);
|
|
2209
|
-
emit("finish", showValues, values);
|
|
2210
|
-
};
|
|
2211
|
-
|
|
2212
|
-
var formRef = vue.ref();
|
|
2213
|
-
expose(createExpose(formMethods, formRef));
|
|
2214
|
-
provideProForm(_objectSpread2({
|
|
2215
|
-
formState: formState,
|
|
2216
|
-
showState: showState,
|
|
2217
|
-
readonlyState: readonlyState,
|
|
2218
|
-
disableState: disableState,
|
|
2219
|
-
//
|
|
2220
|
-
elementMap: props.elementMap,
|
|
2221
|
-
formElementMap: props.formElementMap,
|
|
2222
|
-
//
|
|
2223
|
-
readonly: readonly,
|
|
2224
|
-
//
|
|
2225
|
-
columns: columns,
|
|
2226
|
-
//
|
|
2227
|
-
formRef: formRef
|
|
2228
|
-
}, props.provideExtra)); //为了不warning ...
|
|
2229
|
-
|
|
2230
|
-
provideProFormList({});
|
|
2231
|
-
var invalidKeys = lodash.keys(proFormProps());
|
|
2232
|
-
var gridKeys = lodash.keys(lodash.omit(Grid.props, "items"));
|
|
2233
|
-
return function () {
|
|
2234
|
-
var _slots$start, _slots$default;
|
|
2235
|
-
|
|
2236
|
-
return vue.createVNode(Form, vue.mergeProps({
|
|
2237
|
-
"ref": formRef
|
|
2238
|
-
}, lodash.omit(attrs, "onFinish"), lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), _toConsumableArray(gridKeys), ["onFinish"])), {
|
|
2239
|
-
"model": formState,
|
|
2240
|
-
"onFinish": handleFinish
|
|
2241
|
-
}), _objectSpread2({
|
|
2242
|
-
"default": function _default() {
|
|
2243
|
-
return [(_slots$start = slots.start) === null || _slots$start === void 0 ? void 0 : _slots$start.call(slots), props.formElementMap && lodash.size(columns.value) > 0 && vue.createVNode(vue.Fragment, null, [props.row ? vue.createVNode(Grid, {
|
|
2244
|
-
"row": props.row,
|
|
2245
|
-
"col": props.col,
|
|
2246
|
-
"items": lodash.map(columns.value, function (item) {
|
|
2247
|
-
return {
|
|
2248
|
-
rowKey: getColumnFormItemName(item),
|
|
2249
|
-
vNode: getFormItemEl(props.formElementMap, item, props.needRules),
|
|
2250
|
-
col: lodash.get(item, ["extra", "col"])
|
|
2251
|
-
};
|
|
2252
|
-
})
|
|
2253
|
-
}, null) : lodash.map(columns.value, function (item) {
|
|
2254
|
-
return getFormItemEl(props.formElementMap, item, props.needRules);
|
|
2255
|
-
})]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
2256
|
-
}
|
|
2257
|
-
}, lodash.omit(slots, "default")));
|
|
2258
|
-
};
|
|
2259
|
-
}
|
|
2260
|
-
});
|
|
2261
|
-
};
|
|
2262
|
-
|
|
2263
|
-
exports.SearchMode = void 0;
|
|
2264
|
-
|
|
2265
|
-
(function (SearchMode) {
|
|
2266
|
-
SearchMode["AUTO"] = "AUTO";
|
|
2267
|
-
SearchMode["MANUAL"] = "MANUAL";
|
|
2268
|
-
})(exports.SearchMode || (exports.SearchMode = {}));
|
|
2269
|
-
|
|
2270
|
-
var proSearchFormProps = function proSearchFormProps() {
|
|
2271
|
-
return {
|
|
2272
|
-
/**
|
|
2273
|
-
* 需要监听的对象
|
|
2274
|
-
*/
|
|
2275
|
-
model: {
|
|
2276
|
-
type: Object
|
|
2277
|
-
},
|
|
2278
|
-
|
|
2279
|
-
/**
|
|
2280
|
-
* 初始化触发 onFinish
|
|
2281
|
-
*/
|
|
2282
|
-
initEmit: {
|
|
2283
|
-
type: Boolean,
|
|
2284
|
-
"default": true
|
|
2285
|
-
},
|
|
2286
|
-
|
|
2287
|
-
/**
|
|
2288
|
-
* 模式 自动触发或者手动触发 onFinish
|
|
2289
|
-
*/
|
|
2290
|
-
searchMode: {
|
|
2291
|
-
type: String,
|
|
2292
|
-
"default": exports.SearchMode.AUTO
|
|
2293
|
-
},
|
|
2294
|
-
|
|
2295
|
-
/**
|
|
2296
|
-
* 配置 同ProForm中的columns
|
|
2297
|
-
* 可以根据column中valueType计算出默认的debounceKeys
|
|
2298
|
-
*/
|
|
2299
|
-
columns: {
|
|
2300
|
-
type: Array
|
|
2301
|
-
},
|
|
2302
|
-
|
|
2303
|
-
/**
|
|
2304
|
-
* 需要debounce处理的字段
|
|
2305
|
-
*/
|
|
2306
|
-
debounceKeys: {
|
|
2307
|
-
type: Array
|
|
2308
|
-
},
|
|
2309
|
-
//默认 valueType 为 text 的控件会debounce处理
|
|
2310
|
-
debounceTypes: {
|
|
2311
|
-
type: Array,
|
|
2312
|
-
"default": ["text"]
|
|
2313
|
-
},
|
|
2314
|
-
debounceTime: {
|
|
2315
|
-
type: Number,
|
|
2316
|
-
"default": 800
|
|
2317
|
-
}
|
|
2318
|
-
};
|
|
2319
|
-
};
|
|
2320
|
-
|
|
2321
|
-
/**
|
|
2322
|
-
* 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
|
|
2323
|
-
* 针对传入的model(监听对象)做相应的finish(回调)处理
|
|
2324
|
-
*/
|
|
2325
|
-
var createSearchForm = function createSearchForm(Form, Props, formMethods) {
|
|
2326
|
-
return vue.defineComponent({
|
|
2327
|
-
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), Props), proSearchFormProps()),
|
|
2328
|
-
setup: function setup(props, _ref) {
|
|
2329
|
-
var slots = _ref.slots,
|
|
2330
|
-
expose = _ref.expose;
|
|
2331
|
-
var formState = props.model || vue.reactive({});
|
|
2332
|
-
var valueTypeSet = new Set(props.debounceTypes); //根据column valueType 算出默认需要debounce处理的属性集合
|
|
2333
|
-
|
|
2334
|
-
var defaultDebounceKeys = lodash.map(lodash.filter(props.columns, function (column) {
|
|
2335
|
-
var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
|
|
2336
|
-
|
|
2337
|
-
return valueTypeSet.has(valueType);
|
|
2338
|
-
}), function (column) {
|
|
2339
|
-
return getColumnFormItemName(column);
|
|
2340
|
-
});
|
|
2341
|
-
var formRef = vue.ref();
|
|
2342
|
-
expose(createExpose(formMethods, formRef));
|
|
2343
|
-
|
|
2344
|
-
var handleFinish = function handleFinish() {
|
|
2345
|
-
var _formRef$value;
|
|
2346
|
-
|
|
2347
|
-
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
2348
|
-
};
|
|
2349
|
-
|
|
2350
|
-
var debounceFinish = lodash.debounce(function () {
|
|
2351
|
-
handleFinish();
|
|
2352
|
-
}, props.debounceTime); //初始化
|
|
2353
|
-
|
|
2354
|
-
hooks.useEffect(function () {
|
|
2355
|
-
if (props.initEmit) {
|
|
2356
|
-
handleFinish();
|
|
2357
|
-
}
|
|
2358
|
-
}, []);
|
|
2359
|
-
|
|
2360
|
-
var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
|
|
2361
|
-
return lodash.some(debounceKeys, function (key) {
|
|
2362
|
-
return lodash.get(state, key) !== lodash.get(prevState, key);
|
|
2363
|
-
});
|
|
2364
|
-
}; //监听
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
hooks.useWatch(function (state, prevState) {
|
|
2368
|
-
if (props.searchMode !== exports.SearchMode.AUTO) {
|
|
2369
|
-
return;
|
|
2370
|
-
} //如果改变的值中包括debounceKeys中注册的 延时触发
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
|
|
2374
|
-
|
|
2375
|
-
if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
|
|
2376
|
-
debounceFinish();
|
|
2377
|
-
return;
|
|
2378
|
-
}
|
|
2379
|
-
|
|
2380
|
-
handleFinish();
|
|
2381
|
-
}, function () {
|
|
2382
|
-
return lodash.clone(formState);
|
|
2383
|
-
});
|
|
2384
|
-
var invalidKeys = lodash.keys(lodash.omit(proSearchFormProps(), "columns"));
|
|
2385
|
-
return function () {
|
|
2386
|
-
return vue.createVNode(Form, vue.mergeProps({
|
|
2387
|
-
"ref": formRef
|
|
2388
|
-
}, lodash.omit(props, invalidKeys), {
|
|
2389
|
-
"model": formState
|
|
2390
|
-
}), slots);
|
|
2391
|
-
};
|
|
2392
|
-
}
|
|
2393
|
-
});
|
|
2394
|
-
};
|
|
2395
|
-
|
|
2396
|
-
var proFormItemProps = function proFormItemProps() {
|
|
2397
|
-
return {
|
|
2398
|
-
readonly: {
|
|
2399
|
-
type: Boolean,
|
|
2400
|
-
"default": undefined
|
|
2401
|
-
},
|
|
2402
|
-
fieldProps: {
|
|
2403
|
-
type: Object
|
|
2404
|
-
},
|
|
2405
|
-
showProps: {
|
|
2406
|
-
type: Object
|
|
2407
|
-
},
|
|
2408
|
-
slots: {
|
|
2409
|
-
type: Object
|
|
2410
|
-
}
|
|
2411
|
-
};
|
|
2412
|
-
};
|
|
2413
|
-
|
|
2414
|
-
var createFormItemCompFn = function createFormItemCompFn(FormItem, convertInputCompProps) {
|
|
2415
|
-
return function (_ref) {
|
|
2416
|
-
var InputComp = _ref.InputComp,
|
|
2417
|
-
valueType = _ref.valueType,
|
|
2418
|
-
name = _ref.name;
|
|
2419
|
-
return vue.defineComponent({
|
|
2420
|
-
name: name,
|
|
2421
|
-
props: _objectSpread2(_objectSpread2({}, FormItem.props), proFormItemProps()),
|
|
2422
|
-
setup: function setup(props, _ref2) {
|
|
2423
|
-
var slots = _ref2.slots;
|
|
2424
|
-
|
|
2425
|
-
var _useProForm = useProForm(),
|
|
2426
|
-
formState = _useProForm.formState,
|
|
2427
|
-
showState = _useProForm.showState,
|
|
2428
|
-
readonlyState = _useProForm.readonlyState,
|
|
2429
|
-
disableState = _useProForm.disableState,
|
|
2430
|
-
formReadonly = _useProForm.readonly,
|
|
2431
|
-
elementMap = _useProForm.elementMap;
|
|
2432
|
-
|
|
2433
|
-
var formListCtx = useProFormList(); //优先级 props.readonly > readonlyState > formContext.readonly
|
|
2434
|
-
|
|
2435
|
-
var readonly = vue.computed(function () {
|
|
2436
|
-
if (lodash.isBoolean(props.readonly)) {
|
|
2437
|
-
return props.readonly;
|
|
2438
|
-
} else if (lodash.isBoolean(readonlyState[props.name])) {
|
|
2439
|
-
return readonlyState[props.name];
|
|
2440
|
-
}
|
|
2441
|
-
|
|
2442
|
-
return formReadonly.value;
|
|
2443
|
-
});
|
|
2444
|
-
var nameList = convertPathToList(props.name);
|
|
2445
|
-
var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
|
|
2446
|
-
|
|
2447
|
-
var setValue = function setValue(v) {
|
|
2448
|
-
lodash.set(formState, path, v);
|
|
2449
|
-
};
|
|
2450
|
-
|
|
2451
|
-
var invalidKeys = lodash.keys(proFormItemProps());
|
|
2452
|
-
return function () {
|
|
2453
|
-
var show = lodash.get(showState, path);
|
|
2454
|
-
|
|
2455
|
-
if (lodash.isBoolean(show) && !show) {
|
|
2456
|
-
return null;
|
|
2457
|
-
}
|
|
2458
|
-
|
|
2459
|
-
var value = lodash.get(formState, path); //valueType对应的展示组件
|
|
2460
|
-
|
|
2461
|
-
var ShowComp = lodash.get(elementMap, valueType);
|
|
2462
|
-
return vue.createVNode(FormItem, vue.mergeProps(lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), ["name", "slots"])), {
|
|
2463
|
-
"name": path
|
|
2464
|
-
}), _objectSpread2({
|
|
2465
|
-
"default": function _default() {
|
|
2466
|
-
return [readonly.value ? vue.createVNode(vue.Fragment, null, [ShowComp ? vue.createVNode(ShowComp, vue.mergeProps({
|
|
2467
|
-
"value": value
|
|
2468
|
-
}, props.fieldProps, {
|
|
2469
|
-
"showProps": props.showProps
|
|
2470
|
-
}), slots) : vue.createVNode("span", null, [value])]) : vue.createVNode(InputComp, vue.mergeProps(convertInputCompProps(value, setValue, lodash.get(disableState, path)), props.fieldProps), slots)];
|
|
2471
|
-
}
|
|
2472
|
-
}, props.slots));
|
|
2473
|
-
};
|
|
2474
|
-
}
|
|
2475
|
-
});
|
|
2476
|
-
};
|
|
2477
|
-
};
|
|
2478
|
-
|
|
2479
|
-
var ProTableKey = Symbol("pro-table");
|
|
2480
|
-
var useProTable = function useProTable() {
|
|
2481
|
-
return vue.inject(ProTableKey);
|
|
2482
|
-
};
|
|
2483
|
-
|
|
2484
|
-
var provideProTable = function provideProTable(ctx) {
|
|
2485
|
-
vue.provide(ProTableKey, ctx);
|
|
2486
|
-
};
|
|
2487
|
-
|
|
2488
|
-
var proTableProps = function proTableProps() {
|
|
2489
|
-
return {
|
|
2490
|
-
//操作栏
|
|
2491
|
-
operate: {
|
|
2492
|
-
type: Object
|
|
2493
|
-
},
|
|
2494
|
-
//默认空字符串
|
|
2495
|
-
columnEmptyText: {
|
|
2496
|
-
type: String
|
|
2497
|
-
},
|
|
2498
|
-
|
|
2499
|
-
/**
|
|
2500
|
-
* 公共column,会merge到columns item中
|
|
2501
|
-
*/
|
|
2502
|
-
column: {
|
|
2503
|
-
type: Object
|
|
2504
|
-
},
|
|
2505
|
-
//
|
|
2506
|
-
columns: {
|
|
2507
|
-
type: Array
|
|
2508
|
-
},
|
|
2509
|
-
columnState: {
|
|
2510
|
-
type: Object
|
|
2511
|
-
},
|
|
2512
|
-
|
|
2513
|
-
/**
|
|
2514
|
-
* 展示控件集合,readonly模式下使用这些组件渲染
|
|
2515
|
-
*/
|
|
2516
|
-
elementMap: {
|
|
2517
|
-
type: Object
|
|
2518
|
-
},
|
|
2519
|
-
|
|
2520
|
-
/**
|
|
2521
|
-
* 序号
|
|
2522
|
-
*/
|
|
2523
|
-
serialNumber: {
|
|
2524
|
-
type: Boolean
|
|
2525
|
-
},
|
|
2526
|
-
|
|
2527
|
-
/**
|
|
2528
|
-
* 分页
|
|
2529
|
-
*/
|
|
2530
|
-
paginationState: {
|
|
2531
|
-
type: Object
|
|
2532
|
-
},
|
|
2533
|
-
|
|
2534
|
-
/**
|
|
2535
|
-
* provide传递
|
|
2536
|
-
*/
|
|
2537
|
-
provideExtra: {
|
|
2538
|
-
type: Object
|
|
2539
|
-
}
|
|
2540
|
-
};
|
|
2541
|
-
};
|
|
2542
|
-
|
|
2543
|
-
var createTable = function createTable(Table, Props, tableMethods) {
|
|
2544
|
-
return vue.defineComponent({
|
|
2545
|
-
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Table.props), Props), proTableProps()),
|
|
2546
|
-
setup: function setup(props, _ref) {
|
|
2547
|
-
var slots = _ref.slots,
|
|
2548
|
-
expose = _ref.expose;
|
|
2549
|
-
|
|
2550
|
-
var createNumberColumn = function createNumberColumn() {
|
|
2551
|
-
return _objectSpread2(_objectSpread2({
|
|
2552
|
-
title: "序号",
|
|
2553
|
-
dataIndex: "serialNumber",
|
|
2554
|
-
width: 80
|
|
2555
|
-
}, props.column), {}, {
|
|
2556
|
-
customRender: function customRender(_ref2) {
|
|
2557
|
-
var _props$paginationStat, _props$paginationStat2;
|
|
2558
|
-
|
|
2559
|
-
var index = _ref2.index;
|
|
2560
|
-
|
|
2561
|
-
if ((_props$paginationStat = props.paginationState) !== null && _props$paginationStat !== void 0 && _props$paginationStat.page && (_props$paginationStat2 = props.paginationState) !== null && _props$paginationStat2 !== void 0 && _props$paginationStat2.pageSize) {
|
|
2562
|
-
return props.paginationState.pageSize * (props.paginationState.page - 1) + index + 1;
|
|
2563
|
-
}
|
|
2564
|
-
|
|
2565
|
-
return index + 1;
|
|
2566
|
-
}
|
|
2567
|
-
});
|
|
2568
|
-
};
|
|
2569
|
-
|
|
2570
|
-
var createOperateColumn = function createOperateColumn() {
|
|
2571
|
-
var operate = props.operate; //将itemState补充的信息拼到item中
|
|
2572
|
-
|
|
2573
|
-
var items = lodash.map(operate.items, function (i) {
|
|
2574
|
-
return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
|
|
2575
|
-
}); //排序
|
|
2576
|
-
|
|
2577
|
-
var sortedItems = lodash.sortBy(items, function (item) {
|
|
2578
|
-
return item.sort;
|
|
2579
|
-
});
|
|
2580
|
-
return _objectSpread2(_objectSpread2(_objectSpread2({}, props.column), {}, {
|
|
2581
|
-
title: "操作",
|
|
2582
|
-
dataIndex: "operate",
|
|
2583
|
-
fixed: "right"
|
|
2584
|
-
}, operate.column), {}, {
|
|
2585
|
-
customRender: function customRender(_ref3) {
|
|
2586
|
-
var record = _ref3.record;
|
|
2587
|
-
var showItems = lodash.filter(sortedItems, function (item) {
|
|
2588
|
-
if (item.show && lodash.isFunction(item.show)) {
|
|
2589
|
-
return item.show(record);
|
|
2590
|
-
}
|
|
2591
|
-
|
|
2592
|
-
if (item.show === false) {
|
|
2593
|
-
return false;
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
return true;
|
|
2597
|
-
});
|
|
2598
|
-
return vue.createVNode("div", {
|
|
2599
|
-
"class": "pro-table-operate"
|
|
2600
|
-
}, [lodash.map(showItems, function (item) {
|
|
2601
|
-
//自定义
|
|
2602
|
-
if (lodash.isFunction(item.element)) {
|
|
2603
|
-
return item.element(record, item);
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
return vue.createVNode("div", {
|
|
2607
|
-
"class": "pro-table-operate-item",
|
|
2608
|
-
"key": item.value,
|
|
2609
|
-
"onClick": function onClick() {
|
|
2610
|
-
var _item$onClick;
|
|
2611
|
-
|
|
2612
|
-
(_item$onClick = item.onClick) === null || _item$onClick === void 0 ? void 0 : _item$onClick.call(item, record);
|
|
2613
|
-
}
|
|
2614
|
-
}, [item.label]);
|
|
2615
|
-
})]);
|
|
2616
|
-
}
|
|
2617
|
-
});
|
|
2618
|
-
};
|
|
2619
|
-
|
|
2620
|
-
var columns = vue.computed(function () {
|
|
2621
|
-
var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
|
|
2622
|
-
return item.dataIndex;
|
|
2623
|
-
}); //根据valueType选择对应的展示组件
|
|
2624
|
-
|
|
2625
|
-
var columns = lodash.map(mergeColumns, function (item) {
|
|
2626
|
-
//merge公共item
|
|
2627
|
-
var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
|
|
2628
|
-
|
|
2629
|
-
if (!item.customRender) {
|
|
2630
|
-
nextItem.customRender = function (_ref4) {
|
|
2631
|
-
var text = _ref4.text;
|
|
2632
|
-
var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
|
|
2633
|
-
showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
|
|
2634
|
-
content: props.columnEmptyText
|
|
2635
|
-
})
|
|
2636
|
-
}), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
|
|
2637
|
-
|
|
2638
|
-
return vn || text || props.columnEmptyText;
|
|
2639
|
-
};
|
|
2640
|
-
}
|
|
2641
|
-
|
|
2642
|
-
return nextItem;
|
|
2643
|
-
}); //处理序号
|
|
2644
|
-
|
|
2645
|
-
if (props.serialNumber) {
|
|
2646
|
-
columns.unshift(createNumberColumn());
|
|
2647
|
-
} //处理operate
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
if (props.operate && props.operate.items && lodash.some(props.operate.items, function (item) {
|
|
2651
|
-
return item.show;
|
|
2652
|
-
})) {
|
|
2653
|
-
columns.push(createOperateColumn());
|
|
2654
|
-
}
|
|
2655
|
-
|
|
2656
|
-
return columns;
|
|
2657
|
-
});
|
|
2658
|
-
var tableRef = vue.ref();
|
|
2659
|
-
provideProTable(_objectSpread2({
|
|
2660
|
-
columns: columns,
|
|
2661
|
-
tableRef: tableRef
|
|
2662
|
-
}, props.provideExtra));
|
|
2663
|
-
expose(createExpose(tableMethods || [], tableRef));
|
|
2664
|
-
var invalidKeys = lodash.keys(proTableProps());
|
|
2665
|
-
return function () {
|
|
2666
|
-
return vue.createVNode(Table, vue.mergeProps({
|
|
2667
|
-
"ref": tableRef
|
|
2668
|
-
}, lodash.omit(props, invalidKeys), {
|
|
2669
|
-
"columns": columns.value
|
|
2670
|
-
}), slots);
|
|
2671
|
-
};
|
|
2672
|
-
}
|
|
2673
|
-
});
|
|
2674
|
-
};
|
|
2675
|
-
|
|
2676
|
-
exports.CurdMethods = CurdMethods;
|
|
2677
|
-
exports.ProCurd = ProCurd;
|
|
2678
|
-
exports.ProModalCurd = ProModalCurd;
|
|
2679
|
-
exports.ProModule = ProModule;
|
|
2680
|
-
exports.ProPageCurd = ProPageCurd;
|
|
2681
|
-
exports.RequestAction = RequestAction;
|
|
2682
|
-
exports.Wrapper = Wrapper;
|
|
2683
|
-
exports.convertPathToList = convertPathToList;
|
|
2684
|
-
exports.createCurdDesc = createCurdDesc;
|
|
2685
|
-
exports.createCurdForm = createCurdForm;
|
|
2686
|
-
exports.createCurdList = createCurdList;
|
|
2687
|
-
exports.createExpose = createExpose;
|
|
2688
|
-
exports.createForm = createForm;
|
|
2689
|
-
exports.createFormItemCompFn = createFormItemCompFn;
|
|
2690
|
-
exports.createFormList = createFormList;
|
|
2691
|
-
exports.createGrid = createGrid;
|
|
2692
|
-
exports.createSearchForm = createSearchForm;
|
|
2693
|
-
exports.createTable = createTable;
|
|
2694
|
-
exports.defaultPage = defaultPage;
|
|
2695
|
-
exports.getColumnFormItemName = getColumnFormItemName;
|
|
2696
|
-
exports.getColumnValueType = getColumnValueType;
|
|
2697
|
-
exports.getFirstPropName = getFirstPropName;
|
|
2698
|
-
exports.getFormItemEl = getFormItemEl;
|
|
2699
|
-
exports.getItemEl = getItemEl;
|
|
2700
|
-
exports.getValidValues = getValidValues;
|
|
2701
|
-
exports.mergeStateToList = mergeStateToList;
|
|
2702
|
-
exports.provideProCurd = provideProCurd;
|
|
2703
|
-
exports.provideProFormList = provideProFormList;
|
|
2704
|
-
exports.provideProModule = provideProModule;
|
|
2705
|
-
exports.renderElement = renderElement;
|
|
2706
|
-
exports.renderElements = renderElements;
|
|
2707
|
-
exports.useComposeRequestActor = useComposeRequestActor;
|
|
2708
|
-
exports.useDoneRequestActor = useDoneRequestActor;
|
|
2709
|
-
exports.useFailedRequestActor = useFailedRequestActor;
|
|
2710
|
-
exports.useModuleEvent = useModuleEvent;
|
|
2711
|
-
exports.useProCurd = useProCurd;
|
|
2712
|
-
exports.useProForm = useProForm;
|
|
2713
|
-
exports.useProFormList = useProFormList;
|
|
2714
|
-
exports.useProModule = useProModule;
|
|
2715
|
-
exports.useProTable = useProTable;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),t=require("lodash"),R=require("rxjs"),k=require("@vue-start/hooks"),j=require("@vue-start/request"),le=require("vue-router");function Fe(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!n.isVNode(e)}const Re=()=>({row:{type:Object,default:void 0},col:{type:Object},items:{type:Array}}),we=(e,o)=>n.defineComponent({props:{...Re()},setup:s=>()=>{let r;return n.createVNode(e,s.row,Fe(r=t.map(s.items,d=>n.createVNode(o,n.mergeProps({key:d.rowKey},s.col,d.col),{default:()=>[d.vNode]})))?r:{default:()=>[r]})}}),Ee=e=>(o,s)=>{const{requestSubject$:r}=j.useRequestProvide(),d=new Set(t.map(o,a=>t.isString(a)?a:a.name));k.useEffect(()=>{const a=r.pipe(R.filter(e),R.tap(l=>{d.has(l.name)&&s(l)})).subscribe();return()=>{a.unsubscribe()}},[])},je=Ee(j.isDoneRequestActor),ke=Ee(j.isFailedRequestActor),Pe=(e,o,s)=>{const{requestSubject$:r,dispatchRequest:d}=j.useRequestProvide(),a=new Set(t.map(e,y=>t.isString(y)?y:y.name)),l={};k.useEffect(()=>{const y=R.merge(r.pipe(R.filter(j.isDoneRequestActor),R.tap(E=>{var P,f;a.has(E.name)&&((P=o.onSuccess)==null||P.call(o,E),(f=o.onFinish)==null||f.call(o,E),l[E.name]=void 0)})),r.pipe(R.filter(j.isFailedRequestActor),R.tap(E=>{var P,f;a.has(E.name)&&((P=o.onFailed)==null||P.call(o,E),(f=o.onFinish)==null||f.call(o,E),l[E.name]=void 0)}))).subscribe();return()=>{y.unsubscribe(),s&&t.forEach(l,E=>{E&&d({...E,stage:"CANCEL"})})}},[])},re=e=>e.formValueType||e.valueType||"text",x=e=>{var o;return((o=e.formItemProps)==null?void 0:o.name)||e.dataIndex},_=(e,o,s=!0)=>{var y;const r=re(o),d=t.get(e,r);if(!d)return null;const a=x(o),l=s?o.formItemProps:t.omit(o.formItemProps,"rules");return n.h(d,{key:a,name:a,label:o.title,...l,fieldProps:t.omit(o.formFieldProps,"slots"),showProps:o.showProps},(y=o.formFieldProps)==null?void 0:y.slots)},ne=(e,o,s)=>{var a;const r=o.valueType||"text",d=t.get(e,r);return d?n.h(d,{...t.omit(o.formFieldProps,"slots"),showProps:o.showProps,value:s},(a=o.formFieldProps)==null?void 0:a.slots):null},H=(e,o)=>t.map(o,s=>K(e,s)),Se=(e,o)=>{var d;const s=o.elementProps,r={...o.elementProps};return t.forEach((d=o.highConfig$)==null?void 0:d.registerPropsTrans,a=>{const l=t.get(s,a.name);if(!(!l||n.isVNode(l))){if(t.isArray(l)){if(t.some(l,y=>n.isVNode(y)))return;t.set(r,a.name,H(e,l));return}!l.elementType||(a.isFun?t.set(r,a.name,(...y)=>{const E=a.needParams?{...l.elementProps,params$:y}:l.elementProps;return K(e,{...l,elementProps:E})}):t.set(r,a.name,K(e,l)))}}),r},he=(e,o)=>{const s=t.size(o.children)>0?H(e,o.children):void 0,r=o.childrenSlotName||"default",d=t.omit(o.slots,s?r:"");return t.forEach(t.keys(d),a=>{const l=d[a];l&&!t.isFunction(l)&&l.elementType&&(d[a]=(...y)=>{const E=l.needParams?{...l.elementProps,params$:y}:l.elementProps;return K(e,{...l,elementProps:E})})}),{[r]:s?()=>s:void 0,...d}},K=(e,o)=>{const s=t.get(e,o.elementType)||o.elementType;if(o.highConfig$)return n.h(be,{key:o.elementId,elementMap:e,elementConfig:o});const r=he(e,o),d=Se(e,o);return n.h(s,{key:o.elementId,...d},r)},ve=e=>t.isArray(e)?t.head(e):t.isString(e)&&e.indexOf(".")>0?e.substring(0,e.indexOf(".")):e,be=n.defineComponent({props:{elementMap:{type:Object},elementConfig:{type:Object}},setup:e=>{const{state:o,sendEvent:s}=$(),{elementMap:r,elementConfig:d}=e,a=d.highConfig$,l=Se(r,d),y=t.reduce(a.registerEventList,(p,c)=>({...p,[c.name]:(...u)=>{s({type:c.sendEventName||d.elementId,payload:u})}}),{}),E=n.computed(()=>{if(!a.registerStateList||t.size(a.registerStateList)<=0)return;const p={...l},c=t.map(a.registerStateList,u=>{const i=u.mapName||u.name,m=t.get(o,u.name);return t.set(p,i,m),ve(i)});return t.pick(p,c)}),P=t.get(r,d.elementType)||d.elementType,f=he(r,d);return()=>t.get(E.value,"show$")===!1?null:n.h(P,{key:d.elementId,...l,...t.omit(E.value,"show$"),...y},f)}}),Ce=Symbol("pro-module"),$=()=>n.inject(Ce),Te=e=>{n.provide(Ce,e)},U={Success:"request-success$",Fail:"request-fail$"},Ve=()=>({state:{type:Object},elementMap:{type:Object},elementConfigs:{type:Array},requests:{type:Array}}),W=n.defineComponent({props:{...Ve()},setup:(e,{slots:o,expose:s})=>{const r=c=>t.isArray(c)?H(e.elementMap,c):K(e.elementMap,c),d=new R.Subject,a=c=>{d.next(c)},l=e.state||n.reactive({}),y=c=>{const u=l[c.type],i=t.isFunction(c.payload)?c.payload(u):c.payload;if(t.isObject(u)){k.setReactiveValue(l[c.type],i);return}l[c.type]=i},{dispatchRequest:E}=j.useRequestProvide(),P=t.reduce(e.requests,(c,u)=>{var i;return{...c,[(i=u.actor)==null?void 0:i.name]:u}},{}),f=t.reduce(e.requests,(c,u)=>({...c,[u.action]:u}),{}),p=(c,...u)=>{const i=t.get(P,c)||t.get(f,c);if(!i)return;let m;i.convertParams?m=i.convertParams(...u):m=t.get(u,0),i.loadingName&&y({type:i.loadingName,payload:!0}),E(i.actor,m)};return Pe(t.keys(P),{onSuccess:c=>{var i,m;const u=t.get(P,c.name);if(u!=null&&u.stateName){const h=u.convertData?u.convertData(c):(i=c.res)==null?void 0:i.data;y({type:u.stateName,payload:h})}a({type:U.Success,payload:{actor:c,requestOpts:u}}),(m=u.onSuccess)==null||m.call(u,c)},onFailed:c=>{var i;const u=t.get(P,c.name);a({type:U.Fail,payload:{actor:c,requestOpts:u}}),(i=u.onFailed)==null||i.call(u,c)},onFinish:c=>{const u=t.get(P,[c.name,"loadingName"]);u&&y({type:u,payload:!1})}},!0),Te({elementMap:e.elementMap,subject$:d,sendEvent:a,state:l,dispatch:y,requests:e.requests,sendRequest:p}),s({sendEvent:a,sendRequest:p}),()=>{var c;return n.createVNode(n.Fragment,null,[t.size(e.elementConfigs)>0&&r(e.elementConfigs),(c=o.default)==null?void 0:c.call(o)])}}}),J=e=>{const{subject$:o}=$();k.useEffect(()=>{const s=o.subscribe({next:r=>{e(r)}});return()=>s.unsubscribe()},[])},qe=()=>({elementMap:{type:Object},formElementMap:{type:Object},columns:{type:Array},columnState:{type:Object}}),Q=qe(),xe=()=>({config:{type:Object,default:{}}}),oe=Symbol("pro-config"),Y=()=>n.inject(oe)||{},Ke=n.defineComponent({props:{...xe()},setup:(e,{slots:o})=>(n.provide(oe,e.config),()=>{var s;return(s=o.default)==null?void 0:s.call(o)})}),Ue=(e={})=>o=>{o.provide(oe,e)},De=Symbol("pro-curd"),z=()=>n.inject(De),Ne=e=>n.provide(De,e);var C=(e=>(e.LIST="LIST",e.DETAIL="DETAIL",e.ADD="ADD",e.EDIT="EDIT",e.DELETE="DELETE",e))(C||{}),T=(e=>(e.EMIT="EMIT",e.EXECUTE="EXECUTE",e.PAGE="PAGE",e.SUCCESS="SUCCESS",e.FAIL="FAIL",e))(T||{}),F=(e=>(e.ADD="ADD",e.EDIT="EDIT",e.DETAIL="DETAIL",e))(F||{}),B=(e=>(e.NORMAL="NORMAL",e.CONTINUE="CONTINUE",e))(B||{});const Ae=(e,o,s)=>{if(o){const r=t.filter(t.keys(o),d=>!o[d]);return t.omit(e,r)}if(s){const r=t.filter(t.keys(s),d=>!s[d](e));return t.omit(e,r)}return e},ae=e=>{if(!!e)return t.isArray(e)?e:e&&t.isString(e)&&e.indexOf(".")>0?t.split(e,"."):[e]},Z=(e,o,s)=>!o||!s?e:t.map(e,r=>{const d=t.isFunction(s)?s(r):s,a=t.get(o,d);return!a||t.isEmpty(a)||t.isFunction(a)||!t.isObject(a)?r:t.mergeWith(r,a,(l,y)=>{if(t.isArray(l)||t.isArray(y))return y})}),V=(e,o)=>t.reduce(e,(s,r)=>({...s,[r]:(...d)=>{var a,l;return(l=(a=o.value)==null?void 0:a[r])==null?void 0:l.call(a,...d)}}),{}),Ie={page:1,pageSize:10},Be=()=>({rowKey:{type:String,default:"id"},operates:{type:Array},listProps:{type:Object},formProps:{type:Object},descProps:{type:Object},modalProps:{type:Object}}),ce=["sendCurdEvent","refreshList","sendEvent","sendRequest"],me=n.defineComponent({props:{...Q,...Be()},setup:(e,{slots:o,expose:s})=>{const{elementMap:r,state:d,sendEvent:a,sendRequest:l}=$(),y=n.computed(()=>Z(e.columns,e.columnState,b=>x(b))),E=(b,A=!0)=>_(e.formElementMap,b,A),P=(b,A)=>ne(r,b,A),f=(b,A)=>{const q=t.filter(y.value,L=>{const O=t.get(L,["extra",b])||t.get(L,b);return A?O!==!1:O});return t.sortBy(q,L=>t.get(L,["extra",`${b}Sort`])||t.get(L,`${b}Sort`))},p=n.computed(()=>f("form",!0)),c=n.computed(()=>f("detail",!0)),u=n.computed(()=>f("table",!0)),i=n.computed(()=>f("search"));let m;const h=b=>{l(C.LIST,{...m,...b})},g=b=>{a({type:b.action,payload:t.omit(b,"action","source"),source:b.source})};J(({type:b,payload:A,source:q})=>{if(q)return;let L=b,O=A==null?void 0:A.type;L===U.Success&&(L=t.get(A,["requestOpts","action"]),O=T.SUCCESS);const{values:w,record:X}=A;switch(L){case C.LIST:O===T.EMIT&&(m=w,h());return;case C.ADD:O===T.EXECUTE&&l(C.ADD,w,d.detailData);return;case C.EDIT:O===T.EXECUTE&&l(C.EDIT,w,d.detailData);return;case C.DELETE:O===T.EMIT?l(C.DELETE,X,e.rowKey):O===T.SUCCESS&&h();return}L&&b===T.EXECUTE&&l(L,w)});const S=t.reduce(e.operates,(b,A)=>({...b,[A.action]:A}),{}),v=b=>t.get(S,b),I=n.computed(()=>e.listProps),M=n.computed(()=>e.formProps),D=n.computed(()=>e.descProps),N=n.computed(()=>e.modalProps);return Ne({columns:y,getSignColumns:f,getFormItemVNode:E,getItemVNode:P,elementMap:r,formElementMap:e.formElementMap,rowKey:e.rowKey,curdState:d,formColumns:p,descColumns:c,tableColumns:u,searchColumns:i,sendCurdEvent:g,operates:e.operates,getOperate:v,refreshList:h,listProps:I,formProps:M,descProps:D,modalProps:N}),s({sendCurdEvent:g,refreshList:h}),()=>{var b;return(b=o.default)==null?void 0:b.call(o)}}}),G=n.defineComponent({props:{...t.omit(W.props,"state","requests"),...me.props,curdState:{type:Object}},setup:(e,{slots:o,expose:s})=>{const{elementMap:r,formElementMap:d}=Y(),a=n.ref(),l=n.ref(),y=e.curdState||n.reactive({detailData:{}}),E={[C.LIST]:{convertParams:c=>c,convertData:c=>{var u;return(u=c.res)==null?void 0:u.data},loadingName:"listLoading",stateName:"listData"},[C.DETAIL]:{convertParams:(c,u)=>t.pick(c,u),convertData:c=>{var u;return(u=c.res)==null?void 0:u.data},loadingName:"detailLoading",stateName:"detailData",label:"\u8BE6\u60C5"},[C.ADD]:{convertParams:(c,u)=>({body:{...u,...c}}),loadingName:"operateLoading",label:"\u6DFB\u52A0"},[C.EDIT]:{convertParams:(c,u)=>({body:{...u,...c}}),loadingName:"operateLoading",label:"\u7F16\u8F91"},[C.DELETE]:{convertParams:(c,u)=>t.pick(c,u),label:"\u5220\u9664"}},P=t.map(e.operates,c=>({...t.get(E,c.action),...c})),f=t.filter(P,c=>c.actor),p=t.keys(t.omit(W.props,"state","requests"));return s({sendCurdEvent:c=>{var u;(u=l.value)==null||u.sendCurdEvent(c)},refreshList:c=>{var u;(u=l.value)==null||u.refreshList(c)},sendEvent:c=>{var u;(u=a.value)==null||u.sendEvent(c)},sendRequest:(c,...u)=>{var i;(i=a.value)==null||i.sendRequest(c,...u)}}),()=>n.createVNode(W,n.mergeProps({ref:a},t.pick(e,p),{elementMap:e.elementMap||r,state:y,requests:f}),{default:()=>[n.createVNode(me,n.mergeProps({ref:l},t.omit(e,...p,"curdState","operates"),{formElementMap:e.formElementMap||d,operates:P}),o)]})}}),$e=()=>({defaultAddRecord:{type:Object}}),ee=n.defineComponent({props:{...$e()},setup:e=>{var u;const{dispatch:o,sendRequest:s}=$(),{rowKey:r,curdState:d,listProps:a,getOperate:l,refreshList:y}=z(),E=(u=a==null?void 0:a.value)==null?void 0:u.pageState,P=i=>{const m=l(C.DETAIL);m!=null&&m.actor?s(C.DETAIL,i,r):o({type:"detailData",payload:t.cloneDeep(i)})},f=(i,{record:m})=>{i===T.EMIT&&(o({type:"mode",payload:F.DETAIL}),P(m))},p=i=>{i===T.EMIT?(o({type:"mode",payload:F.ADD}),o({type:"detailData",payload:e.defaultAddRecord||{}})):i===T.SUCCESS&&(E&&(E.page=1),y(),d.addAction===B.CONTINUE?o({type:"detailData",payload:e.defaultAddRecord||{}}):o({type:"mode",payload:void 0}))},c=(i,{record:m})=>{i===T.EMIT?(o({type:"mode",payload:F.EDIT}),P(m)):i===T.SUCCESS&&(o({type:"mode",payload:void 0}),y())};return J(({type:i,payload:m,source:h})=>{if(h)return;let g=i,S=m==null?void 0:m.type;const v=m==null?void 0:m.record;switch(g===U.Success&&(g=t.get(m,["requestOpts","action"]),S=T.SUCCESS),g){case C.DETAIL:f(S,{record:v});break;case C.ADD:p(S);break;case C.EDIT:c(S,{record:v});break}}),()=>null}}),ze=n.defineComponent({props:{...G.props,...ee.props},setup:(e,{slots:o,expose:s})=>{const r=n.ref();s(V(ce,r));const d=t.keys(ee.props);return()=>n.createVNode(G,n.mergeProps({ref:r},t.omit(e,d)),{default:()=>{var a;return[n.createVNode(ee,t.pick(e,d),null),(a=o.default)==null?void 0:a.call(o)]}})}}),Ge=()=>({defaultAddRecord:{type:Object},routeBack:{type:Function}}),te=n.defineComponent({props:{...Ge()},setup:e=>{const o=le.useRouter(),s=le.useRoute(),{dispatch:r,sendRequest:d}=$(),{rowKey:a,curdState:l}=z(),y=p=>{p===T.PAGE&&(r({type:"mode",payload:void 0}),r({type:"detailData",payload:{}}),r({type:"detailLoading",payload:!1}),r({type:"addAction",payload:void 0}))},E=(p,{record:c})=>{p===T.EMIT?o.push({path:`${s.path}/detail`,query:t.pick(c,a)}):p===T.PAGE&&(r({type:"mode",payload:F.DETAIL}),d(C.DETAIL,s.query,a))},P=p=>{p===T.EMIT?o.push({path:`${s.path}/add`}):p===T.PAGE?(r({type:"mode",payload:F.ADD}),r({type:"detailData",payload:e.defaultAddRecord||{}})):p===T.SUCCESS&&(l.addAction===B.CONTINUE?r({type:"detailData",payload:e.defaultAddRecord||{}}):e.routeBack?e.routeBack(C.ADD):o.go(-1))},f=(p,{record:c})=>{p===T.EMIT?o.push({path:`${s.path}/edit`,query:t.pick(c,a)}):p===T.PAGE?(r({type:"mode",payload:F.EDIT}),d(C.DETAIL,s.query,a)):p===T.SUCCESS&&(e.routeBack?e.routeBack(C.EDIT):o.go(-1))};return J(({type:p,payload:c,source:u})=>{if(u)return;let i=p,m=c==null?void 0:c.type;const h=c==null?void 0:c.record;switch(i===U.Success&&(i=t.get(c,["requestOpts","action"]),m=T.SUCCESS),i){case C.LIST:y(m);break;case C.DETAIL:E(m,{record:h});break;case C.ADD:P(m);break;case C.EDIT:f(m,{record:h});break}}),()=>null}}),Xe=n.defineComponent({props:{...G.props,...te.props},setup:(e,{slots:o,expose:s})=>{const r=n.ref();s(V(ce,r));const d=t.keys(te.props);return()=>n.createVNode(G,n.mergeProps({ref:r},t.omit(e,d)),{default:()=>{var a;return[n.createVNode(te,t.pick(e,d),null),(a=o.default)==null?void 0:a.call(o)]}})}});function We(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!n.isVNode(e)}const _e=(e,o)=>n.defineComponent({props:{...e.props,renderItem:{type:Function},signName:{type:String}},setup:(s,{slots:r})=>{const{getItemVNode:d,curdState:a,descColumns:l,getSignColumns:y}=z(),E=n.computed(()=>{const P=s.signName?y(s.signName):l.value;return t.map(P,f=>{var i;let p;const c=(i=s.renderItem)==null?void 0:i.call(s,f);if(c)return c;const u=t.get(a.detailData,f.dataIndex);return n.createVNode(o,n.mergeProps({key:f.dataIndex,label:f.title},t.get(f.extra,"desc")),We(p=d(f,u))?p:{default:()=>[p]})})});return()=>n.createVNode(e,s,{default:()=>{var P,f;return[(P=r.start)==null?void 0:P.call(r),E.value,(f=r.default)==null?void 0:f.call(r)]},...t.omit(r,"default","start")})}}),He=()=>({signName:{type:String},modelName:{type:String,default:"detailData"},operateBar:{type:Boolean,default:!0},showContinueAdd:{type:Boolean,default:!1},okText:{type:String,default:"\u786E\u5B9A"},okButtonProps:{type:Object},continueText:{type:String,default:"\u786E\u5B9A\u5E76\u7EE7\u7EED"},continueButtonProps:{type:Object}}),Je=(e,o,s,r)=>n.defineComponent({inheritAttrs:!1,props:{...e.props,...He()},setup:(d,{slots:a,attrs:l,expose:y})=>{const{elementMap:E,formElementMap:P,curdState:f,formColumns:p,getSignColumns:c,sendCurdEvent:u}=z(),i=n.ref(),m=n.computed(()=>d.signName?c(d.signName):p.value),h=(v,I)=>{if(l.onFinish){l.onFinish(v,I);return}f.mode===F.EDIT?u({action:C.EDIT,type:T.EXECUTE,values:v}):u({action:C.ADD,type:T.EXECUTE,values:v})},g=()=>{var v;f.addAction=B.NORMAL,(v=i.value)==null||v.submit()},S=()=>{var v;f.addAction=B.CONTINUE,(v=i.value)==null||v.submit()};return y(V(r,i)),()=>n.createVNode(e,n.mergeProps({ref:i},t.omit(l,"onFinish"),d,{elementMap:d.elementMap||E,formElementMap:d.formElementMap||P,columns:d.columns||m.value,model:d.model||f[d.modelName],readonly:f.mode===F.DETAIL,onFinish:h},s==null?void 0:s(f)),{default:()=>{var v,I,M,D,N;return[(v=a.divide)==null?void 0:v.call(a),d.operateBar&&n.createVNode("div",{class:"pro-curd-form-operate"},[(I=a.operateStart)==null?void 0:I.call(a),f.mode!==F.DETAIL&&n.createVNode(o,n.mergeProps({onClick:g},d.okButtonProps,{loading:f.operateLoading}),{default:()=>[d.okText]}),(M=a.operateCenter)==null?void 0:M.call(a),d.showContinueAdd&&f.mode===F.ADD&&n.createVNode(o,n.mergeProps({onClick:S},d.continueButtonProps,{loading:f.operateLoading}),{default:()=>[d.continueText]}),(D=a.operateEnd)==null?void 0:D.call(a)]),(N=a.default)==null?void 0:N.call(a)]},...t.omit(a,"default","divide","operateStart","operateCenter","operateEnd")})}}),Qe=()=>({extraInSearch:{type:Boolean,default:void 0},searchProps:{type:Object},tableProps:{type:Object},paginationProps:{type:Object},showPagination:{type:Boolean,default:!0},pageState:{type:Object}}),Ye=(e,o)=>n.defineComponent({props:{...Qe()},setup:(s,{slots:r})=>{const{elementMap:d,formElementMap:a,curdState:l,searchColumns:y,tableColumns:E,sendCurdEvent:P,operates:f}=z(),p=s.pageState||n.reactive({...Ie});let c;const u=()=>{P({action:C.LIST,type:T.EMIT,values:{...c,...p}})},i=g=>{c=g,p.page=1,u()},m=t.map(t.filter(f,g=>{const S=g.action;return S===C.DETAIL||S===C.EDIT||S===C.DELETE||g.tableOperate}),g=>{const S={...t.pick(g,"label","element","disabled","sort","onClick"),show:t.isUndefined(g==null?void 0:g.show)?!1:g==null?void 0:g.show,value:g.action};return S.onClick||(S.onClick=v=>{P({action:g.action,type:T.EMIT,record:v})}),S}),h=g=>t.map(g,S=>S.onClick?S:{...S,onClick:v=>{P({action:"operate",type:S.value,record:v})}});return()=>{var I,M,D,N,b,A,q,L,O,w;const g=s.tableProps,S={elementMap:d,columns:E.value,...t.omit(g,"slots","operate"),operate:t.mergeWith({items:m},g==null?void 0:g.operate,(X,ie)=>{if(t.isArray(X)&&t.isArray(ie))return t.concat(X,h(ie))}),paginationState:{page:p.page,pageSize:p.pageSize},loading:l.listLoading,dataSource:(I=l.listData)==null?void 0:I.dataSource},v=r.extra?n.createVNode("div",{class:"pro-curd-list-extra"},[r.extra()]):null;return n.createVNode(n.Fragment,null,[(M=r.start)==null?void 0:M.call(r),r.search?r.search({executeSearchWithResetPage:i}):n.createVNode(e,n.mergeProps({formElementMap:a,columns:y.value},t.omit(s.searchProps,"slots"),{onFinish:i}),{default:()=>[s.extraInSearch&&v],...(D=s.searchProps)==null?void 0:D.slots}),(N=r.divide)==null?void 0:N.call(r),!s.extraInSearch&&v,r.table?r.table(S):n.createVNode(o,S,g==null?void 0:g.slots),(b=r.divide2)==null?void 0:b.call(r),s.showPagination&&n.createVNode("div",{class:"pro-curd-list-footer"},[(A=r.footerStart)==null?void 0:A.call(r),(L=r.pagination)==null?void 0:L.call(r,p,(q=l.listData)==null?void 0:q.total,u),(O=r.footerEnd)==null?void 0:O.call(r)]),(w=r.end)==null?void 0:w.call(r)])}}}),Le=Symbol("pro-form-list"),se=()=>n.inject(Le),ue=e=>{n.provide(Le,e)},Ze=n.defineComponent({props:{pathList:{type:Array}},setup:(e,{slots:o})=>(ue({pathList:e.pathList}),()=>{var s;return(s=o.default)==null?void 0:s.call(o)})}),et=e=>n.defineComponent({props:{...e.props,rowKey:{type:String,default:"id"}},setup:(o,{slots:s})=>{const{formState:r,readonly:d}=de(),a=se(),l=ae(o.name),y=a!=null&&a.pathList?[...a.pathList,...l]:l,E=()=>{let f=t.get(r,y);t.isArray(f)||(f=[]),f.push({[o.rowKey]:new Date().valueOf()}),t.set(r,y,f)},P=f=>{const p=t.get(r,y);t.size(p)<=0||p.splice(f,1)};return()=>n.createVNode(e,t.omit(o,"rowKey"),{default:()=>{var f;return[t.map(t.get(r,y),(p,c)=>n.createVNode(Ze,{key:p[o.rowKey]||c,pathList:[...y,c]},{default:()=>{var u,i,m;return[n.createVNode("div",{class:"pro-form-list-item"},[(u=s.default)==null?void 0:u.call(s),!d.value&&n.createVNode(n.Fragment,null,[n.createVNode("div",{class:"pro-form-list-item-add",onClick:E},[(i=s.itemAdd)==null?void 0:i.call(s)]),n.createVNode("div",{class:"pro-form-list-item-minus",onClick:()=>P(c)},[(m=s.itemMinus)==null?void 0:m.call(s)])])])]}})),!d.value&&n.createVNode("div",{class:"pro-form-list-add",onClick:E},[(f=s.add)==null?void 0:f.call(s)])]}})}}),Me=Symbol("pro-form"),de=()=>n.inject(Me),tt=e=>{n.provide(Me,e)},fe=()=>({model:{type:Object},readonly:{type:Boolean,default:void 0},showState:{type:Object},showStateRules:{type:Object},readonlyState:{type:Object},readonlyStateRules:{type:Object},disableState:{type:Object},disableStateRules:{type:Object},needRules:{type:Boolean,default:!0},provideExtra:{type:Object}}),rt=(e,o,s)=>n.defineComponent({inheritAttrs:!1,props:{...e.props,...Q,...fe(),...t.omit(o.props,"items")},setup:(r,{slots:d,emit:a,expose:l,attrs:y})=>{const{elementMap:E,formElementMap:P}=Y(),f=r.elementMap||E,p=r.formElementMap||P,c=r.model||n.reactive({}),u=r.showState||n.reactive({}),i=r.readonlyState||n.reactive({}),m=r.disableState||n.reactive({});k.useEffect(()=>{r.showStateRules&&t.forEach(r.showStateRules,(D,N)=>{u[N]=D(c)}),r.readonlyStateRules&&t.forEach(r.readonlyStateRules,(D,N)=>{i[N]=D(c)}),r.disableStateRules&&t.forEach(r.disableStateRules,(D,N)=>{m[N]=D(c)})},c);const h=n.computed(()=>r.readonly),g=n.computed(()=>Z(r.columns,r.columnState,D=>x(D))),S=D=>{const N=Ae(D,u,r.showStateRules);a("finish",N,D)},v=n.ref();l(V(s,v)),tt({formState:c,showState:u,readonlyState:i,disableState:m,elementMap:f,formElementMap:p,readonly:h,columns:g,formRef:v,...r.provideExtra}),ue({});const I=t.keys(fe()),M=t.keys(t.omit(o.props,"items"));return()=>n.createVNode(e,n.mergeProps({ref:v},t.omit(y,"onFinish"),t.omit(r,...I,...M,"onFinish"),{model:c,onFinish:S}),{default:()=>{var D,N;return[(D=d.start)==null?void 0:D.call(d),p&&t.size(g.value)>0&&n.createVNode(n.Fragment,null,[r.row?n.createVNode(o,{row:r.row,col:r.col,items:t.map(g.value,b=>({rowKey:x(b),vNode:_(p,b,r.needRules),col:t.get(b,["extra","col"])}))},null):t.map(g.value,b=>_(p,b,r.needRules))]),(N=d.default)==null?void 0:N.call(d)]},...t.omit(d,"default")})}});exports.SearchMode=void 0;(function(e){e.AUTO="AUTO",e.MANUAL="MANUAL"})(exports.SearchMode||(exports.SearchMode={}));const pe=()=>({initEmit:{type:Boolean,default:!0},searchMode:{type:String,default:exports.SearchMode.AUTO},debounceKeys:{type:Array},debounceTypes:{type:Array,default:["text"]},debounceTime:{type:Number,default:800}}),nt=(e,o,s)=>n.defineComponent({props:{...e.props,...o,...pe()},setup:(r,{slots:d,expose:a})=>{const l=r.model||n.reactive({}),y=new Set(r.debounceTypes),E=t.map(t.filter(r.columns,i=>{const m=re(i);return y.has(m)}),i=>x(i)),P=n.ref();a(V(s,P));const f=()=>{var i;(i=P.value)==null||i.submit()},p=t.debounce(()=>{f()},r.debounceTime);k.useEffect(()=>{r.initEmit&&f()},[]);const c=(i,m,h)=>t.some(h,g=>t.get(i,g)!==t.get(m,g));k.useWatch((i,m)=>{if(r.searchMode!==exports.SearchMode.AUTO)return;const h=t.size(r.debounceKeys)>0?r.debounceKeys:E;if(t.size(h)>0&&c(i,m,h)){p();return}f()},()=>t.clone(l));const u=t.keys(t.omit(pe(),"columns"));return()=>n.createVNode(e,n.mergeProps({ref:P},t.omit(r,u),{model:l}),d)}}),ye=()=>({readonly:{type:Boolean,default:void 0},fieldProps:{type:Object},showProps:{type:Object},slots:{type:Object}}),ot=(e,o)=>({InputComp:s,valueType:r,name:d})=>n.defineComponent({name:d,props:{...e.props,...ye()},setup:(a,{slots:l})=>{const{formState:y,showState:E,readonlyState:P,disableState:f,readonly:p,elementMap:c}=de(),u=se(),i=n.computed(()=>t.isBoolean(a.readonly)?a.readonly:t.isBoolean(P[a.name])?P[a.name]:p.value),m=ae(a.name),h=u!=null&&u.pathList?[...u.pathList,...m]:m,g=v=>{t.set(y,h,v)},S=t.keys(ye());return()=>{const v=t.get(E,h);if(t.isBoolean(v)&&!v)return null;const I=t.get(y,h),M=t.get(c,r);return n.createVNode(e,n.mergeProps(t.omit(a,...S,"name","slots"),{name:h}),{default:()=>[i.value?n.createVNode(n.Fragment,null,[M?n.createVNode(M,n.mergeProps({value:I},a.fieldProps,{showProps:a.showProps}),l):n.createVNode("span",null,[I])]):n.createVNode(s,n.mergeProps(o(I,g,t.get(f,h)),a.fieldProps),l)],...a.slots})}}}),Oe=Symbol("pro-table"),at=()=>n.inject(Oe),ct=e=>{n.provide(Oe,e)},ge=()=>({operate:{type:Object},columnEmptyText:{type:String},column:{type:Object},serialNumber:{type:Boolean},paginationState:{type:Object},provideExtra:{type:Object}}),st=(e,o,s)=>n.defineComponent({props:{...e.props,...Q,...o,...ge()},setup:(r,{slots:d,expose:a})=>{const{elementMap:l}=Y(),y=r.elementMap||l,E=()=>({title:"\u5E8F\u53F7",dataIndex:"serialNumber",width:80,...r.column,customRender:({index:u})=>{var i,m;return((i=r.paginationState)==null?void 0:i.page)&&((m=r.paginationState)==null?void 0:m.pageSize)?r.paginationState.pageSize*(r.paginationState.page-1)+u+1:u+1}}),P=()=>{const u=r.operate,i=t.map(u.items,h=>({...h,...t.get(u.itemState,h.value)})),m=t.sortBy(i,h=>h.sort);return{...r.column,title:"\u64CD\u4F5C",dataIndex:"operate",fixed:"right",...u.column,customRender:({record:h})=>{const g=t.filter(m,S=>S.show&&t.isFunction(S.show)?S.show(h):S.show!==!1);return n.createVNode("div",{class:"pro-table-operate"},[t.map(g,S=>t.isFunction(S.element)?S.element(h,S):n.createVNode("div",{class:"pro-table-operate-item",key:S.value,onClick:()=>{var v;(v=S.onClick)==null||v.call(S,h)}},[S.label]))])}}},f=n.computed(()=>{const u=Z(r.columns,r.columnState,m=>m.dataIndex),i=t.map(u,m=>{const h={...r.column,...m};return m.customRender||(h.customRender=({text:g})=>ne(y,{...m,showProps:{...m.showProps,content:r.columnEmptyText}},g)||g||r.columnEmptyText),h});return r.serialNumber&&i.unshift(E()),r.operate&&r.operate.items&&t.some(r.operate.items,m=>m.show)&&i.push(P()),i}),p=n.ref();ct({columns:f,tableRef:p,...r.provideExtra}),a(V(s||[],p));const c=t.keys(ge());return()=>n.createVNode(e,n.mergeProps({ref:p},t.omit(r,c),{columns:f.value}),d)}});exports.CurdAction=C;exports.CurdAddAction=B;exports.CurdCurrentMode=F;exports.CurdMethods=ce;exports.CurdSubAction=T;exports.ProConfig=Ke;exports.ProCurd=G;exports.ProModalCurd=ze;exports.ProModule=W;exports.ProPageCurd=Xe;exports.RequestAction=U;exports.Wrapper=be;exports.convertPathToList=ae;exports.createCurdDesc=_e;exports.createCurdForm=Je;exports.createCurdList=Ye;exports.createExpose=V;exports.createForm=rt;exports.createFormItemCompFn=ot;exports.createFormList=et;exports.createGrid=we;exports.createProConfig=Ue;exports.createSearchForm=nt;exports.createTable=st;exports.defaultPage=Ie;exports.getColumnFormItemName=x;exports.getColumnValueType=re;exports.getFirstPropName=ve;exports.getFormItemEl=_;exports.getItemEl=ne;exports.getValidValues=Ae;exports.mergeStateToList=Z;exports.proBaseProps=Q;exports.provideProCurd=Ne;exports.provideProFormList=ue;exports.provideProModule=Te;exports.renderElement=K;exports.renderElements=H;exports.useComposeRequestActor=Pe;exports.useDoneRequestActor=je;exports.useFailedRequestActor=ke;exports.useModuleEvent=J;exports.useProConfig=Y;exports.useProCurd=z;exports.useProForm=de;exports.useProFormList=se;exports.useProModule=$;exports.useProTable=at;
|