vap1 0.1.5 → 0.1.6
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/SearchBar/ByField.js +7 -1
- package/components/SearchBar/ByKeyword.js +52 -10
- package/components/Tables/STable.d.ts +9 -1
- package/components/Tables/STable.js +20 -5
- package/components/Tables/VTable.js +18 -10
- package/components/Trees/ActionTree.js +0 -1
- package/components/Trees/COTree/COSelect.d.ts +45 -0
- package/components/Trees/COTree/COSelect.js +107 -0
- package/components/Trees/COTree/COTree.d.ts +74 -0
- package/components/Trees/COTree/COTree.js +207 -0
- package/components/Trees/COTree/COTreeUtil.d.ts +17 -0
- package/components/Trees/COTree/COTreeUtil.js +187 -0
- package/components/UForm/UForm.js +0 -1
- package/components/UForm/UFormModal.js +1 -1
- package/components/UForm/_FieldType.d.ts +1 -1
- package/components/UForm/_FieldType.js +10 -2
- package/components/UForm/index.d.ts +10 -0
- package/components/_adapt/Drawer.js +1 -1
- package/components/_adapt/Dropdown.d.ts +12 -3
- package/components/_adapt/Dropdown.js +10 -2
- package/components/_adapt/Modal.js +1 -1
- package/components/_adapt/Radio.js +6 -6
- package/components/_common/Upagination.js +4 -4
- package/components/_setup/UForm/UFormCOTree.d.ts +1 -0
- package/components/_setup/UForm/UFormCOTree.js +23 -0
- package/components/_setup/UForm/UFormDate.js +99 -24
- package/components/_setup/UForm/UFormJSONTable.d.ts +1 -0
- package/components/_setup/UForm/UFormJSONTable.js +157 -0
- package/components/_setup/UForm/UFormSelect.js +19 -0
- package/components/_setup/index.d.ts +1 -0
- package/components/_setup/index.js +1 -0
- package/hooks/_list.js +2 -1
- package/hooks/useArray.d.ts +2 -3
- package/hooks/useArray.js +34 -67
- package/package.json +1 -1
- package/utils/ArrayUtil.js +8 -1
- package/utils/Global.d.ts +0 -1
- package/utils/index.d.ts +32 -1
- package/widget/index.d.ts +0 -4
|
@@ -0,0 +1,187 @@
|
|
|
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.invertToString = exports.convertFormString = exports.invertToObject = exports.convertFormObject = exports.getTreeDataByLoaded = exports.flagRender = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
const utils_1 = require("../../../utils");
|
|
10
|
+
const Icon_1 = require("../../_adapt/Icon");
|
|
11
|
+
const flagRender = (flag) => {
|
|
12
|
+
switch (flag) {
|
|
13
|
+
case 0:
|
|
14
|
+
return react_1.default.createElement("span", { className: 'co-tree-select-all' },
|
|
15
|
+
react_1.default.createElement(Icon_1.Icon, { type: "check-circle" }),
|
|
16
|
+
react_1.default.createElement("small", null, "\u542B\u4E0B\u7EA7"));
|
|
17
|
+
case 1:
|
|
18
|
+
return react_1.default.createElement("span", { className: 'co-tree-not-include' },
|
|
19
|
+
react_1.default.createElement(Icon_1.Icon, { type: "switcher" }),
|
|
20
|
+
react_1.default.createElement("small", null, "\u4E0D\u542B\u672C\u7EA7"));
|
|
21
|
+
case 2:
|
|
22
|
+
return react_1.default.createElement("span", { className: 'co-tree-select-only' },
|
|
23
|
+
react_1.default.createElement(Icon_1.Icon, { type: "symbol-check-on" }),
|
|
24
|
+
react_1.default.createElement("small", null, "\u672C\u7EA7+\u6307\u5B9A\u4E0B\u7EA7"));
|
|
25
|
+
}
|
|
26
|
+
return utils_1.Const.NONE;
|
|
27
|
+
};
|
|
28
|
+
exports.flagRender = flagRender;
|
|
29
|
+
const loop = (root, FIELDS, treeData, checkedKeys, FULL_CHECKED, HALF_CHECKED, XOR_CHECKED, ORDER_BY, DISABLED, TIP) => {
|
|
30
|
+
let arr = ORDER_BY(root);
|
|
31
|
+
for (let item of arr) {
|
|
32
|
+
let node = {
|
|
33
|
+
key: item[FIELDS.keyField],
|
|
34
|
+
title: item[FIELDS.titleField],
|
|
35
|
+
// checkable: true,
|
|
36
|
+
selectable: false,
|
|
37
|
+
disabled: DISABLED(item),
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
data: lodash_1.default.omit(item, 'children'),
|
|
40
|
+
};
|
|
41
|
+
// unselect 时,如果下级不再有,本极为1,则清除
|
|
42
|
+
if (FULL_CHECKED.has(item[FIELDS.keyField])) {
|
|
43
|
+
// 再点就取消
|
|
44
|
+
// node.className = 'co-tree-select-all';
|
|
45
|
+
// node.icon = <Icon type="check-circle" />;
|
|
46
|
+
// node.title = <span>{item[FIELDS.titleField]}{TIP && <small>(含下级)</small>}</span>
|
|
47
|
+
node.title = react_1.default.createElement("span", { className: 'co-tree-select-all' },
|
|
48
|
+
react_1.default.createElement(Icon_1.Icon, { type: "check-circle" }),
|
|
49
|
+
" ",
|
|
50
|
+
react_1.default.createElement("span", null, item[FIELDS.titleField]),
|
|
51
|
+
TIP && react_1.default.createElement("small", null, "(\u542B\u4E0B\u7EA7)"));
|
|
52
|
+
node.isLeaf = true;
|
|
53
|
+
checkedKeys.checked.push(item[FIELDS.keyField]);
|
|
54
|
+
}
|
|
55
|
+
else if (HALF_CHECKED.has(item[FIELDS.keyField])) {
|
|
56
|
+
// 再点就全选
|
|
57
|
+
// node.className = 'co-tree-select-only';
|
|
58
|
+
// node.icon = <Icon type='symbol-check-on' />;
|
|
59
|
+
// node.title = <span>{item[FIELDS.titleField]}{TIP && <small>(本级+指定下级)</small>}</span>
|
|
60
|
+
node.title = react_1.default.createElement("span", { className: 'co-tree-select-only' },
|
|
61
|
+
react_1.default.createElement(Icon_1.Icon, { type: "symbol-check-on" }),
|
|
62
|
+
" ",
|
|
63
|
+
react_1.default.createElement("span", null, item[FIELDS.titleField]),
|
|
64
|
+
TIP && react_1.default.createElement("small", null, "(\u672C\u7EA7+\u6307\u5B9A\u4E0B\u7EA7)"));
|
|
65
|
+
checkedKeys.halfChecked.push(item[FIELDS.keyField]);
|
|
66
|
+
}
|
|
67
|
+
else if (XOR_CHECKED.has(item[FIELDS.keyField])) {
|
|
68
|
+
// 再就就半选()
|
|
69
|
+
// node.className = 'co-tree-not-include';
|
|
70
|
+
// node.icon = <Icon type='switcher' />;
|
|
71
|
+
// node.title = <span>{item[FIELDS.titleField]}{TIP && <small>(不含本级)</small>}</span>
|
|
72
|
+
node.title = react_1.default.createElement("span", { className: 'co-tree-not-include' },
|
|
73
|
+
react_1.default.createElement(Icon_1.Icon, { type: "switcher" }),
|
|
74
|
+
" ",
|
|
75
|
+
react_1.default.createElement("span", null, item[FIELDS.titleField]),
|
|
76
|
+
TIP && react_1.default.createElement("small", null, "(\u4E0D\u542B\u672C\u7EA7)"));
|
|
77
|
+
checkedKeys.halfChecked.push(item[FIELDS.keyField]);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// 点击 = 半选
|
|
81
|
+
// node.className = 'co-tree-not-check';
|
|
82
|
+
// node.icon = <Icon type='symbol-check-off' />;
|
|
83
|
+
node.title = react_1.default.createElement("span", { className: 'co-tree-not-check' },
|
|
84
|
+
react_1.default.createElement(Icon_1.Icon, { type: "symbol-check-off" }),
|
|
85
|
+
" ",
|
|
86
|
+
react_1.default.createElement("span", null, item[FIELDS.titleField]));
|
|
87
|
+
}
|
|
88
|
+
if (node.isLeaf === undefined && FIELDS.checkField) {
|
|
89
|
+
node.isLeaf = item[FIELDS.checkField] ? false : true;
|
|
90
|
+
}
|
|
91
|
+
if (lodash_1.default.isArray(item.children)) {
|
|
92
|
+
if (node.isLeaf === false || node.isLeaf === undefined) {
|
|
93
|
+
node.children = [];
|
|
94
|
+
loop(item.children, FIELDS, node.children, checkedKeys, FULL_CHECKED, HALF_CHECKED, XOR_CHECKED, ORDER_BY, DISABLED, TIP);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
treeData.push(node);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const getTreeDataByLoaded = (all, treeProps, FIELDS) => {
|
|
101
|
+
const FULL_CHECKED = new Set();
|
|
102
|
+
const HALF_CHECKED = new Set();
|
|
103
|
+
const XOR_CHECKED = new Set();
|
|
104
|
+
(treeProps.value || []).map(item => {
|
|
105
|
+
switch (item.flag) {
|
|
106
|
+
case 0:
|
|
107
|
+
FULL_CHECKED.add(item.key);
|
|
108
|
+
break;
|
|
109
|
+
case 1:
|
|
110
|
+
XOR_CHECKED.add(item.key);
|
|
111
|
+
break;
|
|
112
|
+
case 2:
|
|
113
|
+
HALF_CHECKED.add(item.key);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
const DISABLED = treeProps.disableNode ? treeProps.disableNode : () => false;
|
|
118
|
+
const TIP = treeProps.selectTip || false;
|
|
119
|
+
const ORDER_BY = FIELDS.sortField ? (arr) => lodash_1.default.orderBy(arr, FIELDS.sortField, 'asc') : arr => arr;
|
|
120
|
+
const treeData = [];
|
|
121
|
+
const checkedKeys = { checked: [], halfChecked: [] };
|
|
122
|
+
loop(all, FIELDS, treeData, checkedKeys, FULL_CHECKED, HALF_CHECKED, XOR_CHECKED, ORDER_BY, DISABLED, TIP);
|
|
123
|
+
return [{ treeData, checkedKeys, }, FULL_CHECKED, HALF_CHECKED, XOR_CHECKED];
|
|
124
|
+
};
|
|
125
|
+
exports.getTreeDataByLoaded = getTreeDataByLoaded;
|
|
126
|
+
const FLAG_SET = new Set([0, 1, 2]);
|
|
127
|
+
const convertFormObject = (obj) => {
|
|
128
|
+
let result = [];
|
|
129
|
+
const keys = lodash_1.default.keys(obj);
|
|
130
|
+
for (let key of keys) {
|
|
131
|
+
let flagStr = obj[key];
|
|
132
|
+
try {
|
|
133
|
+
let flag = parseInt(flagStr);
|
|
134
|
+
if (FLAG_SET.has(flag)) {
|
|
135
|
+
result.push({ key, flag: flag });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (_a) {
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
};
|
|
143
|
+
exports.convertFormObject = convertFormObject;
|
|
144
|
+
const invertToObject = (items) => {
|
|
145
|
+
const data = {};
|
|
146
|
+
items.map(item => {
|
|
147
|
+
if (FLAG_SET.has(item.flag) && item.key) {
|
|
148
|
+
data[item.key] = item.flag;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
return data;
|
|
152
|
+
};
|
|
153
|
+
exports.invertToObject = invertToObject;
|
|
154
|
+
// xxx:0,yyy:2,zzz:1
|
|
155
|
+
const convertFormString = (txt) => {
|
|
156
|
+
let result = [];
|
|
157
|
+
const items = (txt || '').split(',');
|
|
158
|
+
for (let item of items) {
|
|
159
|
+
let ptns = item.split(':');
|
|
160
|
+
if (ptns.length == 2) {
|
|
161
|
+
try {
|
|
162
|
+
let flagStr = ptns[1];
|
|
163
|
+
let flag = parseInt(lodash_1.default.trim(flagStr));
|
|
164
|
+
if (FLAG_SET.has(flag)) {
|
|
165
|
+
let key = lodash_1.default.trim(ptns[0]);
|
|
166
|
+
if (key) {
|
|
167
|
+
result.push({ key, flag: flag });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch (_a) { }
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
};
|
|
176
|
+
exports.convertFormString = convertFormString;
|
|
177
|
+
const invertToString = (items) => {
|
|
178
|
+
// const data = {};
|
|
179
|
+
let flags = [];
|
|
180
|
+
items.map(item => {
|
|
181
|
+
if (FLAG_SET.has(item.flag) && item.key) {
|
|
182
|
+
flags.push(`${lodash_1.default.trim(item.key)}:${item.flag}`);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
return flags.join(',');
|
|
186
|
+
};
|
|
187
|
+
exports.invertToString = invertToString;
|
|
@@ -141,7 +141,6 @@ const renderFormField = (state, field, form, update, data) => {
|
|
|
141
141
|
if (hiddenFields.current.has(field.field)) {
|
|
142
142
|
return react_1.default.createElement(antd_1.Form.Item, { style: { display: 'none' } }, form.getFieldDecorator(field.field)(react_1.default.createElement(input.component, {
|
|
143
143
|
form,
|
|
144
|
-
// initValue:
|
|
145
144
|
field,
|
|
146
145
|
disabled: disableFields.current.has(field.field),
|
|
147
146
|
options: (0, _FormUtils_1.getOptions)(optionFields.current.has(field.field) ? optionFields.current.get(field.field) : (field.options || []), field, data)
|
|
@@ -38,8 +38,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
38
38
|
exports.UFormModal = void 0;
|
|
39
39
|
const react_1 = __importStar(require("react"));
|
|
40
40
|
const lodash_1 = __importDefault(require("lodash"));
|
|
41
|
-
const Popconfirm_1 = require("../_adapt/Popconfirm");
|
|
42
41
|
const Modal_1 = require("../_adapt/Modal");
|
|
42
|
+
const Popconfirm_1 = require("../_adapt/Popconfirm");
|
|
43
43
|
const Button_1 = require("../_adapt/Button");
|
|
44
44
|
const UForm_1 = require("./UForm");
|
|
45
45
|
const utils_1 = require("../../utils");
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
| text ||
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
export declare const _FieldType: readonly ["text", "textarea", "password", "color", "number", "slider", "slider-range", "slider-range", "input-with-select", "select", "multi-select", "switch", "radio", "radio-button", "radio-with-more", "checkbox", "checkbox-with-all", "icon", "stree-select", "dtree-select", "ftree-select", "date", "datetime", "month", "week", "time", "daterange", "
|
|
8
|
+
export declare const _FieldType: readonly ["text", "textarea", "password", "color", "number", "slider", "slider-range", "slider-range", "input-with-select", "select", "multi-select", "switch", "switch-checkbox", "radio", "radio-button", "radio-with-more", "checkbox", "checkbox-with-all", "icon", "stree-select", "dtree-select", "ftree-select", "date", "datetime", "month", "week", "time", "daterange", "datetimerange", "daterange-single", "datetimerange-single", "monthrange", "json-array", "json-table", "file", "multi-file", "img", "idcard", "ip", "ip4", "ip6", "phone", "telephone", "mobilephone", "port", "mac", "url", "email", "crontab", "organization", "role", "roles", "cems-org"];
|
|
@@ -9,6 +9,9 @@ exports._FieldType = void 0;
|
|
|
9
9
|
*
|
|
10
10
|
*/
|
|
11
11
|
exports._FieldType = [
|
|
12
|
+
/**
|
|
13
|
+
* 文本输入,默认
|
|
14
|
+
*/
|
|
12
15
|
'text',
|
|
13
16
|
/**
|
|
14
17
|
* 文本输入域
|
|
@@ -56,6 +59,7 @@ exports._FieldType = [
|
|
|
56
59
|
* 开关
|
|
57
60
|
*/
|
|
58
61
|
'switch',
|
|
62
|
+
'switch-checkbox',
|
|
59
63
|
/**
|
|
60
64
|
* 单选
|
|
61
65
|
*/
|
|
@@ -74,11 +78,13 @@ exports._FieldType = [
|
|
|
74
78
|
'week',
|
|
75
79
|
'time',
|
|
76
80
|
'daterange',
|
|
77
|
-
'
|
|
81
|
+
'datetimerange',
|
|
78
82
|
'daterange-single',
|
|
79
|
-
'
|
|
83
|
+
'datetimerange-single',
|
|
84
|
+
// 'timerange',
|
|
80
85
|
'monthrange',
|
|
81
86
|
'json-array',
|
|
87
|
+
'json-table',
|
|
82
88
|
'file',
|
|
83
89
|
'multi-file',
|
|
84
90
|
'img',
|
|
@@ -97,4 +103,6 @@ exports._FieldType = [
|
|
|
97
103
|
'organization',
|
|
98
104
|
'role',
|
|
99
105
|
'roles',
|
|
106
|
+
// CEMS 专用
|
|
107
|
+
'cems-org',
|
|
100
108
|
];
|
|
@@ -16,6 +16,7 @@ import type { ValidationRule } from 'antd/es/form/Form';
|
|
|
16
16
|
* 2. 大于8个字段时,默认使用 common
|
|
17
17
|
*/
|
|
18
18
|
export type UFormLayout = 'common' | 'simple' | 'compress';
|
|
19
|
+
export type FieldDataType = 'string' | 'array' | 'object';
|
|
19
20
|
/**
|
|
20
21
|
* 分组展示的方式 default = 默认 | tabs = 标签 | collapse = 折叠风琴
|
|
21
22
|
*/
|
|
@@ -173,6 +174,15 @@ export type UFormField = BaseItem & {
|
|
|
173
174
|
*
|
|
174
175
|
*/
|
|
175
176
|
link?: Link[];
|
|
177
|
+
/**
|
|
178
|
+
* (试验中,暂不要使用)
|
|
179
|
+
* 在复杂类型中使用时,可使用dataType定义类型
|
|
180
|
+
* 多选 multi-select/checkbox 等 适用: string | array
|
|
181
|
+
* json-array 适用 string | array
|
|
182
|
+
* json-object 适用 string | object
|
|
183
|
+
* 也可用于自定义类型
|
|
184
|
+
*/
|
|
185
|
+
dataType?: FieldDataType;
|
|
176
186
|
/**
|
|
177
187
|
* 扩展字段说明:
|
|
178
188
|
* 自定义
|
|
@@ -8,7 +8,7 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const antd_1 = require("antd");
|
|
9
9
|
const utils_1 = require("./utils");
|
|
10
10
|
const Drawer = (props) => {
|
|
11
|
-
return react_1.default.createElement(antd_1.Drawer, Object.assign({}, (0, utils_1.convertProps)(props, ['visible', 'open'], ['afterVisibleChange', 'afterOpenChange'])),
|
|
11
|
+
return react_1.default.createElement(antd_1.Drawer, Object.assign({}, (0, utils_1.convertProps)(props, ['visible', 'open'], ['afterVisibleChange', 'afterOpenChange']), { getContainer: () => document.getElementById('vap-app-content') }),
|
|
12
12
|
props.children,
|
|
13
13
|
props.footer);
|
|
14
14
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { FC } from 'react';
|
|
1
|
+
import type { FC, ExoticComponent, PropsWithChildren } from 'react';
|
|
2
2
|
import type { MenuProps } from './Menu';
|
|
3
|
-
import type { DropDownProps as AntdDropDownProps } from 'antd/es/dropdown';
|
|
3
|
+
import type { DropDownProps as AntdDropDownProps, DropdownButtonProps as AntdDropdownButtonProps } from 'antd/es/dropdown';
|
|
4
4
|
/**
|
|
5
5
|
* 说明: 排除 Dropdown 组件已被 antd 标记为 deprecated 的属性:
|
|
6
6
|
* 1. visible : Please use `open` instead
|
|
@@ -12,4 +12,13 @@ export type DropdownProps = Omit<AntdDropDownProps, 'visible' | 'onVisibleChange
|
|
|
12
12
|
menu?: MenuProps;
|
|
13
13
|
overlay?: AntdDropDownProps['overlay'];
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export type DropdownButtonProps = Omit<AntdDropdownButtonProps, 'visible' | 'onVisibleChange' | 'overlay'> & {
|
|
16
|
+
arrow?: boolean;
|
|
17
|
+
menu?: MenuProps;
|
|
18
|
+
overlay?: AntdDropDownProps['overlay'];
|
|
19
|
+
};
|
|
20
|
+
type DropdownComponent = ExoticComponent<PropsWithChildren<DropdownProps>> & {
|
|
21
|
+
Button: FC<PropsWithChildren<DropdownButtonProps>>;
|
|
22
|
+
};
|
|
23
|
+
export declare const Dropdown: DropdownComponent;
|
|
24
|
+
export {};
|
|
@@ -28,11 +28,19 @@ const react_1 = __importStar(require("react"));
|
|
|
28
28
|
const antd_1 = require("antd");
|
|
29
29
|
const utils_1 = require("./utils");
|
|
30
30
|
const Menu_1 = require("./Menu");
|
|
31
|
-
const
|
|
31
|
+
const _Dropdown = props => {
|
|
32
32
|
const dropdownProps = (0, react_1.useMemo)(() => (0, utils_1.convertProps)(props, ['visible', 'open'], ['onVisibleChange', 'onOpenChange']), []);
|
|
33
33
|
if (props.menu) {
|
|
34
34
|
return react_1.default.createElement(antd_1.Dropdown, Object.assign({}, dropdownProps, { overlay: react_1.default.createElement(Menu_1.Menu, Object.assign({}, props.menu)) }));
|
|
35
35
|
}
|
|
36
36
|
return react_1.default.createElement(antd_1.Dropdown, Object.assign({}, dropdownProps));
|
|
37
37
|
};
|
|
38
|
-
|
|
38
|
+
const _DropdownButton = props => {
|
|
39
|
+
const dropdownProps = (0, react_1.useMemo)(() => (0, utils_1.convertProps)(props, ['visible', 'open'], ['onVisibleChange', 'onOpenChange']), []);
|
|
40
|
+
if (props.menu) {
|
|
41
|
+
return react_1.default.createElement(antd_1.Dropdown.Button, Object.assign({}, dropdownProps, { overlay: react_1.default.createElement(Menu_1.Menu, Object.assign({}, props.menu)) }));
|
|
42
|
+
}
|
|
43
|
+
return react_1.default.createElement(antd_1.Dropdown.Button, Object.assign({}, dropdownProps));
|
|
44
|
+
};
|
|
45
|
+
exports.Dropdown = _Dropdown;
|
|
46
|
+
exports.Dropdown.Button = _DropdownButton;
|
|
@@ -48,7 +48,7 @@ class Modal extends react_1.Component {
|
|
|
48
48
|
react_1.default.createElement(Button_1.Button, Object.assign({ onClick: evt => utils_1.PageUtil.stopEvent(evt, () => onCancel()) }, cancelButtonProps), cancelText || utils_1.i18n.ant('Modal.cancelText')));
|
|
49
49
|
}
|
|
50
50
|
render() {
|
|
51
|
-
return react_1.default.createElement(antd_1.Modal, Object.assign({}, this.props, { visible: this.props.open, footer: this.props.footer === null ? null : this.renderFooter() }));
|
|
51
|
+
return react_1.default.createElement(antd_1.Modal, Object.assign({}, this.props, { getContainer: () => document.getElementById('vap-app-content'), visible: this.props.open, footer: this.props.footer === null ? null : this.renderFooter() }));
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
exports.Modal = Modal;
|
|
@@ -7,18 +7,18 @@ exports.Radio = void 0;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const antd_1 = require("antd");
|
|
9
9
|
const lodash_1 = __importDefault(require("lodash"));
|
|
10
|
-
const RadioGroupWithOptions = (props) =>
|
|
11
|
-
if (props.
|
|
12
|
-
return react_1.default.createElement(antd_1.Radio.Button, { value: item.value }, item.label);
|
|
10
|
+
const RadioGroupWithOptions = (props) => {
|
|
11
|
+
if (props.buttonStyle) {
|
|
12
|
+
return react_1.default.createElement(antd_1.Radio.Group, Object.assign({}, lodash_1.default.omit(props, ['children', 'options']), { buttonStyle: "solid" }), props.options.map(item => react_1.default.createElement(antd_1.Radio.Button, { value: item.value }, item.label)));
|
|
13
13
|
}
|
|
14
|
-
return react_1.default.createElement(antd_1.Radio, { value: item.value }, item.label);
|
|
15
|
-
}
|
|
14
|
+
return react_1.default.createElement(antd_1.Radio.Group, Object.assign({}, lodash_1.default.omit(props, ['children', 'options'])), props.options.map(item => react_1.default.createElement(antd_1.Radio, { value: item.value }, item.label)));
|
|
15
|
+
};
|
|
16
16
|
const RadioGroup = props => {
|
|
17
17
|
if (lodash_1.default.isArray(props.options))
|
|
18
18
|
return react_1.default.createElement(RadioGroupWithOptions, Object.assign({}, props));
|
|
19
19
|
return react_1.default.createElement(antd_1.Radio.Group, Object.assign({}, props));
|
|
20
20
|
};
|
|
21
|
-
const _Radio = (props) => react_1.default.createElement(
|
|
21
|
+
const _Radio = (props) => react_1.default.createElement(antd_1.Radio, Object.assign({}, props));
|
|
22
22
|
exports.Radio = _Radio;
|
|
23
23
|
exports.Radio.Group = RadioGroup;
|
|
24
24
|
exports.Radio.Button = antd_1.Radio.Button;
|
|
@@ -85,16 +85,16 @@ const getConfig = (total, totalAcc, cost) => {
|
|
|
85
85
|
conf.showTotal = () => utils_1.Const.NONE;
|
|
86
86
|
break;
|
|
87
87
|
case 1:
|
|
88
|
-
conf.showTotal = (total, range) => TOTAL1(total, range, totalAcc);
|
|
88
|
+
conf.showTotal = (total, range) => TOTAL1(total, range, totalAcc || total);
|
|
89
89
|
break;
|
|
90
90
|
case 2:
|
|
91
|
-
conf.showTotal = (total, range) => TOTAL2(total, range, totalAcc, cost);
|
|
91
|
+
conf.showTotal = (total, range) => TOTAL2(total, range, totalAcc || total, cost);
|
|
92
92
|
break;
|
|
93
93
|
case 3:
|
|
94
|
-
conf.showTotal = (total, range) => TOTAL3(total, range, totalAcc);
|
|
94
|
+
conf.showTotal = (total, range) => TOTAL3(total, range, totalAcc || total);
|
|
95
95
|
break;
|
|
96
96
|
default:
|
|
97
|
-
conf.showTotal = (total, range) => TOTAL1(total, range, totalAcc);
|
|
97
|
+
conf.showTotal = (total, range) => TOTAL1(total, range, totalAcc || total);
|
|
98
98
|
break;
|
|
99
99
|
}
|
|
100
100
|
return conf;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const _register_1 = require("../../UForm/_register");
|
|
9
|
+
const COSelect_1 = require("../../Trees/COTree/COSelect");
|
|
10
|
+
const _input_1 = require("../../UForm/_input");
|
|
11
|
+
// CEMS ORG SELECT
|
|
12
|
+
(0, _register_1.registerFormField)('cems-org', (props) => {
|
|
13
|
+
const { field, disabled, value, onChange } = props;
|
|
14
|
+
let params = {
|
|
15
|
+
placeholder: (0, _input_1.getPlaceholder)(field, true),
|
|
16
|
+
disabled,
|
|
17
|
+
allowClear: true,
|
|
18
|
+
onChange: onChange
|
|
19
|
+
};
|
|
20
|
+
if (field.required || field.rules && lodash_1.default.find(field.rules, { required: true }))
|
|
21
|
+
params.allowClear = false;
|
|
22
|
+
return react_1.default.createElement(COSelect_1.COSelect, Object.assign({ dataType: field.dataType || 'string' }, params, field.config, { value: value }));
|
|
23
|
+
});
|
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const react_1 =
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
7
30
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
31
|
const antd_1 = require("antd");
|
|
9
32
|
const _register_1 = require("../../UForm/_register");
|
|
@@ -39,7 +62,14 @@ const DatePick = (props) => {
|
|
|
39
62
|
if (day.isValid())
|
|
40
63
|
params.value = day;
|
|
41
64
|
}
|
|
42
|
-
const format =
|
|
65
|
+
const format = (0, react_1.useMemo)(() => {
|
|
66
|
+
var _a;
|
|
67
|
+
if ((_a = field.config) === null || _a === void 0 ? void 0 : _a.format)
|
|
68
|
+
return field.config.format;
|
|
69
|
+
if (props.showTime)
|
|
70
|
+
return utils_1.GLOBAL.CONFIG.DATE.DATE_TIME_FORMAT;
|
|
71
|
+
return utils_1.GLOBAL.CONFIG.DATE.DATE_FORMAT;
|
|
72
|
+
}, []);
|
|
43
73
|
return react_1.default.createElement(antd_1.DatePicker, Object.assign({ style: { width: '80%' } }, params, field.config, { showTime: props.showTime, format: format, onChange: day => {
|
|
44
74
|
if (day == null) {
|
|
45
75
|
onChange(undefined);
|
|
@@ -138,12 +168,17 @@ const DatePickRender = (value, data, field, showTime) => {
|
|
|
138
168
|
let params = { placeholder: (0, _input_1.getPlaceholder)(field, true), disabled, allowClear: true };
|
|
139
169
|
if (field.required || field.rules && lodash_1.default.find(field.rules, { required: true }))
|
|
140
170
|
params.allowClear = false;
|
|
171
|
+
const format = (0, react_1.useMemo)(() => {
|
|
172
|
+
var _a;
|
|
173
|
+
if ((_a = field.config) === null || _a === void 0 ? void 0 : _a.format)
|
|
174
|
+
return field.config.format;
|
|
175
|
+
return utils_1.GLOBAL.CONFIG.DATE.TIME_FORMAT;
|
|
176
|
+
}, []);
|
|
141
177
|
if (value) {
|
|
142
|
-
let day = (0, dayjs_1.default)(value);
|
|
178
|
+
let day = (0, dayjs_1.default)(value, format);
|
|
143
179
|
if (day.isValid())
|
|
144
180
|
params.value = day;
|
|
145
181
|
}
|
|
146
|
-
const format = lodash_1.default.has(field.config, 'format') ? field.config.format : utils_1.GLOBAL.CONFIG.DATE.TIME_FORMAT;
|
|
147
182
|
return react_1.default.createElement(antd_1.TimePicker, Object.assign({ style: { width: '80%' } }, params, field.config, { format: format, onChange: day => {
|
|
148
183
|
if (day == null) {
|
|
149
184
|
onChange(undefined);
|
|
@@ -152,25 +187,68 @@ const DatePickRender = (value, data, field, showTime) => {
|
|
|
152
187
|
onChange(day.format(format));
|
|
153
188
|
}
|
|
154
189
|
} }));
|
|
155
|
-
}, {
|
|
156
|
-
render: (value, data, field) => {
|
|
157
|
-
if (field.render)
|
|
158
|
-
return field.render(value, data);
|
|
159
|
-
if (value == null || value == '')
|
|
160
|
-
return '';
|
|
161
|
-
let mnt = (0, dayjs_1.default)(value);
|
|
162
|
-
if (mnt.isValid()) {
|
|
163
|
-
const format = lodash_1.default.has(field.config, 'format') ? field.config.format : utils_1.GLOBAL.CONFIG.DATE.TIME_FORMAT;
|
|
164
|
-
return mnt.format(format);
|
|
165
|
-
}
|
|
166
|
-
return '';
|
|
167
|
-
}
|
|
168
190
|
});
|
|
191
|
+
// 1.5 版本暂无
|
|
192
|
+
// registerFormField('timerange', (props: FormFieldProps) => {
|
|
193
|
+
// const { field, disabled, value, onChange } = props;
|
|
194
|
+
// const ptn = useMemo(() => field.field.split(','), [])
|
|
195
|
+
// const format = useMemo(() => {
|
|
196
|
+
// if (field.config?.format) return field.config.format;
|
|
197
|
+
// return GLOBAL.CONFIG.DATE.TIME_FORMAT
|
|
198
|
+
// }, [])
|
|
199
|
+
// if (ptn.length != 2) {
|
|
200
|
+
// console.error('daterange field must hava a start and end, eg: field:"startTime,endTime"')
|
|
201
|
+
// return <TimePicker value={value} onChange={(val) => onChange(val.format(format))} disabled={disabled} />
|
|
202
|
+
// }
|
|
203
|
+
// const [startField, endField] = ptn;
|
|
204
|
+
// let params: TimeRangePickerProps = { disabled, allowClear: true };
|
|
205
|
+
// if (field.required || field.rules && _.find(field.rules, { required: true })) params.allowClear = false;
|
|
206
|
+
// params.value = [undefined, undefined];
|
|
207
|
+
// if (value) {
|
|
208
|
+
// if (value[startField]) {
|
|
209
|
+
// let day = dayjs(value[startField], format);
|
|
210
|
+
// if (day.isValid()) params.value[0] = day;
|
|
211
|
+
// }
|
|
212
|
+
// if (value[endField]) {
|
|
213
|
+
// let day = dayjs(value[endField], format);
|
|
214
|
+
// if (day.isValid()) params.value[1] = day;
|
|
215
|
+
// }
|
|
216
|
+
// }
|
|
217
|
+
// return <TimePicker.RangePicker
|
|
218
|
+
// style={{ width: '80%' }}
|
|
219
|
+
// {...params}
|
|
220
|
+
// {...field.config}
|
|
221
|
+
// format={format}
|
|
222
|
+
// onChange={([start, end]) => {
|
|
223
|
+
// if (start && end) {
|
|
224
|
+
// onChange({
|
|
225
|
+
// [startField]: start.format(format),
|
|
226
|
+
// [endField]: end.format(format),
|
|
227
|
+
// })
|
|
228
|
+
// } else {
|
|
229
|
+
// onChange({
|
|
230
|
+
// [startField]: undefined,
|
|
231
|
+
// [endField]: undefined,
|
|
232
|
+
// })
|
|
233
|
+
// }
|
|
234
|
+
// }}
|
|
235
|
+
// />
|
|
236
|
+
// }, {
|
|
237
|
+
// render: (value, data, field) => {
|
|
238
|
+
// const ptn = field.field.split(',');
|
|
239
|
+
// if (ptn.length != 2) return '';
|
|
240
|
+
// const [startField, endField] = ptn;
|
|
241
|
+
// if (data[startField] && data[endField]) {
|
|
242
|
+
// return `${data[startField]} - ${data[endField]}`
|
|
243
|
+
// }
|
|
244
|
+
// return '';
|
|
245
|
+
// }
|
|
246
|
+
// });
|
|
169
247
|
const AntdRangePick = (props) => {
|
|
170
248
|
const { field, disabled, value, onChange } = props;
|
|
171
249
|
let ptn = field.field.split(',');
|
|
172
250
|
if (ptn.length != 2) {
|
|
173
|
-
console.error('
|
|
251
|
+
console.error('daterange field must hava a start and end, eg: field:"startTime,endTime"');
|
|
174
252
|
return react_1.default.createElement(DatePick, Object.assign({}, props));
|
|
175
253
|
}
|
|
176
254
|
const [startField, endField] = ptn;
|
|
@@ -190,9 +268,6 @@ const AntdRangePick = (props) => {
|
|
|
190
268
|
params.value[1] = day;
|
|
191
269
|
}
|
|
192
270
|
}
|
|
193
|
-
// const format = _.has(field.config, 'format') ? field.config.format : (
|
|
194
|
-
// props.showTime ? GLOBAL.CONFIG.DATE.DATE_TIME_FORMAT : GLOBAL.CONFIG.DATE.DATE_FORMAT
|
|
195
|
-
// )
|
|
196
271
|
let format = props.isDate ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss';
|
|
197
272
|
let showTime = !props.isDate;
|
|
198
273
|
if (props.isDate) {
|
|
@@ -240,7 +315,7 @@ const DateRangePick = (props) => {
|
|
|
240
315
|
const { field, disabled, value, onChange, showTime } = props;
|
|
241
316
|
let ptn = field.field.split(',');
|
|
242
317
|
if (ptn.length != 2) {
|
|
243
|
-
console.error('
|
|
318
|
+
console.error('daterange field must hava a start and end, eg: field:"startTime,endTime"');
|
|
244
319
|
return react_1.default.createElement(DatePick, Object.assign({}, props));
|
|
245
320
|
}
|
|
246
321
|
const [startField, endField] = ptn;
|
|
@@ -291,7 +366,7 @@ const RangePickRender = (value, data, field, showTime) => {
|
|
|
291
366
|
breakCol: true,
|
|
292
367
|
isMultiple: true
|
|
293
368
|
});
|
|
294
|
-
(0, _register_1.registerFormField)('
|
|
369
|
+
(0, _register_1.registerFormField)('datetimerange', (props) => react_1.default.createElement(AntdRangePick, Object.assign({}, props, { isDate: false })), {
|
|
295
370
|
render: (value, data, field) => RangePickRender(value, data, field, true),
|
|
296
371
|
breakCol: true,
|
|
297
372
|
isMultiple: true
|
|
@@ -301,7 +376,7 @@ const RangePickRender = (value, data, field, showTime) => {
|
|
|
301
376
|
breakCol: true,
|
|
302
377
|
isMultiple: true
|
|
303
378
|
});
|
|
304
|
-
(0, _register_1.registerFormField)('
|
|
379
|
+
(0, _register_1.registerFormField)('datetimerange-single', (props) => react_1.default.createElement(DateRangePick, Object.assign({}, props, { showTime: true })), {
|
|
305
380
|
render: (value, data, field) => RangePickRender(value, data, field, true),
|
|
306
381
|
breakCol: true,
|
|
307
382
|
isMultiple: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|