From 1c97afb5c0351b80704b896546678efe5bbb547d Mon Sep 17 00:00:00 2001 From: "1054425342@qq.com" <1054425342@qq.com> Date: Tue, 16 Sep 2025 13:24:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=85=91=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 1 + components/DynamicIsland.vue | 101 +++++---- components/nmr-icon/nmr-icon.vue | 52 +++++ static/css/icon.scss | 22 ++ subPackages/points/index.vue | 360 ++++++++++++++++++++++++++++--- 5 files changed, 456 insertions(+), 80 deletions(-) create mode 100644 components/nmr-icon/nmr-icon.vue create mode 100644 static/css/icon.scss diff --git a/App.vue b/App.vue index 4099298..00e9868 100644 --- a/App.vue +++ b/App.vue @@ -353,6 +353,7 @@ export default { \ No newline at end of file diff --git a/components/nmr-icon/nmr-icon.vue b/components/nmr-icon/nmr-icon.vue new file mode 100644 index 0000000..58366f7 --- /dev/null +++ b/components/nmr-icon/nmr-icon.vue @@ -0,0 +1,52 @@ + + + + diff --git a/static/css/icon.scss b/static/css/icon.scss new file mode 100644 index 0000000..9488381 --- /dev/null +++ b/static/css/icon.scss @@ -0,0 +1,22 @@ +@font-face { + font-family: "des"; /* Project id 5022607 */ + src: url('//at.alicdn.com/t/c/font_5022607_r74iwur9ql.woff2?t=1757989865177') format('woff2'), + url('//at.alicdn.com/t/c/font_5022607_r74iwur9ql.woff?t=1757989865177') format('woff'), + url('//at.alicdn.com/t/c/font_5022607_r74iwur9ql.ttf?t=1757989865177') format('truetype'); +} + +.des { + font-family: "des" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.iconfont-jifen:before { + content: "\e614"; +} + +.iconfont-jifenduihuan:before { + content: "\e60b"; +} diff --git a/subPackages/points/index.vue b/subPackages/points/index.vue index 07ccd85..9320aa6 100644 --- a/subPackages/points/index.vue +++ b/subPackages/points/index.vue @@ -6,6 +6,12 @@ {{ totalPoints }} 当前积分 + + + + 兑换时间奖励 + + @@ -27,7 +33,7 @@ - + {{ item.dictName }} @@ -63,30 +69,87 @@ 暂无积分记录 + + + + + + 时间奖励兑换 + + + + + + + + 当前时间奖励值: + {{ userInfo&&userInfo.hourValue||0 }} + + + + + 兑换数量: + + + + + + 兑换规则: + + • 1个时间奖励值 = {{pointInfo.points||0}}积分 + + + + + + + + + + + @@ -270,6 +387,7 @@ background: linear-gradient(135deg, #77f3f9 0%, #764ba2 100%); padding: 60rpx 32rpx; text-align: center; + position: relative; } .total-points { @@ -289,7 +407,28 @@ font-size: 28rpx; color: rgba(255, 255, 255, 0.8); } - + + /* 时间奖励值 */ + .time-reward { + position: absolute; + top: 30rpx; + right: 32rpx; + display: flex; + align-items: center; + background: rgba(255, 255, 255, 0.2); + border-radius: 30rpx; + padding: 6rpx 10rpx; + border: 1rpx solid rgba(255, 255, 255, 0.3); + } + + .reward-icon { + margin-right: 8rpx; + font-size: 26rpx; + display: flex; + align-items: center; + color: white; + } + /* 筛选标签 */ .filter-tabs { display: flex; @@ -449,4 +588,155 @@ font-size: 28rpx; color: #999; } + + /* 兑换弹窗样式 */ + .exchange-modal { + width: 600rpx; + background: #fff; + border-radius: 20rpx; + overflow: hidden; + } + + .modal-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 40rpx 40rpx 20rpx; + border-bottom: 1rpx solid #f0f0f0; + } + + .modal-title { + font-size: 36rpx; + font-weight: 600; + color: #333; + } + + .close-btn { + width: 60rpx; + height: 60rpx; + display: flex; + align-items: center; + justify-content: center; + } + + .modal-content { + padding: 40rpx; + } + + .current-reward { + display: flex; + align-items: center; + margin-bottom: 40rpx; + padding: 20rpx; + background: #f8f9fa; + border-radius: 12rpx; + } + + .reward-label { + font-size: 28rpx; + color: #666; + } + + .reward-value { + font-size: 32rpx; + font-weight: 600; + color: #77f3f9; + margin-left: 10rpx; + } + + .exchange-form { + margin-bottom: 40rpx; + } + + .form-item { + margin-bottom: 20rpx; + } + + .form-label { + font-size: 28rpx; + color: #333; + margin-bottom: 12rpx; + display: block; + } + + .form-input { + width: 100%; + height: 80rpx; + border: 1rpx solid #ddd; + border-radius: 8rpx; + padding: 0 20rpx; + font-size: 28rpx; + box-sizing: border-box; + } + + .exchange-result { + padding: 20rpx; + background: #e8f5e8; + border-radius: 8rpx; + margin-top: 20rpx; + } + + .result-text { + font-size: 28rpx; + color: #52c41a; + font-weight: 500; + } + + .exchange-rules { + padding: 20rpx; + background: #f8f9fa; + border-radius: 12rpx; + } + + .rules-title { + font-size: 28rpx; + font-weight: 600; + color: #333; + margin-bottom: 16rpx; + display: block; + } + + .rules-list { + display: flex; + flex-direction: column; + gap: 8rpx; + } + + .rule-item { + font-size: 24rpx; + color: #666; + line-height: 1.5; + } + + .modal-footer { + display: flex; + gap: 20rpx; + padding: 20rpx 40rpx 40rpx; + } + + .cancel-btn, .confirm-btn { + flex: 1; + height: 80rpx; + border-radius: 8rpx; + font-size: 28rpx; + border: none; + display: flex; + align-items: center; + justify-content: center; + } + + .cancel-btn { + background: #f5f5f5; + color: #666; + } + + .confirm-btn { + background: #77f3f9; + color: #fff; + } + + .confirm-btn:disabled { + background: #ccc; + color: #999; + } \ No newline at end of file