| 
					
				 | 
			
			
				@@ -1,75 +1,114 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <div class="login"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <!--  --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-form v-if="isFlag" ref="loginFirstRef" :model="loginForm" :rules="loginRules" class="login-form"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <h3 class="title">东航费用台账</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <!-- 步骤一 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item prop="username"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" placeholder="账号"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item prop="password"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <el-input v-model="loginForm.password" type="password" size="large" auto-complete="off" placeholder="密码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    @keyup.enter="handleAllLogin"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item prop="code" v-if="captchaEnabled"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <el-input v-model="loginForm.code" size="large" auto-complete="off" placeholder="验证码" style="width: 63%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    @keyup.enter="handleAllLogin"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class="login-code"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <img :src="codeUrl" @click="getCode" class="login-code-img" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">记住密码</el-checkbox> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <el-button :loading="loading" size="large" type="primary" style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    @click.prevent="handleAllLogin"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    登 录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div style="float: right" v-if="register"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <router-link class="link-type" :to="'/register'">立即注册</router-link> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <!-- 步骤二 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-form v-else ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <h3 class="title">东航费用台账</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item prop="phone"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <el-input v-model="loginForm.phone" type="text" size="large" auto-complete="off" placeholder="手机号" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    :disabled="true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class="flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <el-input v-model="loginForm.code" class="mr10" type="text" size="large" auto-complete="off" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        placeholder="请输入验证码"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        <template #prefix><svg-icon icon-class="validCode" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    </el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <el-button size="large" type="primary" style="width: 30%" @click.prevent="getVerificationCode"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        {{ countdownText }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <el-form-item style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <el-button :loading="loading" size="large" type="primary" style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    @click.prevent="handleEndLogin"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <span v-if="!loading">登 录</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <span v-else>登 录 中...</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<div class="login"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!--  --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<el-form v-if="isFlag" ref="loginFirstRef" :model="loginForm" :rules="loginRules" class="login-form"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<h3 class="title">东航费用台账</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<!-- 步骤一 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item prop="username"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-model="loginForm.username" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					auto-complete="off" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					placeholder="账号" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item prop="password"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-model="loginForm.password" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type="password" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					auto-complete="off" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					placeholder="密码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					@keyup.enter="handleAllLogin" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item prop="code" v-if="captchaEnabled"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-model="loginForm.code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					auto-complete="off" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					placeholder="验证码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					style="width: 63%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					@keyup.enter="handleAllLogin" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="login-code"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<img :src="codeUrl" @click="getCode" class="login-code-img" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">记住密码</el-checkbox> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:loading="loading" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					@click.prevent="handleAllLogin" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					登 录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div style="float: right" v-if="register"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<router-link class="link-type" :to="'/register'">立即注册</router-link> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- 步骤二 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<el-form v-else ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<h3 class="title">东航费用台账</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item prop="phone"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					v-model="loginForm.phone" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					auto-complete="off" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					placeholder="手机号" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:disabled="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						v-model="loginForm.code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						class="mr10" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						auto-complete="off" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						placeholder="请输入验证码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button size="large" type="primary" style="width: 30%" @click.prevent="getVerificationCode"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						{{ countdownText }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form-item style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:loading="loading" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					@click.prevent="handleEndLogin" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<span v-if="!loading">登 录</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<span v-else>登 录 中...</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <!--  底部  --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <!-- <div class="el-login-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!--  底部  --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- <div class="el-login-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script setup lang="ts"> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,18 +123,18 @@ import { ref } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const userStore = useUserStore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const router = useRouter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const loginForm = ref<any>({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    username: 'admin', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    password: 'admin123', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    rememberMe: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    code: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    uuid: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    phone: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	username: 'admin', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	password: 'admin123', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rememberMe: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	code: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	uuid: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	phone: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const loginRules = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    code: [{ required: true, trigger: 'change', message: '请输入验证码' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	code: [{ required: true, trigger: 'change', message: '请输入验证码' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const codeUrl = ref(''); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -114,173 +153,173 @@ const isFlag = ref(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let countdown = ref(60); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const isCountingDown = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const countdownText = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return isCountingDown.value ? `${countdown.value}s 后重新获取` : '获取验证码'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return isCountingDown.value ? `${countdown.value}s 后重新获取` : '获取验证码'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const getVerificationCode = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!isCountingDown.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        await getPhoneCode({ uuid: loginForm.value.uuid }).then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            console.log(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ElMessage.success('验证码发送成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ElMessage.error('验证码发送失败,请稍后重试'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        isCountingDown.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        countdown.value = 60; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const intervalId = setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            countdown.value--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (countdown.value <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                isCountingDown.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                clearInterval(intervalId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, 1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!isCountingDown.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		await getPhoneCode({ uuid: loginForm.value.uuid }).then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.log(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.success('验证码发送成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.error('验证码发送失败,请稍后重试'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		isCountingDown.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		countdown.value = 60; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const intervalId = setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			countdown.value--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (countdown.value <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				isCountingDown.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				clearInterval(intervalId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const publicKey = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const privateKey = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'UP8iWi1Qw0Y='; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	'UP8iWi1Qw0Y='; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // -------------- 获取验证码 倒计时60秒 end ---------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 有下一步的登陆 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const handleNext = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    loginFirstRef.value?.validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            loading.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (loginForm.value.rememberMe) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Cookies.set('username', loginForm.value.username, { expires: 30 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const enPwd = encrypt(loginForm.value.password, publicKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // const enPwd = loginForm.value.password; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (enPwd) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Cookies.set('password', enPwd, { expires: 30 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (loginForm.value.rememberMe) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Cookies.set('rememberMe', String(loginForm.value.rememberMe), { expires: 30 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 否则移除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Cookies.remove('username'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Cookies.remove('password'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Cookies.remove('rememberMe'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 调用action的登录方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userStore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .phoneLogin(loginForm.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    console.log(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // router.push({ path: redirect.value || '/' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    isFlag.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loginForm.value.code = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loginForm.value.uuid = res.uuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loginForm.value.phone = res.phone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 重新获取验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (captchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	loginFirstRef.value?.validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loading.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (loginForm.value.rememberMe) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Cookies.set('username', loginForm.value.username, { expires: 30 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const enPwd = encrypt(loginForm.value.password, publicKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// const enPwd = loginForm.value.password; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (enPwd) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Cookies.set('password', enPwd, { expires: 30 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (loginForm.value.rememberMe) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Cookies.set('rememberMe', String(loginForm.value.rememberMe), { expires: 30 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 否则移除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Cookies.remove('username'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Cookies.remove('password'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Cookies.remove('rememberMe'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 调用action的登录方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			userStore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.phoneLogin(loginForm.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					console.log(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// router.push({ path: redirect.value || '/' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					isFlag.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					loginForm.value.code = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					loginForm.value.uuid = res.uuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					loginForm.value.phone = res.phone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 重新获取验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (captchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 有下一步的最后一步 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const handleEndLogin = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    userStore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .phoneLogin(loginForm.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (res.token) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ElMessage.success('登陆成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                router.push({ path: redirect.value || '/' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ElMessage.error('登陆失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	userStore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.phoneLogin(loginForm.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (res.token) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.success('登陆成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				router.push({ path: redirect.value || '/' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.error('登陆失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 无下一步的登陆 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function handleLogin() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    loginFirstRef.value?.validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            loading.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 调用action的登录方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userStore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .login(loginForm.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    router.push({ path: redirect.value || '/' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 重新获取验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (captchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	loginFirstRef.value?.validate(valid => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loading.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 调用action的登录方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			userStore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.login(loginForm.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					router.push({ path: redirect.value || '/' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					loading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 重新获取验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (captchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 登陆按钮 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const handleAllLogin = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 本地 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // if (env === 'development') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //     handleLogin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //     handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (phoneCaptchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        handleLogin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 本地 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// if (env === 'development') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//     handleLogin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//     handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (phoneCaptchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		handleLogin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 是否有手机号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const phoneCaptchaEnabled = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function getCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getCodeImg().then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        phoneCaptchaEnabled.value = res.phoneCaptchaEnabled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (captchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            codeUrl.value = 'data:image/gif;base64,' + res.img; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            loginForm.value.uuid = res.uuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getCodeImg().then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		phoneCaptchaEnabled.value = res.phoneCaptchaEnabled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (captchaEnabled.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			codeUrl.value = 'data:image/gif;base64,' + res.img; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loginForm.value.uuid = res.uuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function getCookie() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const username = Cookies.get('username'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const password = Cookies.get('password'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const rememberMe = Cookies.get('rememberMe'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // let publicKey = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const username = Cookies.get('username'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const password = Cookies.get('password'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const rememberMe = Cookies.get('rememberMe'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// let publicKey = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // getPublicKey().then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //     publicKey = res.publicKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// getPublicKey().then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//     publicKey = res.publicKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    loginForm.value = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        username: username === undefined ? loginForm.value.username : username, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        password: password === undefined ? loginForm.value.password : decrypt(password, privateKey) || '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // password: password === undefined ? loginForm.value.password : password || '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	loginForm.value = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		username: username === undefined ? loginForm.value.username : username, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		password: password === undefined ? loginForm.value.password : decrypt(password, privateKey) || '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// password: password === undefined ? loginForm.value.password : password || '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 getCode(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -289,73 +328,73 @@ getCookie(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .login { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background-image: url('../assets/images/login-background.jpg'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background-size: cover; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-image: url('../assets/images/login-background.jpg'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background-size: cover; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin: 0px auto 30px auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #707070; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin: 0px auto 30px auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color: #707070; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .login-form { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-radius: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background: #ffffff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 400px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding: 25px 25px 5px 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #ffffff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 400px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 25px 25px 5px 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    .el-input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.el-input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    .input-icon { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        height: 39px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        width: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        margin-left: 0px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.input-icon { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height: 39px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		margin-left: 0px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .login-tip { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 13px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #bfbfbf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 13px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color: #bfbfbf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .login-code { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 33%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    float: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 33%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	float: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        vertical-align: middle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vertical-align: middle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .el-login-footer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    line-height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    position: fixed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    bottom: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-family: Arial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    letter-spacing: 1px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	line-height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	position: fixed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bottom: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-family: Arial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	letter-spacing: 1px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .login-code-img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding-left: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding-left: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </style> 
			 |