element form 校验 el-validate-schema

el-validate-schema.js utils中

定义校验规则 以及自定义校验规则

/**
 *  input 框 应该选 , trigger: 'blur'  失去焦点
 *  下拉框 el-select、日期选择器 el-date-picker、
 *  复选框 el-checkbox、单选框 el-radio验证时,trigger的值选择change
 *
 *  经过测试 什么也不设置 效果 与上面  分别设置一致
 *
 *  自定义校验规则  两个参数(接收传递的参数,校验参数) 一个 回调 callback 是否有 Error
 */
export default {
	// 用户名
	name: [
		{ required: true, message: '请输入姓名' },
		{ min: 2, max: 6, message: '名字长度2-6之间' },
	],
	// 年龄
	age: [{ required: true, type: 'number', message: '请输入年龄' }],
	// 性别
	sexLabel: [{ required: true, message: '请选择性别' }],
	// 生日
	birth: [{ type: 'date', required: true, message: '请选择日期' }],
	// 地址
	addr: [{ required: true, message: '请输入地址' }],
}

// custom  自定义校验规则   接收   form实例  与 formData
// rule 中接收参数  导致直接校验 原因不明  这里通过函数 传递参数
export const customRules = (formInstance, formData) => ({
	// 账号
	account: [
		{
			required: true,
			validator: validateAccount(formInstance, formData),
			// formInstance: formInstance,
			// formData: formData,
		},
	],
	// 密码
	pass: [
		{
			required: true,
			validator: validatePass(formInstance, formData),
		},
	],
})
// lambda ==》fun 主要为了将 rule 的参数 提出去做参数 这样写可以正常校验
const validateAccount = (formInstance, formData) => (rule, value, callback) => {
	if (!value) {
		return callback(new Error('账户不能为空'))
	}
	callback()
}
const validatePass = (formInstance, formData) => (rule, value, callback) => {
	if (!value) {
		return callback(new Error('密码不能为空'))
	}
	callback()
}

自带校验规则的使用

			<el-form
				:model="userData"
				ref="ruleForm"
				
				:rules="rules"
				
				status-icon
				label-position="right"
				label-width="80px"
			>

			<el-form-item label="姓名" prop="name">
			   <el-input v-model="userData.name" placeholder="请输入姓名" />
			</el-form-item>

/**
 * 是否是 编辑
 * 1 对话框 关闭时  无论是  确认 还是  取消  都执行了 resetFields  所以 新增时无需
 * 2 handleEdit 中 直接 赋值 userData 在 虚拟DOM中 beforeCreated 相当于修改了 userData 的初始值
 * 3 resetFields  就是复原初始值  所以 数据 不会清空  初始值不是空
 * 4 nextTick 中修改  是 mounted 后  不会修改初始值  异步中也同理
 * v-if true 中 使用form实例方法 如 resetFields  此时组件还没有实例化  需要 nextTick
 */

自定义校验规则的使用

import { customRules } from '@/utils/el-validate-schema'

// 自定义校验规则
// customRules中传递参数有问题 目前写法没问题

const rules = customRules(ruleForm, loginData)

				<el-form
					:model="loginData"
					ref="ruleForm"
					
					:rules="rules"
					
					status-icon
					size="large"
				>
### 关于酒店管理系统UI设计的相关资料 #### Vue.js框架下的UI组件库选择 为了创建高效的用户界面,Vue.js提供了多种成熟的UI组件库供开发者选用。Element UI是一个广泛应用于企业级项目的前端UI工具包,在构建复杂业务场景方面表现出色[^4]。 ```html <!-- Element UI按钮示例 --> <template> <el-button type="primary">主要按钮</el-button> </template> <script> export default { } </script> ``` #### 用户界面布局原则 良好的用户体验始于合理的页面结构规划。对于酒店管理系统而言,首页应当直观展示重要信息如预订状态概览、待办事项提醒等;客房管理模块需支持快速筛选查询房间详情;订单处理部分则要确保操作流程简便流畅,减少误操作可能性[^1]。 #### 数据可视化呈现方式 借助图表插件ECharts可以实现丰富的统计图形渲染效果,帮助管理人员更清晰地理解经营状况和发展趋势。例如绘制入住率随时间变化曲线图,或是不同房型销售比例饼状分布图等,均有助于辅助决策制定过程[^2]。 #### 表单验证机制实施 考虑到实际应用场景中的输入校验需求,VeeValidate配合Yup规则定义语法能够有效保障表单项合法性检查工作顺利开展。这不仅提高了数据准确性,也增强了整体系统的健壮程度[^3]。 ```javascript // VeeValidate + Yup 实现简单注册表单验证 import { useForm, useField } from 'vee-validate'; import * as yup from 'yup'; const schema = yup.object({ username: yup.string().required('用户名不能为空'), password: yup.string().min(8).max(16).required(), }); function setupForm() { const { handleSubmit } = useForm({ validationSchema: schema }); function onSubmit(values) { console.log(JSON.stringify(values)); } return { handleSubmit }; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值