UNPKG

@jdlinker/ui

Version:

jdLinker UI库,基于ant-design-vue封装

60 lines (54 loc) 1.99 kB
import { Rule } from 'ant-design-vue/es/form'; export const validateEnum = async (_rule: Rule, val: Record<any, any>[]) => { if (val.length === 0) return Promise.reject(new Error('请配置枚举项')); const flag = val.every((item) => { return item.value && item.text; }); if (!flag) { return Promise.reject(new Error('请配置枚举项')); } return Promise.resolve(); }; export const validateArray = async (_rule: Rule, val: Record<any, any>) => { if (!val) return Promise.reject(new Error(`请输入元素配置`)); await validateValueType(_rule, val); return Promise.resolve(); }; export const validateJson = async (_rule: Rule, val: Record<any, any>[], title = '配置参数', required = true) => { if (required && (!val || val.length === 0)) { return Promise.reject(new Error(`请输入${title}`)); } for (const item of val) { if (!item) return Promise.reject(new Error(`请输入${title}`)); await validateIdName(_rule, item); await validateValueType(_rule, item.valueType); } return Promise.resolve(); }; export const validateIdName = async (_rule: Rule, val: Record<any, any>) => { if (!val.id) { return Promise.reject(new Error('请输入标识')); } if (!val.name) { return Promise.reject(new Error('请输入名称')); } }; export const validateValueType = async (_rule: Rule, val: Record<any, any>, title = '数据类型') => { if (!val) return Promise.reject(new Error('请输入元素配置')); if (!val?.type) { return Promise.reject(new Error(`请选择${title}`)); } if (['enum'].includes(val.type)) { await validateEnum(_rule, val.elements); } if (['array'].includes(val.type)) { await validateArray(_rule, val.elementType); } if (['object'].includes(val.type)) { await validateJson(_rule, val.properties); } if (['file'].includes(val.type) && !val.fileType) { return Promise.reject(new Error('请选择文件类型')); } return Promise.resolve(); };