From 53dc2bac460d2ff210aa9523717753ae1fd2c159 Mon Sep 17 00:00:00 2001 From: Liuyi <candymxq888@outlook.com> Date: 星期二, 26 十一月 2024 17:27:44 +0800 Subject: [PATCH] 添加运维端首页 --- pages/login/index.vue | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 286 insertions(+), 0 deletions(-) diff --git a/pages/login/index.vue b/pages/login/index.vue new file mode 100644 index 0000000..80a0138 --- /dev/null +++ b/pages/login/index.vue @@ -0,0 +1,286 @@ +<script setup> + import { wxLoginApi,adminLoginApi } from '../../api/index.js' + import { onMounted,ref } from 'vue' + import { BASE_URL } from '../../config/baseUrl.js'; + const baseUrl = ref(BASE_URL) + + const loginType = ref(1) //用户登录选项,1:微信登录,0:管理员登录(账号密码) + function changeLoginType(){ + loginType.value = loginType.value == 1 ? 0 : ( loginType.value == 0 ? 1 : '') + // uni.showToast({ + // title:'该功能正在升级中', + // icon:'none' + // }) + } + //进入页面判断是否存在openid,存在直接跳转首页 + onMounted(() =>{ + if(uni.getStorageSync('openId') && uni.getStorageSync('token')){ + console.log('存在openId,进入首页') + uni.redirectTo({ + url:'/pages/index/index' + }) + } + }) + //用户点击微信登录默认授权 + function wxLogin(){ + // uni.removeStorageSync('openId'); + if(!uni.getStorageSync('openId') || !uni.getStorageSync('token')){ + wx.login({ + success:async (res1)=>{ + //存储微信登录的code,调用后端接口传递code参数,返回openid(也就是userId)存储到本地,通过判断本地是否存在openId,存在表示已登录 + uni.setStorageSync('code',res1.code) + await wxLoginApi({code:res1.code}).then((res2) =>{ + console.log('微信登录响应',res2) + if(res2.code == 200){ + uni.redirectTo({ + url:'/pages/index/index' + }) + uni.setStorageSync('openId',res2.data.userId) + uni.setStorageSync('token',res2.data.token) + }else{ + uni.showToast({ + title:'登录失败', + icon:'none' + }) + } + }) + }, + fail:(e) =>{ + uni.showToast({ + title: '微信登录失败,请退出重试!', + duration: 2000, + icon:'fail' + }); + } + }) + } + } + //管理员登录 + const form = ref({userName:'',password:''}) + const pwdType = ref('password') + function changePwdType(str){ + pwdType.value = str == 'pwd' ? 'text' : ( str == 'text' ? 'password' : 'text') + } + async function adminLogin(){ + // uni.redirectTo({ + // url:'/pages/adminPlatform/home' + // }) + + await adminLoginApi(form.value).then((res) =>{ + console.log('管理员登录响应',res) + if(res.code == 200){ + uni.setStorageSync('maintainId',JSON.stringify(res.data.id)) + uni.setStorageSync('token',res.data.token) + console.log() + uni.redirectTo({ + url:'/pagesAdmin/adminPlatform/home' + }) + } + }) + } +</script> +<template> + <view class="container"> + <view class="content"> + <view class="top"> + <image class="top-bg" :src="baseUrl + '/upload' + '/qingYuan/images/20241126/2f56a2a7ecfd2544dec5978d2687383e.png'" mode="widthFix"></image> + <view class="top--title"> + <image class="logo" src="../../static/images/login/logo.png "></image> + <view class="text">清源直饮水运维平台</view> + </view> + </view> + <view class="login-text"> + <text class="text1">欢迎登录</text> + <text class="text2">Welcome to login</text> + </view> + <view class="login-box"> + <!-- 微信登录 --> + <view v-if="loginType == 1" class="wx-login" @click="wxLogin"> + <text>————— 微信登录 —————</text> + <image class="wx-img" src="../../static/images/login/wx.png"></image> + </view> + <!-- 账号密码登录 --> + <view v-if="loginType == 0" class="admin-login"> + <view class="login-form"> + <text class="form-title">账号密码登录</text> + <view class="form-box"> + <view class="input-box"> + <input class="input" v-model="form.userName" focus placeholder="请输入账号" maxlength="20"/> + </view> + <view class="input-box"> + <input class="input" v-model="form.password" placeholder="请输入密码" maxlength="20" :type='pwdType' /> + <image @click="changePwdType('pwd')" class="eye" v-if="pwdType == 'password'" src="../../static/images/login/close_pwd.png"></image> + <image @click="changePwdType('text')" class="eye" v-if="pwdType == 'text'" src="../../static/images/login/open_pwd.png"></image> + </view> + </view> + <view class="login-btn" @click="adminLogin"> + <view class="btn-text">登 录</view> + </view> + </view> + </view> + </view> + <view class="switch-btn" @click="changeLoginType"> + <text v-if="loginType == 0">切换微信登录</text> + <text v-if="loginType == 1">切换管理员登录</text> + <image class="switch-to" src="../../static/images/login/switchto.svg"></image> + </view> + </view> + </view> +</template> + +<style lang="scss" scoped> + .container{ + height:100vh; + width:100%; + background-size:auto; + .content{ + position: relative; + width:100%; + height:100%; + background: linear-gradient( rgba(227, 243, 255, 1) 0%, rgba(228, 252, 254, 1) 50%,rgba(227, 252, 254, 1) 100%); + .top{ + width:100%; + display: flex; + justify-content: center; + align-items: center; + height:450rpx; + position: relative; + z-index:1; + // background-size:100% auto; + // background-repeat: no-repeat; + // background-position:top; + .top-bg{ + width:100%; + position: absolute; + top:0; + } + .top--title{ + display: flex; + justify-content: center; + align-items: center; + z-index:2; + .logo{ + width:80rpx; + height:80rpx; + margin-right:40rpx; + } + .text{ + font-size:50rpx; + color:rgba(255, 255, 255, 0.9); + letter-spacing:8rpx; + } + } + } + .login-text{ + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + .text1{ + color: #345DB1; + font-size: 56rpx; + } + .text2{ + font-family: Roboto, Roboto; + font-weight: 400; + font-size: 36rpx; + color: #9AB6DD; + margin-top:30rpx; + } + } + .login-box{ + margin-top: 20rpx; + width:100%; + .wx-login{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + font-size:30rpx; + color: #88a3c5; + margin-top:120rpx; + .wx-img{ + margin-top:50rpx; + width: 100rpx; + height: 100rpx; + border-radius:50%; + } + } + .admin-login{ + width:75%; + height:600rpx; + // background: rgba(255,255,255,1); + margin: 0 auto; + padding: 32rpx ; + border-radius:20rpx; + box-shadow:0 0 10rpx 1rpx rgba(99, 145, 230, 0.3); + margin-top:60rpx; + .login-form{ + width:100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + .form-title{ + color: #4475b1; + font-size:38rpx; + letter-spacing: 2rpx; + } + .form-box{ + width:100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + .input-box{ + display: flex; + justify-content: space-between; + align-items: center; + border-bottom:2rpx solid rgba(99, 145, 230, 0.7); + margin-top:100rpx; + height:80rpx; + width:85%; + .input{ + width:75%; + } + .eye{ + width: 80rpx; + height: 40rpx; + } + } + } + .login-btn{ + margin-top:100rpx; + display: flex; + justify-content: center; + .btn-text{ + width: 160rpx; + height: 65rpx; + background-color: #4175d5; + border-radius: 15rpx; + text-align: center; + line-height: 65rpx; + color: #fff; + } + } + } + } + } + .switch-btn{ + position: absolute; + display: flex; + justify-content: center; + align-items: center; + color: #4d77cc; + font-size:30rpx; + bottom:200rpx; + left:50%; + transform: translate(-50%); + .switch-to{ + width:28rpx; + height: 28rpx; + } + } + } + } +</style> -- Gitblit v1.9.3