From ea7457be6870e35cd385e163ca9bba26d7621d66 Mon Sep 17 00:00:00 2001
From: yangan <yangan0921@163.com>
Date: 星期四, 27 二月 2025 17:08:06 +0800
Subject: [PATCH] feat:无人值守h5增加门卫端

---
 pages/login/userPassword.vue |  309 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 236 insertions(+), 73 deletions(-)

diff --git a/pages/login/userPassword.vue b/pages/login/userPassword.vue
index 92bd04f..31d12eb 100644
--- a/pages/login/userPassword.vue
+++ b/pages/login/userPassword.vue
@@ -2,100 +2,263 @@
 	<view>
 		<view class="list">
 			<view class="list-call">
-				<u--input
-					v-model="username"
+				<!--  #ifdef MP-WEIXIN  -->
+				<u--input v-model="username"
 					clearable
 					maxlength="32"
 					type="text"
-					placeholder="璇疯緭鍏ョ敤鎴峰悕"
+					placeholder="璇疯緭鍏ユ墜鏈哄彿"
 					prefixIcon="account"
-					prefixIconStyle="font-size: 22px;color: #909399"
-				></u--input>
+					prefixIconStyle="font-size: 22px;color: #909399"></u--input>
+					<!--  #endif  -->
+					  <!--  #ifdef H5  -->
+				<customPagination
+						style="width:100%; height: 60rpx;  font-size: 30rpx;"
+						:options="userList"
+						:value="username"
+						v-model="username"
+						@changeInput="changeInput2"
+						@input="handleInput2"
+						:placeholder="'璇疯緭鍏ョ櫥褰曡处鍙�'"
+					></customPagination>
+					<!--  #endif  -->
 			</view>
+				
 			<view class="list-call">
-				<u--input
-					v-model="password"
+				<u--input v-model="password"
 					clearable
 					maxlength="32"
 					type="password"
 					placeholder="璇疯緭鍏ュ瘑鐮�"
 					prefixIcon="lock"
-					prefixIconStyle="font-size: 22px;color: #909399"
-				></u--input>
+					prefixIconStyle="font-size: 22px;color: #909399"></u--input>
 			</view>
 		</view>
-		<view class="loginBtn"><u-button type="primary" text="鐧诲綍" @click="submit()"></u-button></view>
+		<!-- 璁颁綇瀵嗙爜 -->
+		 <!--  #ifdef H5  -->
+		<view class="jizhu">
+			<view>
+				<u-checkbox-group
+         	v-model="isJizhu"
+            placement="column"
+            @change="checkboxChange"
+        >
+			<u-checkbox
+			:checked="isChecked"
+			label="璁颁綇瀵嗙爜" :size='35' :iconSize="35" :labelSize="30" name="1"
+			placement="row">
+		</u-checkbox>
+		</u-checkbox-group>
+	</view>
+		</view>
+			<!--  #endif  -->
+		<view class="loginBtn"><u-button type="primary"
+				:text="btnText == 1 ? '缁戝畾' : '鐧诲綍'"
+				@click="submit()"
+				:loading="submitLoading"></u-button></view>
 	</view>
 </template>
 
 <script>
-import { apiLoginPassword } from '@/api/publicInterface.js';
-import { mapMutations } from 'vuex';
-import { setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome } from '@/utils/status.js';
-export default {
-	name: 'userPassword',
-	data() {
-		return {
-			// username: 'appUser',
-			// username:'siJi1',
-			username:'siJi2',
-			password: '123456',
-			remember: true,
-			baseUrl: ''
-		};
-	},
-	methods: {
-		...mapMutations(['setUserTabbar']),
-		//鐧诲綍
-		async submit() {
-			//琛ㄥ崟鏍¢獙
-			if (this.username.length === 0) {
-				this.$u.toast('璇疯緭鍏ヨ处鍙�');
-				return;
+	import { apiLoginPassword } from '@/api/publicInterface.js';
+	import { mapMutations } from 'vuex';
+    import customPagination from './user.vue'
+	import { setName, setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome } from '@/utils/status.js';
+	export default {
+		name: 'userPassword',
+		props: {
+			//0:姝e父锛�1锛氬井淇$粦瀹�
+			btnText: {
+				type: Number,
+				default: 0
+			},
+			userList: {
+				type: Array,
+				default: () => {
+					return [];
+				}
 			}
-			if (this.password.length === 0) {
-				this.$u.toast('璇疯緭鍏ュ瘑鐮�');
-				return;
-			}
-			let grant_type = 'password'
-			//鐧诲綍鎺ュ彛
-			await apiLoginPassword({
-				username: this.username,
-				password: this.password,
-				grant_type,
-				scope: 'server'
-			})
-				.then(res => {
-					this.$u.toast('鎭枩鎮紝鐧诲綍鎴愬姛锛�');
-					
-					// 鐧婚檰鎴愬姛锛屽瓨鍌ㄧ浉鍏充俊鎭�
-					setToken(res.access_token);
-					setRefreshToken(res.refresh_token);
-					setUsernameKey(res.username);
-					
-					//鏌ヨ鐢ㄦ埛璇︾粏淇℃伅骞跺偍瀛�
-					this.$reqGet('getUserEntity').then(res => {
-						this.setUserTabbar(res.data.type);
-						uni.setStorageSync('roleType', res.data.type);
-						setCustomerId(res.data.customerid);
-						
-						//璺宠浆椤甸潰
-						this.$nextTick(() => {
-							redirectHome();
-						});
-					});
-				})
-				.catch(e => {
-					this.$u.toast(e);
+		},
+		components: {
+			customPagination
+		},
+		data() {
+			return {
+				username: '', // 瀹㈡埛
+				// username:'13333333331',//璐т唬
+				// username: '13333333332',// 鍙告満
+				password: '',
+				isChecked:false,
+				remember: true,
+				isJizhu: uni.getStorageSync('remberPassWord').username  ? ['1'] : false,
+				username: uni.getStorageSync('remberPassWord').username || '',//鎵胯繍鍟�
+				password: uni.getStorageSync('remberPassWord').password || '',
+				baseUrl: '',
+				weXinisLoginFlag:[1,2,3], //寰俊
+				H5IsLoginFlag:[5,6,7], //h5
+				submitLoading: false
+			};
+		},
+		methods: {
+			...mapMutations(['setUserTabbar']),
+			//鐧诲綍
+			async submit() {
+				uni.showLoading({
+					title: '鐧诲綍涓�...'
 				});
+				//琛ㄥ崟鏍¢獙
+				if (this.username.length === 0) {
+					this.$u.toast('璇疯緭鍏ヨ处鍙�');
+					return;
+				}
+				if (this.password.length === 0) {
+					this.$u.toast('璇疯緭鍏ュ瘑鐮�');
+					return;
+				}
+				let grant_type = 'password';
+				//鐧诲綍鎺ュ彛
+				this.submitLoading = true
+				await apiLoginPassword({
+						username: this.username,
+						password: this.password,
+						grant_type,
+						scope: 'server'
+					})
+					.then(res => {
+						this.submitLoading = false
+						setToken(res.access_token);
+						setRefreshToken(res.refresh_token);
+						if (this.btnText == 0) {
+							this.submitLoading = false
+							if (res.code != 1) {
+								// 鐧婚檰鎴愬姛锛屽瓨鍌ㄧ浉鍏充俊鎭�
+								setToken(res.access_token);
+								setRefreshToken(res.refresh_token);
+								setUsernameKey(res.username);
+								//鏌ヨ鐢ㄦ埛璇︾粏淇℃伅骞跺偍瀛�
+								this.$reqGet('getUserEntity')
+									.then(res => {
+							
+								// #ifdef H5
+								if(this.weXinisLoginFlag.includes(res.data.type)) {
+									console.log('瑙﹀彂鐧诲綍瑙掕壊')
+									this.$u.toast('褰撳墠瑙掕壊璇峰墠寰�灏忕▼搴忕櫥褰�')
+									return ;
+
+								}
+								//#endif
+                    this.$u.toast('鐧诲綍鎴愬姛');
+					// #ifdef H5
+					if(this.isJizhu.length){ //璁颁綇瀵嗙爜
+							uni.setStorageSync('remberPassWord',{
+									username: this.username,
+									password: this.password,
+										});
+										}else{
+										uni.setStorageSync('remberPassWord',{
+												username: this.username,
+												password: '',
+											});
+										}
+										//#endif	
+					this.submitLoading = false
+					this.getLoginInfo(); // 璁板綍鐧诲綍淇℃伅
+                    this.setUserTabbar(res.data.type);
+                    uni.setStorageSync('roleType', res.data.type);
+                    uni.setStorageSync("userId", res.data.userId)
+                    uni.setStorageSync("carNo", res.data.carNo)
+					uni.setStorageSync("userInfo", res.data)
+                    setCustomerId(res.data.customerid);
+                    setName(res.name);
+					let data=uni.getStorageSync('userList')?JSON.parse(uni.getStorageSync('userList')):[];
+					let id = data.length + 1;
+				    if (data.filter(item=> item.username == this.username).length == 0){
+				     data.push({username: this.username,password: this.password,type:res.data.type})
+					}
+					uni.setStorageSync("userList", JSON.stringify(data))
+                    uni.hideLoading();
+                    if(res.data.forcePassword == 1) {
+                      uni.navigateTo({
+                        url: '/pages/login/resetPassword/resetPassword'
+                      })
+                    }else {
+                      //璺宠浆椤甸潰
+                      this.$nextTick(() => {
+                        redirectHome();
+                      });
+                    }
+									})
+									.catch(err => {
+										this.submitLoading = false
+										this.$u.toast('鐧诲綍寮傚父锛�');
+										console.log(err);
+									});
+							} else {
+								uni.hideLoading();
+								this.$u.toast(res.msg);
+							}
+						} else {
+							console.log('寰俊缁戝畾锛燂紵锛燂紵锛�')
+							uni.login({
+								success: res => {
+									if (res.code) {
+										uni.setStorageSync('bindcode', res.code);
+									}
+									if (uni.getStorageSync('bindcode')) {
+								this.$reqPost('wxBind', { state: 'MINI', code: uni.getStorageSync('bindcode') },
+									'params').then(res => {
+									uni.hideLoading();
+									if (res.code == 0) {
+										this.$u.toast('缁戝畾鎴愬姛锛佸嵆灏嗗洖鍒扮櫥褰曢〉锛�');
+										setTimeout(() => {
+											uni.navigateBack();
+										}, 1000);
+									} else {
+										this.$u.toast(res.msg ? res.msg : '缁戝畾澶辫触');
+									}
+								}).finally(() => {
+									this.submitLoading = false;
+								});
+							}
+								}
+							});
+							this.submitLoading = false
+						
+						}
+					}).catch(e => {
+						this.submitLoading = false
+						this.$u.toast(e);
+					});
+
+			},
+			//璁板綍鐧诲綍淇℃伅
+			getLoginInfo(){
+				this.$reqPost('setApplogonTime').then((res) => {
+				  	
+				})
+			},
+			checkboxChange(val){
+				console.log(val,'isJz')
+			}
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
-@import 'index.scss';
-.dengluBtn {
-	margin-top: 80rpx;
-}
+  /* #ifdef H5 */
+  .loginBtn{
+    width: 80%;
+    margin: 0 auto;
+  }
+  /* #endif */
+	@import 'index.scss';
+
+	.dengluBtn {
+		margin-top: 80rpx;
+	}
+	.jizhu{
+	padding: 40rpx 70rpx 40rpx 70rpx;
+	display: flex;
+    justify-content: flex-end;
+  }
 </style>

--
Gitblit v1.9.1