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 | 558 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 451 insertions(+), 107 deletions(-) diff --git a/pages/register/register.vue b/pages/register/register.vue index 3bb222e..6f6de1f 100644 --- a/pages/register/register.vue +++ b/pages/register/register.vue @@ -17,7 +17,6 @@ iconSize="20"> <u-radio labelSize="14px" size="20px" - :customStyle="{ marginBottom: '8px' }" v-for="(item, index) in radiolist1" :key="index" :label="item.name" @@ -43,6 +42,48 @@ placeholder="璇疯緭鍏ュ唴瀹�" clearable></u--input> </u-form-item> + <u-form-item prop="cardImg1" + label="韬唤璇佹闈�" + labelWidth="20%" + borderBottom + required + @click="beforeRead"> + <u-upload :fileList="fileList5" + deletable + @afterRead="afterRead" + @delete="deletePic" + name="5" + multiple + :maxCount="1" + width="250" + height="150" + :previewFullImage="true"> + </u-upload> + </u-form-item> + <u-form-item prop="cardImg2" + label="韬唤璇佸弽闈�" + labelWidth="20%" + borderBottom + required + @click="beforeRead"> + <u-upload :fileList="fileList6" + deletable + @afterRead="afterRead" + @delete="deletePic" + name="6" + multiple + :maxCount="1" + width="250" + height="150" + :previewFullImage="true"> + </u-upload> + </u-form-item> + <u-form-item prop="expirationTimeIdcard" + label="韬唤璇佽繃鏈熸椂闂�" + labelWidth="20%" + borderBottom> + <uni-datetime-picker v-model="registerFormModel.expirationTimeIdcard" type="date" :start="minDate" /> + </u-form-item> <u-form-item prop="phone" label="鎵嬫満鍙�" labelWidth="20%" @@ -62,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%" @@ -83,6 +139,19 @@ placeholder="璇疯緭鍏ュ唴瀹�" clearable></u--input> </u-form-item> + <u-form-item labelWidth="20%" + label="杞﹁締绫诲瀷" + borderBottom + ref="roleRef" + prop='carType' + v-if="radiovalue1 == '鍙告満'"> + <niceui-data-select-input v-model="registerFormModel.carType" + :localdata="radiolist2" + label="杞﹁締绫诲瀷閫夋嫨" + placeholder="璇烽�夋嫨杞﹁締绫诲瀷" + @change="productcarTypeChange" + ></niceui-data-select-input> + </u-form-item> <u-form-item prop="carImg" label="杞﹁締鐓х墖" labelWidth="20%" @@ -100,8 +169,6 @@ width="250" height="150" :previewFullImage="true"> - <!-- <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png" - mode="widthFix" style="width: 250px;height: 150px;"></image> --> </u-upload> </u-form-item> <u-form-item prop="drivingImg" @@ -121,16 +188,86 @@ width="250" height="150" :previewFullImage="true"> - <!-- <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png" - mode="widthFix" style="width: 250px;height: 150px;"></image> --> </u-upload> </u-form-item> - <u-form-item label="鎺ㄨ崘浜鸿处鍙�" - labelWidth="25%" - borderBottom> - <u--input v-model="registerFormModel.tuiJianMa" - placeholder="璇疯緭鍏ュ唴瀹�" - clearable></u--input> + <u-form-item prop="expirationTimeDriving" + label="琛岄┒璇佽繃鏈熸椂闂�" + labelWidth="20%" + borderBottom + v-if="radiovalue1 == '鍙告満'"> + <uni-datetime-picker v-model="registerFormModel.expirationTimeDriving" type="date" :start="minDate" /> + </u-form-item> + <u-form-item prop="driverImg" + label="椹鹃┒璇�" + labelWidth="24%" + borderBottom + v-if="radiovalue1 == '鍙告満'" + required + @click="beforeRead"> + <u-upload :fileList="fileList3" + deletable + @afterRead="afterRead" + @delete="deletePic" + name="3" + multiple + :maxCount="1" + width="250" + height="150" + :previewFullImage="true"> + </u-upload> + </u-form-item> + <u-form-item prop="expirationTimeDriver" + label="椹鹃┒璇佽繃鏈熸椂闂�" + labelWidth="20%" + borderBottom + v-if="radiovalue1 == '鍙告満'"> + <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 == '鍙告満'" + @click="beforeRead"> + <u-upload :fileList="fileList4" + deletable + @afterRead="afterRead" + @delete="deletePic" + name="4" + multiple + :maxCount="1" + width="250" + height="150" + :previewFullImage="true"> + </u-upload> + <span style="color:red"> + 鍑℃槸杩愯緭鏈夋瘨鍖栧鐗╁搧鐨勮溅杈嗗繀椤讳笂浼犱粠涓氳祫鏍艰瘉骞跺~鍐欎粠涓氳祫鏍艰瘉鏈夋晥鏃堕棿 + </span> + </u-form-item> + <u-form-item prop="expirationTimeTradequalification" + label="浠庝笟璧勬牸杩囨湡鏃堕棿" + labelWidth="20%" + borderBottom + v-if="radiovalue1 == '鍙告満'"> + <uni-datetime-picker v-model="registerFormModel.expirationTimeTradequalification" type="date" :start="minDate" /> + </u-form-item> + <u-form-item labelWidth="20%" + v-if="radiovalue1 == '鍙告満'" + label="鐜繚绫诲瀷" + borderBottom + prop="countryNumberCar"> + <u-radio-group v-model="registerFormModel.countryNumberCar" + placement="row" + size="30" + shape="circle" + iconSize="20"> + <u-radio labelSize="14px" + size="20px" + v-for="(item, index) in countryNumberCarList" + :key="index" + :label="item.label" + :name="item.name"></u-radio> + </u-radio-group> </u-form-item> </u--form> </view> @@ -146,12 +283,6 @@ type="primary" @click="registerClick" :loading="registerClickloading"></u-button></view> - <!-- 鍥剧墖棰勮寮瑰嚭妗� --> - <!-- <view class="previewImage-container"> - <u-popup :show="previewImageShow" mode="center" @close="previewImageClose" @open="previewImageOpen"> - <u--image :src="previewImageSrc != null ? BaseUrl + previewImageSrc : ''" width="400px" height="400px"></u--image> - </u-popup> - </view> --> </view> </template> @@ -160,27 +291,9 @@ import { BaseUrl } from '@/api/publicInterface.js'; import { mapMutations } from 'vuex'; export default { - // onLoad: function() { - // // 鏌ョ湅鏄惁鎺堟潈 - // wx.getSetting({ - // success (res){ - // if (res.authSetting['scope.userInfo']) { - // // 宸茬粡鎺堟潈锛屽彲浠ョ洿鎺ヨ皟鐢� getUserInfo 鑾峰彇澶村儚鏄电О - // wx.getUserInfo({ - // success: function(res) { - // console.log('res.userInfo',res.userInfo) - // } - // }) - // } - // } - // }) - // }, // 鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚銆傛敞鎰忓鏋滄覆鏌撻�熷害蹇紝浼氬湪椤甸潰杩涘叆鍔ㄧ敾瀹屾垚鍓嶈Е鍙� onReady() { this.$refs.regesterFormRef.setRules(this.rules); - // this.$refs.regesterFormRef.validate().then(res => {}).catch(err => { - // console.log(err); - // }) }, onLoad(params) { if (params) { @@ -189,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: '', @@ -199,23 +389,56 @@ name: '', username: '', openId: '', - type: 2, + type: 3, idCard: '', carNo: '', carImg: '', drivingImg: '', tuiJianMa: '', - confirmPassword: '' + confirmPassword: '', + tradeQualificationImg: '', + driverImg: '', + countryNumberCar: 2, //鐜繚绫诲瀷;鍥戒簲 1锛屽浗鍏� 2 + carType:null, }, fileList1: [], fileList2: [], + fileList3: [], + fileList4: [], + fileList5: [], + fileList6: [], rules: { - name: { + countryNumberCar: { + required: false, + }, + expirationTimeIdcard: { + required: false, + }, + expirationTimeDriving: { + required: false, + }, + expirationTimeDriver: { + required: false, + }, + expirationTimeTradequalification: { + required: false, + }, + 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, @@ -224,12 +447,13 @@ }, { pattern: /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, - message: '韬唤璇佸彿鏍煎紡涓嶆纭�' + message: '韬唤璇佸彿鏍煎紡涓嶆纭�', + trigger: ['blur', 'change'] } ], phone: [{ required: true, - message: '姝ら」涓哄繀濉」', + message: '璇疯緭鍏ユ墜鏈哄彿', // blur鍜宑hange浜嬩欢瑙﹀彂妫�楠� trigger: ['blur', 'change'] }, @@ -242,32 +466,24 @@ validator: (rule, value, callback) => { return uni.$u.test.mobile(value); }, - message: '鎵嬫満鍙风爜涓嶆纭�', + message: '鎵嬫満鍙风爜鏍煎紡涓嶆纭�', trigger: ['change', 'blur'] } ], 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, @@ -285,6 +501,18 @@ trigger: ['change', 'blur'] } ], + cardImg1:{ + type: 'string', + required: true, + message: '璇蜂笂浼犺韩浠借瘉姝i潰', + trigger: ['blur', 'change'] + }, + cardImg2:{ + type: 'string', + required: true, + message: '璇蜂笂浼犺韩浠借瘉鍙嶉潰', + trigger: ['blur', 'change'] + }, carImg: { type: 'string', required: true, @@ -296,20 +524,54 @@ required: true, message: '璇蜂笂浼犺椹惰瘉鐓х墖', trigger: ['blur', 'change'] + }, + driverImg: { + type: 'string', + required: true, + message: '璇蜂笂浼犻┚椹惰瘉鐓х墖', + trigger: ['blur', 'change'] } }, - // 鍩烘湰妗堝垪鏁版嵁 radiolist1: [{ - name: '璐т唬', + name: '鍙告満', disabled: false }, { - name: '鍙告満', + name: '璐т唬', disabled: false } ], - // u-radio-group鐨剉-model缁戝畾鐨勫�煎鏋滆缃负鏌愪釜radio鐨刵ame锛屽氨浼氳榛樿閫変腑 - radiovalue1: '璐т唬', + radiolist2: [{ + text: '鏅�氳繍杈撹溅', + value:1 + }, + { + text: '闆嗚绠卞钩鏉胯溅', + value:2 + }, + { + text: '娑叉隘妲借溅', + value:3 + }, + { + text: '娑茬⒈妲借溅', + value:4 + } + ], + countryNumberCarList: [{ + name: 1, + label: '鍥戒簲', + }, + { + name: 2, + label: '鍥藉叚', + }, + { + name: 3, + label: '鏂拌兘婧�', + } + ], + radiovalue1: '鍙告満', beforeChangeValue: '', // 鏇存崲瑙掕壊寮规 editRoleModelShow: false, @@ -317,7 +579,7 @@ content: '褰撳墠濉叆淇℃伅锛屽垏鎹㈣鑹插悗锛屽嵆娓呴櫎锛屾槸鍚﹀垏鎹紵', wxcode: '', openid: '', - registerClickloading: false + registerClickloading: false, }; }, watch: { @@ -341,45 +603,75 @@ break; } return; - } + }, }, 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) { - this.$refs.regesterFormRef - .validate() - .then(res => { - console.log(this.registerFormModel); - this.registerClickloading = true; - this.registerFormModel.username = this.registerFormModel.phone; - apiRegister(this.registerFormModel) - .then(res => { - this.registerClickloading = false; - if (res.data.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) {}, @@ -442,15 +734,28 @@ url: BaseUrl + '/admin/sys-file/uploadUnToken', filePath: url, name: 'file', - formData: { - // user: '' - }, success: res => { if (num == 1) { this.registerFormModel.carImg = JSON.parse(res.data).data.url; resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); } else if (num == 2) { this.registerFormModel.drivingImg = JSON.parse(res.data).data.url; + resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); + } else if (num == 3) { + this.registerFormModel.driverImg = JSON.parse(res.data).data + .url; + resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); + } else if (num == 4) { + this.registerFormModel.tradeQualificationImg = JSON.parse(res.data) + .data.url; + resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); + }else if(num==5){ + this.registerFormModel.cardImg1 = JSON.parse(res.data) + .data.url; + resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); + }else if(num==6){ + this.registerFormModel.cardImg2 = JSON.parse(res.data) + .data.url; resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); } } @@ -514,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