form-driver 0.4.19 → 0.4.21
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/README.md +15 -0
- package/dist/m3.js +1 -1
- package/es/m3.js +1734 -1289
- package/lib/m3.js +1733 -1287
- package/package.json +2 -2
- package/src/framework/Init.tsx +6 -0
- package/src/framework/MUtil.tsx +145 -0
- package/src/framework/Schema.ts +16 -2
- package/src/index.ts +0 -1
- package/src/types/MDateRangeType.ts +65 -24
- package/src/types/MDateTimeType.ts +73 -29
- package/src/ui/editor/basic/ACascadePicker.tsx +23 -15
- package/src/ui/editor/basic/ADatetimePicker.tsx +103 -39
- package/src/ui/editor/basic/AGB2260.tsx +25 -14
- package/src/ui/editor/basic/ARangePicker.tsx +110 -26
- package/src/ui/widget/SelectBox.tsx +35 -15
- package/types/framework/Init.d.ts +1 -0
- package/types/framework/MUtil.d.ts +14 -0
- package/types/framework/Schema.d.ts +11 -0
- package/types/index.d.ts +0 -1
- package/types/types/MDateRangeType.d.ts +2 -0
- package/types/types/MDateTimeType.d.ts +2 -2
- package/types/ui/editor/basic/ADatetimePicker.d.ts +2 -1
- package/types/ui/editor/basic/AGB2260.d.ts +1 -0
- package/types/ui/editor/basic/ARangePicker.d.ts +5 -3
- package/types/ui/widget/SelectBox.d.ts +10 -3
package/lib/m3.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
require('antd/dist/antd.css');
|
|
6
|
-
require('antd-mobile/dist/antd-mobile.css');
|
|
7
6
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
8
7
|
var antd = require('antd');
|
|
9
8
|
var React = require('react');
|
|
@@ -13,7 +12,7 @@ var _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
|
|
|
13
12
|
var _construct = require('@babel/runtime/helpers/construct');
|
|
14
13
|
var moment = require('moment');
|
|
15
14
|
var antdMobile = require('antd-mobile');
|
|
16
|
-
var zhCN = require('antd/
|
|
15
|
+
var zhCN = require('antd/es/locale/zh_CN');
|
|
17
16
|
var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
|
|
18
17
|
var icons = require('@ant-design/icons');
|
|
19
18
|
var TextArea = require('antd/lib/input/TextArea');
|
|
@@ -22,8 +21,10 @@ var adapter = require('@atlaskit/pragmatic-drag-and-drop/element/adapter');
|
|
|
22
21
|
var clsx = require('clsx');
|
|
23
22
|
var Button = require('antd/lib/button');
|
|
24
23
|
var _objectWithoutPropertiesLoose = require('@babel/runtime/helpers/objectWithoutPropertiesLoose');
|
|
24
|
+
var zhCN$1 = require('antd/lib/date-picker/locale/zh_CN');
|
|
25
25
|
var ReactDOM = require('react-dom');
|
|
26
26
|
var debounce = require('lodash/debounce');
|
|
27
|
+
require('moment/locale/zh-cn');
|
|
27
28
|
var _extends = require('@babel/runtime/helpers/extends');
|
|
28
29
|
var OSS = require('ali-oss');
|
|
29
30
|
|
|
@@ -42,6 +43,7 @@ var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
|
|
|
42
43
|
var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
|
|
43
44
|
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
44
45
|
var _objectWithoutPropertiesLoose__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutPropertiesLoose);
|
|
46
|
+
var zhCN__default$1 = /*#__PURE__*/_interopDefaultLegacy(zhCN$1);
|
|
45
47
|
var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
|
|
46
48
|
var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
|
|
47
49
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
@@ -200,1279 +202,1658 @@ function _createForOfIteratorHelperLoose$e(o, allowArrayLike) { var it = typeof
|
|
|
200
202
|
function _unsupportedIterableToArray$e(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$e(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$e(o, minLen); }
|
|
201
203
|
|
|
202
204
|
function _arrayLikeToArray$e(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
203
|
-
var
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
},
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* 枚举字段可以写成空格分隔的字符串,也能写成MEnumField[],这个函数将两种形式转换成统一的MEnumField[]
|
|
217
|
-
* @deprecated 改成用MUtils.option
|
|
218
|
-
*/
|
|
219
|
-
standardFields: function standardFields(fs) {
|
|
220
|
-
if (typeof fs === "string") {
|
|
221
|
-
return fs.split(" ").map(function (aEnum) {
|
|
222
|
-
var _kv$;
|
|
223
|
-
|
|
224
|
-
var kv = aEnum.split("=");
|
|
225
|
-
return {
|
|
226
|
-
label: kv[0],
|
|
227
|
-
value: (_kv$ = kv[1]) != null ? _kv$ : kv[0]
|
|
228
|
-
};
|
|
229
|
-
});
|
|
230
|
-
} else if (fs) {
|
|
231
|
-
return fs;
|
|
232
|
-
} else {
|
|
233
|
-
return [];
|
|
234
|
-
}
|
|
235
|
-
},
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* 获取enumFields或者setFields,返回标准的MEnumField[]
|
|
239
|
-
* @param f 如果f是nil,返回[]
|
|
240
|
-
*/
|
|
241
|
-
option: function option(f) {
|
|
242
|
-
var _result;
|
|
243
|
-
|
|
244
|
-
var result;
|
|
205
|
+
var defaultTheme = {
|
|
206
|
+
READABLE_UNKNOWN: "?",
|
|
207
|
+
READABLE_BLANK: "-",
|
|
208
|
+
READABLE_INVALID: "❓",
|
|
209
|
+
READABLE_ERROR: "❗",
|
|
210
|
+
themeName: "antMiddle"
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* 注册viewer,type,morph(viewer和type之间的关联)
|
|
214
|
+
*/
|
|
245
215
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
} else {
|
|
249
|
-
var ori;
|
|
216
|
+
var Assembly = /*#__PURE__*/function () {
|
|
217
|
+
var _proto = Assembly.prototype;
|
|
250
218
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
219
|
+
/** 根据定义返回View,返回nil表示没有可用的View */
|
|
220
|
+
_proto.getViewerOf = function getViewerOf(f, morph) {
|
|
221
|
+
if (f.editor && morph === "editor") {
|
|
222
|
+
if (___default["default"].isString(f.editor)) {
|
|
223
|
+
return ___default["default"].get(this.viewers, f.editor);
|
|
255
224
|
} else {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
ori = (_ref = (_f$option = f.option) != null ? _f$option : f.setFields) != null ? _ref : f.enumFields; // 只是为了保险
|
|
225
|
+
return f.editor;
|
|
259
226
|
}
|
|
227
|
+
} else if (f.readable && morph === "readable") {
|
|
228
|
+
if (___default["default"].isString(f.readable)) {
|
|
229
|
+
return ___default["default"].get(this.viewers, f.readable);
|
|
230
|
+
} else {
|
|
231
|
+
return f.readable;
|
|
232
|
+
}
|
|
233
|
+
} else {
|
|
234
|
+
var viewer = ___default["default"].get(this.morph, morph + "." + f.type);
|
|
260
235
|
|
|
261
|
-
if (
|
|
262
|
-
|
|
263
|
-
var _kv$2;
|
|
264
|
-
|
|
265
|
-
var kv = aEnum.split("=");
|
|
266
|
-
return {
|
|
267
|
-
label: kv[0],
|
|
268
|
-
value: (_kv$2 = kv[1]) != null ? _kv$2 : kv[0]
|
|
269
|
-
};
|
|
270
|
-
});
|
|
236
|
+
if (___default["default"].isString(viewer)) {
|
|
237
|
+
return ___default["default"].get(this.viewers, viewer);
|
|
271
238
|
} else {
|
|
272
|
-
|
|
239
|
+
return viewer;
|
|
273
240
|
}
|
|
274
241
|
}
|
|
242
|
+
};
|
|
275
243
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
/** 如果出错了,返回这么个元素,可能用在BaseEditor子类或者其他的东西上 */
|
|
280
|
-
error: function error(msg, schema) {
|
|
281
|
-
return jsxRuntime.jsxs("div", {
|
|
282
|
-
style: {
|
|
283
|
-
color: "white",
|
|
284
|
-
border: "1px solid darkgrey",
|
|
285
|
-
background: "red",
|
|
286
|
-
textAlign: "center",
|
|
287
|
-
borderRadius: "5px"
|
|
288
|
-
},
|
|
289
|
-
children: [msg, schema ? jsxRuntime.jsx("pre", {
|
|
290
|
-
style: {
|
|
291
|
-
whiteSpace: "pre-wrap",
|
|
292
|
-
textAlign: "left"
|
|
293
|
-
},
|
|
294
|
-
children: JSON.stringify(schema)
|
|
295
|
-
}) : undefined]
|
|
296
|
-
}, Date.now());
|
|
297
|
-
},
|
|
298
|
-
sign: function sign(v) {
|
|
299
|
-
if (___default["default"].isNil(v)) {
|
|
300
|
-
return null;
|
|
244
|
+
_proto.validate = function validate(s, v, path) {
|
|
245
|
+
if (path === void 0) {
|
|
246
|
+
path = "";
|
|
301
247
|
}
|
|
302
248
|
|
|
303
|
-
|
|
304
|
-
},
|
|
249
|
+
var result = undefined;
|
|
305
250
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
phoneLike: function phoneLike() {
|
|
310
|
-
// eslint-disable-next-line no-restricted-globals
|
|
311
|
-
return screen.height / screen.width > 1.5;
|
|
312
|
-
},
|
|
313
|
-
// /**
|
|
314
|
-
// * 计算文字的宽度
|
|
315
|
-
// * @param text 文字
|
|
316
|
-
// * @param font 字体
|
|
317
|
-
// * @returns 宽度,单位是px
|
|
318
|
-
// */
|
|
319
|
-
// getTextWidth(text:string, font?:string) {
|
|
320
|
-
// var canvas = _messurer ?? (_messurer = document.createElement("canvas"));
|
|
321
|
-
// var context = canvas.getContext("2d");
|
|
322
|
-
// if(!context) {
|
|
323
|
-
// console.error('神奇的事情发生了:canvas.getContext("2d")居然能返回null');
|
|
324
|
-
// return text.length * 10; // 总比出不来好
|
|
325
|
-
// }
|
|
326
|
-
// if(font){
|
|
327
|
-
// context.font = font;
|
|
328
|
-
// }
|
|
329
|
-
// var metrics = context.measureText(text);
|
|
330
|
-
// return metrics.width;
|
|
331
|
-
// }
|
|
251
|
+
for (var _iterator = _createForOfIteratorHelperLoose$e(this.types[s.type].validators), _step; !(_step = _iterator()).done;) {
|
|
252
|
+
var validator = _step.value;
|
|
253
|
+
result = validator(this, s, v, path);
|
|
332
254
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
return 0;
|
|
255
|
+
if (result === "pass" && s.type !== "weight") {
|
|
256
|
+
return undefined;
|
|
257
|
+
} else if (typeof result === "object") {
|
|
258
|
+
MUtil.debug("校验", path, result.message);
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
340
261
|
}
|
|
341
262
|
|
|
342
|
-
return
|
|
343
|
-
}
|
|
263
|
+
return undefined;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
_proto.addViewer = function addViewer(name, v) {
|
|
267
|
+
if (this.viewers[name]) {
|
|
268
|
+
console.error("addViewer: \u5DF2\u7ECF\u5B58\u5728\u540D\u4E3A " + name + " \u7684 Viewer\uFF0C\u65E0\u6CD5\u518D\u6B21\u6DFB\u52A0\uFF01");
|
|
269
|
+
return;
|
|
270
|
+
} else {
|
|
271
|
+
this.viewers[name] = v;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
344
274
|
|
|
275
|
+
_proto.addEditor = function addEditor(name, v) {
|
|
276
|
+
if (this.editors[name]) {
|
|
277
|
+
console.error("addEditor: \u5DF2\u7ECF\u5B58\u5728\u540D\u4E3A " + name + " \u7684 Editor\uFF0C\u65E0\u6CD5\u518D\u6B21\u6DFB\u52A0\uFF01");
|
|
278
|
+
return;
|
|
279
|
+
} else {
|
|
280
|
+
this.editors[name] = v;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
345
283
|
/**
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
*
|
|
349
|
-
*
|
|
284
|
+
* 增加一种数据类型
|
|
285
|
+
* 例:
|
|
286
|
+
* const hpOrg = {name: "hpOrg", type: {validators: ..., toReadable: ...}, editor: HPOrgEditor, readable: "DivViewer"}
|
|
287
|
+
* addType(hpOrg)
|
|
288
|
+
* @param typeParam 类型的描述对象
|
|
350
289
|
*/
|
|
351
|
-
|
|
352
|
-
if (a) {
|
|
353
|
-
var idx = a.indexOf(element);
|
|
290
|
+
;
|
|
354
291
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
292
|
+
_proto.addType = function addType(typeParam) {
|
|
293
|
+
var name = typeParam.name,
|
|
294
|
+
type = typeParam.type,
|
|
295
|
+
editor = typeParam.editor,
|
|
296
|
+
_typeParam$readable = typeParam.readable,
|
|
297
|
+
readable = _typeParam$readable === void 0 ? "DivViewer" : _typeParam$readable;
|
|
298
|
+
this.types[name] = type;
|
|
358
299
|
|
|
359
|
-
|
|
360
|
-
} else {
|
|
361
|
-
return a;
|
|
362
|
-
}
|
|
363
|
-
},
|
|
364
|
-
fieldOfLayout: function fieldOfLayout(fields, spec) {
|
|
365
|
-
var objectFieldMap = ___default["default"].chain(fields).keyBy("name").value();
|
|
300
|
+
___default["default"].set(this.morph, "editor." + name, editor);
|
|
366
301
|
|
|
367
|
-
|
|
302
|
+
___default["default"].set(this.morph, "readable." + name, readable);
|
|
303
|
+
};
|
|
368
304
|
|
|
369
|
-
|
|
370
|
-
|
|
305
|
+
function Assembly() {
|
|
306
|
+
var _this = this;
|
|
371
307
|
|
|
372
|
-
|
|
308
|
+
this.types = {};
|
|
309
|
+
this.viewers = {};
|
|
310
|
+
this.editors = {};
|
|
311
|
+
this.morph = {};
|
|
312
|
+
this.theme = defaultTheme;
|
|
373
313
|
|
|
374
|
-
|
|
375
|
-
|
|
314
|
+
this.toReadable = function (s, v, parent) {
|
|
315
|
+
var t = _this.types[s.type];
|
|
376
316
|
|
|
377
|
-
|
|
317
|
+
if (t) {
|
|
318
|
+
var _r;
|
|
378
319
|
|
|
379
|
-
|
|
380
|
-
var def = objectFieldMap[f];
|
|
320
|
+
var r;
|
|
381
321
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
}
|
|
322
|
+
if (___default["default"].isString(s.toReadable)) {
|
|
323
|
+
// eslint-disable-next-line no-new-func
|
|
324
|
+
r = new Function("_", "value", "theme", "const {READABLE_UNKNOWN, READABLE_BLANK, READABLE_INVALID, READABLE_ERROR} = theme; return " + s.toReadable)(___default["default"], v, _this.theme);
|
|
325
|
+
} else if (___default["default"].isFunction(s.toReadable)) {
|
|
326
|
+
r = s.toReadable(v, parent, _this);
|
|
385
327
|
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
328
|
|
|
389
|
-
|
|
390
|
-
},
|
|
329
|
+
r = (_r = r) != null ? _r : t.toReadable(_this, s, v);
|
|
391
330
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
* 2. path是""时返回原始对象
|
|
396
|
-
* @param a
|
|
397
|
-
* @param path
|
|
398
|
-
*/
|
|
399
|
-
get: function get(a, path) {
|
|
400
|
-
if (___default["default"].isNil(a) || ___default["default"].isNil(path)) {
|
|
401
|
-
return undefined;
|
|
402
|
-
} else if (path === "") {
|
|
403
|
-
return a;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
return ___default["default"].get(a, path);
|
|
407
|
-
},
|
|
408
|
-
|
|
409
|
-
/**
|
|
410
|
-
* a : database
|
|
411
|
-
* v : newValue
|
|
412
|
-
* 跟lodash的set一样,除了path是""时等效于_.assign(a, v)
|
|
413
|
-
*/
|
|
414
|
-
set: function set(a, path, v) {
|
|
415
|
-
if (path === "") {
|
|
416
|
-
// 如果 database 是数组,需要特殊处理
|
|
417
|
-
if (___default["default"].isArray(a)) a.length = v.length;
|
|
418
|
-
|
|
419
|
-
___default["default"].assign(a, v);
|
|
420
|
-
} else {
|
|
421
|
-
___default["default"].set(a, path, v);
|
|
422
|
-
}
|
|
423
|
-
},
|
|
424
|
-
debug: function debug(d) {
|
|
425
|
-
for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
426
|
-
optionalParams[_key - 1] = arguments[_key];
|
|
427
|
-
}
|
|
331
|
+
if (s.postfix) {
|
|
332
|
+
r += s.postfix;
|
|
333
|
+
}
|
|
428
334
|
|
|
429
|
-
|
|
430
|
-
|
|
335
|
+
return r;
|
|
336
|
+
} else {
|
|
337
|
+
return s.type + "类型无效";
|
|
338
|
+
}
|
|
339
|
+
}; // 校验types是否使用了无效的编辑器名字
|
|
431
340
|
|
|
432
|
-
/**
|
|
433
|
-
* 填入默认值
|
|
434
|
-
* @param schema 你懂得
|
|
435
|
-
* @param database 数据库,会被修改的
|
|
436
|
-
* @param path 路径
|
|
437
|
-
*/
|
|
438
|
-
applyDefaultValue: function applyDefaultValue(schema, database, path) {
|
|
439
|
-
// FIXME 多测试下,type是object或其他简单类型的情况
|
|
440
|
-
if (schema.type === "object") {
|
|
441
|
-
for (var _iterator3 = _createForOfIteratorHelperLoose$e((_schema$objectFields = schema.objectFields) != null ? _schema$objectFields : []), _step3; !(_step3 = _iterator3()).done;) {
|
|
442
|
-
var _schema$objectFields;
|
|
443
341
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
___default["default"].set(database, path, schema.defaultValue);
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
},
|
|
453
|
-
filterHide: function filterHide(schema, database) {
|
|
454
|
-
var _schema$objectFields2;
|
|
342
|
+
for (var morphName in this.morph) {
|
|
343
|
+
for (var typeName in this.morph[morphName]) {
|
|
344
|
+
if (!this.types[typeName]) {
|
|
345
|
+
throw SyntaxError("\u7C7B\u578B" + typeName + "\u672A\u5B9A\u4E49");
|
|
346
|
+
}
|
|
455
347
|
|
|
456
|
-
|
|
457
|
-
var hm = MUtil.hideMap(database, (_schema$objectFields2 = schema.objectFields) != null ? _schema$objectFields2 : [], schema.uispec);
|
|
458
|
-
var finalData = ___default["default"].isArray(database) ? [] : {};
|
|
348
|
+
var viewerName = this.morph[morphName][typeName];
|
|
459
349
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
350
|
+
if (!this.viewers[viewerName]) {
|
|
351
|
+
throw SyntaxError("\u89C6\u56FE" + viewerName + "\u672A\u5B9A\u4E49");
|
|
352
|
+
}
|
|
463
353
|
}
|
|
464
354
|
}
|
|
355
|
+
}
|
|
465
356
|
|
|
466
|
-
|
|
467
|
-
|
|
357
|
+
return Assembly;
|
|
358
|
+
}();
|
|
359
|
+
var assembly = new Assembly();
|
|
468
360
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
*/
|
|
479
|
-
hideMap: function hideMap(database, objectFields, uispec) {
|
|
480
|
-
// 构造字段依赖计算的脚本,类似这样:
|
|
481
|
-
// let {name,role,gender,alias,tel,email,citizenship,student} = {"name":"aaa","alias":"bbb","tel":"1"};citizenship=='中国大陆'
|
|
482
|
-
var l1fields = ___default["default"].uniq( // 名字要唯一
|
|
483
|
-
objectFields.filter(function (e) {
|
|
484
|
-
return !!e.name;
|
|
485
|
-
}) // 过滤掉没有名字的字段
|
|
486
|
-
.map(function (e) {
|
|
487
|
-
return ___default["default"].first(e.name.split("."));
|
|
488
|
-
}) // 对于objectFields里类似student.no/student.state的字段,这里只要拼一个student就可以了
|
|
489
|
-
);
|
|
361
|
+
/**
|
|
362
|
+
* 非空校验,数据不能是null/undefined/""/NaN/[]
|
|
363
|
+
* 要在其他条件之前,以便required=false时短路掉nil的数据,否则后面的校验全都得处理nil
|
|
364
|
+
* @param a
|
|
365
|
+
* @param schema
|
|
366
|
+
* @param value
|
|
367
|
+
* @param path
|
|
368
|
+
* @returns
|
|
369
|
+
*/
|
|
490
370
|
|
|
491
|
-
|
|
371
|
+
function validateRequired$1(a, schema, value, path) {
|
|
372
|
+
if (schema.required) {
|
|
373
|
+
if (___default["default"].isNil(value) || value === "" || ___default["default"].isNaN(value) || ___default["default"].isArray(value) && value.length == 0) {
|
|
374
|
+
return {
|
|
375
|
+
message: "您还没有填完这一项",
|
|
376
|
+
path: path
|
|
377
|
+
};
|
|
378
|
+
} // 凡是总有例外
|
|
492
379
|
|
|
493
|
-
for (var _iterator4 = _createForOfIteratorHelperLoose$e(objectFields), _step4; !(_step4 = _iterator4()).done;) {
|
|
494
|
-
var f = _step4.value;
|
|
495
380
|
|
|
496
|
-
|
|
497
|
-
|
|
381
|
+
if (schema.type === "set" && schema.openOption) {
|
|
382
|
+
if (value.length === 1 && !value[0]) {
|
|
383
|
+
return {
|
|
384
|
+
message: "您还没有填完这一项",
|
|
385
|
+
path: path
|
|
386
|
+
}; // 开放set,只勾了开放选项,没有填内容,也要算空
|
|
498
387
|
}
|
|
499
388
|
}
|
|
389
|
+
} else {
|
|
390
|
+
if (___default["default"].isNil(value)) {
|
|
391
|
+
return "pass";
|
|
392
|
+
}
|
|
393
|
+
}
|
|
500
394
|
|
|
501
|
-
|
|
502
|
-
|
|
395
|
+
return undefined;
|
|
396
|
+
}
|
|
397
|
+
/** 和validateRequired相同,但不短路 */
|
|
503
398
|
|
|
504
|
-
|
|
399
|
+
function validateRequiredNS(a, schema, value, path) {
|
|
400
|
+
var v = validateRequired$1(a, schema, value, path);
|
|
505
401
|
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
402
|
+
if (v === "pass") {
|
|
403
|
+
return undefined;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
function validateDateMinMax(a, schema, value, path) {
|
|
407
|
+
if (schema.min) {
|
|
408
|
+
if (!value || value < schema.min) {
|
|
409
|
+
return {
|
|
410
|
+
message: "\u8BF7\u9009\u62E9" + schema.min + "\u4E4B\u540E\u7684\u65F6\u95F4",
|
|
411
|
+
path: path
|
|
412
|
+
};
|
|
509
413
|
}
|
|
414
|
+
}
|
|
510
415
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
416
|
+
if (schema.max) {
|
|
417
|
+
if (!value || value > schema.max) {
|
|
418
|
+
return {
|
|
419
|
+
message: "\u8BF7\u9009\u62E9" + schema.min + "\u4E4B\u524D\u7684\u65F6\u95F4",
|
|
420
|
+
path: path
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
}
|
|
517
424
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
425
|
+
return undefined;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* 数组项数不超过[min, max]
|
|
429
|
+
* @param schema
|
|
430
|
+
* @param value 应该是个数组
|
|
431
|
+
*/
|
|
521
432
|
|
|
522
|
-
|
|
433
|
+
function validateArrayItemMinMax(a, schema, value, path) {
|
|
434
|
+
if (schema.min) {
|
|
435
|
+
if (!value || value.length < schema.min) {
|
|
436
|
+
return {
|
|
437
|
+
message: "\u81F3\u5C11\u9009\u62E9" + schema.min + "\u9879",
|
|
438
|
+
path: path
|
|
439
|
+
};
|
|
523
440
|
}
|
|
441
|
+
}
|
|
524
442
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
443
|
+
if (schema.max) {
|
|
444
|
+
if (!value || value.length > schema.max) {
|
|
445
|
+
return {
|
|
446
|
+
message: "\u6700\u591A\u9009\u62E9" + schema.max + "\u9879",
|
|
447
|
+
path: path
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
}
|
|
530
451
|
|
|
531
|
-
|
|
452
|
+
return undefined;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* 字符串长度不超过[min, max]
|
|
456
|
+
* @param schema
|
|
457
|
+
* @param value 应该是个字符串
|
|
458
|
+
*/
|
|
532
459
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
return {
|
|
460
|
+
function validateStringMinMax$1(a, schema, value, path) {
|
|
461
|
+
if (schema.min) {
|
|
462
|
+
if (!value || value.length < schema.min) {
|
|
463
|
+
return {
|
|
464
|
+
message: "\u81F3\u5C11" + schema.min + "\u4E2A\u5B57",
|
|
465
|
+
path: path
|
|
466
|
+
};
|
|
537
467
|
}
|
|
538
|
-
}
|
|
468
|
+
}
|
|
539
469
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
470
|
+
if (schema.max) {
|
|
471
|
+
if (value && value.length > schema.max) {
|
|
472
|
+
return {
|
|
473
|
+
message: "\u6700\u591A" + schema.max + "\u4E2A\u5B57",
|
|
474
|
+
path: path
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
}
|
|
548
478
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
479
|
+
return undefined;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* 数字不超过[min, max]
|
|
483
|
+
* @param schema
|
|
484
|
+
* @param value 应该是个数字
|
|
485
|
+
*/
|
|
554
486
|
|
|
555
|
-
|
|
487
|
+
function validateNumberMinMax(a, schema, value, path) {
|
|
488
|
+
var temp = Number(value);
|
|
556
489
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
490
|
+
if (!___default["default"].isNil(schema.max)) {
|
|
491
|
+
if (!___default["default"].isFinite(temp) || temp > schema.max) {
|
|
492
|
+
return {
|
|
493
|
+
message: "\u6700\u591A" + schema.max,
|
|
494
|
+
path: path
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
}
|
|
560
498
|
|
|
561
|
-
|
|
499
|
+
if (!___default["default"].isNil(schema.min)) {
|
|
500
|
+
if (!___default["default"].isFinite(temp) || temp < schema.min) {
|
|
501
|
+
return {
|
|
502
|
+
message: "\u6700\u5C11" + schema.min,
|
|
503
|
+
path: path
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
}
|
|
562
507
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
508
|
+
return undefined;
|
|
509
|
+
}
|
|
510
|
+
function generateRegexValidate$1(regex, mismatchMsg) {
|
|
511
|
+
return function (a, schema, value, path) {
|
|
512
|
+
var asstr = ___default["default"].toString(value);
|
|
513
|
+
|
|
514
|
+
if (!regex.test(asstr)) {
|
|
515
|
+
return {
|
|
516
|
+
message: mismatchMsg,
|
|
517
|
+
path: path
|
|
518
|
+
};
|
|
567
519
|
}
|
|
568
|
-
},
|
|
569
|
-
scoreOf: function scoreOf(f, database) {
|
|
570
|
-
var v = ___default["default"].get(database, f.name);
|
|
571
520
|
|
|
572
|
-
|
|
573
|
-
|
|
521
|
+
return undefined;
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* 数据用Object.prototype.toString.call返回的类型是预期的
|
|
526
|
+
* 可以用Object.prototype.toString.call(<预期的类型>)来查看你想要的数据类型的expectType
|
|
527
|
+
* @param expectType 预期类型,例如:"[object Object]" "[object Null]" "[object Number]" "[object Date]" "[object Array]"
|
|
528
|
+
* @param mismatchMsg 如果不匹配,提示的错误信息
|
|
529
|
+
* @returns
|
|
530
|
+
*/
|
|
574
531
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
var score = 0;
|
|
580
|
-
var opts = MUtil.standardFields(f.setFields);
|
|
532
|
+
function generateJsPrototypeValidate(expectType, mismatchMsg) {
|
|
533
|
+
if (mismatchMsg === void 0) {
|
|
534
|
+
mismatchMsg = "数据有误,请重填此项";
|
|
535
|
+
}
|
|
581
536
|
|
|
582
|
-
|
|
583
|
-
|
|
537
|
+
return function (a, schema, value, path) {
|
|
538
|
+
if (Object.prototype.toString.call(value) == expectType) {
|
|
539
|
+
return undefined;
|
|
540
|
+
} else {
|
|
541
|
+
return {
|
|
542
|
+
message: mismatchMsg,
|
|
543
|
+
path: path
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
function generateSchemaValidate(valueSchema, mismatchMsg) {
|
|
549
|
+
return function (a, schema, value, path) {
|
|
550
|
+
var r = assembly.validate(valueSchema, value, "");
|
|
584
551
|
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
552
|
+
if (!r) {
|
|
553
|
+
return r;
|
|
554
|
+
} else {
|
|
555
|
+
return {
|
|
556
|
+
message: mismatchMsg != null ? mismatchMsg : r.message,
|
|
557
|
+
path: path
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
var Validator = {
|
|
563
|
+
validateRequired: validateRequired$1,
|
|
564
|
+
validateRequiredNS: validateRequiredNS,
|
|
565
|
+
validateDateMinMax: validateDateMinMax,
|
|
566
|
+
validateStringMinMax: validateStringMinMax$1,
|
|
567
|
+
validateNumberMinMax: validateNumberMinMax,
|
|
568
|
+
generateRegexValidate: generateRegexValidate$1
|
|
569
|
+
};
|
|
591
570
|
|
|
592
|
-
|
|
571
|
+
var EmtpyType = {
|
|
572
|
+
validators: [],
|
|
573
|
+
createDefaultValue: function createDefaultValue(assembly, s) {
|
|
574
|
+
if (s.defaultValue) {
|
|
575
|
+
return ___default["default"].clone(s.defaultValue);
|
|
593
576
|
} else {
|
|
594
|
-
return
|
|
577
|
+
return undefined;
|
|
595
578
|
}
|
|
596
579
|
},
|
|
580
|
+
standardValue: function standardValue(assembly, s, v, strict) {
|
|
581
|
+
return v;
|
|
582
|
+
},
|
|
583
|
+
toReadable: function toReadable(assembly, s, vs) {
|
|
584
|
+
if (___default["default"].isNil(vs)) {
|
|
585
|
+
return assembly.theme.READABLE_BLANK;
|
|
586
|
+
}
|
|
597
587
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
588
|
+
return vs;
|
|
589
|
+
}
|
|
590
|
+
};
|
|
591
|
+
function createDefaultValue(assembly, s) {
|
|
592
|
+
if (s.defaultValue) {
|
|
593
|
+
return ___default["default"].clone(s.defaultValue);
|
|
594
|
+
} else {
|
|
595
|
+
return undefined;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
608
598
|
|
|
609
|
-
|
|
599
|
+
var MDateTimeType = ___default["default"].assign({}, EmtpyType, {
|
|
600
|
+
validators: [validateRequired$1, validateDateMinMax],
|
|
601
|
+
antConf: function antConf(schema) {
|
|
602
|
+
var _dataFormat, _dataFormat2, _dataFormat3, _dataFormat4, _dataFormat5, _dataFormat6, _dataFormat7, _dataFormat8;
|
|
610
603
|
|
|
604
|
+
var dataFormat = schema.dataFormat;
|
|
605
|
+
var readableFormat;
|
|
606
|
+
var mode;
|
|
607
|
+
var showTime = false;
|
|
611
608
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
609
|
+
switch (schema.type) {
|
|
610
|
+
case "year":
|
|
611
|
+
mode = "year";
|
|
612
|
+
dataFormat = (_dataFormat = dataFormat) != null ? _dataFormat : "YYYY";
|
|
613
|
+
readableFormat = "YYYY";
|
|
614
|
+
break;
|
|
616
615
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
616
|
+
case "yearMonth":
|
|
617
|
+
mode = "month";
|
|
618
|
+
dataFormat = (_dataFormat2 = dataFormat) != null ? _dataFormat2 : "YYYYMM";
|
|
619
|
+
readableFormat = "YYYY.MM";
|
|
620
|
+
break;
|
|
622
621
|
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
622
|
+
case "yearMonthDay":
|
|
623
|
+
mode = "date";
|
|
624
|
+
dataFormat = (_dataFormat3 = dataFormat) != null ? _dataFormat3 : "YYYYMMDD";
|
|
625
|
+
readableFormat = "YYYY.MM.DD";
|
|
626
|
+
break;
|
|
626
627
|
|
|
627
|
-
|
|
628
|
-
|
|
628
|
+
case "datetime":
|
|
629
|
+
mode = undefined;
|
|
630
|
+
dataFormat = (_dataFormat4 = dataFormat) != null ? _dataFormat4 : "x";
|
|
631
|
+
readableFormat = "YYYY.MM.DD HH:mm";
|
|
632
|
+
showTime = true;
|
|
633
|
+
break;
|
|
629
634
|
|
|
630
|
-
|
|
635
|
+
case "date":
|
|
636
|
+
switch (schema.datePrecision) {
|
|
637
|
+
case "year":
|
|
638
|
+
mode = "year";
|
|
639
|
+
dataFormat = (_dataFormat5 = dataFormat) != null ? _dataFormat5 : "YYYY";
|
|
640
|
+
readableFormat = "YYYY";
|
|
641
|
+
break;
|
|
631
642
|
|
|
632
|
-
|
|
633
|
-
|
|
643
|
+
case "month":
|
|
644
|
+
mode = "month";
|
|
645
|
+
dataFormat = (_dataFormat6 = dataFormat) != null ? _dataFormat6 : "YYYYMM";
|
|
646
|
+
readableFormat = "YYYY.MM";
|
|
647
|
+
break;
|
|
634
648
|
|
|
635
|
-
|
|
649
|
+
case "minute":
|
|
650
|
+
mode = undefined;
|
|
651
|
+
dataFormat = (_dataFormat7 = dataFormat) != null ? _dataFormat7 : "x";
|
|
652
|
+
readableFormat = "YYYY.MM.DD HH:mm";
|
|
653
|
+
showTime = true;
|
|
654
|
+
break;
|
|
636
655
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
656
|
+
default:
|
|
657
|
+
// "day" 或未指定
|
|
658
|
+
mode = "date";
|
|
659
|
+
dataFormat = (_dataFormat8 = dataFormat) != null ? _dataFormat8 : "YYYYMMDD";
|
|
660
|
+
readableFormat = "YYYY.MM.DD";
|
|
661
|
+
break;
|
|
662
|
+
}
|
|
642
663
|
|
|
643
|
-
|
|
664
|
+
break;
|
|
665
|
+
// case "yearAndQuarter":
|
|
666
|
+
// case "yearAndWeek":
|
|
667
|
+
// return MUtil.error(`移动端不支持${this.props.schema.type}`, this.props.schema);
|
|
644
668
|
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
}
|
|
669
|
+
default:
|
|
670
|
+
return undefined;
|
|
648
671
|
}
|
|
649
672
|
|
|
650
|
-
return
|
|
673
|
+
return {
|
|
674
|
+
dataFormat: dataFormat,
|
|
675
|
+
readableFormat: readableFormat,
|
|
676
|
+
mode: mode,
|
|
677
|
+
showTime: showTime
|
|
678
|
+
};
|
|
651
679
|
},
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
* @param s 原始数据,参见moment
|
|
656
|
-
* @param srcFormat 原始数据的格式,默认x(时间戳)
|
|
657
|
-
* @param dstFormat 转换成的数据格式,默认YYYY年MM月DD日
|
|
658
|
-
* @param fallback 如果原始数据是nil,返回fallback
|
|
659
|
-
*/
|
|
660
|
-
momentFormat: function momentFormat(s, srcFormat, dstFormat, fallback) {
|
|
661
|
-
if (srcFormat === void 0) {
|
|
662
|
-
srcFormat = "x";
|
|
680
|
+
toReadable: function toReadable(assembly, schema, v) {
|
|
681
|
+
if (___default["default"].isNil(v)) {
|
|
682
|
+
return assembly.theme.READABLE_BLANK;
|
|
663
683
|
}
|
|
664
684
|
|
|
665
|
-
|
|
666
|
-
dstFormat = "YYYY年MM月DD日";
|
|
667
|
-
}
|
|
685
|
+
var c = MDateTimeType.antConf(schema);
|
|
668
686
|
|
|
669
|
-
if (
|
|
670
|
-
|
|
687
|
+
if (!c) {
|
|
688
|
+
return assembly.theme.READABLE_INVALID;
|
|
671
689
|
}
|
|
672
690
|
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
691
|
+
var asMoment = moment__default["default"](v, c.dataFormat);
|
|
692
|
+
return asMoment.format(c.readableFormat);
|
|
693
|
+
}
|
|
694
|
+
});
|
|
676
695
|
|
|
677
|
-
|
|
678
|
-
},
|
|
696
|
+
/** 根据 precision 获取可读格式 */
|
|
679
697
|
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
* @param template 如果有子结构,创建子结构的模板
|
|
685
|
-
*/
|
|
686
|
-
jsonSchema2MFieldSchema: function jsonSchema2MFieldSchema(e, base, template) {
|
|
687
|
-
if (base === void 0) {
|
|
688
|
-
base = {
|
|
689
|
-
name: "",
|
|
690
|
-
type: "string"
|
|
691
|
-
};
|
|
692
|
-
}
|
|
698
|
+
function getReadableFormat(precision, showTime) {
|
|
699
|
+
switch (precision) {
|
|
700
|
+
case "year":
|
|
701
|
+
return "YYYY";
|
|
693
702
|
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
}
|
|
703
|
+
case "month":
|
|
704
|
+
return "YYYY.MM";
|
|
697
705
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
if (e.enum) {
|
|
701
|
-
var _base$enumFields;
|
|
706
|
+
case "minute":
|
|
707
|
+
return "YYYY.MM.DD HH:mm";
|
|
702
708
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
};
|
|
708
|
-
});
|
|
709
|
-
} else {
|
|
710
|
-
base.type = "string";
|
|
711
|
-
base.max = e.maxLength;
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
break;
|
|
715
|
-
|
|
716
|
-
case "number":
|
|
717
|
-
case "integer":
|
|
718
|
-
base.type = "int";
|
|
719
|
-
break;
|
|
720
|
-
|
|
721
|
-
case "object":
|
|
722
|
-
base.type = "object";
|
|
723
|
-
base.objectFields = [];
|
|
724
|
-
base.uispec = {
|
|
725
|
-
type: "flowForm",
|
|
726
|
-
layout: MUtil.phoneLike() ? "vertical" : "horizontal",
|
|
727
|
-
comma: ":"
|
|
728
|
-
};
|
|
729
|
-
|
|
730
|
-
for (var key in e.properties) {
|
|
731
|
-
var jsmField = e.properties[key];
|
|
732
|
-
|
|
733
|
-
var m3Field = ___default["default"].assign({}, template, {
|
|
734
|
-
name: key,
|
|
735
|
-
label: key,
|
|
736
|
-
type: "object"
|
|
737
|
-
});
|
|
709
|
+
default:
|
|
710
|
+
return showTime ? "YYYY.MM.DD HH:mm:ss" : "YYYY.MM.DD";
|
|
711
|
+
}
|
|
712
|
+
}
|
|
738
713
|
|
|
739
|
-
|
|
740
|
-
|
|
714
|
+
function timeExpr(assembly, v, tillNow, readableFormat) {
|
|
715
|
+
if (tillNow) {
|
|
716
|
+
return "至今";
|
|
717
|
+
}
|
|
741
718
|
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
} else {
|
|
746
|
-
m3Field.type = "不支持的json schema:object.properties的value是boolean";
|
|
747
|
-
base.objectFields.push();
|
|
748
|
-
}
|
|
749
|
-
}
|
|
719
|
+
if (!v) {
|
|
720
|
+
return assembly.theme.READABLE_UNKNOWN;
|
|
721
|
+
}
|
|
750
722
|
|
|
751
|
-
|
|
723
|
+
return moment__default["default"](v, "x").format(readableFormat);
|
|
724
|
+
}
|
|
752
725
|
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
type: "array"
|
|
758
|
-
};
|
|
726
|
+
function timeRangeExpr(assembly, from, to, tillNow, readableFormat) {
|
|
727
|
+
if (readableFormat === void 0) {
|
|
728
|
+
readableFormat = "YYYY.MM.DD";
|
|
729
|
+
}
|
|
759
730
|
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
} else {
|
|
767
|
-
base.arrayMember.type = "不支持的json schema:array.items是undefined";
|
|
768
|
-
}
|
|
731
|
+
return timeExpr(assembly, from, false, readableFormat) + " - " + timeExpr(assembly, to, tillNow, readableFormat);
|
|
732
|
+
}
|
|
733
|
+
var MDateRangeType = ___default["default"].assign({}, EmtpyType, {
|
|
734
|
+
validators: [validateRequired$1],
|
|
735
|
+
toReadable: function toReadable(assembly, s, vs) {
|
|
736
|
+
var _s$dateRange;
|
|
769
737
|
|
|
770
|
-
|
|
738
|
+
if (___default["default"].isNil(vs)) {
|
|
739
|
+
return assembly.theme.READABLE_BLANK;
|
|
740
|
+
}
|
|
771
741
|
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
case "boolean":
|
|
775
|
-
default:
|
|
776
|
-
base.type = "不支持的json schema:array.items是" + e.type;
|
|
777
|
-
break;
|
|
742
|
+
if (!___default["default"].isArray(vs)) {
|
|
743
|
+
return assembly.theme.READABLE_INVALID;
|
|
778
744
|
}
|
|
779
745
|
|
|
780
|
-
|
|
746
|
+
var fmt = getReadableFormat(s.dateRangePrecision, (_s$dateRange = s.dateRange) == null ? void 0 : _s$dateRange.showTime);
|
|
747
|
+
return timeRangeExpr(assembly, vs[0], vs[1], vs[2], fmt);
|
|
781
748
|
},
|
|
782
749
|
|
|
783
750
|
/**
|
|
784
|
-
*
|
|
785
|
-
* @param object 要修改的对象,
|
|
786
|
-
* @param renameTo
|
|
787
|
-
* @param removeNotExistKey 是否在结果里面去除renameTo里不存在的key
|
|
788
|
-
* @returns 返回一个改过key名字的新对象
|
|
751
|
+
* 同toReadable,但数据无效时返回nil
|
|
789
752
|
*/
|
|
790
|
-
|
|
791
|
-
if (
|
|
792
|
-
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
var result = {};
|
|
753
|
+
toReadableN: function toReadableN(assembly, s, vs) {
|
|
754
|
+
if (!___default["default"].isNil(vs) && ___default["default"].isArray(vs)) {
|
|
755
|
+
var _s$dateRange2;
|
|
796
756
|
|
|
797
|
-
|
|
798
|
-
|
|
757
|
+
var fmt = getReadableFormat(s.dateRangePrecision, (_s$dateRange2 = s.dateRange) == null ? void 0 : _s$dateRange2.showTime);
|
|
758
|
+
return timeRangeExpr(assembly, vs[0], vs[1], vs[2], fmt);
|
|
759
|
+
}
|
|
799
760
|
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
} else {
|
|
804
|
-
newKey = oldKey;
|
|
805
|
-
}
|
|
806
|
-
}
|
|
761
|
+
return undefined;
|
|
762
|
+
}
|
|
763
|
+
});
|
|
807
764
|
|
|
808
|
-
|
|
809
|
-
}
|
|
765
|
+
function _createForOfIteratorHelperLoose$d(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$d(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
810
766
|
|
|
811
|
-
|
|
812
|
-
},
|
|
767
|
+
function _unsupportedIterableToArray$d(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$d(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$d(o, minLen); }
|
|
813
768
|
|
|
814
|
-
|
|
815
|
-
|
|
769
|
+
function _arrayLikeToArray$d(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
770
|
+
var next = Date.now() - 1617265950471; // /** 用来测量字符串长度 */
|
|
771
|
+
// let _messurer: HTMLCanvasElement|undefined;
|
|
816
772
|
|
|
773
|
+
var MUtil = {
|
|
817
774
|
/**
|
|
818
|
-
*
|
|
775
|
+
* 每次调用,返回不一样的数字
|
|
776
|
+
* @returns
|
|
819
777
|
*/
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
arr[_key2] = arguments[_key2];
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
return ___default["default"].compact(arr).join(".");
|
|
778
|
+
unique: function unique() {
|
|
779
|
+
return next++;
|
|
826
780
|
},
|
|
827
781
|
|
|
828
782
|
/**
|
|
829
|
-
*
|
|
830
|
-
* @
|
|
783
|
+
* 枚举字段可以写成空格分隔的字符串,也能写成MEnumField[],这个函数将两种形式转换成统一的MEnumField[]
|
|
784
|
+
* @deprecated 改成用MUtils.option
|
|
831
785
|
*/
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
786
|
+
standardFields: function standardFields(fs) {
|
|
787
|
+
if (typeof fs === "string") {
|
|
788
|
+
return fs.split(" ").map(function (aEnum) {
|
|
789
|
+
var _kv$;
|
|
790
|
+
|
|
791
|
+
var kv = aEnum.split("=");
|
|
792
|
+
return {
|
|
793
|
+
label: kv[0],
|
|
794
|
+
value: (_kv$ = kv[1]) != null ? _kv$ : kv[0]
|
|
795
|
+
};
|
|
796
|
+
});
|
|
797
|
+
} else if (fs) {
|
|
798
|
+
return fs;
|
|
799
|
+
} else {
|
|
800
|
+
return [];
|
|
801
|
+
}
|
|
836
802
|
},
|
|
837
803
|
|
|
838
804
|
/**
|
|
839
|
-
*
|
|
840
|
-
* @param
|
|
841
|
-
* @returns 空数组表示校验通过,否则返回校验错误信息
|
|
805
|
+
* 获取enumFields或者setFields,返回标准的MEnumField[]
|
|
806
|
+
* @param f 如果f是nil,返回[]
|
|
842
807
|
*/
|
|
843
|
-
|
|
844
|
-
var
|
|
845
|
-
|
|
846
|
-
var error = function error(msg) {
|
|
847
|
-
return result.push({
|
|
848
|
-
message: msg,
|
|
849
|
-
path: MUtil.jsonPath(parentPath, s.name)
|
|
850
|
-
});
|
|
851
|
-
};
|
|
808
|
+
option: function option(f) {
|
|
809
|
+
var _result;
|
|
852
810
|
|
|
853
|
-
var
|
|
854
|
-
if (___default["default"].uniq(a).length !== a.length) {
|
|
855
|
-
error(msgIfFail);
|
|
856
|
-
}
|
|
857
|
-
};
|
|
811
|
+
var result;
|
|
858
812
|
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
checkDup(fs.map(function (f) {
|
|
864
|
-
return f.label;
|
|
865
|
-
}).filter(function (l) {
|
|
866
|
-
return l;
|
|
867
|
-
}), s.name + "文案有重复");
|
|
868
|
-
};
|
|
813
|
+
if (___default["default"].isArray(f.option)) {
|
|
814
|
+
result = f.option;
|
|
815
|
+
} else {
|
|
816
|
+
var ori;
|
|
869
817
|
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
818
|
+
if (f.type == "set") {
|
|
819
|
+
ori = f.setFields;
|
|
820
|
+
} else if (f.type == "enum") {
|
|
821
|
+
ori = f.enumFields;
|
|
822
|
+
} else {
|
|
823
|
+
var _ref, _f$option;
|
|
874
824
|
|
|
875
|
-
|
|
876
|
-
error("暂不支持的选项数据类型:" + JSON.stringify(ns) + ": " + typeof ns);
|
|
825
|
+
ori = (_ref = (_f$option = f.option) != null ? _f$option : f.setFields) != null ? _ref : f.enumFields; // 只是为了保险
|
|
877
826
|
}
|
|
878
|
-
};
|
|
879
827
|
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
checkVL(MUtil.standardFields(s.enumFields));
|
|
884
|
-
} else if (s.type === "set") {
|
|
885
|
-
checkVL(MUtil.standardFields(s.setFields));
|
|
886
|
-
} else if (s.type === "matrix") {
|
|
887
|
-
stringOnlyEnum(s.matrix.x);
|
|
888
|
-
stringOnlyEnum(s.matrix.y);
|
|
889
|
-
} else if (s.type === "object") {
|
|
890
|
-
if (!s.objectFields) {
|
|
891
|
-
error("object类型未定义成员");
|
|
892
|
-
} else {
|
|
893
|
-
var _s$uispec;
|
|
828
|
+
if (typeof ori === "string") {
|
|
829
|
+
f.option = result = ori.split(" ").map(function (aEnum) {
|
|
830
|
+
var _kv$2;
|
|
894
831
|
|
|
895
|
-
|
|
896
|
-
return
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
832
|
+
var kv = aEnum.split("=");
|
|
833
|
+
return {
|
|
834
|
+
label: kv[0],
|
|
835
|
+
value: (_kv$2 = kv[1]) != null ? _kv$2 : kv[0]
|
|
836
|
+
};
|
|
837
|
+
});
|
|
838
|
+
} else {
|
|
839
|
+
f.option = result = ori; // TODO children 可能有递归的,还是得靠预处理解决
|
|
840
|
+
}
|
|
841
|
+
}
|
|
900
842
|
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
result = ___default["default"].concat(result, MUtil.validateSchema(f, MUtil.jsonPath(parentPath, s.name)));
|
|
904
|
-
}
|
|
843
|
+
return (_result = result) != null ? _result : [];
|
|
844
|
+
},
|
|
905
845
|
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
var fieldNotExist = ___default["default"].difference(fieldsInSegments, fields);
|
|
931
|
-
|
|
932
|
-
if (fieldNotExist.length > 0) {
|
|
933
|
-
error("分段字段名无效:" + notInSegment.join(","));
|
|
934
|
-
}
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
}
|
|
846
|
+
/** 如果出错了,返回这么个元素,可能用在BaseEditor子类或者其他的东西上 */
|
|
847
|
+
error: function error(msg, schema) {
|
|
848
|
+
return jsxRuntime.jsxs("div", {
|
|
849
|
+
style: {
|
|
850
|
+
color: "white",
|
|
851
|
+
border: "1px solid darkgrey",
|
|
852
|
+
background: "red",
|
|
853
|
+
textAlign: "center",
|
|
854
|
+
borderRadius: "5px"
|
|
855
|
+
},
|
|
856
|
+
children: [msg, schema ? jsxRuntime.jsx("pre", {
|
|
857
|
+
style: {
|
|
858
|
+
whiteSpace: "pre-wrap",
|
|
859
|
+
textAlign: "left"
|
|
860
|
+
},
|
|
861
|
+
children: JSON.stringify(schema)
|
|
862
|
+
}) : undefined]
|
|
863
|
+
}, Date.now());
|
|
864
|
+
},
|
|
865
|
+
sign: function sign(v) {
|
|
866
|
+
if (___default["default"].isNil(v)) {
|
|
867
|
+
return null;
|
|
938
868
|
}
|
|
939
869
|
|
|
940
|
-
return
|
|
870
|
+
return Math.sign(v);
|
|
941
871
|
},
|
|
942
872
|
|
|
943
873
|
/**
|
|
944
|
-
*
|
|
945
|
-
* 示例: var d = applyToConstructor(Date, [2008, 10, 8, 00, 16, 34, 254]);
|
|
946
|
-
* @param constructor
|
|
947
|
-
* @param argArray
|
|
874
|
+
* 当前设备是不是个手机(或者类似手机的设备,比如ipad上运行iphone app中的webview)
|
|
948
875
|
*/
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
return new factoryFunction();
|
|
876
|
+
phoneLike: function phoneLike() {
|
|
877
|
+
// eslint-disable-next-line no-restricted-globals
|
|
878
|
+
return screen.height / screen.width > 1.5;
|
|
953
879
|
},
|
|
880
|
+
// /**
|
|
881
|
+
// * 计算文字的宽度
|
|
882
|
+
// * @param text 文字
|
|
883
|
+
// * @param font 字体
|
|
884
|
+
// * @returns 宽度,单位是px
|
|
885
|
+
// */
|
|
886
|
+
// getTextWidth(text:string, font?:string) {
|
|
887
|
+
// var canvas = _messurer ?? (_messurer = document.createElement("canvas"));
|
|
888
|
+
// var context = canvas.getContext("2d");
|
|
889
|
+
// if(!context) {
|
|
890
|
+
// console.error('神奇的事情发生了:canvas.getContext("2d")居然能返回null');
|
|
891
|
+
// return text.length * 10; // 总比出不来好
|
|
892
|
+
// }
|
|
893
|
+
// if(font){
|
|
894
|
+
// context.font = font;
|
|
895
|
+
// }
|
|
896
|
+
// var metrics = context.measureText(text);
|
|
897
|
+
// return metrics.width;
|
|
898
|
+
// }
|
|
954
899
|
|
|
955
900
|
/**
|
|
956
|
-
*
|
|
957
|
-
* @param
|
|
958
|
-
* @param paramName 参数名字
|
|
959
|
-
* @param paramValue 参数值
|
|
960
|
-
* @param fallback 如果exprOrFunction无效,返回fallback
|
|
961
|
-
* @param _this this指针
|
|
901
|
+
* 计算文字的宽度
|
|
902
|
+
* @param text
|
|
962
903
|
*/
|
|
963
|
-
|
|
964
|
-
if (
|
|
965
|
-
|
|
904
|
+
antdTextWidth: function antdTextWidth(text) {
|
|
905
|
+
if (!text) {
|
|
906
|
+
return 0;
|
|
966
907
|
}
|
|
967
908
|
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
}
|
|
909
|
+
return text.length * 16;
|
|
910
|
+
},
|
|
971
911
|
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
912
|
+
/**
|
|
913
|
+
* 从数组中删掉一个元素
|
|
914
|
+
* @param a 这个数组会被改变的
|
|
915
|
+
* @param element 要删的元素
|
|
916
|
+
* @returns 修改后的数组(如果它不是nil)
|
|
917
|
+
*/
|
|
918
|
+
arrayRemove: function arrayRemove(a, element) {
|
|
919
|
+
if (a) {
|
|
920
|
+
var idx = a.indexOf(element);
|
|
921
|
+
|
|
922
|
+
if (idx >= 0) {
|
|
923
|
+
a.splice(idx, 1);
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
return a;
|
|
978
927
|
} else {
|
|
979
|
-
return
|
|
928
|
+
return a;
|
|
980
929
|
}
|
|
981
930
|
},
|
|
931
|
+
fieldOfLayout: function fieldOfLayout(fields, spec) {
|
|
932
|
+
var objectFieldMap = ___default["default"].chain(fields).keyBy("name").value();
|
|
982
933
|
|
|
983
|
-
|
|
984
|
-
* 读取url参数,转换成map
|
|
985
|
-
* @param hashPrefix nil表示不读取hash里的参数,字符串表示读取hash里的参数,并加上这个前缀返回。默认是返回,但前缀是空字符串
|
|
986
|
-
*/
|
|
987
|
-
getQuery: function getQuery(hashPrefix) {
|
|
934
|
+
var r = {};
|
|
988
935
|
|
|
989
|
-
var
|
|
990
|
-
|
|
991
|
-
arrs.forEach(function (item) {
|
|
992
|
-
var kv = item.split(/=/);
|
|
936
|
+
for (var _iterator = _createForOfIteratorHelperLoose$d((_spec$segments = spec.segments) != null ? _spec$segments : []), _step; !(_step = _iterator()).done;) {
|
|
937
|
+
var _spec$segments;
|
|
993
938
|
|
|
994
|
-
|
|
995
|
-
|
|
939
|
+
var s = _step.value;
|
|
940
|
+
|
|
941
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose$d((_s$fields = s.fields) != null ? _s$fields : []), _step2; !(_step2 = _iterator2()).done;) {
|
|
942
|
+
var _s$fields;
|
|
943
|
+
|
|
944
|
+
var f = _step2.value;
|
|
945
|
+
|
|
946
|
+
if (___default["default"].isString(f)) {
|
|
947
|
+
var def = objectFieldMap[f];
|
|
948
|
+
|
|
949
|
+
if (def) {
|
|
950
|
+
r[f] = def;
|
|
951
|
+
}
|
|
952
|
+
}
|
|
996
953
|
}
|
|
997
|
-
}
|
|
998
|
-
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
return ___default["default"].values(r);
|
|
999
957
|
},
|
|
1000
958
|
|
|
1001
959
|
/**
|
|
1002
|
-
*
|
|
1003
|
-
*
|
|
1004
|
-
*
|
|
960
|
+
* 跟lodash的get一样,除了:
|
|
961
|
+
* 1. path是nil时返回undefined
|
|
962
|
+
* 2. path是""时返回原始对象
|
|
963
|
+
* @param a
|
|
964
|
+
* @param path
|
|
1005
965
|
*/
|
|
1006
|
-
|
|
1007
|
-
|
|
966
|
+
get: function get(a, path) {
|
|
967
|
+
if (___default["default"].isNil(a) || ___default["default"].isNil(path)) {
|
|
968
|
+
return undefined;
|
|
969
|
+
} else if (path === "") {
|
|
970
|
+
return a;
|
|
971
|
+
}
|
|
1008
972
|
|
|
1009
|
-
|
|
1010
|
-
s.id = id;
|
|
1011
|
-
s.type = "text/css";
|
|
1012
|
-
s.innerHTML = css;
|
|
1013
|
-
document.getElementsByTagName("head")[0].appendChild(s);
|
|
973
|
+
return ___default["default"].get(a, path);
|
|
1014
974
|
},
|
|
1015
975
|
|
|
1016
976
|
/**
|
|
1017
|
-
*
|
|
1018
|
-
*
|
|
1019
|
-
*
|
|
977
|
+
* a : database
|
|
978
|
+
* v : newValue
|
|
979
|
+
* 跟lodash的set一样,除了path是""时等效于_.assign(a, v)
|
|
1020
980
|
*/
|
|
1021
|
-
|
|
1022
|
-
if (
|
|
1023
|
-
|
|
981
|
+
set: function set(a, path, v) {
|
|
982
|
+
if (path === "") {
|
|
983
|
+
// 如果 database 是数组,需要特殊处理
|
|
984
|
+
if (___default["default"].isArray(a)) a.length = v.length;
|
|
985
|
+
|
|
986
|
+
___default["default"].assign(a, v);
|
|
987
|
+
} else {
|
|
988
|
+
___default["default"].set(a, path, v);
|
|
989
|
+
}
|
|
990
|
+
},
|
|
991
|
+
debug: function debug(d) {
|
|
992
|
+
for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
993
|
+
optionalParams[_key - 1] = arguments[_key];
|
|
1024
994
|
}
|
|
1025
995
|
|
|
1026
|
-
|
|
996
|
+
console.log(d, optionalParams);
|
|
1027
997
|
},
|
|
1028
998
|
|
|
1029
999
|
/**
|
|
1030
|
-
*
|
|
1031
|
-
* @param
|
|
1032
|
-
* @param
|
|
1033
|
-
* @param
|
|
1000
|
+
* 填入默认值
|
|
1001
|
+
* @param schema 你懂得
|
|
1002
|
+
* @param database 数据库,会被修改的
|
|
1003
|
+
* @param path 路径
|
|
1034
1004
|
*/
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
}
|
|
1041
|
-
}
|
|
1042
|
-
};
|
|
1043
|
-
var CompactArray = {
|
|
1044
|
-
indexOf: function indexOf(ca, d) {
|
|
1045
|
-
if (___default["default"].isNil(d) || ___default["default"].isNil(ca)) {
|
|
1046
|
-
return -1;
|
|
1047
|
-
}
|
|
1005
|
+
applyDefaultValue: function applyDefaultValue(schema, database, path) {
|
|
1006
|
+
// FIXME 多测试下,type是object或其他简单类型的情况
|
|
1007
|
+
if (schema.type === "object") {
|
|
1008
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose$d((_schema$objectFields = schema.objectFields) != null ? _schema$objectFields : []), _step3; !(_step3 = _iterator3()).done;) {
|
|
1009
|
+
var _schema$objectFields;
|
|
1048
1010
|
|
|
1049
|
-
|
|
1050
|
-
|
|
1011
|
+
var f = _step3.value;
|
|
1012
|
+
this.applyDefaultValue(f, database, (path ? path + "." : "") + f.name);
|
|
1013
|
+
}
|
|
1051
1014
|
} else {
|
|
1052
|
-
|
|
1015
|
+
if (!___default["default"].isNil(schema.defaultValue) && ___default["default"].isNil(___default["default"].get(database, path))) {
|
|
1016
|
+
___default["default"].set(database, path, schema.defaultValue);
|
|
1017
|
+
}
|
|
1053
1018
|
}
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1019
|
+
},
|
|
1020
|
+
filterHide: function filterHide(schema, database) {
|
|
1021
|
+
var _schema$objectFields2;
|
|
1056
1022
|
|
|
1057
|
-
|
|
1023
|
+
// TODO 要改成递归的
|
|
1024
|
+
var hm = MUtil.hideMap(database, (_schema$objectFields2 = schema.objectFields) != null ? _schema$objectFields2 : [], schema.uispec);
|
|
1025
|
+
var finalData = ___default["default"].isArray(database) ? [] : {};
|
|
1058
1026
|
|
|
1059
|
-
|
|
1027
|
+
for (var k in database) {
|
|
1028
|
+
if (!hm[k]) {
|
|
1029
|
+
finalData[k] = database[k];
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1060
1032
|
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
READABLE_UNKNOWN: "?",
|
|
1064
|
-
READABLE_BLANK: "-",
|
|
1065
|
-
READABLE_INVALID: "❓",
|
|
1066
|
-
READABLE_ERROR: "❗",
|
|
1067
|
-
themeName: "antMiddle"
|
|
1068
|
-
};
|
|
1069
|
-
/**
|
|
1070
|
-
* 注册viewer,type,morph(viewer和type之间的关联)
|
|
1071
|
-
*/
|
|
1033
|
+
return finalData;
|
|
1034
|
+
},
|
|
1072
1035
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1036
|
+
/**
|
|
1037
|
+
* 计算哪些field、segment需要隐藏
|
|
1038
|
+
* 支持ShowIfFunc里的函数
|
|
1039
|
+
* TODO 如果segment隐藏,里面的字段全都要隐藏
|
|
1040
|
+
* @returns 示例:
|
|
1041
|
+
* let {name,role,gender,alias,birthday,company,position,tel,email,citizenship,politicsCode,companyArch,address,work,edu,assistant,student,mib} = data;
|
|
1042
|
+
* return {politicsCode: !(citizenship=='中国大陆'),"segment:学员信息": !(_.intersection(role, ['校友']).length > 0))}
|
|
1043
|
+
* @param objectFields
|
|
1044
|
+
* @param uispec 用来计算segment是不是要展示,不填就不计算
|
|
1045
|
+
*/
|
|
1046
|
+
hideMap: function hideMap(database, objectFields, uispec) {
|
|
1047
|
+
// 构造字段依赖计算的脚本,类似这样:
|
|
1048
|
+
// let {name,role,gender,alias,tel,email,citizenship,student} = {"name":"aaa","alias":"bbb","tel":"1"};citizenship=='中国大陆'
|
|
1049
|
+
var l1fields = ___default["default"].uniq( // 名字要唯一
|
|
1050
|
+
objectFields.filter(function (e) {
|
|
1051
|
+
return !!e.name;
|
|
1052
|
+
}) // 过滤掉没有名字的字段
|
|
1053
|
+
.map(function (e) {
|
|
1054
|
+
return ___default["default"].first(e.name.split("."));
|
|
1055
|
+
}) // 对于objectFields里类似student.no/student.state的字段,这里只要拼一个student就可以了
|
|
1056
|
+
);
|
|
1075
1057
|
|
|
1076
|
-
|
|
1077
|
-
_proto.getViewerOf = function getViewerOf(f, morph) {
|
|
1078
|
-
if (f.editor && morph === "editor") {
|
|
1079
|
-
if (___default["default"].isString(f.editor)) {
|
|
1080
|
-
return ___default["default"].get(this.viewers, f.editor);
|
|
1081
|
-
} else {
|
|
1082
|
-
return f.editor;
|
|
1083
|
-
}
|
|
1084
|
-
} else if (f.readable && morph === "readable") {
|
|
1085
|
-
if (___default["default"].isString(f.readable)) {
|
|
1086
|
-
return ___default["default"].get(this.viewers, f.readable);
|
|
1087
|
-
} else {
|
|
1088
|
-
return f.readable;
|
|
1089
|
-
}
|
|
1090
|
-
} else {
|
|
1091
|
-
var viewer = ___default["default"].get(this.morph, morph + "." + f.type);
|
|
1058
|
+
var showIfScript = "let {" + l1fields.join(",") + "} = data || {};\nlet hide = {";
|
|
1092
1059
|
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
} else {
|
|
1096
|
-
return viewer;
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
};
|
|
1060
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose$d(objectFields), _step4; !(_step4 = _iterator4()).done;) {
|
|
1061
|
+
var f = _step4.value;
|
|
1100
1062
|
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1063
|
+
if (f.showIf) {
|
|
1064
|
+
showIfScript += "'" + f.name + "': !(" + f.showIf + "),";
|
|
1065
|
+
}
|
|
1104
1066
|
}
|
|
1105
1067
|
|
|
1106
|
-
var
|
|
1068
|
+
for (var _iterator5 = _createForOfIteratorHelperLoose$d((_uispec$segments = uispec == null ? void 0 : uispec.segments) != null ? _uispec$segments : []), _step5; !(_step5 = _iterator5()).done;) {
|
|
1069
|
+
var _uispec$segments;
|
|
1107
1070
|
|
|
1108
|
-
|
|
1109
|
-
var validator = _step.value;
|
|
1110
|
-
result = validator(this, s, v, path);
|
|
1071
|
+
var s = _step5.value;
|
|
1111
1072
|
|
|
1112
|
-
if (
|
|
1113
|
-
|
|
1114
|
-
} else if (typeof result === "object") {
|
|
1115
|
-
MUtil.debug("校验", path, result.message);
|
|
1116
|
-
return result;
|
|
1073
|
+
if (s.showIf) {
|
|
1074
|
+
showIfScript += "\"segment:" + s.label + "\": !(" + s.showIf + "),";
|
|
1117
1075
|
}
|
|
1118
1076
|
}
|
|
1119
1077
|
|
|
1120
|
-
|
|
1121
|
-
};
|
|
1078
|
+
showIfScript += "}\n"; // 如果一个segment里的所有字段都隐藏,segment就要隐藏
|
|
1122
1079
|
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
console.error("addViewer: \u5DF2\u7ECF\u5B58\u5728\u540D\u4E3A " + name + " \u7684 Viewer\uFF0C\u65E0\u6CD5\u518D\u6B21\u6DFB\u52A0\uFF01");
|
|
1126
|
-
return;
|
|
1127
|
-
} else {
|
|
1128
|
-
this.viewers[name] = v;
|
|
1129
|
-
}
|
|
1130
|
-
};
|
|
1080
|
+
for (var _iterator6 = _createForOfIteratorHelperLoose$d((_uispec$segments2 = uispec == null ? void 0 : uispec.segments) != null ? _uispec$segments2 : []), _step6; !(_step6 = _iterator6()).done;) {
|
|
1081
|
+
var _uispec$segments2;
|
|
1131
1082
|
|
|
1132
|
-
|
|
1133
|
-
if (this.editors[name]) {
|
|
1134
|
-
console.error("addEditor: \u5DF2\u7ECF\u5B58\u5728\u540D\u4E3A " + name + " \u7684 Editor\uFF0C\u65E0\u6CD5\u518D\u6B21\u6DFB\u52A0\uFF01");
|
|
1135
|
-
return;
|
|
1136
|
-
} else {
|
|
1137
|
-
this.editors[name] = v;
|
|
1138
|
-
}
|
|
1139
|
-
}
|
|
1140
|
-
/**
|
|
1141
|
-
* 增加一种数据类型
|
|
1142
|
-
* 例:
|
|
1143
|
-
* const hpOrg = {name: "hpOrg", type: {validators: ..., toReadable: ...}, editor: HPOrgEditor, readable: "DivViewer"}
|
|
1144
|
-
* addType(hpOrg)
|
|
1145
|
-
* @param typeParam 类型的描述对象
|
|
1146
|
-
*/
|
|
1147
|
-
;
|
|
1083
|
+
var _s = _step6.value;
|
|
1148
1084
|
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
editor = typeParam.editor,
|
|
1153
|
-
_typeParam$readable = typeParam.readable,
|
|
1154
|
-
readable = _typeParam$readable === void 0 ? "DivViewer" : _typeParam$readable;
|
|
1155
|
-
this.types[name] = type;
|
|
1085
|
+
var cond = _s.fields.map(function (f) {
|
|
1086
|
+
return "(hide['" + f + "'])";
|
|
1087
|
+
}).join(" && ");
|
|
1156
1088
|
|
|
1157
|
-
|
|
1089
|
+
showIfScript += "if(" + cond + ") { hide[\"segment:" + _s.label + "\"] = true }\n";
|
|
1090
|
+
}
|
|
1158
1091
|
|
|
1159
|
-
|
|
1160
|
-
};
|
|
1092
|
+
showIfScript += "return hide;\n"; // eslint-disable-next-line no-new-func
|
|
1161
1093
|
|
|
1162
|
-
|
|
1163
|
-
|
|
1094
|
+
try {
|
|
1095
|
+
var fn = Object.keys(SchemaFunc);
|
|
1096
|
+
var fv = Object.values(SchemaFunc);
|
|
1164
1097
|
|
|
1165
|
-
|
|
1166
|
-
this.viewers = {};
|
|
1167
|
-
this.editors = {};
|
|
1168
|
-
this.morph = {};
|
|
1169
|
-
this.theme = defaultTheme;
|
|
1098
|
+
var hideMap = _construct__default["default"](Function, ["_", "data"].concat(fn, [showIfScript])).apply(void 0, [___default["default"], database].concat(fv));
|
|
1170
1099
|
|
|
1171
|
-
|
|
1172
|
-
|
|
1100
|
+
return hideMap;
|
|
1101
|
+
} catch (e) {
|
|
1102
|
+
console.error("Calc hideMap failed: " + e.message, "function(_,data){" + showIfScript + "}", database);
|
|
1103
|
+
return {};
|
|
1104
|
+
}
|
|
1105
|
+
},
|
|
1173
1106
|
|
|
1174
|
-
|
|
1175
|
-
|
|
1107
|
+
/**
|
|
1108
|
+
* 计算 showIf 的值
|
|
1109
|
+
* @returns Boolean
|
|
1110
|
+
* @param database
|
|
1111
|
+
* @param objectFields
|
|
1112
|
+
*/
|
|
1113
|
+
isShow: function isShow(database, objectFields, showIfExpr) {
|
|
1114
|
+
if (!showIfExpr) return true;
|
|
1176
1115
|
|
|
1177
|
-
|
|
1116
|
+
var l1fields = ___default["default"].uniq(objectFields.filter(function (e) {
|
|
1117
|
+
return !!e.name;
|
|
1118
|
+
}).map(function (e) {
|
|
1119
|
+
return ___default["default"].first(e.name.split("."));
|
|
1120
|
+
}));
|
|
1178
1121
|
|
|
1179
|
-
|
|
1180
|
-
// eslint-disable-next-line no-new-func
|
|
1181
|
-
r = new Function("_", "value", "theme", "const {READABLE_UNKNOWN, READABLE_BLANK, READABLE_INVALID, READABLE_ERROR} = theme; return " + s.toReadable)(___default["default"], v, _this.theme);
|
|
1182
|
-
} else if (___default["default"].isFunction(s.toReadable)) {
|
|
1183
|
-
r = s.toReadable(v, parent, _this);
|
|
1184
|
-
}
|
|
1122
|
+
var showIfScript = "let {" + l1fields.join(",") + "} = data || {};\n return " + showIfExpr;
|
|
1185
1123
|
|
|
1186
|
-
|
|
1124
|
+
try {
|
|
1125
|
+
var fn = Object.keys(SchemaFunc);
|
|
1126
|
+
var fv = Object.values(SchemaFunc);
|
|
1187
1127
|
|
|
1188
|
-
|
|
1189
|
-
r += s.postfix;
|
|
1190
|
-
}
|
|
1128
|
+
var res = _construct__default["default"](Function, ["_", "data"].concat(fn, [showIfScript])).apply(void 0, [___default["default"], database].concat(fv));
|
|
1191
1129
|
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
}
|
|
1130
|
+
return res;
|
|
1131
|
+
} catch (e) {
|
|
1132
|
+
console.error("Calc isShow failed: " + e.message, "function(_,data){" + showIfScript + "}", database);
|
|
1133
|
+
return true;
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
scoreOf: function scoreOf(f, database) {
|
|
1137
|
+
var v = ___default["default"].get(database, f.name);
|
|
1197
1138
|
|
|
1139
|
+
if (f.type == "enum") {
|
|
1140
|
+
var _MUtil$standardFields, _MUtil$standardFields2;
|
|
1198
1141
|
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1142
|
+
return ___default["default"].toNumber((_MUtil$standardFields = MUtil.standardFields(f.enumFields)) == null ? void 0 : (_MUtil$standardFields2 = _MUtil$standardFields.find(function (e) {
|
|
1143
|
+
return e.value == v;
|
|
1144
|
+
})) == null ? void 0 : _MUtil$standardFields2.score);
|
|
1145
|
+
} else if (f.type == "set") {
|
|
1146
|
+
var score = 0;
|
|
1147
|
+
var opts = MUtil.standardFields(f.setFields);
|
|
1204
1148
|
|
|
1205
|
-
|
|
1149
|
+
for (var _iterator7 = _createForOfIteratorHelperLoose$d(opts), _step7; !(_step7 = _iterator7()).done;) {
|
|
1150
|
+
var s = _step7.value;
|
|
1206
1151
|
|
|
1207
|
-
if (
|
|
1208
|
-
|
|
1152
|
+
if (___default["default"].find(opts, {
|
|
1153
|
+
value: v
|
|
1154
|
+
})) {
|
|
1155
|
+
score += ___default["default"].toNumber(s.score);
|
|
1209
1156
|
}
|
|
1210
1157
|
}
|
|
1158
|
+
|
|
1159
|
+
return score;
|
|
1160
|
+
} else {
|
|
1161
|
+
return 0;
|
|
1211
1162
|
}
|
|
1212
|
-
}
|
|
1163
|
+
},
|
|
1213
1164
|
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1165
|
+
/**
|
|
1166
|
+
* 查找fs依赖(通过showIf)的所有字段
|
|
1167
|
+
* @param fs
|
|
1168
|
+
* @param all
|
|
1169
|
+
* @returns fs依赖的所有字段,包含fs。这个数组中下标小的元素,依赖下标大的元素
|
|
1170
|
+
*/
|
|
1171
|
+
dependency: function dependency(fs, all) {
|
|
1172
|
+
// 先建个索引
|
|
1173
|
+
var allFieldsIdx = ___default["default"].keyBy(all, "name"); // 构造未被依赖的集合
|
|
1217
1174
|
|
|
1218
|
-
var MContext = /*#__PURE__*/React__default["default"].createContext(undefined);
|
|
1219
1175
|
|
|
1220
|
-
|
|
1176
|
+
var ndep = ___default["default"].keyBy(all, "name"); // 全体
|
|
1221
1177
|
|
|
1222
|
-
function _objectSpread$x(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$x(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$x(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1223
|
-
/**
|
|
1224
|
-
* 一个字段的视图
|
|
1225
|
-
*/
|
|
1226
1178
|
|
|
1227
|
-
|
|
1228
|
-
|
|
1179
|
+
ndep = ___default["default"].omit(ndep, fs.map(function (f) {
|
|
1180
|
+
return f.name;
|
|
1181
|
+
})); // 去掉fs
|
|
1182
|
+
// 构造被依赖的集合
|
|
1229
1183
|
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1184
|
+
var dep = new Map();
|
|
1185
|
+
fs.forEach(function (f) {
|
|
1186
|
+
return dep[f.name] = f;
|
|
1187
|
+
}); // 循环从ndep里把被依赖的字段放到dep中,直到dep不再增加
|
|
1188
|
+
// 算法有点粗暴,将就用吧
|
|
1233
1189
|
|
|
1234
|
-
|
|
1190
|
+
for (var i = 0; i < all.length; i++) {
|
|
1191
|
+
// 轮数最多all.length,防止卡死
|
|
1192
|
+
var newDepNames = [];
|
|
1235
1193
|
|
|
1236
|
-
|
|
1237
|
-
|
|
1194
|
+
for (var dn in dep) {
|
|
1195
|
+
var _dep$dn$showIf;
|
|
1238
1196
|
|
|
1239
|
-
|
|
1197
|
+
var _i = ___default["default"].intersection((_dep$dn$showIf = dep[dn].showIf) == null ? void 0 : _dep$dn$showIf.split(/[^a-zA-Z0-9_$]/), Object.keys(ndep));
|
|
1240
1198
|
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
}
|
|
1199
|
+
newDepNames = newDepNames.concat(_i);
|
|
1200
|
+
}
|
|
1244
1201
|
|
|
1245
|
-
|
|
1246
|
-
afterChange: function afterChange() {},
|
|
1247
|
-
changeSchema: function changeSchema() {},
|
|
1248
|
-
changeDatabase: function changeDatabase() {},
|
|
1249
|
-
name: this.props.path
|
|
1250
|
-
}, this.props);
|
|
1202
|
+
var prevSize = Object.keys(dep).length;
|
|
1251
1203
|
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
return ctx.rootProps.wrapper(ele, _this.props.schema);
|
|
1257
|
-
} else {
|
|
1258
|
-
return ele;
|
|
1259
|
-
}
|
|
1204
|
+
for (var _iterator8 = _createForOfIteratorHelperLoose$d(newDepNames), _step8; !(_step8 = _iterator8()).done;) {
|
|
1205
|
+
var n = _step8.value;
|
|
1206
|
+
dep[n] = allFieldsIdx[n];
|
|
1207
|
+
delete ndep[n];
|
|
1260
1208
|
}
|
|
1261
|
-
});
|
|
1262
|
-
};
|
|
1263
1209
|
|
|
1264
|
-
|
|
1265
|
-
}(React__default["default"].Component);
|
|
1210
|
+
var afterSize = Object.keys(dep).length;
|
|
1266
1211
|
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
* @param schema
|
|
1272
|
-
* @param value
|
|
1273
|
-
* @param path
|
|
1274
|
-
* @returns
|
|
1275
|
-
*/
|
|
1212
|
+
if (prevSize == afterSize) {
|
|
1213
|
+
break; // 如果找不到更多依赖,就可以结束了
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1276
1216
|
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
if (___default["default"].isNil(value) || value === "" || ___default["default"].isNaN(value) || ___default["default"].isArray(value) && value.length == 0) {
|
|
1280
|
-
return {
|
|
1281
|
-
message: "您还没有填完这一项",
|
|
1282
|
-
path: path
|
|
1283
|
-
};
|
|
1284
|
-
} // 凡是总有例外
|
|
1217
|
+
return Object.values(dep);
|
|
1218
|
+
},
|
|
1285
1219
|
|
|
1220
|
+
/**
|
|
1221
|
+
* 用moment格式化
|
|
1222
|
+
* @param s 原始数据,参见moment
|
|
1223
|
+
* @param srcFormat 原始数据的格式,默认x(时间戳)
|
|
1224
|
+
* @param dstFormat 转换成的数据格式,默认YYYY年MM月DD日
|
|
1225
|
+
* @param fallback 如果原始数据是nil,返回fallback
|
|
1226
|
+
*/
|
|
1227
|
+
momentFormat: function momentFormat(s, srcFormat, dstFormat, fallback) {
|
|
1228
|
+
if (srcFormat === void 0) {
|
|
1229
|
+
srcFormat = "x";
|
|
1230
|
+
}
|
|
1286
1231
|
|
|
1287
|
-
if (
|
|
1288
|
-
|
|
1289
|
-
return {
|
|
1290
|
-
message: "您还没有填完这一项",
|
|
1291
|
-
path: path
|
|
1292
|
-
}; // 开放set,只勾了开放选项,没有填内容,也要算空
|
|
1293
|
-
}
|
|
1232
|
+
if (dstFormat === void 0) {
|
|
1233
|
+
dstFormat = "YYYY年MM月DD日";
|
|
1294
1234
|
}
|
|
1295
|
-
|
|
1296
|
-
if (
|
|
1297
|
-
|
|
1235
|
+
|
|
1236
|
+
if (fallback === void 0) {
|
|
1237
|
+
fallback = "不详";
|
|
1298
1238
|
}
|
|
1299
|
-
}
|
|
1300
1239
|
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1240
|
+
if (___default["default"].isNil(s)) {
|
|
1241
|
+
return fallback;
|
|
1242
|
+
}
|
|
1304
1243
|
|
|
1305
|
-
|
|
1306
|
-
|
|
1244
|
+
return moment__default["default"](s, srcFormat).format(dstFormat);
|
|
1245
|
+
},
|
|
1307
1246
|
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1247
|
+
/**
|
|
1248
|
+
* 将标准的json schema转换成m3的schema
|
|
1249
|
+
* @param e json schema
|
|
1250
|
+
* @param base 如果填了一个对象,转换出的属性会放在这个对象上
|
|
1251
|
+
* @param template 如果有子结构,创建子结构的模板
|
|
1252
|
+
*/
|
|
1253
|
+
jsonSchema2MFieldSchema: function jsonSchema2MFieldSchema(e, base, template) {
|
|
1254
|
+
if (base === void 0) {
|
|
1255
|
+
base = {
|
|
1256
|
+
name: "",
|
|
1257
|
+
type: "string"
|
|
1318
1258
|
};
|
|
1319
1259
|
}
|
|
1320
|
-
}
|
|
1321
1260
|
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
return {
|
|
1325
|
-
message: "\u8BF7\u9009\u62E9" + schema.min + "\u4E4B\u524D\u7684\u65F6\u95F4",
|
|
1326
|
-
path: path
|
|
1327
|
-
};
|
|
1261
|
+
if (template === void 0) {
|
|
1262
|
+
template = {};
|
|
1328
1263
|
}
|
|
1329
|
-
}
|
|
1330
1264
|
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
* @param schema
|
|
1336
|
-
* @param value 应该是个数组
|
|
1337
|
-
*/
|
|
1265
|
+
switch (e.type) {
|
|
1266
|
+
case "string":
|
|
1267
|
+
if (e.enum) {
|
|
1268
|
+
var _base$enumFields;
|
|
1338
1269
|
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1270
|
+
base.type = "enum";
|
|
1271
|
+
base.enumFields = (_base$enumFields = base.enumFields) != null ? _base$enumFields : e.enum.map(function (v) {
|
|
1272
|
+
return {
|
|
1273
|
+
value: (v != null ? v : "").toString()
|
|
1274
|
+
};
|
|
1275
|
+
});
|
|
1276
|
+
} else {
|
|
1277
|
+
base.type = "string";
|
|
1278
|
+
base.max = e.maxLength;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
break;
|
|
1282
|
+
|
|
1283
|
+
case "number":
|
|
1284
|
+
case "integer":
|
|
1285
|
+
base.type = "int";
|
|
1286
|
+
break;
|
|
1287
|
+
|
|
1288
|
+
case "object":
|
|
1289
|
+
base.type = "object";
|
|
1290
|
+
base.objectFields = [];
|
|
1291
|
+
base.uispec = {
|
|
1292
|
+
type: "flowForm",
|
|
1293
|
+
layout: MUtil.phoneLike() ? "vertical" : "horizontal",
|
|
1294
|
+
comma: ":"
|
|
1295
|
+
};
|
|
1296
|
+
|
|
1297
|
+
for (var key in e.properties) {
|
|
1298
|
+
var jsmField = e.properties[key];
|
|
1299
|
+
|
|
1300
|
+
var m3Field = ___default["default"].assign({}, template, {
|
|
1301
|
+
name: key,
|
|
1302
|
+
label: key,
|
|
1303
|
+
type: "object"
|
|
1304
|
+
});
|
|
1305
|
+
|
|
1306
|
+
if (!___default["default"].isBoolean(jsmField)) {
|
|
1307
|
+
var _jsmField$title;
|
|
1308
|
+
|
|
1309
|
+
m3Field.label = (_jsmField$title = jsmField.title) != null ? _jsmField$title : key;
|
|
1310
|
+
this.jsonSchema2MFieldSchema(jsmField, m3Field, template);
|
|
1311
|
+
base.objectFields.push(m3Field);
|
|
1312
|
+
} else {
|
|
1313
|
+
m3Field.type = "不支持的json schema:object.properties的value是boolean";
|
|
1314
|
+
base.objectFields.push();
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
break;
|
|
1319
|
+
|
|
1320
|
+
case "array":
|
|
1321
|
+
base.type = "array";
|
|
1322
|
+
base.arrayMember = {
|
|
1323
|
+
label: "",
|
|
1324
|
+
type: "array"
|
|
1325
|
+
};
|
|
1326
|
+
|
|
1327
|
+
if (___default["default"].isArray(e.items)) {
|
|
1328
|
+
base.arrayMember.type = "不支持的json schema:array.items是数组";
|
|
1329
|
+
} else if (___default["default"].isBoolean(e.items)) {
|
|
1330
|
+
base.arrayMember.type = "不支持的json schema:array.items是boolean";
|
|
1331
|
+
} else if (e.items) {
|
|
1332
|
+
this.jsonSchema2MFieldSchema(e.items, base, template);
|
|
1333
|
+
} else {
|
|
1334
|
+
base.arrayMember.type = "不支持的json schema:array.items是undefined";
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
break;
|
|
1338
|
+
|
|
1339
|
+
case "null":
|
|
1340
|
+
case "any":
|
|
1341
|
+
case "boolean":
|
|
1342
|
+
default:
|
|
1343
|
+
base.type = "不支持的json schema:array.items是" + e.type;
|
|
1344
|
+
break;
|
|
1346
1345
|
}
|
|
1347
|
-
}
|
|
1348
1346
|
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1347
|
+
return base;
|
|
1348
|
+
},
|
|
1349
|
+
|
|
1350
|
+
/**
|
|
1351
|
+
* 修改一个对象里的key
|
|
1352
|
+
* @param object 要修改的对象,
|
|
1353
|
+
* @param renameTo
|
|
1354
|
+
* @param removeNotExistKey 是否在结果里面去除renameTo里不存在的key
|
|
1355
|
+
* @returns 返回一个改过key名字的新对象
|
|
1356
|
+
*/
|
|
1357
|
+
renameKey: function renameKey(object, renameTo, removeNotExistKey) {
|
|
1358
|
+
if (removeNotExistKey === void 0) {
|
|
1359
|
+
removeNotExistKey = false;
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
var result = {};
|
|
1363
|
+
|
|
1364
|
+
for (var oldKey in object) {
|
|
1365
|
+
var newKey = renameTo[oldKey];
|
|
1366
|
+
|
|
1367
|
+
if (!newKey) {
|
|
1368
|
+
if (removeNotExistKey) {
|
|
1369
|
+
continue;
|
|
1370
|
+
} else {
|
|
1371
|
+
newKey = oldKey;
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
result[newKey] = object[oldKey];
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
return result;
|
|
1379
|
+
},
|
|
1380
|
+
|
|
1381
|
+
/**
|
|
1382
|
+
* 提交时将时间字段转换为可读格式
|
|
1383
|
+
* @param schema 表单 schema(type 为 object 的根 schema)
|
|
1384
|
+
* @param database 表单数据
|
|
1385
|
+
* @returns 深拷贝后转换过的数据
|
|
1386
|
+
*/
|
|
1387
|
+
formatForExport: function formatForExport(schema, database) {
|
|
1388
|
+
if (___default["default"].isNil(database)) {
|
|
1389
|
+
return database;
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1392
|
+
var result = ___default["default"].cloneDeep(database);
|
|
1393
|
+
|
|
1394
|
+
var fields = schema.objectFields;
|
|
1395
|
+
|
|
1396
|
+
if (!fields) {
|
|
1397
|
+
return result;
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
var _loop = function _loop() {
|
|
1401
|
+
var field = _step9.value;
|
|
1402
|
+
var value = result[field.name];
|
|
1403
|
+
|
|
1404
|
+
if (___default["default"].isNil(value)) {
|
|
1405
|
+
return "continue";
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
var type = field.type; // 时间选择器
|
|
1409
|
+
|
|
1410
|
+
if (type === "year" || type === "yearMonth" || type === "yearMonthDay" || type === "datetime" || type === "date") {
|
|
1411
|
+
var antConf = MDateTimeType.antConf(field);
|
|
1412
|
+
|
|
1413
|
+
if (antConf) {
|
|
1414
|
+
var m = moment__default["default"](value, antConf.dataFormat);
|
|
1415
|
+
|
|
1416
|
+
if (m.isValid()) {
|
|
1417
|
+
result[field.name] = m.format(antConf.readableFormat);
|
|
1418
|
+
}
|
|
1419
|
+
}
|
|
1420
|
+
} // 时间范围选择器
|
|
1421
|
+
else if (type === "dateRange") {
|
|
1422
|
+
if (___default["default"].isArray(value)) {
|
|
1423
|
+
var _field$dateRange, _field$dataFormat;
|
|
1424
|
+
|
|
1425
|
+
var start = value[0],
|
|
1426
|
+
end = value[1],
|
|
1427
|
+
tillNow = value[2];
|
|
1428
|
+
var fmt = getReadableFormat(field.dateRangePrecision, (_field$dateRange = field.dateRange) == null ? void 0 : _field$dateRange.showTime);
|
|
1429
|
+
var dataFormat = (_field$dataFormat = field.dataFormat) != null ? _field$dataFormat : "x";
|
|
1430
|
+
var startStr = "";
|
|
1431
|
+
var endStr = "";
|
|
1432
|
+
|
|
1433
|
+
if (!___default["default"].isNil(start)) {
|
|
1434
|
+
var _m = moment__default["default"](start, dataFormat);
|
|
1435
|
+
|
|
1436
|
+
startStr = _m.isValid() ? _m.format(fmt) : "";
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
if (tillNow) {
|
|
1440
|
+
endStr = "至今";
|
|
1441
|
+
} else if (!___default["default"].isNil(end)) {
|
|
1442
|
+
var _m2 = moment__default["default"](end, dataFormat);
|
|
1443
|
+
|
|
1444
|
+
endStr = _m2.isValid() ? _m2.format(fmt) : "";
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
result[field.name] = startStr + " - " + endStr;
|
|
1448
|
+
}
|
|
1449
|
+
} // 嵌套 object
|
|
1450
|
+
else if (type === "object" && field.objectFields) {
|
|
1451
|
+
result[field.name] = MUtil.formatForExport(field, value);
|
|
1452
|
+
} // 嵌套 array
|
|
1453
|
+
else if (type === "array" && field.arrayMember && ___default["default"].isArray(value)) {
|
|
1454
|
+
if (field.arrayMember.objectFields) {
|
|
1455
|
+
result[field.name] = value.map(function (item) {
|
|
1456
|
+
return MUtil.formatForExport(field.arrayMember, item);
|
|
1457
|
+
});
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
};
|
|
1461
|
+
|
|
1462
|
+
for (var _iterator9 = _createForOfIteratorHelperLoose$d(fields), _step9; !(_step9 = _iterator9()).done;) {
|
|
1463
|
+
var _ret = _loop();
|
|
1464
|
+
|
|
1465
|
+
if (_ret === "continue") continue;
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
return result;
|
|
1469
|
+
},
|
|
1470
|
+
|
|
1471
|
+
/**
|
|
1472
|
+
* 回填时将可读格式的时间字段反解析为内部格式
|
|
1473
|
+
* @param schema 表单 schema(type 为 object 的根 schema)
|
|
1474
|
+
* @param database 可读格式的数据
|
|
1475
|
+
* @returns 深拷贝后反解析过的数据
|
|
1476
|
+
*/
|
|
1477
|
+
parseFromExport: function parseFromExport(schema, database) {
|
|
1478
|
+
if (___default["default"].isNil(database)) {
|
|
1479
|
+
return database;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
var result = ___default["default"].cloneDeep(database);
|
|
1483
|
+
|
|
1484
|
+
var fields = schema.objectFields;
|
|
1485
|
+
|
|
1486
|
+
if (!fields) {
|
|
1487
|
+
return result;
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1490
|
+
var _loop2 = function _loop2() {
|
|
1491
|
+
var field = _step10.value;
|
|
1492
|
+
var value = result[field.name];
|
|
1493
|
+
|
|
1494
|
+
if (___default["default"].isNil(value)) {
|
|
1495
|
+
return "continue";
|
|
1496
|
+
}
|
|
1497
|
+
|
|
1498
|
+
var type = field.type; // 时间选择器
|
|
1499
|
+
|
|
1500
|
+
if (type === "year" || type === "yearMonth" || type === "yearMonthDay" || type === "datetime" || type === "date") {
|
|
1501
|
+
var antConf = MDateTimeType.antConf(field);
|
|
1502
|
+
|
|
1503
|
+
if (antConf && ___default["default"].isString(value)) {
|
|
1504
|
+
var m = moment__default["default"](value, antConf.readableFormat);
|
|
1505
|
+
|
|
1506
|
+
if (m.isValid()) {
|
|
1507
|
+
result[field.name] = m.format(antConf.dataFormat);
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
} // 时间范围选择器
|
|
1511
|
+
else if (type === "dateRange") {
|
|
1512
|
+
if (___default["default"].isString(value)) {
|
|
1513
|
+
var _field$dateRange2, _field$dataFormat2, _parts$, _parts$2;
|
|
1514
|
+
|
|
1515
|
+
var fmt = getReadableFormat(field.dateRangePrecision, (_field$dateRange2 = field.dateRange) == null ? void 0 : _field$dateRange2.showTime);
|
|
1516
|
+
var dataFormat = (_field$dataFormat2 = field.dataFormat) != null ? _field$dataFormat2 : "x";
|
|
1517
|
+
var parts = value.split(" - ");
|
|
1518
|
+
var startStr = (_parts$ = parts[0]) == null ? void 0 : _parts$.trim();
|
|
1519
|
+
var endStr = (_parts$2 = parts[1]) == null ? void 0 : _parts$2.trim();
|
|
1520
|
+
var start = null;
|
|
1521
|
+
var end = null;
|
|
1522
|
+
var tillNow = false;
|
|
1523
|
+
|
|
1524
|
+
if (startStr) {
|
|
1525
|
+
var _m3 = moment__default["default"](startStr, fmt);
|
|
1526
|
+
|
|
1527
|
+
if (_m3.isValid()) {
|
|
1528
|
+
start = _m3.format(dataFormat);
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
if (endStr === "至今") {
|
|
1533
|
+
tillNow = true;
|
|
1534
|
+
} else if (endStr) {
|
|
1535
|
+
var _m4 = moment__default["default"](endStr, fmt);
|
|
1536
|
+
|
|
1537
|
+
if (_m4.isValid()) {
|
|
1538
|
+
end = _m4.format(dataFormat);
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
result[field.name] = [start, end, tillNow];
|
|
1543
|
+
}
|
|
1544
|
+
} // 嵌套 object
|
|
1545
|
+
else if (type === "object" && field.objectFields) {
|
|
1546
|
+
result[field.name] = MUtil.parseFromExport(field, value);
|
|
1547
|
+
} // 嵌套 array
|
|
1548
|
+
else if (type === "array" && field.arrayMember && ___default["default"].isArray(value)) {
|
|
1549
|
+
if (field.arrayMember.objectFields) {
|
|
1550
|
+
result[field.name] = value.map(function (item) {
|
|
1551
|
+
return MUtil.parseFromExport(field.arrayMember, item);
|
|
1552
|
+
});
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
};
|
|
1556
|
+
|
|
1557
|
+
for (var _iterator10 = _createForOfIteratorHelperLoose$d(fields), _step10; !(_step10 = _iterator10()).done;) {
|
|
1558
|
+
var _ret2 = _loop2();
|
|
1559
|
+
|
|
1560
|
+
if (_ret2 === "continue") continue;
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
return result;
|
|
1564
|
+
},
|
|
1565
|
+
|
|
1566
|
+
/** 啥也不干的空回调 */
|
|
1567
|
+
doNothing: function doNothing() {},
|
|
1568
|
+
|
|
1569
|
+
/**
|
|
1570
|
+
* 去掉arr中的undefined和null,拼出来一个json path
|
|
1571
|
+
*/
|
|
1572
|
+
jsonPath: function jsonPath() {
|
|
1573
|
+
for (var _len2 = arguments.length, arr = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
1574
|
+
arr[_key2] = arguments[_key2];
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
return ___default["default"].compact(arr).join(".");
|
|
1578
|
+
},
|
|
1579
|
+
|
|
1580
|
+
/**
|
|
1581
|
+
* 获取一个json path的父path。
|
|
1582
|
+
* @param path 如果path是空的返回也是空的
|
|
1583
|
+
*/
|
|
1584
|
+
parentPath: function parentPath(path) {
|
|
1585
|
+
var split = path.replace(/]/g, "").split(/[.\\[]/);
|
|
1586
|
+
split.splice(-1, 1);
|
|
1587
|
+
return split.join(".");
|
|
1588
|
+
},
|
|
1589
|
+
|
|
1590
|
+
/**
|
|
1591
|
+
* 校验一个schema
|
|
1592
|
+
* @param s 要校验的schema
|
|
1593
|
+
* @returns 空数组表示校验通过,否则返回校验错误信息
|
|
1594
|
+
*/
|
|
1595
|
+
validateSchema: function validateSchema(s, parentPath) {
|
|
1596
|
+
var result = [];
|
|
1597
|
+
|
|
1598
|
+
var error = function error(msg) {
|
|
1599
|
+
return result.push({
|
|
1600
|
+
message: msg,
|
|
1601
|
+
path: MUtil.jsonPath(parentPath, s.name)
|
|
1602
|
+
});
|
|
1603
|
+
};
|
|
1604
|
+
|
|
1605
|
+
var checkDup = function checkDup(a, msgIfFail) {
|
|
1606
|
+
if (___default["default"].uniq(a).length !== a.length) {
|
|
1607
|
+
error(msgIfFail);
|
|
1608
|
+
}
|
|
1609
|
+
};
|
|
1610
|
+
|
|
1611
|
+
var checkVL = function checkVL(fs) {
|
|
1612
|
+
checkDup(fs.map(function (f) {
|
|
1613
|
+
return f.value;
|
|
1614
|
+
}), s.name + "值有重复");
|
|
1615
|
+
checkDup(fs.map(function (f) {
|
|
1616
|
+
return f.label;
|
|
1617
|
+
}).filter(function (l) {
|
|
1618
|
+
return l;
|
|
1619
|
+
}), s.name + "文案有重复");
|
|
1620
|
+
};
|
|
1621
|
+
|
|
1622
|
+
var stringOnlyEnum = function stringOnlyEnum(candidate) {
|
|
1623
|
+
var ns = MUtil.standardFields(candidate).find(function (f) {
|
|
1624
|
+
return !___default["default"].isString(f.value);
|
|
1625
|
+
});
|
|
1626
|
+
|
|
1627
|
+
if (ns) {
|
|
1628
|
+
error("暂不支持的选项数据类型:" + JSON.stringify(ns) + ": " + typeof ns);
|
|
1629
|
+
}
|
|
1630
|
+
};
|
|
1631
|
+
|
|
1632
|
+
if (s.type === "decoration") {
|
|
1633
|
+
return [];
|
|
1634
|
+
} else if (s.type === "enum") {
|
|
1635
|
+
checkVL(MUtil.standardFields(s.enumFields));
|
|
1636
|
+
} else if (s.type === "set") {
|
|
1637
|
+
checkVL(MUtil.standardFields(s.setFields));
|
|
1638
|
+
} else if (s.type === "matrix") {
|
|
1639
|
+
stringOnlyEnum(s.matrix.x);
|
|
1640
|
+
stringOnlyEnum(s.matrix.y);
|
|
1641
|
+
} else if (s.type === "object") {
|
|
1642
|
+
if (!s.objectFields) {
|
|
1643
|
+
error("object类型未定义成员");
|
|
1644
|
+
} else {
|
|
1645
|
+
var _s$uispec;
|
|
1646
|
+
|
|
1647
|
+
checkDup(s.objectFields.filter(function (f) {
|
|
1648
|
+
return f.type !== "decoration";
|
|
1649
|
+
}).map(function (f) {
|
|
1650
|
+
return f.name;
|
|
1651
|
+
}), "字段名有重复");
|
|
1652
|
+
|
|
1653
|
+
for (var _iterator11 = _createForOfIteratorHelperLoose$d(s.objectFields), _step11; !(_step11 = _iterator11()).done;) {
|
|
1654
|
+
var f = _step11.value;
|
|
1655
|
+
result = ___default["default"].concat(result, MUtil.validateSchema(f, MUtil.jsonPath(parentPath, s.name)));
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1658
|
+
if (((_s$uispec = s.uispec) == null ? void 0 : _s$uispec.type) === "segmentForm") {
|
|
1659
|
+
if (!s.uispec.segments) {
|
|
1660
|
+
error("分段未定义");
|
|
1661
|
+
} else {
|
|
1662
|
+
checkDup(s.uispec.segments.map(function (f) {
|
|
1663
|
+
return f.label;
|
|
1664
|
+
}), "分段文案有重复");
|
|
1665
|
+
|
|
1666
|
+
var fieldsInSegments = ___default["default"].flatten(s.uispec.segments.map(function (f) {
|
|
1667
|
+
return f.fields;
|
|
1668
|
+
}));
|
|
1669
|
+
|
|
1670
|
+
checkDup(fieldsInSegments, "分段字段有重复");
|
|
1671
|
+
var fields = s.objectFields.map(function (f) {
|
|
1672
|
+
return f.name;
|
|
1673
|
+
});
|
|
1674
|
+
checkDup(fields, "字段名有重复");
|
|
1675
|
+
|
|
1676
|
+
var notInSegment = ___default["default"].difference(fields, fieldsInSegments);
|
|
1677
|
+
|
|
1678
|
+
if (notInSegment.length > 0) {
|
|
1679
|
+
error("字段" + notInSegment.join(",") + "未体现在分段中");
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1682
|
+
var fieldNotExist = ___default["default"].difference(fieldsInSegments, fields);
|
|
1683
|
+
|
|
1684
|
+
if (fieldNotExist.length > 0) {
|
|
1685
|
+
error("分段字段名无效:" + notInSegment.join(","));
|
|
1686
|
+
}
|
|
1687
|
+
}
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
return result;
|
|
1693
|
+
},
|
|
1694
|
+
|
|
1695
|
+
/**
|
|
1696
|
+
* 参考https://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply
|
|
1697
|
+
* 示例: var d = applyToConstructor(Date, [2008, 10, 8, 00, 16, 34, 254]);
|
|
1698
|
+
* @param constructor
|
|
1699
|
+
* @param argArray
|
|
1700
|
+
*/
|
|
1701
|
+
applyToConstructor: function applyToConstructor(constructor, argArray) {
|
|
1702
|
+
var args = [null].concat(argArray);
|
|
1703
|
+
var factoryFunction = constructor.bind.apply(constructor, args);
|
|
1704
|
+
return new factoryFunction();
|
|
1705
|
+
},
|
|
1706
|
+
|
|
1707
|
+
/**
|
|
1708
|
+
* 执行表达式或者回调函数
|
|
1709
|
+
* @param exprOrFunction 表达式或者回调函数
|
|
1710
|
+
* @param paramName 参数名字
|
|
1711
|
+
* @param paramValue 参数值
|
|
1712
|
+
* @param fallback 如果exprOrFunction无效,返回fallback
|
|
1713
|
+
* @param _this this指针
|
|
1714
|
+
*/
|
|
1715
|
+
evalExprOrFunction: function evalExprOrFunction(exprOrFunction, paramName, paramValue, fallback, _this) {
|
|
1716
|
+
if (fallback === void 0) {
|
|
1717
|
+
fallback = undefined;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
if (_this === void 0) {
|
|
1721
|
+
_this = undefined;
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
if (___default["default"].isFunction(exprOrFunction)) {
|
|
1725
|
+
return exprOrFunction.apply(_this, paramValue);
|
|
1726
|
+
} else if (___default["default"].isString(exprOrFunction)) {
|
|
1727
|
+
//return new Function("_", "value", "parent", "return (" + labelExpr + ");")(_, value, parent);
|
|
1728
|
+
var func = MUtil.applyToConstructor(Function, [].concat(paramName, ["return (" + exprOrFunction + ")"]));
|
|
1729
|
+
return func.apply(_this, paramValue);
|
|
1730
|
+
} else {
|
|
1731
|
+
return fallback;
|
|
1732
|
+
}
|
|
1733
|
+
},
|
|
1734
|
+
|
|
1735
|
+
/**
|
|
1736
|
+
* 读取url参数,转换成map
|
|
1737
|
+
* @param hashPrefix nil表示不读取hash里的参数,字符串表示读取hash里的参数,并加上这个前缀返回。默认是返回,但前缀是空字符串
|
|
1738
|
+
*/
|
|
1739
|
+
getQuery: function getQuery(hashPrefix) {
|
|
1740
|
+
|
|
1741
|
+
var arrs = [].concat(window.location.search.split(/[?&]/), window.location.hash.split(/[#?&]/));
|
|
1742
|
+
var result = {};
|
|
1743
|
+
arrs.forEach(function (item) {
|
|
1744
|
+
var kv = item.split(/=/);
|
|
1745
|
+
|
|
1746
|
+
if (kv.length <= 2 && kv[0]) {
|
|
1747
|
+
result[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
|
|
1748
|
+
}
|
|
1749
|
+
});
|
|
1750
|
+
return result;
|
|
1751
|
+
},
|
|
1752
|
+
|
|
1753
|
+
/**
|
|
1754
|
+
* 动态创建一个CSS样式
|
|
1755
|
+
* @param css css内容,会被写进style标签里
|
|
1756
|
+
* @param id <style>的id,可以没有。如果已经存在,会被覆盖掉。
|
|
1757
|
+
*/
|
|
1758
|
+
setCss: function setCss(css, id) {
|
|
1759
|
+
var _document$getElementB;
|
|
1760
|
+
|
|
1761
|
+
var s = (_document$getElementB = document.getElementById(id)) != null ? _document$getElementB : document.createElement("style");
|
|
1762
|
+
s.id = id;
|
|
1763
|
+
s.type = "text/css";
|
|
1764
|
+
s.innerHTML = css;
|
|
1765
|
+
document.getElementsByTagName("head")[0].appendChild(s);
|
|
1766
|
+
},
|
|
1767
|
+
|
|
1768
|
+
/**
|
|
1769
|
+
* escape数值
|
|
1770
|
+
* @param str - 字符串
|
|
1771
|
+
* @returns 会带上引号,类似"abc",str=nil时会返回""
|
|
1772
|
+
*/
|
|
1773
|
+
escapeCsv: function escapeCsv(str) {
|
|
1774
|
+
if (!___default["default"].isString(str)) {
|
|
1775
|
+
str = ___default["default"].toString(str);
|
|
1355
1776
|
}
|
|
1356
|
-
}
|
|
1357
1777
|
|
|
1358
|
-
|
|
1359
|
-
}
|
|
1360
|
-
/**
|
|
1361
|
-
* 字符串长度不超过[min, max]
|
|
1362
|
-
* @param schema
|
|
1363
|
-
* @param value 应该是个字符串
|
|
1364
|
-
*/
|
|
1778
|
+
return '"' + str.replace(/["]/g, '""') + '"';
|
|
1779
|
+
},
|
|
1365
1780
|
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1781
|
+
/**
|
|
1782
|
+
* 判断两个值是否相同
|
|
1783
|
+
* @param v1 一个值
|
|
1784
|
+
* @param v2 另一个值
|
|
1785
|
+
* @param tolerate true用==判断,false用===判断
|
|
1786
|
+
*/
|
|
1787
|
+
isEquals: function isEquals(v1, v2, tolerate) {
|
|
1788
|
+
if (tolerate) {
|
|
1789
|
+
return v1 == v2;
|
|
1790
|
+
} else {
|
|
1791
|
+
return v1 === v2;
|
|
1373
1792
|
}
|
|
1374
1793
|
}
|
|
1794
|
+
};
|
|
1795
|
+
var CompactArray = {
|
|
1796
|
+
indexOf: function indexOf(ca, d) {
|
|
1797
|
+
if (___default["default"].isNil(d) || ___default["default"].isNil(ca)) {
|
|
1798
|
+
return -1;
|
|
1799
|
+
}
|
|
1375
1800
|
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
path: path
|
|
1381
|
-
};
|
|
1801
|
+
if (___default["default"].isArray(ca)) {
|
|
1802
|
+
return ca.indexOf(d);
|
|
1803
|
+
} else {
|
|
1804
|
+
return ca === d ? 0 : -1;
|
|
1382
1805
|
}
|
|
1383
1806
|
}
|
|
1807
|
+
};
|
|
1384
1808
|
|
|
1385
|
-
|
|
1386
|
-
|
|
1809
|
+
var MContext = /*#__PURE__*/React__default["default"].createContext(undefined);
|
|
1810
|
+
|
|
1811
|
+
function ownKeys$x(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1812
|
+
|
|
1813
|
+
function _objectSpread$x(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$x(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$x(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1387
1814
|
/**
|
|
1388
|
-
*
|
|
1389
|
-
* @param schema
|
|
1390
|
-
* @param value 应该是个数字
|
|
1815
|
+
* 一个字段的视图
|
|
1391
1816
|
*/
|
|
1392
1817
|
|
|
1393
|
-
|
|
1394
|
-
|
|
1818
|
+
var MFieldViewer = /*#__PURE__*/function (_React$Component) {
|
|
1819
|
+
_inheritsLoose__default["default"](MFieldViewer, _React$Component);
|
|
1395
1820
|
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
return {
|
|
1399
|
-
message: "\u6700\u591A" + schema.max,
|
|
1400
|
-
path: path
|
|
1401
|
-
};
|
|
1402
|
-
}
|
|
1821
|
+
function MFieldViewer() {
|
|
1822
|
+
return _React$Component.apply(this, arguments) || this;
|
|
1403
1823
|
}
|
|
1404
1824
|
|
|
1405
|
-
|
|
1406
|
-
if (!___default["default"].isFinite(temp) || temp < schema.min) {
|
|
1407
|
-
return {
|
|
1408
|
-
message: "\u6700\u5C11" + schema.min,
|
|
1409
|
-
path: path
|
|
1410
|
-
};
|
|
1411
|
-
}
|
|
1412
|
-
}
|
|
1825
|
+
var _proto = MFieldViewer.prototype;
|
|
1413
1826
|
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
function generateRegexValidate$1(regex, mismatchMsg) {
|
|
1417
|
-
return function (a, schema, value, path) {
|
|
1418
|
-
var asstr = ___default["default"].toString(value);
|
|
1827
|
+
_proto.render = function render() {
|
|
1828
|
+
var _this = this;
|
|
1419
1829
|
|
|
1420
|
-
|
|
1421
|
-
return {
|
|
1422
|
-
message: mismatchMsg,
|
|
1423
|
-
path: path
|
|
1424
|
-
};
|
|
1425
|
-
}
|
|
1830
|
+
var viewer = assembly.getViewerOf(this.props.schema, this.props.morph); // console.log('MFieldViewer.viewer', viewer);
|
|
1426
1831
|
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
}
|
|
1430
|
-
/**
|
|
1431
|
-
* 数据用Object.prototype.toString.call返回的类型是预期的
|
|
1432
|
-
* 可以用Object.prototype.toString.call(<预期的类型>)来查看你想要的数据类型的expectType
|
|
1433
|
-
* @param expectType 预期类型,例如:"[object Object]" "[object Null]" "[object Number]" "[object Date]" "[object Array]"
|
|
1434
|
-
* @param mismatchMsg 如果不匹配,提示的错误信息
|
|
1435
|
-
* @returns
|
|
1436
|
-
*/
|
|
1832
|
+
if (!viewer) {
|
|
1833
|
+
return MUtil.error("\u5B57\u6BB5\u7684\u89C6\u56FE\u5C1A\u672A\u5B9E\u73B0", this.props.schema);
|
|
1834
|
+
}
|
|
1437
1835
|
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1836
|
+
var props = _objectSpread$x({
|
|
1837
|
+
afterChange: function afterChange() {},
|
|
1838
|
+
changeSchema: function changeSchema() {},
|
|
1839
|
+
changeDatabase: function changeDatabase() {},
|
|
1840
|
+
name: this.props.path
|
|
1841
|
+
}, this.props);
|
|
1442
1842
|
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1843
|
+
var ele = /*#__PURE__*/React__default["default"].createElement(viewer, props, null);
|
|
1844
|
+
return jsxRuntime.jsx(MContext.Consumer, {
|
|
1845
|
+
children: function children(ctx) {
|
|
1846
|
+
if (ctx.rootProps.wrapper && _this.props.schema.type !== 'object' && _this.props.schema.type !== 'array') {
|
|
1847
|
+
return ctx.rootProps.wrapper(ele, _this.props.schema);
|
|
1848
|
+
} else {
|
|
1849
|
+
return ele;
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
});
|
|
1452
1853
|
};
|
|
1453
|
-
}
|
|
1454
|
-
function generateSchemaValidate(valueSchema, mismatchMsg) {
|
|
1455
|
-
return function (a, schema, value, path) {
|
|
1456
|
-
var r = assembly.validate(valueSchema, value, "");
|
|
1457
1854
|
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
} else {
|
|
1461
|
-
return {
|
|
1462
|
-
message: mismatchMsg != null ? mismatchMsg : r.message,
|
|
1463
|
-
path: path
|
|
1464
|
-
};
|
|
1465
|
-
}
|
|
1466
|
-
};
|
|
1467
|
-
}
|
|
1468
|
-
var Validator = {
|
|
1469
|
-
validateRequired: validateRequired$1,
|
|
1470
|
-
validateRequiredNS: validateRequiredNS,
|
|
1471
|
-
validateDateMinMax: validateDateMinMax,
|
|
1472
|
-
validateStringMinMax: validateStringMinMax$1,
|
|
1473
|
-
validateNumberMinMax: validateNumberMinMax,
|
|
1474
|
-
generateRegexValidate: generateRegexValidate$1
|
|
1475
|
-
};
|
|
1855
|
+
return MFieldViewer;
|
|
1856
|
+
}(React__default["default"].Component);
|
|
1476
1857
|
|
|
1477
1858
|
function _createForOfIteratorHelperLoose$c(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$c(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1478
1859
|
|
|
@@ -1559,34 +1940,6 @@ var MEnumType = {
|
|
|
1559
1940
|
}
|
|
1560
1941
|
};
|
|
1561
1942
|
|
|
1562
|
-
var EmtpyType = {
|
|
1563
|
-
validators: [],
|
|
1564
|
-
createDefaultValue: function createDefaultValue(assembly, s) {
|
|
1565
|
-
if (s.defaultValue) {
|
|
1566
|
-
return ___default["default"].clone(s.defaultValue);
|
|
1567
|
-
} else {
|
|
1568
|
-
return undefined;
|
|
1569
|
-
}
|
|
1570
|
-
},
|
|
1571
|
-
standardValue: function standardValue(assembly, s, v, strict) {
|
|
1572
|
-
return v;
|
|
1573
|
-
},
|
|
1574
|
-
toReadable: function toReadable(assembly, s, vs) {
|
|
1575
|
-
if (___default["default"].isNil(vs)) {
|
|
1576
|
-
return assembly.theme.READABLE_BLANK;
|
|
1577
|
-
}
|
|
1578
|
-
|
|
1579
|
-
return vs;
|
|
1580
|
-
}
|
|
1581
|
-
};
|
|
1582
|
-
function createDefaultValue(assembly, s) {
|
|
1583
|
-
if (s.defaultValue) {
|
|
1584
|
-
return ___default["default"].clone(s.defaultValue);
|
|
1585
|
-
} else {
|
|
1586
|
-
return undefined;
|
|
1587
|
-
}
|
|
1588
|
-
}
|
|
1589
|
-
|
|
1590
1943
|
var gb2260 = [
|
|
1591
1944
|
{
|
|
1592
1945
|
value: "110000",
|
|
@@ -15091,102 +15444,36 @@ var MGB2260Type = ___default["default"].assign({}, EmtpyType, {
|
|
|
15091
15444
|
}
|
|
15092
15445
|
|
|
15093
15446
|
for (var _iterator2 = _createForOfIteratorHelperLoose$b(prv.children), _step2; !(_step2 = _iterator2()).done;) {
|
|
15094
|
-
var city = _step2.value;
|
|
15095
|
-
// @ts-ignore city.value全是数字,ts并不知道
|
|
15096
|
-
var cdiff = code - city.value; // @ts-ignore
|
|
15097
|
-
|
|
15098
|
-
if (cdiff === 0) {
|
|
15099
|
-
return {
|
|
15100
|
-
label: [prv.label, city.label],
|
|
15101
|
-
code: [prv.value, city.value]
|
|
15102
|
-
};
|
|
15103
|
-
} else if (cdiff > 0 && cdiff < 100) {
|
|
15104
|
-
// @ts-ignore
|
|
15105
|
-
for (var _iterator3 = _createForOfIteratorHelperLoose$b((_city$children = city.children) != null ? _city$children : []), _step3; !(_step3 = _iterator3()).done;) {
|
|
15106
|
-
var _city$children;
|
|
15107
|
-
|
|
15108
|
-
var dst = _step3.value;
|
|
15109
|
-
|
|
15110
|
-
// eslint-disable-next-line eqeqeq
|
|
15111
|
-
if (dst.value == code) {
|
|
15112
|
-
return {
|
|
15113
|
-
label: [prv.label, city.label, dst.label],
|
|
15114
|
-
code: [prv.value, city.value, dst.value]
|
|
15115
|
-
};
|
|
15116
|
-
}
|
|
15117
|
-
}
|
|
15118
|
-
}
|
|
15119
|
-
}
|
|
15120
|
-
}
|
|
15121
|
-
}
|
|
15122
|
-
|
|
15123
|
-
return undefined;
|
|
15124
|
-
}
|
|
15125
|
-
});
|
|
15126
|
-
|
|
15127
|
-
var MDateTimeType = ___default["default"].assign({}, EmtpyType, {
|
|
15128
|
-
validators: [validateRequired$1, validateDateMinMax],
|
|
15129
|
-
antConf: function antConf(schema) {
|
|
15130
|
-
var _dataFormat, _dataFormat2, _dataFormat3, _dataFormat4;
|
|
15131
|
-
|
|
15132
|
-
var dataFormat = schema.dataFormat;
|
|
15133
|
-
var readableFormat;
|
|
15134
|
-
var mode;
|
|
15135
|
-
var showTime = false;
|
|
15136
|
-
|
|
15137
|
-
switch (schema.type) {
|
|
15138
|
-
case "year":
|
|
15139
|
-
mode = "year";
|
|
15140
|
-
dataFormat = (_dataFormat = dataFormat) != null ? _dataFormat : 'YYYY';
|
|
15141
|
-
readableFormat = 'YYYY';
|
|
15142
|
-
break;
|
|
15143
|
-
|
|
15144
|
-
case "yearMonth":
|
|
15145
|
-
mode = "month";
|
|
15146
|
-
dataFormat = (_dataFormat2 = dataFormat) != null ? _dataFormat2 : 'YYYYMM';
|
|
15147
|
-
readableFormat = 'YYYY-MM';
|
|
15148
|
-
break;
|
|
15149
|
-
|
|
15150
|
-
case "yearMonthDay":
|
|
15151
|
-
mode = "date";
|
|
15152
|
-
dataFormat = (_dataFormat3 = dataFormat) != null ? _dataFormat3 : 'YYYYMMDD';
|
|
15153
|
-
readableFormat = 'YYYY-MM-DD';
|
|
15154
|
-
break;
|
|
15155
|
-
|
|
15156
|
-
case "datetime":
|
|
15157
|
-
mode = undefined;
|
|
15158
|
-
dataFormat = (_dataFormat4 = dataFormat) != null ? _dataFormat4 : 'x';
|
|
15159
|
-
readableFormat = 'YYYY-MM-DD HH:mm';
|
|
15160
|
-
showTime = true;
|
|
15161
|
-
break;
|
|
15162
|
-
// case "yearAndQuarter":
|
|
15163
|
-
// case "yearAndWeek":
|
|
15164
|
-
// return MUtil.error(`移动端不支持${this.props.schema.type}`, this.props.schema);
|
|
15165
|
-
|
|
15166
|
-
default:
|
|
15167
|
-
return undefined;
|
|
15168
|
-
}
|
|
15447
|
+
var city = _step2.value;
|
|
15448
|
+
// @ts-ignore city.value全是数字,ts并不知道
|
|
15449
|
+
var cdiff = code - city.value; // @ts-ignore
|
|
15169
15450
|
|
|
15170
|
-
|
|
15171
|
-
|
|
15172
|
-
|
|
15173
|
-
|
|
15174
|
-
|
|
15175
|
-
|
|
15176
|
-
|
|
15177
|
-
|
|
15178
|
-
|
|
15179
|
-
return assembly.theme.READABLE_BLANK;
|
|
15180
|
-
}
|
|
15451
|
+
if (cdiff === 0) {
|
|
15452
|
+
return {
|
|
15453
|
+
label: [prv.label, city.label],
|
|
15454
|
+
code: [prv.value, city.value]
|
|
15455
|
+
};
|
|
15456
|
+
} else if (cdiff > 0 && cdiff < 100) {
|
|
15457
|
+
// @ts-ignore
|
|
15458
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose$b((_city$children = city.children) != null ? _city$children : []), _step3; !(_step3 = _iterator3()).done;) {
|
|
15459
|
+
var _city$children;
|
|
15181
15460
|
|
|
15182
|
-
|
|
15461
|
+
var dst = _step3.value;
|
|
15183
15462
|
|
|
15184
|
-
|
|
15185
|
-
|
|
15463
|
+
// eslint-disable-next-line eqeqeq
|
|
15464
|
+
if (dst.value == code) {
|
|
15465
|
+
return {
|
|
15466
|
+
label: [prv.label, city.label, dst.label],
|
|
15467
|
+
code: [prv.value, city.value, dst.value]
|
|
15468
|
+
};
|
|
15469
|
+
}
|
|
15470
|
+
}
|
|
15471
|
+
}
|
|
15472
|
+
}
|
|
15473
|
+
}
|
|
15186
15474
|
}
|
|
15187
15475
|
|
|
15188
|
-
|
|
15189
|
-
return asMoment.format(c.readableFormat);
|
|
15476
|
+
return undefined;
|
|
15190
15477
|
}
|
|
15191
15478
|
});
|
|
15192
15479
|
|
|
@@ -15841,59 +16128,6 @@ var MObjectType = {
|
|
|
15841
16128
|
}
|
|
15842
16129
|
};
|
|
15843
16130
|
|
|
15844
|
-
function timeExpr(assembly, v, tillNow, readableFormat) {
|
|
15845
|
-
if (tillNow) {
|
|
15846
|
-
return "至今";
|
|
15847
|
-
}
|
|
15848
|
-
|
|
15849
|
-
if (!v) {
|
|
15850
|
-
return assembly.theme.READABLE_UNKNOWN;
|
|
15851
|
-
}
|
|
15852
|
-
|
|
15853
|
-
return moment__default["default"](v, "x").format(readableFormat);
|
|
15854
|
-
}
|
|
15855
|
-
|
|
15856
|
-
function timeRangeExpr(assembly, from, to, tillNow, readableFormat) {
|
|
15857
|
-
if (readableFormat === void 0) {
|
|
15858
|
-
readableFormat = "YYYY年MM月DD日";
|
|
15859
|
-
}
|
|
15860
|
-
|
|
15861
|
-
return timeExpr(assembly, from, false, readableFormat) + " ~ " + timeExpr(assembly, to, tillNow, readableFormat);
|
|
15862
|
-
}
|
|
15863
|
-
var MDateRangeType = ___default["default"].assign({}, EmtpyType, {
|
|
15864
|
-
validators: [validateRequired$1],
|
|
15865
|
-
toReadable: function toReadable(assembly, s, vs) {
|
|
15866
|
-
var _s$dateRange;
|
|
15867
|
-
|
|
15868
|
-
if (___default["default"].isNil(vs)) {
|
|
15869
|
-
return assembly.theme.READABLE_BLANK;
|
|
15870
|
-
}
|
|
15871
|
-
|
|
15872
|
-
if (!___default["default"].isArray(vs)) {
|
|
15873
|
-
return assembly.theme.READABLE_INVALID;
|
|
15874
|
-
}
|
|
15875
|
-
|
|
15876
|
-
return timeRangeExpr(assembly, vs[0], vs[1], vs[2], (_s$dateRange = s.dateRange) != null && _s$dateRange.showTime ? "YYYY年MM月DD日 HH:mm:ss" : "YYYY年MM月DD日");
|
|
15877
|
-
},
|
|
15878
|
-
|
|
15879
|
-
/**
|
|
15880
|
-
* 同toReadable,但数据无效时返回nil
|
|
15881
|
-
* @param assembly
|
|
15882
|
-
* @param s
|
|
15883
|
-
* @param vs
|
|
15884
|
-
* @returns
|
|
15885
|
-
*/
|
|
15886
|
-
toReadableN: function toReadableN(assembly, s, vs) {
|
|
15887
|
-
if (!___default["default"].isNil(vs) && ___default["default"].isArray(vs)) {
|
|
15888
|
-
var _s$dateRange2;
|
|
15889
|
-
|
|
15890
|
-
return timeRangeExpr(assembly, vs[0], vs[1], vs[2], (_s$dateRange2 = s.dateRange) != null && _s$dateRange2.showTime ? "YYYY年MM月DD日 HH:mm:ss" : "YYYY年MM月DD日");
|
|
15891
|
-
}
|
|
15892
|
-
|
|
15893
|
-
return undefined;
|
|
15894
|
-
}
|
|
15895
|
-
});
|
|
15896
|
-
|
|
15897
16131
|
function _createForOfIteratorHelperLoose$6(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$6(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15898
16132
|
|
|
15899
16133
|
function _unsupportedIterableToArray$6(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$6(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$6(o, minLen); }
|
|
@@ -16413,6 +16647,23 @@ var ArrayViewer = /*#__PURE__*/function (_BaseViewer) {
|
|
|
16413
16647
|
function ownKeys$v(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16414
16648
|
|
|
16415
16649
|
function _objectSpread$v(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$v(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$v(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16650
|
+
|
|
16651
|
+
function toPrecision(mode) {
|
|
16652
|
+
switch (mode) {
|
|
16653
|
+
case "year":
|
|
16654
|
+
return "year";
|
|
16655
|
+
|
|
16656
|
+
case "month":
|
|
16657
|
+
return "month";
|
|
16658
|
+
|
|
16659
|
+
case "date":
|
|
16660
|
+
return "day";
|
|
16661
|
+
|
|
16662
|
+
default:
|
|
16663
|
+
return "minute";
|
|
16664
|
+
// datetime 场景
|
|
16665
|
+
}
|
|
16666
|
+
}
|
|
16416
16667
|
/**
|
|
16417
16668
|
* 日期选择框
|
|
16418
16669
|
* 配置示例:
|
|
@@ -16424,17 +16675,22 @@ function _objectSpread$v(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
16424
16675
|
* 类型是dateTime时,dataFormat默认是x,例如1608897466955
|
|
16425
16676
|
*/
|
|
16426
16677
|
|
|
16678
|
+
|
|
16427
16679
|
var ADatetimePicker = /*#__PURE__*/function (_BaseViewer) {
|
|
16428
16680
|
_inheritsLoose__default["default"](ADatetimePicker, _BaseViewer);
|
|
16429
16681
|
|
|
16430
|
-
function ADatetimePicker() {
|
|
16431
|
-
|
|
16682
|
+
function ADatetimePicker(props) {
|
|
16683
|
+
var _this;
|
|
16684
|
+
|
|
16685
|
+
_this = _BaseViewer.call(this, props) || this;
|
|
16686
|
+
_this.state.pickerVisible = false;
|
|
16687
|
+
return _this;
|
|
16432
16688
|
}
|
|
16433
16689
|
|
|
16434
16690
|
var _proto = ADatetimePicker.prototype;
|
|
16435
16691
|
|
|
16436
16692
|
_proto.element = function element() {
|
|
16437
|
-
var
|
|
16693
|
+
var _this2 = this,
|
|
16438
16694
|
_this$props$schema$pr;
|
|
16439
16695
|
|
|
16440
16696
|
var antConf = MDateTimeType.antConf(this.props.schema);
|
|
@@ -16451,9 +16707,9 @@ var ADatetimePicker = /*#__PURE__*/function (_BaseViewer) {
|
|
|
16451
16707
|
if (vv) {
|
|
16452
16708
|
var vvAsM = ___default["default"].isDate(vv) ? moment__default["default"](vv) : vv;
|
|
16453
16709
|
|
|
16454
|
-
_BaseViewer.prototype.changeValue.call(
|
|
16710
|
+
_BaseViewer.prototype.changeValue.call(_this2, vvAsM.format(antConf.dataFormat));
|
|
16455
16711
|
} else {
|
|
16456
|
-
_BaseViewer.prototype.changeValue.call(
|
|
16712
|
+
_BaseViewer.prototype.changeValue.call(_this2, undefined);
|
|
16457
16713
|
}
|
|
16458
16714
|
};
|
|
16459
16715
|
|
|
@@ -16461,36 +16717,60 @@ var ADatetimePicker = /*#__PURE__*/function (_BaseViewer) {
|
|
|
16461
16717
|
|
|
16462
16718
|
if (MUtil.phoneLike()) {
|
|
16463
16719
|
// 手机
|
|
16464
|
-
return jsxRuntime.
|
|
16465
|
-
|
|
16466
|
-
value: dataAsDate,
|
|
16467
|
-
minDate: this.props.schema.min ? moment__default["default"](this.props.schema.min, antConf.dataFormat).toDate() : undefined,
|
|
16468
|
-
maxDate: this.props.schema.max ? moment__default["default"](this.props.schema.max, antConf.dataFormat).toDate() : undefined,
|
|
16469
|
-
mode: antConf.mode,
|
|
16470
|
-
onChange: onChange
|
|
16471
|
-
}, p), {}, {
|
|
16472
|
-
children: jsxRuntime.jsx("div", {
|
|
16720
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
16721
|
+
children: [jsxRuntime.jsx("div", {
|
|
16473
16722
|
className: "backfill",
|
|
16723
|
+
onClick: function onClick() {
|
|
16724
|
+
if (!_this2.props.disable) _this2.setState({
|
|
16725
|
+
pickerVisible: true
|
|
16726
|
+
});
|
|
16727
|
+
},
|
|
16474
16728
|
children: dataAsDate ? moment__default["default"](dataAsDate).format(antConf.readableFormat) : "请点击选择"
|
|
16475
|
-
})
|
|
16476
|
-
|
|
16729
|
+
}), jsxRuntime.jsx(antdMobile.DatePicker, _objectSpread$v({
|
|
16730
|
+
visible: this.state.pickerVisible,
|
|
16731
|
+
value: dataAsDate,
|
|
16732
|
+
min: this.props.schema.min ? moment__default["default"](this.props.schema.min, antConf.dataFormat).toDate() : undefined,
|
|
16733
|
+
max: this.props.schema.max ? moment__default["default"](this.props.schema.max, antConf.dataFormat).toDate() : undefined,
|
|
16734
|
+
precision: toPrecision(antConf.mode),
|
|
16735
|
+
onConfirm: function onConfirm(val) {
|
|
16736
|
+
onChange(val);
|
|
16737
|
+
|
|
16738
|
+
_this2.setState({
|
|
16739
|
+
pickerVisible: false
|
|
16740
|
+
});
|
|
16741
|
+
},
|
|
16742
|
+
onClose: function onClose() {
|
|
16743
|
+
_this2.setState({
|
|
16744
|
+
pickerVisible: false
|
|
16745
|
+
});
|
|
16746
|
+
}
|
|
16747
|
+
}, p))]
|
|
16748
|
+
});
|
|
16477
16749
|
} else {
|
|
16750
|
+
var _antConf$mode;
|
|
16751
|
+
|
|
16478
16752
|
// 大屏
|
|
16479
|
-
|
|
16480
|
-
|
|
16481
|
-
|
|
16482
|
-
disabledDate: function disabledDate(m) {
|
|
16483
|
-
var d = _this.props.schema.min && moment__default["default"](_this.props.schema.min, antConf.dataFormat).isAfter(m) || _this.props.schema.max && moment__default["default"](_this.props.schema.max, antConf.dataFormat).isBefore(m);
|
|
16484
|
-
return !!d;
|
|
16485
|
-
},
|
|
16486
|
-
format: antConf.readableFormat,
|
|
16487
|
-
style: this.props.style,
|
|
16753
|
+
// key 中加入 mode 信息,确保精度切换时组件重新挂载
|
|
16754
|
+
var pickerKey = this.props.path + "_" + ((_antConf$mode = antConf.mode) != null ? _antConf$mode : "datetime");
|
|
16755
|
+
return jsxRuntime.jsx(antd.ConfigProvider, {
|
|
16488
16756
|
locale: zhCN__default["default"],
|
|
16489
|
-
|
|
16490
|
-
|
|
16491
|
-
|
|
16492
|
-
|
|
16493
|
-
|
|
16757
|
+
children: jsxRuntime.jsx(antd.DatePicker, _objectSpread$v({
|
|
16758
|
+
disabled: this.props.disable,
|
|
16759
|
+
bordered: this.props.hideBorder ? false : true,
|
|
16760
|
+
disabledDate: function disabledDate(m) {
|
|
16761
|
+
var d = _this2.props.schema.min && moment__default["default"](_this2.props.schema.min, antConf.dataFormat).isAfter(m) || _this2.props.schema.max && moment__default["default"](_this2.props.schema.max, antConf.dataFormat).isBefore(m);
|
|
16762
|
+
return !!d;
|
|
16763
|
+
},
|
|
16764
|
+
format: antConf.readableFormat,
|
|
16765
|
+
style: {
|
|
16766
|
+
width: "300px"
|
|
16767
|
+
},
|
|
16768
|
+
defaultValue: dataAsMoment,
|
|
16769
|
+
showTime: antConf.showTime,
|
|
16770
|
+
picker: antConf.mode,
|
|
16771
|
+
onChange: onChange
|
|
16772
|
+
}, p), pickerKey)
|
|
16773
|
+
});
|
|
16494
16774
|
}
|
|
16495
16775
|
};
|
|
16496
16776
|
|
|
@@ -16509,8 +16789,12 @@ function _objectSpread$u(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
16509
16789
|
var AGB2260 = /*#__PURE__*/function (_BaseViewer) {
|
|
16510
16790
|
_inheritsLoose__default["default"](AGB2260, _BaseViewer);
|
|
16511
16791
|
|
|
16512
|
-
function AGB2260() {
|
|
16513
|
-
|
|
16792
|
+
function AGB2260(props) {
|
|
16793
|
+
var _this;
|
|
16794
|
+
|
|
16795
|
+
_this = _BaseViewer.call(this, props) || this;
|
|
16796
|
+
_this.state.pickerVisible = false;
|
|
16797
|
+
return _this;
|
|
16514
16798
|
}
|
|
16515
16799
|
|
|
16516
16800
|
var _proto = AGB2260.prototype;
|
|
@@ -16518,7 +16802,7 @@ var AGB2260 = /*#__PURE__*/function (_BaseViewer) {
|
|
|
16518
16802
|
_proto.element = function element() {
|
|
16519
16803
|
var _MGB2260Type$lookup,
|
|
16520
16804
|
_this$props$schema$pr,
|
|
16521
|
-
|
|
16805
|
+
_this2 = this;
|
|
16522
16806
|
|
|
16523
16807
|
var v = _BaseViewer.prototype.getValue.call(this);
|
|
16524
16808
|
|
|
@@ -16533,26 +16817,34 @@ var AGB2260 = /*#__PURE__*/function (_BaseViewer) {
|
|
|
16533
16817
|
var _looked$label;
|
|
16534
16818
|
|
|
16535
16819
|
// 手机
|
|
16536
|
-
return jsxRuntime.
|
|
16537
|
-
|
|
16538
|
-
disabled: this.props.disable,
|
|
16539
|
-
className: "AGB2260",
|
|
16540
|
-
data: MGB2260Type.gb2260,
|
|
16541
|
-
value: looked.code,
|
|
16542
|
-
title: this.props.schema.label,
|
|
16543
|
-
onDismiss: function onDismiss() {
|
|
16544
|
-
return console.log('dismiss');
|
|
16545
|
-
},
|
|
16546
|
-
onOk: function onOk(e) {
|
|
16547
|
-
return _BaseViewer.prototype.changeValue.call(_this, ___default["default"].last(e));
|
|
16548
|
-
}
|
|
16549
|
-
}, p), {}, {
|
|
16550
|
-
children: jsxRuntime.jsx("div", {
|
|
16820
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
16821
|
+
children: [jsxRuntime.jsx("div", {
|
|
16551
16822
|
className: "backfill",
|
|
16552
16823
|
style: this.props.style,
|
|
16824
|
+
onClick: function onClick() {
|
|
16825
|
+
if (!_this2.props.disable) _this2.setState({
|
|
16826
|
+
pickerVisible: true
|
|
16827
|
+
});
|
|
16828
|
+
},
|
|
16553
16829
|
children: looked == null ? void 0 : (_looked$label = looked.label) == null ? void 0 : _looked$label.join("/")
|
|
16554
|
-
})
|
|
16555
|
-
|
|
16830
|
+
}), jsxRuntime.jsx(antdMobile.Picker, _objectSpread$u({
|
|
16831
|
+
columns: MGB2260Type.gb2260,
|
|
16832
|
+
value: looked.code,
|
|
16833
|
+
visible: this.state.pickerVisible,
|
|
16834
|
+
onConfirm: function onConfirm(e) {
|
|
16835
|
+
_BaseViewer.prototype.changeValue.call(_this2, ___default["default"].last(e));
|
|
16836
|
+
|
|
16837
|
+
_this2.setState({
|
|
16838
|
+
pickerVisible: false
|
|
16839
|
+
});
|
|
16840
|
+
},
|
|
16841
|
+
onClose: function onClose() {
|
|
16842
|
+
_this2.setState({
|
|
16843
|
+
pickerVisible: false
|
|
16844
|
+
});
|
|
16845
|
+
}
|
|
16846
|
+
}, p))]
|
|
16847
|
+
});
|
|
16556
16848
|
} else {
|
|
16557
16849
|
// PC
|
|
16558
16850
|
return jsxRuntime.jsx(antd.Cascader, _objectSpread$u({
|
|
@@ -16564,7 +16856,7 @@ var AGB2260 = /*#__PURE__*/function (_BaseViewer) {
|
|
|
16564
16856
|
style: this.props.style,
|
|
16565
16857
|
defaultValue: looked.code,
|
|
16566
16858
|
onChange: function onChange(vv) {
|
|
16567
|
-
_BaseViewer.prototype.changeValue.call(
|
|
16859
|
+
_BaseViewer.prototype.changeValue.call(_this2, ___default["default"].last(vv));
|
|
16568
16860
|
}
|
|
16569
16861
|
}, p), this.props.path);
|
|
16570
16862
|
}
|
|
@@ -17393,39 +17685,58 @@ var UnderlineInputBox = /*#__PURE__*/function (_React$Component) {
|
|
|
17393
17685
|
var SelectBox = /*#__PURE__*/function (_React$Component) {
|
|
17394
17686
|
_inheritsLoose__default["default"](SelectBox, _React$Component);
|
|
17395
17687
|
|
|
17396
|
-
function SelectBox() {
|
|
17397
|
-
|
|
17688
|
+
function SelectBox(props) {
|
|
17689
|
+
var _this;
|
|
17690
|
+
|
|
17691
|
+
_this = _React$Component.call(this, props) || this;
|
|
17692
|
+
_this.state = {
|
|
17693
|
+
pickerVisible: false
|
|
17694
|
+
};
|
|
17695
|
+
return _this;
|
|
17398
17696
|
}
|
|
17399
17697
|
|
|
17400
17698
|
var _proto = SelectBox.prototype;
|
|
17401
17699
|
|
|
17402
17700
|
_proto.render = function render() {
|
|
17403
|
-
var
|
|
17701
|
+
var _this2 = this;
|
|
17404
17702
|
|
|
17405
17703
|
if (MUtil.phoneLike()) {
|
|
17406
17704
|
var _looked$label;
|
|
17407
17705
|
|
|
17408
17706
|
var looked = this.props.options.find(function (o) {
|
|
17409
|
-
return o.value ===
|
|
17707
|
+
return o.value === _this2.props.data;
|
|
17410
17708
|
});
|
|
17411
17709
|
var backfillClass = looked ? "backfill" : "backfill_empty";
|
|
17412
|
-
return jsxRuntime.
|
|
17413
|
-
|
|
17414
|
-
cols: 1,
|
|
17415
|
-
data: this.props.options,
|
|
17416
|
-
value: [this.props.data],
|
|
17417
|
-
onOk: function onOk(e) {
|
|
17418
|
-
return _this.props.onChange(___default["default"].last(e));
|
|
17419
|
-
},
|
|
17420
|
-
onDismiss: function onDismiss() {
|
|
17421
|
-
if (_this.props.onBlur) {
|
|
17422
|
-
_this.props.onBlur();
|
|
17423
|
-
}
|
|
17424
|
-
},
|
|
17425
|
-
children: jsxRuntime.jsx("div", {
|
|
17710
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
17711
|
+
children: [jsxRuntime.jsx("div", {
|
|
17426
17712
|
className: backfillClass,
|
|
17713
|
+
onClick: function onClick() {
|
|
17714
|
+
return _this2.setState({
|
|
17715
|
+
pickerVisible: true
|
|
17716
|
+
});
|
|
17717
|
+
},
|
|
17427
17718
|
children: (_looked$label = looked == null ? void 0 : looked.label) != null ? _looked$label : "点击选择"
|
|
17428
|
-
})
|
|
17719
|
+
}), jsxRuntime.jsx(antdMobile.Picker, {
|
|
17720
|
+
columns: [this.props.options],
|
|
17721
|
+
value: [this.props.data],
|
|
17722
|
+
visible: this.state.pickerVisible,
|
|
17723
|
+
onConfirm: function onConfirm(e) {
|
|
17724
|
+
_this2.props.onChange(___default["default"].last(e));
|
|
17725
|
+
|
|
17726
|
+
_this2.setState({
|
|
17727
|
+
pickerVisible: false
|
|
17728
|
+
});
|
|
17729
|
+
},
|
|
17730
|
+
onClose: function onClose() {
|
|
17731
|
+
_this2.setState({
|
|
17732
|
+
pickerVisible: false
|
|
17733
|
+
});
|
|
17734
|
+
|
|
17735
|
+
if (_this2.props.onBlur) {
|
|
17736
|
+
_this2.props.onBlur();
|
|
17737
|
+
}
|
|
17738
|
+
}
|
|
17739
|
+
})]
|
|
17429
17740
|
});
|
|
17430
17741
|
} else {
|
|
17431
17742
|
return jsxRuntime.jsx(antd.Select, {
|
|
@@ -22659,10 +22970,13 @@ var ARangePicker = /*#__PURE__*/function (_Viewer) {
|
|
|
22659
22970
|
|
|
22660
22971
|
_this = _Viewer.call(this, p) || this;
|
|
22661
22972
|
_this._pickerRef = /*#__PURE__*/React__default["default"].createRef();
|
|
22973
|
+
_this._startConfirmed = false; // 标记开始日期是否已确认,用于区分 onClose 是取消还是确认后的自动触发
|
|
22974
|
+
|
|
22662
22975
|
_this.state = {
|
|
22663
22976
|
ctrlVersion: 1,
|
|
22664
22977
|
noValidate: false,
|
|
22665
|
-
mobileDlg: false
|
|
22978
|
+
mobileDlg: false,
|
|
22979
|
+
mobileStep: 'start'
|
|
22666
22980
|
};
|
|
22667
22981
|
return _this;
|
|
22668
22982
|
}
|
|
@@ -22725,57 +23039,142 @@ var ARangePicker = /*#__PURE__*/function (_Viewer) {
|
|
|
22725
23039
|
_this$getValue,
|
|
22726
23040
|
_this2 = this;
|
|
22727
23041
|
|
|
22728
|
-
|
|
23042
|
+
(_this$props$schema$pr = this.props.schema.props) != null ? _this$props$schema$pr : {};
|
|
22729
23043
|
|
|
22730
23044
|
var rangePickerData = this._data2rangePicker((_this$getValue = this.getValue()) != null ? _this$getValue : []);
|
|
22731
23045
|
|
|
22732
23046
|
if (MUtil.phoneLike()) {
|
|
22733
|
-
var _this$props$schema$da3;
|
|
23047
|
+
var _this$props$schema$da3, _this$props$schema$da4;
|
|
22734
23048
|
|
|
22735
|
-
var show = MDateRangeType.toReadableN(assembly, this.props.schema, _Viewer.prototype.getValue.call(this));
|
|
23049
|
+
var show = MDateRangeType.toReadableN(assembly, this.props.schema, _Viewer.prototype.getValue.call(this)); // 根据 precision 配置确定移动端 DatePicker 精度(使用扁平化属性 dateRangePrecision)
|
|
23050
|
+
|
|
23051
|
+
var mobilePrecision = this.props.schema.dateRangePrecision || 'day';
|
|
22736
23052
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
22737
23053
|
children: [jsxRuntime.jsxs("div", {
|
|
22738
23054
|
className: "backfill",
|
|
22739
23055
|
onClick: function onClick() {
|
|
22740
23056
|
return _this2.setState({
|
|
22741
|
-
mobileDlg: true
|
|
23057
|
+
mobileDlg: true,
|
|
23058
|
+
mobileStep: 'start'
|
|
22742
23059
|
});
|
|
22743
23060
|
},
|
|
22744
23061
|
children: [" ", show != null ? show : '请点击选择', " "]
|
|
22745
|
-
}), jsxRuntime.jsx(antdMobile.
|
|
22746
|
-
visible: this.state.mobileDlg,
|
|
22747
|
-
|
|
22748
|
-
|
|
22749
|
-
|
|
22750
|
-
|
|
22751
|
-
|
|
22752
|
-
|
|
23062
|
+
}), jsxRuntime.jsx(antdMobile.DatePicker, {
|
|
23063
|
+
visible: this.state.mobileDlg && this.state.mobileStep === 'start',
|
|
23064
|
+
precision: mobilePrecision,
|
|
23065
|
+
title: "\u9009\u62E9\u5F00\u59CB\u65E5\u671F",
|
|
23066
|
+
min: this.props.schema.min ? new Date(this.props.schema.min) : undefined,
|
|
23067
|
+
max: this.props.schema.max ? new Date(this.props.schema.max) : undefined,
|
|
23068
|
+
onConfirm: function onConfirm(val) {
|
|
23069
|
+
_this2._startConfirmed = true;
|
|
23070
|
+
|
|
23071
|
+
_this2.setState({
|
|
23072
|
+
mobileStartDate: val,
|
|
23073
|
+
mobileStep: 'end'
|
|
22753
23074
|
});
|
|
22754
23075
|
},
|
|
22755
|
-
|
|
22756
|
-
|
|
23076
|
+
onClose: function onClose() {
|
|
23077
|
+
// antd-mobile v5 确认时会同时触发 onConfirm 和 onClose
|
|
23078
|
+
// 用实例变量同步判断:确认后的 onClose 应忽略,仅用户主动取消时才关闭
|
|
23079
|
+
if (_this2._startConfirmed) {
|
|
23080
|
+
_this2._startConfirmed = false;
|
|
23081
|
+
return;
|
|
23082
|
+
}
|
|
22757
23083
|
|
|
22758
23084
|
_this2.setState({
|
|
22759
23085
|
mobileDlg: false
|
|
22760
23086
|
});
|
|
22761
23087
|
}
|
|
22762
|
-
},
|
|
23088
|
+
}, "start_" + mobilePrecision), jsxRuntime.jsx(antdMobile.DatePicker, {
|
|
23089
|
+
visible: this.state.mobileDlg && this.state.mobileStep === 'end',
|
|
23090
|
+
precision: mobilePrecision,
|
|
23091
|
+
title: // 如果允许"至今"且开始时间不在未来,在标题区域展示"至今"按钮
|
|
23092
|
+
!((_this$props$schema$da3 = this.props.schema.dateRange) != null && _this$props$schema$da3.hideTillNow) && !((_this$props$schema$da4 = this.props.schema.dateRange) != null && _this$props$schema$da4.showTime) && !(this.state.mobileStartDate && this.state.mobileStartDate > new Date()) ? jsxRuntime.jsxs("div", {
|
|
23093
|
+
style: {
|
|
23094
|
+
display: 'flex',
|
|
23095
|
+
alignItems: 'center',
|
|
23096
|
+
justifyContent: 'center',
|
|
23097
|
+
gap: 12
|
|
23098
|
+
},
|
|
23099
|
+
children: [jsxRuntime.jsx("span", {
|
|
23100
|
+
children: "\u9009\u62E9\u7ED3\u675F\u65E5\u671F"
|
|
23101
|
+
}), jsxRuntime.jsx(antd.Button, {
|
|
23102
|
+
size: "small",
|
|
23103
|
+
type: "primary",
|
|
23104
|
+
onClick: function onClick() {
|
|
23105
|
+
var startDate = _this2.state.mobileStartDate;
|
|
23106
|
+
|
|
23107
|
+
if (startDate) {
|
|
23108
|
+
_Viewer.prototype.changeValueEx.call(_this2, _this2._rangePicker2Data([moment__default["default"](startDate), moment__default["default"]()], true), true, true);
|
|
23109
|
+
}
|
|
23110
|
+
|
|
23111
|
+
_this2.setState({
|
|
23112
|
+
mobileDlg: false
|
|
23113
|
+
});
|
|
23114
|
+
},
|
|
23115
|
+
children: "\u81F3\u4ECA"
|
|
23116
|
+
})]
|
|
23117
|
+
}) : "选择结束日期",
|
|
23118
|
+
min: this.state.mobileStartDate || (this.props.schema.min ? new Date(this.props.schema.min) : undefined),
|
|
23119
|
+
max: this.props.schema.max ? new Date(this.props.schema.max) : undefined,
|
|
23120
|
+
onConfirm: function onConfirm(val) {
|
|
23121
|
+
var startDate = _this2.state.mobileStartDate;
|
|
23122
|
+
|
|
23123
|
+
if (startDate) {
|
|
23124
|
+
// 防御:结束日期不能早于开始日期
|
|
23125
|
+
var finalEnd = val < startDate ? startDate : val;
|
|
23126
|
+
|
|
23127
|
+
_Viewer.prototype.changeValueEx.call(_this2, _this2._rangePicker2Data([moment__default["default"](startDate), moment__default["default"](finalEnd)], false), true, true);
|
|
23128
|
+
}
|
|
23129
|
+
|
|
23130
|
+
_this2.setState({
|
|
23131
|
+
mobileDlg: false
|
|
23132
|
+
});
|
|
23133
|
+
},
|
|
23134
|
+
onClose: function onClose() {
|
|
23135
|
+
// 回退到第一步,让用户可以重新选择开始日期
|
|
23136
|
+
_this2.setState({
|
|
23137
|
+
mobileStep: 'start'
|
|
23138
|
+
});
|
|
23139
|
+
}
|
|
23140
|
+
}, "end_" + mobilePrecision)]
|
|
22763
23141
|
});
|
|
22764
23142
|
} else {
|
|
22765
|
-
var _this$props$schema$
|
|
23143
|
+
var _this$props$schema$da5, _this$props$schema$da6, _this$props$schema$da7;
|
|
23144
|
+
|
|
23145
|
+
// 根据 precision 配置确定 PC 端 picker 模式和 showTime(使用扁平化属性 dateRangePrecision)
|
|
23146
|
+
var precision = this.props.schema.dateRangePrecision;
|
|
23147
|
+
var pcShowTime = precision === 'minute' || ((_this$props$schema$da5 = this.props.schema.dateRange) == null ? void 0 : _this$props$schema$da5.showTime);
|
|
23148
|
+
var hideFooter = ((_this$props$schema$da6 = this.props.schema.dateRange) == null ? void 0 : _this$props$schema$da6.hideTillNow) || pcShowTime; // 动态构建额外属性,避免 showTime 和 picker 同时传入导致类型冲突
|
|
23149
|
+
|
|
23150
|
+
var extraProps = {};
|
|
23151
|
+
|
|
23152
|
+
if (precision === 'year') {
|
|
23153
|
+
extraProps.picker = 'year';
|
|
23154
|
+
} else if (precision === 'month') {
|
|
23155
|
+
extraProps.picker = 'month';
|
|
23156
|
+
} else if (pcShowTime) {
|
|
23157
|
+
extraProps.showTime = true;
|
|
23158
|
+
} // 构造元素
|
|
22766
23159
|
|
|
22767
|
-
|
|
22768
|
-
return jsxRuntime.jsx(antd.DatePicker.RangePicker, {
|
|
23160
|
+
|
|
23161
|
+
return jsxRuntime.jsx(antd.DatePicker.RangePicker, _objectSpread$8({
|
|
22769
23162
|
ref: this._pickerRef,
|
|
22770
|
-
|
|
22771
|
-
|
|
22772
|
-
|
|
22773
|
-
|
|
23163
|
+
renderExtraFooter: hideFooter ? undefined : function (mode) {
|
|
23164
|
+
var _this2$_onCalendarCha;
|
|
23165
|
+
|
|
23166
|
+
// 如果开始时间超过当前时间(未来时间),不展示"至今"按钮
|
|
23167
|
+
var startMoment = (_this2$_onCalendarCha = _this2._onCalendarChangeValue) == null ? void 0 : _this2$_onCalendarCha[0];
|
|
23168
|
+
|
|
23169
|
+
if (startMoment && startMoment.isAfter(moment__default["default"]())) {
|
|
23170
|
+
return null;
|
|
23171
|
+
}
|
|
23172
|
+
|
|
23173
|
+
return jsxRuntime.jsx("div", {
|
|
22774
23174
|
style: {
|
|
22775
23175
|
textAlign: "right"
|
|
22776
|
-
}
|
|
22777
|
-
|
|
22778
|
-
children: jsxRuntime.jsx(antdMobile.Button, {
|
|
23176
|
+
},
|
|
23177
|
+
children: jsxRuntime.jsx(antd.Button, {
|
|
22779
23178
|
size: "small",
|
|
22780
23179
|
style: {
|
|
22781
23180
|
width: "100px",
|
|
@@ -22787,13 +23186,13 @@ var ARangePicker = /*#__PURE__*/function (_Viewer) {
|
|
|
22787
23186
|
},
|
|
22788
23187
|
children: "\u81F3\u4ECA"
|
|
22789
23188
|
})
|
|
22790
|
-
})
|
|
23189
|
+
});
|
|
22791
23190
|
},
|
|
22792
23191
|
bordered: this.props.hideBorder ? false : true,
|
|
22793
23192
|
style: {
|
|
22794
|
-
|
|
23193
|
+
width: "300px"
|
|
22795
23194
|
},
|
|
22796
|
-
locale: zhCN__default["default"],
|
|
23195
|
+
locale: zhCN__default$1["default"],
|
|
22797
23196
|
defaultValue: rangePickerData,
|
|
22798
23197
|
onCalendarChange: function onCalendarChange(d) {
|
|
22799
23198
|
_this2._onCalendarChangeValue = d;
|
|
@@ -22801,7 +23200,7 @@ var ARangePicker = /*#__PURE__*/function (_Viewer) {
|
|
|
22801
23200
|
onChange: function onChange(vv) {
|
|
22802
23201
|
_Viewer.prototype.changeValueEx.call(_this2, _this2._rangePicker2Data(vv, false), true, true);
|
|
22803
23202
|
}
|
|
22804
|
-
}, this.state.ctrlVersion);
|
|
23203
|
+
}, extraProps), this.state.ctrlVersion + "_" + ((_this$props$schema$da7 = this.props.schema.dateRangePrecision) != null ? _this$props$schema$da7 : 'day'));
|
|
22805
23204
|
}
|
|
22806
23205
|
};
|
|
22807
23206
|
|
|
@@ -23866,7 +24265,50 @@ var ACascadePicker = /*#__PURE__*/function (_BaseViewer) {
|
|
|
23866
24265
|
var p = (_this$props$schema$pr = this.props.schema.props) != null ? _this$props$schema$pr : {};
|
|
23867
24266
|
|
|
23868
24267
|
if (MUtil.phoneLike()) {
|
|
23869
|
-
|
|
24268
|
+
var _this$state;
|
|
24269
|
+
|
|
24270
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
24271
|
+
children: [jsxRuntime.jsx("div", {
|
|
24272
|
+
className: "backfill",
|
|
24273
|
+
onClick: function onClick() {
|
|
24274
|
+
return _this.setState({
|
|
24275
|
+
cascadeVisible: true
|
|
24276
|
+
});
|
|
24277
|
+
},
|
|
24278
|
+
children: show.length > 0 ? show.map(function (item) {
|
|
24279
|
+
return item.label || item.value || item;
|
|
24280
|
+
}).join('-') : '请点击选择'
|
|
24281
|
+
}), jsxRuntime.jsx(antdMobile.CascadePicker, _objectSpread$4({
|
|
24282
|
+
options: candidate,
|
|
24283
|
+
value: show.map(function (item) {
|
|
24284
|
+
return item.value || item;
|
|
24285
|
+
}),
|
|
24286
|
+
visible: (_this$state = this.state) == null ? void 0 : _this$state.cascadeVisible,
|
|
24287
|
+
onConfirm: function onConfirm(v) {
|
|
24288
|
+
var vLabel = [];
|
|
24289
|
+
v.forEach(function (item) {
|
|
24290
|
+
candidate.forEach(function (dataItem) {
|
|
24291
|
+
var findItem = findById(dataItem, item, "label", "value", "children");
|
|
24292
|
+
|
|
24293
|
+
if (findItem !== -1) {
|
|
24294
|
+
vLabel.push(findItem);
|
|
24295
|
+
}
|
|
24296
|
+
});
|
|
24297
|
+
});
|
|
24298
|
+
|
|
24299
|
+
_BaseViewer.prototype.changeValue.call(_this, vLabel);
|
|
24300
|
+
|
|
24301
|
+
_this.setState({
|
|
24302
|
+
cascadeVisible: false
|
|
24303
|
+
});
|
|
24304
|
+
},
|
|
24305
|
+
onClose: function onClose() {
|
|
24306
|
+
_this.setState({
|
|
24307
|
+
cascadeVisible: false
|
|
24308
|
+
});
|
|
24309
|
+
}
|
|
24310
|
+
}, p))]
|
|
24311
|
+
});
|
|
23870
24312
|
} else {
|
|
23871
24313
|
return jsxRuntime.jsx(antd.Cascader, _objectSpread$4({
|
|
23872
24314
|
options: candidate,
|
|
@@ -24514,9 +24956,11 @@ function ensureM3() {
|
|
|
24514
24956
|
}
|
|
24515
24957
|
|
|
24516
24958
|
init = true;
|
|
24959
|
+
moment__default["default"].locale('zh-cn');
|
|
24517
24960
|
assembly.types = ___default["default"].merge(assembly.types, {
|
|
24518
24961
|
enum: MEnumType,
|
|
24519
24962
|
gb2260: MGB2260Type,
|
|
24963
|
+
date: MDateTimeType,
|
|
24520
24964
|
datetime: MDateTimeType,
|
|
24521
24965
|
year: MDateTimeType,
|
|
24522
24966
|
yearMonth: MDateTimeType,
|
|
@@ -24582,6 +25026,7 @@ function ensureM3() {
|
|
|
24582
25026
|
editor: {
|
|
24583
25027
|
enum: "ASelector",
|
|
24584
25028
|
gb2260: "AGB2260",
|
|
25029
|
+
date: "ADatetimePicker",
|
|
24585
25030
|
datetime: "ADatetimePicker",
|
|
24586
25031
|
year: "ADatetimePicker",
|
|
24587
25032
|
yearMonth: "ADatetimePicker",
|
|
@@ -24610,6 +25055,7 @@ function ensureM3() {
|
|
|
24610
25055
|
readable: {
|
|
24611
25056
|
enum: "DivViewer",
|
|
24612
25057
|
gb2260: "DivViewer",
|
|
25058
|
+
date: "DivViewer",
|
|
24613
25059
|
datetime: "DivViewer",
|
|
24614
25060
|
year: "DivViewer",
|
|
24615
25061
|
yearMonth: "DivViewer",
|