diff --git a/constant/base.js b/constant/base.js
new file mode 100644
index 0000000..f9ea3a1
--- /dev/null
+++ b/constant/base.js
@@ -0,0 +1,3 @@
+const isProd = true
+
+export const BASE_URL = 'http://8.138.234.141/ingress'
\ No newline at end of file
diff --git a/manager/AuthManager.js b/manager/AuthManager.js
new file mode 100644
index 0000000..777f8bc
--- /dev/null
+++ b/manager/AuthManager.js
@@ -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);
+ }
+ });
+ });
+}
\ No newline at end of file
diff --git a/manager/LoginManager.js b/manager/LoginManager.js
new file mode 100644
index 0000000..0cb64d6
--- /dev/null
+++ b/manager/LoginManager.js
@@ -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;
+ }
+}
diff --git a/pages/drawer/DrawerHome.vue b/pages/drawer/DrawerHome.vue
index 1142454..d9fe506 100644
--- a/pages/drawer/DrawerHome.vue
+++ b/pages/drawer/DrawerHome.vue
@@ -5,6 +5,7 @@
+
{{item}}
@@ -17,11 +18,26 @@
diff --git a/request/api/Index.js b/request/api/Index.js
new file mode 100644
index 0000000..5134db7
--- /dev/null
+++ b/request/api/Index.js
@@ -0,0 +1 @@
+export * from './LoginApi.js'
\ No newline at end of file
diff --git a/request/api/LoginApi.js b/request/api/LoginApi.js
new file mode 100644
index 0000000..58bd352
--- /dev/null
+++ b/request/api/LoginApi.js
@@ -0,0 +1,9 @@
+import request from "../base/request";
+
+function login(args) {
+ return request.post('/auth/oauth2/token', args, {
+ noToken: true,
+ });
+}
+
+export { login }
\ No newline at end of file
diff --git a/request/base/request.js b/request/base/request.js
new file mode 100644
index 0000000..2ef7b58
--- /dev/null
+++ b/request/base/request.js
@@ -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;
\ No newline at end of file