完成大体功能和样式
This commit is contained in:
170
pages-assets/fallback/fallbackDetail.vue
Normal file
170
pages-assets/fallback/fallbackDetail.vue
Normal file
@@ -0,0 +1,170 @@
|
||||
<template>
|
||||
<view class="page-view">
|
||||
<!-- 顶部导航栏 -->
|
||||
<customNavbar title="留言详情" :is-transparent="navbarStyle.isTransparent" :bg-color="navbarStyle.bgColor"
|
||||
:text-color="navbarStyle.textColor" :opacity="navbarStyle.opacity" :extra-icons="navbarStyle.extraIcons"
|
||||
:show-home="false" />
|
||||
|
||||
<!-- 留言详情内容 -->
|
||||
<view class="detail-container">
|
||||
<view class="detail-card">
|
||||
<!-- 反馈内容标题 -->
|
||||
<view class="content-title">{{messageDetail.title}}</view>
|
||||
|
||||
<!-- 反馈内容文本 -->
|
||||
<view class="content-text">
|
||||
{{messageDetail.content}}
|
||||
</view>
|
||||
|
||||
<!-- 底部信息:时间和状态 -->
|
||||
<view class="bottom-info">
|
||||
<text class="detail-time">2023年10-26 14:30</text>
|
||||
<view class="status-tag">
|
||||
<text class="status-dot"></text>
|
||||
<text class="status-text">待处理</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
// 导航栏样式控制
|
||||
id: null,
|
||||
navbarStyle: {
|
||||
isTransparent: true,
|
||||
bgColor: '#ffffff',
|
||||
textColor: '#000000',
|
||||
opacity: 0,
|
||||
extraIcons: ['ellipsis', 'eye'] // 右侧额外图标
|
||||
},
|
||||
// 滚动距离
|
||||
scrollTop: 0,
|
||||
// 留言详情数据
|
||||
messageDetail: null
|
||||
}
|
||||
},
|
||||
onPageScroll(e) {
|
||||
this.scrollTop = e.scrollTop;
|
||||
// 计算导航栏透明度和样式
|
||||
this.updateNavbarStyle(e.scrollTop);
|
||||
},
|
||||
onShow(){
|
||||
this.$checkToken(this.$getToken())
|
||||
},
|
||||
onLoad(options) {
|
||||
// 从路由参数中获取留言ID
|
||||
this.id = options.id;
|
||||
// 调用接口获取留言详情
|
||||
this.getFallbackDetail();
|
||||
},
|
||||
methods: {
|
||||
getFallbackDetail() {
|
||||
let token = this.$getToken();
|
||||
let url = `/fallback/detail?id=${this.id}`
|
||||
this.$u.get(url,{}, {
|
||||
WT: token
|
||||
}).then(result => {
|
||||
this.messageDetail = result.data;
|
||||
}).catch(err => {
|
||||
console.log("获取留言详情信息失败:", err)
|
||||
})
|
||||
},
|
||||
// 根据滚动距离更新导航栏样式
|
||||
updateNavbarStyle(scrollTop) {
|
||||
// 定义滚动阈值,超过此值导航栏变为不透明
|
||||
const threshold = 200;
|
||||
|
||||
// 计算透明度
|
||||
let opacity = scrollTop / threshold;
|
||||
opacity = Math.min(opacity, 1);
|
||||
opacity = Math.max(opacity, 0);
|
||||
|
||||
// 更新导航栏样式
|
||||
this.navbarStyle.opacity = opacity;
|
||||
|
||||
if (opacity > 0.5) {
|
||||
this.navbarStyle.isTransparent = false;
|
||||
} else {
|
||||
this.navbarStyle.isTransparent = true;
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page-view {
|
||||
/* 给导航栏留空间 */
|
||||
padding-top: 175rpx;
|
||||
min-height: 100vh;
|
||||
position: relative;
|
||||
background: linear-gradient(0deg, #F3F1ED 43%, #F5E9DB 100%);
|
||||
}
|
||||
|
||||
.detail-container {
|
||||
padding: 30rpx 40rpx;
|
||||
}
|
||||
|
||||
.detail-card {
|
||||
background-color: #ffffff;
|
||||
border-radius: 12rpx;
|
||||
padding: 32rpx;
|
||||
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.content-title {
|
||||
font-size: 30rpx;
|
||||
font-weight: 500;
|
||||
color: #2D2B2C;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
|
||||
.content-text {
|
||||
font-size: 30rpx;
|
||||
color: #585858;
|
||||
line-height: 44rpx;
|
||||
padding: 24rpx;
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8rpx;
|
||||
margin-bottom: 24rpx;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.bottom-info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.detail-time {
|
||||
font-size: 30rpx;
|
||||
color: #86868C;
|
||||
}
|
||||
|
||||
.status-tag {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.status-dot {
|
||||
display: inline-block;
|
||||
width: 31rpx;
|
||||
height: 31rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #fff;
|
||||
border: 10rpx solid #6688FC;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.status-text {
|
||||
font-size: 30rpx;
|
||||
color: #6688FC;
|
||||
margin-top: -5rpx;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user