feat: 封装了接口请求的工具与获取微信授权码的方法

This commit is contained in:
2025-07-20 20:34:32 +08:00
parent fd287ada91
commit efe578cf0b
7 changed files with 125 additions and 0 deletions

3
constant/base.js Normal file
View File

@@ -0,0 +1,3 @@
const isProd = true
export const BASE_URL = 'http://8.138.234.141/ingress'

17
manager/AuthManager.js Normal file
View File

@@ -0,0 +1,17 @@
export function getWeChatAuthCode() {
return new Promise((resolve, reject) => {
uni.login({
provider: 'weixin',
success: (res) => {
if (res.code) {
resolve(res.code);
} else {
reject(new Error('未获取到微信授权code'));
}
},
fail: (err) => {
reject(err);
}
});
});
}

23
manager/LoginManager.js Normal file
View File

@@ -0,0 +1,23 @@
import { login } from "../request/api/Index";
import { getWeChatAuthCode } from "./AuthManager";
export async function loginAuth() {
try {
const openIdCode = '0f1XVM100D5JCU1BP6400WQQFD2XVM1T'// await getWeChatAuthCode();
console.log('获取到的微信授权code:', openIdCode);
const response = await login({
openIdCode,
grant_type: 'wechat',
scope: 'server',
clientId: '1'
});
if (response.success) {
return response.data;
} else {
throw new Error(response.message || '登录失败');
}
} catch (err) {
throw err;
}
}

View File

@@ -5,6 +5,7 @@
</view> </view>
<button @click="closeDrawer" type="default">关闭</button> <button @click="closeDrawer" type="default">关闭</button>
<button @click="login" type="default">登录</button>
<view class="drawer-list"> <view class="drawer-list">
<view v-for="(item,index) in 100" :key="index"> <view v-for="(item,index) in 100" :key="index">
<text class="message-item">{{item}}</text> <text class="message-item">{{item}}</text>
@@ -17,12 +18,27 @@
<script setup> <script setup>
import { defineEmits } from 'vue' import { defineEmits } from 'vue'
const emits = defineEmits(['closeDrawer']) const emits = defineEmits(['closeDrawer'])
import * as loginMnager from '@/manager/LoginManager'
const closeDrawer = () => { const closeDrawer = () => {
emits('closeDrawer') emits('closeDrawer')
console.log('=============关闭抽屉') console.log('=============关闭抽屉')
} }
const login = () => {
loginMnager.loginAuth()
.then(res => {
console.log('登录成功', res)
// 这里可以处理登录成功后的逻辑,比如保存 token 等
})
.catch(err => {
console.error('登录失败', err)
// 这里可以处理登录失败的逻辑
})
console.log('=============登录')
// 这里可以处理登录逻辑,比如调用登录接口等
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

1
request/api/Index.js Normal file
View File

@@ -0,0 +1 @@
export * from './LoginApi.js'

9
request/api/LoginApi.js Normal file
View File

@@ -0,0 +1,9 @@
import request from "../base/request";
function login(args) {
return request.post('/auth/oauth2/token', args, {
noToken: true,
});
}
export { login }

56
request/base/request.js Normal file
View File

@@ -0,0 +1,56 @@
import { BASE_URL } from "../../constant/base";
const defaultConfig = {
header: {
Authorization: '', // 可在此动态设置 token
'Content-Type': 'application/x-www-form-urlencoded'
},
};
function request(url, args = {}, method = 'POST', customConfig = {}) {
// 判断 url 是否以 http 开头
if (!/^http/.test(url)) {
url = BASE_URL + url;
}
// 动态获取 token
const token = uni.getStorageSync('token');
let header = {
...defaultConfig.header,
...customConfig.header
};
// 判断是否需要 token
if (customConfig.noToken) {
delete header.Authorization;
} else if (token) {
header.Authorization = `Basic ${token}`;
} else {
delete header.Authorization;
}
const config = {
...defaultConfig,
...customConfig,
header
};
return new Promise((resolve, reject) => {
uni.request({
url,
data: args,
method,
...config,
success: (res) => resolve(res.data),
fail: (err) => reject(err)
});
});
}
// 默认 POST
request.post = function(url, args = {}) {
return request(url, args, 'POST');
};
// 支持 GET
request.get = function(url, args = {}) {
return request(url, args, 'GET');
};
export default request;