爱简收旧衣按件回收前端代码仓库
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.
 
 
 
 

373 lines
9.2 KiB

<template>
<view class="inspection-page">
<!-- 顶部渐变导航栏 -->
<view class="nav-bar" :style="{height: navBarTotalHeight + 'px', paddingTop: statusBarHeight + 'px'}">
<view class="nav-bar-inner">
<view class="back-icon" @tap="navigateBack">
<uni-icons type="left" size="22" color="#fff" />
</view>
<view class="nav-bar-title">质检报告</view>
<view class="nav-bar-right">
<uni-icons type="more-filled" size="22" color="#fff" />
</view>
</view>
</view>
<!-- 打钩标签区及说明 -->
<view class="feature-area" :style="{marginTop: navBarTotalHeight+statusBarHeight + 'px'}">
<view class="feature-desc">该报告由瀚海回收质检查验出具</view>
<view class="feature-tags">
<view class="tag" v-for="(t, i) in featureTags" :key="i">
<text class="check">✓</text>
<text class="text">{{t}}</text>
</view>
</view>
</view>
<!-- 主内容区(卡片悬浮覆盖打钩区) -->
<view class="main-content">
<view class="inspection-card">
<view class="report-title">质检合格</view>
<view class="goods-list">
<view class="goods-item" v-for="(item, i) in goodsList" :key="i">
<image class="goods-img" :src="item.img" mode="aspectFit" />
<view class="goods-info">
<view class="goods-row">
<view class="goods-name">{{item.name}}</view>
<view v-if="item.detail" class="detail-link">查看详情 <uni-icons type="right" size="16" color="#bbb" /></view>
</view>
<view class="goods-desc">{{item.desc}}</view>
<view class="goods-bottom-row">
<view class="goods-price-row">
<text class="goods-price">¥{{item.price}}</text>
<text class="goods-unit">/件</text>
<text class="goods-count">x{{item.count}}</text>
</view>
<view class="goods-total">¥{{item.total}}</view>
</view>
</view>
</view>
</view>
<view class="summary-row">
<text>件数:<text class="highlight">{{totalCount}}</text> 件</text>
<text>结算金额:<text class="highlight">{{totalAmount}}</text></text>
</view>
</view>
</view>
</view>
</template>
<script>
import pullRefreshMixin from '@/pages/mixins/pullRefreshMixin.js'
export default {
mixins: [pullRefreshMixin],
data() {
return {
statusBarHeight: 0,
navBarHeight: 14,
navBarTotalHeight: 14,
featureTags: ['透明检', '专业验', '公正评', '逐件验'],
goodsList: [
{
img: '/static/goods1.png',
name: '羽绒服',
desc: '允许脏破烂,160码以上',
price: 8,
count: 8,
total: 64
},
{
img: '/static/goods2.png',
name: '品牌羽绒服',
desc: '允许脏破烂,160码以上',
price: 10,
count: 1,
total: 8,
detail: true
}
]
}
},
computed: {
totalCount() {
return this.goodsList.reduce((sum, item) => sum + item.count, 0)
},
totalAmount() {
return this.goodsList.reduce((sum, item) => sum + item.total, 0).toFixed(1)
}
},
onLoad() {
const sysInfo = uni.getSystemInfoSync()
this.statusBarHeight = sysInfo.statusBarHeight
this.navBarHeight = 14
this.navBarTotalHeight = this.statusBarHeight + this.navBarHeight
},
methods: {
async onRefresh() {
// 模拟刷新数据
await new Promise(resolve => setTimeout(resolve, 1000))
this.stopPullRefresh()
},
navigateBack() {
uni.navigateBack()
}
}
}
</script>
<style lang="scss" scoped>
.inspection-page {
min-height: 100vh;
background: #422525;
// padding-bottom: calc(env(safe-area-inset-bottom) + 120rpx);
}
.nav-bar {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
width: 100vw;
background: #422525;
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.03);
.nav-bar-inner {
display: flex;
align-items: center;
justify-content: center;
height: 44px;
width: 100vw;
position: relative;
}
.back-icon, .nav-bar-right {
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
}
.back-icon { left: 0; }
.nav-bar-right { right: 0; }
.nav-bar-title {
flex: 1;
text-align: center;
font-size: 36rpx;
font-weight: bold;
color: #fff;
letter-spacing: 2rpx;
line-height: 44px;
font-family: DingTalk JinBuTi;
font-weight: 400;
font-style: italic;
font-size: 28px;
line-height: 100%;
letter-spacing: 0%;
text-align: center;
// vertical-align: bottom;
}
}
.feature-area {
margin: 0 32rpx;
margin-top: 0;
margin-bottom: 0;
background:#422525;
border-radius: 32rpx;
// box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
padding: 18rpx 24rpx 18rpx 24rpx;
display: flex;
flex-direction: column;
align-items: stretch;
}
.feature-desc {
text-align: center;
font-size: 22rpx;
color: #fff;
font-weight: 500;
margin-bottom: 10rpx;
margin-top: 18rpx;
letter-spacing: 1rpx;
}
.feature-tags {
margin: 0 32rpx;
background: #533030;
border-radius: 12rpx;
box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
// padding: 0 24rpx;
width: 100%;
height: 80rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
.tag {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
.check {
width: 36rpx;
height: 36rpx;
background: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #422525;
font-weight: bold;
margin-right: 10rpx;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
}
.text {
color: #fff;
font-size: 28rpx;
font-weight: bold;
}
}
}
.main-content {
margin-top: 20rpx;
padding-top: 88rpx;
background: linear-gradient(180deg, #fef7e6 0%, #fff 50%);
min-height: 100vh;
width: 100vw;
box-sizing: border-box;
position: relative;
z-index: 11;
border-radius: 40rpx 40rpx 0 0;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
}
.inspection-card {
background: #fff;
border-radius: 32rpx;
box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.08);
padding: 40rpx 32rpx 32rpx 32rpx;
margin: -60rpx auto 0 auto;
width: calc(100vw - 64rpx);
max-width: 700rpx;
display: flex;
flex-direction: column;
.report-title {
font-size: 32rpx;
font-weight: bold;
color: #222;
text-align: center;
margin-bottom: 12rpx;
}
.goods-list {
.goods-item {
display: flex;
align-items: center;
background: #fff;
border-radius: 20rpx;
box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
padding: 24rpx 20rpx;
margin-bottom: 20rpx;
.goods-img {
width: 80rpx;
height: 80rpx;
border-radius: 16rpx;
margin-right: 20rpx;
background: #f5f5f5;
}
.goods-info {
flex: 1;
display: flex;
flex-direction: column;
.goods-row {
display: flex;
justify-content: space-between;
align-items: center;
.goods-name {
font-size: 28rpx;
color: #222;
font-weight: bold;
}
.detail-link {
font-size: 24rpx;
color: #bbb;
display: flex;
align-items: center;
}
}
.goods-desc {
font-size: 24rpx;
color: #bbb;
margin-bottom: 8rpx;
}
.goods-bottom-row {
display: flex;
justify-content: space-between;
align-items: flex-end;
margin-top: 8rpx;
.goods-price-row {
display: flex;
align-items: baseline;
.goods-price {
font-size: 26rpx;
color: #f79400;
font-weight: bold;
}
.goods-unit {
font-size: 24rpx;
color: #f79400;
margin-left: 2rpx;
}
.goods-count {
font-size: 22rpx;
color: #bbb;
margin-left: 8rpx;
font-weight: normal;
}
}
.goods-total {
font-size: 28rpx;
color: #222;
font-weight: bold;
margin-left: 24rpx;
}
}
}
}
.goods-item:last-child { margin-bottom: 0; }
}
.summary-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 24rpx;
font-size: 28rpx;
color: #222;
.highlight {
color: #f79400;
font-weight: bold;
font-size: 30rpx;
}
}
}
.check {
width: 36rpx;
height: 36rpx;
background: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #13ac47;
font-weight: bold;
margin-right: 10rpx;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
}
</style>