334 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			334 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <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> |