瀏覽代碼

停井记录列表重构,会员编辑,验证不通过的不予提交

chenwen 11 月之前
父節點
當前提交
d32a515460
共有 3 個文件被更改,包括 105 次插入32 次删除
  1. 9 0
      apis/parkinglog.js
  2. 87 30
      pages/parking/parkinglog.vue
  3. 9 2
      pages/whiteList/editWhite.vue

+ 9 - 0
apis/parkinglog.js

@@ -54,3 +54,12 @@ export function cancelMarkCarIn(parkingLogId,callerId){
 	})
 }
 
+export function batchOffUnmarked(parkId){
+	let callerId=app.takeSetting("user_id")
+	return request({
+		method: 'post',
+		data:{parkId,callerId},
+		url: '/mobileApi/parkingLog/batchOffUnmarkedCars'
+	})
+}
+

+ 87 - 30
pages/parking/parkinglog.vue

@@ -57,7 +57,7 @@
 				
 			</view>
 			<view class="tab-con-body">
-				<scroll-view style="padding:20rpx;height:calc(100vh - 170px)" scroll-y="true"  @scrolltolower="scrollbtm('off')" v-show="currentTab==0">
+				<scroll-view style="padding:20rpx;height:calc(100vh - 170px)" scroll-y="true"  lower-threshold="0.5" @scrolltolower="scrollbtm('off')">
 					
 					<view class="tab-con-item"  v-for="(item,index) in offPageData.records" :key="index">
 						<view class="item-top">
@@ -69,7 +69,7 @@
 									<view v-if="item.release_status=='1'">离场时间:{{item.out_parking_time}}</view>
 									<view>停车时长:{{item.parking_time_txt}}</view>
 									<view>离场方式:{{item.out_type_name}}</view>
-									<view>缴费金额:{{item.pay_amount?(item.pay_amount+'元'):''}}</view>
+									<view v-if="item.out_type=='3'">缴费金额:{{item.pay_amount?(item.pay_amount+'元'):''}}</view>
 								</view>
 							</view>
 						</view>
@@ -98,7 +98,7 @@
 				</view>
 			</view>
 			<view class="tab-con-body">
-				<scroll-view style="padding:20rpx;height:calc(100vh - 340rpx)" scroll-y="true"  @scrolltolower="scrollbtm('in')">
+				<scroll-view style="padding:20rpx;height:calc(100vh - 340rpx)" scroll-y="true" lower-threshold="0.5"  @scrolltolower="scrollbtm('in')">
 					
 					<view class="tab-con-item"  v-for="(item,index) in inPageData.records" :key="index">
 						<view class="item-top">
@@ -142,14 +142,14 @@
 		<!--已标记列表 start-->
 		<view class="tab-con-wrap" v-show="currentTab==2">
 			<view class="tab-con-header">
-				<view style="display: flex;align-items: center;padding:10rpx 0rpx;">
-					<u-button type="primary" size="medium" style="margin:0rpx 10rpx;" @tap="batchOff" v-show="true">批量出场</u-button>
+				<view style="display: flex;align-items: center;padding:10rpx 10rpx;">
+					<u-button type="primary" size="medium" style="margin:0rpx 10rpx;" @tap="batchOff" v-show="false">批量出场</u-button>
 					<u-search shape="round" border-color="#72b2ff" placeholder="输入车牌号模糊查找" v-model="filter.carNum" @search="searchHandler('marked')" @custom="searchHandler('marked')"></u-search>
 				</view>
 				
 			</view>
 			<view class="tab-con-body">
-				<scroll-view style="padding:20rpx;height:calc(100vh - 340rpx);" scroll-y="true"  @scrolltolower="scrollbtm('marked')">
+				<scroll-view style="padding:20rpx;height:calc(100vh - 340rpx);" scroll-y="true" lower-threshold="0.5"  @scrolltolower="scrollbtm('marked')">
 					<view class="tab-con-item"  v-for="(item,index) in markedPageData.records" :key="index">
 						<view class="item-top">
 							<u-image width="200rpx" height="160rpx" :src="item.car_img" border-radius="5rpx" @click="previewCarPhoto(item.car_img)"></u-image>
@@ -207,6 +207,7 @@
 					loading: '努力加载中',
 					nomore: '实在没有了'
 				},
+				loadingMore:false,
 				filter:{
 					startDate:'',
 					endDate:'',
@@ -302,22 +303,28 @@
 				this.loadPageData(this.getLoadParams(1),false,"off");
 			},
 			scrollbtm(offType){
-				console.log('scroll btm')
+				//console.log('scroll btm')
+				//触底事件会反复触发,会导致同时发出多个相同请求,需要同步控制
+				/*if(this.loadingMore){
+					return;
+				}
+				this.loadingMore=true;
+				*/
 				if(!this.checkHadMore(offType)){
 					return;
 				}
 				let pnum=1;
-				if(offType=="off"){
+				if(offType=="off" && this.offPageData.loadMoreStat!='loading'){
 					this.offPageData.loadMoreStat='loading';
 					pnum=this.offPageData.pageNum+1;
 					this.loadPageData(this.getLoadParams(pnum),true,offType)
 				}
-				else if(offType=="in"){
+				else if(offType=="in" && this.inPageData.loadMoreStat!='loading'){
 					this.inPageData.loadMoreStat='loading';
 					pnum=this.inPageData.pageNum+1;
 					this.loadPageData(this.getLoadParams(pnum),true,offType)
 				}
-				else if(offType=="marked"){
+				else if(offType=="marked" && this.markedPageData.loadMoreStat!='loading'){
 					this.markedPageData.loadMoreStat='loading';
 					pnum=this.markedPageData.pageNum+1;
 					this.loadMarked(this.getLoadParams(pnum),true)
@@ -345,6 +352,9 @@
 			loadMarked(param,moreLoad){
 				//加载已标记记录
 				let offType='marked'
+				if(!moreLoad){
+					this.markedPageData.records=[]  //避免加载失败后旧数据还在显示
+				}
 				uni.showLoading({
 					title:'加载中...'
 				});
@@ -367,9 +377,10 @@
 					pagedData.loadMoreStat=this.markedPageData.loadMoreStat
 					this.markedPageData=pagedData
 					
+					this.checkHadMore(offType);
 					this.renderSortTab(pagedData,offType);
 					
-					this.checkHadMore(offType);
+					
 					
 				}).catch(err=>{
 					console.log(err)
@@ -583,34 +594,80 @@
 			},
 			
 			batchOff(){
-				if(!this.selectedParkVal || this.selectedParkVal=='all' || this.selectedParkVal==''){
-					uni.showModal({
-						title:'操作提示',
-						content:'请先选择1个停车场(不可多选),再继续',
-						showCancel:false
+				let markedCount=this.markedPageData ? this.markedPageData.total :0
+				if(markedCount<=0){
+					uni.showToast({
+						title:'还未标记任何车辆',
+						icon:'none'
+					})
+					return
+				}
+				let selPark=this.myParkSites?this.myParkSites[this.selectedParkIdx]:null
+				if(!selPark){
+					uni.showToast({
+						title:'还未选择停车场',
+						icon:'none'
 					})
-					
 					return
 				}
-				else{
-					let parkObj=this.myParkSites.find(itm=>itm.park_id==this.selectedParkVal)
+				
+				if(this.markedPageData.records[0].park_id != selPark.park_id){
 					uni.showModal({
 						title:'操作提示',
-						content:`提交前请确认选择的停车场【${parkObj.parking_name}】,且已完成该停车场的标记`,
-						showCancel:true,
-						success:(res)=>{
-							if (res.confirm) {
-								this.batchOffSubmit();
-							} else if (res.cancel) {
-								console.log('用户点击取消');
-							}
-						}
+						content:'标记车辆所在停车场与选择的停车场不一致',
+						showCancel:false
 					})
+					return
 				}
+				
+				
+				uni.showModal({
+					title:'批量出场确认',
+					content:`请确认信息:停车场【${selPark.parking_name}】,已完成标记数【${markedCount}】`,
+					showCancel:true,
+					success:(res)=>{
+						if (res.confirm) {
+							this.batchOffSubmit(selPark.park_id);
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				})
+				
 			},
 			
-			batchOffSubmit(){
-				
+			batchOffSubmit(parkId){
+				uni.showLoading({
+					title:'处理中...',
+					mask:true
+				});
+				api.batchOffUnmarked(parkId).then(resp=>{
+					uni.hideLoading()
+					if(!resp.success){
+						uni.showToast({
+							title:resp.msg||'批量出场失败',
+							icon:'none'
+						})
+						return;
+					}
+					
+					uni.showToast({
+						title:'批量出场成功',
+						icon:'success'
+					})
+					
+					setTimeout(()=>{
+						this.changePark()
+					},1000)
+					
+				}).catch(err=>{
+					uni.hideLoading()
+					console.log(err)
+					uni.showToast({
+						title:'批量出场失败',
+						icon:'none'
+					})
+				})
 			}
 			
 			

+ 9 - 2
pages/whiteList/editWhite.vue

@@ -95,7 +95,7 @@
 				rules:{
 					memberPhone:[
 						{
-							pattern: /\d{11}/,
+							pattern: /1\d{10}/,
 							message: '请输入有效的持有人电话',
 							trigger: 'blur'
 					   }
@@ -230,9 +230,16 @@
 						console.log('验证失败');
 						return;
 					}
+					else{
+						this.saveSubmit()
+					}
 				});	
 				
-				let apifun=this.isUpdate?api.saveForUpdate:api.saveForAdd;		
+				
+				
+			},
+			saveSubmit(){
+				let apifun=this.isUpdate?api.saveForUpdate:api.saveForAdd;
 				uni.showLoading({
 					title:'保存中...'
 				});