douyin/src/pages/message/notice/MoneyNotice.vue
2021-10-23 18:02:04 +08:00

240 lines
5.9 KiB
Vue
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div id="MoneyNotice">
<BaseHeader>
<template v-slot:center>
<span class="f16">钱包通知</span>
</template>
<template v-slot:right>
<span class="f14" @click="$nav('/message/notice-setting',{ type : 'MONEY' })">通知设置</span>
</template>
</BaseHeader>
<Loading v-if="loading"/>
<div class="content" v-else>
<div class="list" ref="content">
<NoMore/>
<!--TODO 超过3行显示全文-->
<div class="item" v-for="item in list" @click="$no">
<div class="header">
<div class="left">
<img src="../../../assets/img/icon/msg-icon9.webp" alt="">
</div>
<div class="right">
<template v-if="item.type === 1">
<span>零钱任务</span>
</template>
<template v-if="item.type === 2">
<span>钱包任务</span>
</template>
<img @click.stop="isShowSetting = true" src="../../../assets/img/icon/menu-gray.png" alt="">
</div>
</div>
<div class="title">{{ item.title }}</div>
<div class="time">{{ item.time }}</div>
<template v-if="item.type === 1">
<div class="content-text">退款金额:¥{{ item.money }}</div>
<div class="content-text">退回方式:{{ item.toAccountType }}</div>
<div class="content-text">退款原因:{{ item.desc }}</div>
<div class="content-text">预计到账时间:{{ item.toAccountTime }}</div>
</template>
<template v-if="item.type === 2">
<div class="content-text">{{ item.desc }}</div>
</template>
<div class="look-detail">
<span>查看详情</span>
<back direction="right" scale=".6"/>
</div>
</div>
</div>
</div>
<from-bottom-dialog
page-id="MoneyNotice"
mode="white"
mask-mode="dark"
:show-heng-gang="false"
v-model="isShowSetting"
height="16rem"
>
<div class="setting-dialog">
<div class="row disabled">钱包任务</div>
<div class="row" @click="openNotice = !openNotice;isShowSetting = false">
{{ openNotice ? '关闭' : '开启' }}消息免打扰
</div>
<div class="space"></div>
<div class="row" @click="isShowSetting = false">取消</div>
</div>
</from-bottom-dialog>
</div>
</template>
<script>
import {nextTick} from "vue";
import Mask from "../../../components/Mask";
import FromBottomDialog from "../../../components/dialog/FromBottomDialog";
export default {
name: "SystemNotice",
components: {
FromBottomDialog
},
data() {
return {
loading: false,
isShowSetting: false,
openNotice: false,
list: [
{
type: 1,
toAccountType: '退回银行卡(工商银行3333)',
title: '红色退款发起通知',
time: '2021-10-12 12:12',
money: 0.01,
desc: '抖音红包超过24小时未被领取',
toAccountTime: '2021-10-15 12:12',
},
{
type: 2,
toAccountType: '退回银行卡(工商银行3333)',
title: '卡券发放提醒',
time: '2021-10-12 12:12',
money: 0.01,
desc: '尊敬的用户您获得1张DUO+满赠优惠券 到期时间:2021-08-26 23:23:23',
toAccountTime: '2021-10-15 12:12',
},
]
}
},
created() {
this.getData()
},
methods: {
async getData() {
this.loading = true
await this.$sleep(700)
this.loading = false
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
},
}
}
</script>
<style scoped lang="less">
@import "@/assets/less/index";
#MoneyNotice {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
overflow: auto;
color: white;
font-size: 1.4rem;
.content {
padding-top: 6rem;
.list {
height: calc(100vh - 6rem);
overflow: auto;
box-sizing: border-box;
padding: 0 @padding-page;
.item {
padding: @padding-page;
background: @second-btn-color-tran;
border-radius: .5rem;
margin-bottom: 2rem;
.header {
display: flex;
align-items: center;
padding-bottom: @padding-page;
margin-bottom: @padding-page;
border-bottom: 1px solid @line-color2;
.left {
display: flex;
align-items: center;
img {
width: 2.5rem;
}
}
.right {
margin-left: 1rem;
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
img {
width: 2rem;
}
}
}
.title {
display: flex;
align-items: center;
font-size: 1.6rem;
margin-bottom: 1rem;
}
.time {
font-size: 1.2rem;
color: @second-text-color;
margin-bottom: 2rem;
}
.content-text {
margin-bottom: .3rem;
}
.look-detail {
margin-top: 3rem;
border-top: 1px solid @line-color2;
padding-top: @padding-page;
color: @second-text-color;
display: flex;
justify-content: space-between;
align-items: center;
}
}
}
}
.setting-dialog {
.row {
color: black !important;
height: 5rem;
display: flex;
justify-content: center;
align-items: center;
border-top: 1px solid gainsboro;
&:nth-last-child(1) {
border-top: none;
}
&.disabled {
font-size: 1.2rem;
opacity: .5;
}
}
.space {
height: 1rem;
background: whitesmoke;
}
}
}
</style>