personnel_management_mobile/pages/loading/index.vue

164 lines
3.9 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 空白loading页 -->
<view class="loading-container">
<view class="loading-text">正在登录中请稍候...</view>
</view>
</template>
<script>
import {
login
} from '@/api/login.js'
export default {
onLoad(options) {
// 页面加载 → 自动执行流程
this.getToken()
this.autoLogin(options)
},
methods: {
getToken() {
return new Promise((resolve, reject) => {
uni.request({
url: '/epoint-web-cs/rest/oauth2/token',
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
},
data: {
client_id: '316f983b-2b93-4c57-b912-c00e05aceed2', // 你接口需要的参数名
client_secret: 'cd2cf239-1506-47bb-9b63-507b6b759a06',
grant_type: 'password',
platform: 'mobile',
username: '马贤宝',
password: 'Epoint@123',
// 其他需要的参数继续加
},
success: (res) => {
const data = res.data
console.log(data, 'data')
// 接口返回成功判断(根据接口标准结构)
if (data.status.code === 1) {
resolve(data.custom) // 返回用户信息name, phone, idCard
} else {
reject(new Error(data.status.text || '获取用户信息失败'))
}
}
})
})
},
/**
* 自动登录流程
*/
async autoLogin(options) {
try {
// 1. 从URL获取token
const token = options.token
if (!token) {
uni.showToast({
title: '未获取到登录凭证',
icon: 'none'
})
return
}
// 2. 使用token 请求【获取用户信息接口】
const userInfo = await this.getUserInfo(token)
// 4. 执行你系统的登录逻辑(保存信息)
this.doLocalLogin(userInfo)
// 5. 登录成功 → 跳首页
// uni.switchTab({
// url: '/pages/home/home' // 你的首页路径
// })
} catch (err) {
console.error('登录失败:', err)
uni.showToast({
title: err.message || '登录失败,请重试',
icon: 'none',
duration: 3000
})
}
},
/**
* 请求接口:获取用户信息(你给的正式接口)
* @param {string} token
*/
getUserInfo(token) {
return new Promise((resolve, reject) => {
let url = '/epoint-web-cs/rest/wechatloginrest/getuserinfo'
// if (process.env.NODE_ENV === 'development') {
// // 开发环境接口地址
// url = 'epoint-web-cs/rest/wechatloginrest/getuserinfo'
// } else if (process.env.NODE_ENV === 'production') {
// // 正式环境接口地址
// url = 'epoint-web/rest/wechatloginrest/getuserinfo'
// }
uni.request({
url: url,
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'authorization': 'Bearer ' + token // 按接口要求携带token
},
success: (res) => {
const data = res.data
// 接口返回成功判断(根据接口标准结构)
if (data.status.code === 1) {
resolve(data.custom) // 返回用户信息name, phone, idCard
} else {
reject(new Error(data.status.text || '获取用户信息失败'))
}
}
})
})
},
/**
* 你系统本地登录缓存token + 用户信息
*/
doLocalLogin(userInfo) {
login({
// username: userInfo.idnumber,
username: userInfo.mobile,
grant_type: "third"
})
.then(data => {
this.$u.func.login(data, '/pages/home/home')
})
.catch(err => {
this.$u.func.showToast({
title: '用户名或密码错误'
})
})
}
}
}
</script>
<style scoped>
.loading-container {
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #fff;
}
.loading-text {
font-size: 28rpx;
color: #666;
}
</style>