diff --git a/App.vue b/App.vue
index 70df386..013f263 100644
--- a/App.vue
+++ b/App.vue
@@ -62,12 +62,12 @@ export default {
},
onShow: function () {
console.log("App Show");
- // 如果不是首次启动才调用登录记录接口,避免与onLaunch重复调用
- if (!this.isFirstLaunch) {
- this.callLoginRecordApi();
- } else {
- this.isFirstLaunch = false; // 重置标志
- }
+ // // 如果不是首次启动才调用登录记录接口,避免与onLaunch重复调用,有问题,当用户分享的时候,会频繁触发
+ // if (!this.isFirstLaunch) {
+ // this.callLoginRecordApi();
+ // } else {
+ // this.isFirstLaunch = false; // 重置标志
+ // }
},
onHide: function () {
console.log("App Hide");
diff --git a/components/empty-state/empty-state.vue b/components/empty-state/empty-state.vue
new file mode 100644
index 0000000..f73744c
--- /dev/null
+++ b/components/empty-state/empty-state.vue
@@ -0,0 +1,58 @@
+
+
+
+ {{ message }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages.json b/pages.json
index c9a053e..e5eb9b2 100644
--- a/pages.json
+++ b/pages.json
@@ -466,6 +466,13 @@
{
"navigationStyle": "custom"
}
+ },
+ {
+ "path" : "pages/shouye/danye",
+ "style" :
+ {
+ "navigationStyle": "custom"
+ }
}
],
"subPackages": [{
diff --git a/pages/infinite/bonus_house.vue b/pages/infinite/bonus_house.vue
index 528832f..c681916 100644
--- a/pages/infinite/bonus_house.vue
+++ b/pages/infinite/bonus_house.vue
@@ -17,78 +17,83 @@
-
-
-
+
+
+
+
+
+
+ {{ item.title }}
+ {{ item.tips }}
-
-
- {{ item.title }}
- {{ item.tips }}
-
-
- 马上参与
-
-
-
-
-
-
- x{{ item1.num }}
+
+ 马上参与
-
-
-
-
-
- {{ item.Popularity }}
-
-
- {{ item.Time }}
-
-
-
-
-
-
-
-
-
-
- {{ item.title }}
- {{ item.tips }}
-
-
- 已结束
-
-
-
-
-
-
- x{{ item1.num }}
+
+
+
+
+
+ x{{ item1.num }}
+
+
+
+
+
+
+ {{ item.Popularity }}
-
-
-
-
-
- {{ item.Popularity }}
-
- {{ item.Time }}
-
-
-
+ {{ item.Time }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ {{ item.tips }}
+
+
+ 已结束
+
+
+
+
+
+
+ x{{ item1.num }}
+
+
+
+
+
+
+ {{ item.Popularity }}
+
+
+ {{ item.Time }}
+
+
+
+
+
+
+
+
-
+
赏品记录
@@ -99,17 +104,21 @@
@@ -635,6 +723,8 @@ export default {
justify-content: space-between;
align-items: center;
padding: 10rpx 60rpx;
+ position: relative;
+ z-index: 1;
.tab-item {
@@ -642,6 +732,11 @@ export default {
height: 68rpx;
position: relative;
margin-right: 25rpx;
+ transition: all 0.3s ease;
+
+ &:active {
+ transform: scale(0.95);
+ }
&.act {
font-weight: 400;
@@ -657,6 +752,8 @@ export default {
width: 48rpx;
height: 4rpx;
background: #333333;
+ transition: all 0.3s cubic-bezier(0.68, -0.55, 0.27, 1.55);
+ animation: fadeInWidth 0.3s forwards;
}
}
@@ -664,10 +761,31 @@ export default {
font-weight: 400;
font-size: 28rpx;
color: #CCCCCC;
+
+ &::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 0;
+ height: 4rpx;
+ background: #333333;
+ transition: all 0.3s ease;
+ }
}
}
}
+@keyframes fadeInWidth {
+ from {
+ width: 0;
+ }
+ to {
+ width: 48rpx;
+ }
+}
+
.grid-container {
display: grid;
grid-template-columns: repeat(4, 124rpx);
@@ -682,11 +800,69 @@ export default {
.grid-item {
width: 142rpx;
height: 150rpx;
+ transition: all 0.3s ease;
+ padding: 8rpx;
+ border-radius: 12rpx;
+ position: relative;
+
+ &:active {
+ transform: translateY(-6rpx) scale(1.05);
+ background-color: rgba(0, 0, 0, 0.02);
+ }
+
+ image {
+ transition: all 0.25s ease;
+ box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.1);
+ }
+
+ &:active image {
+ box-shadow: 0 8rpx 12rpx rgba(0, 0, 0, 0.15);
+ }
+
+ text {
+ transition: color 0.25s ease;
+ }
+
+ &:active text {
+ color: #666 !important;
+ }
}
.button {
background-image: url($imgurl + 'checkin/ic_share.png');
background-size: 100% 100%;
+ transition: all 0.3s ease;
+ position: relative;
+ overflow: visible;
+ border: none !important;
+ outline: none !important;
+
+ &::after {
+ border: none !important;
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ top: -5rpx;
+ right: -5rpx;
+ bottom: -5rpx;
+ left: -5rpx;
+ border-radius: 50%;
+ background-color: rgba(0, 0, 0, 0.05);
+ transform: scale(0);
+ opacity: 0;
+ transition: all 0.2s ease;
+ }
+
+ &:active {
+ transform: scale(0.9) rotate(15deg);
+ }
+
+ &:active::before {
+ transform: scale(1);
+ opacity: 1;
+ }
}
.swiper-container {
@@ -743,14 +919,98 @@ export default {
border-radius: 16rpx;
margin-top: 32rpx;
box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
- transition: all 0.2s ease;
+ position: relative;
+ overflow: hidden;
+
+ // 页面加载动画
+ opacity: 0;
+ transform: translateY(20rpx);
+ transition: transform 0.5s ease, opacity 0.5s ease, background-color 0.2s ease, box-shadow 0.2s ease;
+ transition-delay: 0.3s;
+
+ &.show {
+ opacity: 1;
+ transform: translateY(0);
+ }
+
+ &.pulse {
+ animation: buttonPulse 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ }
+}
+
+.button-text {
+ color: #333333;
+ font-size: 32rpx;
+ font-weight: 600;
+ z-index: 2;
+ position: relative;
+}
+
+.popup-container {
+ width: 636rpx;
+ background-color: #FFFFFF;
+ border-radius: 16rpx;
+ overflow: hidden;
+ transform: scale(0.9);
+ opacity: 0;
+ animation: popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
+}
+
+.popup-title {
+ width: 100%;
+ height: 80rpx;
+ border-radius: 24rpx 24rpx 0 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 35rpx;
+ background-color: #f9f9f9;
+ position: relative;
+
+ &::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 10%;
+ width: 80%;
+ height: 1px;
+ background-color: #eee;
+ }
+}
+
+.popup-content {
+ padding: 24rpx;
+ font-size: 28rpx;
+ color: #666;
+ line-height: 1.5;
+}
+
+.popup-buttons {
+ display: flex;
+ width: 636rpx;
+ justify-content: space-around;
+ margin-top: 32rpx;
+ animation: slideUp 0.4s ease-out forwards;
+ animation-delay: 0.1s;
+ opacity: 0;
+ transform: translateY(20rpx);
+}
+
+.popup-button {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 200rpx;
+ height: 68rpx;
+ border-radius: 16rpx;
+ font-size: 24rpx;
+ font-weight: 600;
+ transition: all 0.25s ease;
position: relative;
overflow: hidden;
&:active {
transform: scale(0.95);
- background-color: #c5e822;
- box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
}
&::after {
@@ -760,7 +1020,7 @@ export default {
left: 50%;
width: 100rpx;
height: 100rpx;
- background-color: rgba(255, 255, 255, 0.4);
+ background-color: rgba(255, 255, 255, 0.3);
border-radius: 50%;
transform: translate(-50%, -50%) scale(0);
opacity: 0;
@@ -768,14 +1028,140 @@ export default {
}
&:active::after {
- transform: translate(-50%, -50%) scale(5);
+ transform: translate(-50%, -50%) scale(3);
opacity: 0;
}
+
+ text {
+ position: relative;
+ z-index: 1;
+ font-size: 24rpx;
+ font-weight: 600;
+ }
}
-.button-text {
- color: #333333;
- font-size: 32rpx;
- font-weight: 600;
+.cancel-button {
+ background-color: #FFFFFF;
+ border: 1px solid #eee;
+
+ text {
+ color: #333333;
+ }
+
+ &:active {
+ background-color: #f5f5f5;
+ }
+}
+
+.confirm-button {
+ background-color: #CDEF27;
+ box-shadow: 0 4rpx 8rpx rgba(205, 239, 39, 0.3);
+
+ text {
+ color: #333333;
+ }
+
+ &:active {
+ background-color: #b9d721;
+ box-shadow: 0 2rpx 4rpx rgba(205, 239, 39, 0.2);
+ }
+}
+
+@keyframes popIn {
+ from {
+ transform: scale(0.9);
+ opacity: 0;
+ }
+ to {
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+
+@keyframes slideUp {
+ from {
+ opacity: 0;
+ transform: translateY(20rpx);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.participant-row {
+ opacity: 0;
+ transform: translateX(-20rpx);
+ transition: all 0.4s ease;
+
+ &.show {
+ opacity: 1;
+ transform: translateX(0);
+ }
+}
+
+.award-row {
+ opacity: 0;
+ transform: translateX(-20rpx);
+ transition: all 0.4s ease;
+
+ &.show {
+ opacity: 1;
+ transform: translateX(0);
+ }
+}
+
+.header-info {
+ opacity: 0;
+ transform: translateY(-20rpx);
+ transition: all 0.5s ease;
+
+ &.show {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.tab-item {
+ opacity: 0;
+ transform: translateY(10rpx);
+ transition: all 0.4s ease;
+
+ &.show {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.content-area {
+ opacity: 0;
+ transform: translateY(20rpx);
+ transition: all 0.5s ease;
+ transition-delay: 0.2s;
+
+ &.show {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+@keyframes buttonPulse {
+ 0% {
+ transform: scale(1);
+ box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
+ }
+ 40% {
+ transform: scale(0.92);
+ box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.05);
+ }
+ 80% {
+ transform: scale(1.05);
+ box-shadow: 0 6rpx 10rpx rgba(0, 0, 0, 0.15);
+ background-color: #e0ff3a;
+ }
+ 100% {
+ transform: scale(1);
+ box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
+ }
}
\ No newline at end of file
diff --git a/pages/infinite/daily_check_in.vue b/pages/infinite/daily_check_in.vue
index fb7926b..f571d35 100644
--- a/pages/infinite/daily_check_in.vue
+++ b/pages/infinite/daily_check_in.vue
@@ -2,7 +2,7 @@
-
@@ -14,14 +14,13 @@
-
-
@@ -69,7 +68,7 @@
-
{{ !is_sign ? "今日已签到" : "每日签到"
}}
@@ -179,7 +178,7 @@ export default {
data.continuous_configs.forEach(item => {
let t = {
Days: item.day,
- isClaim: item.is_sign === 2 ? true : false,
+ isClaim: item.is_sign === 1 ? true : false,
tips: item.description || '',
icon:item.icon
};
@@ -224,6 +223,21 @@ export default {
\ No newline at end of file
diff --git a/pages/infinite/index.vue b/pages/infinite/index.vue
index e2cda8c..dcc37f7 100644
--- a/pages/infinite/index.vue
+++ b/pages/infinite/index.vue
@@ -4,7 +4,7 @@
-
+
{{ item.name }}
@@ -51,6 +51,8 @@
//跳转页面
toPage(item) {
if (item.url) {
+ console.log(item);
+ uni.setStorageSync('fuliwu_title', item.name)
this.$c.to({
url: item.url
});
@@ -79,17 +81,67 @@
/* 三列,每列宽度相等 */
gap: 40rpx 42rpx;
/* 网格之间的间隔 */
+ animation: fadeIn 0.5s ease-out;
+ }
+
+ @keyframes fadeIn {
+ from {
+ opacity: 0;
+ transform: translateY(20rpx);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
}
.grid-item {
position: relative;
- background-color: #D8D8D8;
+
text-align: center;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
+ animation: scaleIn 0.5s cubic-bezier(0.4, 0, 0.2, 1);
+ animation-fill-mode: both;
+ transition: all 0.3s ease;
+
+ &:active {
+ transform: scale(0.95);
+ box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
+ }
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 100%;
+ height: 100%;
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: 50%;
+ transform: translate(-50%, -50%) scale(0);
+ opacity: 0;
+ transition: transform 0.6s ease-out, opacity 0.6s ease-out;
+ }
+
+ &:active::after {
+ transform: translate(-50%, -50%) scale(2);
+ opacity: 0;
+ }
+ }
+
+ @keyframes scaleIn {
+ from {
+ opacity: 0;
+ transform: scale(0.8);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1);
+ }
}
.grid-item-bg {
@@ -99,11 +151,23 @@
top: 0;
left: 0;
z-index: 1;
+ transition: transform 0.3s ease;
}
.grid-item text {
z-index: 2;
color: #333;
font-size: 28rpx;
+ transition: all 0.3s ease;
+ text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
+ }
+
+ // 为每个网格项添加延迟动画
+ .grid-item {
+ @for $i from 1 through 10 {
+ &:nth-child(#{$i}) {
+ animation-delay: #{$i * 0.1}s;
+ }
+ }
}
\ No newline at end of file
diff --git a/pages/shouye/danye.vue b/pages/shouye/danye.vue
new file mode 100644
index 0000000..0995dac
--- /dev/null
+++ b/pages/shouye/danye.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/shouye/detail copy.vue b/pages/shouye/detail copy.vue
deleted file mode 100644
index 2700ba4..0000000
--- a/pages/shouye/detail copy.vue
+++ /dev/null
@@ -1,3310 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.title }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.shang_title }}
- {{ item.surplus_stock }}/{{ item.stock }}
-
-
-
- {{ item.title }}
- {{ item.pro }}
-
- 参考价:{{ goods.type == 5 ? '' : '¥' }}{{ item.price
- }}{{ goods.type == 5 ? '积分' : '' }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.shang_title }}
-
-
-
-
-
-
-
-
-
- {{ item.user_info.nickname }}
-
-
- {{ item.addtime }}
-
-
-
-
-
- {{ item.shang_title }}
-
-
-
-
- {{ item.goodslist_title }}
-
- ×1
-
-
-
-
-
-
-
-
-
-
- 冲一发
-
-
-
- 冲三发
-
-
-
- 冲五发
-
-
-
-
-
- 换箱
-
-
-
-
-
- {{
- lock_info.lock_is == 1 && lock_info.goods_lock_surplus_time !== 0
- ? '锁箱中'
- : '自由模式'
- }}
-
-
-
- 抱箱
-
-
-
-
-
-
-
-
-
-
- 一发入魂
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 购买说明
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 确认订单
-
-
-
-
-
-
-
-
-
- {{ pay_news.goods.title }}
- 类型:明信片
-
-
-
- {{ pay_news.goods.price }}元
-
-
- ×{{ pay_news.goods.prize_num }}
-
-
-
-
-
- 明信片×{{ pay_news.goods.prize_num }}
-
-
- 小计:{{ goods.box_type == 5 ? '' : '¥' }}
-
- {{ pay_news.order_total
- }}{{ goods.box_type == 5 ? '积分' : '' }}
-
-
-
-
-
- 支付方式
-
-
-
-
-
- 使用积分抵扣¥
- {{ pay_news.use_score }}
- (剩余:
- {{ pay_news.score }}
- )
-
-
-
-
-
-
-
-
-
- 优惠券
-
-
-
- {{ couponData ? `-${couponData.price}` : '未选择' }}
-
-
-
-
-
-
-
-
-
- 使用星钻抵扣¥
- {{ pay_news.use_integral }}
- (剩余:
- {{ pay_news.integral }}
- )
-
-
-
-
-
-
-
-
-
- 使用星钻抵扣¥
- {{ pay_news.use_money }}
- (剩余:
- {{ pay_news.money }}
- )
-
-
-
-
-
-
-
-
- 下单购买即表示同意
-
- 《用户服务协议条款》
-
-
-
-
- 共{{ pay_news.goods && pay_news.goods.prize_num }}抽总计:{{
- goods.box_type == 5 ? '' : '¥'
- }}
-
- {{ pay_news.price }}{{ goods.box_type == 5 ? '积分' : '' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ v.shang_title }}
-
- ×1
-
-
- {{ v.goodslist_title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ v.shang_title }}
-
-
-
-
-
- {{ v.title }}
-
-
-
- 产品类型:
- {{ $config.getAppSetting("app_name")}}
-
-
-
- 市场参考价:
- {{ v.sc_money }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 中赏记录
-
-
-
-
- {{ item.shang_title }}
-
-
-
-
-
-
-
-
-
- {{ item.user_info.nickname }}
-
-
- {{ item.addtime }}
-
-
-
-
-
- {{ item.goodslist_title }}
-
-
- X{{ item.prize_num }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ a.shang_title }}
-
-
-
-
-
-
- 跳过
-
-
-
-
-
-
-
-
-
-