vap1 0.1.4 → 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/index.d.ts +1 -1
- package/package.json +1 -1
- package/uform/FormEditor.d.ts +21 -0
- package/uform/FormEditor.js +101 -0
- package/uform/FormViewer.d.ts +12 -0
- package/uform/FormViewer.js +71 -0
- package/uform/hooks/useEditor.d.ts +28 -0
- package/uform/hooks/useEditor.js +144 -0
- package/uform/hooks/useForm.d.ts +4 -0
- package/uform/hooks/useForm.js +7 -0
- package/uform/index.d.ts +5 -0
- package/uform/index.js +35 -0
- package/uform/inputs/_advance.d.ts +2 -0
- package/uform/inputs/_advance.js +57 -0
- package/uform/inputs/_date.d.ts +2 -0
- package/uform/inputs/_date.js +178 -0
- package/uform/inputs/_input.d.ts +6 -0
- package/uform/inputs/_input.js +139 -0
- package/uform/inputs/_select.d.ts +2 -0
- package/uform/inputs/_select.js +241 -0
- package/uform/inputs/_specific.d.ts +2 -0
- package/uform/inputs/_specific.js +107 -0
- package/uform/inputs/index.d.ts +6 -0
- package/uform/inputs/index.js +18 -0
- package/uform/inputs/register.d.ts +25 -0
- package/uform/inputs/register.js +47 -0
- package/uform/panel/Editor/GroupEditor.d.ts +7 -0
- package/uform/panel/Editor/GroupEditor.js +126 -0
- package/uform/panel/Editor/ListEditor.d.ts +4 -0
- package/uform/panel/Editor/ListEditor.js +77 -0
- package/uform/panel/Editor/_FieldItems.d.ts +5 -0
- package/uform/panel/Editor/_FieldItems.js +45 -0
- package/uform/panel/Editor/_GroupCollapse.d.ts +3 -0
- package/uform/panel/Editor/_GroupCollapse.js +24 -0
- package/uform/panel/Editor/_GroupDefault.d.ts +3 -0
- package/uform/panel/Editor/_GroupDefault.js +24 -0
- package/uform/panel/Editor/_GroupStep.d.ts +3 -0
- package/uform/panel/Editor/_GroupStep.js +49 -0
- package/uform/panel/Editor/_GroupTab.d.ts +3 -0
- package/uform/panel/Editor/_GroupTab.js +41 -0
- package/uform/panel/Editor/index.d.ts +3 -0
- package/uform/panel/Editor/index.js +83 -0
- package/uform/panel/Items/index.d.ts +3 -0
- package/uform/panel/Items/index.js +23 -0
- package/uform/panel/Propreties/CanvasProperties.d.ts +3 -0
- package/uform/panel/Propreties/CanvasProperties.js +42 -0
- package/uform/panel/Propreties/Component/FieldPlugin.d.ts +12 -0
- package/uform/panel/Propreties/Component/FieldPlugin.js +39 -0
- package/uform/panel/Propreties/Component/LinkAsyncFunction.d.ts +8 -0
- package/uform/panel/Propreties/Component/LinkAsyncFunction.js +171 -0
- package/uform/panel/Propreties/Component/LinkSyncFunction.d.ts +8 -0
- package/uform/panel/Propreties/Component/LinkSyncFunction.js +149 -0
- package/uform/panel/Propreties/Component/Links.d.ts +3 -0
- package/uform/panel/Propreties/Component/Links.js +114 -0
- package/uform/panel/Propreties/Component/OptionTable.d.ts +3 -0
- package/uform/panel/Propreties/Component/OptionTable.js +144 -0
- package/uform/panel/Propreties/Component/RegexpModal.d.ts +5 -0
- package/uform/panel/Propreties/Component/RegexpModal.js +74 -0
- package/uform/panel/Propreties/Component/Validate.d.ts +3 -0
- package/uform/panel/Propreties/Component/Validate.js +93 -0
- package/uform/panel/Propreties/Component/ValidateAsyncFunction.d.ts +3 -0
- package/uform/panel/Propreties/Component/ValidateAsyncFunction.js +83 -0
- package/uform/panel/Propreties/Component/ValidateSyncFunction.d.ts +3 -0
- package/uform/panel/Propreties/Component/ValidateSyncFunction.js +77 -0
- package/uform/panel/Propreties/FieldOptions.d.ts +6 -0
- package/uform/panel/Propreties/FieldOptions.js +131 -0
- package/uform/panel/Propreties/FieldProperties.d.ts +3 -0
- package/uform/panel/Propreties/FieldProperties.js +60 -0
- package/uform/panel/Propreties/GroupProperties.d.ts +3 -0
- package/uform/panel/Propreties/GroupProperties.js +17 -0
- package/uform/panel/Propreties/_ItemAdvance.d.ts +4 -0
- package/uform/panel/Propreties/_ItemAdvance.js +140 -0
- package/uform/panel/Propreties/_ItemBase.d.ts +4 -0
- package/uform/panel/Propreties/_ItemBase.js +34 -0
- package/uform/panel/Propreties/_ItemLink.d.ts +4 -0
- package/uform/panel/Propreties/_ItemLink.js +15 -0
- package/uform/panel/Propreties/_ItemValidate.d.ts +4 -0
- package/uform/panel/Propreties/_ItemValidate.js +67 -0
- package/uform/panel/Propreties/_util.d.ts +9 -0
- package/uform/panel/Propreties/_util.js +2 -0
- package/uform/plugins/index.d.ts +15 -0
- package/uform/plugins/index.js +47 -0
- package/uform/schema.d.ts +155 -0
- package/uform/schema.js +2 -0
- package/uform/utils/Const.d.ts +20 -0
- package/uform/utils/Const.js +24 -0
- package/uform/utils/Convert.d.ts +3 -0
- package/uform/utils/Convert.js +274 -0
- package/uform/utils/SchemaConvert.d.ts +6 -0
- package/uform/utils/SchemaConvert.js +169 -0
- package/uform/utils/arr.d.ts +12 -0
- package/uform/utils/arr.js +175 -0
- 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,149 @@
|
|
|
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.LinkSyncFunction = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
32
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
33
|
+
const index_1 = require("../../../../index");
|
|
34
|
+
const CodeTip = () => react_1.default.createElement(index_1.Popover, { overlayStyle: { width: 540 }, content: react_1.default.createElement(react_1.default.Fragment, null,
|
|
35
|
+
react_1.default.createElement("h5", null, "\u793A\u4F8B\u4EE3\u78011\uFF0C\u6570\u5B57\u7C7B\u578B"),
|
|
36
|
+
react_1.default.createElement("pre", { style: { border: '1px solid #ccc', padding: '6px 12px 2px', backgroundColor: '#f1e8af' }, dangerouslySetInnerHTML: {
|
|
37
|
+
__html: `//示例1: 只联动值
|
|
38
|
+
// 打印值,用于调试,不影响结果
|
|
39
|
+
console.log(value);
|
|
40
|
+
// 支持 lodash: 变量名 : _
|
|
41
|
+
_.map([1,2,3,4],console.log);
|
|
42
|
+
// 打印结果
|
|
43
|
+
print(value > 10 && value <= 100);
|
|
44
|
+
//说明:必须使用 print(true/false) 打印出结果`
|
|
45
|
+
} }),
|
|
46
|
+
react_1.default.createElement("h5", null, "\u793A\u4F8B\u4EE3\u78012\uFF0C\u5B57\u7B26\u4E32\u7C7B\u578B"),
|
|
47
|
+
react_1.default.createElement("pre", { style: { border: '1px solid #ccc', padding: '6px 12px 2px', backgroundColor: '#f1e8af' }, dangerouslySetInnerHTML: {
|
|
48
|
+
__html: `//示例2: 联动值,选项,显示状态,置灰状态,必选状态
|
|
49
|
+
// 说明:不能使用 return 语句,使用 if/else 控制
|
|
50
|
+
if( value=='' || value==null ){
|
|
51
|
+
print(false)
|
|
52
|
+
}else if(value.length < 8){
|
|
53
|
+
print(false);
|
|
54
|
+
}else if(_.endsWith(value,'.jpg')){
|
|
55
|
+
print(true);
|
|
56
|
+
}else if(/xxoo/.test(value)){
|
|
57
|
+
print(true);
|
|
58
|
+
}else if(value.substring(3).indexOf('abc')){
|
|
59
|
+
print(true)
|
|
60
|
+
}else{
|
|
61
|
+
print(false)
|
|
62
|
+
}`
|
|
63
|
+
} })) },
|
|
64
|
+
react_1.default.createElement("a", null, "\u53C2\u8003\u793A\u4F8B"));
|
|
65
|
+
const LinkSyncFunction = props => {
|
|
66
|
+
const targetOptions = (0, react_1.useMemo)(() => {
|
|
67
|
+
let options = [];
|
|
68
|
+
const used = new Set();
|
|
69
|
+
used.add(props.field.field);
|
|
70
|
+
(props.field._links || []).map(item => used.add(item.field));
|
|
71
|
+
if (props.isGroup) {
|
|
72
|
+
props.fields.map((group) => group.fields.map(f => {
|
|
73
|
+
if (used.has(f.field))
|
|
74
|
+
return;
|
|
75
|
+
options.push({ label: react_1.default.createElement("span", null,
|
|
76
|
+
f.title,
|
|
77
|
+
" ",
|
|
78
|
+
react_1.default.createElement("small", null,
|
|
79
|
+
"(",
|
|
80
|
+
f.field,
|
|
81
|
+
")")), value: f.field });
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
props.fields.map(f => {
|
|
86
|
+
if (used.has(f.field))
|
|
87
|
+
return;
|
|
88
|
+
options.push({ label: react_1.default.createElement("span", null,
|
|
89
|
+
f.title,
|
|
90
|
+
" ",
|
|
91
|
+
react_1.default.createElement("small", null,
|
|
92
|
+
"(",
|
|
93
|
+
f.field,
|
|
94
|
+
")")), value: f.field });
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return options;
|
|
98
|
+
}, [props.field._links, props.fields]);
|
|
99
|
+
return react_1.default.createElement(index_1.UFormModal, { tip: react_1.default.createElement(index_1.Alert, { type: "info", message: react_1.default.createElement("ul", { style: { padding: 0, margin: 0 } },
|
|
100
|
+
react_1.default.createElement("li", { style: { listStyle: 'none' } },
|
|
101
|
+
"\u8054\u52A8\u65B9\u6CD5\u8BF4\u660E\uFF1A",
|
|
102
|
+
react_1.default.createElement(CodeTip, null)),
|
|
103
|
+
react_1.default.createElement("li", { style: { listStyle: 'none' } },
|
|
104
|
+
"\u8054\u52A8\u503C\u4E3A\u53D8\u91CF ",
|
|
105
|
+
react_1.default.createElement("b", null, "value")),
|
|
106
|
+
react_1.default.createElement("li", { style: { listStyle: 'none' } },
|
|
107
|
+
"\u8054\u52A8\u8868\u5355\u53D8\u91CF ",
|
|
108
|
+
react_1.default.createElement("b", null, "from")),
|
|
109
|
+
react_1.default.createElement("li", { style: { listStyle: 'none' } },
|
|
110
|
+
"\u65B9\u6CD5\u6269\u5C55\u4F9D\u8D56 \uFF1Alodash : ",
|
|
111
|
+
react_1.default.createElement("b", null, "_"),
|
|
112
|
+
" , dayjs:",
|
|
113
|
+
react_1.default.createElement("b", null, "dayjs")),
|
|
114
|
+
react_1.default.createElement("li", { style: { listStyle: 'none' } },
|
|
115
|
+
"\u65B9\u6CD5\u8FD4\u56DE\u6253\u5370 \uFF1A",
|
|
116
|
+
react_1.default.createElement("b", null, "print"))) }), title: props.isEdit ? '编辑联动方法' : '添加联动方法', fields: [
|
|
117
|
+
{ field: 'field', title: '被联动字段', required: true, options: targetOptions, type: 'select' },
|
|
118
|
+
{ field: 'code', title: '联动代码', required: true, type: 'textarea', ignore: true, config: { rows: 8 } },
|
|
119
|
+
], data: props.data, isEdit: props.isEdit, open: props.open, onCancel: props.onCancel, onOk: data => {
|
|
120
|
+
const fn = `<%
|
|
121
|
+
${data.code}
|
|
122
|
+
%>`;
|
|
123
|
+
try {
|
|
124
|
+
var compiled = lodash_1.default.template(fn, { imports: { _: lodash_1.default, dayjs: dayjs_1.default } });
|
|
125
|
+
let result = compiled({ value: '199', form: {}, extra: null });
|
|
126
|
+
if (typeof result != 'string')
|
|
127
|
+
throw (new Error());
|
|
128
|
+
if (result === '')
|
|
129
|
+
throw (new Error('没有检测到返回值'));
|
|
130
|
+
try {
|
|
131
|
+
const test = JSON.parse(result);
|
|
132
|
+
if (lodash_1.default.isPlainObject(test)) {
|
|
133
|
+
index_1.message.success('测试结果 为返回对象: ' + result);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
throw (new Error());
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
index_1.message.success('测试结果 为单返回值: ' + result);
|
|
141
|
+
}
|
|
142
|
+
props.onOk(data);
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
index_1.message.error('代码测试失败');
|
|
146
|
+
}
|
|
147
|
+
} });
|
|
148
|
+
};
|
|
149
|
+
exports.LinkSyncFunction = LinkSyncFunction;
|
|
@@ -0,0 +1,114 @@
|
|
|
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.Links = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
32
|
+
const index_1 = require("../../../../index");
|
|
33
|
+
const hooks_1 = require("../../../../hooks");
|
|
34
|
+
const useEditor_1 = require("../../../hooks/useEditor");
|
|
35
|
+
const utils_1 = require("../../../../utils");
|
|
36
|
+
const LinkSyncFunction_1 = require("./LinkSyncFunction");
|
|
37
|
+
const LinkAsyncFunction_1 = require("./LinkAsyncFunction");
|
|
38
|
+
const callRender = (rule) => {
|
|
39
|
+
if (rule.async) {
|
|
40
|
+
return react_1.default.createElement("span", null,
|
|
41
|
+
react_1.default.createElement(index_1.Tag, { color: "cyan-inverse" }, "\u8BF7\u6C42"),
|
|
42
|
+
" ",
|
|
43
|
+
rule.method,
|
|
44
|
+
" ",
|
|
45
|
+
rule.url);
|
|
46
|
+
}
|
|
47
|
+
return react_1.default.createElement("span", null,
|
|
48
|
+
react_1.default.createElement(index_1.Tag, { color: "magenta-inverse" }, "\u65B9\u6CD5"));
|
|
49
|
+
};
|
|
50
|
+
const Links = (props) => {
|
|
51
|
+
const { form: { fields, isGroup } } = (0, useEditor_1.useEditor)();
|
|
52
|
+
const fieldsCount = (0, react_1.useMemo)(() => {
|
|
53
|
+
if (fields == null || fields.length == 0)
|
|
54
|
+
return 0;
|
|
55
|
+
if (!isGroup)
|
|
56
|
+
return fields.length;
|
|
57
|
+
return lodash_1.default.sum(fields.map(group => group.fields.length));
|
|
58
|
+
}, [fields]);
|
|
59
|
+
const { field, setFieldProperties } = props;
|
|
60
|
+
const syncFn = (0, hooks_1.useOpenState)();
|
|
61
|
+
const asyncFn = (0, hooks_1.useOpenState)();
|
|
62
|
+
const addLink = (0, react_1.useCallback)((data) => setFieldProperties('_links', utils_1.ArrayUtil.add(field._links, data)), [field._links]);
|
|
63
|
+
const editLink = (0, react_1.useCallback)((data) => setFieldProperties('_links', utils_1.ArrayUtil.update(field._links, data)), [field._links]);
|
|
64
|
+
const delLink = (0, react_1.useCallback)((data) => setFieldProperties('_links', utils_1.ArrayUtil.del(field._links, data.id)), [field._links]);
|
|
65
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
66
|
+
react_1.default.createElement(index_1.STable, { list: field._links || [], actionBar: [
|
|
67
|
+
{
|
|
68
|
+
label: '异步联动', icon: 'plus', onClick: () => {
|
|
69
|
+
if (fieldsCount <= 1) {
|
|
70
|
+
index_1.message.warning('没有可以被联动的字段');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
asyncFn.show(null, false);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: '同步联动', type: 'primary', icon: 'plus', onClick: () => {
|
|
78
|
+
if (fieldsCount <= 1) {
|
|
79
|
+
index_1.message.warning('没有可以被联动的字段');
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
syncFn.show(null, false);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
], showIndex: false, pagination: false, columns: [
|
|
86
|
+
{ title: '目标字段', dataIndex: 'field' },
|
|
87
|
+
{ title: '方法', render: callRender },
|
|
88
|
+
index_1.STable.COL_OPERACTION((record) => [
|
|
89
|
+
react_1.default.createElement(index_1.STable.EDIT, { onClick: () => {
|
|
90
|
+
record.async ? asyncFn.show(record, true) : syncFn.show(record, true);
|
|
91
|
+
} }),
|
|
92
|
+
react_1.default.createElement(index_1.STable.DELETE, { onClick: () => delLink(record) }),
|
|
93
|
+
])
|
|
94
|
+
] }),
|
|
95
|
+
react_1.default.createElement(LinkSyncFunction_1.LinkSyncFunction, { open: syncFn.open, onCancel: syncFn.hide, isEdit: syncFn.extra, field: field, fields: fields, isGroup: isGroup, data: syncFn.data, onOk: (data) => {
|
|
96
|
+
syncFn.hide();
|
|
97
|
+
if (syncFn.extra) {
|
|
98
|
+
editLink(data);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
addLink(Object.assign(Object.assign({}, data), { async: false, id: utils_1.StringUtil.genKey() }));
|
|
102
|
+
}
|
|
103
|
+
} }),
|
|
104
|
+
react_1.default.createElement(LinkAsyncFunction_1.LinkAsyncFunction, { open: asyncFn.open, onCancel: asyncFn.hide, isEdit: asyncFn.extra, field: field, fields: fields, isGroup: isGroup, data: asyncFn.data, onOk: (data) => {
|
|
105
|
+
asyncFn.hide();
|
|
106
|
+
if (asyncFn.extra) {
|
|
107
|
+
editLink(data);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
addLink(Object.assign(Object.assign({}, data), { async: true, id: utils_1.StringUtil.genKey() }));
|
|
111
|
+
}
|
|
112
|
+
} }));
|
|
113
|
+
};
|
|
114
|
+
exports.Links = Links;
|
|
@@ -0,0 +1,144 @@
|
|
|
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.OptionTable = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const utils_1 = require("../../../../utils");
|
|
9
|
+
const index_1 = require("../../../../index");
|
|
10
|
+
const hooks_1 = require("../../../../hooks");
|
|
11
|
+
const Const_1 = require("../../../utils/Const");
|
|
12
|
+
const OptionTable = (props) => {
|
|
13
|
+
const { field, setFieldProperties } = props;
|
|
14
|
+
const { modalState, showAdd, showEdit, hide, showDetail } = (0, hooks_1.useModals)();
|
|
15
|
+
const converInputType = (_isNumber, force = false) => {
|
|
16
|
+
if (field.options == null || field.options.length == 0) {
|
|
17
|
+
setFieldProperties('_isNumber', _isNumber);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (!_isNumber) {
|
|
21
|
+
setFieldProperties({
|
|
22
|
+
_isNumber,
|
|
23
|
+
options: field.options.map(item => (Object.assign(Object.assign({}, item), { value: item.value + '' }))),
|
|
24
|
+
}, null);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let options = [];
|
|
28
|
+
for (let option of field.options) {
|
|
29
|
+
try {
|
|
30
|
+
if (isNaN(option.value))
|
|
31
|
+
throw (option);
|
|
32
|
+
options.push(Object.assign(Object.assign({}, option), { value: parseInt(option.value) }));
|
|
33
|
+
}
|
|
34
|
+
catch (option) {
|
|
35
|
+
if (force)
|
|
36
|
+
continue;
|
|
37
|
+
index_1.Modal.confirm({
|
|
38
|
+
content: '选项中有不能转换为数字类型的选项,点击确定后将会丢失',
|
|
39
|
+
onOk: () => converInputType(_isNumber, true),
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
setFieldProperties({ _isNumber, options, }, null);
|
|
45
|
+
};
|
|
46
|
+
const add = (option) => {
|
|
47
|
+
if (field._isNumber && isNaN(option.value)) {
|
|
48
|
+
index_1.message.error('说明:取值不是一有效的数字');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
hide();
|
|
52
|
+
if (field._isNumber) {
|
|
53
|
+
setFieldProperties('options', utils_1.ArrayUtil.add(field.options, Object.assign(Object.assign({}, option), { id: utils_1.StringUtil.genKey(), value: parseInt(option.value) })));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
setFieldProperties('options', utils_1.ArrayUtil.add(field.options, Object.assign(Object.assign({}, option), { id: utils_1.StringUtil.genKey(), value: option.value + '' })));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const addByDict = (options) => {
|
|
60
|
+
hide();
|
|
61
|
+
if (!field._isNumber) {
|
|
62
|
+
setFieldProperties('options', options);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
let errCount = 0;
|
|
66
|
+
let opts = [];
|
|
67
|
+
for (let item of options) {
|
|
68
|
+
if (isNaN(item.value)) {
|
|
69
|
+
errCount++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
opts.push(Object.assign(Object.assign({}, item), { value: parseInt(item.value) }));
|
|
73
|
+
}
|
|
74
|
+
if (errCount > 0) {
|
|
75
|
+
index_1.message.warning('说明:由于当前值为数字类型,已经过滤掉不可转换为数字的选项');
|
|
76
|
+
}
|
|
77
|
+
setFieldProperties('options', opts);
|
|
78
|
+
};
|
|
79
|
+
const update = (option) => {
|
|
80
|
+
if (field._isNumber && isNaN(option.value)) {
|
|
81
|
+
index_1.message.error('说明:取值不是一有效的数字');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
hide();
|
|
85
|
+
if (field._isNumber) {
|
|
86
|
+
setFieldProperties('options', utils_1.ArrayUtil.update(field.options, Object.assign(Object.assign({}, option), { value: parseInt(option.value) })));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
setFieldProperties('options', utils_1.ArrayUtil.update(field.options, Object.assign(Object.assign({}, option), { value: option.value + '' })));
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const del = (option) => {
|
|
93
|
+
setFieldProperties('options', utils_1.ArrayUtil.del(field.options, option.value, 'value'));
|
|
94
|
+
};
|
|
95
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
96
|
+
react_1.default.createElement(index_1.Divider, { orientation: "left" }, "\u9009\u9879"),
|
|
97
|
+
!Const_1.MUST_STRING.has(field.type) && react_1.default.createElement(index_1.Form.Item, { label: "\u6570\u5B57" },
|
|
98
|
+
react_1.default.createElement(index_1.Checkbox, { checked: field._isNumber, onChange: (evt) => converInputType(evt.target.checked) }, "\u5C06\u9009\u9879\u503C\u8F6C\u6362\u4E3A Number \u7C7B\u578B")),
|
|
99
|
+
field.type == 'switch' ? react_1.default.createElement(index_1.STable, { list: field.options || [], pagination: false, columns: [
|
|
100
|
+
{ dataIndex: 'label', title: '选项名称' },
|
|
101
|
+
{ dataIndex: 'value', title: '选项值' },
|
|
102
|
+
index_1.STable.COL_OPERACTION(record => [
|
|
103
|
+
react_1.default.createElement(index_1.STable.EDIT, { onClick: () => showEdit(record) }),
|
|
104
|
+
])
|
|
105
|
+
] }) : react_1.default.createElement(index_1.STable, { list: field.options || [], pagination: false, actionBar: [
|
|
106
|
+
{ label: '使用字典', onClick: showDetail },
|
|
107
|
+
index_1.STable.BUTTON_ADD(showAdd),
|
|
108
|
+
], columns: [
|
|
109
|
+
{ dataIndex: 'label', title: '选项名称' },
|
|
110
|
+
{ dataIndex: 'value', title: '选项值' },
|
|
111
|
+
index_1.STable.COL_OPERACTION(record => [
|
|
112
|
+
react_1.default.createElement(index_1.STable.EDIT, { onClick: () => showEdit(record) }),
|
|
113
|
+
react_1.default.createElement(index_1.STable.DELETE, { onClick: () => del(record) }),
|
|
114
|
+
])
|
|
115
|
+
] }),
|
|
116
|
+
react_1.default.createElement(index_1.UFormModal, Object.assign({}, modalState.modalProps, { autoTitle: { label: '选项', field: 'label' }, onOk: (data) => {
|
|
117
|
+
if (modalState.isEdit) {
|
|
118
|
+
update(data);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
add(data);
|
|
122
|
+
}
|
|
123
|
+
}, fields: [
|
|
124
|
+
{ field: 'label', title: '展示名称', required: true },
|
|
125
|
+
{
|
|
126
|
+
field: 'value', title: '选项值', required: true,
|
|
127
|
+
// type: field._isNumber ? 'number' : 'text'
|
|
128
|
+
},
|
|
129
|
+
{ field: 'ik', title: '国际化 I18N Key' },
|
|
130
|
+
] })),
|
|
131
|
+
react_1.default.createElement(index_1.UFormModal, { open: modalState.openDetail, title: "\u4F7F\u7528\u5B57\u5178",
|
|
132
|
+
// tip={<Alert type="info" message="使用" />}
|
|
133
|
+
fields: [
|
|
134
|
+
{
|
|
135
|
+
field: 'dict', title: '选择字典', type: 'select', options: utils_1.Renders.DICT.DICTS, required: true,
|
|
136
|
+
// config: { showSearch: true }
|
|
137
|
+
}
|
|
138
|
+
], onCancel: hide, onOk: (data) => {
|
|
139
|
+
let info = utils_1.Renders.DICT.DICT_MAP.get(data.dict);
|
|
140
|
+
hide();
|
|
141
|
+
addByDict(info.nodes);
|
|
142
|
+
} }));
|
|
143
|
+
};
|
|
144
|
+
exports.OptionTable = OptionTable;
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.RegexpModal = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const index_1 = require("../../../../index");
|
|
29
|
+
exports.RegexpModal = (0, react_1.memo)(props => {
|
|
30
|
+
const ref = (0, react_1.useRef)(props.data);
|
|
31
|
+
const onOk = () => {
|
|
32
|
+
if (ref.current == '') {
|
|
33
|
+
props.onOk(null);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
new RegExp(ref.current);
|
|
38
|
+
props.onOk(ref.current);
|
|
39
|
+
}
|
|
40
|
+
catch (_a) {
|
|
41
|
+
index_1.message.error(`不是一个有效的正则 :${ref.current}`);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
return react_1.default.createElement(index_1.Modal, { open: props.open, title: "\u8BF7\u8F93\u5165\u6B63\u5219\u8868\u8FBE\u5F0F", onCancel: props.onCancel, onOk: onOk, footer: null, width: 540, bodyStyle: { padding: 12 } },
|
|
45
|
+
react_1.default.createElement(index_1.Row, { style: { height: 32, lineHeight: '32px', marginBottom: 6 } },
|
|
46
|
+
react_1.default.createElement(index_1.Col, { span: 6, style: { textAlign: 'right', paddingRight: 6 } }, "\u6B63\u5219\u8868\u8FBE\u5F0F"),
|
|
47
|
+
react_1.default.createElement(index_1.Col, { span: 17 },
|
|
48
|
+
react_1.default.createElement(index_1.Input, { defaultValue: props.data, onChange: evt => ref.current = evt.target.value }))),
|
|
49
|
+
react_1.default.createElement(index_1.Row, { style: { height: 64, lineHeight: '32px', marginBottom: 6 } },
|
|
50
|
+
react_1.default.createElement(index_1.Col, { span: 6, style: { textAlign: 'right', paddingRight: 6 } }, "\u5FEB\u901F\u6D4B\u8BD5"),
|
|
51
|
+
react_1.default.createElement(index_1.Col, { span: 17 },
|
|
52
|
+
react_1.default.createElement(index_1.Input.TextArea, { placeholder: "\u9700\u8981\u6D4B\u8BD5\u7684\u5B57\u7B26\u4E32", onChange: evt => {
|
|
53
|
+
if (evt.target.value == '' || ref.current == '' || ref.current == null)
|
|
54
|
+
return;
|
|
55
|
+
try {
|
|
56
|
+
const reg = new RegExp(ref.current);
|
|
57
|
+
let result = reg.test(evt.target.value);
|
|
58
|
+
if (result) {
|
|
59
|
+
index_1.message.success('测试通过');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
index_1.message.warning('测试未通过');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (_a) {
|
|
66
|
+
index_1.message.error('正则表达式语法有误');
|
|
67
|
+
}
|
|
68
|
+
} }))),
|
|
69
|
+
react_1.default.createElement(index_1.Row, null,
|
|
70
|
+
react_1.default.createElement(index_1.Col, { span: 6 }),
|
|
71
|
+
react_1.default.createElement(index_1.Col, { span: 18 },
|
|
72
|
+
react_1.default.createElement(index_1.Button, { onClick: onOk, type: "primary", style: { marginRight: 6 } }, "\u786E\u5B9A"),
|
|
73
|
+
react_1.default.createElement(index_1.Button, { onClick: props.onCancel }, "\u53D6\u6D88"))));
|
|
74
|
+
}, (prev, next) => prev.open === next.open);
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.Validates = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const index_1 = require("../../../../index");
|
|
29
|
+
const hooks_1 = require("../../../../hooks");
|
|
30
|
+
const utils_1 = require("../../../../utils");
|
|
31
|
+
const ValidateSyncFunction_1 = require("./ValidateSyncFunction");
|
|
32
|
+
const ValidateAsyncFunction_1 = require("./ValidateAsyncFunction");
|
|
33
|
+
const ruleRender = (rule) => {
|
|
34
|
+
if (rule.async) {
|
|
35
|
+
return react_1.default.createElement("span", null,
|
|
36
|
+
react_1.default.createElement(index_1.Tag, { color: "cyan-inverse" }, "\u8BF7\u6C42"),
|
|
37
|
+
" ",
|
|
38
|
+
rule.method,
|
|
39
|
+
" ",
|
|
40
|
+
rule.url);
|
|
41
|
+
}
|
|
42
|
+
return react_1.default.createElement("span", null,
|
|
43
|
+
react_1.default.createElement(index_1.Tag, { color: "magenta-inverse" }, "\u65B9\u6CD5"),
|
|
44
|
+
" ",
|
|
45
|
+
rule.message);
|
|
46
|
+
};
|
|
47
|
+
const Validates = (props) => {
|
|
48
|
+
const { field, setFieldProperties } = props;
|
|
49
|
+
const syncFn = (0, hooks_1.useOpenState)();
|
|
50
|
+
const asyncFn = (0, hooks_1.useOpenState)();
|
|
51
|
+
const addRule = (0, react_1.useCallback)((data) => {
|
|
52
|
+
setFieldProperties('_rules', utils_1.ArrayUtil.add(field._rules, data));
|
|
53
|
+
}, [field._rules]);
|
|
54
|
+
const editRule = (0, react_1.useCallback)((data) => {
|
|
55
|
+
setFieldProperties('_rules', utils_1.ArrayUtil.update(field._rules, data));
|
|
56
|
+
}, [field._rules]);
|
|
57
|
+
const delRule = (0, react_1.useCallback)((data) => {
|
|
58
|
+
setFieldProperties('_rules', utils_1.ArrayUtil.del(field._rules, data.id));
|
|
59
|
+
}, [field._rules]);
|
|
60
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
61
|
+
react_1.default.createElement(index_1.Divider, { orientation: "left" }, "\u65B9\u6CD5\u9A8C\u8BC1"),
|
|
62
|
+
react_1.default.createElement(index_1.STable, { list: field._rules || [], actionBar: [
|
|
63
|
+
{ label: '异步请求', icon: 'plus', onClick: () => asyncFn.show(null, false) },
|
|
64
|
+
{ label: '同步方法', type: 'primary', icon: 'plus', onClick: () => syncFn.show(null, false) },
|
|
65
|
+
], showIndex: false, pagination: false, columns: [
|
|
66
|
+
{ title: '验证', render: ruleRender },
|
|
67
|
+
index_1.STable.COL_OPERACTION((record) => [
|
|
68
|
+
react_1.default.createElement(index_1.STable.EDIT, { onClick: () => {
|
|
69
|
+
record.async ? asyncFn.show(record, true) : syncFn.show(record, true);
|
|
70
|
+
} }),
|
|
71
|
+
react_1.default.createElement(index_1.STable.DELETE, { onClick: () => delRule(record) }),
|
|
72
|
+
])
|
|
73
|
+
] }),
|
|
74
|
+
react_1.default.createElement(ValidateSyncFunction_1.ValidateSyncFunction, { open: syncFn.open, onCancel: syncFn.hide, isEdit: syncFn.extra, data: syncFn.data, onOk: (data) => {
|
|
75
|
+
syncFn.hide();
|
|
76
|
+
if (syncFn.extra) {
|
|
77
|
+
editRule(data);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
addRule(Object.assign(Object.assign({}, data), { async: false, id: utils_1.StringUtil.genKey() }));
|
|
81
|
+
}
|
|
82
|
+
} }),
|
|
83
|
+
react_1.default.createElement(ValidateAsyncFunction_1.ValidateAsyncFunction, { open: asyncFn.open, onCancel: asyncFn.hide, isEdit: asyncFn.extra, data: asyncFn.data, onOk: (data) => {
|
|
84
|
+
asyncFn.hide();
|
|
85
|
+
if (asyncFn.extra) {
|
|
86
|
+
editRule(data);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
addRule(Object.assign(Object.assign({}, data), { async: true, id: utils_1.StringUtil.genKey() }));
|
|
90
|
+
}
|
|
91
|
+
} }));
|
|
92
|
+
};
|
|
93
|
+
exports.Validates = Validates;
|