@nokecy/qc-ui 1.0.58 → 1.0.60
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/dist/cjs/ag-grid-plus/ag-gridPlus.js +2 -4
- package/dist/cjs/array-table/index.js +194 -7
- package/dist/cjs/deleteConfirm/index.d.ts +31 -0
- package/dist/cjs/deleteConfirm/index.js +64 -0
- package/dist/cjs/editable/index.js +104 -21
- package/dist/cjs/fullScreenAlert/index.d.ts +25 -4
- package/dist/cjs/fullScreenAlert/index.js +50 -17
- package/dist/cjs/generatedListPage/ConfigurableToolbar.d.ts +35 -0
- package/dist/cjs/generatedListPage/ConfigurableToolbar.js +179 -0
- package/dist/cjs/generatedListPage/GeneratedListPage.d.ts +8 -0
- package/dist/cjs/generatedListPage/GeneratedListPage.js +545 -0
- package/dist/cjs/generatedListPage/OptionsColumn.d.ts +9 -0
- package/dist/cjs/generatedListPage/OptionsColumn.js +135 -0
- package/dist/cjs/generatedListPage/PerformanceMonitor.d.ts +55 -0
- package/dist/cjs/generatedListPage/PerformanceMonitor.js +277 -0
- package/dist/cjs/generatedListPage/RequestManager.d.ts +97 -0
- package/dist/cjs/generatedListPage/RequestManager.js +404 -0
- package/dist/cjs/generatedListPage/_utils/AccessWrapper.d.ts +16 -0
- package/dist/cjs/generatedListPage/_utils/AccessWrapper.js +26 -0
- package/dist/cjs/generatedListPage/_utils/defaultHandlers.d.ts +22 -0
- package/dist/cjs/generatedListPage/_utils/defaultHandlers.js +127 -0
- package/dist/cjs/generatedListPage/index.d.ts +20 -0
- package/dist/cjs/generatedListPage/index.js +92 -0
- package/dist/cjs/generatedListPage/types.d.ts +221 -0
- package/dist/cjs/generatedListPage/types.js +5 -0
- package/dist/cjs/generatedListPage/usePermissionCheck.d.ts +66 -0
- package/dist/cjs/generatedListPage/usePermissionCheck.js +150 -0
- package/dist/cjs/generatedListPage/useRequestManager.d.ts +35 -0
- package/dist/cjs/generatedListPage/useRequestManager.js +121 -0
- package/dist/cjs/importModal/index.d.ts +21 -3
- package/dist/cjs/importModal/index.js +30 -10
- package/dist/cjs/index.d.ts +9 -1
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/standardFormDialog/FormValidation.d.ts +150 -0
- package/dist/cjs/standardFormDialog/FormValidation.js +229 -0
- package/dist/cjs/standardFormDialog/PortalManager.d.ts +94 -0
- package/dist/cjs/standardFormDialog/PortalManager.js +259 -0
- package/dist/cjs/standardFormDialog/StandardFormDialog.d.ts +10 -0
- package/dist/cjs/standardFormDialog/StandardFormDialog.js +516 -0
- package/dist/cjs/standardFormDialog/index.d.ts +7 -0
- package/dist/cjs/standardFormDialog/index.js +83 -0
- package/dist/cjs/standardFormDialog/types.d.ts +107 -0
- package/dist/cjs/standardFormDialog/types.js +5 -0
- package/dist/cjs/standardFormDialog/useStandardFormSchema.d.ts +68 -0
- package/dist/cjs/standardFormDialog/useStandardFormSchema.js +197 -0
- package/dist/cjs/standardFormDialog/withStandardForm.d.ts +193 -0
- package/dist/cjs/standardFormDialog/withStandardForm.js +388 -0
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +2 -4
- package/dist/esm/array-table/index.js +194 -7
- package/dist/esm/deleteConfirm/index.d.ts +31 -0
- package/dist/esm/deleteConfirm/index.js +57 -0
- package/dist/esm/editable/index.js +105 -22
- package/dist/esm/fullScreenAlert/index.d.ts +25 -4
- package/dist/esm/fullScreenAlert/index.js +50 -18
- package/dist/esm/generatedListPage/ConfigurableToolbar.d.ts +35 -0
- package/dist/esm/generatedListPage/ConfigurableToolbar.js +171 -0
- package/dist/esm/generatedListPage/GeneratedListPage.d.ts +8 -0
- package/dist/esm/generatedListPage/GeneratedListPage.js +535 -0
- package/dist/esm/generatedListPage/OptionsColumn.d.ts +9 -0
- package/dist/esm/generatedListPage/OptionsColumn.js +127 -0
- package/dist/esm/generatedListPage/PerformanceMonitor.d.ts +55 -0
- package/dist/esm/generatedListPage/PerformanceMonitor.js +272 -0
- package/dist/esm/generatedListPage/RequestManager.d.ts +97 -0
- package/dist/esm/generatedListPage/RequestManager.js +398 -0
- package/dist/esm/generatedListPage/_utils/AccessWrapper.d.ts +16 -0
- package/dist/esm/generatedListPage/_utils/AccessWrapper.js +20 -0
- package/dist/esm/generatedListPage/_utils/defaultHandlers.d.ts +22 -0
- package/dist/esm/generatedListPage/_utils/defaultHandlers.js +122 -0
- package/dist/esm/generatedListPage/index.d.ts +20 -0
- package/dist/esm/generatedListPage/index.js +26 -0
- package/dist/esm/generatedListPage/types.d.ts +221 -0
- package/dist/esm/generatedListPage/types.js +1 -0
- package/dist/esm/generatedListPage/usePermissionCheck.d.ts +66 -0
- package/dist/esm/generatedListPage/usePermissionCheck.js +145 -0
- package/dist/esm/generatedListPage/useRequestManager.d.ts +35 -0
- package/dist/esm/generatedListPage/useRequestManager.js +116 -0
- package/dist/esm/importModal/index.d.ts +21 -3
- package/dist/esm/importModal/index.js +29 -10
- package/dist/esm/index.d.ts +9 -1
- package/dist/esm/index.js +6 -1
- package/dist/esm/standardFormDialog/FormValidation.d.ts +150 -0
- package/dist/esm/standardFormDialog/FormValidation.js +223 -0
- package/dist/esm/standardFormDialog/PortalManager.d.ts +94 -0
- package/dist/esm/standardFormDialog/PortalManager.js +253 -0
- package/dist/esm/standardFormDialog/StandardFormDialog.d.ts +10 -0
- package/dist/esm/standardFormDialog/StandardFormDialog.js +508 -0
- package/dist/esm/standardFormDialog/index.d.ts +7 -0
- package/dist/esm/standardFormDialog/index.js +6 -0
- package/dist/esm/standardFormDialog/types.d.ts +107 -0
- package/dist/esm/standardFormDialog/types.js +1 -0
- package/dist/esm/standardFormDialog/useStandardFormSchema.d.ts +68 -0
- package/dist/esm/standardFormDialog/useStandardFormSchema.js +191 -0
- package/dist/esm/standardFormDialog/withStandardForm.d.ts +193 -0
- package/dist/esm/standardFormDialog/withStandardForm.js +382 -0
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ISchema } from '@formily/react';
|
|
3
|
+
import { ButtonProps } from 'antd';
|
|
4
|
+
/**
|
|
5
|
+
* API配置接口
|
|
6
|
+
*/
|
|
7
|
+
export interface FormApiConfig {
|
|
8
|
+
/** 获取单条记录的API */
|
|
9
|
+
get?: (params: {
|
|
10
|
+
id: string | number;
|
|
11
|
+
}) => Promise<any>;
|
|
12
|
+
/** 创建记录的API */
|
|
13
|
+
create: (values: any) => Promise<any>;
|
|
14
|
+
/** 更新记录的API */
|
|
15
|
+
update: (params: {
|
|
16
|
+
id: string | number;
|
|
17
|
+
}, values: any) => Promise<any>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 外部Schema配置接口
|
|
21
|
+
*/
|
|
22
|
+
export interface ExternalSchemaConfig {
|
|
23
|
+
/** 表单布局配置 */
|
|
24
|
+
form: Record<string, any>;
|
|
25
|
+
/** Schema定义 */
|
|
26
|
+
schema: ISchema;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Schema配置接口
|
|
30
|
+
*/
|
|
31
|
+
export interface FormSchemaConfig {
|
|
32
|
+
/** 表单ID */
|
|
33
|
+
formId: string;
|
|
34
|
+
/** 表单配置 */
|
|
35
|
+
form: Record<string, any>;
|
|
36
|
+
/** Schema定义 */
|
|
37
|
+
schema: ISchema;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 标准化FormDialog配置接口
|
|
41
|
+
*/
|
|
42
|
+
export interface StandardFormDialogConfig {
|
|
43
|
+
/** Schema配置 */
|
|
44
|
+
schemaConfig: FormSchemaConfig;
|
|
45
|
+
/** API配置 */
|
|
46
|
+
apiConfig: FormApiConfig;
|
|
47
|
+
/** 对话框宽度 */
|
|
48
|
+
width?: number;
|
|
49
|
+
/** 实体ID(编辑时) */
|
|
50
|
+
entityId?: string | number;
|
|
51
|
+
/** 标题 */
|
|
52
|
+
title?: string;
|
|
53
|
+
/** 按钮属性 */
|
|
54
|
+
buttonProps?: ButtonProps;
|
|
55
|
+
/** 提交成功后的回调 */
|
|
56
|
+
onAfterSubmit?: () => void;
|
|
57
|
+
/** 子元素 */
|
|
58
|
+
children?: React.ReactNode;
|
|
59
|
+
/** 门户ID前缀 */
|
|
60
|
+
portalIdPrefix?: string;
|
|
61
|
+
/** 自定义初始化逻辑 */
|
|
62
|
+
customInitializer?: (form: any, entityId?: string | number) => Promise<void>;
|
|
63
|
+
/** 自定义提交逻辑 */
|
|
64
|
+
customSubmitHandler?: (values: any, isEdit: boolean) => Promise<void>;
|
|
65
|
+
/** 是否启用统一错误处理 */
|
|
66
|
+
useUnifiedErrorHandling?: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* withStandardForm配置接口
|
|
70
|
+
*/
|
|
71
|
+
export interface WithStandardFormConfig {
|
|
72
|
+
/** 表单ID */
|
|
73
|
+
formId: string;
|
|
74
|
+
/** 业务字段配置 - 当未提供externalSchema时必需 */
|
|
75
|
+
businessFields?: Record<string, any>;
|
|
76
|
+
/** 外部Schema配置 - 支持schema.ts文件导入 */
|
|
77
|
+
externalSchema?: ExternalSchemaConfig;
|
|
78
|
+
/** API配置 */
|
|
79
|
+
apiConfig: {
|
|
80
|
+
get?: (params: any) => Promise<any>;
|
|
81
|
+
create: (data: any) => Promise<any>;
|
|
82
|
+
update: (params: any, data: any) => Promise<any>;
|
|
83
|
+
};
|
|
84
|
+
/** 默认对话框配置 */
|
|
85
|
+
defaultDialogConfig?: {
|
|
86
|
+
width?: number;
|
|
87
|
+
title?: string;
|
|
88
|
+
};
|
|
89
|
+
/** 自定义表单处理器 */
|
|
90
|
+
customHandlers?: {
|
|
91
|
+
initializer?: (form: any, entityId?: string | number) => Promise<void>;
|
|
92
|
+
submitHandler?: (values: any, isEdit: boolean) => Promise<void>;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* StandardFormDialog组件属性接口
|
|
97
|
+
*/
|
|
98
|
+
export interface StandardFormDialogProps extends Omit<StandardFormDialogConfig, 'schemaConfig'> {
|
|
99
|
+
/** Schema配置 */
|
|
100
|
+
schemaConfig?: FormSchemaConfig;
|
|
101
|
+
/** 或者直接传入formId和schema */
|
|
102
|
+
formId?: string;
|
|
103
|
+
formSchema?: {
|
|
104
|
+
form: Record<string, any>;
|
|
105
|
+
schema: ISchema;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { FormSchemaConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 标准表单Schema Hook
|
|
4
|
+
*
|
|
5
|
+
* 提供便捷的Schema创建和管理功能
|
|
6
|
+
*/
|
|
7
|
+
export declare const useStandardFormSchema: (formId: string, businessSchema: Record<string, any>, formConfig?: Record<string, any>) => FormSchemaConfig;
|
|
8
|
+
/**
|
|
9
|
+
* 创建标准Grid Schema的工具函数
|
|
10
|
+
*/
|
|
11
|
+
export declare const createGridSchema: (properties: Record<string, any>, maxColumns?: number, strictAutoFit?: boolean) => Record<string, any>;
|
|
12
|
+
/**
|
|
13
|
+
* 创建表单字段的工具函数
|
|
14
|
+
*/
|
|
15
|
+
export declare const createFormField: (title: string, component?: string, options?: {
|
|
16
|
+
type?: string | undefined;
|
|
17
|
+
required?: boolean | undefined;
|
|
18
|
+
placeholder?: string | undefined;
|
|
19
|
+
maxLength?: number | undefined;
|
|
20
|
+
rows?: number | undefined;
|
|
21
|
+
gridSpan?: number | undefined;
|
|
22
|
+
componentProps?: Record<string, any> | undefined;
|
|
23
|
+
decoratorProps?: Record<string, any> | undefined;
|
|
24
|
+
} | undefined) => any;
|
|
25
|
+
/**
|
|
26
|
+
* 创建选择字段的工具函数
|
|
27
|
+
*/
|
|
28
|
+
export declare const createSelectField: (title: string, options: Array<{
|
|
29
|
+
label: string;
|
|
30
|
+
value: any;
|
|
31
|
+
}>, fieldOptions?: {
|
|
32
|
+
required?: boolean | undefined;
|
|
33
|
+
placeholder?: string | undefined;
|
|
34
|
+
gridSpan?: number | undefined;
|
|
35
|
+
mode?: "multiple" | "tags" | undefined;
|
|
36
|
+
} | undefined) => any;
|
|
37
|
+
/**
|
|
38
|
+
* 快速创建常用字段的工具函数集合
|
|
39
|
+
*/
|
|
40
|
+
export declare const FieldCreators: {
|
|
41
|
+
/**
|
|
42
|
+
* 创建输入框字段
|
|
43
|
+
*/
|
|
44
|
+
input: (title: string, required?: boolean, gridSpan?: number) => any;
|
|
45
|
+
/**
|
|
46
|
+
* 创建文本域字段
|
|
47
|
+
*/
|
|
48
|
+
textarea: (title: string, rows?: number, gridSpan?: number) => any;
|
|
49
|
+
/**
|
|
50
|
+
* 创建数字输入框字段
|
|
51
|
+
*/
|
|
52
|
+
number: (title: string, required?: boolean, gridSpan?: number) => any;
|
|
53
|
+
/**
|
|
54
|
+
* 创建选择框字段
|
|
55
|
+
*/
|
|
56
|
+
select: (title: string, options: Array<{
|
|
57
|
+
label: string;
|
|
58
|
+
value: any;
|
|
59
|
+
}>, required?: boolean) => any;
|
|
60
|
+
/**
|
|
61
|
+
* 创建日期字段
|
|
62
|
+
*/
|
|
63
|
+
date: (title: string, required?: boolean, gridSpan?: number) => any;
|
|
64
|
+
/**
|
|
65
|
+
* 创建日期时间字段
|
|
66
|
+
*/
|
|
67
|
+
datetime: (title: string, required?: boolean, gridSpan?: number) => any;
|
|
68
|
+
};
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useStandardFormSchema = exports.createSelectField = exports.createGridSchema = exports.createFormField = exports.FieldCreators = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
13
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
14
|
+
/**
|
|
15
|
+
* 标准表单Schema Hook
|
|
16
|
+
*
|
|
17
|
+
* 提供便捷的Schema创建和管理功能
|
|
18
|
+
*/
|
|
19
|
+
var useStandardFormSchema = exports.useStandardFormSchema = function useStandardFormSchema(formId, businessSchema, formConfig) {
|
|
20
|
+
return (0, _react.useMemo)(function () {
|
|
21
|
+
var defaultFormConfig = {
|
|
22
|
+
labelCol: 6,
|
|
23
|
+
wrapperCol: 18,
|
|
24
|
+
labelWidth: "120px",
|
|
25
|
+
feedbackLayout: "none"
|
|
26
|
+
};
|
|
27
|
+
var finalFormConfig = _objectSpread(_objectSpread({}, defaultFormConfig), formConfig);
|
|
28
|
+
var schema = {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: businessSchema
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
formId: formId,
|
|
34
|
+
form: finalFormConfig,
|
|
35
|
+
schema: schema
|
|
36
|
+
};
|
|
37
|
+
}, [formId, businessSchema, formConfig]);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 创建标准Grid Schema的工具函数
|
|
42
|
+
*/
|
|
43
|
+
var createGridSchema = exports.createGridSchema = function createGridSchema(properties) {
|
|
44
|
+
var maxColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
45
|
+
var strictAutoFit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
46
|
+
return {
|
|
47
|
+
grid: {
|
|
48
|
+
type: "void",
|
|
49
|
+
"x-component": "FormGrid",
|
|
50
|
+
"x-component-props": {
|
|
51
|
+
maxColumns: maxColumns,
|
|
52
|
+
strictAutoFit: strictAutoFit
|
|
53
|
+
},
|
|
54
|
+
properties: properties
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 创建表单字段的工具函数
|
|
61
|
+
*/
|
|
62
|
+
var createFormField = exports.createFormField = function createFormField(title) {
|
|
63
|
+
var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Input';
|
|
64
|
+
var options = arguments.length > 2 ? arguments[2] : undefined;
|
|
65
|
+
var _ref = options || {},
|
|
66
|
+
_ref$type = _ref.type,
|
|
67
|
+
type = _ref$type === void 0 ? 'string' : _ref$type,
|
|
68
|
+
_ref$required = _ref.required,
|
|
69
|
+
required = _ref$required === void 0 ? false : _ref$required,
|
|
70
|
+
placeholder = _ref.placeholder,
|
|
71
|
+
maxLength = _ref.maxLength,
|
|
72
|
+
rows = _ref.rows,
|
|
73
|
+
_ref$gridSpan = _ref.gridSpan,
|
|
74
|
+
gridSpan = _ref$gridSpan === void 0 ? 1 : _ref$gridSpan,
|
|
75
|
+
_ref$componentProps = _ref.componentProps,
|
|
76
|
+
componentProps = _ref$componentProps === void 0 ? {} : _ref$componentProps,
|
|
77
|
+
_ref$decoratorProps = _ref.decoratorProps,
|
|
78
|
+
decoratorProps = _ref$decoratorProps === void 0 ? {} : _ref$decoratorProps;
|
|
79
|
+
var field = {
|
|
80
|
+
type: type,
|
|
81
|
+
title: title,
|
|
82
|
+
"x-decorator": "FormItem",
|
|
83
|
+
"x-component": component,
|
|
84
|
+
"x-component-props": _objectSpread({
|
|
85
|
+
placeholder: placeholder || "\u8BF7\u8F93\u5165".concat(title)
|
|
86
|
+
}, componentProps),
|
|
87
|
+
"x-decorator-props": _objectSpread({
|
|
88
|
+
gridSpan: gridSpan
|
|
89
|
+
}, decoratorProps)
|
|
90
|
+
};
|
|
91
|
+
if (required) {
|
|
92
|
+
field.required = true;
|
|
93
|
+
}
|
|
94
|
+
if (maxLength) {
|
|
95
|
+
field["x-component-props"].maxLength = maxLength;
|
|
96
|
+
}
|
|
97
|
+
if (rows && (component === 'Input.TextArea' || component === 'TextArea')) {
|
|
98
|
+
field["x-component-props"].rows = rows;
|
|
99
|
+
}
|
|
100
|
+
return field;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* 创建选择字段的工具函数
|
|
105
|
+
*/
|
|
106
|
+
var createSelectField = exports.createSelectField = function createSelectField(title, options, fieldOptions) {
|
|
107
|
+
var _ref2 = fieldOptions || {},
|
|
108
|
+
_ref2$required = _ref2.required,
|
|
109
|
+
required = _ref2$required === void 0 ? false : _ref2$required,
|
|
110
|
+
placeholder = _ref2.placeholder,
|
|
111
|
+
_ref2$gridSpan = _ref2.gridSpan,
|
|
112
|
+
gridSpan = _ref2$gridSpan === void 0 ? 1 : _ref2$gridSpan,
|
|
113
|
+
mode = _ref2.mode;
|
|
114
|
+
return createFormField(title, 'Select', {
|
|
115
|
+
required: required,
|
|
116
|
+
placeholder: placeholder || "\u8BF7\u9009\u62E9".concat(title),
|
|
117
|
+
gridSpan: gridSpan,
|
|
118
|
+
componentProps: {
|
|
119
|
+
options: options,
|
|
120
|
+
mode: mode
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* 快速创建常用字段的工具函数集合
|
|
127
|
+
*/
|
|
128
|
+
var FieldCreators = exports.FieldCreators = {
|
|
129
|
+
/**
|
|
130
|
+
* 创建输入框字段
|
|
131
|
+
*/
|
|
132
|
+
input: function input(title) {
|
|
133
|
+
var required = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
134
|
+
var gridSpan = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
135
|
+
return createFormField(title, 'Input', {
|
|
136
|
+
required: required,
|
|
137
|
+
gridSpan: gridSpan
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
/**
|
|
141
|
+
* 创建文本域字段
|
|
142
|
+
*/
|
|
143
|
+
textarea: function textarea(title) {
|
|
144
|
+
var rows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
|
|
145
|
+
var gridSpan = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2;
|
|
146
|
+
return createFormField(title, 'Input.TextArea', {
|
|
147
|
+
rows: rows,
|
|
148
|
+
gridSpan: gridSpan
|
|
149
|
+
});
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* 创建数字输入框字段
|
|
153
|
+
*/
|
|
154
|
+
number: function number(title) {
|
|
155
|
+
var required = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
156
|
+
var gridSpan = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
157
|
+
return createFormField(title, 'NumberPicker', {
|
|
158
|
+
type: 'number',
|
|
159
|
+
required: required,
|
|
160
|
+
gridSpan: gridSpan
|
|
161
|
+
});
|
|
162
|
+
},
|
|
163
|
+
/**
|
|
164
|
+
* 创建选择框字段
|
|
165
|
+
*/
|
|
166
|
+
select: function select(title, options) {
|
|
167
|
+
var required = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
168
|
+
return createSelectField(title, options, {
|
|
169
|
+
required: required
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* 创建日期字段
|
|
174
|
+
*/
|
|
175
|
+
date: function date(title) {
|
|
176
|
+
var required = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
177
|
+
var gridSpan = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
178
|
+
return createFormField(title, 'DatePicker', {
|
|
179
|
+
required: required,
|
|
180
|
+
gridSpan: gridSpan
|
|
181
|
+
});
|
|
182
|
+
},
|
|
183
|
+
/**
|
|
184
|
+
* 创建日期时间字段
|
|
185
|
+
*/
|
|
186
|
+
datetime: function datetime(title) {
|
|
187
|
+
var required = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
188
|
+
var gridSpan = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
189
|
+
return createFormField(title, 'DatePicker', {
|
|
190
|
+
required: required,
|
|
191
|
+
gridSpan: gridSpan,
|
|
192
|
+
componentProps: {
|
|
193
|
+
showTime: true
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StandardFormDialogProps, WithStandardFormConfig, ExternalSchemaConfig } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 标准表单配置接口 - 向后兼容
|
|
5
|
+
* @deprecated 请使用 WithStandardFormConfig 类型
|
|
6
|
+
*/
|
|
7
|
+
export interface StandardFormConfig extends WithStandardFormConfig {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 重新导出类型以保持向后兼容性
|
|
11
|
+
*/
|
|
12
|
+
export type { ExternalSchemaConfig, WithStandardFormConfig };
|
|
13
|
+
/**
|
|
14
|
+
* 创建带有标准表单的高阶组件
|
|
15
|
+
*
|
|
16
|
+
* 这个工厂函数创建一个标准化的表单对话框组件,包含:
|
|
17
|
+
* - 支持外部Schema文件导入或自动Schema构建
|
|
18
|
+
* - 标准的 API 调用逻辑
|
|
19
|
+
* - 统一的错误处理
|
|
20
|
+
* - 可配置的业务字段
|
|
21
|
+
*
|
|
22
|
+
* @param config 标准表单配置
|
|
23
|
+
* @returns 标准表单对话框组件
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // 使用businessFields(内部构建schema)
|
|
27
|
+
* const FormDialog = withStandardForm({
|
|
28
|
+
* formId: 'Common.Materials',
|
|
29
|
+
* businessFields: {
|
|
30
|
+
* code: FieldCreators.input('物料编码', true),
|
|
31
|
+
* name: FieldCreators.input('物料名称', true)
|
|
32
|
+
* },
|
|
33
|
+
* apiConfig: { get: GetAsync, create: CreateAsync }
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // 使用外部schema文件
|
|
38
|
+
* import { form, schema } from './schema';
|
|
39
|
+
* const FormDialog = withStandardForm({
|
|
40
|
+
* formId: 'Common.Materials',
|
|
41
|
+
* externalSchema: { form, schema },
|
|
42
|
+
* apiConfig: { get: GetAsync, create: CreateAsync }
|
|
43
|
+
* });
|
|
44
|
+
*/
|
|
45
|
+
export declare const withStandardForm: (config: WithStandardFormConfig) => React.FC<Partial<StandardFormDialogProps> & {
|
|
46
|
+
entityId?: string | undefined;
|
|
47
|
+
title?: string | undefined;
|
|
48
|
+
onAfterSubmit?: (() => void) | undefined;
|
|
49
|
+
children?: React.ReactNode;
|
|
50
|
+
buttonProps?: any;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* 字段创建器工具函数集合
|
|
54
|
+
* 提供常用字段类型的快速创建方法
|
|
55
|
+
*/
|
|
56
|
+
export declare const FieldCreators: {
|
|
57
|
+
/**
|
|
58
|
+
* 输入框字段
|
|
59
|
+
*/
|
|
60
|
+
input: (title: string, required?: boolean, props?: any) => {
|
|
61
|
+
type: string;
|
|
62
|
+
title: string;
|
|
63
|
+
required: boolean;
|
|
64
|
+
'x-component': string;
|
|
65
|
+
'x-component-props': any;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* 数字输入字段
|
|
69
|
+
*/
|
|
70
|
+
number: (title: string, required?: boolean, props?: any) => {
|
|
71
|
+
type: string;
|
|
72
|
+
title: string;
|
|
73
|
+
required: boolean;
|
|
74
|
+
'x-component': string;
|
|
75
|
+
'x-component-props': any;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* 文本域字段
|
|
79
|
+
*/
|
|
80
|
+
textarea: (title: string, required?: boolean, props?: any) => {
|
|
81
|
+
type: string;
|
|
82
|
+
title: string;
|
|
83
|
+
required: boolean;
|
|
84
|
+
'x-component': string;
|
|
85
|
+
'x-component-props': any;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* 日期字段
|
|
89
|
+
*/
|
|
90
|
+
date: (title: string, required?: boolean, props?: any) => {
|
|
91
|
+
type: string;
|
|
92
|
+
title: string;
|
|
93
|
+
required: boolean;
|
|
94
|
+
'x-component': string;
|
|
95
|
+
'x-component-props': any;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* 日期时间字段
|
|
99
|
+
*/
|
|
100
|
+
datetime: (title: string, required?: boolean, props?: any) => {
|
|
101
|
+
type: string;
|
|
102
|
+
title: string;
|
|
103
|
+
required: boolean;
|
|
104
|
+
'x-component': string;
|
|
105
|
+
'x-component-props': any;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* 开关字段
|
|
109
|
+
*/
|
|
110
|
+
switch: (title: string, defaultValue?: boolean, props?: any) => {
|
|
111
|
+
type: string;
|
|
112
|
+
title: string;
|
|
113
|
+
default: boolean;
|
|
114
|
+
'x-component': string;
|
|
115
|
+
'x-component-props': any;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* 选择字段
|
|
119
|
+
*/
|
|
120
|
+
select: (title: string, required?: boolean, props?: any) => {
|
|
121
|
+
type: string;
|
|
122
|
+
title: string;
|
|
123
|
+
required: boolean;
|
|
124
|
+
'x-component': string;
|
|
125
|
+
'x-component-props': any;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* 隐藏字段
|
|
129
|
+
*/
|
|
130
|
+
hidden: (defaultValue?: any) => {
|
|
131
|
+
type: string;
|
|
132
|
+
default: any;
|
|
133
|
+
'x-component': string;
|
|
134
|
+
'x-display': string;
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* 创建选择字段
|
|
139
|
+
*/
|
|
140
|
+
export declare const createSelectField: (title: string, options: {
|
|
141
|
+
[key: string]: any;
|
|
142
|
+
label: string;
|
|
143
|
+
value: any;
|
|
144
|
+
}[], config?: {
|
|
145
|
+
required?: boolean | undefined;
|
|
146
|
+
multiple?: boolean | undefined;
|
|
147
|
+
allowClear?: boolean | undefined;
|
|
148
|
+
showSearch?: boolean | undefined;
|
|
149
|
+
placeholder?: string | undefined;
|
|
150
|
+
}) => {
|
|
151
|
+
type: string;
|
|
152
|
+
title: string;
|
|
153
|
+
required: boolean;
|
|
154
|
+
enum: any[];
|
|
155
|
+
'x-component': string;
|
|
156
|
+
'x-component-props': {
|
|
157
|
+
placeholder: string;
|
|
158
|
+
style: {
|
|
159
|
+
width: string;
|
|
160
|
+
};
|
|
161
|
+
allowClear: boolean;
|
|
162
|
+
showSearch: boolean;
|
|
163
|
+
mode: string | undefined;
|
|
164
|
+
options: {
|
|
165
|
+
label: string;
|
|
166
|
+
value: any;
|
|
167
|
+
}[];
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* 创建级联选择字段
|
|
172
|
+
*/
|
|
173
|
+
export declare const createCascaderField: (title: string, options: any[], config?: {
|
|
174
|
+
required?: boolean | undefined;
|
|
175
|
+
changeOnSelect?: boolean | undefined;
|
|
176
|
+
expandTrigger?: "hover" | "click" | undefined;
|
|
177
|
+
placeholder?: string | undefined;
|
|
178
|
+
}) => {
|
|
179
|
+
type: string;
|
|
180
|
+
title: string;
|
|
181
|
+
required: boolean;
|
|
182
|
+
'x-component': string;
|
|
183
|
+
'x-component-props': {
|
|
184
|
+
placeholder: string;
|
|
185
|
+
style: {
|
|
186
|
+
width: string;
|
|
187
|
+
};
|
|
188
|
+
options: any[];
|
|
189
|
+
changeOnSelect: boolean;
|
|
190
|
+
expandTrigger: "hover" | "click";
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
export default withStandardForm;
|