xph-form
Version:
This is a configurable form component that supports React
91 lines (90 loc) • 2.74 kB
JavaScript
import { isRenderFormItemProps, } from "./types";
import { isFunction } from "lodash-es";
/**
* @description 生成placeholder
*/
export function createPlaceholderMessage(component) {
if (component.includes("Input") || component.includes("Complete")) {
return "请输入";
}
if (component.includes("Picker")) {
return "请选择";
}
if (component.includes("Select") ||
component.includes("Cascader") ||
component.includes("Checkbox") ||
component.includes("Radio") ||
component.includes("Switch")) {
return "请选择";
}
return "";
}
export function setComponentRuleType(rule, component, valueFormat) {
if (["DatePicker", "MonthPicker", "WeekPicker", "TimePicker"].includes(component)) {
rule.type = valueFormat ? "string" : "object";
}
else if (["RangePicker", "Upload", "CheckboxGroup", "TimePicker"].includes(component)) {
rule.type = "array";
}
else if (["InputNumber"].includes(component)) {
rule.type = "number";
}
}
/** 时间类型组件集合 */
export const dateComponents = [
"DatePicker",
"MonthPicker",
"RangePicker",
"WeekPicker",
"TimePicker",
];
/** 判断当前项是否需要监听表单的model值 */
export const isNeedWatchModel = (itemProps) => {
const { show, ifShow, required, disabled, componentProps } = itemProps;
if (isFunction(show) ||
isFunction(ifShow) ||
isFunction(required) ||
isFunction(disabled) ||
isFunction(componentProps) ||
isRenderFormItemProps(itemProps)) {
return true;
}
return false;
};
/** 有些文件本地创建预览地址后由于编码问题会出现乱码,所以这里需对这些乱码的文件进行编码配置,让浏览器以正确的编码读文件 */
export const getFileEncodingType = (type) => {
/** 需要加上utf8的文件类型 */
const utf8TypeArr = [
"application/json",
"application/javascript",
"text/plain",
"text/html",
"text/css",
];
if (utf8TypeArr.includes(type))
return `${type}; charset=utf-8`;
return type;
};
// 生成随机数
const hexList = [];
for (let i = 0; i <= 15; i++) {
hexList[i] = i.toString(16);
}
export function buildUUID() {
let uuid = "";
for (let i = 1; i <= 36; i++) {
if (i === 9 || i === 14 || i === 19 || i === 24) {
uuid += "-";
}
else if (i === 15) {
uuid += 4;
}
else if (i === 20) {
uuid += hexList[(Math.random() * 4) | 8];
}
else {
uuid += hexList[(Math.random() * 16) | 0];
}
}
return uuid.replace(/-/g, "");
}