recycapp/pages/index/index.vue
2025-10-22 20:28:50 +08:00

535 lines
12 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.

<template>
<view class="content">
<view class="topBox">
<view class="topStatus"></view>
<view class="flex-between" style="margin-top: 26rpx;">
<view class="menuBox">
<view class="menuView" :class="{checkMenu: menuNum == 1}" @click="menuClick(1)">
抢单大厅
<view class="menuLine" v-show="menuNum == 1"></view>
</view>
<view class="menuView" :class="{checkMenu: menuNum == 2}" @click="menuClick(2)">
回收大堂
<view class="menuLine" v-show="menuNum == 2"></view>
</view>
</view>
<view class="cityBox flex-center">
南京市
</view>
</view>
</view>
<view class="contentBox">
<view class="notice " >
<view class="notice-icon">
<image class="icon " src="/static/img/news.png" mode=""></image>
</view>
<view class="notice-row" >
<text class=" ">{{notice}}</text>
</view>
</view>
<view class="flex-between" style="margin-top: 31rpx;">
<view>
<view>订单列表</view>
</view>
<view class="flex-center">
<view class="flex-center selectBox">
<view>全部需求</view>
<u-icon name="arrow-down" color="#333333" size="12" style="margin-left: 13rpx;"></u-icon>
</view>
<view class="flex-center selectBox">
<view>距离最近</view>
<u-icon name="arrow-down" color="#333333" size="12" style="margin-left: 13rpx;"></u-icon>
</view>
</view>
</view>
<view class="orderBox">
<view class="flex-between">
<view class="flex-center">
<view>36分钟内</view>
<view>(10:17)上门</view>
</view>
<view>1.5公里</view>
</view>
<view class="flex-between addressBox">
<view class="addressText">江苏省南京市玄武区珠江路88号金鹰...</view>
<view class="addressBtn">导航</view>
</view>
<view class="flex-between goodsWrap">
<view class="goodsBox1 flex-center" style="width: 40%;">
<image src="/static/img/41.png" class="goodsImg"></image>
<view>
<view class="goodsText1">回收品类</view>
<veiw class="goodsText2">冰箱</veiw>
</view>
</view>
<view class="goodsBox2 flex-column-center" style="width: 20%;">
<view class="goodsText1">数量</view>
<veiw class="goodsText2">X1</veiw>
</view>
<view class="goodsBox3 flex-column-center" style="width: 40%;">
<view class="goodsText1">预估价</view>
<veiw class="flex-center">
<view class="priceIcon"></view>
<view class="priceNum">333</view>
</veiw>
</view>
</view>
<view class="flex-between userBox">
<view class="flex-center">
<image src="/static/img/39.png" class="userImg"></image>
<view>糯米小团子</view>
</view>
<view class="userBtn flex-center">
抢单
</view>
</view>
</view>
<view class='pinlei' >
<view class='pinlei-title' >请选择回收品类</view>
</view>
<view class="imgnavbar">
<view class="imgnavbar-list" v-if="limit == '3' || limit == '4' || limit == '5'"
v-bind:class="'row'+limit">
<view class="imgnavbar-item" ref="imgwitem" v-for="(item, index2) in typelist" :key="index2" @click="gotype(item.id)">
<image class="imgnavbar-item-img" :src="item.image" mode="aspectFill" ></image>
<view class="imgnavbar-item-text">{{item.name}}</view>
</view>
</view>
</view>
<view class="lc" v-if="index_img"><image class="imgnavbar-item-img" mode="aspectFill" :src="index_img" ></image></view>
<!-- 常见问题 -->
<view class='problem_header' >
<view class='left' >常见问题</view>
<view class="right" @click="gopage()">更多</view>
</view>
<view class="problem " v-if="question_list.length>0">
<view class="problem_main">
<view class="li" v-for="(item,index) in question_list" :key="index" @click="show(index)">
<view class="left">
<view class="left_2">{{item.name}}</view>
<view class="left_1" >
<image v-if="item.is_show==1" class="icon" src="/static/img/up.png" mode=""></image>
<image v-if="item.is_show==0" class="icon" src="/static/img/down.png" mode=""></image>
</view>
</view>
<view class="left " v-if="item.is_show==1">
<view class="left_3"><text style="white-space: pre-wrap;line-height: 20px;">{{item.content}}</text></view>
</view>
</view>
</view>
</view>
<view style="margin-bottom: 100px;
padding-bottom: 30px;"></view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
jscode:'',
limit:3,
typelist: [],
banner:[],
notice:'',
indicatorDots: true,
autoplay: true,
interval: 2000,
duration: 500,
current:0,
index_img:'',
question_list:'',
menuNum: 1
}
},
onShow() {
this.getdata()
this.config()
},
onHide() {
},
onLoad() {
this.getdata()
this.getquestion()
},
onShareAppMessage(res) {
if (res.from === 'button') {
}
return {
title: '',
imageUrl: ''
}
},
onReachBottom (){
},
methods: {
menuClick(val){
this.menuNum = val
},
gotype(id){
uni.navigateTo({
url:'../type/type?id='+id
})
},
getdata(){
let data = {
}
this.$api.indexpage(data,res=>{
if(res.code == '1'){
this.typelist = res.data.type
this.banner = res.data.banner
this.notice = res.data.notice
this.limit = res.data.nav_num
}
})
},
config(){
this.$api.config({}, res => {
if (res.code == "1") {
this.index_img = res.data.index_img;
if(res.data.sitename){
uni.setNavigationBarTitle({
title: res.data.sitename
});
}
}else{
}
})
},show(index){
var question_list = this.question_list;
question_list.forEach((item,index2) => {
if(index == index2){
question_list[index2].is_show = item.is_show==1 ? 0: 1;
}
})
this.question_list = question_list;
},
getquestion(){
let data={page:1,limit:10}
this.$api.question_list(data,res=>{
if(res.code == '1'){
this.question_list= res.data.list.data
}
})
},
gopage(){
uni.navigateTo({
url:'/pages/question/index'
})
},
}
}
</script>
<style lang="scss">
page {
background: rgba(251, 249, 256, 1)
}
.topBox{
background: linear-gradient(0deg, #FFF8F2 0%, #FFFBED 100%);
overflow: hidden;
padding-bottom: 6rpx;
}
.topStatus{
height: var(--status-bar-height); //这里是状态栏css变量
}
.menuBox{
display: flex;
padding: 20rpx 0;
.menuView{
font-weight: 500;
font-size: 28rpx;
color: #AE8F71;
padding: 0 21rpx;
.menuLine{
width: 80rpx;
height: 10rpx;
border-radius: 2rpx;
background: linear-gradient(to right, #FFF8EF, #ED7B29);
margin-top: -12rpx;
}
}
.checkMenu{
font-weight: bold;
font-size: 34rpx;
color: #221B16;
}
}
.cityBox{
padding: 0 25rpx;
height: 60rpx;
background: #FFFFFF;
border-radius: 30rpx;
font-weight: 500;
font-size: 26rpx;
color: #333333;
}
.contentBox{
padding: 0 35rpx;
}
.selectBox{
background: #F2F2F2;
border-radius: 25rpx;
font-weight: 500;
font-size: 24rpx;
color: #333333;
padding: 12rpx 22rpx;
}
.selectBox:first-child{
margin-right: 14rpx;
}
.goodsImg{
width: 80rpx;
height: 80rpx;
background: #FFC90E;
border-radius: 20rpx;
margin-right: 22rpx;
}
.goodsWrap{
background: #FFF9F5;
border-radius: 20rpx;
padding: 14rpx 16rpx;
}
.goodsBox1{
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
.goodsBox3{
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-end;
padding-right: 30rpx;
}
.goodsText1{
font-weight: 500;
font-size: 22rpx;
color: #333333;
margin-bottom: 10rpx;
}
.goodsText2{
font-weight: 500;
font-size: 30rpx;
color: #333333;
}
.priceIcon{
font-weight: 500;
font-size: 24rpx;
color: #ED6343;
}
.priceNum{
font-weight: 500;
font-size: 36rpx;
color: #ED6343;
}
.userBox{
font-weight: bold;
font-size: 28rpx;
color: #333333;
}
.userImg{
width: 42rpx;
height: 42rpx;
margin-right: 14rpx;
}
.userBtn{
width: 184rpx;
height: 60rpx;
background: #FB8F0C;
border-radius: 30rpx;
ont-size: 24rpx;
color: #FFFFFF;
}
.addressBox{
margin-top: 20rpx;
.addressText{
font-weight: 400;
font-size: 24rpx;
color: #333333;
width: 405rpx;
overflow: hidden;/*超出部分隐藏*/
text-overflow:ellipsis;/* 超出部分显示省略号 */
white-space: nowrap;/*规定段落中的文本不进行换行 */
}
}
.orderBox{
background: #FFFFFF;
box-shadow: 0px 8rpx 27rpx 0px rgba(255,141,75,0.08);
border-radius: 30rpx;
margin-top: 20rpx;
padding: 25rpx 33rpx;
}
.pinlei{background-color: #fff; padding: 15px 0px 1px 5px;
}
.pinlei-title { border-left: solid 3px #46b45d;padding-left: 4px;font-size: 30rpx;
color: #333; font-weight: bold;}
.imgnavbar {
width: 100%;
background-color: #fff; margin-bottom: 8px;
}
.imgnavbar-list {
overflow: hidden;
padding: 24upx 0 0;
width: 96%;
margin: 0 auto;
}
.imgnavbar-list .imgnavbar-item {
height: auto;
float: left;
padding: 0upx 10upx;
margin-bottom: 30upx;
margin-top: 12upx;
text-align: center;
}
.imgnavbar-list .imgnavbar-item image {
width: 86upx;
height: 86upx;
margin-bottom: 6upx;
}
.imgnavbar-item-text {
font-size: 26upx;
color: #666;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.imgnavbar-list.row3 .imgnavbar-item {
width: 33.3%;
}
.imgnavbar-list.row4 .imgnavbar-item {
width: 25%;
}
.imgnavbar-list.row5 .imgnavbar-item {
width: 20%;
}
.imgnavbar-list.row5 .imgnavbar-item .imgnavbar-item-text {
font-size: 30upx;
}
.notice {
padding: 15rpx 26rpx 15rpx 60rpx;
margin-top: 10rpx;
position: relative;
overflow: hidden;
background-color: #fff;
color: #333;
margin-bottom: 16rpx;
background: #FFECEB;
border-radius: 16rpx;
border: 1px solid #FFFFFF;
}
.notice-icon {
display: inline-block;
height: 40rpx;
position: absolute;
top: 59%;
left: 26rpx;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
overflow: hidden;
}
.notice-icon image {
width: 30rpx;
height: 30rpx;
float: left;
}
.notice-row {
margin-left: 10rpx;
height: 50rpx;
line-height: 50rpx;
width: 672rpx;
display: inline-block;
font-size: 28rpx;
float: left;
}
.nav{
height: 300rpx;
width: 100%;
.swiper{
height: 300rpx;
width: 100%;
overflow: hidden;
image{
height: 300rpx;
width: 100%;
}
}
}
.lc{
margin-bottom: 6px; }
.lc image{height: 248rpx;width:100%}
.problem_header{
background-color: #fff;
padding: -2px 0px 1px 5px;
justify-content: space-between;
display: flex;
.left{ border-left: solid 3px #46b45d;
padding-left: 4px;
font-size: 30rpx;
color: #333;
font-weight: bold;margin-left: 4px;
margin-top: 15px;
}
.right{ float: right;
margin-right: 25px;
font-size: 12px;
margin-top: 15px;
}
}
.problem{
background-color: #fff;
.problem_main{
width: 92%;
margin: 0 auto;padding-bottom: 10px;
.li{
padding-top: 20rpx;
border-bottom: 1px solid #eee;
.left{
overflow: hidden;
margin-bottom: 20rpx;
.left_1{
float: left;
height: 4vh;
width: 4vh;
}
.left_2{
font-size: 30rpx;
float:left;
width: 90%;
}
.left_3{
font-size: 24rpx;
float:left;
width: 92%;color: #676767;padding-left: 12px;
}
}
}
.li:last-child{
border: none;
}
}
}
</style>