vap1 0.1.6 → 0.1.7

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.
@@ -49,7 +49,6 @@ const _DTreeSelect = (props) => {
49
49
  const { node } = dataNode.data;
50
50
  const API = props.childApi + node[treeState.keyField];
51
51
  const children = yield (0, BaseTreeSelect_1.getData)(API, notCache);
52
- console.log('dataNode', dataNode);
53
52
  const pathArr = dataNode.pos.split('-');
54
53
  pathArr.splice(0, 1);
55
54
  let nodePath = pathArr.map(i => `[${i}]`).join('.children');
@@ -0,0 +1,3 @@
1
+ import type { FC } from 'react';
2
+ import type { COSelectProps } from './COSelect';
3
+ export declare const COButton: FC<COSelectProps>;
@@ -0,0 +1,121 @@
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
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.COButton = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const index_1 = require("../../../index");
33
+ const COTree_1 = require("./COTree");
34
+ const utils_1 = require("../../../utils");
35
+ const COTreeUtil_1 = require("./COTreeUtil");
36
+ const COSelect_1 = require("./COSelect");
37
+ const COButton = props => {
38
+ const [open, setOpen] = (0, react_1.useState)(false);
39
+ const orgCodeRender = (0, react_1.useMemo)(() => utils_1.Renders.ApiPostRender({
40
+ api: props.api || utils_1.GLOBAL.CONFIG.BASIC.ORG_API,
41
+ nameField: props.titleField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[1],
42
+ valueFiled: props.keyField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[0],
43
+ render: (info) => {
44
+ if (info.label)
45
+ return react_1.default.createElement("span", { title: info.label }, info.label);
46
+ return react_1.default.createElement("span", { title: info.value }, info.value);
47
+ }
48
+ }), []);
49
+ const convert = (0, react_1.useMemo)(() => {
50
+ if (props.dataType)
51
+ return props.dataType;
52
+ if (lodash_1.default.has(props, 'value')) {
53
+ if (lodash_1.default.isString(props.value))
54
+ return 'string';
55
+ if (lodash_1.default.isArray(props.value))
56
+ return 'array';
57
+ if (lodash_1.default.isPlainObject(props.value))
58
+ return 'object';
59
+ }
60
+ return 'string';
61
+ }, [props.dataType]);
62
+ const value = (0, react_1.useMemo)(() => {
63
+ switch (convert) {
64
+ case 'array':
65
+ return (props.value || []);
66
+ case 'object':
67
+ return (0, COTreeUtil_1.convertFormObject)(props.value);
68
+ default:
69
+ return (0, COTreeUtil_1.convertFormString)(props.value);
70
+ }
71
+ }, [props.value, convert]);
72
+ const buttonText = (0, react_1.useMemo)(() => {
73
+ if (value == null || value.length == 0) {
74
+ return '点击选择机构';
75
+ }
76
+ if (value.length == 1) {
77
+ return orgCodeRender(value[0].key);
78
+ }
79
+ return react_1.default.createElement("span", null,
80
+ orgCodeRender(value[0].key),
81
+ " \u7B49 ",
82
+ react_1.default.createElement("b", null, value.length),
83
+ "\u4E2A\u673A\u6784");
84
+ }, [value]);
85
+ const [tempValue, setTempValue] = (0, react_1.useState)(value);
86
+ // tagRender={() => {
87
+ //
88
+ // return orgCodeRender(selectValue[0].key) as any;
89
+ // }
90
+ // }}
91
+ const onOk = () => {
92
+ setOpen(false);
93
+ switch (convert) {
94
+ case 'array':
95
+ props.onChange(tempValue);
96
+ return;
97
+ case 'object':
98
+ props.onChange((0, COTreeUtil_1.invertToObject)(tempValue));
99
+ return;
100
+ default:
101
+ props.onChange((0, COTreeUtil_1.invertToString)(tempValue));
102
+ return;
103
+ }
104
+ };
105
+ return react_1.default.createElement(index_1.Button.Group, null,
106
+ react_1.default.createElement(index_1.Button, { disabled: props.disabled, onClick: () => setOpen(true) }, buttonText),
107
+ value.length > 0 && react_1.default.createElement(index_1.Popover, { style: { width: 480 }, overlayClassName: 'co-button-content', content: react_1.default.createElement(COSelect_1.SelectedTable, Object.assign({}, props, { value: value })) },
108
+ react_1.default.createElement(index_1.Button, { icon: "unordered-list", type: "primary", style: { paddingRight: 0, paddingLeft: 4 } })),
109
+ react_1.default.createElement(index_1.Modal, { open: open, title: "\u8BF7\u9009\u62E9\u673A\u6784", bodyStyle: { maxHeight: 540, overflow: 'auto' }, width: 720, onCancel: () => setOpen(false), onOk: onOk },
110
+ react_1.default.createElement(index_1.Alert, { message: react_1.default.createElement(react_1.default.Fragment, null,
111
+ "\u9009\u4E2D\u72B6\u6001\u8BF4\u660E \uFF1A ",
112
+ (0, COTreeUtil_1.flagRender)(0, ' :'),
113
+ " ",
114
+ react_1.default.createElement("span", { style: { color: 'rgba(0,0,0,0.2)', marginLeft: 6, marginRight: 6 } }, "|"),
115
+ (0, COTreeUtil_1.flagRender)(1, ' :'),
116
+ " ",
117
+ react_1.default.createElement("span", { style: { color: 'rgba(0,0,0,0.2)', marginLeft: 6, marginRight: 6 } }, "|"),
118
+ (0, COTreeUtil_1.flagRender)(2, ' :')), type: "info", style: { margin: '12px 12px 0 12px' } }),
119
+ react_1.default.createElement(COTree_1.COTree, Object.assign({}, props, { value: tempValue, onChange: values => setTempValue(values), selectTip: true }))));
120
+ };
121
+ exports.COButton = COButton;
@@ -41,5 +41,6 @@ export type COSelectProps = Omit<COTreeProps, 'onChange' | 'value'> & {
41
41
  */
42
42
  width?: number;
43
43
  };
44
+ export declare const SelectedTable: FC<COSelectProps>;
44
45
  export declare const COSelect: FC<COSelectProps>;
45
46
  export {};
@@ -26,15 +26,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.COSelect = void 0;
29
+ exports.COSelect = exports.SelectedTable = void 0;
30
30
  const react_1 = __importStar(require("react"));
31
31
  const lodash_1 = __importDefault(require("lodash"));
32
- const antd_1 = require("antd");
32
+ const index_1 = require("../../../index");
33
33
  const Tables_1 = require("../../Tables");
34
34
  const COTree_1 = require("./COTree");
35
35
  const utils_1 = require("../../../utils");
36
36
  const COTreeUtil_1 = require("./COTreeUtil");
37
- const COSelect = props => {
37
+ const SelectedTable = props => {
38
38
  const orgCodeRender = (0, react_1.useMemo)(() => utils_1.Renders.ApiPostRender({
39
39
  api: props.api || utils_1.GLOBAL.CONFIG.BASIC.ORG_API,
40
40
  nameField: props.titleField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[1],
@@ -45,6 +45,13 @@ const COSelect = props => {
45
45
  return react_1.default.createElement("span", { title: info.value }, info.value);
46
46
  }
47
47
  }), []);
48
+ return react_1.default.createElement(Tables_1.STable, { style: { width: 460 }, list: props.value || [], columns: [
49
+ { dataIndex: 'key', title: '机构名称', render: orgCodeRender },
50
+ { dataIndex: 'flag', title: '状态', render: (flag) => (0, COTreeUtil_1.flagRender)(flag), width: 100 },
51
+ ], pagination: false });
52
+ };
53
+ exports.SelectedTable = SelectedTable;
54
+ const COSelect = props => {
48
55
  const convert = (0, react_1.useMemo)(() => {
49
56
  if (props.dataType)
50
57
  return props.dataType;
@@ -56,15 +63,15 @@ const COSelect = props => {
56
63
  if (lodash_1.default.isPlainObject(props.value))
57
64
  return 'object';
58
65
  }
59
- return 'array';
66
+ return 'string';
60
67
  }, [props.dataType]);
61
68
  const value = (0, react_1.useMemo)(() => {
62
69
  switch (convert) {
63
70
  case 'array':
64
- return props.value;
71
+ return (props.value || []);
65
72
  case 'object':
66
73
  return (0, COTreeUtil_1.convertFormObject)(props.value);
67
- case 'string':
74
+ default:
68
75
  return (0, COTreeUtil_1.convertFormString)(props.value);
69
76
  }
70
77
  }, [props.value, convert]);
@@ -79,29 +86,18 @@ const COSelect = props => {
79
86
  case 'object':
80
87
  props.onChange((0, COTreeUtil_1.invertToObject)(value));
81
88
  return;
82
- case 'string':
89
+ default:
83
90
  props.onChange((0, COTreeUtil_1.invertToString)(value));
84
91
  return;
85
92
  }
86
93
  }, [convert]);
87
- return react_1.default.createElement(antd_1.Input.Group, { compact: true, style: { width: props.width || '100%', display: 'flex' } },
88
- react_1.default.createElement(antd_1.Select, { maxTagCount: 1, mode: "tags", disabled: props.disabled, maxTagPlaceholder: react_1.default.createElement(react_1.default.Fragment, null), showSearch: false, className: 'co-select', allowClear: props.allowClear,
94
+ return react_1.default.createElement(index_1.Input.Group, { compact: true, style: { width: props.width || '100%', display: 'flex' } },
95
+ react_1.default.createElement(index_1.Select, { maxTagCount: 1, mode: "tags", disabled: props.disabled, maxTagPlaceholder: react_1.default.createElement(react_1.default.Fragment, null), showSearch: false, className: 'co-select', allowClear: props.allowClear,
89
96
  // onClear={() => props.onChange([])}
90
- placeholder: props.placeholder || '请选择机构', style: { flexGrow: 1 }, showAction: ["click"],
91
- // options={[]}
92
- labelInValue: true,
93
- // open
94
- // open={open}
95
- // onDropdownVisibleChange={(open) => {
96
- // setOpen(open)
97
- // }}
98
- value: selectValue, dropdownStyle: { width: props.width || '100%', maxHeight: 360, overflow: 'auto' }, dropdownRender: () => react_1.default.createElement(COTree_1.COTree, Object.assign({}, props, { value: value, onChange: onChange })), getPopupContainer: (evt) => {
97
+ placeholder: props.placeholder || '请选择机构', style: { flexGrow: 1 }, showAction: ["click"], options: [], labelInValue: true, value: selectValue, dropdownStyle: { width: props.width || '100%', maxHeight: 360, overflow: 'auto' }, dropdownRender: () => react_1.default.createElement(COTree_1.COTree, Object.assign({}, props, { value: value, onChange: onChange })), getPopupContainer: (evt) => {
99
98
  return evt.parentElement.parentElement;
100
99
  } }),
101
- react_1.default.createElement(antd_1.Popover, { style: { width: 480 }, content: () => react_1.default.createElement(Tables_1.STable, { style: { width: 460 }, list: value || [], columns: [
102
- { dataIndex: 'key', title: '机构名称', render: orgCodeRender },
103
- { dataIndex: 'flag', title: '状态', render: COTreeUtil_1.flagRender, width: 100 },
104
- ], pagination: false }) },
105
- react_1.default.createElement(antd_1.Button, { disabled: value.length == 0, type: "primary" }, "\u67E5\u770B\u5DF2\u9009")));
100
+ react_1.default.createElement(index_1.Popover, { style: { width: 480 }, content: react_1.default.createElement(exports.SelectedTable, Object.assign({}, props, { value: value })) },
101
+ react_1.default.createElement(index_1.Button, { disabled: value.length == 0, type: "primary" }, "\u67E5\u770B\u5DF2\u9009")));
106
102
  };
107
103
  exports.COSelect = COSelect;
@@ -159,7 +159,7 @@ const COTree = (props) => {
159
159
  return react_1.default.createElement(antd_1.Spin, { style: { display: 'block', margin: '24px auto' } });
160
160
  let defaultExpandedKeys = (ALL === null || ALL === void 0 ? void 0 : ALL.length) == 1 ? [ALL[0][keyField]] : [];
161
161
  const onCheck = (checked, info) => {
162
- const key = info.node.props.key;
162
+ const key = info.node.props.eventKey;
163
163
  if (HALF_CHECKED.has(key)) {
164
164
  // 本级变为1
165
165
  const arr = utils_1.ArrayUtil.update(props.value || [], { key, flag: 1 }, 'key');
@@ -9,7 +9,7 @@ export type TreeFields = {
9
9
  parentField: string;
10
10
  checkField?: string;
11
11
  };
12
- export declare const flagRender: (flag: FLAG) => React.JSX.Element;
12
+ export declare const flagRender: (flag: FLAG, split?: React.ReactNode) => React.JSX.Element;
13
13
  export declare const getTreeDataByLoaded: (all: any[], treeProps: COTreeProps, FIELDS: TreeFields) => [TreeProps, Set<string>, Set<string>, Set<string>];
14
14
  export declare const convertFormObject: (obj: PlainObject) => COTreeValueItem[];
15
15
  export declare const invertToObject: (items: COTreeValueItem[]) => PlainObject;
@@ -8,19 +8,22 @@ const react_1 = __importDefault(require("react"));
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const utils_1 = require("../../../utils");
10
10
  const Icon_1 = require("../../_adapt/Icon");
11
- const flagRender = (flag) => {
11
+ const flagRender = (flag, split = utils_1.Const.NONE) => {
12
12
  switch (flag) {
13
13
  case 0:
14
14
  return react_1.default.createElement("span", { className: 'co-tree-select-all' },
15
15
  react_1.default.createElement(Icon_1.Icon, { type: "check-circle" }),
16
+ split,
16
17
  react_1.default.createElement("small", null, "\u542B\u4E0B\u7EA7"));
17
18
  case 1:
18
19
  return react_1.default.createElement("span", { className: 'co-tree-not-include' },
19
20
  react_1.default.createElement(Icon_1.Icon, { type: "switcher" }),
21
+ split,
20
22
  react_1.default.createElement("small", null, "\u4E0D\u542B\u672C\u7EA7"));
21
23
  case 2:
22
24
  return react_1.default.createElement("span", { className: 'co-tree-select-only' },
23
25
  react_1.default.createElement(Icon_1.Icon, { type: "symbol-check-on" }),
26
+ split,
24
27
  react_1.default.createElement("small", null, "\u672C\u7EA7+\u6307\u5B9A\u4E0B\u7EA7"));
25
28
  }
26
29
  return utils_1.Const.NONE;
@@ -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", "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"];
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", "timerange", "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-button"];
@@ -81,7 +81,7 @@ exports._FieldType = [
81
81
  'datetimerange',
82
82
  'daterange-single',
83
83
  'datetimerange-single',
84
- // 'timerange',
84
+ 'timerange',
85
85
  'monthrange',
86
86
  'json-array',
87
87
  'json-table',
@@ -104,5 +104,6 @@ exports._FieldType = [
104
104
  'role',
105
105
  'roles',
106
106
  // CEMS 专用
107
- 'cems-org',
107
+ // 'cems-org',
108
+ 'cems-org-button',
108
109
  ];
@@ -1,15 +1,43 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
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;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
26
  exports.Drawer = void 0;
7
- const react_1 = __importDefault(require("react"));
27
+ const react_1 = __importStar(require("react"));
8
28
  const antd_1 = require("antd");
9
29
  const utils_1 = require("./utils");
10
30
  const Drawer = (props) => {
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') }),
31
+ const className = (0, react_1.useMemo)(() => {
32
+ let clazz = [];
33
+ if (props.className)
34
+ clazz.push(props.className);
35
+ if (props.footer && react_1.default.isValidElement(props.footer))
36
+ clazz.push('ant-drawer-has-footer');
37
+ return clazz.join(' ');
38
+ }, [props.className, props.footer]);
39
+ return react_1.default.createElement(antd_1.Drawer, Object.assign({ getContainer: () => document.body }, (0, utils_1.convertProps)(props, ['visible', 'open'], ['afterVisibleChange', 'afterOpenChange']), { className: className }),
12
40
  props.children,
13
- props.footer);
41
+ (props.footer && react_1.default.isValidElement(props.footer)) && react_1.default.createElement("div", { className: 'ant-drawer-footer' }, props.footer));
14
42
  };
15
43
  exports.Drawer = Drawer;
@@ -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, { getContainer: () => document.getElementById('vap-app-content'), visible: this.props.open, footer: this.props.footer === null ? null : this.renderFooter() }));
51
+ return react_1.default.createElement(antd_1.Modal, Object.assign({ getContainer: () => document.body }, this.props, { visible: this.props.open, footer: this.props.footer === null ? null : this.renderFooter() }));
52
52
  }
53
53
  }
54
54
  exports.Modal = Modal;
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
8
  const _register_1 = require("../../UForm/_register");
9
- const COSelect_1 = require("../../Trees/COTree/COSelect");
9
+ const COButton_1 = require("../../Trees/COTree/COButton");
10
10
  const _input_1 = require("../../UForm/_input");
11
11
  // CEMS ORG SELECT
12
- (0, _register_1.registerFormField)('cems-org', (props) => {
12
+ (0, _register_1.registerFormField)('cems-org-button', (props) => {
13
13
  const { field, disabled, value, onChange } = props;
14
14
  let params = {
15
15
  placeholder: (0, _input_1.getPlaceholder)(field, true),
@@ -19,5 +19,5 @@ const _input_1 = require("../../UForm/_input");
19
19
  };
20
20
  if (field.required || field.rules && lodash_1.default.find(field.rules, { required: true }))
21
21
  params.allowClear = false;
22
- return react_1.default.createElement(COSelect_1.COSelect, Object.assign({ dataType: field.dataType || 'string' }, params, field.config, { value: value }));
22
+ return react_1.default.createElement(COButton_1.COButton, Object.assign({ dataType: field.dataType || 'string' }, params, field.config, { value: value }));
23
23
  });
@@ -188,62 +188,105 @@ const DatePickRender = (value, data, field, showTime) => {
188
188
  }
189
189
  } }));
190
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
- // });
191
+ (0, _register_1.registerFormField)('timerange', (props) => {
192
+ const { field, disabled, value, onChange } = props;
193
+ const ptn = (0, react_1.useMemo)(() => field.field.split(','), []);
194
+ const format = (0, react_1.useMemo)(() => {
195
+ var _a;
196
+ if ((_a = field.config) === null || _a === void 0 ? void 0 : _a.format)
197
+ return field.config.format;
198
+ return utils_1.GLOBAL.CONFIG.DATE.TIME_FORMAT;
199
+ }, []);
200
+ if (ptn.length != 2) {
201
+ console.error('daterange field must hava a start and end, eg: field:"startTime,endTime"');
202
+ return react_1.default.createElement(antd_1.TimePicker, { value: value, onChange: (val) => onChange(val.format(format)), disabled: disabled });
203
+ }
204
+ const [startField, endField] = ptn;
205
+ let startProps = { disabled, format };
206
+ let endProps = { disabled, format };
207
+ if (field.required || field.rules && lodash_1.default.find(field.rules, { required: true })) {
208
+ startProps.allowClear = false;
209
+ endProps.allowClear = false;
210
+ }
211
+ if (value) {
212
+ if (value[startField]) {
213
+ let day = (0, dayjs_1.default)(value[startField], format);
214
+ if (day.isValid())
215
+ startProps.value = day;
216
+ }
217
+ if (value[endField]) {
218
+ let day = (0, dayjs_1.default)(value[endField], format);
219
+ if (day.isValid())
220
+ endProps.value = day;
221
+ }
222
+ if (!lodash_1.default.has(field, 'config.cross') || field.config.cross != true) {
223
+ if (endProps.value) {
224
+ startProps.hideDisabledOptions = true;
225
+ startProps.disabledHours = () => lodash_1.default.range(endProps.value.hour() + 1, 24);
226
+ startProps.disabledMinutes = (selectedHour) => {
227
+ if (selectedHour == endProps.value.hour()) {
228
+ return lodash_1.default.range(endProps.value.minute() + 1, 60);
229
+ }
230
+ return [];
231
+ };
232
+ startProps.disabledSeconds = (selectedHour, selectedMinute) => {
233
+ if (selectedHour == endProps.value.hour() && selectedMinute == endProps.value.minute()) {
234
+ return lodash_1.default.range(endProps.value.second() + 1, 60);
235
+ }
236
+ return [];
237
+ };
238
+ }
239
+ if (startProps.value) {
240
+ endProps.hideDisabledOptions = true;
241
+ endProps.disabledHours = () => lodash_1.default.range(0, startProps.value.hour());
242
+ endProps.disabledMinutes = (selectedHour) => {
243
+ if (selectedHour == startProps.value.hour()) {
244
+ return lodash_1.default.range(0, startProps.value.minute());
245
+ }
246
+ return [];
247
+ };
248
+ endProps.disabledSeconds = (selectedHour, selectedMinute) => {
249
+ if (selectedHour == startProps.value.hour() && selectedMinute == startProps.value.minute()) {
250
+ return lodash_1.default.range(0, startProps.value.second());
251
+ }
252
+ return [];
253
+ };
254
+ }
255
+ }
256
+ }
257
+ return react_1.default.createElement(antd_1.Input.Group, null,
258
+ react_1.default.createElement(antd_1.TimePicker, Object.assign({ style: { width: '40%' } }, startProps, {
259
+ // {...field.config}
260
+ format: format, onChange: time => {
261
+ if (time == null) {
262
+ onChange({ [startField]: null, [endField]: (value && value[endField]) ? value[endField] : null });
263
+ }
264
+ else {
265
+ onChange({ [startField]: time.format(format), [endField]: (value && value[endField]) ? value[endField] : null });
266
+ }
267
+ } })),
268
+ react_1.default.createElement(antd_1.Button, { ghost: true, disabled: true, style: { border: 'none' } }, "~"),
269
+ react_1.default.createElement(antd_1.TimePicker, Object.assign({ style: { width: '40%' } }, endProps, { format: format, onChange: time => {
270
+ if (time == null) {
271
+ onChange({ [startField]: (value && value[startField]) ? value[startField] : null, [endField]: null });
272
+ }
273
+ else {
274
+ onChange({ [startField]: (value && value[startField]) ? value[startField] : null, [endField]: time.format(format) });
275
+ }
276
+ } })));
277
+ }, {
278
+ isMultiple: true,
279
+ render: (value, data, field) => {
280
+ const ptn = field.field.split(',');
281
+ if (ptn.length != 2)
282
+ return '';
283
+ const [startField, endField] = ptn;
284
+ if (data[startField] && data[endField]) {
285
+ return `${data[startField]} - ${data[endField]}`;
286
+ }
287
+ return '';
288
+ }
289
+ });
247
290
  const AntdRangePick = (props) => {
248
291
  const { field, disabled, value, onChange } = props;
249
292
  let ptn = field.field.split(',');
@@ -381,8 +424,3 @@ const RangePickRender = (value, data, field, showTime) => {
381
424
  breakCol: true,
382
425
  isMultiple: true
383
426
  });
384
- // registerFormField('monthrange', (props: FormFieldProps) => <AntdRangePick {...props} isDate={true} />, {
385
- // render: (value, data, field) => RangePickRender(value, data, field, false),
386
- // breakCol: true,
387
- // isMultiple: true
388
- // });
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"vap1","version":"0.1.6","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
1
+ {"name":"vap1","version":"0.1.7","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
package/utils/Global.d.ts CHANGED
@@ -159,6 +159,10 @@ export type GlobalSetting = {
159
159
  * 表单大小 ,说明: 1.5 版本无效
160
160
  */
161
161
  SIZE: any;
162
+ /**
163
+ * 使用 Drawer 代替 Modal,暂不支持
164
+ */
165
+ USE_DRAWER: boolean;
162
166
  /**
163
167
  * UFormModal 点击弹框外蒙层区域时,允许自动关闭
164
168
  * 默认是 true
package/utils/Global.js CHANGED
@@ -85,6 +85,7 @@ const DEFAULT = {
85
85
  },
86
86
  FORM: {
87
87
  SIZE: 'small',
88
+ USE_DRAWER: false,
88
89
  maskClosable: false,
89
90
  ILLEGAL_CHAR_VALIDATE: true,
90
91
  ILLEGAL_CHAR_REGEXP: /[\'"#$?:!!?%¥&^*]/im,