@vue-start/pro 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/index.d.ts +250 -433
- package/dist/index.es.js +1284 -535
- package/dist/index.js +1297 -536
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -83,6 +83,50 @@ function _nonIterableSpread() {
|
|
|
83
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
84
|
}
|
|
85
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
|
+
|
|
86
130
|
var createUseRequestActor = function createUseRequestActor(filterFun) {
|
|
87
131
|
return function (actors, callback) {
|
|
88
132
|
var _useRequestProvide = request.useRequestProvide(),
|
|
@@ -155,94 +199,12 @@ var useComposeRequestActor = function useComposeRequestActor(actors, options, ca
|
|
|
155
199
|
}, []);
|
|
156
200
|
};
|
|
157
201
|
|
|
158
|
-
|
|
159
|
-
* 剔除showState或showStateRules规则为!true的值
|
|
160
|
-
* @param values
|
|
161
|
-
* @param showState
|
|
162
|
-
* @param showStateRules
|
|
163
|
-
*/
|
|
164
|
-
var getValidValues = function getValidValues(values, showState, showStateRules) {
|
|
165
|
-
if (showState) {
|
|
166
|
-
var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
|
|
167
|
-
return !showState[key];
|
|
168
|
-
});
|
|
169
|
-
return lodash.omit(values, invalidKeys);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
if (showStateRules) {
|
|
173
|
-
var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
|
|
174
|
-
return !showStateRules[key](values);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
return lodash.omit(values, _invalidKeys);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return values;
|
|
181
|
-
};
|
|
182
|
-
/**
|
|
183
|
-
* string类型的path转为arr
|
|
184
|
-
* @param path
|
|
185
|
-
*/
|
|
186
|
-
|
|
187
|
-
var convertPathToList = function convertPathToList(path) {
|
|
188
|
-
if (!path) {
|
|
189
|
-
return undefined;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if (lodash.isArray(path)) {
|
|
193
|
-
return path;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (path && lodash.isString(path) && path.indexOf(".") > 0) {
|
|
197
|
-
return lodash.split(path, ".");
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
return [path];
|
|
201
|
-
};
|
|
202
|
-
/**
|
|
203
|
-
* 唯一id
|
|
204
|
-
*/
|
|
205
|
-
|
|
206
|
-
var generateId = function generateId() {
|
|
207
|
-
return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
|
|
208
|
-
};
|
|
209
|
-
/**
|
|
210
|
-
* 将listState 中的数据通过id merge到 list item中
|
|
211
|
-
* ps:数组会替换
|
|
212
|
-
* @param list
|
|
213
|
-
* @param listState
|
|
214
|
-
* @param id
|
|
215
|
-
*/
|
|
216
|
-
|
|
217
|
-
var mergeStateToList = function mergeStateToList(list, listState, id) {
|
|
218
|
-
if (!listState || !id) {
|
|
219
|
-
return list;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
return lodash.map(list, function (item) {
|
|
223
|
-
var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
|
|
224
|
-
|
|
225
|
-
var stateData = lodash.get(listState, idName);
|
|
226
|
-
|
|
227
|
-
if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
|
|
228
|
-
return item;
|
|
229
|
-
} //只有是对象(键值对)才合并
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
|
|
233
|
-
//如果是数组,替换
|
|
234
|
-
if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
|
|
235
|
-
return srcValue;
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
};
|
|
202
|
+
/***************************************** curd模式 *****************************************/
|
|
240
203
|
|
|
241
204
|
/**
|
|
242
205
|
* 获取Column的valueType,默认"text"
|
|
243
206
|
* @param column
|
|
244
207
|
*/
|
|
245
|
-
|
|
246
208
|
var getColumnValueType = function getColumnValueType(column) {
|
|
247
209
|
return column.formValueType || column.valueType || "text";
|
|
248
210
|
};
|
|
@@ -308,6 +270,213 @@ var getItemEl = function getItemEl(elementMap, column, value) {
|
|
|
308
270
|
value: value
|
|
309
271
|
}), (_column$formFieldProp2 = column.formFieldProps) === null || _column$formFieldProp2 === void 0 ? void 0 : _column$formFieldProp2.slots);
|
|
310
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
|
+
|
|
311
480
|
var ProModuleKey = Symbol("pro-module");
|
|
312
481
|
var useProModule = function useProModule() {
|
|
313
482
|
return vue.inject(ProModuleKey);
|
|
@@ -330,32 +499,17 @@ var proModuleProps = function proModuleProps() {
|
|
|
330
499
|
},
|
|
331
500
|
|
|
332
501
|
/**
|
|
333
|
-
*
|
|
334
|
-
*/
|
|
335
|
-
columns: {
|
|
336
|
-
type: Array
|
|
337
|
-
},
|
|
338
|
-
|
|
339
|
-
/**
|
|
340
|
-
* 配置(动态)
|
|
341
|
-
* columns动态属性兼容
|
|
342
|
-
*/
|
|
343
|
-
columnState: {
|
|
344
|
-
type: Object
|
|
345
|
-
},
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* 展示组件集
|
|
502
|
+
* 组件集
|
|
349
503
|
*/
|
|
350
504
|
elementMap: {
|
|
351
505
|
type: Object
|
|
352
506
|
},
|
|
353
507
|
|
|
354
508
|
/**
|
|
355
|
-
*
|
|
509
|
+
* 组件描述(树)
|
|
356
510
|
*/
|
|
357
|
-
|
|
358
|
-
type:
|
|
511
|
+
elementConfigs: {
|
|
512
|
+
type: Array
|
|
359
513
|
},
|
|
360
514
|
|
|
361
515
|
/**
|
|
@@ -373,25 +527,13 @@ var ProModule = vue.defineComponent({
|
|
|
373
527
|
var slots = _ref.slots,
|
|
374
528
|
expose = _ref.expose;
|
|
375
529
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
return getColumnFormItemName(item);
|
|
382
|
-
});
|
|
383
|
-
});
|
|
384
|
-
/*********************************** 渲染组件 ***************************************/
|
|
385
|
-
// 获取FormItem VNode
|
|
386
|
-
|
|
387
|
-
var getFormItemVNode = function getFormItemVNode(column) {
|
|
388
|
-
var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
389
|
-
return getFormItemEl(props.formElementMap, column, needRules);
|
|
390
|
-
}; // 获取Item VNode
|
|
391
|
-
|
|
530
|
+
/*********************************** render ***************************************/
|
|
531
|
+
var render = function render(elementConfig) {
|
|
532
|
+
if (lodash.isArray(elementConfig)) {
|
|
533
|
+
return renderElements(props.elementMap, elementConfig);
|
|
534
|
+
}
|
|
392
535
|
|
|
393
|
-
|
|
394
|
-
return getItemEl(props.elementMap, column, value);
|
|
536
|
+
return renderElement(props.elementMap, elementConfig);
|
|
395
537
|
};
|
|
396
538
|
/*********************************** 事件处理 ***************************************/
|
|
397
539
|
|
|
@@ -407,13 +549,15 @@ var ProModule = vue.defineComponent({
|
|
|
407
549
|
var state = props.state || vue.reactive({});
|
|
408
550
|
|
|
409
551
|
var dispatch = function dispatch(action) {
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
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);
|
|
413
557
|
return;
|
|
414
558
|
}
|
|
415
559
|
|
|
416
|
-
state[action.type] =
|
|
560
|
+
state[action.type] = data;
|
|
417
561
|
};
|
|
418
562
|
/*********************************** request ***************************************/
|
|
419
563
|
|
|
@@ -517,11 +661,7 @@ var ProModule = vue.defineComponent({
|
|
|
517
661
|
}
|
|
518
662
|
}, true);
|
|
519
663
|
provideProModule({
|
|
520
|
-
columns: columns,
|
|
521
|
-
getFormItemVNode: getFormItemVNode,
|
|
522
|
-
getItemVNode: getItemVNode,
|
|
523
664
|
elementMap: props.elementMap,
|
|
524
|
-
formElementMap: props.formElementMap,
|
|
525
665
|
//
|
|
526
666
|
subject$: subject$,
|
|
527
667
|
sendEvent: sendEvent,
|
|
@@ -539,7 +679,7 @@ var ProModule = vue.defineComponent({
|
|
|
539
679
|
return function () {
|
|
540
680
|
var _slots$default;
|
|
541
681
|
|
|
542
|
-
return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
|
|
682
|
+
return vue.createVNode(vue.Fragment, null, [lodash.size(props.elementConfigs) > 0 && render(props.elementConfigs), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
|
|
543
683
|
};
|
|
544
684
|
}
|
|
545
685
|
});
|
|
@@ -618,20 +758,217 @@ exports.CurdAddAction = void 0;
|
|
|
618
758
|
CurdAddAction["CONTINUE"] = "CONTINUE";
|
|
619
759
|
})(exports.CurdAddAction || (exports.CurdAddAction = {}));
|
|
620
760
|
|
|
621
|
-
var
|
|
622
|
-
|
|
623
|
-
|
|
761
|
+
var treeDefaultNames = {
|
|
762
|
+
children: "children",
|
|
763
|
+
label: "label",
|
|
764
|
+
value: "value"
|
|
624
765
|
};
|
|
766
|
+
/**
|
|
767
|
+
* 根据value从treeData中找到对象
|
|
768
|
+
* @param data
|
|
769
|
+
* @param value
|
|
770
|
+
* @param fieldNames
|
|
771
|
+
* @param cb 对象:同步 方法:回调,可以理解为异步
|
|
772
|
+
*/
|
|
625
773
|
|
|
626
|
-
var
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
}
|
|
774
|
+
var findTargetInTree = function findTargetInTree(data, value, fieldNames, cb) {
|
|
775
|
+
var index = lodash.findIndex(data, function (item) {
|
|
776
|
+
return lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
|
|
777
|
+
});
|
|
778
|
+
|
|
779
|
+
if (index > -1) {
|
|
780
|
+
if (lodash.isFunction(cb)) {
|
|
781
|
+
cb(index, data[index], data);
|
|
782
|
+
} else {
|
|
783
|
+
cb.index = index;
|
|
784
|
+
cb.target = data[index];
|
|
785
|
+
cb.list = data;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
return;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
lodash.forEach(data, function (item) {
|
|
792
|
+
var children = lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
|
|
793
|
+
|
|
794
|
+
if (lodash.size(children) > 0) {
|
|
795
|
+
findTargetInTree(children, value, fieldNames, cb);
|
|
796
|
+
}
|
|
797
|
+
});
|
|
798
|
+
};
|
|
799
|
+
/**
|
|
800
|
+
* 根据value从treeData中找出对象及父列表
|
|
801
|
+
* @param data
|
|
802
|
+
* @param value
|
|
803
|
+
* @param fieldNames
|
|
804
|
+
* @param cb
|
|
805
|
+
* @param parent
|
|
806
|
+
*/
|
|
807
|
+
|
|
808
|
+
var findTargetListInTree = function findTargetListInTree(data, value, fieldNames, cb) {
|
|
809
|
+
var parent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
|
|
810
|
+
var target = lodash.find(data, function (item) {
|
|
811
|
+
return lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || treeDefaultNames.value) === value;
|
|
812
|
+
});
|
|
813
|
+
|
|
814
|
+
if (target) {
|
|
815
|
+
if (lodash.isFunction(cb)) {
|
|
816
|
+
cb([].concat(_toConsumableArray(parent), [target]));
|
|
817
|
+
} else {
|
|
818
|
+
cb.list = [].concat(_toConsumableArray(parent), [target]);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
lodash.forEach(data, function (item) {
|
|
825
|
+
var children = lodash.get(item, (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || treeDefaultNames.children);
|
|
826
|
+
|
|
827
|
+
if (lodash.size(children) > 0) {
|
|
828
|
+
findTargetListInTree(children, value, fieldNames, cb, [].concat(_toConsumableArray(parent), [item]));
|
|
829
|
+
}
|
|
830
|
+
});
|
|
831
|
+
};
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* 剔除showState或showStateRules规则为!true的值
|
|
835
|
+
* @param values
|
|
836
|
+
* @param showState
|
|
837
|
+
* @param showStateRules
|
|
838
|
+
*/
|
|
839
|
+
|
|
840
|
+
var getValidValues = function getValidValues(values, showState, showStateRules) {
|
|
841
|
+
if (showState) {
|
|
842
|
+
var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
|
|
843
|
+
return !showState[key];
|
|
844
|
+
});
|
|
845
|
+
return lodash.omit(values, invalidKeys);
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
if (showStateRules) {
|
|
849
|
+
var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
|
|
850
|
+
return !showStateRules[key](values);
|
|
851
|
+
});
|
|
852
|
+
|
|
853
|
+
return lodash.omit(values, _invalidKeys);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
return values;
|
|
857
|
+
};
|
|
858
|
+
/**
|
|
859
|
+
* string类型的path转为arr
|
|
860
|
+
* @param path
|
|
861
|
+
*/
|
|
862
|
+
|
|
863
|
+
var convertPathToList = function convertPathToList(path) {
|
|
864
|
+
if (!path) {
|
|
865
|
+
return undefined;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
if (lodash.isArray(path)) {
|
|
869
|
+
return path;
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
if (path && lodash.isString(path) && path.indexOf(".") > 0) {
|
|
873
|
+
return lodash.split(path, ".");
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
return [path];
|
|
877
|
+
};
|
|
878
|
+
/**
|
|
879
|
+
* 将listState 中的数据通过id merge到 list item中
|
|
880
|
+
* ps:数组会替换
|
|
881
|
+
* 注意:mergeWith 会改变原始对象
|
|
882
|
+
* @param list
|
|
883
|
+
* @param listState
|
|
884
|
+
* @param id
|
|
885
|
+
*/
|
|
886
|
+
|
|
887
|
+
var mergeStateToList = function mergeStateToList(list, listState, id) {
|
|
888
|
+
if (!listState || !id) {
|
|
889
|
+
return list;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
return lodash.map(list, function (item) {
|
|
893
|
+
var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
|
|
894
|
+
|
|
895
|
+
var stateData = lodash.get(listState, idName);
|
|
896
|
+
|
|
897
|
+
if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
|
|
898
|
+
return item;
|
|
899
|
+
} //只有是对象(键值对)才合并
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
|
|
903
|
+
//如果是数组,替换
|
|
904
|
+
if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
|
|
905
|
+
return srcValue;
|
|
906
|
+
}
|
|
907
|
+
});
|
|
908
|
+
});
|
|
909
|
+
};
|
|
910
|
+
|
|
911
|
+
/**
|
|
912
|
+
* 唯一id
|
|
913
|
+
*/
|
|
914
|
+
|
|
915
|
+
var generateId = function generateId() {
|
|
916
|
+
return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
|
|
917
|
+
};
|
|
918
|
+
/**
|
|
919
|
+
* ref 传递
|
|
920
|
+
*/
|
|
921
|
+
|
|
922
|
+
var createExpose = function createExpose(methods, targetRef) {
|
|
923
|
+
return lodash.reduce(methods, function (pair, method) {
|
|
924
|
+
return _objectSpread2(_objectSpread2({}, pair), {}, _defineProperty({}, method, function () {
|
|
925
|
+
var _targetRef$value, _targetRef$value$meth;
|
|
926
|
+
|
|
927
|
+
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
928
|
+
params[_key] = arguments[_key];
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
return (_targetRef$value = targetRef.value) === null || _targetRef$value === void 0 ? void 0 : (_targetRef$value$meth = _targetRef$value[method]) === null || _targetRef$value$meth === void 0 ? void 0 : _targetRef$value$meth.call.apply(_targetRef$value$meth, [_targetRef$value].concat(params));
|
|
932
|
+
}));
|
|
933
|
+
}, {});
|
|
934
|
+
};
|
|
935
|
+
|
|
936
|
+
var defaultPage = {
|
|
937
|
+
page: 1,
|
|
938
|
+
pageSize: 10
|
|
939
|
+
};
|
|
940
|
+
|
|
941
|
+
var proCurdProps = function proCurdProps() {
|
|
942
|
+
return {
|
|
943
|
+
/**
|
|
944
|
+
* 配置(静态)
|
|
945
|
+
*/
|
|
946
|
+
columns: {
|
|
947
|
+
type: Array
|
|
948
|
+
},
|
|
949
|
+
|
|
950
|
+
/**
|
|
951
|
+
* 配置(动态)
|
|
952
|
+
* columns动态属性兼容
|
|
953
|
+
*/
|
|
954
|
+
columnState: {
|
|
955
|
+
type: Object
|
|
956
|
+
},
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* 录入组件集
|
|
960
|
+
*/
|
|
961
|
+
formElementMap: {
|
|
962
|
+
type: Object
|
|
963
|
+
},
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* 列表 或 详情 的唯一标识
|
|
967
|
+
*/
|
|
968
|
+
rowKey: {
|
|
969
|
+
type: String,
|
|
970
|
+
"default": "id"
|
|
971
|
+
},
|
|
635
972
|
|
|
636
973
|
/**
|
|
637
974
|
* operates
|
|
@@ -663,58 +1000,67 @@ var Curd = vue.defineComponent({
|
|
|
663
1000
|
expose = _ref.expose;
|
|
664
1001
|
|
|
665
1002
|
var _ref2 = useProModule(),
|
|
666
|
-
|
|
1003
|
+
elementMap = _ref2.elementMap,
|
|
667
1004
|
state = _ref2.state,
|
|
668
1005
|
sendEvent = _ref2.sendEvent,
|
|
669
1006
|
sendRequest = _ref2.sendRequest;
|
|
670
1007
|
/**
|
|
671
|
-
*
|
|
672
|
-
* @param list
|
|
673
|
-
* @param propName
|
|
1008
|
+
* columns columnState 合并
|
|
674
1009
|
*/
|
|
675
1010
|
|
|
676
1011
|
|
|
677
|
-
var
|
|
678
|
-
return
|
|
679
|
-
return
|
|
1012
|
+
var columns = vue.computed(function () {
|
|
1013
|
+
return mergeStateToList(props.columns, props.columnState, function (item) {
|
|
1014
|
+
return getColumnFormItemName(item);
|
|
680
1015
|
});
|
|
1016
|
+
});
|
|
1017
|
+
/*********************************** 渲染组件 ***************************************/
|
|
1018
|
+
// 获取FormItem VNode
|
|
1019
|
+
|
|
1020
|
+
var getFormItemVNode = function getFormItemVNode(column) {
|
|
1021
|
+
var needRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1022
|
+
return getFormItemEl(props.formElementMap, column, needRules);
|
|
1023
|
+
}; // 获取Item VNode
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
var getItemVNode = function getItemVNode(column, value) {
|
|
1027
|
+
return getItemEl(elementMap, column, value);
|
|
681
1028
|
};
|
|
682
1029
|
/**
|
|
683
|
-
*
|
|
1030
|
+
* ${signName} 配置为true 会被选择
|
|
1031
|
+
* @param signName
|
|
1032
|
+
* @param opposite 如果为true,未配置(undefined)会被选择
|
|
684
1033
|
*/
|
|
685
1034
|
|
|
686
1035
|
|
|
1036
|
+
var getSignColumns = function getSignColumns(signName, opposite) {
|
|
1037
|
+
var signColumns = lodash.filter(columns.value, function (item) {
|
|
1038
|
+
var sign = lodash.get(item, ["extra", signName]) || lodash.get(item, signName);
|
|
1039
|
+
|
|
1040
|
+
if (opposite) {
|
|
1041
|
+
//不为false 即为选中
|
|
1042
|
+
return sign !== false;
|
|
1043
|
+
} //只有true 才为选中
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
return sign;
|
|
1047
|
+
});
|
|
1048
|
+
return lodash.sortBy(signColumns, function (item) {
|
|
1049
|
+
return lodash.get(item, ["extra", "".concat(signName, "Sort")]) || lodash.get(item, "".concat(signName, "Sort"));
|
|
1050
|
+
});
|
|
1051
|
+
};
|
|
1052
|
+
|
|
687
1053
|
var formColumns = vue.computed(function () {
|
|
688
|
-
return
|
|
689
|
-
return !item.hideInForm;
|
|
690
|
-
}), "formSort");
|
|
1054
|
+
return getSignColumns("form", true);
|
|
691
1055
|
});
|
|
692
|
-
/**
|
|
693
|
-
* 非 hideInDetail columns
|
|
694
|
-
*/
|
|
695
|
-
|
|
696
1056
|
var descColumns = vue.computed(function () {
|
|
697
|
-
return
|
|
698
|
-
return !item.hideInDetail;
|
|
699
|
-
}), "descSort");
|
|
1057
|
+
return getSignColumns("detail", true);
|
|
700
1058
|
});
|
|
701
|
-
/**
|
|
702
|
-
* 非 hideInTable columns
|
|
703
|
-
*/
|
|
704
|
-
|
|
705
1059
|
var tableColumns = vue.computed(function () {
|
|
706
|
-
return
|
|
707
|
-
return !item.hideInTable;
|
|
708
|
-
}), "tableSort");
|
|
1060
|
+
return getSignColumns("table", true);
|
|
709
1061
|
});
|
|
710
|
-
/**
|
|
711
|
-
* search columns
|
|
712
|
-
*/
|
|
713
|
-
|
|
714
1062
|
var searchColumns = vue.computed(function () {
|
|
715
|
-
return
|
|
716
|
-
return !!item.search;
|
|
717
|
-
}), "searchSort");
|
|
1063
|
+
return getSignColumns("search");
|
|
718
1064
|
});
|
|
719
1065
|
/******************************** 逻辑 *************************************/
|
|
720
1066
|
//上一次发起列表请求的参数
|
|
@@ -799,6 +1145,13 @@ var Curd = vue.defineComponent({
|
|
|
799
1145
|
return props.modalProps;
|
|
800
1146
|
});
|
|
801
1147
|
provideProCurd({
|
|
1148
|
+
columns: columns,
|
|
1149
|
+
getSignColumns: getSignColumns,
|
|
1150
|
+
getFormItemVNode: getFormItemVNode,
|
|
1151
|
+
getItemVNode: getItemVNode,
|
|
1152
|
+
elementMap: elementMap,
|
|
1153
|
+
formElementMap: props.formElementMap,
|
|
1154
|
+
//
|
|
802
1155
|
rowKey: props.rowKey,
|
|
803
1156
|
curdState: state,
|
|
804
1157
|
formColumns: formColumns,
|
|
@@ -1274,97 +1627,525 @@ var ProPageCurd = vue.defineComponent({
|
|
|
1274
1627
|
}
|
|
1275
1628
|
});
|
|
1276
1629
|
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
};
|
|
1630
|
+
function _isSlot(s) {
|
|
1631
|
+
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
1632
|
+
}
|
|
1281
1633
|
|
|
1282
|
-
var
|
|
1283
|
-
vue.
|
|
1634
|
+
var createCurdDesc = function createCurdDesc(Descriptions, DescriptionsItem) {
|
|
1635
|
+
return vue.defineComponent({
|
|
1636
|
+
props: _objectSpread2(_objectSpread2({}, Descriptions.props), {}, {
|
|
1637
|
+
//重写Item content
|
|
1638
|
+
renderItem: {
|
|
1639
|
+
type: Function
|
|
1640
|
+
}
|
|
1641
|
+
}),
|
|
1642
|
+
setup: function setup(props, _ref) {
|
|
1643
|
+
var slots = _ref.slots;
|
|
1644
|
+
|
|
1645
|
+
var _useProCurd = useProCurd(),
|
|
1646
|
+
getItemVNode = _useProCurd.getItemVNode,
|
|
1647
|
+
curdState = _useProCurd.curdState,
|
|
1648
|
+
descColumns = _useProCurd.descColumns;
|
|
1649
|
+
|
|
1650
|
+
var descVNodes = vue.computed(function () {
|
|
1651
|
+
return lodash.map(descColumns.value, function (item) {
|
|
1652
|
+
var _slot;
|
|
1653
|
+
|
|
1654
|
+
var _props$renderItem;
|
|
1655
|
+
|
|
1656
|
+
var vn = (_props$renderItem = props.renderItem) === null || _props$renderItem === void 0 ? void 0 : _props$renderItem.call(props, item);
|
|
1657
|
+
|
|
1658
|
+
if (vn) {
|
|
1659
|
+
return vn;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
var value = lodash.get(curdState.detailData, item.dataIndex);
|
|
1663
|
+
return vue.createVNode(DescriptionsItem, vue.mergeProps({
|
|
1664
|
+
"key": item.dataIndex,
|
|
1665
|
+
"label": item.title
|
|
1666
|
+
}, lodash.get(item.extra, "desc")), _isSlot(_slot = getItemVNode(item, value)) ? _slot : {
|
|
1667
|
+
"default": function _default() {
|
|
1668
|
+
return [_slot];
|
|
1669
|
+
}
|
|
1670
|
+
});
|
|
1671
|
+
});
|
|
1672
|
+
});
|
|
1673
|
+
return function () {
|
|
1674
|
+
var _slots$start, _slots$default;
|
|
1675
|
+
|
|
1676
|
+
return vue.createVNode(Descriptions, props, _objectSpread2({
|
|
1677
|
+
"default": function _default() {
|
|
1678
|
+
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)];
|
|
1679
|
+
}
|
|
1680
|
+
}, lodash.omit(slots, "default", "start")));
|
|
1681
|
+
};
|
|
1682
|
+
}
|
|
1683
|
+
});
|
|
1284
1684
|
};
|
|
1285
1685
|
|
|
1286
|
-
var
|
|
1686
|
+
var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
|
|
1287
1687
|
return {
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
*/
|
|
1291
|
-
model: {
|
|
1292
|
-
type: Object
|
|
1293
|
-
},
|
|
1294
|
-
|
|
1295
|
-
/**
|
|
1296
|
-
* 子组件是否只读样式
|
|
1297
|
-
*/
|
|
1298
|
-
readonly: {
|
|
1688
|
+
//是否使用operate bar
|
|
1689
|
+
operateBar: {
|
|
1299
1690
|
type: Boolean,
|
|
1300
|
-
"default":
|
|
1301
|
-
},
|
|
1302
|
-
|
|
1303
|
-
/**
|
|
1304
|
-
* FormComponent 根据此项来确定组件是否显示
|
|
1305
|
-
* rules 根据rules中方法生成showState对象
|
|
1306
|
-
*/
|
|
1307
|
-
showState: {
|
|
1308
|
-
type: Object
|
|
1691
|
+
"default": true
|
|
1309
1692
|
},
|
|
1310
|
-
|
|
1311
|
-
|
|
1693
|
+
//显示 确定并继续 按钮
|
|
1694
|
+
showContinueAdd: {
|
|
1695
|
+
type: Boolean,
|
|
1696
|
+
"default": false
|
|
1312
1697
|
},
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
readonlyState: {
|
|
1318
|
-
type: Object
|
|
1698
|
+
//
|
|
1699
|
+
okText: {
|
|
1700
|
+
type: String,
|
|
1701
|
+
"default": "确定"
|
|
1319
1702
|
},
|
|
1320
|
-
|
|
1703
|
+
okButtonProps: {
|
|
1321
1704
|
type: Object
|
|
1322
1705
|
},
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
disableState: {
|
|
1328
|
-
type: Object
|
|
1706
|
+
//
|
|
1707
|
+
continueText: {
|
|
1708
|
+
type: String,
|
|
1709
|
+
"default": "确定并继续"
|
|
1329
1710
|
},
|
|
1330
|
-
|
|
1711
|
+
continueButtonProps: {
|
|
1331
1712
|
type: Object
|
|
1332
|
-
}
|
|
1713
|
+
}
|
|
1714
|
+
};
|
|
1715
|
+
};
|
|
1333
1716
|
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1717
|
+
var createCurdForm = function createCurdForm(Form, Button, convertFormProps) {
|
|
1718
|
+
return vue.defineComponent({
|
|
1719
|
+
props: _objectSpread2(_objectSpread2({}, Form.props), proCurdAddOrEditProps()),
|
|
1720
|
+
setup: function setup(props, _ref) {
|
|
1721
|
+
var slots = _ref.slots;
|
|
1722
|
+
|
|
1723
|
+
var _useProCurd = useProCurd(),
|
|
1724
|
+
elementMap = _useProCurd.elementMap,
|
|
1725
|
+
formElementMap = _useProCurd.formElementMap,
|
|
1726
|
+
curdState = _useProCurd.curdState,
|
|
1727
|
+
formColumns = _useProCurd.formColumns,
|
|
1728
|
+
sendCurdEvent = _useProCurd.sendCurdEvent;
|
|
1729
|
+
|
|
1730
|
+
var formRef = vue.ref();
|
|
1731
|
+
|
|
1732
|
+
var handleFinish = function handleFinish(values) {
|
|
1733
|
+
if (curdState.mode === exports.CurdCurrentMode.EDIT) {
|
|
1734
|
+
//edit
|
|
1735
|
+
sendCurdEvent({
|
|
1736
|
+
action: exports.CurdAction.EDIT,
|
|
1737
|
+
type: exports.CurdSubAction.EXECUTE,
|
|
1738
|
+
values: values
|
|
1739
|
+
});
|
|
1740
|
+
} else {
|
|
1741
|
+
//add
|
|
1742
|
+
sendCurdEvent({
|
|
1743
|
+
action: exports.CurdAction.ADD,
|
|
1744
|
+
type: exports.CurdSubAction.EXECUTE,
|
|
1745
|
+
values: values
|
|
1746
|
+
});
|
|
1747
|
+
}
|
|
1748
|
+
};
|
|
1749
|
+
|
|
1750
|
+
var handleAdd = function handleAdd() {
|
|
1751
|
+
var _formRef$value;
|
|
1752
|
+
|
|
1753
|
+
curdState.addAction = exports.CurdAddAction.NORMAL;
|
|
1754
|
+
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
1755
|
+
};
|
|
1756
|
+
|
|
1757
|
+
var handleContinueAdd = function handleContinueAdd() {
|
|
1758
|
+
var _formRef$value2;
|
|
1759
|
+
|
|
1760
|
+
curdState.addAction = exports.CurdAddAction.CONTINUE;
|
|
1761
|
+
(_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.submit();
|
|
1762
|
+
};
|
|
1763
|
+
|
|
1764
|
+
return function () {
|
|
1765
|
+
var _slots$divide, _slots$operateStart, _slots$operateCenter, _slots$operateEnd, _slots$default;
|
|
1766
|
+
|
|
1767
|
+
return vue.createVNode(Form, vue.mergeProps({
|
|
1768
|
+
"ref": formRef
|
|
1769
|
+
}, props, {
|
|
1770
|
+
"elementMap": props.elementMap || elementMap,
|
|
1771
|
+
"formElementMap": props.formElementMap || formElementMap,
|
|
1772
|
+
"columns": formColumns.value,
|
|
1773
|
+
"model": curdState.detailData,
|
|
1774
|
+
"readonly": curdState.mode === exports.CurdCurrentMode.DETAIL,
|
|
1775
|
+
"onFinish": handleFinish
|
|
1776
|
+
}, convertFormProps === null || convertFormProps === void 0 ? void 0 : convertFormProps(curdState)), _objectSpread2({
|
|
1777
|
+
"default": function _default() {
|
|
1778
|
+
return [(_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), props.operateBar && vue.createVNode("div", {
|
|
1779
|
+
"class": "pro-curd-form-operate"
|
|
1780
|
+
}, [(_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({
|
|
1781
|
+
"onClick": handleAdd
|
|
1782
|
+
}, props.okButtonProps, {
|
|
1783
|
+
"loading": curdState.operateLoading
|
|
1784
|
+
}), {
|
|
1785
|
+
"default": function _default() {
|
|
1786
|
+
return [props.okText];
|
|
1787
|
+
}
|
|
1788
|
+
}), (_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({
|
|
1789
|
+
"onClick": handleContinueAdd
|
|
1790
|
+
}, props.continueButtonProps, {
|
|
1791
|
+
"loading": curdState.operateLoading
|
|
1792
|
+
}), {
|
|
1793
|
+
"default": function _default() {
|
|
1794
|
+
return [props.continueText];
|
|
1795
|
+
}
|
|
1796
|
+
}), (_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)];
|
|
1797
|
+
}
|
|
1798
|
+
}, lodash.omit(slots, "default", "divide", "operateStart", "operateCenter", "operateEnd")));
|
|
1799
|
+
};
|
|
1800
|
+
}
|
|
1801
|
+
});
|
|
1802
|
+
};
|
|
1803
|
+
|
|
1804
|
+
var proCurdListProps = function proCurdListProps() {
|
|
1805
|
+
return {
|
|
1806
|
+
/**
|
|
1807
|
+
* extra 是否放到SearchForm中
|
|
1808
|
+
*/
|
|
1809
|
+
extraInSearch: {
|
|
1810
|
+
type: Boolean,
|
|
1811
|
+
"default": undefined
|
|
1812
|
+
},
|
|
1813
|
+
//search
|
|
1814
|
+
searchProps: {
|
|
1815
|
+
type: Object
|
|
1816
|
+
},
|
|
1817
|
+
//table
|
|
1818
|
+
tableProps: {
|
|
1819
|
+
type: Object
|
|
1820
|
+
},
|
|
1821
|
+
//pageState
|
|
1822
|
+
pageState: {
|
|
1823
|
+
type: Object
|
|
1824
|
+
}
|
|
1825
|
+
};
|
|
1826
|
+
};
|
|
1827
|
+
|
|
1828
|
+
var createCurdList = function createCurdList(SearchForm, Table) {
|
|
1829
|
+
return vue.defineComponent({
|
|
1830
|
+
props: _objectSpread2({}, proCurdListProps()),
|
|
1831
|
+
setup: function setup(props, _ref) {
|
|
1832
|
+
var slots = _ref.slots;
|
|
1833
|
+
|
|
1834
|
+
var _useProCurd = useProCurd(),
|
|
1835
|
+
elementMap = _useProCurd.elementMap,
|
|
1836
|
+
formElementMap = _useProCurd.formElementMap,
|
|
1837
|
+
curdState = _useProCurd.curdState,
|
|
1838
|
+
searchColumns = _useProCurd.searchColumns,
|
|
1839
|
+
tableColumns = _useProCurd.tableColumns,
|
|
1840
|
+
getOperate = _useProCurd.getOperate,
|
|
1841
|
+
sendCurdEvent = _useProCurd.sendCurdEvent;
|
|
1842
|
+
/******************* search pagination ********************/
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
var pageState = props.pageState || vue.reactive(_objectSpread2({}, defaultPage));
|
|
1846
|
+
var prevValues;
|
|
1847
|
+
|
|
1848
|
+
var handleSearch = function handleSearch() {
|
|
1849
|
+
sendCurdEvent({
|
|
1850
|
+
action: exports.CurdAction.LIST,
|
|
1851
|
+
type: exports.CurdSubAction.EMIT,
|
|
1852
|
+
values: _objectSpread2(_objectSpread2({}, prevValues), pageState)
|
|
1853
|
+
});
|
|
1854
|
+
};
|
|
1855
|
+
|
|
1856
|
+
var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
|
|
1857
|
+
prevValues = values;
|
|
1858
|
+
pageState.page = 1;
|
|
1859
|
+
handleSearch();
|
|
1860
|
+
};
|
|
1861
|
+
/******************* table ********************/
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
var createTableItem = function createTableItem(action) {
|
|
1865
|
+
var operate = getOperate(action);
|
|
1866
|
+
|
|
1867
|
+
var item = _objectSpread2(_objectSpread2({}, lodash.pick(operate, "label", "element", "disabled", "sort", "onClick")), {}, {
|
|
1868
|
+
show: !lodash.isUndefined(operate === null || operate === void 0 ? void 0 : operate.show) ? operate === null || operate === void 0 ? void 0 : operate.show : false,
|
|
1869
|
+
value: action
|
|
1870
|
+
});
|
|
1871
|
+
|
|
1872
|
+
if (!item.onClick) {
|
|
1873
|
+
return _objectSpread2(_objectSpread2({}, item), {}, {
|
|
1874
|
+
onClick: function onClick(record) {
|
|
1875
|
+
//默认发送事件
|
|
1876
|
+
sendCurdEvent({
|
|
1877
|
+
action: action,
|
|
1878
|
+
type: exports.CurdSubAction.EMIT,
|
|
1879
|
+
record: record
|
|
1880
|
+
});
|
|
1881
|
+
}
|
|
1882
|
+
});
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
return item;
|
|
1886
|
+
}; //table操作栏 items
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
var tableOperateItems = [createTableItem(exports.CurdAction.DETAIL), createTableItem(exports.CurdAction.EDIT), createTableItem(exports.CurdAction.DELETE)]; //新配置的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 _props$searchProps, _slots$divide, _curdState$listData, _slots$divide2, _slots$footerStart, _slots$pagination, _curdState$listData2, _slots$footerEnd;
|
|
1911
|
+
|
|
1912
|
+
var tableProps = props.tableProps;
|
|
1913
|
+
var extra = slots.extra ? vue.createVNode("div", {
|
|
1914
|
+
"class": "pro-curd-list-extra"
|
|
1915
|
+
}, [slots.extra()]) : null;
|
|
1916
|
+
return vue.createVNode(vue.Fragment, null, [vue.createVNode(SearchForm, vue.mergeProps({
|
|
1917
|
+
"formElementMap": formElementMap
|
|
1918
|
+
}, lodash.omit(props.searchProps, "slots"), {
|
|
1919
|
+
"columns": searchColumns.value,
|
|
1920
|
+
"onFinish": executeSearchWithResetPage
|
|
1921
|
+
}), _objectSpread2({
|
|
1922
|
+
"default": function _default() {
|
|
1923
|
+
return [props.extraInSearch && extra];
|
|
1924
|
+
}
|
|
1925
|
+
}, (_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() : vue.createVNode(Table, vue.mergeProps({
|
|
1926
|
+
"elementMap": elementMap
|
|
1927
|
+
}, lodash.omit(tableProps, "slots", "operate"), {
|
|
1928
|
+
"operate": lodash.mergeWith({
|
|
1929
|
+
items: tableOperateItems
|
|
1930
|
+
}, tableProps === null || tableProps === void 0 ? void 0 : tableProps.operate, function (objValue, srcValue) {
|
|
1931
|
+
if (lodash.isArray(objValue) && lodash.isArray(srcValue)) {
|
|
1932
|
+
return lodash.concat(objValue, convertOperateItems(srcValue));
|
|
1933
|
+
}
|
|
1934
|
+
}),
|
|
1935
|
+
"paginationState": {
|
|
1936
|
+
page: pageState.page,
|
|
1937
|
+
pageSize: pageState.pageSize
|
|
1938
|
+
},
|
|
1939
|
+
"columns": tableColumns.value,
|
|
1940
|
+
"loading": curdState.listLoading,
|
|
1941
|
+
"dataSource": (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
|
|
1942
|
+
}), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), vue.createVNode("div", {
|
|
1943
|
+
"class": "pro-curd-list-footer"
|
|
1944
|
+
}, [(_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)])]);
|
|
1945
|
+
};
|
|
1946
|
+
}
|
|
1947
|
+
});
|
|
1948
|
+
};
|
|
1949
|
+
|
|
1950
|
+
/**
|
|
1951
|
+
* ProFormList ctx
|
|
1952
|
+
*/
|
|
1953
|
+
|
|
1954
|
+
var ProFormListKey = Symbol("pro-form-list");
|
|
1955
|
+
var useProFormList = function useProFormList() {
|
|
1956
|
+
return vue.inject(ProFormListKey);
|
|
1957
|
+
};
|
|
1958
|
+
var provideProFormList = function provideProFormList(ctx) {
|
|
1959
|
+
vue.provide(ProFormListKey, ctx);
|
|
1960
|
+
};
|
|
1961
|
+
var FormListProvider = vue.defineComponent({
|
|
1962
|
+
props: {
|
|
1963
|
+
pathList: {
|
|
1964
|
+
type: Array
|
|
1965
|
+
}
|
|
1966
|
+
},
|
|
1967
|
+
setup: function setup(props, _ref) {
|
|
1968
|
+
var slots = _ref.slots;
|
|
1969
|
+
provideProFormList({
|
|
1970
|
+
pathList: props.pathList
|
|
1971
|
+
});
|
|
1972
|
+
return function () {
|
|
1973
|
+
var _slots$default;
|
|
1974
|
+
|
|
1975
|
+
return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
|
|
1976
|
+
};
|
|
1977
|
+
}
|
|
1978
|
+
});
|
|
1979
|
+
|
|
1980
|
+
var createFormList = function createFormList(FormItem) {
|
|
1981
|
+
return vue.defineComponent({
|
|
1982
|
+
props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
|
|
1983
|
+
//每行默认id
|
|
1984
|
+
rowKey: {
|
|
1985
|
+
type: String,
|
|
1986
|
+
"default": "id"
|
|
1987
|
+
}
|
|
1988
|
+
}),
|
|
1989
|
+
setup: function setup(props, _ref2) {
|
|
1990
|
+
var slots = _ref2.slots;
|
|
1991
|
+
|
|
1992
|
+
var _useProForm = useProForm(),
|
|
1993
|
+
formState = _useProForm.formState,
|
|
1994
|
+
readonly = _useProForm.readonly;
|
|
1995
|
+
|
|
1996
|
+
var formListCtx = useProFormList();
|
|
1997
|
+
var nameList = convertPathToList(props.name);
|
|
1998
|
+
var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
|
|
1999
|
+
|
|
2000
|
+
var handleAdd = function handleAdd() {
|
|
2001
|
+
var targetList = lodash.get(formState, path);
|
|
2002
|
+
|
|
2003
|
+
if (!lodash.isArray(targetList)) {
|
|
2004
|
+
targetList = [];
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
|
|
2008
|
+
lodash.set(formState, path, targetList);
|
|
2009
|
+
};
|
|
2010
|
+
|
|
2011
|
+
var handleRemove = function handleRemove(index) {
|
|
2012
|
+
var targetList = lodash.get(formState, path);
|
|
2013
|
+
|
|
2014
|
+
if (lodash.size(targetList) <= 0) {
|
|
2015
|
+
return;
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2018
|
+
targetList.splice(index, 1);
|
|
2019
|
+
};
|
|
2020
|
+
|
|
2021
|
+
return function () {
|
|
2022
|
+
var _slots$add;
|
|
2023
|
+
|
|
2024
|
+
return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
|
|
2025
|
+
"default": function _default() {
|
|
2026
|
+
return [lodash.map(lodash.get(formState, path), function (item, index) {
|
|
2027
|
+
var _slots$default2, _slots$itemAdd, _slots$itemMinus;
|
|
2028
|
+
|
|
2029
|
+
return vue.createVNode(FormListProvider, {
|
|
2030
|
+
"key": item[props.rowKey] || index,
|
|
2031
|
+
"pathList": [].concat(_toConsumableArray(path), [index])
|
|
2032
|
+
}, {
|
|
2033
|
+
"default": function _default() {
|
|
2034
|
+
return [vue.createVNode("div", {
|
|
2035
|
+
"class": "pro-form-list-item"
|
|
2036
|
+
}, [(_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", {
|
|
2037
|
+
"class": "pro-form-list-item-add",
|
|
2038
|
+
"onClick": handleAdd
|
|
2039
|
+
}, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
|
|
2040
|
+
"class": "pro-form-list-item-minus",
|
|
2041
|
+
"onClick": function onClick() {
|
|
2042
|
+
return handleRemove(index);
|
|
2043
|
+
}
|
|
2044
|
+
}, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
|
|
2045
|
+
}
|
|
2046
|
+
});
|
|
2047
|
+
}), !readonly.value && vue.createVNode("div", {
|
|
2048
|
+
"class": "pro-form-list-add",
|
|
2049
|
+
"onClick": handleAdd
|
|
2050
|
+
}, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
|
|
2051
|
+
}
|
|
2052
|
+
});
|
|
2053
|
+
};
|
|
2054
|
+
}
|
|
2055
|
+
});
|
|
2056
|
+
};
|
|
2057
|
+
|
|
2058
|
+
var ProFormKey = Symbol("pro-form");
|
|
2059
|
+
var useProForm = function useProForm() {
|
|
2060
|
+
return vue.inject(ProFormKey);
|
|
2061
|
+
};
|
|
2062
|
+
|
|
2063
|
+
var provideProForm = function provideProForm(ctx) {
|
|
2064
|
+
vue.provide(ProFormKey, ctx);
|
|
2065
|
+
};
|
|
2066
|
+
|
|
2067
|
+
var proFormProps = function proFormProps() {
|
|
2068
|
+
return {
|
|
2069
|
+
/**
|
|
2070
|
+
* 同 antd 或 element form中的model
|
|
2071
|
+
*/
|
|
2072
|
+
model: {
|
|
2073
|
+
type: Object
|
|
2074
|
+
},
|
|
2075
|
+
|
|
2076
|
+
/**
|
|
2077
|
+
* 子组件是否只读样式
|
|
2078
|
+
*/
|
|
2079
|
+
readonly: {
|
|
2080
|
+
type: Boolean,
|
|
2081
|
+
"default": undefined
|
|
2082
|
+
},
|
|
2083
|
+
|
|
2084
|
+
/**
|
|
2085
|
+
* FormComponent 根据此项来确定组件是否显示
|
|
2086
|
+
* rules 根据rules中方法生成showState对象
|
|
2087
|
+
*/
|
|
2088
|
+
showState: {
|
|
2089
|
+
type: Object
|
|
2090
|
+
},
|
|
2091
|
+
showStateRules: {
|
|
2092
|
+
type: Object
|
|
2093
|
+
},
|
|
2094
|
+
|
|
2095
|
+
/**
|
|
2096
|
+
* 是否只读
|
|
2097
|
+
*/
|
|
2098
|
+
readonlyState: {
|
|
2099
|
+
type: Object
|
|
2100
|
+
},
|
|
2101
|
+
readonlyStateRules: {
|
|
2102
|
+
type: Object
|
|
2103
|
+
},
|
|
2104
|
+
|
|
2105
|
+
/**
|
|
2106
|
+
* 是否disabled
|
|
2107
|
+
*/
|
|
2108
|
+
disableState: {
|
|
2109
|
+
type: Object
|
|
2110
|
+
},
|
|
2111
|
+
disableStateRules: {
|
|
2112
|
+
type: Object
|
|
2113
|
+
},
|
|
2114
|
+
|
|
2115
|
+
/**
|
|
2116
|
+
*
|
|
2117
|
+
*/
|
|
2118
|
+
columns: {
|
|
1338
2119
|
type: Array
|
|
1339
2120
|
},
|
|
1340
2121
|
columnState: {
|
|
1341
2122
|
type: Object
|
|
1342
2123
|
},
|
|
1343
2124
|
|
|
1344
|
-
/**
|
|
1345
|
-
* 展示控件集合,readonly模式下使用这些组件渲染
|
|
2125
|
+
/**
|
|
2126
|
+
* 展示控件集合,readonly模式下使用这些组件渲染
|
|
1346
2127
|
*/
|
|
1347
2128
|
elementMap: {
|
|
1348
2129
|
type: Object
|
|
1349
2130
|
},
|
|
1350
2131
|
|
|
1351
|
-
/**
|
|
1352
|
-
* 录入控件集合
|
|
2132
|
+
/**
|
|
2133
|
+
* 录入控件集合
|
|
1353
2134
|
*/
|
|
1354
2135
|
formElementMap: {
|
|
1355
2136
|
type: Object
|
|
1356
2137
|
},
|
|
1357
2138
|
|
|
1358
|
-
/**
|
|
1359
|
-
* 是否启用rules验证
|
|
2139
|
+
/**
|
|
2140
|
+
* 是否启用rules验证
|
|
1360
2141
|
*/
|
|
1361
2142
|
needRules: {
|
|
1362
2143
|
type: Boolean,
|
|
1363
2144
|
"default": true
|
|
1364
2145
|
},
|
|
1365
2146
|
|
|
1366
|
-
/**
|
|
1367
|
-
* provide传递
|
|
2147
|
+
/**
|
|
2148
|
+
* provide传递
|
|
1368
2149
|
*/
|
|
1369
2150
|
provideExtra: {
|
|
1370
2151
|
type: Object
|
|
@@ -1372,65 +2153,122 @@ var proFormProps = function proFormProps() {
|
|
|
1372
2153
|
};
|
|
1373
2154
|
};
|
|
1374
2155
|
|
|
1375
|
-
var
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
2156
|
+
var createForm = function createForm(Form, Grid) {
|
|
2157
|
+
return vue.defineComponent({
|
|
2158
|
+
inheritAttrs: false,
|
|
2159
|
+
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), proFormProps()), lodash.omit(Grid.props, "items")),
|
|
2160
|
+
setup: function setup(props, _ref) {
|
|
2161
|
+
var slots = _ref.slots,
|
|
2162
|
+
emit = _ref.emit,
|
|
2163
|
+
expose = _ref.expose,
|
|
2164
|
+
attrs = _ref.attrs;
|
|
2165
|
+
var formState = props.model || vue.reactive({}); //组件状态相关
|
|
2166
|
+
|
|
2167
|
+
var showState = props.showState || vue.reactive({});
|
|
2168
|
+
var readonlyState = props.readonlyState || vue.reactive({});
|
|
2169
|
+
var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
|
|
2170
|
+
|
|
2171
|
+
hooks.useEffect(function () {
|
|
2172
|
+
if (props.showStateRules) {
|
|
2173
|
+
lodash.forEach(props.showStateRules, function (fn, key) {
|
|
2174
|
+
showState[key] = fn(formState);
|
|
2175
|
+
});
|
|
2176
|
+
}
|
|
1380
2177
|
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
2178
|
+
if (props.readonlyStateRules) {
|
|
2179
|
+
lodash.forEach(props.readonlyStateRules, function (fn, key) {
|
|
2180
|
+
readonlyState[key] = fn(formState);
|
|
2181
|
+
});
|
|
2182
|
+
}
|
|
1384
2183
|
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
}
|
|
1390
|
-
}
|
|
2184
|
+
if (props.disableStateRules) {
|
|
2185
|
+
lodash.forEach(props.disableStateRules, function (fn, key) {
|
|
2186
|
+
disableState[key] = fn(formState);
|
|
2187
|
+
});
|
|
2188
|
+
}
|
|
2189
|
+
}, formState); //readonly
|
|
1391
2190
|
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
});
|
|
1396
|
-
}
|
|
2191
|
+
var readonly = vue.computed(function () {
|
|
2192
|
+
return props.readonly;
|
|
2193
|
+
}); //columns合并
|
|
1397
2194
|
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
2195
|
+
var columns = vue.computed(function () {
|
|
2196
|
+
return mergeStateToList(props.columns, props.columnState, function (item) {
|
|
2197
|
+
return getColumnFormItemName(item);
|
|
1401
2198
|
});
|
|
1402
|
-
}
|
|
1403
|
-
}, formState); //转换为ref对象
|
|
1404
|
-
|
|
1405
|
-
var readonly = vue.computed(function () {
|
|
1406
|
-
return props.readonly;
|
|
1407
|
-
});
|
|
1408
|
-
var columns = vue.computed(function () {
|
|
1409
|
-
return mergeStateToList(props.columns, props.columnState, function (item) {
|
|
1410
|
-
return getColumnFormItemName(item);
|
|
1411
2199
|
});
|
|
1412
|
-
});
|
|
1413
|
-
provideProForm(_objectSpread2({
|
|
1414
|
-
formState: formState,
|
|
1415
|
-
showState: showState,
|
|
1416
|
-
readonlyState: readonlyState,
|
|
1417
|
-
disableState: disableState,
|
|
1418
|
-
//
|
|
1419
|
-
elementMap: props.elementMap,
|
|
1420
|
-
formElementMap: props.formElementMap,
|
|
1421
|
-
//
|
|
1422
|
-
readonly: readonly,
|
|
1423
|
-
//
|
|
1424
|
-
columns: columns
|
|
1425
|
-
}, props.provideExtra));
|
|
1426
|
-
return function () {
|
|
1427
|
-
var _slots$default;
|
|
1428
2200
|
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
}
|
|
2201
|
+
var handleFinish = function handleFinish(values) {
|
|
2202
|
+
//删除不显示的值再触发事件
|
|
2203
|
+
var showValues = getValidValues(values, showState, props.showStateRules);
|
|
2204
|
+
emit("finish", showValues, values);
|
|
2205
|
+
};
|
|
2206
|
+
|
|
2207
|
+
var formRef = vue.ref();
|
|
2208
|
+
expose({
|
|
2209
|
+
submit: function submit() {
|
|
2210
|
+
var _formRef$value;
|
|
2211
|
+
|
|
2212
|
+
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
2213
|
+
},
|
|
2214
|
+
resetFields: function resetFields() {
|
|
2215
|
+
var _formRef$value2;
|
|
2216
|
+
|
|
2217
|
+
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
2218
|
+
params[_key] = arguments[_key];
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
(_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.resetFields.apply(_formRef$value2, params);
|
|
2222
|
+
}
|
|
2223
|
+
});
|
|
2224
|
+
provideProForm(_objectSpread2({
|
|
2225
|
+
formState: formState,
|
|
2226
|
+
showState: showState,
|
|
2227
|
+
readonlyState: readonlyState,
|
|
2228
|
+
disableState: disableState,
|
|
2229
|
+
//
|
|
2230
|
+
elementMap: props.elementMap,
|
|
2231
|
+
formElementMap: props.formElementMap,
|
|
2232
|
+
//
|
|
2233
|
+
readonly: readonly,
|
|
2234
|
+
//
|
|
2235
|
+
columns: columns,
|
|
2236
|
+
//
|
|
2237
|
+
formRef: formRef
|
|
2238
|
+
}, props.provideExtra)); //为了不warning ...
|
|
2239
|
+
|
|
2240
|
+
provideProFormList({});
|
|
2241
|
+
var invalidKeys = lodash.keys(proFormProps());
|
|
2242
|
+
var gridKeys = lodash.keys(lodash.omit(Grid.props, "items"));
|
|
2243
|
+
return function () {
|
|
2244
|
+
var _slots$start, _slots$default;
|
|
2245
|
+
|
|
2246
|
+
return vue.createVNode(Form, vue.mergeProps({
|
|
2247
|
+
"ref": formRef
|
|
2248
|
+
}, lodash.omit(attrs, "onFinish"), lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), _toConsumableArray(gridKeys), ["onFinish"])), {
|
|
2249
|
+
"model": formState,
|
|
2250
|
+
"onFinish": handleFinish
|
|
2251
|
+
}), _objectSpread2({
|
|
2252
|
+
"default": function _default() {
|
|
2253
|
+
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, {
|
|
2254
|
+
"row": props.row,
|
|
2255
|
+
"col": props.col,
|
|
2256
|
+
"items": lodash.map(columns.value, function (item) {
|
|
2257
|
+
return {
|
|
2258
|
+
rowKey: getColumnFormItemName(item),
|
|
2259
|
+
vNode: getFormItemEl(props.formElementMap, item, props.needRules),
|
|
2260
|
+
col: lodash.get(item, ["extra", "col"])
|
|
2261
|
+
};
|
|
2262
|
+
})
|
|
2263
|
+
}, null) : lodash.map(columns.value, function (item) {
|
|
2264
|
+
return getFormItemEl(props.formElementMap, item, props.needRules);
|
|
2265
|
+
})]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
2266
|
+
}
|
|
2267
|
+
}, lodash.omit(slots, "default")));
|
|
2268
|
+
};
|
|
2269
|
+
}
|
|
2270
|
+
});
|
|
2271
|
+
};
|
|
1434
2272
|
|
|
1435
2273
|
exports.SearchMode = void 0;
|
|
1436
2274
|
|
|
@@ -1441,44 +2279,48 @@ exports.SearchMode = void 0;
|
|
|
1441
2279
|
|
|
1442
2280
|
var proSearchFormProps = function proSearchFormProps() {
|
|
1443
2281
|
return {
|
|
1444
|
-
/**
|
|
1445
|
-
* 需要监听的对象
|
|
2282
|
+
/**
|
|
2283
|
+
* 需要监听的对象
|
|
1446
2284
|
*/
|
|
1447
2285
|
model: {
|
|
1448
|
-
type: Object
|
|
1449
|
-
required: true
|
|
2286
|
+
type: Object
|
|
1450
2287
|
},
|
|
1451
2288
|
|
|
1452
|
-
/**
|
|
1453
|
-
* 初始化触发 onFinish
|
|
2289
|
+
/**
|
|
2290
|
+
* 初始化触发 onFinish
|
|
1454
2291
|
*/
|
|
1455
2292
|
initEmit: {
|
|
1456
2293
|
type: Boolean,
|
|
1457
2294
|
"default": true
|
|
1458
2295
|
},
|
|
1459
2296
|
|
|
1460
|
-
/**
|
|
1461
|
-
* 模式 自动触发或者手动触发 onFinish
|
|
2297
|
+
/**
|
|
2298
|
+
* 模式 自动触发或者手动触发 onFinish
|
|
1462
2299
|
*/
|
|
1463
2300
|
searchMode: {
|
|
1464
2301
|
type: String,
|
|
1465
2302
|
"default": exports.SearchMode.AUTO
|
|
1466
2303
|
},
|
|
1467
2304
|
|
|
1468
|
-
/**
|
|
1469
|
-
* 配置 同ProForm中的columns
|
|
1470
|
-
* 可以根据column中valueType计算出默认的debounceKeys
|
|
2305
|
+
/**
|
|
2306
|
+
* 配置 同ProForm中的columns
|
|
2307
|
+
* 可以根据column中valueType计算出默认的debounceKeys
|
|
1471
2308
|
*/
|
|
1472
2309
|
columns: {
|
|
1473
2310
|
type: Array
|
|
1474
2311
|
},
|
|
1475
2312
|
|
|
1476
|
-
/**
|
|
1477
|
-
* 需要debounce处理的字段
|
|
2313
|
+
/**
|
|
2314
|
+
* 需要debounce处理的字段
|
|
1478
2315
|
*/
|
|
1479
2316
|
debounceKeys: {
|
|
1480
2317
|
type: Array
|
|
1481
2318
|
},
|
|
2319
|
+
//默认 valueType 为 text 的控件会debounce处理
|
|
2320
|
+
debounceTypes: {
|
|
2321
|
+
type: Array,
|
|
2322
|
+
"default": ["text"]
|
|
2323
|
+
},
|
|
1482
2324
|
debounceTime: {
|
|
1483
2325
|
type: Number,
|
|
1484
2326
|
"default": 800
|
|
@@ -1486,180 +2328,79 @@ var proSearchFormProps = function proSearchFormProps() {
|
|
|
1486
2328
|
};
|
|
1487
2329
|
};
|
|
1488
2330
|
|
|
1489
|
-
/**
|
|
1490
|
-
* 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
|
|
1491
|
-
* 针对传入的model(监听对象)做相应的finish(回调)处理
|
|
2331
|
+
/**
|
|
2332
|
+
* 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
|
|
2333
|
+
* 针对传入的model(监听对象)做相应的finish(回调)处理
|
|
1492
2334
|
*/
|
|
1493
|
-
var
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
var
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
emit("finish");
|
|
1508
|
-
};
|
|
1509
|
-
|
|
1510
|
-
var debounceFinish = lodash.debounce(function () {
|
|
1511
|
-
handleFinish();
|
|
1512
|
-
}, props.debounceTime); //初始化
|
|
1513
|
-
|
|
1514
|
-
hooks.useEffect(function () {
|
|
1515
|
-
if (props.initEmit) {
|
|
1516
|
-
handleFinish();
|
|
1517
|
-
}
|
|
1518
|
-
}, []);
|
|
1519
|
-
|
|
1520
|
-
var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
|
|
1521
|
-
return lodash.some(debounceKeys, function (key) {
|
|
1522
|
-
return lodash.get(state, key) !== lodash.get(prevState, key);
|
|
2335
|
+
var createSearchForm = function createSearchForm(Form, Props) {
|
|
2336
|
+
return vue.defineComponent({
|
|
2337
|
+
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), Props), proSearchFormProps()),
|
|
2338
|
+
setup: function setup(props, _ref) {
|
|
2339
|
+
var slots = _ref.slots;
|
|
2340
|
+
var formState = props.model || vue.reactive({});
|
|
2341
|
+
var valueTypeSet = new Set(props.debounceTypes); //根据column valueType 算出默认需要debounce处理的属性集合
|
|
2342
|
+
|
|
2343
|
+
var defaultDebounceKeys = lodash.map(lodash.filter(props.columns, function (column) {
|
|
2344
|
+
var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
|
|
2345
|
+
|
|
2346
|
+
return valueTypeSet.has(valueType);
|
|
2347
|
+
}), function (column) {
|
|
2348
|
+
return getColumnFormItemName(column);
|
|
1523
2349
|
});
|
|
1524
|
-
|
|
1525
|
-
|
|
2350
|
+
var formRef = vue.ref();
|
|
1526
2351
|
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
return;
|
|
1530
|
-
} //如果改变的值中包括debounceKeys中注册的 延时触发
|
|
2352
|
+
var handleFinish = function handleFinish() {
|
|
2353
|
+
var _formRef$value;
|
|
1531
2354
|
|
|
2355
|
+
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
2356
|
+
};
|
|
1532
2357
|
|
|
1533
|
-
var
|
|
2358
|
+
var debounceFinish = lodash.debounce(function () {
|
|
2359
|
+
handleFinish();
|
|
2360
|
+
}, props.debounceTime); //初始化
|
|
1534
2361
|
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
2362
|
+
hooks.useEffect(function () {
|
|
2363
|
+
if (props.initEmit) {
|
|
2364
|
+
handleFinish();
|
|
2365
|
+
}
|
|
2366
|
+
}, []);
|
|
1539
2367
|
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
return null;
|
|
1546
|
-
};
|
|
1547
|
-
}
|
|
1548
|
-
});
|
|
2368
|
+
var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
|
|
2369
|
+
return lodash.some(debounceKeys, function (key) {
|
|
2370
|
+
return lodash.get(state, key) !== lodash.get(prevState, key);
|
|
2371
|
+
});
|
|
2372
|
+
}; //监听
|
|
1549
2373
|
|
|
1550
|
-
/**
|
|
1551
|
-
* ProFormList ctx
|
|
1552
|
-
*/
|
|
1553
2374
|
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
}
|
|
2375
|
+
hooks.useWatch(function (state, prevState) {
|
|
2376
|
+
if (props.searchMode !== exports.SearchMode.AUTO) {
|
|
2377
|
+
return;
|
|
2378
|
+
} //如果改变的值中包括debounceKeys中注册的 延时触发
|
|
1558
2379
|
|
|
1559
|
-
var provideProFormList = function provideProFormList(ctx) {
|
|
1560
|
-
vue.provide(ProFormListKey, ctx);
|
|
1561
|
-
};
|
|
1562
2380
|
|
|
1563
|
-
var
|
|
1564
|
-
props: {
|
|
1565
|
-
pathList: {
|
|
1566
|
-
type: Array
|
|
1567
|
-
}
|
|
1568
|
-
},
|
|
1569
|
-
setup: function setup(props, _ref) {
|
|
1570
|
-
var slots = _ref.slots;
|
|
1571
|
-
provideProFormList({
|
|
1572
|
-
pathList: props.pathList
|
|
1573
|
-
});
|
|
1574
|
-
return function () {
|
|
1575
|
-
var _slots$default;
|
|
2381
|
+
var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
|
|
1576
2382
|
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
}
|
|
2383
|
+
if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
|
|
2384
|
+
debounceFinish();
|
|
2385
|
+
return;
|
|
2386
|
+
}
|
|
1581
2387
|
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
2388
|
+
handleFinish();
|
|
2389
|
+
}, function () {
|
|
2390
|
+
return lodash.clone(formState);
|
|
2391
|
+
});
|
|
2392
|
+
var invalidKeys = lodash.keys(lodash.omit(proSearchFormProps(), "columns"));
|
|
2393
|
+
return function () {
|
|
2394
|
+
return vue.createVNode(Form, vue.mergeProps({
|
|
2395
|
+
"ref": formRef
|
|
2396
|
+
}, lodash.omit(props, invalidKeys), {
|
|
2397
|
+
"model": formState
|
|
2398
|
+
}), slots);
|
|
2399
|
+
};
|
|
1593
2400
|
}
|
|
1594
|
-
};
|
|
2401
|
+
});
|
|
1595
2402
|
};
|
|
1596
2403
|
|
|
1597
|
-
var ProFormList = vue.defineComponent({
|
|
1598
|
-
props: _objectSpread2({}, proFormListProps()),
|
|
1599
|
-
setup: function setup(props, _ref2) {
|
|
1600
|
-
var slots = _ref2.slots;
|
|
1601
|
-
|
|
1602
|
-
var _useProForm = useProForm(),
|
|
1603
|
-
formState = _useProForm.formState,
|
|
1604
|
-
readonly = _useProForm.readonly;
|
|
1605
|
-
|
|
1606
|
-
var formListCtx = useProFormList();
|
|
1607
|
-
var nameList = convertPathToList(props.name);
|
|
1608
|
-
var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
|
|
1609
|
-
|
|
1610
|
-
var handleAdd = function handleAdd() {
|
|
1611
|
-
var targetList = lodash.get(formState, path);
|
|
1612
|
-
|
|
1613
|
-
if (!lodash.isArray(targetList)) {
|
|
1614
|
-
targetList = [];
|
|
1615
|
-
}
|
|
1616
|
-
|
|
1617
|
-
targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
|
|
1618
|
-
lodash.set(formState, path, targetList);
|
|
1619
|
-
};
|
|
1620
|
-
|
|
1621
|
-
var handleRemove = function handleRemove(index) {
|
|
1622
|
-
var targetList = lodash.get(formState, path);
|
|
1623
|
-
|
|
1624
|
-
if (lodash.size(targetList) <= 0) {
|
|
1625
|
-
return;
|
|
1626
|
-
}
|
|
1627
|
-
|
|
1628
|
-
targetList.splice(index, 1);
|
|
1629
|
-
};
|
|
1630
|
-
|
|
1631
|
-
return function () {
|
|
1632
|
-
var _slots$add;
|
|
1633
|
-
|
|
1634
|
-
return vue.createVNode(vue.Fragment, null, [lodash.map(lodash.get(formState, path), function (item, index) {
|
|
1635
|
-
var _slots$default2, _slots$itemAdd, _slots$itemMinus;
|
|
1636
|
-
|
|
1637
|
-
return vue.createVNode(FormListProvider, {
|
|
1638
|
-
"key": index,
|
|
1639
|
-
"pathList": [].concat(_toConsumableArray(path), [index])
|
|
1640
|
-
}, {
|
|
1641
|
-
"default": function _default() {
|
|
1642
|
-
return [vue.createVNode("div", {
|
|
1643
|
-
"class": "pro-form-list-item"
|
|
1644
|
-
}, [(_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", {
|
|
1645
|
-
"class": "pro-form-list-item-add",
|
|
1646
|
-
"onClick": handleAdd
|
|
1647
|
-
}, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
|
|
1648
|
-
"class": "pro-form-list-item-minus",
|
|
1649
|
-
"onClick": function onClick() {
|
|
1650
|
-
return handleRemove(index);
|
|
1651
|
-
}
|
|
1652
|
-
}, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
|
|
1653
|
-
}
|
|
1654
|
-
});
|
|
1655
|
-
}), !readonly.value && vue.createVNode("div", {
|
|
1656
|
-
"class": "pro-form-list-add",
|
|
1657
|
-
"onClick": handleAdd
|
|
1658
|
-
}, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])]);
|
|
1659
|
-
};
|
|
1660
|
-
}
|
|
1661
|
-
});
|
|
1662
|
-
|
|
1663
2404
|
var proFormItemProps = function proFormItemProps() {
|
|
1664
2405
|
return {
|
|
1665
2406
|
readonly: {
|
|
@@ -1763,8 +2504,8 @@ var proTableProps = function proTableProps() {
|
|
|
1763
2504
|
type: String
|
|
1764
2505
|
},
|
|
1765
2506
|
|
|
1766
|
-
/**
|
|
1767
|
-
* 公共column,会merge到columns item中
|
|
2507
|
+
/**
|
|
2508
|
+
* 公共column,会merge到columns item中
|
|
1768
2509
|
*/
|
|
1769
2510
|
column: {
|
|
1770
2511
|
type: Object
|
|
@@ -1777,36 +2518,29 @@ var proTableProps = function proTableProps() {
|
|
|
1777
2518
|
type: Object
|
|
1778
2519
|
},
|
|
1779
2520
|
|
|
1780
|
-
/**
|
|
1781
|
-
* 展示控件集合,readonly模式下使用这些组件渲染
|
|
2521
|
+
/**
|
|
2522
|
+
* 展示控件集合,readonly模式下使用这些组件渲染
|
|
1782
2523
|
*/
|
|
1783
2524
|
elementMap: {
|
|
1784
2525
|
type: Object
|
|
1785
2526
|
},
|
|
1786
2527
|
|
|
1787
|
-
/**
|
|
1788
|
-
*
|
|
1789
|
-
*/
|
|
1790
|
-
loading: {
|
|
1791
|
-
type: Boolean
|
|
1792
|
-
},
|
|
1793
|
-
|
|
1794
|
-
/**
|
|
1795
|
-
* 序号
|
|
2528
|
+
/**
|
|
2529
|
+
* 序号
|
|
1796
2530
|
*/
|
|
1797
2531
|
serialNumber: {
|
|
1798
2532
|
type: Boolean
|
|
1799
2533
|
},
|
|
1800
2534
|
|
|
1801
|
-
/**
|
|
1802
|
-
* 分页
|
|
2535
|
+
/**
|
|
2536
|
+
* 分页
|
|
1803
2537
|
*/
|
|
1804
|
-
|
|
2538
|
+
paginationState: {
|
|
1805
2539
|
type: Object
|
|
1806
2540
|
},
|
|
1807
2541
|
|
|
1808
|
-
/**
|
|
1809
|
-
* provide传递
|
|
2542
|
+
/**
|
|
2543
|
+
* provide传递
|
|
1810
2544
|
*/
|
|
1811
2545
|
provideExtra: {
|
|
1812
2546
|
type: Object
|
|
@@ -1814,62 +2548,35 @@ var proTableProps = function proTableProps() {
|
|
|
1814
2548
|
};
|
|
1815
2549
|
};
|
|
1816
2550
|
|
|
1817
|
-
var
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
|
|
1823
|
-
return item.dataIndex;
|
|
1824
|
-
}); //根据valueType选择对应的展示组件
|
|
1825
|
-
|
|
1826
|
-
var columns = lodash.map(mergeColumns, function (item) {
|
|
1827
|
-
//merge公共item
|
|
1828
|
-
var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
|
|
1829
|
-
|
|
1830
|
-
if (!item.customRender) {
|
|
1831
|
-
nextItem.customRender = function (_ref2) {
|
|
1832
|
-
var text = _ref2.text;
|
|
1833
|
-
var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
|
|
1834
|
-
showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
|
|
1835
|
-
content: props.columnEmptyText
|
|
1836
|
-
})
|
|
1837
|
-
}), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
|
|
1838
|
-
|
|
1839
|
-
return vn || text || props.columnEmptyText;
|
|
1840
|
-
};
|
|
1841
|
-
}
|
|
2551
|
+
var createTable = function createTable(Table, Props) {
|
|
2552
|
+
return vue.defineComponent({
|
|
2553
|
+
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Table.props), Props), proTableProps()),
|
|
2554
|
+
setup: function setup(props, _ref) {
|
|
2555
|
+
var slots = _ref.slots;
|
|
1842
2556
|
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
if (props.serialNumber) {
|
|
1847
|
-
columns.unshift(_objectSpread2(_objectSpread2({
|
|
2557
|
+
var createNumberColumn = function createNumberColumn() {
|
|
2558
|
+
return _objectSpread2(_objectSpread2({
|
|
1848
2559
|
title: "序号",
|
|
1849
2560
|
dataIndex: "serialNumber",
|
|
1850
2561
|
width: 80
|
|
1851
2562
|
}, props.column), {}, {
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
var _props$pagination, _props$pagination2;
|
|
2563
|
+
customRender: function customRender(_ref2) {
|
|
2564
|
+
var _props$paginationStat, _props$paginationStat2;
|
|
1855
2565
|
|
|
1856
|
-
var index =
|
|
2566
|
+
var index = _ref2.index;
|
|
1857
2567
|
|
|
1858
|
-
if ((_props$
|
|
1859
|
-
return props.
|
|
2568
|
+
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) {
|
|
2569
|
+
return props.paginationState.pageSize * (props.paginationState.page - 1) + index + 1;
|
|
1860
2570
|
}
|
|
1861
2571
|
|
|
1862
2572
|
return index + 1;
|
|
1863
2573
|
}
|
|
1864
|
-
})
|
|
1865
|
-
}
|
|
2574
|
+
});
|
|
2575
|
+
};
|
|
1866
2576
|
|
|
1867
|
-
var
|
|
2577
|
+
var createOperateColumn = function createOperateColumn() {
|
|
2578
|
+
var operate = props.operate; //将itemState补充的信息拼到item中
|
|
1868
2579
|
|
|
1869
|
-
if (operate && operate.items && lodash.some(operate.items, function (item) {
|
|
1870
|
-
return item.show;
|
|
1871
|
-
})) {
|
|
1872
|
-
//将itemState补充的信息拼到item中
|
|
1873
2580
|
var items = lodash.map(operate.items, function (i) {
|
|
1874
2581
|
return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
|
|
1875
2582
|
}); //排序
|
|
@@ -1877,14 +2584,14 @@ var ProTable = vue.defineComponent({
|
|
|
1877
2584
|
var sortedItems = lodash.sortBy(items, function (item) {
|
|
1878
2585
|
return item.sort;
|
|
1879
2586
|
});
|
|
1880
|
-
|
|
2587
|
+
return _objectSpread2(_objectSpread2(_objectSpread2({}, props.column), {}, {
|
|
1881
2588
|
title: "操作",
|
|
1882
2589
|
dataIndex: "operate",
|
|
1883
2590
|
fixed: "right"
|
|
1884
|
-
},
|
|
1885
|
-
customRender: function customRender(
|
|
1886
|
-
var record =
|
|
1887
|
-
var
|
|
2591
|
+
}, operate.column), {}, {
|
|
2592
|
+
customRender: function customRender(_ref3) {
|
|
2593
|
+
var record = _ref3.record;
|
|
2594
|
+
var showItems = lodash.filter(sortedItems, function (item) {
|
|
1888
2595
|
if (item.show && lodash.isFunction(item.show)) {
|
|
1889
2596
|
return item.show(record);
|
|
1890
2597
|
}
|
|
@@ -1897,7 +2604,7 @@ var ProTable = vue.defineComponent({
|
|
|
1897
2604
|
});
|
|
1898
2605
|
return vue.createVNode("div", {
|
|
1899
2606
|
"class": "pro-table-operate"
|
|
1900
|
-
}, [lodash.map(
|
|
2607
|
+
}, [lodash.map(showItems, function (item) {
|
|
1901
2608
|
//自定义
|
|
1902
2609
|
if (lodash.isFunction(item.element)) {
|
|
1903
2610
|
return item.element(record, item);
|
|
@@ -1914,43 +2621,97 @@ var ProTable = vue.defineComponent({
|
|
|
1914
2621
|
}, [item.label]);
|
|
1915
2622
|
})]);
|
|
1916
2623
|
}
|
|
1917
|
-
}
|
|
1918
|
-
}
|
|
2624
|
+
});
|
|
2625
|
+
};
|
|
1919
2626
|
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
2627
|
+
var columns = vue.computed(function () {
|
|
2628
|
+
var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
|
|
2629
|
+
return item.dataIndex;
|
|
2630
|
+
}); //根据valueType选择对应的展示组件
|
|
2631
|
+
|
|
2632
|
+
var columns = lodash.map(mergeColumns, function (item) {
|
|
2633
|
+
//merge公共item
|
|
2634
|
+
var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
|
|
2635
|
+
|
|
2636
|
+
if (!item.customRender) {
|
|
2637
|
+
nextItem.customRender = function (_ref4) {
|
|
2638
|
+
var text = _ref4.text;
|
|
2639
|
+
var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
|
|
2640
|
+
showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
|
|
2641
|
+
content: props.columnEmptyText
|
|
2642
|
+
})
|
|
2643
|
+
}), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
|
|
2644
|
+
|
|
2645
|
+
return vn || text || props.columnEmptyText;
|
|
2646
|
+
};
|
|
2647
|
+
}
|
|
1927
2648
|
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
2649
|
+
return nextItem;
|
|
2650
|
+
}); //处理序号
|
|
2651
|
+
|
|
2652
|
+
if (props.serialNumber) {
|
|
2653
|
+
columns.unshift(createNumberColumn());
|
|
2654
|
+
} //处理operate
|
|
2655
|
+
|
|
2656
|
+
|
|
2657
|
+
if (props.operate && props.operate.items && lodash.some(props.operate.items, function (item) {
|
|
2658
|
+
return item.show;
|
|
2659
|
+
})) {
|
|
2660
|
+
columns.push(createOperateColumn());
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2663
|
+
return columns;
|
|
2664
|
+
});
|
|
2665
|
+
var tableRef = vue.ref();
|
|
2666
|
+
provideProTable(_objectSpread2({
|
|
2667
|
+
columns: columns,
|
|
2668
|
+
tableRef: tableRef
|
|
2669
|
+
}, props.provideExtra));
|
|
2670
|
+
var invalidKeys = lodash.keys(proTableProps());
|
|
2671
|
+
return function () {
|
|
2672
|
+
return vue.createVNode(Table, vue.mergeProps({
|
|
2673
|
+
"ref": tableRef
|
|
2674
|
+
}, lodash.omit(props, invalidKeys), {
|
|
2675
|
+
"columns": columns.value
|
|
2676
|
+
}), slots);
|
|
2677
|
+
};
|
|
2678
|
+
}
|
|
2679
|
+
});
|
|
2680
|
+
};
|
|
1932
2681
|
|
|
1933
2682
|
exports.ProCurd = ProCurd;
|
|
1934
|
-
exports.ProForm = ProForm;
|
|
1935
|
-
exports.ProFormList = ProFormList;
|
|
1936
2683
|
exports.ProModalCurd = ProModalCurd;
|
|
1937
2684
|
exports.ProModule = ProModule;
|
|
1938
2685
|
exports.ProPageCurd = ProPageCurd;
|
|
1939
|
-
exports.ProSearchForm = ProSearchForm;
|
|
1940
|
-
exports.ProTable = ProTable;
|
|
1941
2686
|
exports.RequestAction = RequestAction;
|
|
2687
|
+
exports.Wrapper = Wrapper;
|
|
1942
2688
|
exports.convertPathToList = convertPathToList;
|
|
2689
|
+
exports.createCurdDesc = createCurdDesc;
|
|
2690
|
+
exports.createCurdForm = createCurdForm;
|
|
2691
|
+
exports.createCurdList = createCurdList;
|
|
2692
|
+
exports.createExpose = createExpose;
|
|
2693
|
+
exports.createForm = createForm;
|
|
1943
2694
|
exports.createFormItemCompFn = createFormItemCompFn;
|
|
2695
|
+
exports.createFormList = createFormList;
|
|
2696
|
+
exports.createGrid = createGrid;
|
|
2697
|
+
exports.createSearchForm = createSearchForm;
|
|
2698
|
+
exports.createTable = createTable;
|
|
1944
2699
|
exports.defaultPage = defaultPage;
|
|
2700
|
+
exports.findTargetInTree = findTargetInTree;
|
|
2701
|
+
exports.findTargetListInTree = findTargetListInTree;
|
|
1945
2702
|
exports.generateId = generateId;
|
|
1946
2703
|
exports.getColumnFormItemName = getColumnFormItemName;
|
|
1947
2704
|
exports.getColumnValueType = getColumnValueType;
|
|
2705
|
+
exports.getFirstPropName = getFirstPropName;
|
|
1948
2706
|
exports.getFormItemEl = getFormItemEl;
|
|
1949
2707
|
exports.getItemEl = getItemEl;
|
|
1950
2708
|
exports.getValidValues = getValidValues;
|
|
1951
2709
|
exports.mergeStateToList = mergeStateToList;
|
|
1952
2710
|
exports.provideProCurd = provideProCurd;
|
|
2711
|
+
exports.provideProFormList = provideProFormList;
|
|
1953
2712
|
exports.provideProModule = provideProModule;
|
|
2713
|
+
exports.renderElement = renderElement;
|
|
2714
|
+
exports.renderElements = renderElements;
|
|
1954
2715
|
exports.useComposeRequestActor = useComposeRequestActor;
|
|
1955
2716
|
exports.useDoneRequestActor = useDoneRequestActor;
|
|
1956
2717
|
exports.useFailedRequestActor = useFailedRequestActor;
|