Compare commits

...

4 Commits

Author SHA1 Message Date
f5f6885318 修复bug 2026-06-05 17:50:17 +08:00
5379380d33 修复支付bug 2026-06-05 17:30:05 +08:00
b2275c2636 继续修复白屏bug 2026-06-03 16:02:11 +08:00
ff60913b5b 修复bug,未登录时不校验实名状态 2026-06-03 15:31:22 +08:00
19 changed files with 224 additions and 93 deletions

View File

@@ -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) {

View File

@@ -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'

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -54,7 +54,7 @@
this.updateNavbarStyle(e.scrollTop);
},
onShow(){
this.$checkToken(this.$getToken())
this.$checkToken(this.$getToken()).catch(() => {})
},
onLoad(options) {
// 从路由参数中获取留言ID

View File

@@ -92,7 +92,7 @@
this.loadBills();
},
onShow(){
this.$checkToken(this.$getToken())
this.$checkToken(this.$getToken()).catch(() => {})
},
methods: {
// 切换年份选择器显示

View File

@@ -55,7 +55,7 @@ export default {
this.loadBillDetail(id);
},
onShow() {
this.$checkToken(this.$getToken())
this.$checkToken(this.$getToken()).catch(() => {})
},
methods: {
loadBillDetail(id) {

View File

@@ -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';

View File

@@ -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({

View File

@@ -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) {

View File

@@ -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({

View File

@@ -23,7 +23,7 @@ export default {
}
},
onShow() {
this.$checkToken(this.$getToken())
this.$checkToken(this.$getToken()).catch(() => {})
},
onLoad(e) {
this.id = e.id

View File

@@ -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({

View File

@@ -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: {

View File

@@ -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);
}
});

View File

@@ -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);
}
});

View File

@@ -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);
}
});

View File

@@ -54,7 +54,7 @@ export default {
};
},
onShow() {
this.$checkToken(this.$getToken())
this.$checkToken(this.$getToken()).catch(() => {})
},
onLoad() {
this.fetchDataList();

View File

@@ -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', '');