From 48e037e44e870fb8e69f64936884de3ed05599ac Mon Sep 17 00:00:00 2001 From: LinCyJang Date: Mon, 1 Jun 2026 00:46:54 +0800 Subject: [PATCH 1/5] =?UTF-8?q?Feat=EF=BC=9A=E7=A4=BC=E5=8C=85=E5=8D=A1?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg_user/views/giftList.vue | 129 ++++++++++++++++++++++++++++++------ 1 file changed, 108 insertions(+), 21 deletions(-) diff --git a/pkg_user/views/giftList.vue b/pkg_user/views/giftList.vue index 6bb3b3c..6e2f5e3 100644 --- a/pkg_user/views/giftList.vue +++ b/pkg_user/views/giftList.vue @@ -121,6 +121,9 @@ + + {{ sendLoading ? '加载中...' : (sendHasMore ? '上拉加载更多' : '没有更多了') }} + @@ -203,6 +206,9 @@ + + {{ receiveLoading ? '加载中...' : (receiveHasMore ? '上拉加载更多' : '没有更多了') }} + @@ -283,6 +289,15 @@ export default { giftItem: {}, orderInfo: {}, isShowPayPwdPop: false, + pageSize: 10, + sendPage: 1, + receivePage: 1, + sendLoading: false, + receiveLoading: false, + sendHasMore: true, + receiveHasMore: true, + sendInited: false, + receiveInited: false } }, computed: mapGetters(["userInfo"]), @@ -290,7 +305,14 @@ export default { giftNotice().then(res => { this.giftNotice = res.data }) - this.getGiftCardSendList() + this.getGiftCardSendList(true) + }, + onReachBottom() { + if (this.cateIndex === 0) { + this.getGiftCardSendList() + return + } + this.getGiftCardReceiveList() }, onShareAppMessage() { uni.updateShareMenu({ @@ -318,7 +340,7 @@ export default { id: item.id }).then(qRes => { if (qRes.success) { - this.getGiftCardSendList() + this.getGiftCardSendList(true) } }).finally(() => { uni.hideLoading() @@ -338,7 +360,7 @@ export default { //网络请求 yuePayOrderHandle(this.orderInfo.orderId, "yue", this.from, payPwd).then(res => { console.log(res); - this.getGiftCardSendList() + this.getGiftCardSendList(true) this.payPassword = ""; }) }, @@ -348,7 +370,7 @@ export default { wechatPay(type) { payOrderHandle(this.orderInfo.orderId, type, this.from).then(res => { console.log(res); - this.getGiftCardSendList() + this.getGiftCardSendList(true) }) }, goBuy(order) { @@ -370,43 +392,102 @@ export default { cateItemClickHanlde(item, index) { if (this.cateIndex === index || !this.isLoad) return this.cateIndex = index - if (this.cateIndex === 0) { - this.getGiftCardSendList() + if (this.cateIndex === 0 && !this.sendInited) { + this.getGiftCardSendList(true) } - if (this.cateIndex === 1) { - this.getGiftCardReceiveList() + if (this.cateIndex === 1 && !this.receiveInited) { + this.getGiftCardReceiveList(true) } }, - getGiftCardReceiveList() { - this.isLoad = false + getListResult(data, page) { + const list = Array.isArray(data) + ? data + : (data && (data.records || data.list || data.data)) || [] + const pageCount = Number( + data && (data.pages || data.totalPage || data.last_page || data.pageCount || 0) + ) + const total = Number( + data && (data.total || data.totalCount || data.count || 0) + ) + let hasMore = false + if (pageCount > 0) { + hasMore = page < pageCount + } else if (total > 0) { + hasMore = page * this.pageSize < total + } else { + hasMore = list.length >= this.pageSize + } + return { + list, + hasMore + } + }, + getGiftCardReceiveList(reset = false) { + if (this.receiveLoading) return + if (!reset && !this.receiveHasMore) return + const page = reset ? 1 : this.receivePage + if (reset) { + this.receivePage = 1 + this.receiveHasMore = true + this.receiveList = [] + } + if (page === 1 && this.cateIndex === 1) { + this.isLoad = false + } + this.receiveLoading = true giftCardReceiveList({ - page: 1, - limit: 999 + page, + limit: this.pageSize }).then(res => { const { success, data } = res if (success) { - this.receiveList = data || [] + const { list, hasMore } = this.getListResult(data, page) + this.receiveList = page === 1 ? list : this.receiveList.concat(list) + this.receiveHasMore = hasMore + this.receivePage = page + 1 + this.receiveInited = true } }).catch(err => { console.log(err) }).finally(() => { - this.isLoad = true + this.receiveLoading = false + if (this.cateIndex === 1) { + this.isLoad = true + } }) }, - getGiftCardSendList() { - this.isLoad = false + getGiftCardSendList(reset = false) { + if (this.sendLoading) return + if (!reset && !this.sendHasMore) return + const page = reset ? 1 : this.sendPage + if (reset) { + this.sendPage = 1 + this.sendHasMore = true + this.sendList = [] + } + if (page === 1 && this.cateIndex === 0) { + this.isLoad = false + } + this.sendLoading = true giftCardSendList({ - page: 1, - limit: 999 + page, + limit: this.pageSize }).then(res => { const { success, data } = res if (success) { - this.sendList = data || [] + const { list, hasMore } = this.getListResult(data, page) + this.sendList = page === 1 ? list : this.sendList.concat(list) + this.sendHasMore = hasMore + this.sendPage = page + 1 + this.sendInited = true } }).catch(err => { console.log(err) }).finally(() => { - this.isLoad = true + this.sendLoading = false + if (this.cateIndex === 0) { + this.isLoad = true + } }) }, getStatus(order) { @@ -655,4 +736,10 @@ export default { line-height: 40rpx; font-size: 26rpx; } - \ No newline at end of file +.load-more { + padding: 0 0 24rpx; + text-align: center; + font-size: 24rpx; + color: #999; +} + From 4eb12b7a70d47a522c3688bff38d140566e67d3a Mon Sep 17 00:00:00 2001 From: LinCyJang Date: Mon, 1 Jun 2026 01:07:28 +0800 Subject: [PATCH 2/5] =?UTF-8?q?Feat=EF=BC=9A=E5=8E=BF=E5=9F=9F=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=8A=A0=E8=BD=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg_product/views/famousQianxianShop.vue | 503 +++++++++++++++++------ 1 file changed, 382 insertions(+), 121 deletions(-) diff --git a/pkg_product/views/famousQianxianShop.vue b/pkg_product/views/famousQianxianShop.vue index 69fec10..2718bed 100644 --- a/pkg_product/views/famousQianxianShop.vue +++ b/pkg_product/views/famousQianxianShop.vue @@ -349,7 +349,7 @@ - + @@ -401,7 +401,7 @@ v-if="activeIndex === 2" class="guide-section" > - + --> - + @@ -533,6 +533,9 @@ + + {{ getLoadMoreText(industryLoading || investmentLoading, industryHasMore || investmentHasMore, industryList.length ? industryList : investmentFileList) }} + @@ -907,7 +919,6 @@ import { postCountyFamousNewsZan, postCountyFamousNewsView, getCountyFamousIndustry, - getCountyFamousIndustryProject, getCountyFamousInvestmentFile, getCountyFamousVillage, getCountyFamousCityDetail, @@ -958,6 +969,7 @@ export default { showShare: false, posterUrl: '', // 分享海报 id: null, + pageSize: 10, partnerId: null, isLike: false, //点赞 isFavorite: false, @@ -1006,10 +1018,42 @@ export default { countyId: null, newsCategoryList: [], newsCurrent: 0, + newsCategoryInited: false, + newsCategoryLoading: false, shopList: [], shopTypeList: [], shopTypeActive: '', - detail: {} + shopTypeInited: false, + detail: {}, + infoPage: 1, + infoHasMore: true, + infoLoading: false, + infoInited: false, + guidePage: 1, + guideHasMore: true, + guideLoading: false, + guideInited: false, + industryPage: 1, + industryHasMore: true, + industryLoading: false, + industryInited: false, + investmentPage: 1, + investmentHasMore: true, + investmentLoading: false, + investmentInited: false, + shopPage: 1, + shopHasMore: true, + shopLoading: false, + shopInited: false, + jiaLouPage: 1, + jiaLouHasMore: true, + jiaLouLoading: false, + jiaLouInited: false, + villagePage: 1, + villageHasMore: true, + villageLoading: false, + villageInited: false, + saleListInited: false } }, onShareAppMessage() { @@ -1027,6 +1071,35 @@ export default { onPageScroll(e) { this.scrollData = e }, + onReachBottom() { + if (this.activeIndex === 3) { + this.getInfoReq() + return + } + if (this.activeIndex === 2) { + this.getGuideReq() + return + } + if (this.activeIndex !== 0) { + return + } + if (this.industryTabIndex === 0) { + this.getIndustryReq() + this.getInvestmentFileReq() + return + } + if (this.industryTabIndex === 1) { + this.getShopList() + return + } + if (this.industryTabIndex === 2) { + this.getJiaLouListReq() + return + } + if (this.industryTabIndex === 3) { + this.getVillageListReq() + } + }, onLoad(options) { const id = options.id || '' this.id = id @@ -1044,29 +1117,77 @@ export default { } if (this.partnerId) cookie.set('spread', this.partnerId) this.getShopDetailReq() - this.getInfoReq() - this.getGuideReq() - // this.initPoster() this.getListReq() - this.getSaleListReq() this.queryGuide('countyFamousIndex') - this.getCityNewsCategoryReq() }, methods: { + getPageList(data) { + if (Array.isArray(data)) { + return data + } + return (data && (data.records || data.list || data.data)) || [] + }, + getHasMore(data, list, page) { + const pageCount = Number( + data && (data.pages || data.totalPage || data.last_page || data.pageCount || 0) + ) + const total = Number( + data && (data.total || data.totalCount || data.count || 0) + ) + if (pageCount > 0) { + return page < pageCount + } + if (total > 0) { + return page * this.pageSize < total + } + return list.length >= this.pageSize + }, + getLoadMoreText(loading, hasMore, list) { + if (!list.length) return '' + if (loading) return '加载中...' + if (hasMore) return '上拉加载更多' + return '没有更多了' + }, + formatInfoList(list = []) { + return list.map(info => { + var pt = info.createTime.replace(/-/g, "/") + info.year = formatDateTime(pt, 'yyyy') + info.monthDay = formatDateTime(pt, 'MM/dd') + info.time = formatDateTime(pt, 'HH:mm:ss') + info.showMore = false + return info + }) + }, + formatGuideList(list = []) { + return list.map((info) => { + var pt = info.createTime.replace(/-/g, "/") + info.year = formatDateTime(pt, 'yyyy') + info.monthDay = formatDateTime(pt, 'MM/dd') + info.time = formatDateTime(pt, 'HH:mm:ss') + return info + }) + }, /** * 获取县城资讯类别 */ getCityNewsCategoryReq() { - getCityNewsCategory().then(res => { + if (this.newsCategoryInited || this.newsCategoryLoading) { + return Promise.resolve() + } + this.newsCategoryLoading = true + return getCityNewsCategory().then(res => { if(res.status === 200) { this.newsCategoryList = [{name: '全部', id: ''}].concat(res.data || []) + this.newsCategoryInited = true } + }).finally(() => { + this.newsCategoryLoading = false }) }, changeNewsTab(index) { if (this.newsCurrent === index) return this.newsCurrent = index - this.getInfoReq() + this.getInfoReq(true) }, formatterTime(time) { const now = new Date(); @@ -1229,27 +1350,18 @@ export default { } else { this.saleActived = e.id } - - getCountyFamousVillage({ - countyFamousDataId: this.id, - categoryId: this.saleActived, - page: 1, - limit: 9999 - }).then(res => { - const { success, data } = res - if (success) { - this.villageList = data.records || [] - } - }) + this.getVillageListReq(true) }, getSaleListReq() { - const params = { - countyFamousDataId: this.id, - page: 1, - limit: 9999 + if (this.saleListInited) { + return Promise.resolve() } - getSaleList(params).then(res => { + const params = { + countyFamousDataId: this.id + } + return getSaleList(params).then(res => { this.saleList = [{name: '全部', id: ''}].concat(res.data || []) + this.saleListInited = true }) }, goStore(item) { @@ -1276,49 +1388,9 @@ export default { } }) }, - getListReq(id) { - // getPoster(this.id).then(({data}) => this.posterUrl = data) - getCountyFamousIndustry({ - countyFamousDataId: this.id, - page: 1, - limit: 9999 - }).then(res => { - const { success, data } = res - if (success) { - this.industryList = data.records || [] - } - }) - getCountyFamousIndustryProject({ - countyFamousDataId: this.id, - page: 1, - limit: 9999 - }).then(res => { - const { success, data } = res - if (success) { - this.industryProjectList = data.records || [] - } - }) - getCountyFamousInvestmentFile({ - countyFamousDataId: this.id, - page: 1, - limit: 9999 - }).then(res => { - const { success, data } = res - if (success) { - this.investmentFileList = data.records || [] - } - }) - getCountyFamousVillage({ - countyFamousDataId: this.id, - categoryId: id, - page: 1, - limit: 9999 - }).then(res => { - const { success, data } = res - if (success) { - this.villageList = data.records || [] - } - }) + getListReq() { + this.getIndustryReq(true) + this.getInvestmentFileReq(true) getCountyFamousCityDetail(this.id).then(res => { const { success, data } = res if (success) { @@ -1405,34 +1477,38 @@ export default { }) }, // 资讯 - getInfoReq() { + getInfoReq(reset = false) { const _this = this - if (_this.loading) { + if (_this.infoLoading) { + return + } + if (!reset && !_this.infoHasMore) { return } _this.isLoadInfoListSuccess = false - _this.loading = true - _this.infoArray = [] + _this.infoLoading = true + const page = reset ? 1 : _this.infoPage + if (reset) { + _this.infoPage = 1 + _this.infoHasMore = true + _this.infoArray = [] + } const categoryId = this.newsCategoryList[this.newsCurrent] ? this.newsCategoryList[this.newsCurrent].id : '' getCountyFamousCityNews({ - page: 1, - limit: 9999, + page, + limit: this.pageSize, countyFamousDataId: _this.id, categoryId: categoryId }).then(res => { const { data } = res - _this.loading = false - _this.infoArray.push.apply(_this.infoArray, _this.toTop(data.records).map((info) => { - var pt = info.createTime.replace(/-/g, "/") - info.year = formatDateTime(pt, 'yyyy') - info.monthDay = formatDateTime(pt, 'MM/dd') - info.time = formatDateTime(pt, 'HH:mm:ss') - info.showMore = false - return info - })) - // console.log(this.toTop(_this.infoArray)); + const list = _this.formatInfoList(_this.getPageList(data)) + const merged = page === 1 ? list : _this.infoArray.concat(list) + _this.infoArray = _this.toTop(merged) + _this.infoHasMore = _this.getHasMore(data, list, page) + _this.infoPage = page + 1 + _this.infoInited = true }).finally(() => { - _this.loading = false + _this.infoLoading = false _this.isLoadInfoListSuccess = true uni.stopPullDownRefresh() }) @@ -1443,30 +1519,35 @@ export default { }) }, // 攻略 - getGuideReq() { + getGuideReq(reset = false) { const _this = this - if (_this.loading) { + if (_this.guideLoading) { + return + } + if (!reset && !_this.guideHasMore) { return } _this.isLoadGuideListoSuccess = false - _this.loading = true - _this.guideList = [] + _this.guideLoading = true + const page = reset ? 1 : _this.guidePage + if (reset) { + _this.guidePage = 1 + _this.guideHasMore = true + _this.guideList = [] + } getCountyFamousCityGuide({ - page: 1, - limit: 9999, + page, + limit: this.pageSize, countyFamousDataId: _this.id }).then(res => { const { data } = res - _this.loading = false - _this.guideList.push.apply(_this.guideList, data.records.map((info) => { - var pt = info.createTime.replace(/-/g, "/") - info.year = formatDateTime(pt, 'yyyy') - info.monthDay = formatDateTime(pt, 'MM/dd') - info.time = formatDateTime(pt, 'HH:mm:ss') - return info - })) + const list = _this.formatGuideList(_this.getPageList(data)) + _this.guideList = page === 1 ? list : _this.guideList.concat(list) + _this.guideHasMore = _this.getHasMore(data, list, page) + _this.guidePage = page + 1 + _this.guideInited = true }).finally(() => { - _this.loading = false + _this.guideLoading = false _this.isLoadGuideListoSuccess = true uni.stopPullDownRefresh() }) @@ -1478,10 +1559,35 @@ export default { // 刷新数据 switch (this.activeIndex) { case 3: - this.getInfoReq() + this.getCityNewsCategoryReq().finally(() => { + if (!this.infoInited) { + this.getInfoReq(true) + } + }) break case 2: - this.getGuideReq() + if (!this.guideInited) { + this.getGuideReq(true) + } + break + case 0: + if (this.industryTabIndex === 1) { + if (!this.shopTypeInited) { + this.getShopTypeList() + } + if (!this.shopInited) { + this.getShopList(true) + } + } + if (this.industryTabIndex === 2 && !this.jiaLouInited) { + this.getJiaLouListReq(true) + } + if (this.industryTabIndex === 3) { + this.getSaleListReq() + if (!this.villageInited) { + this.getVillageListReq(true) + } + } break default: break @@ -1726,26 +1832,30 @@ export default { if (index === this.industryTabIndex) return this.industryTabIndex = index if (index === 2) { - const params = { - countyId: this.countyId, - shopType: 'countyFamous', - name: '', - page: 1, - limit: 9999 + if (!this.jiaLouInited) { + this.getJiaLouListReq(true) } - getJiaLouList(params).then(res => { - this.jiaLouList = res.data.records || [] - }) } if (index === 1) { this.shopTypeActive = '' if (this.shopTypeList.length === 0) { this.getShopTypeList() } - this.getShopList() + if (!this.shopInited) { + this.getShopList(true) + } + } + if (index === 3) { + this.getSaleListReq() + if (!this.villageInited) { + this.getVillageListReq(true) + } } }, getShopTypeList() { + if (this.shopTypeInited) { + return + } getCountyFamousHotelType({ page: 1, limit: 9999 @@ -1754,25 +1864,170 @@ export default { ? res.data : (res.data && (res.data.hotelTypeList || res.data.list || res.data.records)) || [] this.shopTypeList = [{ name: '全部', id: '' }].concat(listData || []) + this.shopTypeInited = true }) }, - getShopList() { + getIndustryReq(reset = false) { + if (this.industryLoading) { + return + } + if (!reset && !this.industryHasMore) { + return + } + const page = reset ? 1 : this.industryPage + if (reset) { + this.industryPage = 1 + this.industryHasMore = true + this.industryList = [] + } + this.industryLoading = true + getCountyFamousIndustry({ + countyFamousDataId: this.id, + page, + limit: this.pageSize + }).then(res => { + const { success, data } = res + if (success) { + const list = this.getPageList(data) + this.industryList = page === 1 ? list : this.industryList.concat(list) + this.industryHasMore = this.getHasMore(data, list, page) + this.industryPage = page + 1 + this.industryInited = true + } + }).finally(() => { + this.industryLoading = false + }) + }, + getInvestmentFileReq(reset = false) { + if (this.investmentLoading) { + return + } + if (!reset && !this.investmentHasMore) { + return + } + const page = reset ? 1 : this.investmentPage + if (reset) { + this.investmentPage = 1 + this.investmentHasMore = true + this.investmentFileList = [] + } + this.investmentLoading = true + getCountyFamousInvestmentFile({ + countyFamousDataId: this.id, + page, + limit: this.pageSize + }).then(res => { + const { success, data } = res + if (success) { + const list = this.getPageList(data) + this.investmentFileList = page === 1 ? list : this.investmentFileList.concat(list) + this.investmentHasMore = this.getHasMore(data, list, page) + this.investmentPage = page + 1 + this.investmentInited = true + } + }).finally(() => { + this.investmentLoading = false + }) + }, + getJiaLouListReq(reset = false) { + if (this.jiaLouLoading || !this.countyId) { + return + } + if (!reset && !this.jiaLouHasMore) { + return + } + const page = reset ? 1 : this.jiaLouPage + if (reset) { + this.jiaLouPage = 1 + this.jiaLouHasMore = true + this.jiaLouList = [] + } + this.jiaLouLoading = true + const params = { + countyId: this.countyId, + shopType: 'countyFamous', + name: '', + page, + limit: this.pageSize + } + getJiaLouList(params).then(res => { + const list = this.getPageList(res.data) + this.jiaLouList = page === 1 ? list : this.jiaLouList.concat(list) + this.jiaLouHasMore = this.getHasMore(res.data, list, page) + this.jiaLouPage = page + 1 + this.jiaLouInited = true + }).finally(() => { + this.jiaLouLoading = false + }) + }, + getShopList(reset = false) { + if (this.shopLoading) { + return + } + if (!reset && !this.shopHasMore) { + return + } + const page = reset ? 1 : this.shopPage + if (reset) { + this.shopPage = 1 + this.shopHasMore = true + this.shopList = [] + } const params = { countyFamousDataId: this.id, - page: 1, - limit: 9999 + page, + limit: this.pageSize } if (this.shopTypeActive) { params.countyFamousHotelType = this.shopTypeActive } + this.shopLoading = true getCityShopList(params).then(res => { - this.shopList = (res.data && (res.data.records || res.data.list)) || [] + const list = this.getPageList(res.data) + this.shopList = page === 1 ? list : this.shopList.concat(list) + this.shopHasMore = this.getHasMore(res.data, list, page) + this.shopPage = page + 1 + this.shopInited = true + }).finally(() => { + this.shopLoading = false }) }, handleShopType(type) { if (this.shopTypeActive === type.id) return this.shopTypeActive = type.id - this.getShopList() + this.getShopList(true) + }, + getVillageListReq(reset = false) { + if (this.villageLoading) { + return + } + if (!reset && !this.villageHasMore) { + return + } + const page = reset ? 1 : this.villagePage + if (reset) { + this.villagePage = 1 + this.villageHasMore = true + this.villageList = [] + } + this.villageLoading = true + getCountyFamousVillage({ + countyFamousDataId: this.id, + categoryId: this.saleActived, + page, + limit: this.pageSize + }).then(res => { + const { success, data } = res + if (success) { + const list = this.getPageList(data) + this.villageList = page === 1 ? list : this.villageList.concat(list) + this.villageHasMore = this.getHasMore(data, list, page) + this.villagePage = page + 1 + this.villageInited = true + } + }).finally(() => { + this.villageLoading = false + }) }, fileItemClick(file) { const url = file.attachment || '' @@ -1900,6 +2155,12 @@ export default { white-space: nowrap; } } +.load-more-status{ + padding: 24rpx 0 8rpx; + text-align: center; + font-size: 24rpx; + color: #999; +} .video-item { width: 100%; height: 400rpx; From 0c738a2dc58c53344d58141b160e04bf5843a2e8 Mon Sep 17 00:00:00 2001 From: LinCyJang Date: Mon, 1 Jun 2026 01:22:20 +0800 Subject: [PATCH 3/5] =?UTF-8?q?Feat=EF=BC=9A=E5=BA=B7=E5=85=BB=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8A=A0=E8=BD=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg_product/views/healthFoods.vue | 83 +++++++++++++++++++++-------- pkg_product/views/healthSanctum.vue | 82 ++++++++++++++++++++-------- 2 files changed, 119 insertions(+), 46 deletions(-) diff --git a/pkg_product/views/healthFoods.vue b/pkg_product/views/healthFoods.vue index 171a0bc..5dc6137 100644 --- a/pkg_product/views/healthFoods.vue +++ b/pkg_product/views/healthFoods.vue @@ -164,10 +164,13 @@ + + {{ loading ? '加载中...' : (hasMore ? '上拉加载更多' : '没有更多了') }} +