From e50e03dcc682db11d8388d498e014fdf4a60d0d6 Mon Sep 17 00:00:00 2001 From: Leo_Ding <2405260743@qq.com> Date: Mon, 12 Jan 2026 18:29:32 +0800 Subject: [PATCH] 111 --- .env.dev | 2 +- src/apis/home.ts | 8 +- src/components/sidebar.vue | 14 +- src/utils/index.ts | 39 ++- src/views/admin/account/accountSet/index.vue | 320 ++++++++---------- .../admin/account/cost/myMoney/index.vue | 269 +++++++-------- .../admin/account/realnameAuth/index.vue | 21 +- src/views/admin/index.vue | 71 ++-- src/views/admin/instance/index.vue | 2 +- 9 files changed, 364 insertions(+), 382 deletions(-) diff --git a/.env.dev b/.env.dev index a715d52..2169dad 100644 --- a/.env.dev +++ b/.env.dev @@ -2,5 +2,5 @@ NODE_ENV=development # api -VITE_API_BASIC="http://10.10.1.35:8888" +VITE_API_BASIC="http://10.10.1.32:8888" diff --git a/src/apis/home.ts b/src/apis/home.ts index 89918d4..f7c85b5 100644 --- a/src/apis/home.ts +++ b/src/apis/home.ts @@ -21,4 +21,10 @@ export const getMyCouponTotal = () => request.get('/v1/voucher/voucher_value') export const getRecommendList = () => request.get('/v1/voucher/voucher_list') //获取消息列表 -export const getMessageList = (params:any) => request.get('/v1/message/message_list', { params }) \ No newline at end of file +export const getMessageList = (params:any) => request.get('/v1/message/message_list', { params }) + +//验证码合法性 +export const CodeAuth=(params:any)=>request.put("/v1/auth/update_password_auth",params) + +//提现 +export const tixian=(params:any)=>request.put("/v1/balance/withdraw",params) \ No newline at end of file diff --git a/src/components/sidebar.vue b/src/components/sidebar.vue index 964eaed..59496e9 100644 --- a/src/components/sidebar.vue +++ b/src/components/sidebar.vue @@ -57,12 +57,7 @@ interface MenuItem { } const menuItems: MenuItem[] = [ - { path: '/controlPanel/overview', name: '总览', icon: HomeOutlined }, - { path: '/controlPanel/container', name: '容器实例', icon: ConsoleSqlOutlined }, - // { path: '/controlPanel/fileStore', name: '文件存储', icon: FolderOpenOutlined }, - { path: '/controlPanel/image', name: '镜像', icon: GlobalOutlined }, - { path: '/controlPanel/publicData', name: '公开数据', icon: LaptopOutlined }, - { + { path: '/contract', name: '费用中心', icon: MoneyCollectOutlined, @@ -80,7 +75,12 @@ const menuItems: MenuItem[] = [ { path: '/accountHistory', name: '访问记录' }, // { path: '/controlPanel/account/security', name: '安全设置' } ] - } + }, + { path: '/controlPanel/container', name: '容器实例', icon: ConsoleSqlOutlined }, + // { path: '/controlPanel/fileStore', name: '文件存储', icon: FolderOpenOutlined }, + { path: '/controlPanel/image', name: '镜像', icon: GlobalOutlined }, + { path: '/controlPanel/publicData', name: '公开数据', icon: LaptopOutlined }, + ] const selectedKeys = computed(() => [route.path]) diff --git a/src/utils/index.ts b/src/utils/index.ts index 03612ca..05b7a64 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,17 +1,19 @@ // src/utils/request.ts -import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios'; - +import axios, { AxiosInstance, InternalAxiosRequestConfig } from "axios"; +import { message } from "ant-design-vue"; +import { useRouter, useRoute } from "vue-router"; // 从环境变量读取基础 URL -const BASE_URL = import.meta.env.VITE_API_BASIC -console.log('API Basic URL:',import.meta.env.VITE_API_BASIC); -console.log('All env:', import.meta.env); +const BASE_URL = import.meta.env.VITE_API_BASIC; +console.log("API Basic URL:", import.meta.env.VITE_API_BASIC); +console.log("All env:", import.meta.env); +const router = useRouter(); // 创建 axios 实例 const request: AxiosInstance = axios.create({ baseURL: BASE_URL, timeout: 10000, // 10 秒超时 withCredentials: false, // 跨域请求时发送 cookies headers: { - 'Content-Type': 'application/json', + "Content-Type": "application/json", }, }); @@ -19,7 +21,7 @@ const request: AxiosInstance = axios.create({ request.interceptors.request.use( (config: InternalAxiosRequestConfig) => { // 例如:从 localStorage 获取 token - const token = localStorage.getItem('token'); + const token = localStorage.getItem("token"); if (token) { config.headers.Authorization = `Bearer ${token}`; } @@ -33,22 +35,31 @@ request.interceptors.request.use( // 响应拦截器(统一处理错误、code 等) request.interceptors.response.use( (response) => { - + console.log("response", response); // 假设后端返回格式为 { code: 200, data: ..., message: '' } const { code, data, message } = response.data; - console.log('Response Data:', response.data); + console.log("Response Data:", response.data); if (code === 1) { - return data; + return data??code; } else { // 可抛出业务错误 - return Promise.reject(new Error(message || '请求失败')); + return Promise.reject(new Error(message || "请求失败")); } }, (error) => { // 网络错误 or 超时等 - - return Promise.reject(error.response.data); + console.log(error); + const res = error.response; + if (res.status === 401) { + message.error("登录已过期,请重新登录"); + localStorage.clear(); + setTimeout(() => { + window.location.href = "/login"; + }, 3000); + } else { + return Promise.reject(error.response.data); + } } ); -export default request; \ No newline at end of file +export default request; diff --git a/src/views/admin/account/accountSet/index.vue b/src/views/admin/account/accountSet/index.vue index 23477a3..d626a80 100644 --- a/src/views/admin/account/accountSet/index.vue +++ b/src/views/admin/account/accountSet/index.vue @@ -16,13 +16,18 @@ -