9 changed files with 404 additions and 374 deletions
-
1gold-system/.env.development
-
1gold-system/.env.production
-
2gold-system/package.json
-
35gold-system/src/api/index.js
-
62gold-system/src/util/http.js
-
38gold-system/src/util/request.js
-
79gold-system/src/views/login.vue
-
492gold-system/src/views/usergold/index.vue
-
68gold-system/vite.config.ts
@ -0,0 +1 @@ |
|||||
|
VITE_API_BASE='http://54.251.137.151:10704/' |
@ -0,0 +1 @@ |
|||||
|
VITE_API_BASE=http://54.251.137.151:10702/ |
@ -1,13 +1,26 @@ |
|||||
import { pa } from 'element-plus/es/locales.mjs'; |
|
||||
import http from '../util/http.js'; |
|
||||
|
import request from './request' |
||||
|
|
||||
const API={ |
|
||||
post: function(url,data){ |
|
||||
return http({url:url,method:'post',data:data}) |
|
||||
}, |
|
||||
postN: function(url,params){ |
|
||||
return http({url:url,method:'post',params:params}) |
|
||||
}, |
|
||||
}; |
|
||||
|
export default function requestHandler(options) { |
||||
|
const { method = 'get', url, data = {}, params = {}, headers = {} } = options |
||||
|
|
||||
export default API; |
|
||||
|
return request({ |
||||
|
method, |
||||
|
url, |
||||
|
data, |
||||
|
params, |
||||
|
headers |
||||
|
}) |
||||
|
.then(({ status, data, statusText }) => { |
||||
|
if (status === 200) { |
||||
|
return data |
||||
|
} else { |
||||
|
throw new Error(statusText) |
||||
|
} |
||||
|
}) |
||||
|
.catch(error => { |
||||
|
if (error?.needsLogin) { |
||||
|
return { needsLogin: true } |
||||
|
} |
||||
|
return Promise.reject(error) |
||||
|
}) |
||||
|
} |
@ -1,48 +1,26 @@ |
|||||
import axios from 'axios'; |
|
||||
|
import request from './request' |
||||
|
|
||||
|
export default function requestHandler(options) { |
||||
|
const { method = 'get', url, data = {}, params = {}, headers = {} } = options |
||||
|
|
||||
export default function (options) { |
|
||||
//配置每次发送请求都从localStorage中获取名字叫token的数据,
|
|
||||
//添加到请求头部的Authorization属性中
|
|
||||
const token = localStorage.getItem('token'); |
|
||||
//Object.assign用于合并对象的数据
|
|
||||
|
|
||||
options.data.token = token; |
|
||||
// options.headers = Object.assign(
|
|
||||
// { token: token },
|
|
||||
// options.headers || {}
|
|
||||
// );
|
|
||||
|
|
||||
//axios() 返回一个promise对象,用于异步请求
|
|
||||
//options是一个对象,其中包含了许多用于配置请求的参数,
|
|
||||
//例如请求的url、请求方法(GET、POST等)、请求头等
|
|
||||
return axios(options) |
|
||||
|
return request({ |
||||
|
method, |
||||
|
url, |
||||
|
data, |
||||
|
params, |
||||
|
headers |
||||
|
}) |
||||
.then(({ status, data, statusText }) => { |
.then(({ status, data, statusText }) => { |
||||
//该函数在请求成功并返回数据时被调用
|
|
||||
//status:HTTP状态码,例如200表示请求成功。
|
|
||||
//data:服务器返回的数据。
|
|
||||
// statusText:HTTP状态文本,例如"OK"表示请求成功。
|
|
||||
// console.log(data);
|
|
||||
if (status == 200) { |
|
||||
return data; |
|
||||
|
if (status === 200) { |
||||
|
return data |
||||
} else { |
} else { |
||||
throw new e(statusText); |
|
||||
|
throw new Error(statusText) |
||||
|
} |
||||
|
}) |
||||
|
.catch(error => { |
||||
|
if (error?.needsLogin) { |
||||
|
return { needsLogin: true } |
||||
} |
} |
||||
|
return Promise.reject(error) |
||||
}) |
}) |
||||
.catch(e=>{ |
|
||||
// 检查是否是因为token过期导致的401错误
|
|
||||
if (e.response && e.response.status === 401) { |
|
||||
// 获取机器码
|
|
||||
const machineId = localStorage.getItem('machineId'); |
|
||||
// 清除localStorage中的token
|
|
||||
localStorage.removeItem('token'); |
|
||||
// // 执行重新登录的逻辑,例如跳转到登录页面
|
|
||||
router.push("/login?machineId=" + machineId); |
|
||||
// 可以在这里返回一个特定的值或者对象,以便调用者知道需要重新登录
|
|
||||
return { needsLogin: true }; |
|
||||
} else { |
|
||||
// 其他类型的错误,直接抛出
|
|
||||
return Promise.reject(e); |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
import axios from 'axios' |
||||
|
const service = axios.create({ |
||||
|
baseURL: import.meta.env.VITE_API_BASE, |
||||
|
timeout: 10000, |
||||
|
headers: { |
||||
|
'Content-Type': 'application/json' |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
// 请求拦截器
|
||||
|
service.interceptors.request.use(config => { |
||||
|
const token = localStorage.getItem('token') |
||||
|
if (token) { |
||||
|
config.headers.Authorization = `Bearer ${token}` |
||||
|
} |
||||
|
return config |
||||
|
}, error => { |
||||
|
return Promise.reject(error) |
||||
|
}) |
||||
|
|
||||
|
// 响应拦截器
|
||||
|
service.interceptors.response.use( |
||||
|
response => { |
||||
|
return response |
||||
|
}, |
||||
|
error => { |
||||
|
const { response } = error |
||||
|
if (response && response.status === 401) { |
||||
|
const machineId = localStorage.getItem('machineId') |
||||
|
localStorage.removeItem('token') |
||||
|
window.location.href = `/login?machineId=${machineId}` |
||||
|
return Promise.resolve({ needsLogin: true }) |
||||
|
} |
||||
|
return Promise.reject(error) |
||||
|
} |
||||
|
) |
||||
|
|
||||
|
export default service |
@ -1,42 +1,42 @@ |
|||||
import { defineConfig } from 'vite' |
|
||||
|
import { defineConfig, loadEnv } from 'vite' |
||||
import vue from '@vitejs/plugin-vue' |
import vue from '@vitejs/plugin-vue' |
||||
import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import' |
import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import' |
||||
import legacy from '@vitejs/plugin-legacy'; |
|
||||
|
import legacy from '@vitejs/plugin-legacy' |
||||
|
import path from 'path' |
||||
|
|
||||
// https://vite.dev/config/
|
// https://vite.dev/config/
|
||||
export default defineConfig({ |
|
||||
esbuild: { |
|
||||
supported: { |
|
||||
bigint: true |
|
||||
} |
|
||||
}, |
|
||||
plugins: [vue(), |
|
||||
legacy({ |
|
||||
targets: ['defaults', 'not IE 11', 'chrome >=73'], |
|
||||
modernPolyfills: true |
|
||||
}), |
|
||||
lazyImport({ |
|
||||
resolvers: [ |
|
||||
VxeResolver({ |
|
||||
libraryName: 'vxe-table' |
|
||||
|
export default defineConfig(({ mode }) => { |
||||
|
const env = loadEnv(mode, process.cwd()) |
||||
|
console.log('当前环境:', mode) |
||||
|
console.log('当前环境变量:', env) |
||||
|
return { |
||||
|
esbuild: { |
||||
|
supported: { |
||||
|
bigint: true |
||||
|
} |
||||
|
}, |
||||
|
plugins: [ |
||||
|
vue(), |
||||
|
legacy({ |
||||
|
targets: ['defaults', 'not IE 11', 'chrome >=73'], |
||||
|
modernPolyfills: true |
||||
}), |
}), |
||||
VxeResolver({ |
|
||||
libraryName: 'vxe-pc-ui' |
|
||||
|
lazyImport({ |
||||
|
resolvers: [ |
||||
|
VxeResolver({ |
||||
|
libraryName: 'vxe-table' |
||||
|
}), |
||||
|
VxeResolver({ |
||||
|
libraryName: 'vxe-pc-ui' |
||||
|
}) |
||||
|
] |
||||
}) |
}) |
||||
] |
|
||||
}) |
|
||||
], |
|
||||
server: { |
|
||||
proxy: { |
|
||||
'/hwjb': { |
|
||||
// target: 'http://54.251.137.151:10704',
|
|
||||
target: 'http://192.168.8.93:10702', |
|
||||
// target: 'http://54.251.137.151:10702',
|
|
||||
changeOrigin: true, |
|
||||
rewrite: (path) => path.replace(/^\/hwjb/, ''), |
|
||||
}, |
|
||||
|
], |
||||
|
resolve: { |
||||
|
alias: { |
||||
|
'@': path.resolve(__dirname, './src') |
||||
|
} |
||||
}, |
}, |
||||
}, |
|
||||
// base: process.env.NODE_ENV === "production" ? "/gold_html_dev/" : "/",
|
|
||||
base: process.env.NODE_ENV === "production" ? "./" : "/", |
|
||||
|
base: process.env.NODE_ENV === 'production' ? './' : '/' |
||||
|
} |
||||
}) |
}) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue