捕梦者CMS系统前端框架
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

193 lines
5.0 KiB

import setting from "@/config/setting";
export function getForm(valNew) {
console.log(valNew)
const rule = []
for (let e of valNew) {
let eItem = {};
eItem.type = e.type
eItem.title = e.show_name
eItem.field = e.field
eItem.value = ""
eItem.col = {
span: 23
}
eItem.props = {
type: "text",
placeholder: e.placeholder,
}
if (e.type === "hidden") {
eItem.type = "hidden"
}
if (e.type === "text") {
eItem.type = "input"
}
if (e.type === "editor") {
eItem.type = "editor"
}
if (e.type === "radio") {
eItem.type = "switch"
eItem.props = {
activeValue: "1",
inactiveValue: "0"
}
}
if (e.type === "number") {
eItem.type = "input"
eItem.props.type = "number"
}
if (e.type === "password") {
eItem.type = "input"
eItem.props.type = "password"
}
if (e.type === "textarea") {
eItem.type = "input"
eItem.props.type = "textarea"
}
if (e.type === "file") {
eItem.type = "upload"
eItem.props = {
type: "drag",
uploadType: "file",
action: setting.uploadImageUrl,
name: "pic",
multiple: true, // 多选
limit: 2,
onSuccess: function(res, file) {
file.url = res.data.filePath;
}
}
}
if (e.type === "image" || e.type === "images") {
eItem.type = "upload"
eItem.props = {
type: "select",
uploadType: "image",
action: setting.uploadImageUrl,
name: "pic",
multiple: true,
// accept: "image\/*",
maxLength: 1, //可上传文件数量 (limit: 2,)
allowRemove: true, //是否可删除,设置为false是不显示删除按钮
onSuccess: function(res, file) {
file.url = res.data.filePath;
}
}
}
if (e.type === "tag") {
eItem.type = "input"
}
if (e.type === "cascader") {
eItem.type = "cascader"
eItem.props = {
data: [],
}
}
if (e.type === "checkbox") {
eItem.type = e.type
eItem.options = [];
let opt = e.value_arr;
for (let x in opt) {
eItem.options.push({
"value": x,
"label": opt[x],
"disabled": false
})
}
}
if (e.type === "select") {
eItem.type = "select"
eItem.options = [];
// {"value": "104","label": "生态蔬菜","disabled": false}
let opt = e.value_arr;
for (let x in opt) {
eItem.options.push({
"value": x,
"label": opt[x],
"disabled": false
})
}
}
if (e.type === "time") {
eItem.type = "TimePicker"
eItem.props.type = "time"
}
if (e.type === "timerange") {
eItem.type = "TimePicker"
eItem.props.type = "timerange"
}
if (e.type === "date") {
eItem.type = "DatePicker"
eItem.props.type = "date"
}
if (e.type === "datetime") {
eItem.type = "DatePicker"
eItem.props.type = "datetime"
}
if (e.type === "daterange") {
eItem.type = "DatePicker"
eItem.props.type = "daterange"
}
if (e.type === "datetimerange") {
eItem.type = "DatePicker"
eItem.props.type = "datetimerange"
}
if (e.type === 'slider') {
eItem.type = 'slider',
eItem.props = {
"min": 0,
//最小值
"max": 100,
//最大值
"step": 1,
//步长,取值建议能被(max - min)整除
"disabled": false,
//是否禁用滑块
"range": true,
//是否开启双滑块模式
"showInput": false,
//是否显示数字输入框,仅在单滑块模式下有效
"showStops": true,
//是否显示间断点,建议在 step 不密集时使用
"showTip": "hover",
//提示的显示控制,可选值为 hover(悬停,默认)、always(总是可见)、never(不可见)
"tipFormat": undefined,
//Slider 会把当前值传给 tip-format,并在 Tooltip 中显示 tip-format 的返回值,若为 null,则隐藏 Tooltip
"inputSize": "small",
//数字输入框的尺寸,可选值为large、small、default或者不填,仅在开启 show-input 时有效
}
}
if (e.required === 1) {
if (e.maxLength > 0) {
eItem.props.maxLength = e.maxLength
}
if (e.minLength > 0) {
eItem.props.minLength = e.minLength
}
if (e.type === 'text') {
eItem.validate = [
{required:true,type:'string',message:"请输入" + e.show_name}
]
}
if (e.type === 'number') {
eItem.validate = [
{required:true,message:"请输入" + e.show_name},
]
}
if (e.type === "upload"){
eItem.validate = [{
required: true,
type: 'array',
min: 3,
message: '请上传3张图片',
trigger: 'change'
}]
}
}
// console.log(eItem)
rule.push(eItem);
}
return rule
}