diff --git a/property-uniapp-project/manifest.json b/property-uniapp-project/manifest.json index 2243d17..0ed7d69 100644 --- a/property-uniapp-project/manifest.json +++ b/property-uniapp-project/manifest.json @@ -2,8 +2,8 @@ "name" : "花开物业", "appid" : "__UNI__29C3D60", "description" : "智慧社区居民端面向小区业主使用,支持注册、验证码、账号密码多种登录方式,提供密码找回功能,账号使用安全便捷。支持多小区切换,首页设有轮播 banner、社区公告,集成远程开门、生活缴费、在线报修、访客邀请、社区活动常用服务。全服务板块统一涵盖门禁开门、线上缴费、报修申报、访客预约、投诉反馈、问卷调研、活动报名、社区公示、一键联系物业功能。个人中心可管理房屋、住户、车位、车辆信息,支持更换手机号、修改密码、消息通知设置、版本更新及账号退出,一站式满足业主居家生活、社区服务、房产车辆管理需求,实现社区生活数字化、便捷化。", - "versionName" : "1.0.3", - "versionCode" : 116, + "versionName" : "1.0.4", + "versionCode" : 117, "transformPx" : false, "uniCloud" : { "provider" : "aliyun", @@ -17,7 +17,7 @@ "splashscreen" : { "alwaysShowBeforeRender" : true, "waiting" : true, - "autoclose" : true, + "autoclose" : false, "delay" : 0 }, /* 模块配置 */ diff --git a/property-uniapp-project/pageSubPack/my/addHouse.vue b/property-uniapp-project/pageSubPack/my/addHouse.vue index f68211b..2911137 100644 --- a/property-uniapp-project/pageSubPack/my/addHouse.vue +++ b/property-uniapp-project/pageSubPack/my/addHouse.vue @@ -733,13 +733,26 @@ // 标记需要从绑定房屋返回首页后重新加载用户信息 uni.setStorageSync('needReloadUserInfo', true) setTimeout(() => { - goBack() + uni.removeStorageSync("communityId"); + uni.removeStorageSync("communityName"); + uni.removeStorageSync("buildingId"); + uni.removeStorageSync("buildingName"); + uni.removeStorageSync("unitId"); + uni.removeStorageSync("unitName"); + uni.removeStorageSync("floorId"); + uni.removeStorageSync("floorName"); + uni.removeStorageSync("houseNumberId"); + uni.removeStorageSync("houseNumberName"); + uni.removeStorageSync("houseStatus"); + uni.removeStorageSync("houseIsDefault"); + uni.removeStorageSync("updateHouseId"); + uni.redirectTo({ url: "/pageSubPack/my/myHouseIndex" }) }, 1500) } catch (err) { // 8. 统一错误处理 uni.hideLoading() - console.log('提交失败:', err) + console.log('提交失败11111111111111:', err) uni.showToast({ title: err.msg || '提交失败', icon: 'none', diff --git a/property-uniapp-project/pageSubPack/my/myHouseIndex.vue b/property-uniapp-project/pageSubPack/my/myHouseIndex.vue index 9b7f0f5..998395c 100644 --- a/property-uniapp-project/pageSubPack/my/myHouseIndex.vue +++ b/property-uniapp-project/pageSubPack/my/myHouseIndex.vue @@ -147,7 +147,7 @@ try { const res = await setMyHouseDefault({ - houseId: i.houseId + houseId: e.detail.value ? i.houseId : '' }) const data = res if (data.code === 200) { @@ -171,7 +171,6 @@ title: err.msg, icon: 'none' }) - console.error('列表接口报错:', err) } } diff --git a/property-uniapp-project/pages.json b/property-uniapp-project/pages.json index b31e4a2..a3a9091 100644 --- a/property-uniapp-project/pages.json +++ b/property-uniapp-project/pages.json @@ -1,13 +1,5 @@ { - "pages": [{ - "path": "pages/navigation/navigation", - "style": { - "navigationBarTitleText": "引导页", - "navigationBarTextStyle": "white", - "enablePullDownRefresh": false, - "navigationStyle": "custom" - } - }, + "pages": [ { "path": "pages/index/index", "style": { @@ -26,8 +18,16 @@ "style": { "navigationBarTitleText": "我的" } + }, + { + "path": "pages/navigation/navigation", + "style": { + "navigationBarTitleText": "引导页", + "navigationBarTextStyle": "white", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } } - ], "subPackages": [{ "root": "pageSubPack/loginSub", diff --git a/property-uniapp-project/pages/index/index.vue b/property-uniapp-project/pages/index/index.vue index 71bfb24..f9400be 100644 --- a/property-uniapp-project/pages/index/index.vue +++ b/property-uniapp-project/pages/index/index.vue @@ -183,7 +183,42 @@ const noticeKey = ref(0) const noticeId = ref('') const lastUserId = ref('') + const dataLoaded = ref(false) const pageReady = ref(false) + // ======= 首页数据缓存(冷启动秒开) ======= + const HOME_CACHE_KEY = 'home_cache' + function loadHomeCache() { + try { + const raw = uni.getStorageSync(HOME_CACHE_KEY) + if (!raw) return false + const c = JSON.parse(raw) + if (c.community && c.community !== '请绑定房屋') currentCommunity.value = c.community + if (c.villageId) { + currentVillageId.value = c.villageId + uni.setStorageSync('currentVillageId', c.villageId) + } + if (c.bannerList && c.bannerList.length) bannerList.value = c.bannerList + if (c.bannerRaw && c.bannerRaw.length) bannerRawData.value = c.bannerRaw + if (c.notice && c.notice !== '暂无公告') noticeText.value = c.notice + if (c.noticeId) noticeId.value = c.noticeId + if (c.activityList && c.activityList.length) activityList.value = c.activityList + bannerSwiperKey.value++ + return true + } catch (e) { return false } + } + function saveHomeCache() { + try { + uni.setStorageSync(HOME_CACHE_KEY, JSON.stringify({ + community: currentCommunity.value, + villageId: currentVillageId.value, + bannerList: bannerList.value, + bannerRaw: bannerRawData.value, + notice: noticeText.value, + noticeId: noticeId.value, + activityList: activityList.value + })) + } catch (e) {} + } // =======方法======= const formatDate = (date) => { @@ -207,6 +242,7 @@ bannerList.value = newList await nextTick() bannerSwiperKey.value++ + saveHomeCache() } } } catch (err) { @@ -235,6 +271,7 @@ getCurrentVillage().then(res => { if (res.code === 200 && res.data && res.data.villageId) { currentCommunity.value = res.data.villageName || '未命名小区' + saveHomeCache() currentVillageId.value = res.data.villageId uni.setStorageSync('currentVillageId', res.data.villageId) } else { @@ -256,7 +293,7 @@ if (res.code === 200) { if (res.data) { noticeText.value = res.data.noticeTitle || '' - noticeId.value = res.data.noticeId || '' + noticeId.value = res.data.noticeId || ''; saveHomeCache() } else { noticeText.value = '暂无公告' noticeId.value = '' @@ -270,20 +307,19 @@ const refreshAllData = async () => { const token = uni.getStorageSync('token') || '' + dataLoaded.value = true const needReload = uni.getStorageSync('needReloadUserInfo') if (token && needReload) { - try { - const res = await getReloadUserInfo() + uni.removeStorageSync('needReloadUserInfo') + getReloadUserInfo().then(res => { if (res.code === 200 && res.data) { if (res.data.userId) uni.setStorageSync('userId', res.data.userId) const reloadedVillageId = res.data.currentVillageId || 0 uni.setStorageSync('currentVillageId', reloadedVillageId) } - } catch (err) { + }).catch(err => { console.error('重新加载用户信息失败', err) - } finally { - uni.removeStorageSync('needReloadUserInfo') - } + }) } getCurrentCommunityData() getNoticeData() @@ -314,16 +350,34 @@ onShow(() => { const currentUserId = uni.getStorageSync('userId') || '' - if (lastUserId.value && lastUserId.value !== currentUserId) { + const userIdChanged = lastUserId.value && lastUserId.value !== currentUserId + refreshing.value = false + if (userIdChanged) { resetPageData() refreshAllData() - } else { + } else if (!dataLoaded.value) { + // 首次进入且之前因无 token 跳过了 API,现在有 token 则补拉 refreshAllData() } lastUserId.value = currentUserId }) onLoad(() => { + // 新用户(未看过引导页且未登录)跳转引导页 + var hasShowGuide = uni.getStorageSync('hasShowGuide') + var token = uni.getStorageSync('token') + if (!hasShowGuide && !token) { + uni.reLaunch({ url: '/pages/navigation/navigation' }) + return + } + // 优先展示缓存数据,实现冷启动秒开 + loadHomeCache() + // 关闭原生 splash,避免 WebView 初始化期间一直转圈 + // #ifdef APP-PLUS + try { plus.navigator.closeSplashscreen() } catch (e) {} + // #endif + // 后台静默刷新最新数据 + refreshAllData() uni.$on('confirm', slelctHomeData) lastUserId.value = uni.getStorageSync('userId') || '' }) @@ -358,7 +412,7 @@ try { const res = await getActivitylatest({ villageId: uni.getStorageSync('currentVillageId') }) if (res.code === 200) { - activityList.value = res.data || [] + activityList.value = res.data || []; saveHomeCache() } else { activityList.value = [] } @@ -634,6 +688,9 @@ color: #333; margin-bottom: 12px; line-height: 1.4; + white-space: normal; + word-break: break-all; + overflow-wrap: break-word; } .activity-time { diff --git a/property-uniapp-project/pages/myIndex/myIndex.vue b/property-uniapp-project/pages/myIndex/myIndex.vue index 42c8f28..3223ebe 100644 --- a/property-uniapp-project/pages/myIndex/myIndex.vue +++ b/property-uniapp-project/pages/myIndex/myIndex.vue @@ -148,8 +148,16 @@ complete: () => {} }); } + let lastUserIdMy = '' onShow(() =>{ - getUserInfoData() + const token = uni.getStorageSync('token') + if (!token) return + const currentUserId = uni.getStorageSync('userId') || '' + // 仅登录状态变化时刷新,切后台回来直接用缓存 + if (currentUserId !== lastUserIdMy) { + lastUserIdMy = currentUserId + getUserInfoData() + } }) diff --git a/property-uniapp-project/pages/navigation/navigation.vue b/property-uniapp-project/pages/navigation/navigation.vue index 0a3e493..b15f9ca 100644 --- a/property-uniapp-project/pages/navigation/navigation.vue +++ b/property-uniapp-project/pages/navigation/navigation.vue @@ -73,30 +73,17 @@