@uiw-admin/components
Version:
202 lines (196 loc) • 7.53 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fromValidate = void 0;
exports.getReadValue = getReadValue;
exports.isArray = isArray;
exports.isNumberOrString = isNumberOrString;
exports.isObject = isObject;
exports.isObjectEmpty = isObjectEmpty;
exports.isRequired = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
var _uiw = require("uiw");
var _react = _interopRequireDefault(require("react"));
var _Upload = _interopRequireDefault(require("../widgets/Upload"));
var _jsxRuntime = require("react/jsx-runtime");
/**
* 只读模式表单项 value转换
* @param type 表单项类型
* @param initialValue 默认值
* @param option 表单项option
* @returns
*/
// 目前只处理以下类型的initialValue,其余默认为传入的initialValue
function getReadValue(type, initialValue, option, widgetProps) {
var content = '';
if (type === 'radio' || type === 'searchSelect' && (widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.mode) !== 'multiple' || type === 'select') {
var value = option.filter(function (itm) {
return itm.value === initialValue;
}) || [];
if (value.length > 0) content = value[0].label;
} else if (type === 'checkbox') {
var _iterator = (0, _createForOfIteratorHelper2["default"])(option),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var itm = _step.value;
if (initialValue.includes(itm.value)) content += "".concat(itm.label);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
} else if (type === 'switch') {
content = initialValue ? '是' : '否';
} else if (type === 'timePicker') {
content = initialValue && (0, _uiw.formatter)('HH:mm:ss', new Date(initialValue));
} else if (type === 'monthPicker') {
content = initialValue && (0, _uiw.formatter)('YYYY-MM', new Date(initialValue));
} else if (type === 'dateInput') {
content = initialValue && (0, _uiw.formatter)((widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.format) || 'YYYY-MM-DD', new Date(initialValue));
} else if (type === 'upload') {
var uploadProps = (0, _objectSpread2["default"])({
value: initialValue,
uploadType: widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.uploadType,
readonly: true,
showFileIcon: {
showPreviewIcon: true,
showRemoveIcon: false
}
}, widgetProps);
content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Upload["default"], (0, _objectSpread2["default"])({}, uploadProps));
} else if (type === 'selectMultiple') {
var contentList = initialValue && initialValue.length > 0 && initialValue.map(function (item) {
return item.label;
}) || [];
content = contentList.join(';');
} else if (type === 'searchSelect' && (widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.mode) === 'multiple') {
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(option),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var _itm = _step2.value;
if (initialValue.includes(_itm.value)) content += "".concat(_itm.label);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
} else if (type === 'rate') {
content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Rate, {
value: initialValue,
readOnly: true
});
} else {
// initialValue 支持 string number 或者 自定义
content = typeof initialValue === 'string' || typeof initialValue === 'number' || /*#__PURE__*/_react["default"].isValidElement(initialValue) ? initialValue : '';
}
if (type === 'searchTree') {
var _initialValue$map;
content = initialValue === null || initialValue === void 0 ? void 0 : (_initialValue$map = initialValue.map) === null || _initialValue$map === void 0 ? void 0 : _initialValue$map.call(initialValue, function (it, index) {
return index === initialValue.length - 1 ? it.label : it.label + ', ';
});
}
return content;
}
//判断是否是arrary
function isArray(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
}
//判断是否object
function isObject(obj) {
return Object.prototype.toString.call(obj) == '[object Object]';
}
//判断是否是string 或 number
function isNumberOrString(obj) {
return typeof obj === 'string' || typeof obj === 'number';
}
// 判断对象是否为空
function isObjectEmpty(obj) {
for (var _key in obj) {
return false;
}
return true;
}
var getKeyMsg = function getKeyMsg(key) {
if (['input', 'textarea'].includes(key)) {
return '请填写字段';
}
return '请选择字段';
};
/**
* form表单提交验证
* @param rules FromValidateProps[]
* @returns { [key: string]: string }
*/
var fromValidate = function fromValidate() {
var rules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var errorObj = {};
rules.forEach(function (_ref) {
var rules = _ref.rules,
key = _ref.key,
value = _ref.value,
required = _ref.required;
if (required) {
if (!value || Array.isArray(value) && value.length === 0) {
errorObj[key] = getKeyMsg(key);
}
}
if (rules && rules.length > 0) {
rules.forEach(function (_ref2) {
var _ref2$validator = _ref2.validator,
validator = _ref2$validator === void 0 ? null : _ref2$validator,
_ref2$message = _ref2.message,
message = _ref2$message === void 0 ? '' : _ref2$message,
required = _ref2.required,
_ref2$pattern = _ref2.pattern,
pattern = _ref2$pattern === void 0 ? null : _ref2$pattern;
// 必填 && 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 是否存在
*/
exports.fromValidate = fromValidate;
var isRequired = function isRequired() {
var rules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
if (rules.length === 0) return false;
var requireds = rules.filter(function (item) {
return item.required || false;
});
if (requireds && requireds.length > 0) {
return true;
}
return false;
};
exports.isRequired = isRequired;