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.
Files changed (39) hide show
  1. package/components/SearchBar/ByField.js +7 -1
  2. package/components/SearchBar/ByKeyword.js +52 -10
  3. package/components/Tables/STable.d.ts +9 -1
  4. package/components/Tables/STable.js +20 -5
  5. package/components/Tables/VTable.js +18 -10
  6. package/components/Trees/ActionTree.js +0 -1
  7. package/components/Trees/COTree/COSelect.d.ts +45 -0
  8. package/components/Trees/COTree/COSelect.js +107 -0
  9. package/components/Trees/COTree/COTree.d.ts +74 -0
  10. package/components/Trees/COTree/COTree.js +207 -0
  11. package/components/Trees/COTree/COTreeUtil.d.ts +17 -0
  12. package/components/Trees/COTree/COTreeUtil.js +187 -0
  13. package/components/UForm/UForm.js +0 -1
  14. package/components/UForm/UFormModal.js +1 -1
  15. package/components/UForm/_FieldType.d.ts +1 -1
  16. package/components/UForm/_FieldType.js +10 -2
  17. package/components/UForm/index.d.ts +10 -0
  18. package/components/_adapt/Drawer.js +1 -1
  19. package/components/_adapt/Dropdown.d.ts +12 -3
  20. package/components/_adapt/Dropdown.js +10 -2
  21. package/components/_adapt/Modal.js +1 -1
  22. package/components/_adapt/Radio.js +6 -6
  23. package/components/_common/Upagination.js +4 -4
  24. package/components/_setup/UForm/UFormCOTree.d.ts +1 -0
  25. package/components/_setup/UForm/UFormCOTree.js +23 -0
  26. package/components/_setup/UForm/UFormDate.js +99 -24
  27. package/components/_setup/UForm/UFormJSONTable.d.ts +1 -0
  28. package/components/_setup/UForm/UFormJSONTable.js +157 -0
  29. package/components/_setup/UForm/UFormSelect.js +19 -0
  30. package/components/_setup/index.d.ts +1 -0
  31. package/components/_setup/index.js +1 -0
  32. package/hooks/_list.js +2 -1
  33. package/hooks/useArray.d.ts +2 -3
  34. package/hooks/useArray.js +34 -67
  35. package/package.json +1 -1
  36. package/utils/ArrayUtil.js +8 -1
  37. package/utils/Global.d.ts +0 -1
  38. package/utils/index.d.ts +32 -1
  39. 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", "timerange", "daterange-single", "timerange-single", "monthrange", "json-array", "file", "multi-file", "img", "idcard", "ip", "ip4", "ip6", "phone", "telephone", "mobilephone", "port", "mac", "url", "email", "crontab", "organization", "role", "roles"];
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
- 'timerange',
81
+ 'datetimerange',
78
82
  'daterange-single',
79
- 'timerange-single',
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 declare const Dropdown: FC<DropdownProps>;
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 Dropdown = props => {
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
- exports.Dropdown = Dropdown;
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) => react_1.default.createElement(antd_1.Radio.Group, Object.assign({}, lodash_1.default.omit(props, 'children')), props.options.map(item => {
11
- if (props.optionType == 'button') {
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(exports.Radio, Object.assign({}, props));
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 = __importDefault(require("react"));
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 = lodash_1.default.has(field.config, 'format') ? field.config.format : (props.showTime ? utils_1.GLOBAL.CONFIG.DATE.DATE_TIME_FORMAT : utils_1.GLOBAL.CONFIG.DATE.DATE_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('timerange field must hava a start and end, eg: field:"startTime,endTime"');
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('timerange field must hava a start and end, eg: field:"startTime,endTime"');
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)('timerange', (props) => react_1.default.createElement(AntdRangePick, Object.assign({}, props, { isDate: false })), {
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)('timerange-single', (props) => react_1.default.createElement(DateRangePick, Object.assign({}, props, { showTime: true })), {
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 {};