You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
shop-pc/pages/account/index/message.vue

145 lines
3.6 KiB

3 years ago
<!--
* @Author: ch
* @Date: 2022-05-04 17:48:12
* @LastEditors: ch
3 years ago
* @LastEditTime: 2022-05-26 10:38:16
3 years ago
* @Description: file content
-->
<template>
<div>
<main class="main">
<h3 class="title">消息通知</h3>
<section class="section">
<div
class="section__item flex"
3 years ago
v-for="item in msgData"
:key="item.id"
3 years ago
@click="handleDetail(item)"
>
<img
class="section__item-img"
3 years ago
:src="item.payload.productImageUrls ? item.payload.productImageUrls[0] : require('@/assets/img/account/im/system.png')"
alt="消息通知"
/>
<div class="section__item-content flex flex-column">
<div class="section__item-content--title flex">
3 years ago
<span>{{ item.payload.title || `` }}</span>
<span class="section__item-content--time">{{item.createTimeStamp}}</span>
</div>
<div class="section__item-content--txt">
3 years ago
{{ item.payload.content || `` }}
</div>
</div>
</div>
<UiEmpty
3 years ago
v-if="!msgData.length"
desc="暂无消息通知"
:icon="require('@/assets/img/account/order/empty.png')"
>
</UiEmpty>
</section>
</main>
</div>
3 years ago
</template>
<script>
3 years ago
// import { mapState } from "vuex";
import UiEmpty from "@/components/UiEmpty.vue";
3 years ago
import {FormatDate} from '@/plugins/utils'
3 years ago
export default {
components: { UiEmpty },
data() {
return {};
},
computed: {
3 years ago
msgData(){
return this.$store.state.socketMsgData.map(i => {
i.payload = JSON.parse(i.payload);
i.createTimeStamp = FormatDate(i.createTimeStamp, 'mm-dd hh:ii:ss')
return i;
}).reverse();
},
// ...mapState(["token", "socketMsgData"]),
},
mounted() {
console.log(`socketMsgData`, this.$store.state);
},
3 years ago
methods: {
/**
* 点击详情跳转
*/
handleDetail(item){
if(['orderPay','orderDelivery','orderCancel'].includes(item.payload.customType)){
this.$router.push(`/account/order/detail?id=${item.payload.primaryId}`)
}else if(['refundFail','refundSuccess'].includes(item.payload.customType)){
this.$message.warning('请在移动端查看售后详情~');
}else if(item.payload.linkJump){
window.location.href = item.payload.linkJump;
}
}
},
};
3 years ago
</script>
<style lang="scss" scoped>
.main {
width: 1000px;
.title {
width: 100%;
height: 42px;
background: #f8f8f8;
border: 1px solid #dddddd;
padding: 0 24px;
font-size: 14px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
line-height: 42px;
}
.section {
padding: 22px 20px 0;
border: 1px solid #ddd;
margin-top: -1px;
max-height: 600px;
overflow-y: auto;
&__item {
margin-bottom: 20px;
3 years ago
&-img {
3 years ago
width: 50px;
height: 50px;
margin-right: 20px;
}
&-content {
width: 840px;
&--title {
margin-top: 8px;
font-size: 16px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #333333;
}
&--time {
font-size: 12px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
margin-left: auto;
}
&--txt {
margin-top: auto;
margin-bottom: 8px;
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
}
}
}
}
}
</style>