vap1 0.4.1 → 0.4.3
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/components/Box/Box.js +1 -1
- package/components/Trees/COTree/COTreeUtil.js +1 -1
- package/hooks/useApp.d.ts +1 -1
- package/package.json +1 -1
- package/utils/PageUtil.js +6 -8
- package/utils/Renders/ApiGetRender.js +23 -18
- package/utils/Renders/ApiPostRender.js +1 -1
- package/utils/Renders/DictRender.d.ts +6 -3
- package/utils/Renders/DictRender.js +43 -160
- package/utils/Renders/ListRender.js +1 -1
- package/utils/Renders/_DictBaseRender.d.ts +13 -0
- package/utils/Renders/_DictBaseRender.js +167 -0
- package/utils/Renders/_define.d.ts +10 -0
package/components/Box/Box.js
CHANGED
|
@@ -150,7 +150,7 @@ exports.Box = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
150
150
|
setState({ height: Math.floor(total) });
|
|
151
151
|
document.body.classList.remove('v-resizing');
|
|
152
152
|
};
|
|
153
|
-
(0, react_1.useEffect)(function () { setTimeout(resize,
|
|
153
|
+
(0, react_1.useEffect)(function () { setTimeout(resize, 120); }, [app === null || app === void 0 ? void 0 : app.theme.contentHeight]); // 1.5 版本:延时 120ms
|
|
154
154
|
(0, react_1.useImperativeHandle)(ref, function () { return ({ resize: resize }); }, []);
|
|
155
155
|
(0, react_1.useLayoutEffect)(function () {
|
|
156
156
|
setTimeout(resize, 5);
|
|
@@ -62,12 +62,12 @@ var loop = function (root, FIELDS, treeData, checkedKeys, FULL_CHECKED, HALF_CHE
|
|
|
62
62
|
// node.className = 'co-tree-select-all';
|
|
63
63
|
// node.icon = <Icon type="check-circle" />;
|
|
64
64
|
// node.title = <span>{item[FIELDS.titleField]}{TIP && <small>(含下级)</small>}</span>
|
|
65
|
+
node.isLeaf = true;
|
|
65
66
|
node.title = react_1.default.createElement("span", { className: 'co-tree-select-all' },
|
|
66
67
|
react_1.default.createElement(Icon_1.Icon, { type: "check-circle" }),
|
|
67
68
|
" ",
|
|
68
69
|
react_1.default.createElement("span", null, item[FIELDS.titleField]),
|
|
69
70
|
TIP && react_1.default.createElement("small", null, "(\u542B\u4E0B\u7EA7)"));
|
|
70
|
-
node.isLeaf = true;
|
|
71
71
|
checkedKeys.checked.push(item[FIELDS.keyField]);
|
|
72
72
|
}
|
|
73
73
|
else if (HALF_CHECKED.has(item[FIELDS.keyField])) {
|
package/hooks/useApp.d.ts
CHANGED
|
@@ -99,7 +99,7 @@ export interface GlobalMenu {
|
|
|
99
99
|
* 方法 - 菜单跳转
|
|
100
100
|
* @param menu 参数支持
|
|
101
101
|
* 1. 一个路径:如 /admin/#/user
|
|
102
|
-
* 2. 一个菜单: 如 { root:'/admin', route:'/user' }
|
|
102
|
+
* 2. 一个菜单: 如 { root:'/admin/', route:'/user' }
|
|
103
103
|
* 3. 一个地址: 如 https://www.qq.com ,(弹出新的TAB面面)
|
|
104
104
|
* 4. 菜单ID : 如 "1" , 将会通过 id 获取具体菜单(打开特殊 sign 菜单用此项)
|
|
105
105
|
*
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"vap1","version":"0.4.
|
|
1
|
+
{"name":"vap1","version":"0.4.3","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
|
package/utils/PageUtil.js
CHANGED
|
@@ -57,7 +57,7 @@ var _Support_1 = require("./_Support");
|
|
|
57
57
|
var _AjaxUtil_1 = require("./_AjaxUtil");
|
|
58
58
|
var i18n_1 = require("./i18n");
|
|
59
59
|
var Global_1 = require("./Global");
|
|
60
|
-
var len =
|
|
60
|
+
var len = _Support_1.APP_ROOT ? _Support_1.APP_ROOT.length : 0;
|
|
61
61
|
/**
|
|
62
62
|
* 阻止事件简单封装
|
|
63
63
|
*/
|
|
@@ -111,15 +111,15 @@ var DEFAULT_RESOLVER = function (url) { return url; };
|
|
|
111
111
|
exports.resolveURL = len == 0 ? DEFAULT_RESOLVER : function (url) {
|
|
112
112
|
if (!url.startsWith('/'))
|
|
113
113
|
return url;
|
|
114
|
-
if (url.startsWith(
|
|
114
|
+
if (url.startsWith(_Support_1.APP_ROOT))
|
|
115
115
|
return url;
|
|
116
|
-
return
|
|
116
|
+
return _Support_1.APP_ROOT + url;
|
|
117
117
|
};
|
|
118
118
|
/**
|
|
119
119
|
* 兼容二级目录-恢复URL
|
|
120
120
|
*/
|
|
121
121
|
exports.clearURL = len == 0 ? DEFAULT_RESOLVER : function (url) {
|
|
122
|
-
if (!url.startsWith(
|
|
122
|
+
if (!url.startsWith(_Support_1.APP_ROOT))
|
|
123
123
|
return url;
|
|
124
124
|
return url.substring(len);
|
|
125
125
|
};
|
|
@@ -129,7 +129,7 @@ exports.clearURL = len == 0 ? DEFAULT_RESOLVER : function (url) {
|
|
|
129
129
|
var urlPath = function (url) {
|
|
130
130
|
var result = (0, exports.clearURL)(url);
|
|
131
131
|
var idx = result.indexOf('?');
|
|
132
|
-
if (idx
|
|
132
|
+
if (idx >= 0)
|
|
133
133
|
result = result.substring(0, idx);
|
|
134
134
|
idx = result.indexOf('#');
|
|
135
135
|
if (idx >= 0)
|
|
@@ -142,12 +142,10 @@ var GLOBAL_APPS = new Map();
|
|
|
142
142
|
* 获取当前 APP 名称
|
|
143
143
|
*/
|
|
144
144
|
var currentApp = function (root) {
|
|
145
|
-
var pathname = root ? root : location.pathname;
|
|
145
|
+
var pathname = (0, exports.urlPath)(root ? root : location.pathname);
|
|
146
146
|
if (GLOBAL_APPS.has(pathname))
|
|
147
147
|
return GLOBAL_APPS.get(pathname);
|
|
148
148
|
var path = pathname;
|
|
149
|
-
if (lodash_1.default.startsWith(path, _Support_1.APP_ROOT))
|
|
150
|
-
path = path.substring(_Support_1.APP_ROOT.length);
|
|
151
149
|
if (lodash_1.default.endsWith(path, '/'))
|
|
152
150
|
path = path.substring(0, path.length - 1);
|
|
153
151
|
if (lodash_1.default.startsWith(path, '/'))
|
|
@@ -100,21 +100,21 @@ var _define_1 = require("./_define");
|
|
|
100
100
|
var Const_1 = require("../Const");
|
|
101
101
|
var API_CACHES = new Map();
|
|
102
102
|
var loadApi = function (option) { return __awaiter(void 0, void 0, void 0, function () {
|
|
103
|
-
var
|
|
103
|
+
var CACHE_KEY, cache, result, arr;
|
|
104
104
|
return __generator(this, function (_a) {
|
|
105
105
|
switch (_a.label) {
|
|
106
106
|
case 0:
|
|
107
|
+
CACHE_KEY = option.cacheKey || option.api;
|
|
107
108
|
if (option.cache !== false)
|
|
108
|
-
index_1.Ajax.SESSION(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
API_CACHES.set(KEY, {
|
|
109
|
+
index_1.Ajax.SESSION(CACHE_KEY);
|
|
110
|
+
if (!API_CACHES.has(CACHE_KEY)) {
|
|
111
|
+
API_CACHES.set(CACHE_KEY, {
|
|
112
112
|
fetcher: index_1.Ajax.GET(option.api),
|
|
113
113
|
loaded: false,
|
|
114
114
|
map: new Map()
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
|
-
cache = API_CACHES.get(
|
|
117
|
+
cache = API_CACHES.get(CACHE_KEY);
|
|
118
118
|
if (cache.loaded)
|
|
119
119
|
return [2 /*return*/, false];
|
|
120
120
|
return [4 /*yield*/, cache.fetcher];
|
|
@@ -131,6 +131,7 @@ var loadApi = function (option) { return __awaiter(void 0, void 0, void 0, funct
|
|
|
131
131
|
}); };
|
|
132
132
|
exports.loadApi = loadApi;
|
|
133
133
|
var _ApiGetRender = function (props) {
|
|
134
|
+
var CACHE_KEY = props.cacheKey || props.api;
|
|
134
135
|
var update = (0, hooks_1.useUpdate)();
|
|
135
136
|
(0, react_1.useEffect)(function () {
|
|
136
137
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -146,7 +147,7 @@ var _ApiGetRender = function (props) {
|
|
|
146
147
|
}
|
|
147
148
|
});
|
|
148
149
|
}); })();
|
|
149
|
-
var KEY = "_API_GET_EVENT_" +
|
|
150
|
+
var KEY = "_API_GET_EVENT_" + CACHE_KEY.split('/').join('_');
|
|
150
151
|
index_1.EventUtil.on(KEY, function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
151
152
|
return __generator(this, function (_a) {
|
|
152
153
|
switch (_a.label) {
|
|
@@ -160,7 +161,7 @@ var _ApiGetRender = function (props) {
|
|
|
160
161
|
}); });
|
|
161
162
|
return function () { return index_1.EventUtil.off(KEY); };
|
|
162
163
|
}, []);
|
|
163
|
-
var cache = API_CACHES.get(
|
|
164
|
+
var cache = API_CACHES.get(CACHE_KEY);
|
|
164
165
|
if (props.value === null || props.value === '' || cache == null || cache.map == null || cache.map.size == 0) {
|
|
165
166
|
return props.default || Const_1.NONE;
|
|
166
167
|
}
|
|
@@ -187,7 +188,8 @@ var _ApiGetRender = function (props) {
|
|
|
187
188
|
* 从一个 GET API 中取出对应的值,并渲染到页面上
|
|
188
189
|
*/
|
|
189
190
|
var ApiGetRender = function (options) {
|
|
190
|
-
var
|
|
191
|
+
var CACHE_KEY = options.cacheKey || options.api;
|
|
192
|
+
var fn = function (txt) { return react_1.default.createElement(_ApiGetRender, __assign({ key: CACHE_KEY + txt }, options, { value: txt })); };
|
|
191
193
|
fn.useOption = function (config) {
|
|
192
194
|
var _a = __read((0, react_1.useState)([]), 2), state = _a[0], setState = _a[1];
|
|
193
195
|
(0, react_1.useEffect)(function () {
|
|
@@ -198,7 +200,7 @@ var ApiGetRender = function (options) {
|
|
|
198
200
|
case 0: return [4 /*yield*/, (0, exports.loadApi)(options)];
|
|
199
201
|
case 1:
|
|
200
202
|
_a.sent();
|
|
201
|
-
cache = API_CACHES.get(
|
|
203
|
+
cache = API_CACHES.get(CACHE_KEY);
|
|
202
204
|
return [4 /*yield*/, cache.fetcher];
|
|
203
205
|
case 2:
|
|
204
206
|
result = _a.sent();
|
|
@@ -241,7 +243,7 @@ var ApiGetRender = function (options) {
|
|
|
241
243
|
}
|
|
242
244
|
});
|
|
243
245
|
}); };
|
|
244
|
-
var KEY = "_API_GET_EVENT_" +
|
|
246
|
+
var KEY = "_API_GET_EVENT_" + CACHE_KEY.split('/').join('_');
|
|
245
247
|
index_1.EventUtil.on(KEY, fetchOptions);
|
|
246
248
|
fetchOptions();
|
|
247
249
|
return function () { return index_1.EventUtil.off(KEY); };
|
|
@@ -249,28 +251,31 @@ var ApiGetRender = function (options) {
|
|
|
249
251
|
return state;
|
|
250
252
|
};
|
|
251
253
|
fn.getText = function (val, def) {
|
|
252
|
-
if (API_CACHES.has(
|
|
253
|
-
|
|
254
|
+
if (API_CACHES.has(CACHE_KEY)) {
|
|
255
|
+
var CACHE_MAPPER = API_CACHES.get(CACHE_KEY);
|
|
256
|
+
if (CACHE_MAPPER.loaded) {
|
|
257
|
+
return CACHE_MAPPER.map.get(val) || (def === undefined ? val : def);
|
|
258
|
+
}
|
|
254
259
|
}
|
|
255
260
|
var resp = (0, XHR_1.GETSYNC)(options.api);
|
|
256
261
|
var map = new Map();
|
|
257
262
|
var arr = (0, _define_1.getList)(resp);
|
|
258
263
|
arr.map(function (item) { return map.set(item[options.valueField] + '', item[options.nameField]); });
|
|
259
|
-
API_CACHES.set(
|
|
264
|
+
API_CACHES.set(CACHE_KEY, {
|
|
260
265
|
fetcher: index_1.Ajax.GET(options.api),
|
|
261
266
|
loaded: true,
|
|
262
267
|
map: map,
|
|
263
268
|
});
|
|
264
|
-
return map.get(val) || (def
|
|
269
|
+
return map.get(val) || (def === undefined ? val : def);
|
|
265
270
|
};
|
|
266
271
|
fn.reflush = function () {
|
|
267
|
-
index_1.Ajax.CLEAR(
|
|
268
|
-
API_CACHES.set(
|
|
272
|
+
index_1.Ajax.CLEAR(CACHE_KEY);
|
|
273
|
+
API_CACHES.set(CACHE_KEY, {
|
|
269
274
|
fetcher: index_1.Ajax.GET(options.api),
|
|
270
275
|
loaded: false,
|
|
271
276
|
map: new Map()
|
|
272
277
|
});
|
|
273
|
-
var KEY = "_API_GET_EVENT_" +
|
|
278
|
+
var KEY = "_API_GET_EVENT_" + CACHE_KEY.split('/').join('_');
|
|
274
279
|
index_1.EventUtil.call(KEY);
|
|
275
280
|
};
|
|
276
281
|
return fn;
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import type { Render, BaseRenderOptions, OptionConvertConfig } from './_define';
|
|
2
2
|
import type { BaseOption, PlainObject } from '../../basetype';
|
|
3
|
+
declare const DICT_FORMATS: readonly ["tag", "color", "status", "sup", "sub", "icon", "badge", "progress", "tip", "clazz"];
|
|
4
|
+
type DictFormat = typeof DICT_FORMATS[number];
|
|
3
5
|
type DictRenderOptions = Omit<BaseRenderOptions, 'len' | 'format'> & {
|
|
4
6
|
dictType: string;
|
|
5
7
|
};
|
|
6
8
|
type DictInfo = {
|
|
7
9
|
code: string;
|
|
8
|
-
format?:
|
|
10
|
+
format?: DictFormat;
|
|
9
11
|
nodes: BaseOption[];
|
|
10
12
|
};
|
|
11
|
-
|
|
12
|
-
DICTS:
|
|
13
|
+
type GlobalDict = {
|
|
14
|
+
DICTS: BaseOption[];
|
|
13
15
|
DICT_MAP: Map<string, DictInfo>;
|
|
14
16
|
};
|
|
17
|
+
declare const _V_DICT: GlobalDict;
|
|
15
18
|
interface DictRender extends Render {
|
|
16
19
|
/**
|
|
17
20
|
* 将数据转出为 option 用于 select / checkbox / vap组件中的 options 等。
|
|
@@ -33,165 +33,54 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
33
33
|
exports.DICT = exports.initDict = exports.DictRender = void 0;
|
|
34
34
|
var react_1 = __importDefault(require("react"));
|
|
35
35
|
var lodash_1 = __importDefault(require("lodash"));
|
|
36
|
-
var antd_1 = require("antd");
|
|
37
|
-
var Icon_1 = require("../../components/_adapt/Icon");
|
|
38
36
|
var index_1 = require("../index");
|
|
39
37
|
var _i18n_1 = require("../../components/_i18n");
|
|
40
38
|
var _Support_1 = require("../_Support");
|
|
41
39
|
var Const_1 = require("../Const");
|
|
40
|
+
var _DictBaseRender_1 = require("./_DictBaseRender");
|
|
41
|
+
var DICT_FORMATS = ['tag', 'color', 'status', 'sup', 'sub', 'icon', 'badge', 'progress', 'tip', 'clazz'];
|
|
42
|
+
;
|
|
43
|
+
var VALIDATE_FORMAT = new Set(DICT_FORMATS);
|
|
42
44
|
var _V_DICT = (0, _Support_1.globalDefault)('_V_DICT', { DICTS: [], DICT_MAP: new Map() });
|
|
43
45
|
exports.DICT = _V_DICT;
|
|
44
46
|
var DICT = _V_DICT.DICT_MAP;
|
|
45
|
-
|
|
46
|
-
var
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
65
|
-
if (STATUS.has(format)) {
|
|
66
|
-
// return <Badge status={format as any} text={txt} />
|
|
67
|
-
}
|
|
68
|
-
return react_1.default.createElement(antd_1.Badge, { className: "c-dict-status", status: "default", text: txt });
|
|
69
|
-
};
|
|
70
|
-
var subRender = function (key, def, map) {
|
|
71
|
-
if (!map.has(key)) {
|
|
72
|
-
if (def === false)
|
|
73
|
-
return key;
|
|
74
|
-
return def;
|
|
75
|
-
}
|
|
76
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
77
|
-
return react_1.default.createElement("span", { className: "c-dict-sub" },
|
|
78
|
-
txt,
|
|
79
|
-
format && react_1.default.createElement("sub", null, format));
|
|
80
|
-
};
|
|
81
|
-
var supRender = function (key, def, map) {
|
|
82
|
-
if (!map.has(key)) {
|
|
83
|
-
if (def === false)
|
|
84
|
-
return key;
|
|
85
|
-
return def;
|
|
86
|
-
}
|
|
87
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
88
|
-
return react_1.default.createElement("span", { className: "c-dict-sup" },
|
|
89
|
-
txt,
|
|
90
|
-
format && react_1.default.createElement("sup", null, format));
|
|
91
|
-
};
|
|
92
|
-
var iconRender = function (key, def, map) {
|
|
93
|
-
if (!map.has(key)) {
|
|
94
|
-
if (def === false)
|
|
95
|
-
return key;
|
|
96
|
-
return def;
|
|
97
|
-
}
|
|
98
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
99
|
-
if (format == null || format == '') {
|
|
100
|
-
return txt;
|
|
101
|
-
}
|
|
102
|
-
if (lodash_1.default.startsWith(format, '/')) {
|
|
103
|
-
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
104
|
-
react_1.default.createElement("img", { className: "c-dict-icon-img", src: format }),
|
|
105
|
-
txt);
|
|
106
|
-
}
|
|
107
|
-
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
108
|
-
react_1.default.createElement(Icon_1.Icon, { className: "c-dict-icon", type: format }),
|
|
109
|
-
txt);
|
|
110
|
-
};
|
|
111
|
-
// const PROGRESS = new Set<string>(['prepare', 'ready', 'doing', 'finsh', 'error'])
|
|
112
|
-
var progressRender = function (key, def, map) {
|
|
113
|
-
if (!map.has(key)) {
|
|
114
|
-
if (def == false)
|
|
115
|
-
return key;
|
|
116
|
-
return def;
|
|
117
|
-
}
|
|
118
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
119
|
-
switch (format) {
|
|
120
|
-
case 'prepare':
|
|
121
|
-
return react_1.default.createElement(antd_1.Badge, { className: "c-dict-progress c-dict-progress-" + format, count: react_1.default.createElement(Icon_1.Icon, { type: "plus-circle" }), text: txt });
|
|
122
|
-
case 'ready':
|
|
123
|
-
return react_1.default.createElement(antd_1.Badge, { className: "c-dict-progress c-dict-progress-" + format, count: react_1.default.createElement(Icon_1.Icon, { type: "clock-circle" }), text: txt });
|
|
124
|
-
case 'doing':
|
|
125
|
-
return react_1.default.createElement(antd_1.Badge, { className: "c-dict-progress c-dict-progress-" + format, count: react_1.default.createElement(Icon_1.Icon, { type: "play-circle" }), text: txt });
|
|
126
|
-
case 'finsh':
|
|
127
|
-
return react_1.default.createElement(antd_1.Badge, { className: "c-dict-progress c-dict-progress-" + format, count: react_1.default.createElement(Icon_1.Icon, { type: "check-circle" }), text: txt });
|
|
128
|
-
case 'error':
|
|
129
|
-
return react_1.default.createElement(antd_1.Badge, { className: "c-dict-progress c-dict-progress-" + format, count: react_1.default.createElement(Icon_1.Icon, { type: "close-circle" }), text: txt });
|
|
130
|
-
}
|
|
131
|
-
return txt;
|
|
132
|
-
};
|
|
133
|
-
var borderRender = function (key, def, map) {
|
|
134
|
-
if (!map.has(key)) {
|
|
135
|
-
if (def === false)
|
|
136
|
-
return key;
|
|
137
|
-
return def;
|
|
138
|
-
}
|
|
139
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
140
|
-
return react_1.default.createElement("span", { className: "c-dict-border", style: { color: format, borderLeftColor: format } }, txt);
|
|
141
|
-
};
|
|
142
|
-
var extClass = function (key, def, map) {
|
|
143
|
-
if (!map.has(key)) {
|
|
144
|
-
if (def === false)
|
|
145
|
-
return key;
|
|
146
|
-
return def;
|
|
147
|
-
}
|
|
148
|
-
var _a = __read(map.get(key), 2), txt = _a[0], format = _a[1];
|
|
149
|
-
if (format) {
|
|
150
|
-
return react_1.default.createElement("span", { className: format }, txt);
|
|
151
|
-
}
|
|
152
|
-
return txt;
|
|
153
|
-
};
|
|
154
|
-
var renderDictValue = function (info, item) {
|
|
155
|
-
switch (info.format) {
|
|
156
|
-
case 'tag':
|
|
157
|
-
// return tagRender(item.value);
|
|
158
|
-
break;
|
|
47
|
+
var _DictRender = function (props) {
|
|
48
|
+
var root = DICT.get(props.dictType);
|
|
49
|
+
if (root == null)
|
|
50
|
+
return props.default || Const_1.NONE; // 没有字典
|
|
51
|
+
var idx = lodash_1.default.findIndex(root.nodes, function (item) { return (props.value + '') == item.value; });
|
|
52
|
+
var hasFormat = root.format != null && VALIDATE_FORMAT.has(root.format);
|
|
53
|
+
var _a = __read([null, null], 2), format = _a[0], label = _a[1];
|
|
54
|
+
if (idx >= 0) {
|
|
55
|
+
var info = root.nodes[idx];
|
|
56
|
+
format = info.format;
|
|
57
|
+
label = info.label;
|
|
58
|
+
}
|
|
59
|
+
if (!hasFormat)
|
|
60
|
+
return label || props.default || Const_1.NONE;
|
|
61
|
+
switch (root.format) {
|
|
62
|
+
case 'clazz':
|
|
63
|
+
return (0, _DictBaseRender_1.renderClazz)(format, label, props.default);
|
|
64
|
+
case 'badge':
|
|
65
|
+
return (0, _DictBaseRender_1.renderBadge)(format, label, props.default);
|
|
159
66
|
case 'color':
|
|
160
|
-
|
|
161
|
-
// return;
|
|
162
|
-
case 'status':
|
|
163
|
-
break;
|
|
164
|
-
// return;
|
|
165
|
-
case 'sup':
|
|
166
|
-
// return;
|
|
167
|
-
break;
|
|
168
|
-
case 'sub':
|
|
169
|
-
// return;
|
|
170
|
-
break;
|
|
67
|
+
return (0, _DictBaseRender_1.renderColor)(format, label, props.default);
|
|
171
68
|
case 'icon':
|
|
172
|
-
|
|
173
|
-
break;
|
|
69
|
+
return (0, _DictBaseRender_1.renderIcon)(format, label, props.default);
|
|
174
70
|
case 'progress':
|
|
175
|
-
|
|
176
|
-
case '
|
|
177
|
-
return
|
|
178
|
-
|
|
179
|
-
return
|
|
71
|
+
return (0, _DictBaseRender_1.renderProgress)(format, label, props.default);
|
|
72
|
+
case 'status':
|
|
73
|
+
return (0, _DictBaseRender_1.renderStatus)(format, label, props.default);
|
|
74
|
+
case 'sub':
|
|
75
|
+
return (0, _DictBaseRender_1.renderSub)(format, label, props.default);
|
|
76
|
+
case 'sup':
|
|
77
|
+
return (0, _DictBaseRender_1.renderSup)(format, label, props.default);
|
|
78
|
+
case 'tag':
|
|
79
|
+
return (0, _DictBaseRender_1.renderTag)(format, label, props.default);
|
|
80
|
+
case 'tip':
|
|
81
|
+
return (0, _DictBaseRender_1.renderTip)(format, label, props.default);
|
|
180
82
|
}
|
|
181
|
-
return
|
|
182
|
-
};
|
|
183
|
-
var _DictRender = function (props) {
|
|
184
|
-
// if (DICT == null) return NONE;
|
|
185
|
-
if (props.value === null)
|
|
186
|
-
return props.default || Const_1.NONE;
|
|
187
|
-
var dictInfo = DICT.get(props.dictType);
|
|
188
|
-
if (dictInfo == null)
|
|
189
|
-
return props.default || Const_1.NONE;
|
|
190
|
-
var dictKey = props.value + '';
|
|
191
|
-
var idx = lodash_1.default.findIndex(dictInfo.nodes, function (item) { return dictKey == item.value; });
|
|
192
|
-
if (idx < 0)
|
|
193
|
-
return props.default || Const_1.NONE;
|
|
194
|
-
return renderDictValue(dictInfo, dictInfo.nodes[idx]);
|
|
83
|
+
return label || props.default || Const_1.NONE;
|
|
195
84
|
};
|
|
196
85
|
var putOptions = function (arr, config) {
|
|
197
86
|
if (config === undefined)
|
|
@@ -216,14 +105,9 @@ var putOptions = function (arr, config) {
|
|
|
216
105
|
}
|
|
217
106
|
return list;
|
|
218
107
|
};
|
|
219
|
-
var DictCache = new Map();
|
|
220
108
|
var DictRender = function (options) {
|
|
221
|
-
if (lodash_1.default.isString(options) && DictCache.has(options))
|
|
222
|
-
return DictCache.get(options);
|
|
223
109
|
var props = lodash_1.default.isString(options) ? { dictType: options } : options;
|
|
224
|
-
var fn = function (txt) {
|
|
225
|
-
return react_1.default.createElement(_DictRender, __assign({}, props, { value: txt }));
|
|
226
|
-
};
|
|
110
|
+
var fn = function (txt) { return react_1.default.createElement(_DictRender, __assign({}, props, { value: txt })); };
|
|
227
111
|
fn.options = function (config) {
|
|
228
112
|
var info = DICT.get(props.dictType);
|
|
229
113
|
if (info == null)
|
|
@@ -242,8 +126,6 @@ var DictRender = function (options) {
|
|
|
242
126
|
return lodash_1.default.isString(def) ? def : '';
|
|
243
127
|
return dictInfo.nodes[idx].label;
|
|
244
128
|
};
|
|
245
|
-
if (lodash_1.default.isString(options))
|
|
246
|
-
DictCache.set(options, fn);
|
|
247
129
|
return fn;
|
|
248
130
|
};
|
|
249
131
|
exports.DictRender = DictRender;
|
|
@@ -252,7 +134,7 @@ var initNodes = function (parentType, dict, nodes) {
|
|
|
252
134
|
childs.map(function (item) {
|
|
253
135
|
var value = lodash_1.default.trim(item.code);
|
|
254
136
|
if (value.length > 0)
|
|
255
|
-
nodes.push({ label: item.codeValue, value: value });
|
|
137
|
+
nodes.push({ label: item.codeValue, value: value, format: item.format });
|
|
256
138
|
var subChildren = lodash_1.default.filter(dict, function (sub) { return sub.parentType == item.type; });
|
|
257
139
|
if (subChildren.length > 0) {
|
|
258
140
|
initNodes(item.type, dict, nodes);
|
|
@@ -266,10 +148,11 @@ var initDict = function (dict) {
|
|
|
266
148
|
var roots = lodash_1.default.filter(dict, function (item) { return item['parentType'] == '0' || item['parentType'] == ''; });
|
|
267
149
|
_V_DICT.DICTS = [];
|
|
268
150
|
roots.map(function (root) {
|
|
269
|
-
var
|
|
151
|
+
var format = (root.format && VALIDATE_FORMAT.has(root.format)) ? root.format : null;
|
|
152
|
+
var info = { code: root.type, nodes: [], };
|
|
153
|
+
if (format)
|
|
154
|
+
info.format = format;
|
|
270
155
|
_V_DICT.DICTS.push({ label: root.codeValue, value: root.type });
|
|
271
|
-
if (root.format && VALIDATE_FORMAT.has(root.format))
|
|
272
|
-
info.format = root.format;
|
|
273
156
|
initNodes(root.type, dict, info.nodes);
|
|
274
157
|
DICT.set(root.type, info);
|
|
275
158
|
});
|
|
@@ -37,7 +37,7 @@ var ListRender = function (options) {
|
|
|
37
37
|
MAP.set(lodash_1.default.trim(item[valueField]), (0, i18n_1.txt)(item['ik']));
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
|
-
MAP.set(lodash_1.default.trim(item[valueField]), item[labelField]
|
|
40
|
+
MAP.set(lodash_1.default.trim(item[valueField]), item[labelField]);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
type DictFormartRender = (itemFormat: string, value: string | number, def?: ReactNode) => ReactNode;
|
|
3
|
+
export declare const renderTag: DictFormartRender;
|
|
4
|
+
export declare const renderColor: DictFormartRender;
|
|
5
|
+
export declare const renderStatus: DictFormartRender;
|
|
6
|
+
export declare const renderSub: DictFormartRender;
|
|
7
|
+
export declare const renderSup: DictFormartRender;
|
|
8
|
+
export declare const renderBadge: DictFormartRender;
|
|
9
|
+
export declare const renderIcon: DictFormartRender;
|
|
10
|
+
export declare const renderProgress: DictFormartRender;
|
|
11
|
+
export declare const renderClazz: DictFormartRender;
|
|
12
|
+
export declare const renderTip: DictFormartRender;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderTip = exports.renderClazz = exports.renderProgress = exports.renderIcon = exports.renderBadge = exports.renderSup = exports.renderSub = exports.renderStatus = exports.renderColor = exports.renderTag = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
var index_1 = require("../../index");
|
|
10
|
+
var Const_1 = require("../Const");
|
|
11
|
+
var antd_1 = require("antd");
|
|
12
|
+
var STATUS_CONST = new Set(['success', 'processing', 'error', 'default', 'warning']);
|
|
13
|
+
/**
|
|
14
|
+
* 获取 label 内容
|
|
15
|
+
*/
|
|
16
|
+
var getLabel = function (value, def) {
|
|
17
|
+
if (typeof value == 'number')
|
|
18
|
+
return value + '';
|
|
19
|
+
if (value === undefined || value === null)
|
|
20
|
+
return def === undefined ? null : def;
|
|
21
|
+
var label = lodash_1.default.trim(value);
|
|
22
|
+
if (label == '')
|
|
23
|
+
return def === undefined ? null : def;
|
|
24
|
+
return label;
|
|
25
|
+
};
|
|
26
|
+
var renderTag = function (itemFormat, value, def) {
|
|
27
|
+
var label = getLabel(value, def);
|
|
28
|
+
if (label === null)
|
|
29
|
+
return Const_1.NONE;
|
|
30
|
+
return react_1.default.createElement(index_1.Tag, { className: "c-dict-tag", color: itemFormat }, label);
|
|
31
|
+
};
|
|
32
|
+
exports.renderTag = renderTag;
|
|
33
|
+
var renderColor = function (itemFormat, value, def) {
|
|
34
|
+
var label = getLabel(value, def);
|
|
35
|
+
if (label === null)
|
|
36
|
+
return Const_1.NONE;
|
|
37
|
+
return react_1.default.createElement("span", { className: "c-dict-color", style: { color: itemFormat } }, label);
|
|
38
|
+
};
|
|
39
|
+
exports.renderColor = renderColor;
|
|
40
|
+
var renderStatus = function (itemFormat, value, def) {
|
|
41
|
+
var label = getLabel(value, def);
|
|
42
|
+
if (label === null)
|
|
43
|
+
return Const_1.NONE;
|
|
44
|
+
var format = lodash_1.default.toLower(lodash_1.default.trim(itemFormat));
|
|
45
|
+
var status = STATUS_CONST.has(format) ? format : 'default';
|
|
46
|
+
return react_1.default.createElement(index_1.Badge, { className: "c-dict-status", status: status, text: label });
|
|
47
|
+
};
|
|
48
|
+
exports.renderStatus = renderStatus;
|
|
49
|
+
var renderSub = function (itemFormat, value, def) {
|
|
50
|
+
var label = getLabel(value, def);
|
|
51
|
+
if (label === null)
|
|
52
|
+
return Const_1.NONE;
|
|
53
|
+
var format = lodash_1.default.trim(itemFormat);
|
|
54
|
+
return react_1.default.createElement("span", { className: "c-dict-sub" },
|
|
55
|
+
label,
|
|
56
|
+
format && react_1.default.createElement("sub", null, format));
|
|
57
|
+
};
|
|
58
|
+
exports.renderSub = renderSub;
|
|
59
|
+
var renderSup = function (itemFormat, value, def) {
|
|
60
|
+
var label = getLabel(value, def);
|
|
61
|
+
if (label === null)
|
|
62
|
+
return Const_1.NONE;
|
|
63
|
+
var format = lodash_1.default.trim(itemFormat);
|
|
64
|
+
return react_1.default.createElement("span", { className: "c-dict-sup" },
|
|
65
|
+
label,
|
|
66
|
+
format && react_1.default.createElement("sup", null, format));
|
|
67
|
+
};
|
|
68
|
+
exports.renderSup = renderSup;
|
|
69
|
+
var renderBadge = function (itemFormat, value, def) {
|
|
70
|
+
var label = getLabel(value, def);
|
|
71
|
+
if (label === null)
|
|
72
|
+
return Const_1.NONE;
|
|
73
|
+
var format = lodash_1.default.toLower(lodash_1.default.trim(itemFormat));
|
|
74
|
+
if (format.length == 0)
|
|
75
|
+
return label;
|
|
76
|
+
// 讨嫌小红点
|
|
77
|
+
if (format == 'dot')
|
|
78
|
+
return react_1.default.createElement(index_1.Badge, { className: "c-dict-badge c-dict-badge-dot", dot: true },
|
|
79
|
+
react_1.default.createElement("span", null, label));
|
|
80
|
+
try {
|
|
81
|
+
var count = parseInt(format);
|
|
82
|
+
if (lodash_1.default.isNaN(count))
|
|
83
|
+
throw new Error('format is not number');
|
|
84
|
+
return react_1.default.createElement(index_1.Badge, { className: "c-dict-badge", count: count },
|
|
85
|
+
react_1.default.createElement("span", null, label));
|
|
86
|
+
}
|
|
87
|
+
catch (_a) {
|
|
88
|
+
return label;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
exports.renderBadge = renderBadge;
|
|
92
|
+
var renderIcon = function (itemFormat, value, def) {
|
|
93
|
+
var label = getLabel(value, def);
|
|
94
|
+
if (label === null)
|
|
95
|
+
return Const_1.NONE;
|
|
96
|
+
var format = lodash_1.default.toLower(lodash_1.default.trim(itemFormat));
|
|
97
|
+
if (format.length == 0)
|
|
98
|
+
return label;
|
|
99
|
+
if (lodash_1.default.startsWith(format, '/') || lodash_1.default.startsWith(format, 'http://') || lodash_1.default.startsWith(format, 'https://')) {
|
|
100
|
+
return react_1.default.createElement("span", { className: "c-dict-icon" },
|
|
101
|
+
react_1.default.createElement("img", { src: format }),
|
|
102
|
+
react_1.default.createElement("span", null, label));
|
|
103
|
+
}
|
|
104
|
+
return react_1.default.createElement("span", { className: "c-dict-icon " },
|
|
105
|
+
react_1.default.createElement(index_1.Icon, { type: format }),
|
|
106
|
+
react_1.default.createElement("span", null, label));
|
|
107
|
+
};
|
|
108
|
+
exports.renderIcon = renderIcon;
|
|
109
|
+
var renderProgress = function (itemFormat, value, def) {
|
|
110
|
+
var label = getLabel(value, def);
|
|
111
|
+
if (label === null)
|
|
112
|
+
return Const_1.NONE;
|
|
113
|
+
var format = lodash_1.default.toLower(lodash_1.default.trim(itemFormat));
|
|
114
|
+
if (format.length == 0)
|
|
115
|
+
return label;
|
|
116
|
+
switch (format) {
|
|
117
|
+
case 'waiting':
|
|
118
|
+
return react_1.default.createElement("span", { className: "c-dict-progress c-dict-progress-waiting" },
|
|
119
|
+
react_1.default.createElement(index_1.Icon, { type: "audit-task-status-waiting" }),
|
|
120
|
+
react_1.default.createElement("span", null, label));
|
|
121
|
+
case 'prepare':
|
|
122
|
+
return react_1.default.createElement("span", { className: "c-dict-progress c-dict-progress-prepare" },
|
|
123
|
+
react_1.default.createElement(index_1.Icon, { type: "info-circle" }),
|
|
124
|
+
react_1.default.createElement("span", null, label));
|
|
125
|
+
case 'ready':
|
|
126
|
+
return react_1.default.createElement("span", { className: "c-dict-progress c-dict-progress-ready" },
|
|
127
|
+
react_1.default.createElement(index_1.Icon, { type: "trademark" }),
|
|
128
|
+
react_1.default.createElement("span", null, label));
|
|
129
|
+
case 'doing':
|
|
130
|
+
return react_1.default.createElement("span", { className: "c-dict-progress c-dict-progress-doing" },
|
|
131
|
+
react_1.default.createElement(index_1.Icon, { type: "audit-task-status-doing" }),
|
|
132
|
+
react_1.default.createElement("span", null, label));
|
|
133
|
+
case 'finish':
|
|
134
|
+
return react_1.default.createElement("span", { className: "c-dict-progress c-dict-progress-finish" },
|
|
135
|
+
react_1.default.createElement(index_1.Icon, { type: "audit-task-status-finish" }),
|
|
136
|
+
react_1.default.createElement("span", null, label));
|
|
137
|
+
case 'error':
|
|
138
|
+
return react_1.default.createElement("span", { className: "c-dict-progress c-dict-progress-error" },
|
|
139
|
+
react_1.default.createElement(index_1.Icon, { type: "audit-task-status-error" }),
|
|
140
|
+
react_1.default.createElement("span", null, label));
|
|
141
|
+
}
|
|
142
|
+
return label;
|
|
143
|
+
};
|
|
144
|
+
exports.renderProgress = renderProgress;
|
|
145
|
+
var renderClazz = function (itemFormat, value, def) {
|
|
146
|
+
var label = getLabel(value, def);
|
|
147
|
+
if (label === null)
|
|
148
|
+
return Const_1.NONE;
|
|
149
|
+
var format = lodash_1.default.toLower(lodash_1.default.trim(itemFormat));
|
|
150
|
+
if (format.length == 0)
|
|
151
|
+
return label;
|
|
152
|
+
return react_1.default.createElement("span", { className: format }, label);
|
|
153
|
+
};
|
|
154
|
+
exports.renderClazz = renderClazz;
|
|
155
|
+
var renderTip = function (itemFormat, value, def) {
|
|
156
|
+
var label = getLabel(value, def);
|
|
157
|
+
if (label === null)
|
|
158
|
+
return Const_1.NONE;
|
|
159
|
+
var format = lodash_1.default.trim(itemFormat);
|
|
160
|
+
if (format.length == 0)
|
|
161
|
+
return label;
|
|
162
|
+
return react_1.default.createElement("span", { className: "c-dict-tip" },
|
|
163
|
+
react_1.default.createElement(antd_1.Popover, { content: react_1.default.createElement("pre", null, format) },
|
|
164
|
+
react_1.default.createElement("span", null, label),
|
|
165
|
+
react_1.default.createElement(index_1.Icon, { type: "question-circle", evt: true })));
|
|
166
|
+
};
|
|
167
|
+
exports.renderTip = renderTip;
|
|
@@ -13,8 +13,18 @@ export type BaseRenderOptions = {
|
|
|
13
13
|
};
|
|
14
14
|
export type ApiRenderOptions = BaseRenderOptions & {
|
|
15
15
|
api: string;
|
|
16
|
+
/**
|
|
17
|
+
* 用于展示 Label 的字段
|
|
18
|
+
*/
|
|
16
19
|
nameField: string;
|
|
20
|
+
/**
|
|
21
|
+
* 用于映射值的字段
|
|
22
|
+
*/
|
|
17
23
|
valueField: string;
|
|
24
|
+
/**
|
|
25
|
+
* 默认缓存为 api 地址,若不想以 api 做为KEY,可以指定(用于两个相同的APIRender时)
|
|
26
|
+
*/
|
|
27
|
+
cacheKey?: string;
|
|
18
28
|
render?: (info: BaseOption) => React.ReactNode;
|
|
19
29
|
};
|
|
20
30
|
export declare const getValue: (txt: string, options: BaseRenderOptions) => string | React.ReactNode;
|