import type { AxiosInstance, AxiosRequestConfig } from 'axios'
import axios from 'axios'
import router from "@/router";
import { ElMessage } from 'element-plus'
const instance: AxiosInstance = axios.create({
// baseURL: import.meta.env.VITE_API_URL,
baseURL:'http://127.0.0.1:12709',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
})
//添加响应拦截器
instance.interceptors.response.use(
result=>{
console.log(result.data);
return result.data;
},
err=>{
alert('服务异常');
return Promise.reject(err);//异步的状态转化成失败的状态
}
)
// 添加请求拦截器,打印请求信息便于调试
instance.interceptors.request.use(
(config) => {
console.log('Request:', {
method: config.method?.toUpperCase(),
url: config.url,
data: config.data,
})
return config
},
(error) => {
return Promise.reject(error)
},
)
instance.interceptors.response.use(
result=>{
console.log(result.data);
return result.data;
},
err=>{
alert('服务异常');
return Promise.reject(err);//异步的状态转化成失败的状态
}
)
// // 响应拦截器
instance.interceptors.response.use(
(response) => {
const res = response.data
if (!res.success) {
return Promise.reject(new Error(res.message || '请求失败'))
}
return res
},
(error) => {
const errorMsg = error.response?.data?.message || error.message || '网络错误'
ElMessage.error(errorMsg)
return Promise.reject(error)
},
)
export default {
get: (url: string, config?: AxiosRequestConfig) => {
return instance.get(url, config)
},
post: (url: string, data?: unknown, config?: AxiosRequestConfig) => {
return instance.post(url, data, config)
},
put: (url: string, data?: unknown, config?: AxiosRequestConfig) => {
return instance.put(url, data, config)
},
delete: (url: string, config?: AxiosRequestConfig) => {
return instance.delete(url, config)
},
}
// export default instance;
methods: {
login(loginForm) {
this.$refs['loginForm'].validate(async (valid) => {
if (valid) {
this.loadingbut = true
this.loadingbuttext = '登录中...'
try {
const res = await stafflogin({
uname: loginForm.uname,
upwd: loginForm.upwd
})
if (res === 1) {
this.loginSuccess(loginForm.uname)
} else {
this.$alert('用户名或密码错误!', { confirmButtonText: '确定' })
}
} catch (error) {
this.$alert('登录失败,请稍后重试', { confirmButtonText: '确定' })
} finally {
this.loadingbut = false
this.loadingbuttext = '登录'
}
} else {
this.$alert('表单验证失败', { confirmButtonText: '确定' })
return false
}
})
},
cancel() {
this.$refs['loginForm'].resetFields()
},
showRegister() {
this.registerVisible = true
this.refreshCaptcha()
},
// 生成随机账号
generateAccount() {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
let result = ''
for (let i = 0; i < 12; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length))
}
return result
},
// 刷新验证码
refreshCaptcha() {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
let result = ''
for (let i = 0; i < 4; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length))
}
this.captchaCode = result
},
// 登录成功处理方法
loginSuccess(username) {
this.$alert('登录成功', {
confirmButtonText: '确定',
callback: () => {
sessionStorage.setItem("uname", username)
sessionStorage.setItem("password", this.loginForm.upwd)
localStorage.setItem("token", "logged_in")
let path = this.$route.query.redirect
this.$router.replace({ path: path === '/' || path === undefined ? '/home/homeshou' : path })
}
})
},
// 修改注册方法
register() {
this.$refs.registerForm.validate(async (valid) => {
if (valid) {
if (this.registerForm.captcha.toLowerCase() !== this.captchaCode.toLowerCase()) {
this.$alert('验证码错误', { confirmButtonText: '确定' })
return
}
this.registerLoading = true
try {
const res = await staffregister({
ID: this.registerForm.idCard,
password: this.registerForm.password
})
console.log(res, '1111')
if (res == 0) {
this.$alert('注册失败,请稍后重试', { confirmButtonText: '确定' })
return
}
this.$alert(`注册成功!您的员工号是:${res},请妥善保管。`, {
confirmButtonText: '确定',
callback: () => {
this.registerVisible = false
this.registerForm = {
password: '',
confirmPassword: '',
idCard: '',
captcha: ''
}
}
})
} catch (error) {
this.$alert('注册失败,请稍后重试', { confirmButtonText: '确定' })
} finally {
this.registerLoading = false
}
}
})
}
}
}
这是我登录部分的vue文件
各位大佬们帮我看看怎么解决这个问题吧,困扰我好几天了
任何帮助都将不胜感激,谢谢
相似问题