捕梦者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.
 
 
 
 

191 lines
5.0 KiB

import setting from '@/config/setting';
let token = localStorage.getItem('access_token')
export function getForm(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',
clearable: true,
placeholder: e.placeholder,
}
if (e.disabled) {
eItem.props.disabled = true
}
if (e.type === 'hidden') {
eItem.type = 'hidden'
}
if (e.type === 'text') {
eItem.type = 'input'
}
if (e.type === 'editor') {
eItem.type = 'editor'
}
if (e.type === 'tag') {
eItem.type = 'tags'
}
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 = {
headers: { token },
type: 'drag',
uploadType: 'file',
action: setting.uploadImageUrl+'?upload_type=file',
name: 'file',
multiple: true, // 多选
limit: 2,
onSuccess: function(res, file) {
if(res.code ==0){
file.url = res.url;
}
}
}
}
if (e.type === "image" || e.type === "images") {
eItem.type = "upload"
eItem.props = {
headers: { token },
type: "select",
uploadType: "image",
action: setting.uploadImageUrl+'?upload_type=img',
name: "file",
multiple: true,
// accept: "image\/*",
maxLength: 1, //可上传文件数量 (limit: 2,)
allowRemove: true, //是否可删除,设置为false是不显示删除按钮
onSuccess: function(res, file) {
if(res.code ==0){
file.url = res.url;
}
}
}
}
if (e.type === 'cascader') {
eItem.type = 'cascader'
eItem.props = {
data: [],
}
}
if (e.type === 'checkbox' || e.type === 'select') {
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 === '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
}