<template>
<my-form ref="forRef" :model="data">
<my-form-item label="产品名称" prop="name" :rules="[
{ required: true, message: '请输入产品名称', trigger: 'blur' },
{ maxLength: 10, message: '产品名称不能大于10' },
{ validator: mycheck(data.name)}
]">
<my-input v-model="data.name" />
</my-form-item>
<my-form-item label="产品描述" prop="age" :rules="[
{ required: true, message: '请输入产品描述', trigger: 'blur' },
{ maxLength: 200, maxMessage: '姓名不能超过200个汉字' }
]">
<my-input v-model="data.age"/>
</my-form-item>
<my-form-item label="产品分类" prop="category" :rules="[{ required: true, message: '请选择性产品分类', trigger: 'change' }]">
<my-select v-model="data.category">
<my-option v-for="item in sexOptions" :label="item.lable" :value="item.value" />
</my-select>
</my-form-item>
<my-form-item label="产品单价" prop="price" :rules="[
{ required: true, message: '请输入产品单价', trigger: 'blur' },
{ min: 0, message: '产品单价不能小于0', trigger: 'blur' },
{ max: 10000, message: '产品单价不能超过10000', trigger: 'blur' }
]" >
<my-input v-model="data.price"/>
</my-form-item>
<my-form-item label="产品库存" prop="stock" :rules="[
{ required: true, message: '请输入产品库存', trigger: 'blur' },
{ min: 0, message: '产品库存不能小于0', trigger: 'blur' },
{ max: 10000, message: '产品库存不能超过10000', trigger: 'blur' }
]" >
<my-input v-model="data.stock"/>
</my-form-item>
<my-form-item label="生产厂家" prop="manufacturer" :rules="[
{ required: true, message: '请输入生产厂家', trigger: 'blur' },
]">
<my-input v-model="data.manufacturer"/>
</my-form-item>
<my-form-item label="产地">
<my-select v-model="data.originProvince" placeholder="省" prop="originProvince" :rules="[{ required: true, message: '请选择性省份', trigger: 'change' }]">
<my-option v-for="item in originProvinces" :label="item.lable" :value="item.value" />
</my-select>
<my-select v-model="data.originCity" placeholder="市" prop="originCity" :rules="[{ required: true, message: '请选择市', trigger: 'change' }]">
<my-option v-for="item in originCitys" :label="item.lable" :value="item.value" />
</my-select>
</my-form-item>
<my-form-item label="发货地">
<my-select v-model="data.shippingProvince" placeholder="省" prop="originProvince" :rules="[{ required: true, message: '请选择性省份', trigger: 'change' }]">
<my-option v-for="item in originProvinces" :label="item.lable" :value="item.value" />
</my-select>
<my-select v-model="data.shippingCity" placeholder="市" prop="originCity" :rules="[{ required: true, message: '请选择市', trigger: 'change' }]">
<my-option v-for="item in shippingCities" :label="item.lable" :value="item.value" />
</my-select>
</my-form-item>
<!-- // 复杂空件暂时不做 -->
<div class="data">
<el-form-item label="生产日期:" required>
<el-col :span="11">
<el-form-item prop="createAt">
<el-date-picker v-model="data.createAt" type="date" aria-label="Pick a date" placeholder="Pick a date"
style="width: 100%;" />
</el-form-item>
</el-col>
</el-form-item>
</div>
</my-form>
{{ data }}
<button @click="checkForm">提交</button>
<button @click="clearForm">清空</button>
</template>
<script setup>
import myForm from '@/components/myForm';
import myFormItem from '@/components/myForm/myFormItem';
import MyInput from '@/components/input';
import MySelect from '@/components/mySelect';
import MyOption from '@/components/mySelect/myOption';
const forRef = ref()
const sexOptions = reactive([{ lable: "男", value: 1 }, { lable: "吉", value: 2 }])
const originProvinces = reactive([{ lable: "辽宁", value: 1 }, { lable: "吉林", value: 2 }]) // 省份数据
const originCitys = reactive([{ lable: "沈阳", value: 1 }, { lable: "长春", value: 2 }]) // 城市数据
const shippingCities = reactive([{ lable: "沈阳", value: 1 }, { lable: "长春", value: 2 }]) // 发货地城市数据
const data = reactive({
name: "",
age: "",
category: "",
price: "",
stock: "",
manufacturer: "",
originProvince: '',
originCity: '',
shippingProvince: '',
shippingCity: '',
createAt: "",
formCheck: null
})
function mycheck(item) {
if (item == 1) {
return {
check: false,
message: "不能等于1"
}
} else {
return {
check: true
}
}
}
function checkForm() {
data.formCheck = forRef.value.validate()
}
function clearForm() {
forRef.value.resetField()
}
const rules = reactive({
name: [
{ required: true, message: '请输入产品名称', trigger: 'blur' },
{ max: 10, message: '长度超过10位', trigger: 'blur' },
],
description: [
{ required: true, message: '请输入产品描述', trigger: 'blur' },
{ max: 200, message: '长度超过200位', trigger: 'blur' },
],
category: [
{ required: true, message: '请选择产品分类', trigger: 'change' },
],
});
</script>
<style scoped>
.data{
margin-left: 40px;
}
</style> 自定义校验函数为什么不成功
最新发布