diff --git a/pages/index/index.vue b/pages/index/index.vue index 5e45e20..ad5df09 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -126,9 +126,7 @@ 爆品拼团 - + @@ -147,7 +145,8 @@ ¥{{item.productList[0].originalPrice}} - 拼团¥{{item.productList[0].groupPrice}} + ¥{{item.productList[0].groupPrice}} + 去拼团 @@ -165,7 +164,8 @@ ¥{{item.productList[0].originalPrice}} - 拼团¥{{item.productList[0].groupPrice}} + ¥{{item.productList[0].groupPrice}} + 去拼团 @@ -174,9 +174,7 @@ 爆品拼团 - + @@ -195,7 +193,8 @@ ¥{{item.productList[0].originalPrice}} - 拼团¥{{item.productList[0].groupPrice}} + ¥{{item.productList[0].groupPrice}} + 去拼团 @@ -213,7 +212,8 @@ ¥{{item.productList[0].originalPrice}} - 拼团¥{{item.productList[0].groupPrice}} + ¥{{item.productList[0].groupPrice}} + 去拼团 @@ -261,7 +261,8 @@ - + 取餐地址 @@ -285,9 +286,11 @@ 佣金 - - - + + 取 @@ -296,7 +299,7 @@ {{getAreaData.title}} - 送 @@ -305,14 +308,27 @@ {{putAreaData.title}} + + + 佣 + + + 佣金优先 + + + v-if="getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin" + class="clear-filter"> 清空 - + + + 校园 + 暂时没有可抢订单 + 可以切换分类或调整筛选条件,新的校园订单会在这里出现 + @@ -1182,10 +1198,16 @@ this.searchForm.order = '' } } else if (type == 'delgetarea') { + this.searchForm.getAreaId = '' this.getAreaData = {} } else if (type == 'delputarea') { + this.searchForm.putAreaId = '' this.putAreaData = {} + } else if (type == 'delyongjin') { + this.checkYongjin = false + this.searchForm.order = '' } + this.searchForm.pageNum = 1 this.getDelivery(); }, // 获取用户位置 @@ -1227,8 +1249,23 @@ this.searchForm.kuaidiData = []; } this.getDelivery() + this.$nextTick(() => { + this.scrollToDaimaiPanel() + }) this.$forceUpdate() }, + scrollToDaimaiPanel() { + const query = uni.createSelectorQuery().in(this); + query.select('#menuList').boundingClientRect(rect => { + if (!rect) return; + const stickyTop = this.navBarHeight + 46; + const target = rect.top + this.lastScrollTop - stickyTop; + uni.pageScrollTo({ + scrollTop: target > 0 ? target : 0, + duration: 260 + }); + }).exec(); + }, makeCall(phone) { uni.makePhoneCall({ phoneNumber: phone @@ -1376,13 +1413,13 @@ .order-msg-box::after { content: ''; - width: 180rpx; - height: 180rpx; + width: 260rpx; + height: 150rpx; border-radius: 50%; - background: rgba(255, 216, 168, 0.22); + background: linear-gradient(135deg, rgba(255, 244, 217, 0.24) 0%, rgba(255, 244, 217, 0) 72%); position: absolute; - right: -72rpx; - top: -96rpx; + right: -130rpx; + top: -80rpx; } .order-msg-left { @@ -1508,13 +1545,13 @@ .menu-box::after { content: ''; - width: 210rpx; - height: 210rpx; + width: 280rpx; + height: 160rpx; border-radius: 50%; - background: rgba(166, 255, 234, 0.28); + background: linear-gradient(135deg, rgba(166, 255, 234, 0.18) 0%, rgba(166, 255, 234, 0) 74%); position: absolute; - right: -92rpx; - top: -122rpx; + right: -150rpx; + top: -92rpx; } .menu-list { @@ -1567,7 +1604,7 @@ box-sizing: border-box; position: sticky; top: 0; - z-index: 90; + z-index: 96; border-radius: 34rpx; background: rgba(255, 255, 255, 0.62); } @@ -1725,6 +1762,20 @@ border-radius: 34rpx; overflow: hidden; box-shadow: 0 18rpx 42rpx rgba(81, 139, 91, 0.1); + position: relative; + } + + .like-content-box::before { + content: ''; + width: 240rpx; + height: 520rpx; + background: linear-gradient(110deg, rgba(255, 255, 255, 0) 0%, rgba(255, 250, 213, 0.32) 45%, rgba(255, 255, 255, 0) 100%); + position: absolute; + top: -60rpx; + left: -280rpx; + transform: rotate(16deg); + animation: groupLightSweep 4.6s ease-in-out infinite; + z-index: 1; } .like-left { @@ -1736,6 +1787,13 @@ margin: 50rpx 0 0 3.3%; box-shadow: 0 12rpx 28rpx rgba(0, 35, 28, 0.05); overflow: hidden; + position: relative; + z-index: 2; + animation: groupCardFloat 3.6s ease-in-out infinite; + } + + .like-left:nth-child(2) { + animation-delay: 0.45s; } .like-content-title { @@ -1744,6 +1802,24 @@ position: relative; line-height: 70rpx; padding: 0 10rpx; + color: #173f36; + } + + .like-content-title::before { + content: 'HOT'; + height: 28rpx; + line-height: 28rpx; + padding: 0 10rpx; + border-radius: 999rpx; + background: linear-gradient(135deg, #ff8f70 0%, #ffd46f 100%); + color: #fff; + font-size: 18rpx; + font-weight: 900; + position: absolute; + top: 20rpx; + right: 42rpx; + box-shadow: 0 6rpx 12rpx rgba(255, 143, 112, 0.22); + animation: hotBadgePulse 1.5s ease-in-out infinite; } .like-content { @@ -1754,29 +1830,34 @@ .content-list { display: flex; margin-bottom: 10rpx; - transition: transform 0.18s ease; + border-radius: 20rpx; + transition: transform 0.18s ease, background 0.18s ease; } .content-list:active { - transform: scale(0.98); + background: rgba(255, 247, 215, 0.42); + transform: scale(0.98) translateY(-2rpx); } .list-img { - width: 37%; - height: 120rpx; - padding: 10rpx; + width: 42%; + height: 132rpx; + padding: 8rpx 6rpx 8rpx 10rpx; position: relative; + box-sizing: border-box; } .list-img img { width: 100%; height: 100%; border-radius: 14rpx; + box-shadow: 0 8rpx 16rpx rgba(0, 35, 28, 0.08); } .list-product { - width: 60%; - padding-top: 4rpx; + width: 56%; + padding: 4rpx 4rpx 0 12rpx; + box-sizing: border-box; } .list-name { @@ -1795,6 +1876,7 @@ left: 10rpx; font-weight: 700; box-shadow: 0 4rpx 10rpx rgba(0, 35, 28, 0.08); + animation: groupMemberPulse 1.8s ease-in-out infinite; } .list-text { @@ -1812,6 +1894,109 @@ .list-total { font-size: 20rpx; + font-weight: 800; + color: #5f4a24; + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 2rpx; + } + + .list-total text { + font-size: 22rpx; + font-weight: 900; + animation: groupPricePop 1.7s ease-in-out infinite; + } + + .group-cta { + display: inline-block; + height: 30rpx; + line-height: 30rpx; + margin-left: 6rpx; + padding: 0 10rpx; + border-radius: 999rpx; + background: linear-gradient(135deg, #ff8f70 0%, #ffd46f 100%); + color: #fff; + font-size: 18rpx; + font-weight: 900; + box-shadow: 0 6rpx 14rpx rgba(255, 143, 112, 0.24); + animation: groupCtaNudge 1.9s ease-in-out infinite; + } + + @keyframes groupLightSweep { + 0% { + left: -300rpx; + opacity: 0; + } + + 35% { + opacity: 1; + } + + 70% { + left: 720rpx; + opacity: 0; + } + + 100% { + left: 720rpx; + opacity: 0; + } + } + + @keyframes groupCardFloat { + 0%, + 100% { + transform: translateY(0); + } + + 50% { + transform: translateY(-5rpx); + } + } + + @keyframes hotBadgePulse { + 0%, + 100% { + transform: scale(1); + } + + 50% { + transform: scale(1.08); + } + } + + @keyframes groupMemberPulse { + 0%, + 100% { + transform: scale(1); + } + + 50% { + transform: scale(1.06); + } + } + + @keyframes groupPricePop { + 0%, + 100% { + transform: scale(1); + } + + 50% { + transform: scale(1.08); + } + } + + @keyframes groupCtaNudge { + 0%, + 100% { + transform: translateX(0); + } + + 50% { + transform: translateX(5rpx); + } } .list-1 { @@ -2109,11 +2294,17 @@ display: flex; position: sticky; top: 0; - z-index: 90; + z-index: 95; background: rgba(255, 255, 255, 0.96); padding: 20rpx 10rpx 0; box-sizing: border-box; box-shadow: 0 12rpx 26rpx rgba(0, 35, 28, 0.05); + border-bottom-left-radius: 26rpx; + border-bottom-right-radius: 26rpx; + } + + .title-sort--sticky { + animation: stickyPanelIn 0.24s ease; } .sort-text { @@ -2121,10 +2312,19 @@ display: flex; position: sticky; top: 0; - z-index: 90; + z-index: 94; background: rgba(255, 255, 255, 0.96); - padding: 0 10rpx 4rpx; + padding: 0 10rpx 8rpx; box-sizing: border-box; + box-shadow: 0 12rpx 22rpx rgba(0, 35, 28, 0.04); + animation: filterChipIn 0.22s ease; + } + + .sort-text-inner { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 100%; } .sort-member { @@ -2148,7 +2348,7 @@ overflow: scroll; background: rgba(0, 35, 28, 0.82); position: absolute; - top: 145rpx; + top: 76rpx; right: 0; border-radius: 24rpx; color: #fff; @@ -2162,7 +2362,10 @@ .guize1-qusong { display: flex; - margin: 0 40rpx 20rpx 0; + align-items: center; + margin: 0 18rpx 14rpx 0; + max-width: 300rpx; + animation: filterChipIn 0.22s ease; } .qusong1 { @@ -2188,6 +2391,109 @@ font-weight: 700; border-top-right-radius: 40rpx; border-bottom-right-radius: 40rpx; + max-width: 230rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .commission-chip { + background: rgba(255, 221, 176, 0.72); + } + + .clear-filter { + height: 40rpx; + padding: 0 20rpx; + margin-bottom: 14rpx; + border-radius: 999rpx; + background: rgba(0, 191, 255, 0.08); + color: #00A8D8; + font-size: 24rpx; + font-weight: 800; + line-height: 40rpx; + } + + .delivery-list-wrap { + min-height: 520rpx; + } + + .empty-delivery { + width: 98%; + min-height: 360rpx; + margin: 24rpx auto 0; + padding: 54rpx 36rpx; + box-sizing: border-box; + border-radius: 36rpx; + border: 1px solid rgba(166, 255, 234, 0.5); + background: + radial-gradient(circle at 78% 8%, rgba(255, 216, 168, 0.28) 0, rgba(255, 216, 168, 0) 150rpx), + linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(247, 255, 251, 0.96) 100%); + box-shadow: 0 16rpx 38rpx rgba(0, 35, 28, 0.06); + text-align: center; + animation: emptyFloatIn 0.32s ease; + } + + .empty-delivery-icon { + width: 104rpx; + height: 104rpx; + margin: 0 auto 22rpx; + border-radius: 36rpx; + background: linear-gradient(135deg, #fff7d7 0%, #a6ffea 100%); + color: #125e50; + font-size: 28rpx; + font-weight: 900; + line-height: 104rpx; + box-shadow: 0 14rpx 26rpx rgba(0, 35, 28, 0.08); + } + + .empty-delivery-title { + color: #243f38; + font-size: 30rpx; + font-weight: 900; + } + + .empty-delivery-desc { + width: 88%; + margin: 14rpx auto 0; + color: #74817d; + font-size: 24rpx; + line-height: 38rpx; + } + + @keyframes stickyPanelIn { + 0% { + opacity: 0.88; + transform: translateY(-8rpx); + } + + 100% { + opacity: 1; + transform: translateY(0); + } + } + + @keyframes filterChipIn { + 0% { + opacity: 0; + transform: translateY(-8rpx) scale(0.98); + } + + 100% { + opacity: 1; + transform: translateY(0) scale(1); + } + } + + @keyframes emptyFloatIn { + 0% { + opacity: 0; + transform: translateY(18rpx); + } + + 100% { + opacity: 1; + transform: translateY(0); + } } .box1 { width: 95%;