@fruits-chain/sop
Version:
A component for sop
289 lines (283 loc) • 10.3 kB
TypeScript
import * as rc_field_form_es_interface from 'rc-field-form/es/interface';
import Upload from '@fruits-chain/react-native-upload';
import { FC, ReactNode, ComponentProps } from 'react';
type Maybe<T> = T | null;
/** All built-in and custom scalars, mapped to their actual values */
type Scalars = {
ID: string;
String: string;
Boolean: boolean;
Int: number;
Float: number;
BigDecimal: number;
Date: number;
DateTime: number;
Instant: any;
Long: number;
Object: any;
Short: any;
};
type CommodityCategoryEntity = {
__typename?: 'CommodityCategoryEntity';
/** 商品品类名称 */
categoryName?: Maybe<Scalars['String']>;
/** 商品品类id */
id?: Maybe<Scalars['Int']>;
};
declare const enum EnabledEnum {
/** 禁用 */
Disable = "DISABLE",
/** 启用 */
Enable = "ENABLE",
Unknown = "UNKNOWN",
Unrecognized = "UNRECOGNIZED",
Unspecified = "UNSPECIFIED"
}
declare const enum InputTextRule {
/** 仅数字 */
OnlyNumber = "ONLY_NUMBER",
/** 仅文本 */
OnlyText = "ONLY_TEXT",
/** 仅用于返回值。表示此版本中未知的值 */
Unknown = "UNKNOWN",
/** 未知 */
Unrecognized = "UNRECOGNIZED",
/** 未指定 */
Unspecified = "UNSPECIFIED"
}
declare const enum SopCheckItemEnum {
/** 多选 */
CheckboxType = "CHECKBOX_TYPE",
/** 时间 */
DateType = "DATE_TYPE",
/** 文件(图片或者视频) */
FileType = "FILE_TYPE",
/** 单选 */
RadioType = "RADIO_TYPE",
/** 文本 */
TextType = "TEXT_TYPE",
/** 仅用于返回值。表示此版本中未知的值 */
Unknown = "UNKNOWN",
/** 未知 */
Unrecognized = "UNRECOGNIZED",
/** 未指定 */
Unspecified = "UNSPECIFIED"
}
type SopCheckItemResultPayload = {
__typename?: 'SopCheckItemResultPayload';
/** 状态 */
enabled?: Maybe<EnabledEnum>;
/** 状态名称 */
enabledName?: Maybe<Scalars['String']>;
/** 输入框校验规则 */
inputTextRule?: Maybe<InputTextRule>;
/** 是否上传图片/视频 */
isRemark?: Maybe<Scalars['Boolean']>;
/** 检查项名称 */
name?: Maybe<Scalars['String']>;
/** 多语言 */
nameLocale?: Maybe<Scalars['Object']>;
/** 多选选项 */
options?: Maybe<Array<Maybe<SopOptionPayload>>>;
/** 是否上传图片/视频 */
remarkRequired?: Maybe<Scalars['Boolean']>;
/** 备注 */
remarks?: Maybe<Scalars['String']>;
/** 是否必填 */
required?: Maybe<Scalars['Boolean']>;
/** 快照id */
snapshotId?: Maybe<Scalars['ID']>;
/** 检查项id */
sopDetailId?: Maybe<Scalars['ID']>;
/** sop id */
sopId?: Maybe<Scalars['ID']>;
/** sop 答案 */
sopResult?: Maybe<SopOrResultPayload>;
/** 排序 */
sort?: Maybe<Scalars['Int']>;
/** 检查项类型 */
type?: Maybe<SopCheckItemEnum>;
/** 检查项类型 */
typeName?: Maybe<Scalars['String']>;
};
type SopDetailResultPayload = {
__typename?: 'SopDetailResultPayload';
/** 品类 */
category?: Maybe<CommodityCategoryEntity>;
/** 状态 */
enabled?: Maybe<EnabledEnum>;
/** 状态名称 */
enabledName?: Maybe<Scalars['String']>;
/** 质检项 */
sopCheckItems?: Maybe<Array<Maybe<SopCheckItemResultPayload>>>;
/** sop id */
sopId?: Maybe<Scalars['ID']>;
/** 模板描述 */
templateDesc?: Maybe<Scalars['String']>;
/** 模板名称 */
templateName?: Maybe<Scalars['String']>;
/** 是否通用 */
universal?: Maybe<Scalars['Boolean']>;
};
type SopOptionPayload = {
__typename?: 'SopOptionPayload';
/** 是否需要备注 */
isRemark?: Maybe<Scalars['Boolean']>;
/** 选项名称 */
name?: Maybe<Scalars['String']>;
/** 选项名称(多语言) */
nameLocale?: Maybe<Scalars['Object']>;
/** 是否必填备注 */
remarkRequired?: Maybe<Scalars['Boolean']>;
/** 备注 */
remarks?: Maybe<Scalars['String']>;
/** 顺序 */
sort?: Maybe<Scalars['Int']>;
/** 选项值 */
value?: Maybe<Scalars['String']>;
};
type SopOrResultPayload = {
__typename?: 'SopOrResultPayload';
/** 业务id */
businessId?: Maybe<Scalars['ID']>;
/** 是否暂存 */
cacheEnabled?: Maybe<Scalars['Boolean']>;
/** 答案 */
checkResult?: Maybe<Scalars['Object']>;
/** 答案类型 */
checkResultType?: Maybe<SopCheckItemEnum>;
/** 创建时间 */
createTime?: Maybe<Scalars['Long']>;
/** 文件链接 */
fileLink?: Maybe<Scalars['Object']>;
/** 备注 */
remark?: Maybe<Scalars['String']>;
/** 质检项id */
sopDetailId?: Maybe<Scalars['ID']>;
/** sop id */
sopId?: Maybe<Scalars['ID']>;
/** result id */
sopResultId?: Maybe<Scalars['ID']>;
/** 用户id */
userId?: Maybe<Scalars['Int']>;
};
type UploadProps = ComponentProps<typeof Upload>;
interface IProps$1 {
/** 表单唯一标识(全局唯一) */
uuid: string;
/**
* 文件是否启用后台上传
* @default true
*/
backUpload?: boolean;
/** 表单数据是否加载中(加载中的表单不允许提交) */
loading?: boolean;
/** form(通过useSopForm获取) */
form: SopFormInstance;
/** sop模板数据(带有答案,由中台接口直出) */
data: SopDetailResultPayload[];
/** 每个模板title,用于渲染模板名 */
title: string | ((templateData: SopDetailResultPayload) => string);
/** 模板内容外部的包裹层,用于自定义容器UI */
wrapper?: (templateData: SopDetailResultPayload, templateJSX: ReactNode) => ReactNode;
/** */
uploadProps?: Partial<UploadProps>;
}
type SopFormInstance = ReturnType<typeof useSopForm>;
interface SopFormValues {
sopList: SopDetailResultPayload[];
}
declare const useSopForm: () => {
strictValidation: boolean;
validateFieldsWithoutToast?: rc_field_form_es_interface.ValidateFields<SopFormValues>;
getFieldValue: (name: rc_field_form_es_interface.NamePath) => any;
getFieldsValue: (() => SopFormValues) & ((nameList: true | rc_field_form_es_interface.NamePath[], filterFunc?: (meta: rc_field_form_es_interface.Meta) => boolean) => any);
getFieldError: (name: rc_field_form_es_interface.NamePath) => string[];
getFieldsError: (nameList?: rc_field_form_es_interface.NamePath[]) => rc_field_form_es_interface.FieldError[];
getFieldWarning: (name: rc_field_form_es_interface.NamePath) => string[];
isFieldsTouched: ((nameList?: rc_field_form_es_interface.NamePath[], allFieldsTouched?: boolean) => boolean) & ((allFieldsTouched?: boolean) => boolean);
isFieldTouched: (name: rc_field_form_es_interface.NamePath) => boolean;
isFieldValidating: (name: rc_field_form_es_interface.NamePath) => boolean;
isFieldsValidating: (nameList: rc_field_form_es_interface.NamePath[]) => boolean;
resetFields: (fields?: rc_field_form_es_interface.NamePath[]) => void;
setFields: (fields: rc_field_form_es_interface.FieldData[]) => void;
setFieldValue: (name: rc_field_form_es_interface.NamePath, value: any) => void;
setFieldsValue: (values: {
sopList?: {
__typename?: "SopDetailResultPayload";
category?: {
__typename?: "CommodityCategoryEntity";
categoryName?: string;
id?: number;
};
enabled?: EnabledEnum;
enabledName?: string;
sopCheckItems?: {
__typename?: "SopCheckItemResultPayload";
enabled?: EnabledEnum;
enabledName?: string;
inputTextRule?: InputTextRule;
isRemark?: boolean;
name?: string;
nameLocale?: any;
options?: {
__typename?: "SopOptionPayload";
isRemark?: boolean;
name?: string;
nameLocale?: any;
remarkRequired?: boolean;
remarks?: string;
sort?: number;
value?: string;
}[];
remarkRequired?: boolean;
remarks?: string;
required?: boolean;
snapshotId?: string;
sopDetailId?: string;
sopId?: string;
sopResult?: {
__typename?: "SopOrResultPayload";
businessId?: string;
cacheEnabled?: boolean;
checkResult?: any;
checkResultType?: SopCheckItemEnum;
createTime?: number;
fileLink?: any;
remark?: string;
sopDetailId?: string;
sopId?: string;
sopResultId?: string;
userId?: number;
};
sort?: number;
type?: SopCheckItemEnum;
typeName?: string;
}[];
sopId?: string;
templateDesc?: string;
templateName?: string;
universal?: boolean;
}[];
}) => void;
validateFields: rc_field_form_es_interface.ValidateFields<SopFormValues>;
submit: () => void;
};
/** SOP业务表单组件 */
declare const SopForm: FC<IProps$1>;
declare const fieldKeyMap: Record<SopCheckItemEnum, FieldKey>;
declare const fieldDefaultValueMap: Record<SopCheckItemEnum, unknown>;
type FieldKey = 'TEXT_TYPE' | 'RADIO_TYPE' | 'FILE_TYPE' | 'DATE_TYPE' | 'CHECKBOX_TYPE' | '';
interface IProps {
/** 数据是否加载中 */
loading?: boolean;
/** sop模板数据(带有答案,由中台接口直出) */
data: SopDetailResultPayload[];
/** 每个模板title,用于渲染模板名 */
title: string | ((templateData: SopDetailResultPayload) => string);
/** 模板内容外部的包裹层,用于自定义容器UI */
wrapper?: (templateData: SopDetailResultPayload, templateJSX: ReactNode) => ReactNode;
}
/** SOP业务预览组件 */
declare const SopPreview: FC<IProps>;
export { SopForm, SopFormInstance, SopFormValues, SopPreview, fieldDefaultValueMap, fieldKeyMap, useSopForm };