UNPKG

@uiw-admin/components

Version:
165 lines (159 loc) 5.5 kB
import _extends from "@babel/runtime/helpers/extends"; import { formatter, Rate } from 'uiw'; import React from 'react'; import Upload from '../widgets/Upload'; /** * 只读模式表单项 value转换 * @param type 表单项类型 * @param initialValue 默认值 * @param option 表单项option * @returns */ // 目前只处理以下类型的initialValue,其余默认为传入的initialValue import { jsx as _jsx } from "react/jsx-runtime"; export function getReadValue(type, initialValue, option, widgetProps) { var content = ''; if (type === 'radio' || type === 'searchSelect' && (widgetProps == null ? void 0 : widgetProps.mode) !== 'multiple' || type === 'select') { var value = option.filter(itm => itm.value === initialValue) || []; if (value.length > 0) content = value[0].label; } else if (type === 'checkbox') { for (var itm of option) { if (initialValue.includes(itm.value)) content += "" + itm.label; } } else if (type === 'switch') { content = initialValue ? '是' : '否'; } else if (type === 'timePicker') { content = initialValue && formatter('HH:mm:ss', new Date(initialValue)); } else if (type === 'monthPicker') { content = initialValue && formatter('YYYY-MM', new Date(initialValue)); } else if (type === 'dateInput') { content = initialValue && formatter((widgetProps == null ? void 0 : widgetProps.format) || 'YYYY-MM-DD', new Date(initialValue)); } else if (type === 'upload') { var uploadProps = _extends({ value: initialValue, uploadType: widgetProps == null ? void 0 : widgetProps.uploadType, readonly: true, showFileIcon: { showPreviewIcon: true, showRemoveIcon: false } }, widgetProps); content = /*#__PURE__*/_jsx(Upload, _extends({}, uploadProps)); } else if (type === 'selectMultiple') { var contentList = initialValue && initialValue.length > 0 && initialValue.map(item => item.label) || []; content = contentList.join(';'); } else if (type === 'searchSelect' && (widgetProps == null ? void 0 : widgetProps.mode) === 'multiple') { for (var _itm of option) { if (initialValue.includes(_itm.value)) content += "" + _itm.label; } } else if (type === 'rate') { content = /*#__PURE__*/_jsx(Rate, { value: initialValue, readOnly: true }); } else { // initialValue 支持 string number 或者 自定义 content = typeof initialValue === 'string' || typeof initialValue === 'number' || /*#__PURE__*/React.isValidElement(initialValue) ? initialValue : ''; } if (type === 'searchTree') { content = initialValue == null ? void 0 : initialValue.map == null ? void 0 : initialValue.map((it, index) => index === initialValue.length - 1 ? it.label : it.label + ', '); } return content; } //判断是否是arrary export function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } //判断是否object export function isObject(obj) { return Object.prototype.toString.call(obj) == '[object Object]'; } //判断是否是string 或 number export function isNumberOrString(obj) { return typeof obj === 'string' || typeof obj === 'number'; } // 判断对象是否为空 export function isObjectEmpty(obj) { for (var _key in obj) { return false; } return true; } var getKeyMsg = key => { if (['input', 'textarea'].includes(key)) { return '请填写字段'; } return '请选择字段'; }; /** * form表单提交验证 * @param rules FromValidateProps[] * @returns { [key: string]: string } */ export var fromValidate = function fromValidate(rules) { if (rules === void 0) { rules = []; } var errorObj = {}; rules.forEach(_ref => { var { rules, key, value, required } = _ref; if (required) { if (!value || Array.isArray(value) && value.length === 0) { errorObj[key] = getKeyMsg(key); } } if (rules && rules.length > 0) { rules.forEach(_ref2 => { var { validator = null, message = '', required, pattern = null } = _ref2; // 必填 && object && 为空 if (required && isObject(value) && (isObjectEmpty(value) || !value)) { errorObj[key] = message; // 必填 && arrary && 为空 } else if (required && isArray(value) && (value.length === 0 || !value)) { errorObj[key] = message; // 必填 && string或number && 为空 } else if (required && (value === undefined || value === null)) { errorObj[key] = message; } else if (required && isNumberOrString(value) && !value) { errorObj[key] = message; // 自定义验证规则 } else if (validator) { var result = validator(value); if (!result) { errorObj[key] = message; } else if (result && typeof result === 'string') { errorObj[key] = result; } // 正则判断 } else if (isNumberOrString(value) && pattern && !pattern.test(value)) { errorObj[key] = message; } }); } }); return errorObj; }; /** * 判断rules 里面是 required 是否存在 */ export var isRequired = function isRequired(rules) { if (rules === void 0) { rules = []; } if (rules.length === 0) return false; var requireds = rules.filter(item => item.required || false); if (requireds && requireds.length > 0) { return true; } return false; };