From 9d5b4d650e5b01081d3537c750e7469db4d161e3 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 29 四月 2025 08:53:20 +0800
Subject: [PATCH] 提交

---
 pages/index/index.vue |  317 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 198 insertions(+), 119 deletions(-)

diff --git a/pages/index/index.vue b/pages/index/index.vue
index dab79d2..aeeca37 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,82 +1,97 @@
 <template>
 	<view class="box">
-		<view class="header">
-			<view class="titleFirst"><b>新疆维吾尔自治区自然灾害综合监测预警</b></view>
-			<view class="titleSecond"><b>自然灾害综合风险预警发布及响应联动系统</b></view>
-		</view>
-		<view>	
-			<u-form :model="form" ref="uForm" class="form" >
-				<u-form-item style="width: 75%;"><u-input color="#fff" v-model="form.name" placeholder="请输入用户名"  /></u-form-item>
-				<u-form-item style="margin-top: 10px;width: 75%;" ><u-input color="#fff" v-model="form.pwd" type="password" placeholder="请输入密码"  /></u-form-item>
-				<!-- <view class="loginPsw">
-				       <u-checkbox-group >
-							<u-checkbox disabled="true"></u-checkbox><text style="color: #fff;">自动登录</text>
-				       </u-checkbox-group>
-				        <text style="color: lightblue;">忘记密码</text>
-				</view> -->
-				<u-form-item style="margin-top: 10px;width: 75%;">
-					<u-button :loading="isLogining" type="primary" style="width: 100%;" @click="Login">登录</u-button>
-					</u-form-item>
-				<view style="color: white;margin-top: 150px;">技术支持:中国科学院</view>
-			</u-form>
-		</view>
+    <view class="topContainer">
+      <image :src="loginTop" class="topImg" mode="widthFix"></image>
+      <image :src="loginPic" class="topPic" mode="widthFix"></image>
+    </view>
+
+    <view class="main">
+      <view class="header">
+        <view class="titleFirst">
+          你好~<br/>欢迎来到危化品全生命周期管理平台</view>
+      </view>
+      <view>
+        <u-form :model="form" ref="uForm" class="form" >
+          <u-form-item style="width: 80%;"><u-input v-model="form.username" :class="{'isFocused': userFocused}" placeholder="请输入用户名" @focus="focusUser"/></u-form-item>
+          <u-form-item style="margin-top: 10px;width: 80%;" >
+            <u-input v-model="form.password" :class="{'isFocused': codeFocused}" :password="isPwd" placeholder="请输入密码" @focus="focusCode">
+              <template slot="suffix">
+                <u-icon :name="isPwd?'eye':'eye-off'" color="#999" size="20" @click="isPwd = !isPwd"></u-icon>
+              </template>
+            </u-input>
+          </u-form-item>
+          <u-form-item style="margin-top: 10px;width: 80%;">
+            <u-button class="loginBtn" :loading="isLogining" style="width: 100%;height: 56px;border-radius: 28px" @click="Login" type="primary">登录</u-button>
+          </u-form-item>
+        </u-form>
+      </view>
+    </view>
+    <view class="footer">
+      当前版本:1.2
+    </view>
 	</view>
 </template>
 
 <script>
-	import {login} from '../../api/index.js';
+	import {login,getLastApp} from '../../api/index.js';
 	import store from '@/store/index.js'
-	const jpushModule = uni.requireNativePlugin('JG-JPush')
+	import VUE_APP_BASE_URL from '../../common/constant.js'
+  import loginTop from '../../static/loginBg.png'
+  import loginPic from '../../static/loginPic.png'
 	export default {
 		data() {
 			return {
+        loginTop: loginTop,
+        loginPic: loginPic,
+        userFocused: false,
+        codeFocused: false,
 				form: {
-					name: '',
-					pwd: '',
-					registrationId: ''
+					username: '',
+					password: '',
+          code: '',
+          uuid: ''
 				},
+        isPwd: true,
 				type: '',
-				//极光推送
-				connectStatus: '未连接',
-				registrationID: '未获得',
 				isLogining: false
 			}
 		},
 		onShow() {
-			console.log("数据",uni.getStorageSync('name'))
 			if(uni.getStorageSync('name') && uni.getStorageSync('pwd')){
-				// this.form.name = uni.getStorageSync('name');
-				// this.form.pwd = uni.getStorageSync('pwd');
-				if(uni.getStorageSync('roleName') == '工作人员'){
-					this.$store.commit('setRoleId', 'user_other');
-					uni.switchTab({
-					     url: '/pages/tabBar/notice/notice'
-					  });
-				}else if (uni.getStorageSync('roleName') == '管理员'){
-					this.$store.commit('setRoleId', '');
-					uni.showToast({
-						icon: "none",
-						title: '管理员请使用平台登录'
-					});
-				}else{
-					this.$store.commit('setRoleId', 'user_leader');
-					uni.switchTab({
-                        url: '/pages/tabBar/firstPage/firstPage'
-                    });
-				}
 			}else{
 				uni.clearStorageSync();
 				uni.clearStorage();
 			}
 		},
 		onLoad() {
-			// this.connect()
 		},
 		methods: {
+      base64Encode(str) {
+        return btoa(unescape(encodeURIComponent(str)));
+      },
 			Login(){
+        if(this.form.username == ''){
+          uni.showToast({
+            title: '请输入用户名',
+            duration: 1000
+          })
+          return
+        }
+        if(this.form.password == ''){
+          uni.showToast({
+            title: '请输入密码',
+            duration: 1000
+          })
+          return
+        }
 				this.isLogining = true;
-				login(this.form).then(res => {
-					if (res.code === 100) {
+        // this.form.password = this.base64Encode(this.form.password)
+        const {username,password,code,uuid} = this.form
+        const data = {username,password,code,uuid}
+        data.password = this.base64Encode(data.password)
+        uni.removeStorageSync('tk');
+				login(data).then(res => {
+					if (res.code === 200) {
 						this.isLogining = false;
 						 //登录成功后
 						 //设置别名
@@ -84,112 +99,176 @@
 						// 	'alias': this.phone,
 						// 	'sequence': 1
 						// })
-						uni.setStorageSync("name", this.form.name);
-						uni.setStorageSync("pwd", this.form.pwd);
-						uni.setStorageSync("tk", res.data.tk);
-						uni.setStorageSync("uid",res.data.uid);
+						uni.setStorageSync("name", this.form.username);
+						uni.setStorageSync("pwd", this.form.password);
+						uni.setStorageSync("tk", res.data.token);
+						uni.setStorageSync("uid",res.data.id);
 						uni.setStorageSync('user', res.data);
-						uni.setStorageSync('unittype',res.data.unittype);
-						uni.setStorageSync('roleName', res.data.role.roleName);
-						if(res.data.role.roleName == '工作人员'){
-							this.$store.commit('setRoleId', 'user_other');
-							uni.switchTab({
-							     url: '/pages/tabBar/notice/notice'
-							  });
-						}else if (res.data.role.roleName == '管理员'){
-							this.$store.commit('setRoleId', '');
-							uni.showToast({
-								icon: "none",
-								title: '管理员请使用平台登录'
-							});
-						}else{
+						// uni.setStorageSync('unittype',res.data.unittype);
+						// uni.setStorageSync('roleName', res.data.role.roleName);
+		// 				if(res.data.role.roleName == '工作人员'){
+		// 					this.$store.commit('setRoleId', 'user_other');
+		// 					uni.switchTab({
+		// 					     url: '/pages/tabBar/notice/notice'
+		// 					  });
+		// 				}else if (res.data.role.roleName == '管理员'){
+		// 					this.$store.commit('setRoleId', '');
+		// 					uni.showToast({
+		// 						icon: "none",
+		// 						title: '管理员请使用平台登录'
+		// 					});
+		// 				}else{
 							this.$store.commit('setRoleId', 'user_leader');
 							uni.switchTab({
-		                        url: '/pages/tabBar/firstPage/firstPage'
-		                    });
-						}
+                url: '/pages/tabBar/firstPage/firstPage'
+              })
+		// 				}
 					}else{
 						uni.showToast({
 							icon: "none",
-							title: res.msg
+							title: res.message
 						});
-						this.form.name = '';
-						this.form.pwd = '';
+						this.form.password = '';
 						this.isLogining = false;
 					}
 				}).catch(err=>{
-					this.form.name = '';
-					this.form.pwd = '';
+          this.form.password = '';
 					this.isLogining = false;
 				})
 			},
-			connect() {
-				uni.$on('connectStatusChange', (connectStatus) => {
-					var connectStr = ''
-					if (connectStatus == true) {
-						connectStr = '已连接'
-						this.getRegistrationID()
-					} else {
-						connectStr = '未连接'
-					}
-					console.log('监听到了连接状态变化 --- ', connectStr)
-					this.connectStatus = connectStr
-				})
-			},
-			//获取推送ID
-			getRegistrationID() {
-				jpushModule.getRegistrationID(result => {
-					let registerID = result.registerID
-					console.log('registerID',registerID)
-					this.registrationID = registerID
-					this.form.registrationId = registerID;
-					uni.setStorageSync('registrationID', registerID);
-					console.log("iddd",uni.getStorageSync('registrationID'))
-				})
-			}
+
+
+      focusUser(){
+        this.userFocused = true
+        this.codeFocused = false
+      },
+      focusCode(){
+        this.codeFocused = true
+        this.userFocused = false
+      }
 		}
 	}
 </script>
 
-<style>
+<style scoped lang="scss">
 .box{
 	width: 100%;
 	height: 100vh;
-	background: url('../../static/shu.jpg') no-repeat;
-	background-size: 100% 100%;
-	background-attachment: fixed;/* 不设置的话页面滑动时,背景会不铺满*/
+  background: #f5f5f5;
 	display: flex;
 	flex-direction: column;
 }
-.titleFirst{
-	text-align: center;
-	font-size: 18px;
-	color:#fff;
+
+.topContainer {
+  position: relative; /* 新增容器,并设置相对定位 */
+  width: 100%;
 }
+
+.topImg{
+  width: 100%;
+}
+.topPic{
+  width: 80%;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  animation: float 3s ease-in-out infinite;
+}
+
+@keyframes float {
+  0%, 100% {
+    transform: translate(-50%, -50%)
+  }
+  50% {
+    transform: translate(-50%, calc(-50% + 15rpx))
+  }
+}
+
+.main{
+  width: 100%;
+  margin-top: 24rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: left;
+}
+
+.header {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+.footer{
+  width: 100%;
+  position: fixed;
+  bottom: 24rpx;
+  text-align: center;
+  font-size: 22rpx;
+  color: #999;
+}
+.titleFirst{
+  width: 80%;
+	font-size: 34rpx;
+  line-height: 1.5;
+  font-weight: bold;
+  letter-spacing: 2px;
+	color: #333;
+}
+
 .titleSecond{
 	text-align: center;
 	font-size: 19px;
-	color:#fff;
+	color: #fff;
 	margin-top: 10px;
-}
-.header {
-	display: flex;
-	flex-direction: column;
-	align-items: center;
-	justify-content: center;
-	padding-top:100px;
-	text-shadow:0 0 1px #000;
 }
 .form{
 	width: 100%;
 	display: flex;
 	flex-direction: column;
 	align-items: center;
-	margin-top: 25%;
+  margin-top: 40rpx;
 }
+
+.u-input{
+  border-color: #f5f5f5 !important;
+  border-radius: 99px;
+  background: #f5f5f5;
+  padding: 15px 20px !important;
+  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1)!important;
+  transition: box-shadow .1s ease !important;
+
+  &:active{
+    box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.1) inset !important;
+  }
+}
+
+.isFocused{
+  background: #fff;
+  border-width: 2px !important;
+  border-color: #fff !important;
+  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.1) inset !important;
+}
+
 .loginPsw{
 	margin-bottom: 20px;
 	display: flex;
 	justify-content: space-between;
 }
+
+.loginBtn{
+  border: 2px solid rgba(255,255,255,.8);
+  letter-spacing: 10px;
+  box-shadow: 0 2px 4px rgba(0,0,0,.2);
+  background-image: linear-gradient(#41a2ff,#0f7ff9);
+  transition: box-shadow .15s ease !important;
+  font-size: 30rpx;
+}
+
+.loginBtn:active{
+  box-shadow: 0 2px 4px rgba(0,0,0,0);
+  background-image: linear-gradient(#0f7ff9,#41a2ff);
+}
+
+
 </style>

--
Gitblit v1.9.2