From c8361f1a9080a9e52d0ac772bd59697ad318cfe9 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Mon, 05 Jan 2026 10:44:24 +0800
Subject: [PATCH] 1
---
src/page/user/compontents/notify-list.vue | 349 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 210 insertions(+), 139 deletions(-)
diff --git a/src/page/user/compontents/notify-list.vue b/src/page/user/compontents/notify-list.vue
index d363a43..cddfdef 100644
--- a/src/page/user/compontents/notify-list.vue
+++ b/src/page/user/compontents/notify-list.vue
@@ -9,63 +9,43 @@
v-infinite-scroll="loadMore"
infinite-scroll-disabled="loading"
infinite-scroll-distance="10">
- <li class="list-body" v-for="(item) in list" :key="item.id">
- <div class="order-info-box">
- <div class="order-title">
- <span :class="['main','cart']">
- <!-- <i v-if="item.payChannel == 0 || item.payChannel == '支付宝'" style="color:#1296db;"
- class="iconfont icon-zhifubao"></i>
- <i v-if="item.payChannel == '微信' " style="color:#1296db;" class="iconfont icon-weixin"></i>
- <i v-if="item.payChannel == 1 || item.payChannel == '对公转账'" style="color:#1296db;"
- class="iconfont icon-yinlian"></i> -->
- {{item.typeName}}
- </span>
- <span class="payNumber">{{ $t("hj80") }}:<span :style="{color:$state.theme =='red'?'#BB1815':''}">{{(item.addTime)}}</span></span>
- <span
- :class="item.status == 2?'green pull-right':item.status != 2?'red pull-right':'red pull-right'">
- <i v-if="item.status == 2" class="iconfont icon-tongguo4 animated bounceIn"></i>
- <i v-if="item.status != 2 " class="iconfont icon-dengdai animated bounceInDown"></i>
- <!-- 1 => 成功 2 失败 3取消 4 等待 -->
- {{item.status == 2?$t("jy372"):$t("jy373")}}
-
- </span>
- <!-- <span class="secondary ">123456789</span> -->
+ <li class="message-item" v-for="(item) in list" :key="item.id" @click="showMessageDetail(item)">
+ <div class="message-card">
+ <div class="message-header">
+ <span class="message-type">{{item.typeName}}</span>
+ <span class="message-status" :class="item.status == 2 ? 'read' : 'unread'">
+ {{item.status == 2 ? $t("jy372") : $t("jy373")}}
+ </span>
</div>
- <div class="order-info">
- <!-- <p class="clearfix">
- <span class="col-xs-5">{{item.orderDesc}}</span>
- </p> -->
- <!-- <p class="clearfix">
- <span class="col-xs-12">订单号:<b>{{item.orderSn}}</b></span>
- </p>
- <p class="clearfix">
- <span class="secondary col-xs-6">时间:
- <b v-if="item.addTime">{{new Date(item.addTime) | timeFormat}}</b>
- <b v-else></b>
- </span>
- </p> -->
- <div class="info-mix ">
- <span class="info-item">{{ $t("hj234") }}:<b>{{item.content}}</b></span>
- </div>
+ <div class="message-content">
+ <p class="message-text">{{item.content.length > 80 ? item.content.substring(0, 80) + '...' : item.content}}</p>
</div>
-
+ <div class="message-footer">
+ <span class="message-time">{{item.addTime}}</span>
+ </div>
</div>
- <!-- <div class="capital">
- <div class="pro">
- {{item.payChannel}} <span class="pull-right">金额:{{item.payAmt}}</span>
- </div>
- <div class=" clearfix">
- <div class="col-xs-4"></div>
- <div class="col-xs-8">
- <span class="pull-right">
- {{new Date(item.addTime) | timeFormat}}
- </span>
- </div>
- </div>
- </div> -->
</li>
</ul>
</div>
+
+ <!-- 消息详情弹窗 -->
+ <mt-popup v-model="detailVisible" position="center" class="message-detail-popup">
+ <div class="popup-header">
+ <span class="popup-title">{{ currentMessage.typeName || '消息详情' }}</span>
+ <span class="popup-close" @click="detailVisible = false">×</span>
+ </div>
+ <div class="popup-content">
+ <div class="detail-time">
+ <span>{{ $t("hj80") }}:{{ currentMessage.addTime }}</span>
+ <span :class="currentMessage.status == 2 ? 'status-read' : 'status-unread'">
+ {{ currentMessage.status == 2 ? $t("jy372") : $t("jy373") }}
+ </span>
+ </div>
+ <div class="detail-content">
+ {{ currentMessage.content }}
+ </div>
+ </div>
+ </mt-popup>
</div>
</template>
@@ -80,9 +60,10 @@
return {
pageNum: 1,
pageSize: 15,
- list: {
- list: []
- }
+ list: [],
+ loading: false,
+ detailVisible: false,
+ currentMessage: {}
}
},
watch: {},
@@ -141,11 +122,27 @@
item.addTime = time
return item
})
- // this.updateMessageStatus()
+ // 查看消息后,更新消息状态为已读
+ this.updateMessageStatus()
} else {
Toast(data.msg)
}
},
+ // 更新消息状态为已读
+ async updateMessageStatus() {
+ try {
+ await api.updateMessageStatus()
+ // 通知父组件更新未读数量
+ this.$emit('messageRead')
+ } catch (error) {
+ console.error('更新消息状态失败:', error)
+ }
+ },
+ // 显示消息详情
+ showMessageDetail(item) {
+ this.currentMessage = item
+ this.detailVisible = true
+ }
},
}
</script>
@@ -155,101 +152,175 @@
}
.table-list {
- padding: 0.2rem 0;
+ padding: 0.2rem 0.3rem;
+ list-style: none;
+ margin: 0;
+ }
- .list-body {
- padding: 0.1rem 0.3rem;
-
- .capital:nth-child(1) {
- border-top: 0.01rem solid #3f444a;
- }
-
- .capital {
- padding: 0.2rem;
- // border-radius: 0.2rem;
- border-bottom: 0.01rem solid #3f444a;
-
- div {
- line-height: 0.4rem;
- }
-
- .col-xs-4 {
- padding-left: 0;
- padding-right: 0;
- }
-
- .pro {
- color: #999;
- }
- }
+ .message-item {
+ margin-bottom: 0.3rem;
+ cursor: pointer;
+
+ &:last-child {
+ margin-bottom: 0;
}
}
- .payNumber {
- font-size: 0.24rem;
- font-weight: bold;
- span {
- font-family: lightnumber;
+ .message-card {
+ background-color: #1e1f25;
+ border-radius: 0.2rem;
+ padding: 0.3rem;
+ transition: all 0.3s ease;
+
+ &:active {
+ transform: scale(0.98);
+ background-color: #25262d;
}
}
- /deep/.order-info-box {
- background-color: #16171d;
- padding: 0;
- .main{
- padding: 0.05rem .15rem;
- letter-spacing:0;
- text-align: center;
- margin-right: .16rem;
- font-size: 0.24rem;
- border-radius: 3px;
- &.ali {
- background-color: #138EB4;
- }
- &.cart {
- background-color: #7266BA;
- }
- &.wechat {
- background-color: #009C46;
- }
- }
- .order-info {
- border-bottom: 1px solid #2e3237;
- padding-bottom: .3rem;
- }
- .order-title{
- border-bottom: none;
- }
- .info-mix{
- display: flex;
- font-size: .2rem;
- width: 100%;
- .info-item {
- margin-right: .2rem;
- color: #fff8;
- }
- }
- }
- .red-theme {
- .list-body {
- background-color: #fff;
- }
- .order-info-box {
- background-color: #fff;
- .order-info {
- border-bottom-color: #e9e9e9;
- }
- }
- .order-info-box .main.cart {
+
+ .message-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 0.2rem;
+
+ .message-type {
+ display: inline-block;
+ padding: 0.05rem 0.15rem;
+ background-color: #7266BA;
color: #fff;
+ border-radius: 0.1rem;
+ font-size: 0.22rem;
+ font-weight: 500;
}
- .payNumber {
- color: #000;
+
+ .message-status {
+ font-size: 0.22rem;
+ padding: 0.05rem 0.1rem;
+ border-radius: 0.1rem;
+
+ &.read {
+ color: #52c41a;
+ background-color: rgba(82, 196, 26, 0.1);
+ }
+
+ &.unread {
+ color: #ff4d4f;
+ background-color: rgba(255, 77, 79, 0.1);
+ }
}
- .order-info-box .info-mix .info-item{
- color: #666666;
+ }
+
+ .message-content {
+ margin-bottom: 0.2rem;
+
+ .message-text {
+ font-size: 0.28rem;
+ line-height: 1.5;
+ color: rgba(255, 255, 255, 0.85);
+ margin: 0;
+ word-break: break-word;
}
- .load-all{
+ }
+
+ .message-footer {
+ display: flex;
+ justify-content: flex-end;
+
+ .message-time {
+ font-size: 0.22rem;
+ color: rgba(255, 255, 255, 0.5);
+ }
+ }
+
+ // 消息详情弹窗样式
+ /deep/.message-detail-popup {
+ width: 85%;
+ max-width: 600px;
+ border-radius: 0.2rem;
+ overflow: hidden;
+
+ .popup-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0.4rem 0.3rem;
+ background-color: #7266BA;
+ color: #fff;
+
+ .popup-title {
+ font-size: 0.36rem;
+ font-weight: bold;
+ }
+
+ .popup-close {
+ font-size: 0.5rem;
+ cursor: pointer;
+ line-height: 1;
+ &:hover {
+ opacity: 0.8;
+ }
+ }
+ }
+
+ .popup-content {
+ padding: 0.4rem 0.3rem;
background-color: #fff;
+ max-height: 60vh;
+ overflow-y: auto;
+
+ .detail-time {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-bottom: 0.3rem;
+ margin-bottom: 0.3rem;
+ border-bottom: 1px solid #e9e9e9;
+ font-size: 0.24rem;
+ color: #666;
+
+ .status-read {
+ color: #52c41a;
+ }
+
+ .status-unread {
+ color: #ff4d4f;
+ }
+ }
+
+ .detail-content {
+ font-size: 0.28rem;
+ line-height: 1.6;
+ color: #333;
+ white-space: pre-wrap;
+ word-break: break-word;
+ }
+ }
+ }
+
+ // 红色主题样式
+ .red-theme {
+ .message-card {
+ background-color: #fff;
+ box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.05);
+
+ &:active {
+ background-color: #f5f5f5;
+ }
+ }
+
+ .message-content .message-text {
+ color: #333;
+ }
+
+ .message-footer .message-time {
+ color: #999;
+ }
+
+ /deep/.message-detail-popup {
+ .popup-content {
+ background-color: #fff;
+ }
}
}
</style>
--
Gitblit v1.9.3