From 06ee76d0a83854ad7a044689627e0f00a66e5ce5 Mon Sep 17 00:00:00 2001
From: lijh <lijh>
Date: Wed, 19 Jan 2022 18:36:23 +0800
Subject: [PATCH] 表单校验

---
 src/components/group/tempFormCheck.vue |  183 ++++++++++++++++++++-------------------------
 1 files changed, 81 insertions(+), 102 deletions(-)

diff --git a/src/components/group/tempFormCheck.vue b/src/components/group/tempFormCheck.vue
index 5876d7f..47c5ffa 100644
--- a/src/components/group/tempFormCheck.vue
+++ b/src/components/group/tempFormCheck.vue
@@ -1,59 +1,19 @@
 <template>
-	<a-form-model ref="ruleForm" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
-		<a-form-model-item ref="name" label="Activity name" prop="name">
-			<a-input v-model="form.name" @blur="
-          () => {
-            $refs.name.onFieldBlur();
-          }
-        " />
+	<a-form-model ref="ruleForm" :model="ruleForm" :rules="rules" v-bind="layout">
+		<a-form-model-item has-feedback label="Password" prop="pass">
+			<a-input v-model="ruleForm.pass" type="password" autocomplete="off" />
 		</a-form-model-item>
-		<a-form-model-item label="Activity zone" prop="region">
-			<a-select v-model="form.region" placeholder="please select your zone">
-				<a-select-option value="shanghai">
-					Zone one
-				</a-select-option>
-				<a-select-option value="beijing">
-					Zone two
-				</a-select-option>
-			</a-select>
+		<a-form-model-item has-feedback label="Confirm" prop="checkPass">
+			<a-input v-model="ruleForm.checkPass" type="password" autocomplete="off" />
 		</a-form-model-item>
-		<a-form-model-item label="Activity time" required prop="date1">
-			<a-date-picker v-model="form.date1" show-time type="date" placeholder="Pick a date" style="width: 100%;" />
-		</a-form-model-item>
-		<a-form-model-item label="Instant delivery" prop="delivery">
-			<a-switch v-model="form.delivery" />
-		</a-form-model-item>
-		<a-form-model-item label="Activity type" prop="type">
-			<a-checkbox-group v-model="form.type">
-				<a-checkbox value="1" name="type">
-					Online
-				</a-checkbox>
-				<a-checkbox value="2" name="type">
-					Promotion
-				</a-checkbox>
-				<a-checkbox value="3" name="type">
-					Offline
-				</a-checkbox>
-			</a-checkbox-group>
-		</a-form-model-item>
-		<a-form-model-item label="Resources" prop="resource">
-			<a-radio-group v-model="form.resource">
-				<a-radio value="1">
-					Sponsor
-				</a-radio>
-				<a-radio value="2">
-					Venue
-				</a-radio>
-			</a-radio-group>
-		</a-form-model-item>
-		<a-form-model-item label="Activity form" prop="desc">
-			<a-input v-model="form.desc" type="textarea" />
+		<a-form-model-item has-feedback label="Age" prop="age">
+			<a-input v-model.number="ruleForm.age" />
 		</a-form-model-item>
 		<a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
-			<a-button type="primary" @click="onSubmit">
-				Create
+			<a-button type="primary" @click="submitForm('ruleForm')">
+				Submit
 			</a-button>
-			<a-button style="margin-left: 10px;" @click="resetForm">
+			<a-button style="margin-left: 10px" @click="resetForm('ruleForm')">
 				Reset
 			</a-button>
 		</a-form-model-item>
@@ -62,70 +22,89 @@
 <script>
 	export default {
 		data() {
+			let checkPending;
+			let checkAge = (rule, value, callback) => {
+				clearTimeout(checkPending);
+				if (!value) {
+					return callback(new Error('Please input the age'));
+				}
+				checkPending = setTimeout(() => {
+					if (!Number.isInteger(value)) {
+						callback(new Error('Please input digits'));
+					} else {
+						if (value < 18) {
+							callback(new Error('Age must be greater than 18'));
+						} else {
+							callback();
+						}
+					}
+				}, 1000);
+			};
+			let validatePass = (rule, value, callback) => {
+				if (value === '') {
+					callback(new Error('Please input the password'));
+				} else {
+					if (this.ruleForm.checkPass !== '') {
+						this.$refs.ruleForm.validateField('checkPass');
+					}
+					callback();
+				}
+			};
+			let validatePass2 = (rule, value, callback) => {
+				if (value === '') {
+					callback(new Error('Please input the password again'));
+				} else if (value !== this.ruleForm.pass) {
+					callback(new Error("Two inputs don't match!"));
+				} else {
+					callback();
+				}
+			};
+
+			let validateContent = (rule, value, callback) => {
+				console.log(1111);
+				if (1 == 1) {
+					this.$refs.ruleForm.validateField('checkPass');
+				} 
+				callback();
+			};
 			return {
-				labelCol: {
-					span: 4
-				},
-				wrapperCol: {
-					span: 14
-				},
-				other: '',
-				form: {
-					name: '',
-					region: undefined,
-					date1: undefined,
-					delivery: false,
-					type: [],
-					resource: '',
-					desc: '',
+				ruleForm: {
+					pass: '',
+					checkPass: '',
+					age: '',
 				},
 				rules: {
-					name: [{
-							required: true,
-							message: 'Please input Activity name',
-							trigger: 'blur'
-						},
-						{
-							min: 3,
-							max: 5,
-							message: 'Length should be 3 to 5',
-							trigger: 'blur'
-						},
-					],
-					region: [{
-						required: true,
-						message: 'Please select Activity zone',
+					pass: [{
+						validator: validatePass,
 						trigger: 'change'
 					}],
-					date1: [{
-						required: true,
-						message: 'Please pick a date',
+					checkPass: [{
+						validator: validatePass2,
 						trigger: 'change'
 					}],
-					type: [{
-						type: 'array',
-						required: true,
-						message: 'Please select at least one activity type',
-						trigger: 'change',
-					}, ],
-					resource: [{
-						required: true,
-						message: 'Please select activity resource',
+					age: [{
+						validator: checkAge,
 						trigger: 'change'
-					}, ],
-					desc: [{
-						required: true,
-						message: 'Please input activity form',
-						trigger: 'blur'
 					}],
+					common: [{
+						validator: validateContent,
+						trigger: 'change'
+					}],
+				},
+				layout: {
+					labelCol: {
+						span: 4
+					},
+					wrapperCol: {
+						span: 14
+					},
 				},
 			};
 		},
 		methods: {
-			onSubmit() {
-				this.$refs.ruleForm.validate(valid => {
+			submitForm(formName) {
+				this.$refs[formName].validate(valid => {
 					if (valid) {
-						console.log('11');
 						alert('submit!');
 					} else {
 						console.log('error submit!!');
@@ -133,8 +112,8 @@
 					}
 				});
 			},
-			resetForm() {
-				this.$refs.ruleForm.resetFields();
+			resetForm(formName) {
+				this.$refs[formName].resetFields();
 			},
 		},
 	};

--
Gitblit v1.9.1