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 | 210 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 123 insertions(+), 87 deletions(-) diff --git a/pages/index/index.vue b/pages/index/index.vue index 4f1412d..aeeca37 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -1,27 +1,34 @@ <template> <view class="box"> + <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"><b>安全在线教育平台</b></view> + <view class="titleFirst"> + 你好~<br/>欢迎来到危化品全生命周期管理平台</view> </view> <view> <u-form :model="form" ref="uForm" class="form" > - <u-form-item style="width: 75%;"><u-input :customStyle="cstyle" v-model="form.username" placeholder="请输入用户名" /></u-form-item> - <u-form-item style="margin-top: 10px;width: 75%;" ><u-input :customStyle="cstyle" v-model="form.password" 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 class="loginBtn" :loading="isLogining" style="width: 100%;height: 44px" @click="Login" type="primary">登录</u-button> + <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> - <!-- <view style="color: white;margin-top: 150px;">技术支持:技术保障部</view>--> + <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> @@ -29,68 +36,60 @@ import {login,getLastApp} from '../../api/index.js'; import store from '@/store/index.js' import VUE_APP_BASE_URL from '../../common/constant.js' - const jpushModule = uni.requireNativePlugin('JG-JPush') + 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: { username: '', password: '', code: '', uuid: '' }, + isPwd: true, type: '', - //极光推送 - connectStatus: '未连接', - registrationID: '未获得', - isLogining: false, - cstyle: { - background: '#fff', - padding: '10px', - boxShadow: '0 2px 4px rgba(0,0,0,.2),0 -2px 4px rgba(255,255,255,.2),inset 0 2px 4px rgba(0,0,0,.1)', - border: '1px solid #fff' - } + isLogining: false } }, onShow() { 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; // 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; @@ -129,59 +128,66 @@ icon: "none", title: res.message }); - this.form.username = ''; this.form.password = ''; this.isLogining = false; } }).catch(err=>{ - this.form.username = ''; 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 scoped> +<style scoped lang="scss"> .box{ width: 100%; height: 100vh; - background: url('../../static/login.jpg') no-repeat; - background-size: 100% 100%; - background-attachment: fixed;/* 不设置的话页面滑动时,背景会不铺满*/ + background: #f5f5f5; display: flex; flex-direction: column; - justify-content: center; +} + +.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%; - height: 50vh; + margin-top: 24rpx; display: flex; flex-direction: column; justify-content: left; @@ -192,21 +198,28 @@ flex-direction: column; align-items: center; justify-content: center; - text-shadow:0 0 1px #000; } - +.footer{ + width: 100%; + position: fixed; + bottom: 24rpx; + text-align: center; + font-size: 22rpx; + color: #999; +} .titleFirst{ - text-align: center; - font-size: 32px; - letter-spacing: 6px; - color:#fff; - text-shadow: 2px 2px 6px rgba(0,0,0,.1); + 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; } .form{ @@ -214,8 +227,29 @@ display: flex; flex-direction: column; align-items: center; - margin-top: 40px; + 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; @@ -223,10 +257,12 @@ } .loginBtn{ - border: 1px solid rgba(255,255,255,.4); + 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 .25s ease !important; + transition: box-shadow .15s ease !important; + font-size: 30rpx; } .loginBtn:active{ -- Gitblit v1.9.2