@vue-start/pro 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/index.d.ts +249 -432
- package/dist/index.es.js +1245 -495
- package/dist/index.js +1257 -496
- 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
|
});
|
|
@@ -597,26 +737,201 @@ exports.CurdSubAction = void 0;
|
|
|
597
737
|
CurdSubAction["FAIL"] = "FAIL";
|
|
598
738
|
})(exports.CurdSubAction || (exports.CurdSubAction = {}));
|
|
599
739
|
|
|
600
|
-
/**
|
|
601
|
-
* curd 操作模式
|
|
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
|
+
var treeDefaultNames = {
|
|
762
|
+
children: "children",
|
|
763
|
+
label: "label",
|
|
764
|
+
value: "value"
|
|
765
|
+
};
|
|
766
|
+
/**
|
|
767
|
+
* 根据value从treeData中找到对象
|
|
768
|
+
* @param data
|
|
769
|
+
* @param value
|
|
770
|
+
* @param fieldNames
|
|
771
|
+
* @param cb 对象:同步 方法:回调,可以理解为异步
|
|
772
|
+
*/
|
|
773
|
+
|
|
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
|
|
602
913
|
*/
|
|
603
|
-
exports.CurdCurrentMode = void 0;
|
|
604
|
-
|
|
605
|
-
(function (CurdCurrentMode) {
|
|
606
|
-
CurdCurrentMode["ADD"] = "ADD";
|
|
607
|
-
CurdCurrentMode["EDIT"] = "EDIT";
|
|
608
|
-
CurdCurrentMode["DETAIL"] = "DETAIL";
|
|
609
|
-
})(exports.CurdCurrentMode || (exports.CurdCurrentMode = {}));
|
|
610
914
|
|
|
611
|
-
|
|
612
|
-
|
|
915
|
+
var generateId = function generateId() {
|
|
916
|
+
return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
|
|
917
|
+
};
|
|
918
|
+
/**
|
|
919
|
+
* ref 传递
|
|
613
920
|
*/
|
|
614
|
-
exports.CurdAddAction = void 0;
|
|
615
921
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
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
|
+
};
|
|
620
935
|
|
|
621
936
|
var defaultPage = {
|
|
622
937
|
page: 1,
|
|
@@ -625,6 +940,28 @@ var defaultPage = {
|
|
|
625
940
|
|
|
626
941
|
var proCurdProps = function proCurdProps() {
|
|
627
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
|
+
|
|
628
965
|
/**
|
|
629
966
|
* 列表 或 详情 的唯一标识
|
|
630
967
|
*/
|
|
@@ -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,
|
|
@@ -1180,99 +1533,419 @@ var PageCurd = vue.defineComponent({
|
|
|
1180
1533
|
type: "detailData",
|
|
1181
1534
|
payload: props.defaultAddRecord || {}
|
|
1182
1535
|
});
|
|
1183
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1184
|
-
if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
|
|
1185
|
-
dispatch({
|
|
1186
|
-
type: "detailData",
|
|
1187
|
-
payload: props.defaultAddRecord || {}
|
|
1188
|
-
});
|
|
1189
|
-
} else {
|
|
1190
|
-
props.routeBack ? props.routeBack(exports.CurdAction.ADD) : router.go(-1);
|
|
1191
|
-
}
|
|
1192
|
-
}
|
|
1193
|
-
};
|
|
1536
|
+
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1537
|
+
if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
|
|
1538
|
+
dispatch({
|
|
1539
|
+
type: "detailData",
|
|
1540
|
+
payload: props.defaultAddRecord || {}
|
|
1541
|
+
});
|
|
1542
|
+
} else {
|
|
1543
|
+
props.routeBack ? props.routeBack(exports.CurdAction.ADD) : router.go(-1);
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1546
|
+
};
|
|
1547
|
+
|
|
1548
|
+
var dealEdit = function dealEdit(subAction, _ref2) {
|
|
1549
|
+
var record = _ref2.record;
|
|
1550
|
+
|
|
1551
|
+
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1552
|
+
router.push({
|
|
1553
|
+
path: "".concat(route.path, "/edit"),
|
|
1554
|
+
query: lodash.pick(record, rowKey)
|
|
1555
|
+
});
|
|
1556
|
+
} else if (subAction === exports.CurdSubAction.PAGE) {
|
|
1557
|
+
dispatch({
|
|
1558
|
+
type: "mode",
|
|
1559
|
+
payload: exports.CurdCurrentMode.EDIT
|
|
1560
|
+
});
|
|
1561
|
+
sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
|
|
1562
|
+
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1563
|
+
props.routeBack ? props.routeBack(exports.CurdAction.EDIT) : router.go(-1);
|
|
1564
|
+
}
|
|
1565
|
+
};
|
|
1566
|
+
|
|
1567
|
+
useModuleEvent(function (_ref3) {
|
|
1568
|
+
var type = _ref3.type,
|
|
1569
|
+
payload = _ref3.payload,
|
|
1570
|
+
source = _ref3.source;
|
|
1571
|
+
|
|
1572
|
+
if (source) {
|
|
1573
|
+
return;
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
var action = type;
|
|
1577
|
+
var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
|
|
1578
|
+
var record = payload === null || payload === void 0 ? void 0 : payload.record;
|
|
1579
|
+
|
|
1580
|
+
if (action === RequestAction.Success) {
|
|
1581
|
+
//覆盖
|
|
1582
|
+
action = lodash.get(payload, ["requestOpts", "action"]);
|
|
1583
|
+
subAction = exports.CurdSubAction.SUCCESS;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
switch (action) {
|
|
1587
|
+
case exports.CurdAction.LIST:
|
|
1588
|
+
dealList(subAction);
|
|
1589
|
+
break;
|
|
1590
|
+
|
|
1591
|
+
case exports.CurdAction.DETAIL:
|
|
1592
|
+
dealDetail(subAction, {
|
|
1593
|
+
record: record
|
|
1594
|
+
});
|
|
1595
|
+
break;
|
|
1596
|
+
|
|
1597
|
+
case exports.CurdAction.ADD:
|
|
1598
|
+
dealAdd(subAction);
|
|
1599
|
+
break;
|
|
1600
|
+
|
|
1601
|
+
case exports.CurdAction.EDIT:
|
|
1602
|
+
dealEdit(subAction, {
|
|
1603
|
+
record: record
|
|
1604
|
+
});
|
|
1605
|
+
break;
|
|
1606
|
+
}
|
|
1607
|
+
});
|
|
1608
|
+
return function () {
|
|
1609
|
+
return null;
|
|
1610
|
+
};
|
|
1611
|
+
}
|
|
1612
|
+
});
|
|
1613
|
+
var ProPageCurd = vue.defineComponent({
|
|
1614
|
+
props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
|
|
1615
|
+
setup: function setup(props, _ref4) {
|
|
1616
|
+
var slots = _ref4.slots;
|
|
1617
|
+
var invalidKeys = lodash.keys(PageCurd.props);
|
|
1618
|
+
return function () {
|
|
1619
|
+
var _slots$default;
|
|
1620
|
+
|
|
1621
|
+
return vue.createVNode(ProCurd, lodash.omit(props, invalidKeys), {
|
|
1622
|
+
"default": function _default() {
|
|
1623
|
+
return [vue.createVNode(PageCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
1624
|
+
}
|
|
1625
|
+
});
|
|
1626
|
+
};
|
|
1627
|
+
}
|
|
1628
|
+
});
|
|
1629
|
+
|
|
1630
|
+
function _isSlot(s) {
|
|
1631
|
+
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
1632
|
+
}
|
|
1633
|
+
|
|
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
|
+
});
|
|
1684
|
+
};
|
|
1685
|
+
|
|
1686
|
+
var proCurdAddOrEditProps = function proCurdAddOrEditProps() {
|
|
1687
|
+
return {
|
|
1688
|
+
//是否使用operate bar
|
|
1689
|
+
operateBar: {
|
|
1690
|
+
type: Boolean,
|
|
1691
|
+
"default": true
|
|
1692
|
+
},
|
|
1693
|
+
//显示 确定并继续 按钮
|
|
1694
|
+
showContinueAdd: {
|
|
1695
|
+
type: Boolean,
|
|
1696
|
+
"default": false
|
|
1697
|
+
},
|
|
1698
|
+
//
|
|
1699
|
+
okText: {
|
|
1700
|
+
type: String,
|
|
1701
|
+
"default": "确定"
|
|
1702
|
+
},
|
|
1703
|
+
okButtonProps: {
|
|
1704
|
+
type: Object
|
|
1705
|
+
},
|
|
1706
|
+
//
|
|
1707
|
+
continueText: {
|
|
1708
|
+
type: String,
|
|
1709
|
+
"default": "确定并继续"
|
|
1710
|
+
},
|
|
1711
|
+
continueButtonProps: {
|
|
1712
|
+
type: Object
|
|
1713
|
+
}
|
|
1714
|
+
};
|
|
1715
|
+
};
|
|
1716
|
+
|
|
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
|
+
};
|
|
1194
1855
|
|
|
1195
|
-
|
|
1196
|
-
|
|
1856
|
+
var executeSearchWithResetPage = function executeSearchWithResetPage(values) {
|
|
1857
|
+
prevValues = values;
|
|
1858
|
+
pageState.page = 1;
|
|
1859
|
+
handleSearch();
|
|
1860
|
+
};
|
|
1861
|
+
/******************* table ********************/
|
|
1197
1862
|
|
|
1198
|
-
if (subAction === exports.CurdSubAction.EMIT) {
|
|
1199
|
-
router.push({
|
|
1200
|
-
path: "".concat(route.path, "/edit"),
|
|
1201
|
-
query: lodash.pick(record, rowKey)
|
|
1202
|
-
});
|
|
1203
|
-
} else if (subAction === exports.CurdSubAction.PAGE) {
|
|
1204
|
-
dispatch({
|
|
1205
|
-
type: "mode",
|
|
1206
|
-
payload: exports.CurdCurrentMode.EDIT
|
|
1207
|
-
});
|
|
1208
|
-
sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
|
|
1209
|
-
} else if (subAction === exports.CurdSubAction.SUCCESS) {
|
|
1210
|
-
props.routeBack ? props.routeBack(exports.CurdAction.EDIT) : router.go(-1);
|
|
1211
|
-
}
|
|
1212
|
-
};
|
|
1213
1863
|
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
payload = _ref3.payload,
|
|
1217
|
-
source = _ref3.source;
|
|
1864
|
+
var createTableItem = function createTableItem(action) {
|
|
1865
|
+
var operate = getOperate(action);
|
|
1218
1866
|
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
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
|
+
});
|
|
1222
1871
|
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
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
|
+
}
|
|
1226
1884
|
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
action = lodash.get(payload, ["requestOpts", "action"]);
|
|
1230
|
-
subAction = exports.CurdSubAction.SUCCESS;
|
|
1231
|
-
}
|
|
1885
|
+
return item;
|
|
1886
|
+
}; //table操作栏 items
|
|
1232
1887
|
|
|
1233
|
-
switch (action) {
|
|
1234
|
-
case exports.CurdAction.LIST:
|
|
1235
|
-
dealList(subAction);
|
|
1236
|
-
break;
|
|
1237
1888
|
|
|
1238
|
-
|
|
1239
|
-
dealDetail(subAction, {
|
|
1240
|
-
record: record
|
|
1241
|
-
});
|
|
1242
|
-
break;
|
|
1889
|
+
var tableOperateItems = [createTableItem(exports.CurdAction.DETAIL), createTableItem(exports.CurdAction.EDIT), createTableItem(exports.CurdAction.DELETE)]; //新配置的operate item,添加默认发送事件方法
|
|
1243
1890
|
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
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
|
+
}
|
|
1247
1904
|
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
});
|
|
1252
|
-
break;
|
|
1253
|
-
}
|
|
1254
|
-
});
|
|
1255
|
-
return function () {
|
|
1256
|
-
return null;
|
|
1257
|
-
};
|
|
1258
|
-
}
|
|
1259
|
-
});
|
|
1260
|
-
var ProPageCurd = vue.defineComponent({
|
|
1261
|
-
props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
|
|
1262
|
-
setup: function setup(props, _ref4) {
|
|
1263
|
-
var slots = _ref4.slots;
|
|
1264
|
-
var invalidKeys = lodash.keys(PageCurd.props);
|
|
1265
|
-
return function () {
|
|
1266
|
-
var _slots$default;
|
|
1905
|
+
return item;
|
|
1906
|
+
});
|
|
1907
|
+
};
|
|
1267
1908
|
|
|
1268
|
-
return
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
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
|
+
};
|
|
1276
1949
|
|
|
1277
1950
|
var ProFormKey = Symbol("pro-form");
|
|
1278
1951
|
var useProForm = function useProForm() {
|
|
@@ -1372,65 +2045,120 @@ var proFormProps = function proFormProps() {
|
|
|
1372
2045
|
};
|
|
1373
2046
|
};
|
|
1374
2047
|
|
|
1375
|
-
var
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
2048
|
+
var createForm = function createForm(Form, Grid) {
|
|
2049
|
+
return vue.defineComponent({
|
|
2050
|
+
inheritAttrs: false,
|
|
2051
|
+
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), proFormProps()), lodash.omit(Grid.props, "items")),
|
|
2052
|
+
setup: function setup(props, _ref) {
|
|
2053
|
+
var slots = _ref.slots,
|
|
2054
|
+
emit = _ref.emit,
|
|
2055
|
+
expose = _ref.expose,
|
|
2056
|
+
attrs = _ref.attrs;
|
|
2057
|
+
var formState = props.model || vue.reactive({}); //组件状态相关
|
|
2058
|
+
|
|
2059
|
+
var showState = props.showState || vue.reactive({});
|
|
2060
|
+
var readonlyState = props.readonlyState || vue.reactive({});
|
|
2061
|
+
var disableState = props.disableState || vue.reactive({}); //formState改变情况下,更新 showState,readonlyState,disableState状态
|
|
2062
|
+
|
|
2063
|
+
hooks.useEffect(function () {
|
|
2064
|
+
if (props.showStateRules) {
|
|
2065
|
+
lodash.forEach(props.showStateRules, function (fn, key) {
|
|
2066
|
+
showState[key] = fn(formState);
|
|
2067
|
+
});
|
|
2068
|
+
}
|
|
1380
2069
|
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
2070
|
+
if (props.readonlyStateRules) {
|
|
2071
|
+
lodash.forEach(props.readonlyStateRules, function (fn, key) {
|
|
2072
|
+
readonlyState[key] = fn(formState);
|
|
2073
|
+
});
|
|
2074
|
+
}
|
|
1384
2075
|
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
}
|
|
1390
|
-
}
|
|
2076
|
+
if (props.disableStateRules) {
|
|
2077
|
+
lodash.forEach(props.disableStateRules, function (fn, key) {
|
|
2078
|
+
disableState[key] = fn(formState);
|
|
2079
|
+
});
|
|
2080
|
+
}
|
|
2081
|
+
}, formState); //readonly
|
|
1391
2082
|
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
});
|
|
1396
|
-
}
|
|
2083
|
+
var readonly = vue.computed(function () {
|
|
2084
|
+
return props.readonly;
|
|
2085
|
+
}); //columns合并
|
|
1397
2086
|
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
2087
|
+
var columns = vue.computed(function () {
|
|
2088
|
+
return mergeStateToList(props.columns, props.columnState, function (item) {
|
|
2089
|
+
return getColumnFormItemName(item);
|
|
1401
2090
|
});
|
|
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
2091
|
});
|
|
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
2092
|
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
}
|
|
2093
|
+
var handleFinish = function handleFinish(values) {
|
|
2094
|
+
//删除不显示的值再触发事件
|
|
2095
|
+
var showValues = getValidValues(values, showState, props.showStateRules);
|
|
2096
|
+
emit("finish", showValues, values);
|
|
2097
|
+
};
|
|
2098
|
+
|
|
2099
|
+
var formRef = vue.ref();
|
|
2100
|
+
expose({
|
|
2101
|
+
submit: function submit() {
|
|
2102
|
+
var _formRef$value;
|
|
2103
|
+
|
|
2104
|
+
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
2105
|
+
},
|
|
2106
|
+
resetFields: function resetFields() {
|
|
2107
|
+
var _formRef$value2;
|
|
2108
|
+
|
|
2109
|
+
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
2110
|
+
params[_key] = arguments[_key];
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
(_formRef$value2 = formRef.value) === null || _formRef$value2 === void 0 ? void 0 : _formRef$value2.resetFields.apply(_formRef$value2, params);
|
|
2114
|
+
}
|
|
2115
|
+
});
|
|
2116
|
+
provideProForm(_objectSpread2({
|
|
2117
|
+
formState: formState,
|
|
2118
|
+
showState: showState,
|
|
2119
|
+
readonlyState: readonlyState,
|
|
2120
|
+
disableState: disableState,
|
|
2121
|
+
//
|
|
2122
|
+
elementMap: props.elementMap,
|
|
2123
|
+
formElementMap: props.formElementMap,
|
|
2124
|
+
//
|
|
2125
|
+
readonly: readonly,
|
|
2126
|
+
//
|
|
2127
|
+
columns: columns,
|
|
2128
|
+
//
|
|
2129
|
+
formRef: formRef
|
|
2130
|
+
}, props.provideExtra));
|
|
2131
|
+
var invalidKeys = lodash.keys(proFormProps());
|
|
2132
|
+
var gridKeys = lodash.keys(lodash.omit(Grid.props, "items"));
|
|
2133
|
+
return function () {
|
|
2134
|
+
var _slots$start, _slots$default;
|
|
2135
|
+
|
|
2136
|
+
return vue.createVNode(Form, vue.mergeProps({
|
|
2137
|
+
"ref": formRef
|
|
2138
|
+
}, lodash.omit(attrs, "onFinish"), lodash.omit.apply(void 0, [props].concat(_toConsumableArray(invalidKeys), _toConsumableArray(gridKeys), ["onFinish"])), {
|
|
2139
|
+
"model": formState,
|
|
2140
|
+
"onFinish": handleFinish
|
|
2141
|
+
}), _objectSpread2({
|
|
2142
|
+
"default": function _default() {
|
|
2143
|
+
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, {
|
|
2144
|
+
"row": props.row,
|
|
2145
|
+
"col": props.col,
|
|
2146
|
+
"items": lodash.map(columns.value, function (item) {
|
|
2147
|
+
return {
|
|
2148
|
+
rowKey: getColumnFormItemName(item),
|
|
2149
|
+
vNode: getFormItemEl(props.formElementMap, item, props.needRules),
|
|
2150
|
+
col: lodash.get(item, ["extra", "col"])
|
|
2151
|
+
};
|
|
2152
|
+
})
|
|
2153
|
+
}, null) : lodash.map(columns.value, function (item) {
|
|
2154
|
+
return getFormItemEl(props.formElementMap, item, props.needRules);
|
|
2155
|
+
})]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
|
|
2156
|
+
}
|
|
2157
|
+
}, lodash.omit(slots, "default")));
|
|
2158
|
+
};
|
|
2159
|
+
}
|
|
2160
|
+
});
|
|
2161
|
+
};
|
|
1434
2162
|
|
|
1435
2163
|
exports.SearchMode = void 0;
|
|
1436
2164
|
|
|
@@ -1479,6 +2207,11 @@ var proSearchFormProps = function proSearchFormProps() {
|
|
|
1479
2207
|
debounceKeys: {
|
|
1480
2208
|
type: Array
|
|
1481
2209
|
},
|
|
2210
|
+
//默认 valueType 为 text 的控件会debounce处理
|
|
2211
|
+
debounceTypes: {
|
|
2212
|
+
type: Array,
|
|
2213
|
+
"default": ["text"]
|
|
2214
|
+
},
|
|
1482
2215
|
debounceTime: {
|
|
1483
2216
|
type: Number,
|
|
1484
2217
|
"default": 800
|
|
@@ -1490,62 +2223,74 @@ var proSearchFormProps = function proSearchFormProps() {
|
|
|
1490
2223
|
* 该组件只是个模式,最终返回null,不做任何渲染,应配合着ProForm的包装类一起使用
|
|
1491
2224
|
* 针对传入的model(监听对象)做相应的finish(回调)处理
|
|
1492
2225
|
*/
|
|
1493
|
-
var
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
var
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
2226
|
+
var createSearchForm = function createSearchForm(Form, Props) {
|
|
2227
|
+
return vue.defineComponent({
|
|
2228
|
+
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Form.props), Props), proSearchFormProps()),
|
|
2229
|
+
setup: function setup(props, _ref) {
|
|
2230
|
+
var slots = _ref.slots;
|
|
2231
|
+
var formState = props.model || vue.reactive({});
|
|
2232
|
+
var valueTypeSet = new Set(props.debounceTypes); //根据column valueType 算出默认需要debounce处理的属性集合
|
|
2233
|
+
|
|
2234
|
+
var defaultDebounceKeys = lodash.map(lodash.filter(props.columns, function (column) {
|
|
2235
|
+
var valueType = getColumnValueType(column); //默认input组件的触发事件需要debounce处理
|
|
2236
|
+
|
|
2237
|
+
return valueTypeSet.has(valueType);
|
|
2238
|
+
}), function (column) {
|
|
2239
|
+
return getColumnFormItemName(column);
|
|
2240
|
+
});
|
|
2241
|
+
var formRef = vue.ref();
|
|
1505
2242
|
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
};
|
|
2243
|
+
var handleFinish = function handleFinish() {
|
|
2244
|
+
var _formRef$value;
|
|
1509
2245
|
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
}, props.debounceTime); //初始化
|
|
2246
|
+
(_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.submit();
|
|
2247
|
+
};
|
|
1513
2248
|
|
|
1514
|
-
|
|
1515
|
-
if (props.initEmit) {
|
|
2249
|
+
var debounceFinish = lodash.debounce(function () {
|
|
1516
2250
|
handleFinish();
|
|
1517
|
-
}
|
|
1518
|
-
}, []);
|
|
2251
|
+
}, props.debounceTime); //初始化
|
|
1519
2252
|
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
2253
|
+
hooks.useEffect(function () {
|
|
2254
|
+
if (props.initEmit) {
|
|
2255
|
+
handleFinish();
|
|
2256
|
+
}
|
|
2257
|
+
}, []);
|
|
1525
2258
|
|
|
2259
|
+
var isDebounceDataChange = function isDebounceDataChange(state, prevState, debounceKeys) {
|
|
2260
|
+
return lodash.some(debounceKeys, function (key) {
|
|
2261
|
+
return lodash.get(state, key) !== lodash.get(prevState, key);
|
|
2262
|
+
});
|
|
2263
|
+
}; //监听
|
|
1526
2264
|
|
|
1527
|
-
hooks.useWatch(function (state, prevState) {
|
|
1528
|
-
if (props.searchMode !== exports.SearchMode.AUTO) {
|
|
1529
|
-
return;
|
|
1530
|
-
} //如果改变的值中包括debounceKeys中注册的 延时触发
|
|
1531
2265
|
|
|
2266
|
+
hooks.useWatch(function (state, prevState) {
|
|
2267
|
+
if (props.searchMode !== exports.SearchMode.AUTO) {
|
|
2268
|
+
return;
|
|
2269
|
+
} //如果改变的值中包括debounceKeys中注册的 延时触发
|
|
1532
2270
|
|
|
1533
|
-
var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
|
|
1534
2271
|
|
|
1535
|
-
|
|
1536
|
-
debounceFinish();
|
|
1537
|
-
return;
|
|
1538
|
-
}
|
|
2272
|
+
var debounceKeys = lodash.size(props.debounceKeys) > 0 ? props.debounceKeys : defaultDebounceKeys;
|
|
1539
2273
|
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
});
|
|
2274
|
+
if (lodash.size(debounceKeys) > 0 && isDebounceDataChange(state, prevState, debounceKeys)) {
|
|
2275
|
+
debounceFinish();
|
|
2276
|
+
return;
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2279
|
+
handleFinish();
|
|
2280
|
+
}, function () {
|
|
2281
|
+
return lodash.clone(formState);
|
|
2282
|
+
});
|
|
2283
|
+
var invalidKeys = lodash.keys(lodash.omit(proSearchFormProps(), "columns"));
|
|
2284
|
+
return function () {
|
|
2285
|
+
return vue.createVNode(Form, vue.mergeProps({
|
|
2286
|
+
"ref": formRef
|
|
2287
|
+
}, lodash.omit(props, invalidKeys), {
|
|
2288
|
+
"model": formState
|
|
2289
|
+
}), slots);
|
|
2290
|
+
};
|
|
2291
|
+
}
|
|
2292
|
+
});
|
|
2293
|
+
};
|
|
1549
2294
|
|
|
1550
2295
|
/**
|
|
1551
2296
|
* ProFormList ctx
|
|
@@ -1579,86 +2324,83 @@ var FormListProvider = vue.defineComponent({
|
|
|
1579
2324
|
}
|
|
1580
2325
|
});
|
|
1581
2326
|
|
|
1582
|
-
var
|
|
1583
|
-
return {
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
}
|
|
1594
|
-
};
|
|
1595
|
-
};
|
|
1596
|
-
|
|
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;
|
|
2327
|
+
var createFormList = function createFormList(FormItem) {
|
|
2328
|
+
return vue.defineComponent({
|
|
2329
|
+
props: _objectSpread2(_objectSpread2({}, FormItem.props), {}, {
|
|
2330
|
+
//每行默认id
|
|
2331
|
+
rowKey: {
|
|
2332
|
+
type: String,
|
|
2333
|
+
"default": "id"
|
|
2334
|
+
}
|
|
2335
|
+
}),
|
|
2336
|
+
setup: function setup(props, _ref2) {
|
|
2337
|
+
var slots = _ref2.slots;
|
|
1605
2338
|
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
2339
|
+
var _useProForm = useProForm(),
|
|
2340
|
+
formState = _useProForm.formState,
|
|
2341
|
+
readonly = _useProForm.readonly;
|
|
1609
2342
|
|
|
1610
|
-
|
|
1611
|
-
var
|
|
2343
|
+
var formListCtx = useProFormList();
|
|
2344
|
+
var nameList = convertPathToList(props.name);
|
|
2345
|
+
var path = formListCtx !== null && formListCtx !== void 0 && formListCtx.pathList ? [].concat(_toConsumableArray(formListCtx.pathList), _toConsumableArray(nameList)) : nameList;
|
|
1612
2346
|
|
|
1613
|
-
|
|
1614
|
-
targetList =
|
|
1615
|
-
}
|
|
2347
|
+
var handleAdd = function handleAdd() {
|
|
2348
|
+
var targetList = lodash.get(formState, path);
|
|
1616
2349
|
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
2350
|
+
if (!lodash.isArray(targetList)) {
|
|
2351
|
+
targetList = [];
|
|
2352
|
+
}
|
|
1620
2353
|
|
|
1621
|
-
|
|
1622
|
-
|
|
2354
|
+
targetList.push(_defineProperty({}, props.rowKey, new Date().valueOf()));
|
|
2355
|
+
lodash.set(formState, path, targetList);
|
|
2356
|
+
};
|
|
1623
2357
|
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
}
|
|
2358
|
+
var handleRemove = function handleRemove(index) {
|
|
2359
|
+
var targetList = lodash.get(formState, path);
|
|
1627
2360
|
|
|
1628
|
-
|
|
1629
|
-
|
|
2361
|
+
if (lodash.size(targetList) <= 0) {
|
|
2362
|
+
return;
|
|
2363
|
+
}
|
|
1630
2364
|
|
|
1631
|
-
|
|
1632
|
-
|
|
2365
|
+
targetList.splice(index, 1);
|
|
2366
|
+
};
|
|
1633
2367
|
|
|
1634
|
-
return
|
|
1635
|
-
var _slots$
|
|
2368
|
+
return function () {
|
|
2369
|
+
var _slots$add;
|
|
1636
2370
|
|
|
1637
|
-
return vue.createVNode(
|
|
1638
|
-
"key": index,
|
|
1639
|
-
"pathList": [].concat(_toConsumableArray(path), [index])
|
|
1640
|
-
}, {
|
|
2371
|
+
return vue.createVNode(FormItem, lodash.omit(props, "rowKey"), {
|
|
1641
2372
|
"default": function _default() {
|
|
1642
|
-
return [
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
2373
|
+
return [lodash.map(lodash.get(formState, path), function (item, index) {
|
|
2374
|
+
var _slots$default2, _slots$itemAdd, _slots$itemMinus;
|
|
2375
|
+
|
|
2376
|
+
return vue.createVNode(FormListProvider, {
|
|
2377
|
+
"key": item[props.rowKey] || index,
|
|
2378
|
+
"pathList": [].concat(_toConsumableArray(path), [index])
|
|
2379
|
+
}, {
|
|
2380
|
+
"default": function _default() {
|
|
2381
|
+
return [vue.createVNode("div", {
|
|
2382
|
+
"class": "pro-form-list-item"
|
|
2383
|
+
}, [(_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", {
|
|
2384
|
+
"class": "pro-form-list-item-add",
|
|
2385
|
+
"onClick": handleAdd
|
|
2386
|
+
}, [(_slots$itemAdd = slots.itemAdd) === null || _slots$itemAdd === void 0 ? void 0 : _slots$itemAdd.call(slots)]), vue.createVNode("div", {
|
|
2387
|
+
"class": "pro-form-list-item-minus",
|
|
2388
|
+
"onClick": function onClick() {
|
|
2389
|
+
return handleRemove(index);
|
|
2390
|
+
}
|
|
2391
|
+
}, [(_slots$itemMinus = slots.itemMinus) === null || _slots$itemMinus === void 0 ? void 0 : _slots$itemMinus.call(slots)])])])];
|
|
2392
|
+
}
|
|
2393
|
+
});
|
|
2394
|
+
}), !readonly.value && vue.createVNode("div", {
|
|
2395
|
+
"class": "pro-form-list-add",
|
|
1646
2396
|
"onClick": handleAdd
|
|
1647
|
-
}, [(_slots$
|
|
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)])])])];
|
|
2397
|
+
}, [(_slots$add = slots.add) === null || _slots$add === void 0 ? void 0 : _slots$add.call(slots)])];
|
|
1653
2398
|
}
|
|
1654
2399
|
});
|
|
1655
|
-
}
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
};
|
|
1660
|
-
}
|
|
1661
|
-
});
|
|
2400
|
+
};
|
|
2401
|
+
}
|
|
2402
|
+
});
|
|
2403
|
+
};
|
|
1662
2404
|
|
|
1663
2405
|
var proFormItemProps = function proFormItemProps() {
|
|
1664
2406
|
return {
|
|
@@ -1784,13 +2526,6 @@ var proTableProps = function proTableProps() {
|
|
|
1784
2526
|
type: Object
|
|
1785
2527
|
},
|
|
1786
2528
|
|
|
1787
|
-
/**
|
|
1788
|
-
* loading
|
|
1789
|
-
*/
|
|
1790
|
-
loading: {
|
|
1791
|
-
type: Boolean
|
|
1792
|
-
},
|
|
1793
|
-
|
|
1794
2529
|
/**
|
|
1795
2530
|
* 序号
|
|
1796
2531
|
*/
|
|
@@ -1801,7 +2536,7 @@ var proTableProps = function proTableProps() {
|
|
|
1801
2536
|
/**
|
|
1802
2537
|
* 分页
|
|
1803
2538
|
*/
|
|
1804
|
-
|
|
2539
|
+
paginationState: {
|
|
1805
2540
|
type: Object
|
|
1806
2541
|
},
|
|
1807
2542
|
|
|
@@ -1814,62 +2549,35 @@ var proTableProps = function proTableProps() {
|
|
|
1814
2549
|
};
|
|
1815
2550
|
};
|
|
1816
2551
|
|
|
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 = lodash.merge(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
|
-
}
|
|
1842
|
-
|
|
1843
|
-
return nextItem;
|
|
1844
|
-
}); //处理序号
|
|
2552
|
+
var createTable = function createTable(Table, Props) {
|
|
2553
|
+
return vue.defineComponent({
|
|
2554
|
+
props: _objectSpread2(_objectSpread2(_objectSpread2({}, Table.props), Props), proTableProps()),
|
|
2555
|
+
setup: function setup(props, _ref) {
|
|
2556
|
+
var slots = _ref.slots;
|
|
1845
2557
|
|
|
1846
|
-
|
|
1847
|
-
|
|
2558
|
+
var createNumberColumn = function createNumberColumn() {
|
|
2559
|
+
return _objectSpread2(_objectSpread2({
|
|
1848
2560
|
title: "序号",
|
|
1849
2561
|
dataIndex: "serialNumber",
|
|
1850
2562
|
width: 80
|
|
1851
2563
|
}, props.column), {}, {
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
var _props$pagination, _props$pagination2;
|
|
2564
|
+
customRender: function customRender(_ref2) {
|
|
2565
|
+
var _props$paginationStat, _props$paginationStat2;
|
|
1855
2566
|
|
|
1856
|
-
var index =
|
|
2567
|
+
var index = _ref2.index;
|
|
1857
2568
|
|
|
1858
|
-
if ((_props$
|
|
1859
|
-
return props.
|
|
2569
|
+
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) {
|
|
2570
|
+
return props.paginationState.pageSize * (props.paginationState.page - 1) + index + 1;
|
|
1860
2571
|
}
|
|
1861
2572
|
|
|
1862
2573
|
return index + 1;
|
|
1863
2574
|
}
|
|
1864
|
-
})
|
|
1865
|
-
}
|
|
2575
|
+
});
|
|
2576
|
+
};
|
|
1866
2577
|
|
|
1867
|
-
var
|
|
2578
|
+
var createOperateColumn = function createOperateColumn() {
|
|
2579
|
+
var operate = props.operate; //将itemState补充的信息拼到item中
|
|
1868
2580
|
|
|
1869
|
-
if (operate && operate.items && lodash.some(operate.items, function (item) {
|
|
1870
|
-
return item.show;
|
|
1871
|
-
})) {
|
|
1872
|
-
//将itemState补充的信息拼到item中
|
|
1873
2581
|
var items = lodash.map(operate.items, function (i) {
|
|
1874
2582
|
return _objectSpread2(_objectSpread2({}, i), lodash.get(operate.itemState, i.value));
|
|
1875
2583
|
}); //排序
|
|
@@ -1877,14 +2585,14 @@ var ProTable = vue.defineComponent({
|
|
|
1877
2585
|
var sortedItems = lodash.sortBy(items, function (item) {
|
|
1878
2586
|
return item.sort;
|
|
1879
2587
|
});
|
|
1880
|
-
|
|
2588
|
+
return _objectSpread2(_objectSpread2(_objectSpread2({}, props.column), {}, {
|
|
1881
2589
|
title: "操作",
|
|
1882
2590
|
dataIndex: "operate",
|
|
1883
2591
|
fixed: "right"
|
|
1884
|
-
},
|
|
1885
|
-
customRender: function customRender(
|
|
1886
|
-
var record =
|
|
1887
|
-
var
|
|
2592
|
+
}, operate.column), {}, {
|
|
2593
|
+
customRender: function customRender(_ref3) {
|
|
2594
|
+
var record = _ref3.record;
|
|
2595
|
+
var showItems = lodash.filter(sortedItems, function (item) {
|
|
1888
2596
|
if (item.show && lodash.isFunction(item.show)) {
|
|
1889
2597
|
return item.show(record);
|
|
1890
2598
|
}
|
|
@@ -1897,7 +2605,7 @@ var ProTable = vue.defineComponent({
|
|
|
1897
2605
|
});
|
|
1898
2606
|
return vue.createVNode("div", {
|
|
1899
2607
|
"class": "pro-table-operate"
|
|
1900
|
-
}, [lodash.map(
|
|
2608
|
+
}, [lodash.map(showItems, function (item) {
|
|
1901
2609
|
//自定义
|
|
1902
2610
|
if (lodash.isFunction(item.element)) {
|
|
1903
2611
|
return item.element(record, item);
|
|
@@ -1914,43 +2622,96 @@ var ProTable = vue.defineComponent({
|
|
|
1914
2622
|
}, [item.label]);
|
|
1915
2623
|
})]);
|
|
1916
2624
|
}
|
|
1917
|
-
}
|
|
1918
|
-
}
|
|
2625
|
+
});
|
|
2626
|
+
};
|
|
1919
2627
|
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
2628
|
+
var columns = vue.computed(function () {
|
|
2629
|
+
var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
|
|
2630
|
+
return item.dataIndex;
|
|
2631
|
+
}); //根据valueType选择对应的展示组件
|
|
2632
|
+
|
|
2633
|
+
var columns = lodash.map(mergeColumns, function (item) {
|
|
2634
|
+
//merge公共item
|
|
2635
|
+
var nextItem = _objectSpread2(_objectSpread2({}, props.column), item);
|
|
2636
|
+
|
|
2637
|
+
if (!item.customRender) {
|
|
2638
|
+
nextItem.customRender = function (_ref4) {
|
|
2639
|
+
var text = _ref4.text;
|
|
2640
|
+
var vn = getItemEl(props.elementMap, _objectSpread2(_objectSpread2({}, item), {}, {
|
|
2641
|
+
showProps: _objectSpread2(_objectSpread2({}, item.showProps), {}, {
|
|
2642
|
+
content: props.columnEmptyText
|
|
2643
|
+
})
|
|
2644
|
+
}), text); //如果找不到注册的组件,使用当前值 及 columnEmptyText
|
|
2645
|
+
|
|
2646
|
+
return vn || text || props.columnEmptyText;
|
|
2647
|
+
};
|
|
2648
|
+
}
|
|
1927
2649
|
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
2650
|
+
return nextItem;
|
|
2651
|
+
}); //处理序号
|
|
2652
|
+
|
|
2653
|
+
if (props.serialNumber) {
|
|
2654
|
+
columns.unshift(createNumberColumn());
|
|
2655
|
+
} //处理operate
|
|
2656
|
+
|
|
2657
|
+
|
|
2658
|
+
if (props.operate && props.operate.items && lodash.some(props.operate.items, function (item) {
|
|
2659
|
+
return item.show;
|
|
2660
|
+
})) {
|
|
2661
|
+
columns.push(createOperateColumn());
|
|
2662
|
+
}
|
|
2663
|
+
|
|
2664
|
+
return columns;
|
|
2665
|
+
});
|
|
2666
|
+
var tableRef = vue.ref();
|
|
2667
|
+
provideProTable(_objectSpread2({
|
|
2668
|
+
columns: columns,
|
|
2669
|
+
tableRef: tableRef
|
|
2670
|
+
}, props.provideExtra));
|
|
2671
|
+
var invalidKeys = lodash.keys(proTableProps());
|
|
2672
|
+
return function () {
|
|
2673
|
+
return vue.createVNode(Table, vue.mergeProps({
|
|
2674
|
+
"ref": tableRef
|
|
2675
|
+
}, lodash.omit(props, invalidKeys), {
|
|
2676
|
+
"columns": columns.value
|
|
2677
|
+
}), slots);
|
|
2678
|
+
};
|
|
2679
|
+
}
|
|
2680
|
+
});
|
|
2681
|
+
};
|
|
1932
2682
|
|
|
1933
2683
|
exports.ProCurd = ProCurd;
|
|
1934
|
-
exports.ProForm = ProForm;
|
|
1935
|
-
exports.ProFormList = ProFormList;
|
|
1936
2684
|
exports.ProModalCurd = ProModalCurd;
|
|
1937
2685
|
exports.ProModule = ProModule;
|
|
1938
2686
|
exports.ProPageCurd = ProPageCurd;
|
|
1939
|
-
exports.ProSearchForm = ProSearchForm;
|
|
1940
|
-
exports.ProTable = ProTable;
|
|
1941
2687
|
exports.RequestAction = RequestAction;
|
|
2688
|
+
exports.Wrapper = Wrapper;
|
|
1942
2689
|
exports.convertPathToList = convertPathToList;
|
|
2690
|
+
exports.createCurdDesc = createCurdDesc;
|
|
2691
|
+
exports.createCurdForm = createCurdForm;
|
|
2692
|
+
exports.createCurdList = createCurdList;
|
|
2693
|
+
exports.createExpose = createExpose;
|
|
2694
|
+
exports.createForm = createForm;
|
|
1943
2695
|
exports.createFormItemCompFn = createFormItemCompFn;
|
|
2696
|
+
exports.createFormList = createFormList;
|
|
2697
|
+
exports.createGrid = createGrid;
|
|
2698
|
+
exports.createSearchForm = createSearchForm;
|
|
2699
|
+
exports.createTable = createTable;
|
|
1944
2700
|
exports.defaultPage = defaultPage;
|
|
2701
|
+
exports.findTargetInTree = findTargetInTree;
|
|
2702
|
+
exports.findTargetListInTree = findTargetListInTree;
|
|
1945
2703
|
exports.generateId = generateId;
|
|
1946
2704
|
exports.getColumnFormItemName = getColumnFormItemName;
|
|
1947
2705
|
exports.getColumnValueType = getColumnValueType;
|
|
2706
|
+
exports.getFirstPropName = getFirstPropName;
|
|
1948
2707
|
exports.getFormItemEl = getFormItemEl;
|
|
1949
2708
|
exports.getItemEl = getItemEl;
|
|
1950
2709
|
exports.getValidValues = getValidValues;
|
|
1951
2710
|
exports.mergeStateToList = mergeStateToList;
|
|
1952
2711
|
exports.provideProCurd = provideProCurd;
|
|
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;
|