UNPKG

@uiw-admin/components

Version:
202 lines (196 loc) 7.53 kB
"use strict"; 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;