@uiw-admin/components
Version:
165 lines (159 loc) • 5.5 kB
JavaScript
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;
};