瀏覽代碼

auto commit

gcz 4 年之前
父節點
當前提交
55b67a6013
共有 10 個文件被更改,包括 396 次插入5 次删除
  1. 5 0
      common/apiurl.js
  2. 7 1
      common/http.api.js
  3. 7 0
      pages.json
  4. 87 0
      pages/getin/getin.scss
  5. 221 0
      pages/getin/getin.vue
  6. 7 1
      pages/getout/getout.vue
  7. 7 3
      pages/parking/parking.vue
  8. 9 0
      pages/setting/setting.scss
  9. 16 0
      pages/setting/setting.vue
  10. 30 0
      utils/filter.js

+ 5 - 0
common/apiurl.js

@@ -24,6 +24,11 @@ const apiurl = {
 	//收费员打卡签到
 	punchInUrl:'/payee/payeeinfo/punchIn',
 	
+	//车辆入场确认
+	parkInConfirmUrl:'/orderinfo/parkIn/confirm',
+	//车辆入场确认
+	parkInInfoUrl:'http://127.0.0.1:4523/mock/385524/memberinfo/parkIn/info',
+	
 	//设备注册
 	deviceReg: '/device/pda/accept'
 

+ 7 - 1
common/http.api.js

@@ -27,6 +27,10 @@ const install = (Vue, vm) => {
 	
 	let punchIn = (params = {}) => vm.$u.post(apiurl.punchInUrl, params);	
 	
+	let parkInConfirm = (params = {}) => vm.$u.put(apiurl.parkInConfirmUrl, params);
+	
+	let parkInInfo = (params = {}) => vm.$u.get(apiurl.parkInInfoUrl,params);
+	
 	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
 	vm.$u.api = {
 		login,
@@ -39,7 +43,9 @@ const install = (Vue, vm) => {
 		modifyPwd,
 		deviceReg,
 		punchInfo,
-		punchIn
+		punchIn,
+		parkInConfirm,
+		parkInInfo
 	};
 }
 

+ 7 - 0
pages.json

@@ -33,6 +33,13 @@
 				"navigationBarTitleText": "车辆入场"
 			}
 		},
+		{
+			"path": "pages/getin/getin",
+			"style": {
+				"navigationStyle":"custom",// 隐藏系统导航栏
+				"navigationBarTitleText": "车辆入场"
+			}
+		},
 		{
 			"path": "pages/getout/getout",
 			"style": {

+ 87 - 0
pages/getin/getin.scss

@@ -0,0 +1,87 @@
+.car-info{
+	margin-top: 20rpx;
+	margin-bottom: 33rpx;
+	padding: 32rpx 40rpx 54rpx;
+	border-bottom: 20rpx solid #F4F4F4;
+	.car-info-img{
+		width: 220rpx;
+		height: 287rpx;;
+		padding: 14rpx;
+		margin-right: 35rpx;
+		box-sizing: border-box;
+		background: #FFFFFF;
+		box-shadow: 0px 0px 8rpx 3rpx rgba(166, 166, 166, 0.29);
+		border-radius: 10rpx;
+	}
+	.car-info-text{
+		.text-item{
+			padding-bottom: 15rpx;
+			margin-bottom: 15rpx;
+			border-bottom: 1px solid #EAEAEA;
+			font-size: 30rpx;
+			font-weight: 400;
+			color: #8A8A8A;
+			line-height: 42rpx;
+			letter-spacing: 1px;
+			.car{
+				font-size: 40rpx;
+				font-weight: 500;
+				color: #3D3D3D;
+				line-height: 56rpx;
+			}
+			.balance{
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #FA6400;
+				line-height: 45rpx;
+			}
+			.recharge{
+				padding: 0 22rpx;
+				height: 36rpx;
+				line-height: 36rpx;
+				background: #3397FA;
+				color: #fff;
+				border-radius: 5rpx;
+				font-size: 18rpx;
+			}
+		}
+		.text-item.position-wrap{
+			font-size: 40rpx;
+			font-weight: 500;
+			color: #3D3D3D;
+			line-height: 56rpx;
+		}
+	}
+}
+
+.other-info{
+	padding: 55rpx 40rpx 0;
+	margin-bottom: 20rpx;
+	background-color: #fff;
+	.other-info-item{
+		margin-bottom: 20rpx;
+		.u-input{
+			margin-right: 22rpx;			
+			background-color: #F7F7F7;
+			// height: 81rpx;
+			// line-height: 81rpx;
+			/deep/ .uni-input-input,/deep/ .uni-input-placeholder{
+				padding-left: 31rpx;
+				// height: 81rpx;
+				// line-height: 81rpx;
+			}
+		}
+		.u-btn{
+			height: 81rpx;
+			line-height: 81rpx;
+		}
+	}
+}
+
+.upload-wrap{
+	margin: 42rpx 40rpx;
+}
+
+.bottom-btn-box{
+	bottom: 20rpx;
+}

+ 221 - 0
pages/getin/getin.vue

@@ -0,0 +1,221 @@
+<template>
+	<view class="">
+		<u-navbar
+		 title="车辆入场" 
+		 title-color="#fff" 
+		 :custom-back="customBack" 
+		 :border-bottom="false" 
+		 back-icon-color="#CCE8FF" 
+		 :background="{background: '#008CFF' }"></u-navbar>
+		<view class="car-info u-flex">
+			<view class="car-info-img" @click="getPic">
+				<u-image src="/static/img/default-car.png" width="100%" height="100%"></u-image>
+			</view>
+			<view class="car-info-text u-flex-1">
+				<view class="text-item position-wrap">
+					<view class="position">车位:{{spaceName}}</view>
+				</view>
+				<view class="text-item u-flex u-flex u-row-between">
+					<view class="">车辆类型</view>
+					<view class="" @click="carTypeShow = true">{{carType|filterCarType}}</view>
+				</view>
+				<view class="text-item u-flex u-flex u-row-between">
+					<view class="">余额:<span class="balance">{{balance||'暂无'}}</span></view>
+					<!-- <view class="recharge" @click="$refs.uToast.show({title: '建设中'})">充值</view> -->
+				</view>
+				<view class="text-item">{{$u.timeFormat(currentTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
+			</view>
+		</view>
+		
+		<view class="other-info">
+			<view class="other-info-item u-flex">
+				<u-input v-model="vehicleNo" height="80" type="text" placeholder="输入车牌号" />
+				<u-button type="primary" @click="handleParkInInfo">确认</u-button>
+			</view>
+			<view class="other-info-item">
+				<u-input style="width: 100%;" v-model="deposit" height="80" type="text" placeholder="输入进场押金" />
+			</view>
+			
+		</view>
+		<view class="upload-wrap">
+			<u-upload :action="upload" :file-list="fileList" upload-text="拍照取证" ></u-upload>
+		</view>
+		
+		
+		<view class="bottom-btn-wrap">
+			<view class="bottom-btn-box u-flex">
+				<view class="bottom-btn bg-blue" @click="submit">入场</view>
+				<view class="bottom-btn bg-gray" @click="openPage('pages/getout/getout')">取消</view>
+			</view>
+		</view>
+		
+		<u-select v-model="carTypeShow" :default-value="[carType]" :list="carTypeList" @confirm="carTypeConfirm"></u-select>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				spaceId:'',
+				spaceName:'',
+				carTypeShow:false,
+				carTypeList:[
+					{label: '小车',value:0}
+					,{label: '大车',value:1}
+					,{label: '超大型车',value:2}
+					,{label: '摩托车',value:3}
+					,{label: '非机动车',value:4}
+					,{label: '其他',value:5}
+				],
+				carType:0,
+				vehicleType:null,
+				currentTime: new Date(), // 获取当前时间
+				vehicleNo:null,
+				vehicleColor:null,
+				vehicleImage:null,
+				deposit:null,
+				balance:null,
+				fileList:[]
+			}
+		},
+		onLoad(page) {
+			this.spaceId = page.spaceId;
+			this.orderInTime = page.orderInTime;
+			this.spaceName = page.spaceName;
+			this.roadNo = page.roadNo;
+			
+		},
+		onShow() {
+			
+		},
+		methods:{
+			customBack(){
+				this.$u.route({
+					// type:'switchTab',
+					url: 'pages/parking/parking'
+				});
+			},
+			openPage(path) {
+				console.log('path',path);
+				this.$u.route({ 
+					url: path
+				})
+			},
+			carTypeConfirm(e){
+				// console.log('carTypeConfirm',e[0].label);
+				// this.carType = e[0].label;
+				this.carType = e[0].value;
+				this.vehicleType = e[0].value;
+			},
+			submit(){
+				let param ={
+					spaceId:this.spaceId,
+					vehicleNo:this.vehicleNo,
+					vehicleColor:this.vehicleColor,
+					vehicleImage:this.vehicleImage,
+					vehicleType:this.vehicleType,
+					deposit:this.deposit
+				};
+				this.$u.api.parkInConfirm(param)
+				.then(res=>{
+					this.$refs.uToast.show({
+						title: res.msg,
+						type: 'success',
+						url:'pages/getout/getout'
+					});
+					console.log('parkInConfirm',res)
+				}).catch(err=>{
+					this.$refs.uToast.show({
+						title: err.msg,
+						type: 'error',
+						// url:'pages/parking/parking'
+					});
+					console.log('parkInConfirm ',err)
+				});
+			},
+			handleParkInInfo(){
+				let param ={
+					vehicleNo:this.vehicleNo,
+					roadNo:this.roadNo
+				};
+				this.$u.api.parkInInfo(param)
+				.then(res=>{
+					this.$refs.uToast.show({
+						title: res.msg,
+						type: 'success',
+						// url:'pages/getout/getout'
+					});
+					this.vehicleType = res.data.vehicleType??"0";
+					this.balance = res.data.balance;
+					console.log('parkInInfo',res);
+					console.log('this.vehicleType',this.vehicleType)
+				}).catch(err=>{
+					this.$refs.uToast.show({
+						title: err.msg,
+						type: 'error',
+						// url:'pages/parking/parking'
+					});
+					console.log('parkInInfo ',err)
+				});
+			},
+			getPic(){
+				let that = this;
+				uni.chooseImage({
+					count: 1, //默认9
+					sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera'], //
+					success: function (res) {
+						// console.log('img',res)
+						uni.showLoading({});
+						const tempFilePaths = res.tempFilePaths;
+						// 若多选,需循环调用uni.uploadFile ,因微信小程序只支持单文件上传
+						uni.uploadFile({
+							url: `${that.config.fileUrl}/baidu/ocr`,
+							filePath: tempFilePaths[0],
+							name: 'file',
+							formData: {
+								'test': 'test'  // 上传附带参数
+							},
+							success: (res) => {
+								// 根据接口具体返回格式   赋值具体对应url
+								// alert(uploadFileRes.data);
+								let resobj=eval("("+res.data+")");
+								uni.hideLoading();
+								if(resobj.code==200){
+									console.log(resobj);
+									that.vehicleNo = resobj.data.vehicleNo;
+									that.vehicleClor = resobj.data.vehicleClor;
+								}else{
+									that.$refs.uToast.show({
+										title: resobj.msg,
+										type: 'error'
+									});
+								}
+								
+								console.log(res);
+							},
+							fail: (err) => {
+								that.$refs.uToast.show({
+									title:err.msg,
+									type: 'error'
+								});
+								uni.hideLoading();
+							}
+						});
+					}
+				});
+			},
+			upload(){
+				
+			}
+			
+		}
+		
+	}
+</script>
+
+<style lang="scss">
+	@import "./getin.scss";
+</style>

+ 7 - 1
pages/getout/getout.vue

@@ -1,6 +1,12 @@
 <template>
 	<view>
-		<u-navbar title="车辆出场" title-color="#fff" :custom-back="customBack" :border-bottom="false" back-icon-color="#CCE8FF" :background="{background: '#008CFF' }"></u-navbar>
+		<u-navbar
+		 title="车辆出场" 
+		 title-color="#fff" 
+		 :custom-back="customBack" 
+		 :border-bottom="false" 
+		 back-icon-color="#CCE8FF" 
+		 :background="{background: '#008CFF' }"></u-navbar>
 		<u-empty class="u-m-t-80" text="暂无停车" mode="data" v-if="roadspaceList.length == 0"></u-empty>
 		<view class="roadspace-list wrap">
 			<view class="roadspace-list-item" :class="{used:item.placeStatus==1}" @click="roadspaceClick(item)" v-for="item in roadspaceList" :key="item.id">

+ 7 - 3
pages/parking/parking.vue

@@ -2,7 +2,7 @@
 	<view>
 		<u-empty class="u-m-t-80" text="暂无车位" mode="data" v-if="roadspaceList.length == 0"></u-empty>
 		<view class="roadspace-list wrap">
-			<view class="roadspace-list-item" @click="roadspaceClick(item)" v-for="item in roadspaceList" key="item.id">
+			<view class="roadspace-list-item" @click="roadspaceClick(item)" v-for="(item,index) in roadspaceList" :key="index + item.id">
 				<view class="block">
 					
 				</view>
@@ -30,6 +30,7 @@
 				actionShow:false,
 				roadspaceList:[],
 				spaceId:null,
+				spaceName:'',
 				
 			}
 		},
@@ -72,6 +73,7 @@
 			roadspaceClick(roadspace){
 				this.actionShow = true;
 				this.spaceId = roadspace.id;
+				this.spaceName = roadspace.spaceName;
 				console.log('roadspace',roadspace);
 			},
 			actionClick(e){
@@ -79,9 +81,11 @@
 				switch (e){
 					case 0:
 						this.$u.route({
-							url: 'pages/getcarno/getcarno',
+							url: 'pages/getin/getin',
 							params: {
-								spaceId: this.spaceId
+								spaceId: this.spaceId,
+								spaceName:this.spaceName,
+								roadNo:this.roadNo
 							}
 						});
 						break;

+ 9 - 0
pages/setting/setting.scss

@@ -0,0 +1,9 @@
+page{
+	background-color: #F4F4F4;
+}
+
+.cell-group{
+	margin: 20rpx 40rpx;
+	border-radius: 20rpx;
+	overflow: hidden;
+}

+ 16 - 0
pages/setting/setting.vue

@@ -1,5 +1,6 @@
 <template>
 	<view>
+		
 		<u-navbar 
 		title="设置" 
 		title-color="#fff" 
@@ -7,6 +8,15 @@
 		:border-bottom="false" 
 		back-icon-color="#CCE8FF" 
 		:background="{background: '#008CFF' }"></u-navbar>
+		
+		<view class="cell-group" style="margin-top: 30rpx;">
+			<u-cell-group>				
+				<u-cell-item title="修改密码" @click="openPage('pages/modifypwd/modifypwd')">
+					<u-icon slot="icon" custom-prefix="custom-icon" size="35" name="wodecheliang"></u-icon>
+				</u-cell-item>
+			</u-cell-group>
+		</view>
+		
 	</view>
 </template>
 
@@ -30,6 +40,12 @@
 					url: 'pages/index/index'
 				});
 			},
+			openPage(path) {
+				// console.log('path',path);
+				this.$u.route({ 
+					url: path
+				});
+			},
 			
 		}
 	}

+ 30 - 0
utils/filter.js

@@ -48,4 +48,34 @@ Vue.filter("miniImg",function(img,quality){
 	return img+'?imageMogr2/quality/'+quality
 });
 
+//车辆类型
+Vue.filter("filterCarType",function(item){
+	console.log(item)
+	switch (item){
+		case 0:
+			return '小车'
+			break;
+		case 1:
+			return '大车'
+			break;
+		case 2:
+			return '超大型车'
+			break;
+		case 3:
+			return '摩托车'
+			break;
+		case 4:
+			return '非机动车'
+			break;
+		case 5:
+			return '其他'
+			break;
+		default:
+			return '其他'
+			break;
+	}
+	
+});
+
+