diff --git a/common/http.interceptor.js b/common/http.interceptor.js index ff88dcf..8e7875e 100644 --- a/common/http.interceptor.js +++ b/common/http.interceptor.js @@ -1,70 +1,79 @@ -import { - ROOTPATH as baseUrl -} from "@/common/config.js" - -// 这里的Vue为Vue对象(非创建出来的实例),vm为main.js中“Vue.use(httpInterceptor, app)”这一句的第二个参数, -// 为一个Vue的实例,也即每个页面的"this" -// 如果需要了解这个install方法是什么,请移步:https://uviewui.com/components/vueUse.html -const install = (Vue, vm) => { - // 此为自定义配置参数,具体参数见上方说明 - Vue.prototype.$u.http.setConfig({ - baseUrl, - showLoading: true, // 是否显示请求中的loading - loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透 - loadingText: '加载中', // 请求loading中的文字提示 - loadingTime: 800, - originalData: true, // 是否在拦截器中返回服务端的原始数据 - // 设置自定义头部content-type - header: { - 'content-type': 'application/json;charset=UTF-8' - } - }); - - // 请求拦截部分,如配置,每次请求前都会执行 - Vue.prototype.$u.http.interceptor.request = (config) => { - console.log('config-http', config) - // 引用token - // 方式一,存放在vuex的token,假设使用了uView封装的vuex方式 - // 见:https://uviewui.com/components/globalVariable.html - if(vm.vuex_token){ - config.header['Authorization'] = `Bearer ${vm.vuex_token}`; - } - - // 最后需要将config进行return - return config; - // 如果return一个false值,则会取消本次请求 - // if(config.url == '/user/rest') return false; // 取消某次请求 - } - - // 响应拦截,如配置,每次请求结束都会执行本方法 - Vue.prototype.$u.http.interceptor.response = (res) => { - console.log('res-http', res) - if (res.statusCode === 200) { - if (res.data.errcode === 40001) { - uni.showToast({ - icon: "none", - title: "登陆过期,请重新登录" - }) - - setTimeout(() => { - uni.redirectTo({ - url: '/pages/login/login' - }) - }, 1500) - - } - return res.data; - } else { - uni.showToast({ - icon: "fail", - title: res.statusCode - }) - - return false; - } - } -} - -export default { - install +import { + ROOTPATH as baseUrl +} from "@/common/config.js" + +// 这里的Vue为Vue对象(非创建出来的实例),vm为main.js中“Vue.use(httpInterceptor, app)”这一句的第二个参数, +// 为一个Vue的实例,也即每个页面的"this" +// 如果需要了解这个install方法是什么,请移步:https://uviewui.com/components/vueUse.html +const install = (Vue, vm) => { + // 此为自定义配置参数,具体参数见上方说明 + Vue.prototype.$u.http.setConfig({ + baseUrl, + showLoading: true, // 是否显示请求中的loading + loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透 + loadingText: '加载中', // 请求loading中的文字提示 + loadingTime: 800, + originalData: true, // 是否在拦截器中返回服务端的原始数据 + // 设置自定义头部content-type + header: { + 'content-type': 'application/json;charset=UTF-8' + } + }); + + // 请求拦截部分,如配置,每次请求前都会执行 + Vue.prototype.$u.http.interceptor.request = (config) => { + console.log('config-http', config) + // 引用token + // 方式一,存放在vuex的token,假设使用了uView封装的vuex方式 + // 见:https://uviewui.com/components/globalVariable.html + if (vm.vuex_token) { + config.header['Authorization'] = `Bearer ${vm.vuex_token}`; + } + + // 最后需要将config进行return + return config; + // 如果return一个false值,则会取消本次请求 + // if(config.url == '/user/rest') return false; // 取消某次请求 + } + + // 响应拦截,如配置,每次请求结束都会执行本方法 + Vue.prototype.$u.http.interceptor.response = (res) => { + console.log('res-http', res) + + + if (res.statusCode === 200) { + if (res.data.hasOwnProperty("errcode")) { + if (res.data.errcode === 40001) { + uni.showToast({ + icon: "none", + title: "登陆过期,请重新登录" + }) + setTimeout(() => { + uni.redirectTo({ + url: '/pages/login/login' + }) + }, 1500) + + } else { + uni.showToast({ + icon: "none", + title: res.data.errmsg + }) + } + } else + return res.data; + + } else { + uni.showToast({ + icon: "fail", + title: res.statusCode + }) + + return false; + } + } +} + +export default { + install } diff --git a/pages/home/home.vue b/pages/home/home.vue index 33d1d60..a2a1ba7 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -12,7 +12,7 @@ - + diff --git a/pages/login/login.vue b/pages/login/login.vue index 0f10a32..455edf6 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -75,6 +75,23 @@ }, methods: { login() { + + if(this.form.username==""){ + uni.showToast({ + icon: "none", + title: `请正确填写登录名`, + }); + return false + } + + if(this.form.password==""){ + uni.showToast({ + icon: "none", + title: `请正确填写密码`, + }); + return false + } + this.$u.api.login(this.form).then(res => { this.$u.vuex("vuex_token", res.access_token);