Compare commits
4 Commits
a82c8da013
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| f5f6885318 | |||
| 5379380d33 | |||
| b2275c2636 | |||
| ff60913b5b |
@@ -23,26 +23,48 @@ const install = (Vue, vm) => {
|
||||
return config;
|
||||
};
|
||||
// 响应拦截,判断状态码是否通过
|
||||
// 防止多次跳转登录页
|
||||
let isRedirectingToLogin = false;
|
||||
|
||||
Vue.prototype.$u.http.interceptor.response = (res) => {
|
||||
// 如果把originalData设置为了true,这里得到将会是服务器返回的所有的原始数据
|
||||
// 判断可能变成了res.statueCode,或者res.data.code之类的,请打印查看结果
|
||||
if(res.statusCode == 200) {
|
||||
return res.data;
|
||||
return res.data;
|
||||
} else if(res.statusCode == 301) {
|
||||
vm.$u.toast('警告:' + res.msg);
|
||||
return false;
|
||||
} else if(res.statusCode == 401 || res.statusCode == 403) {
|
||||
const currentPage = vm.$route.path;
|
||||
// 防止多次跳转
|
||||
if (isRedirectingToLogin) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 判断当前页面是否为登录页
|
||||
// 登录成功修改token与用户信息
|
||||
vm.$u.vuex('vuex_token', '');
|
||||
vm.$u.vuex('vuex_user', {});
|
||||
uni.removeStorageSync('userInfo');
|
||||
if (currentPage !== '/pages-biz/login/login') {
|
||||
uni.navigateTo({
|
||||
url: '/pages-biz/login/login'
|
||||
});
|
||||
const pages = getCurrentPages();
|
||||
const currentPage = pages[pages.length - 1];
|
||||
const currentPath = currentPage ? currentPage.route : '';
|
||||
|
||||
if (currentPath !== 'pages-biz/login/login') {
|
||||
isRedirectingToLogin = true;
|
||||
|
||||
// 清除 token 和用户信息
|
||||
vm.$u.vuex('vuex_token', '');
|
||||
vm.$u.vuex('vuex_user', {});
|
||||
uni.removeStorageSync('userInfo');
|
||||
|
||||
vm.$u.toast('认证失败,请重新登录');
|
||||
|
||||
// 使用 reLaunch 清空页面栈,避免返回时出现问题
|
||||
uni.reLaunch({
|
||||
url: '/pages-biz/login/login',
|
||||
complete: () => {
|
||||
// 跳转完成后重置标记
|
||||
setTimeout(() => {
|
||||
isRedirectingToLogin = false;
|
||||
}, 1000)
|
||||
}
|
||||
});
|
||||
}
|
||||
return false;
|
||||
} else if(res.statusCode == 500) {
|
||||
|
||||
@@ -82,10 +82,15 @@
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
this.fetchContractList();
|
||||
// fetchContractList 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken());
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.fetchContractList()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
filteredAssets() {
|
||||
@@ -143,8 +148,16 @@
|
||||
});
|
||||
},
|
||||
submitForm() {
|
||||
const token = this.$getToken()
|
||||
if (!token) {
|
||||
uni.showToast({
|
||||
title: '请先登录',
|
||||
icon: 'none'
|
||||
});
|
||||
return
|
||||
}
|
||||
let userInfo = uni.getStorageSync('userInfo');
|
||||
if(!userInfo.cusNo) {
|
||||
if(!userInfo || !userInfo.cusNo) {
|
||||
uni.showToast({
|
||||
title: '您还未实名',
|
||||
icon: 'none'
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
@@ -173,12 +175,17 @@
|
||||
})
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
},
|
||||
onLoad() {
|
||||
this.fetchApplys()
|
||||
// fetchApplys 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.fetchApplys()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -78,15 +78,22 @@
|
||||
this.scrollTop = e.scrollTop;
|
||||
this.updateNavbarStyle(e.scrollTop);
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
},
|
||||
onLoad() {
|
||||
this.fetchFallback();
|
||||
// fetchFallback 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.fetchFallback()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
@@ -159,8 +166,13 @@
|
||||
},
|
||||
addFallback() {
|
||||
const content = this.newMessageContent.trim();
|
||||
const token = this.$getToken()
|
||||
if (!token) {
|
||||
uni.showToast({ title: '请先登录', icon: 'none' });
|
||||
return
|
||||
}
|
||||
let userInfo = uni.getStorageSync('userInfo');
|
||||
if(!userInfo.cusNo) {
|
||||
if(!userInfo || !userInfo.cusNo) {
|
||||
uni.showToast({ title: '您还未实名', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
this.updateNavbarStyle(e.scrollTop);
|
||||
},
|
||||
onShow(){
|
||||
this.$checkToken(this.$getToken())
|
||||
this.$checkToken(this.$getToken()).catch(() => {})
|
||||
},
|
||||
onLoad(options) {
|
||||
// 从路由参数中获取留言ID
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
this.loadBills();
|
||||
},
|
||||
onShow(){
|
||||
this.$checkToken(this.$getToken())
|
||||
this.$checkToken(this.$getToken()).catch(() => {})
|
||||
},
|
||||
methods: {
|
||||
// 切换年份选择器显示
|
||||
|
||||
@@ -55,7 +55,7 @@ export default {
|
||||
this.loadBillDetail(id);
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.$checkToken(this.$getToken()).catch(() => {})
|
||||
},
|
||||
methods: {
|
||||
loadBillDetail(id) {
|
||||
|
||||
@@ -96,11 +96,16 @@
|
||||
for (let i = 5; i >= 1; i--) {
|
||||
this.years.push(year - i);
|
||||
}
|
||||
this.fetchPayRecord();
|
||||
// fetchPayRecord 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.fetchPayRecord()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
// ✅ 删除和 scroll-view 冲突的 onReachBottom
|
||||
watch: {
|
||||
@@ -112,6 +117,8 @@
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
@@ -167,8 +174,13 @@
|
||||
this.resetAndLoad();
|
||||
},
|
||||
formatMoney(val) {
|
||||
if (!val && val !== 0) return '—';
|
||||
return '¥' + Number(val).toFixed(2);
|
||||
if (val === null || val === undefined || isNaN(val)) return '—';
|
||||
val = Number(val);
|
||||
if (val >= 100000) {
|
||||
const wan = val / 10000;
|
||||
return '¥' + wan + '万';
|
||||
}
|
||||
return '¥' + val.toFixed(2);
|
||||
},
|
||||
resetAndLoad(){
|
||||
this.loadStatus = 'more';
|
||||
|
||||
@@ -70,11 +70,18 @@ export default {
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.loadContracts();
|
||||
// loadContracts 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
// token 有效,继续执行
|
||||
this.checkOaAuth()
|
||||
this.loadContracts()
|
||||
} catch (e) {
|
||||
// token 无效,$checkToken 内部已处理跳转登录页
|
||||
return
|
||||
}
|
||||
},
|
||||
// ✅ 删除和 scroll-view 冲突的 onReachBottom
|
||||
computed: {
|
||||
@@ -84,6 +91,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
|
||||
@@ -92,9 +92,13 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.getContractDetail()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.getContractDetail()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
|
||||
@@ -43,11 +43,16 @@ export default {
|
||||
}
|
||||
},
|
||||
onLoad() { // ✅ 修复生命周期拼写
|
||||
this.fetchMessageList();
|
||||
// fetchMessageList 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.fetchMessageList()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
// ✅ 删除和 scroll-view 冲突的 onReachBottom
|
||||
computed: {
|
||||
@@ -57,6 +62,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
|
||||
@@ -23,7 +23,7 @@ export default {
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.$checkToken(this.$getToken()).catch(() => {})
|
||||
},
|
||||
onLoad(e) {
|
||||
this.id = e.id
|
||||
|
||||
@@ -36,11 +36,16 @@ export default {
|
||||
},
|
||||
onLoad(options) {
|
||||
this.cusNo = options.cusNo;
|
||||
this.loadAssets();
|
||||
// loadAssets 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.loadAssets()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
// ✅ 删除和 scroll-view 冲突的 onReachBottom
|
||||
computed: {
|
||||
@@ -50,6 +55,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
|
||||
@@ -96,10 +96,15 @@ export default {
|
||||
}
|
||||
},
|
||||
onLoad(options){
|
||||
this.fetchReserve()
|
||||
// fetchReserve 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.fetchReserve()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
// ✅ 删除 scroll-view 冲突的 onReachBottom
|
||||
methods: {
|
||||
|
||||
@@ -82,14 +82,21 @@
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.loadBills();
|
||||
// loadBills 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.loadBills()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
@@ -155,8 +162,9 @@
|
||||
formatMoney(val) {
|
||||
if (val === null || val === undefined || isNaN(val)) return '—';
|
||||
val = Number(val);
|
||||
if (val >= 10000) {
|
||||
return '¥' + (val / 10000).toFixed(2) + '万';
|
||||
if (val >= 100000) {
|
||||
const wan = val / 10000;
|
||||
return '¥' + wan + '万';
|
||||
}
|
||||
return '¥' + val.toFixed(2);
|
||||
},
|
||||
@@ -248,14 +256,14 @@
|
||||
signType: order.miniPayRequest.signType,
|
||||
paySign: order.miniPayRequest.paySign,
|
||||
success: () => {
|
||||
this.isPaying = false;
|
||||
billList.forEach(b => b.checked = false);
|
||||
this.updateSelected();
|
||||
this.refresh();
|
||||
this.isPaying = false;
|
||||
},
|
||||
fail: (err) => {
|
||||
this.payFailCallback(err, orderId);
|
||||
this.isPaying = false;
|
||||
this.payFailCallback(err, orderId);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -80,15 +80,22 @@
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.loadBills();
|
||||
// loadBills 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.loadBills()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
// ❌ 已删除冲突的 onReachBottom
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
@@ -157,8 +164,9 @@
|
||||
formatMoney(val) {
|
||||
if (val === null || val === undefined || isNaN(val)) return '—';
|
||||
val = Number(val);
|
||||
if (val >= 10000) {
|
||||
return '¥' + (val / 10000).toFixed(2) + '万';
|
||||
if (val >= 100000) {
|
||||
const wan = val / 10000;
|
||||
return '¥' + wan + '万';
|
||||
}
|
||||
return '¥' + val.toFixed(2);
|
||||
},
|
||||
@@ -250,14 +258,14 @@
|
||||
signType: order.miniPayRequest.signType,
|
||||
paySign: order.miniPayRequest.paySign,
|
||||
success: () => {
|
||||
this.isPaying = false;
|
||||
billList.forEach(b => b.checked = false);
|
||||
this.updateSelected();
|
||||
this.refresh();
|
||||
this.isPaying = false;
|
||||
},
|
||||
fail: (err) => {
|
||||
this.payFailCallback(err, orderId);
|
||||
this.isPaying = false;
|
||||
this.payFailCallback(err, orderId);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -77,15 +77,22 @@
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.loadBills();
|
||||
// loadBills 移到 onShow 中,等 token 校验通过后再加载
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.checkOaAuth()
|
||||
this.loadBills()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
// ❌ 已删除冲突的 onReachBottom
|
||||
methods: {
|
||||
checkOaAuth() {
|
||||
const token = this.$getToken()
|
||||
if (!token) return
|
||||
const userInfo = uni.getStorageSync('userInfo')
|
||||
if (!userInfo || !userInfo.oaAuth) {
|
||||
uni.showModal({
|
||||
@@ -154,8 +161,9 @@
|
||||
formatMoney(val) {
|
||||
if (val === null || val === undefined || isNaN(val)) return '—';
|
||||
val = Number(val);
|
||||
if (val >= 10000) {
|
||||
return '¥' + (val / 10000).toFixed(2) + '万';
|
||||
if (val >= 100000) {
|
||||
const wan = val / 10000;
|
||||
return '¥' + wan + '万';
|
||||
}
|
||||
return '¥' + val.toFixed(2);
|
||||
},
|
||||
@@ -226,14 +234,14 @@
|
||||
signType: order.miniPayRequest.signType,
|
||||
paySign: order.miniPayRequest.paySign,
|
||||
success: () => {
|
||||
this.isPaying = false;
|
||||
billList.forEach(b => b.checked = false);
|
||||
this.updateSelected();
|
||||
this.refresh();
|
||||
this.isPaying = false;
|
||||
},
|
||||
fail: (err) => {
|
||||
this.payFailCallback(err, orderId);
|
||||
this.isPaying = false;
|
||||
this.payFailCallback(err, orderId);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ export default {
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.$checkToken(this.$getToken()).catch(() => {})
|
||||
},
|
||||
onLoad() {
|
||||
this.fetchDataList();
|
||||
|
||||
@@ -145,6 +145,8 @@
|
||||
opacity: 0,
|
||||
extraIcons: [] // 右侧额外图标
|
||||
},
|
||||
// 用户信息(响应式)
|
||||
userInfo: uni.getStorageSync('userInfo') || {}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -163,9 +165,9 @@
|
||||
staticHost() {
|
||||
return this.$config.staticUrl
|
||||
},
|
||||
user() {
|
||||
return uni.getStorageSync('userInfo') || {}
|
||||
}
|
||||
user() {
|
||||
return this.userInfo
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
@@ -179,15 +181,19 @@
|
||||
onUnload() {
|
||||
uni.$off('updateAvatar')
|
||||
},
|
||||
onShow() {
|
||||
this.$checkToken(this.$getToken())
|
||||
this.loadUserInfo()
|
||||
this.countHandlingReserve()
|
||||
this.countUnHandleContract()
|
||||
this.countUnpayRentBills()
|
||||
this.countUnpayWaeBills()
|
||||
this.countUnreadMsg()
|
||||
this.countUnpaidRentMargin()
|
||||
async onShow() {
|
||||
try {
|
||||
await this.$checkToken(this.$getToken())
|
||||
this.loadUserInfo()
|
||||
this.countHandlingReserve()
|
||||
this.countUnHandleContract()
|
||||
this.countUnpayRentBills()
|
||||
this.countUnpayWaeBills()
|
||||
this.countUnreadMsg()
|
||||
this.countUnpaidRentMargin()
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
@@ -206,17 +212,20 @@
|
||||
}).then(obj => {
|
||||
if(obj.flag){
|
||||
console.log("更新缓存中用户信息")
|
||||
uni.setStorageSync('userInfo', {
|
||||
const newUserInfo = {
|
||||
userType: obj.data.userType,
|
||||
oaAuth: obj.data.oaAuth,
|
||||
cusNo: obj.data.cusNo,
|
||||
userName: obj.data.userName,
|
||||
openId: obj.data.openId,
|
||||
subscribe: obj.data.subscribeMsg
|
||||
})
|
||||
}
|
||||
uni.setStorageSync('userInfo', newUserInfo)
|
||||
// 更新响应式数据
|
||||
this.userInfo = newUserInfo
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
logout() {
|
||||
this.$u.vuex('vuex_token', '');
|
||||
|
||||
Reference in New Issue
Block a user