From 76543a9506a9b43476e750c79c5ff595aa4bae36 Mon Sep 17 00:00:00 2001
From: wk
Date: 星期一, 05 八月 2024 08:28:38 +0800
Subject: [PATCH] feat:门卫

---
 pages/register/register.vue |  328 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 224 insertions(+), 104 deletions(-)

diff --git a/pages/register/register.vue b/pages/register/register.vue
index f7cae80..6f6de1f 100644
--- a/pages/register/register.vue
+++ b/pages/register/register.vue
@@ -82,7 +82,7 @@
 					label="韬唤璇佽繃鏈熸椂闂�"
 					labelWidth="20%"
 					borderBottom>
-					<uni-datetime-picker v-model="registerFormModel.expirationTimeIdcard" type="datetime"  />
+					<uni-datetime-picker v-model="registerFormModel.expirationTimeIdcard" type="date" :start="minDate" />
 				</u-form-item>
 				<u-form-item prop="phone"
 					label="鎵嬫満鍙�"
@@ -103,6 +103,21 @@
 						password
 						clearable></u--input>
 				</u-form-item>
+        <view class="intensity">
+          <view class="psdText">瀵嗙爜寮哄害</view>
+          <view
+              class="line"
+              :class="[level.includes('low') ? 'low' : '']"></view>
+          <view
+              class="line"
+              :class="[level.includes('middle') ? 'middle' : '']"></view>
+          <view
+              class="line"
+              :class="[level.includes('high') ? 'high' : '']"></view>
+          <div class="warningtext">
+            瀵嗙爜搴旂敱8-16浣嶆暟瀛椼�佸瓧姣嶃�佺鍙风粍鎴愩�傝涓嶈浣跨敤瀹规槗琚寽鍒扮殑瀵嗙爜
+          </div>
+        </view>
 				<u-form-item prop="confirmPassword"
 					label="纭瀵嗙爜"
 					labelWidth="20%"
@@ -128,6 +143,7 @@
 					label="杞﹁締绫诲瀷"
 					borderBottom
 					ref="roleRef"
+					prop='carType'
 					v-if="radiovalue1 == '鍙告満'">
 					<niceui-data-select-input v-model="registerFormModel.carType"
 						:localdata="radiolist2"
@@ -179,7 +195,7 @@
 					labelWidth="20%"
 					borderBottom
 					v-if="radiovalue1 == '鍙告満'">
-					<uni-datetime-picker v-model="registerFormModel.expirationTimeDriving" type="datetime"  />
+					<uni-datetime-picker v-model="registerFormModel.expirationTimeDriving" type="date"  :start="minDate" />
 				</u-form-item>
 				<u-form-item prop="driverImg"
 					label="椹鹃┒璇�"
@@ -205,14 +221,13 @@
 					labelWidth="20%"
 					borderBottom
 					v-if="radiovalue1 == '鍙告満'">
-					<uni-datetime-picker v-model="registerFormModel.expirationTimeDriver" type="datetime"  />
+					<uni-datetime-picker v-model="registerFormModel.expirationTimeDriver" type="date"  :start="minDate" />
 				</u-form-item>
 				<u-form-item prop="tradeQualificationImg"
 					label="浠庝笟璧勬牸璇�"
 					labelWidth="24%"
 					borderBottom
 					v-if="radiovalue1 == '鍙告満'"
-					required
 					@click="beforeRead">
 					<u-upload :fileList="fileList4"
 						deletable
@@ -234,25 +249,11 @@
 					labelWidth="20%"
 					borderBottom
 					v-if="radiovalue1 == '鍙告満'">
-					<uni-datetime-picker v-model="registerFormModel.expirationTimeTradequalification" type="datetime"  />
-				</u-form-item>
-				<u-form-item label="鏄惁闈炵叅杞﹁締"
-					v-if="radiovalue1 == '鍙告満'"
-					labelWidth="30%"
-					borderBottom
-					prop="isNonCoal">
-					<u-checkbox-group v-model="registerFormModel.isNonCoal"
-						placement="row"
-						size="40"
-						@change="isNonCoalChange">
-						<u-checkbox name="鏄�"
-							label-size="30">
-						</u-checkbox>
-					</u-checkbox-group>
+					<uni-datetime-picker v-model="registerFormModel.expirationTimeTradequalification" type="date"  :start="minDate" />
 				</u-form-item>
 				<u-form-item labelWidth="20%"
 					v-if="radiovalue1 == '鍙告満'"
-					label="杞﹁締绫诲瀷"
+					label="鐜繚绫诲瀷"
 					borderBottom
 					prop="countryNumberCar">
 					<u-radio-group v-model="registerFormModel.countryNumberCar"
@@ -301,7 +302,84 @@
 			}
 		},
 		data() {
+      const validatePass = (rule, value, callback) => {
+        if (this.registerFormModel.confirmPassword !== "") {
+          if (value !== this.registerFormModel.password) {
+            callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"));
+          } else {
+            callback();
+          }
+        } else {
+          callback();
+        }
+      };
+      const checkPassword = (rule, value, callback) => {
+        // let roles = this.$store.getters.roles;//褰撳墠鐢ㄦ埛瑙掕壊id
+        // let passL = 8;
+        // if (roles.concat(1)){
+        //   passL = 10
+        // }
+        let passL = 8;
+        this.level = []
+        if(!value) {
+          return callback('瀵嗙爜涓嶈兘涓虹┖')
+        }
+        if(value.length < passL) {
+          return callback(`瀵嗙爜涓嶈兘灏戜簬${passL}浣峘)
+        }
+        if(value.length > 16) {
+          return callback('瀵嗙爜涓嶈兘澶т簬16浣�')
+        }
+        //鏍¢獙鏄暟瀛�
+        const regex1 = /^\d+$/
+        // 鏍¢獙瀛楁瘝
+        const regex2 = /^[A-Za-z]+$/
+        // 鏍¢獙绗﹀彿
+        const regex3 =
+            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�乚+$/;
+        if(regex1.test(value)) {
+          this.level.push('low')
+          return callback('瀵嗙爜寮哄害杩囦綆')
+        }else if(regex2.test(value)) {
+          this.level.push('low')
+          return callback('瀵嗙爜寮哄害杩囦綆')
+        }else if(regex3.test(value)) {
+          this.level.push('low')
+          return callback('瀵嗙爜寮哄害杩囦綆')
+        }else if(/^[A-Za-z\d]+$/.test(value)) {
+          this.level.push('low')
+          this.level.push('middle')
+          return callback('瀵嗙爜寮哄害杩囦綆')
+        }else if(
+            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�乗d]+$/.test(
+                value
+            )
+        ) {
+          this.level.push('low')
+          this.level.push('middle')
+          return callback('瀵嗙爜寮哄害杩囦綆')
+        }else if(
+            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�丄-Za-z]+$/.test(
+                value
+            )
+        ) {
+          this.level.push('low')
+          this.level.push('middle')
+          return callback('瀵嗙爜寮哄害杩囦綆')
+        } else if (
+            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�丄-Za-z\d]+$/.test(
+                value
+            )
+        ) {
+          this.level.push('low')
+          this.level.push('middle')
+          this.level.push('high')
+        }
+        return callback()
+      };
 			return {
+        level:[],  //瀵嗙爜寮哄害鏁扮粍
+				minDate: this.getToday(),
 				// 杞︾墝鍙烽敭鐩樻帶鍒�
 				carNumShow: false,
 				keyValue: '',
@@ -320,10 +398,8 @@
 					confirmPassword: '',
 					tradeQualificationImg: '',
 					driverImg: '',
-					isNonCoal: [],
-					isCoalCar: 1, //鏄惁涓虹叅鐐溅杈�(鍙告満浣跨敤瀛楁) 1 鏄� 2 涓嶆槸
-					countryNumberCar: 0, //杞﹁締绫诲瀷;鍥戒簲 1锛屽浗鍏� 2
-					carType:0
+					countryNumberCar: 2, //鐜繚绫诲瀷;鍥戒簲 1锛屽浗鍏� 2
+					carType:null,
 				},
 				fileList1: [],
 				fileList2: [],
@@ -347,12 +423,22 @@
 					expirationTimeTradequalification: {
 						required: false,
 					},
-					name: {
+					name: [{
 						type: 'string',
 						required: true,
 						message: '璇峰~鍐欏鍚�',
 						trigger: ['blur', 'change']
-					},
+					},{
+							pattern: /^[\u4e00-\u9fa5]{1,6}$/, //闄愬埗闀垮害鏈�澶氫负 6 浣�
+							message: '濮撳悕鍙兘鏄腑鏂�', 
+							trigger: ['blur', 'change']
+						}],
+						carType:[{
+							type: 'number',
+							required: true,
+							message: '璇烽�夋嫨杞﹁締绫诲瀷',
+							trigger: ['blur', 'change']
+						}],
 					idCard: [{
 							type: 'string',
 							required: true,
@@ -385,27 +471,19 @@
 						}
 					],
 					password: [{
-							required: true,
-							message: '璇疯缃垵濮嬪瘑鐮�',
-							trigger: ['blur', 'change']
-						},
-						{
-							min: 6,
-							max: 12,
-							message: '闀垮害鍦�6-12涓瓧绗︿箣闂�'
-						}
-					],
+            required: true,
+            message: '璇疯缃垵濮嬪瘑鐮�',
+            trigger: ['blur', 'change']
+          },
+            {
+              validator: checkPassword,
+              trigger: 'change'
+            }],
 					confirmPassword: [{
-							required: true,
-							message: '璇疯缃垵濮嬪瘑鐮�',
-							trigger: ['blur', 'change']
-						},
-						{
-							min: 6,
-							max: 12,
-							message: '闀垮害鍦�6-12涓瓧绗︿箣闂�'
-						}
-					],
+            required: true,
+            validator: validatePass,
+            trigger: "blur"
+          }],
 					carNo: [{
 							type: 'string',
 							required: true,
@@ -529,65 +607,71 @@
 		},
 		methods: {
 			...mapMutations(['changeisUploadimg']),
+			getToday() {
+			  let now = new Date();
+			  let year = now.getFullYear();
+			  let month = this.padStart(now.getMonth() + 1); // 鏈堜唤鏄粠0寮�濮嬬殑
+			  let day = this.padStart(now.getDate());
+			  return `${year}-${month}-${day}`;
+			},
+			padStart(value) {
+			  return value.toString().padStart(2, '0');
+			},
 			productcarTypeChange(e){
 				console.log(this.registerFormModel.carType,this.radiolist2.find(v => v.value === e).value)
 				this.registerFormModel.carType = this.radiolist2.find(v => v.value === e).value
 			},
 			registerClick() {
-				if (this.registerFormModel.password == this.registerFormModel.confirmPassword) {
-					if(this.registerFormModel.carType==3&&!this.registerFormModel.tradeQualificationImg||this.registerFormModel.carType==4&&!this.registerFormModel.tradeQualificationImg){
-						uni.showToast({
-							title: '璇蜂笂浼犱粠涓氳祫鏍艰瘉锛�',
-							icon: 'error',
-							duration: 2000
-						});
-					}else{
-					this.$refs.regesterFormRef
-						.validate()
-						.then(res => {
-							this.registerClickloading = true;
-							this.registerFormModel.username = this.registerFormModel.phone;
-							this.registerFormModel.idCardImg = this.registerFormModel.cardImg1+","+this.registerFormModel.cardImg2;
-							if(this.registerFormModel.expirationTimeDriver){
-								this.registerFormModel.expirationTimeDriver=this.registerFormModel.expirationTimeDriver.slice(0,16)
-							}
-							if(this.registerFormModel.expirationTimeDriving){
-								this.registerFormModel.expirationTimeDriving=this.registerFormModel.expirationTimeDriving.slice(0,16)
-							}
-							if(this.registerFormModel.expirationTimeIdcard){
-								this.registerFormModel.expirationTimeIdcard=this.registerFormModel.expirationTimeIdcard.slice(0,16)
-							}
-							if(this.registerFormModel.expirationTimeTradequalification){
-								this.registerFormModel.expirationTimeTradequalification=this.registerFormModel.expirationTimeTradequalification.slice(0,16)
-							}
-								this.$reqPost('registerDriver', this.registerFormModel, 'json')
-								.then(res => {
-									this.registerClickloading = false;
-									if (res.code == 0) {
-										uni.showToast({
-											title: '娉ㄥ唽鎴愬姛,鍗冲皢杩斿洖鐧诲綍椤�',
-											icon: 'none',
-											duration: 1000
-										});
-										setTimeout(() => {
-											uni.redirectTo({ url: '/pages/login/login' });
-										}, 1000);
-									} else {
-										this.$u.toast(res.data.msg ? res.data.msg : '娣诲姞澶辫触');
-									}
-								})
-								.catch(err => {
-									console.log('閿欒', err);
-								});
-						})
-						.catch(err => {
-							console.log('err', err);
-							this.$u.toast('璇疯鑼冭緭鍏ュ唴瀹�');
-						});
-						}
-				} else {
-					this.$u.toast('涓ゆ瀵嗙爜涓嶄竴鑷�');
-				}
+        if(this.registerFormModel.carType==3&&!this.registerFormModel.tradeQualificationImg||this.registerFormModel.carType==4&&!this.registerFormModel.tradeQualificationImg){
+          uni.showToast({
+            title: '璇蜂笂浼犱粠涓氳祫鏍艰瘉锛�',
+            icon: 'error',
+            duration: 2000
+          });
+        }else{
+          this.$refs.regesterFormRef
+              .validate()
+              .then(res => {
+                this.registerClickloading = true;
+                this.registerFormModel.username = this.registerFormModel.phone;
+                this.registerFormModel.idCardImg = this.registerFormModel.cardImg1+","+this.registerFormModel.cardImg2;
+                if(this.registerFormModel.expirationTimeDriver){
+                  this.registerFormModel.expirationTimeDriver=this.registerFormModel.expirationTimeDriver.slice(0,16)
+                }
+                if(this.registerFormModel.expirationTimeDriving){
+                  this.registerFormModel.expirationTimeDriving=this.registerFormModel.expirationTimeDriving.slice(0,16)
+                }
+                if(this.registerFormModel.expirationTimeIdcard){
+                  this.registerFormModel.expirationTimeIdcard=this.registerFormModel.expirationTimeIdcard.slice(0,16)
+                }
+                if(this.registerFormModel.expirationTimeTradequalification){
+                  this.registerFormModel.expirationTimeTradequalification=this.registerFormModel.expirationTimeTradequalification.slice(0,16)
+                }
+                this.$reqPost('registerDriver', this.registerFormModel, 'json')
+                    .then(res => {
+                      this.registerClickloading = false;
+                      if (res.code == 0) {
+                        uni.showToast({
+                          title: '娉ㄥ唽鎴愬姛,鍗冲皢杩斿洖鐧诲綍椤�',
+                          icon: 'none',
+                          duration: 1000
+                        });
+                        setTimeout(() => {
+                          uni.redirectTo({ url: '/pages/login/login' });
+                        }, 1000);
+                      } else {
+                        this.$u.toast(res.msg ? res.msg : '娣诲姞澶辫触');
+                      }
+                    })
+                    .catch(err => {
+                      console.log('閿欒', err);
+                    });
+              })
+              .catch(err => {
+                console.log('err', err);
+                this.$u.toast('璇疯鑼冭緭鍏ュ唴瀹�');
+              });
+        }
 			},
 			// 鍗曢�夋浜嬩欢
 			groupChange(e) {},
@@ -697,9 +781,6 @@
 				this.$nextTick(() => {
 					this.editRoleModelShow = false;
 				});
-			},
-			isNonCoalChange() {
-				this.registerFormModel.isCoalCar = this.registerFormModel.isNonCoal.length !== 0 ? 1 : 2
 			}
 		}
 	};
@@ -738,4 +819,43 @@
 			}
 		}
 	}
-</style>
\ No newline at end of file
+  .intensity {
+    width: 100%;
+    margin-top: 10rpx;
+    .psdText {
+      font-size: 14px;
+      margin-right: 10px;
+    }
+
+    .line {
+      display: inline-block;
+      width: 70rpx;
+      height: 8rpx;
+      background: #d8d8d8;
+      border-radius: 6rpx;
+      margin-right: 16rpx;
+
+      &.low {
+        background: #f4664a;
+      }
+
+      &.middle {
+        background: #ffb700;
+      }
+
+      &.high {
+        background: #2cbb79;
+      }
+    }
+
+    .level {
+      margin: 0 32rpx 0 16rpx;
+    }
+
+    .warningtext {
+      color: #5a5a5a;
+      font-size: 24rpx;
+      margin-top: 10rpx;
+    }
+  }
+</style>

--
Gitblit v1.9.1