chuangte_bike_newxcx/page_shanghu/gongzuotai/shgl.vue
2025-04-21 18:00:19 +08:00

334 lines
7.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

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>
<view class="page">
<u-navbar title="审核管理" :border-bottom="false" :background="bgc" title-color='#000' title-size='36'
height='45'></u-navbar>
<!-- <view class="" style="background: #FFFFFF;width: 750rpx;padding-bottom: 36rpx;">
<view class="top_box" style="margin-top: 20rpx;">
<view class="sear_ipt">
<input type="text" v-model="sn" placeholder="请输入SN码" class="input" placeholder-style="color:#C7CDD3"
@input="search()">
</view>
</view>
</view> -->
<scroll-view class="cont" @scrolltolower="handleScrollToLower" scroll-y>
<view class="card" v-for="(item,index) in list " :key="index">
<view class="top">
<view class="phone">车辆编号{{item.vehicleCode}}</view>
<view class="type" v-if="item.appealStatus==1">待处理</view>
<view class="type" v-if="item.appealStatus==0" style="background-color: #ccc;color: #000;">已驳回</view>
<view class="type" v-if="item.appealStatus==2" style="background-color: #77B8FD;color: #fff;">维修中</view>
<view class="type" v-if="item.appealStatus==3" style="background-color: #64B6A8;color: #fff;">已完成</view>
</view>
<view class="txt"> {{item.faultDetail == null ? '--' : item.faultDetail}}</view>
<view class="pic_cont">
<view class="img" v-for="(pic, idx) in parsePictures(item.picture)" :key="idx"
@click="preview(pic, item)">
<image style="border-radius: 20rpx;" :src="pic" mode="aspectFill"></image>
</view>
</view>
<view class="info_cont">
<view class="sn">
车牌号:{{item.vehicleNum == null ? '--' : item.vehicleNum}}
</view>
<view class="time">
提交时间:{{item.createTime}}
</view>
</view>
<view class="btn_cont">
<view class="btn1" v-if="item.appealStatus==1" @click="unpass(item,1)">
处理
</view>
<view class="btn1" v-if="item.appealStatus==2" @click="btnwc(item)">
维修完成
</view>
<view class="btn2" v-if="item.appealStatus==1" @click="unpass(item,0)">
忽略
</view>
</view>
<!-- <view class="tips" @click="todetail()">
该车故障记录>
</view> -->
</view>
<view class="" style="width: 100%;text-align: center;margin-top: 30rpx;color: #ccc;">
当前没有更多申报审核咯...
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: '#fff'
},
sn: '',
pageNum: 1, // 当前页码
pageSize: 20, // 每页显示条数
list: [] ,// 数据列表
total:''
};
},
onShow() {
this.pageNum = 1
this.getlist();
},
onReachBottom() {
// 当页面滚动到底部时,触发加载更多
// this.loadMore();
},
methods: {
handleScrollToLower() {
console.log(this.total,this.list.length);
if(this.total > this.list.length){
this.getlist()
}
},
// 点击完成
btnwc(item){
let data = {
id:item.id,
pass:true
}
this.$u.put('/bst/fault/complete', data).then((res) => {
if (res.code === 200) {
uni.showToast({
title: '操作成功',
icon: 'none',
duration: 2000
});
this.pageNum = 1;
this.list = []; // 清空当前列表
this.getlist();
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
})
},
// 点击处理和忽略
unpass(item,num){
let passflag = ''
if(num == 0){
passflag = false
}else if(num == 1){
passflag = true
}
uni.showLoading({
title:'加载中...'
})
let data = {
id:item.id,
pass:passflag
}
this.$u.put('/bst/fault/handle', data).then((res) => {
if (res.code === 200) {
uni.showToast({
title: '操作成功',
icon: 'none',
duration: 2000
});
this.pageNum = 1;
this.list = []; // 清空当前列表
this.getlist();
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
})
},
parsePictures(pictureString) {
if (pictureString) {
return pictureString.split(',')
}
return [];
},
preview(pic, item) {
uni.previewImage({
current: pic, // 当前显示图片的链接
urls: this.parsePictures(item.picture) // 需要预览的图片链接列表
})
},
getlist() {
let data = {
sn: this.sn,
pageSize: this.pageSize,
pageNum: this.pageNum
};
this.$u.get(`/bst/fault/list?pageNum=${this.pageNum}&pageSize=10`).then((res) => {
if (res.code === 200) {
this.total = res.total
if(this.pageNum == 1){
this.list = res.rows
}else{
this.list = this.list.concat(res.rows)
}
this.pageNum ++
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
}).catch(error => {
console.error("Error fetching area data:", error);
})
},
loadMore() {
this.pageNum += 1 // 页码增加
this.getlist() // 调用getlist方法获取更多数据
},
search() {
clearTimeout(timerId1);
timerId1 = setTimeout(() => {
// 搜索时重置页码并重新获取数据
this.pageNum = 1
this.list = [] // 清空当前列表
this.getlist()
}, 500)
},
todetail() {
uni.navigateTo({
url: '/pages_adminSet/shDetail'
})
}
}
}
</script>
<style lang="scss" scoped>
.page {
width: 750rpx;
}
.top_box {
display: flex;
flex-wrap: nowrap;
align-items: center;
padding: 28rpx 30rpx;
margin: 0 auto;
width: 672rpx;
height: 100rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 22rpx 0rpx rgba(0, 0, 0, 0.07);
border-radius: 10rpx;
}
.cont {
width: 100%;
height: 88vh;
}
.card {
padding: 24rpx;
margin: 20rpx auto;
width: 672rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 22rpx 0rpx rgba(0, 0, 0, 0.07);
border-radius: 10rpx;
.btn_cont {
display: flex;
flex-wrap: nowrap;
justify-content: flex-end;
/* 添加此行使按钮靠右对齐 */
.btn1 {
margin-right: 30rpx;
font-weight: 400;
font-size: 32rpx;
color: #FEFFFE;
padding: 6rpx 36rpx;
background: #64B6A8;
border-radius: 8rpx 8rpx 8rpx 8rpx;
}
.btn2 {
font-weight: 400;
font-size: 32rpx;
color: #64B6A8;
padding: 6rpx 36rpx;
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #64B6A8;
}
}
.tips {
margin-top: 24rpx;
width: 100%;
text-align: center;
font-weight: 400;
font-size: 28rpx;
color: #808080;
}
.info_cont {
margin-top: 22rpx;
display: flex;
align-items: center;
flex-wrap: nowrap;
justify-content: space-between;
.sn {
font-weight: 400;
font-size: 32rpx;
color: #979797;
}
.time {
font-weight: 400;
font-size: 24rpx;
color: #979797;
}
}
.txt {
margin-top: 24rpx;
font-weight: 400;
font-size: 32rpx;
color: #3D3D3D;
}
.pic_cont {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
width: 100%;
.img {
margin-top: 10rpx;
background: #D8D8D8;
width: 136rpx;
height: 136rpx;
border-radius: 20rpx;
margin-right: 10rpx;
}
}
}
.top {
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 20rpx;
display: flex;
align-items: center;
.name {
width: 100rpx;
font-weight: 400;
font-size: 32rpx;
color: #3D3D3D;
}
.phone {
font-weight: 400;
font-size: 32rpx;
color: #979797;
}
.type {
margin-left: auto;
display: flex;
align-items: center;
justify-content: center;
width: 130rpx;
height: 48rpx;
background: #FFEEEE;
border-radius: 8rpx;
font-weight: 400;
font-size: 28rpx;
color: #FF4444;
}
}
</style>