Explorar el Código

故障列表, 维修页面编写 ,场站列表, 站详情编写

zhengkaixin hace 3 semanas
padre
commit
20cf7988e6

+ 22 - 0
pages.json

@@ -166,6 +166,28 @@
 			{
 				"navigationBarTitleText" : ""
 			}
+		},
+		
+		{
+			"path" : "pages/inspection/info",
+			"style" : 
+			{
+				"navigationBarTitleText" : ""
+			}
+		},
+		{
+			"path" : "pages/inspection/add",
+			"style" : 
+			{
+				"navigationBarTitleText" : ""
+			}
+		},
+		{
+			"path" : "pages/inspection/list",
+			"style" : 
+			{
+				"navigationBarTitleText" : ""
+			}
 		}
 	],
 

+ 3 - 3
pages/index/index.vue

@@ -50,7 +50,7 @@
 			
 			</view>
 			
-			<view class="item-na end"   @click="gotoUrl('/pages/task/listTask')"   >
+			<view class="item-na end"   @click="gotoUrl('/pages/inspection/list')"   >
 				<view class="na-img">
 					<image class="img" src="@/assets/img/index/na-2.png" mode=""></image>
 				</view>
@@ -147,7 +147,7 @@
 			<u-tabs :list="tabslist"
 			
 			 :current="current" @change="change"></u-tabs>
-				<view class="goto-main"  @click="gotoUrl('/pages/lockTab/listLock')">
+				<view class="goto-main"  @click="gotoUrl('/pages/task/listTask')">
 					全部故障记录
 					<u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
 				</view>
@@ -742,7 +742,7 @@ import {
 						}
 						
 						.status0 {
-							background-color:  rgba(255, 61, 0, 1);
+							background-color:  #FF7B00;
 							
 						}
 						.status1 {

+ 483 - 0
pages/inspection/add.vue

@@ -0,0 +1,483 @@
+<template>
+	<view  class="jpmain  " >
+			<u-navbar  title="维修结果" title-color="#101010"></u-navbar>
+			
+				<u-picker mode="time" v-model="completionTimeShow"
+				@confirm="completionTimeConfirm" :default-time="taskInfo.completionTime"
+				 :params="params"></u-picker>
+
+			
+			<view class="list" >
+				<view class="item">
+					荆鹏充电站
+
+					
+				</view>
+				<view class="item "  >
+					<view class="name">
+						站点地址 荆州市沙市区江津东路155号院内
+
+					</view>
+					<view class="value">
+						站点地址 荆州市沙市区江津东路155号院内
+						
+					</view>
+				</view>
+			
+				
+				 
+			</view>
+			
+			
+			<view class="list" >
+				<view class="item "  >
+					巡检操作记录
+
+				</view>
+				<view class="item item-plus"  >
+					<view class="name">
+						处理人员
+				
+					</view>
+					<view class="value" v-if="floorlockErrorRecord.status!=0">
+						{{floorlockErrorRecord.updateTime}}
+						
+					</view>
+					<view class="value  " 
+				
+					v-else>
+					
+					<u-checkbox-group >
+								<u-checkbox 
+								
+									v-model="item.checked" 
+									v-for="(item, index) in listcheckbox" :key="index" 
+									:name="item.name"
+								>{{item.name}}</u-checkbox>
+							</u-checkbox-group>
+					
+						
+					</view>
+				</view>
+				
+				<view class="item item-plus" style="    align-items: center;"  >
+					<view class="name">
+						处理时间
+				
+					</view>
+					<view class="value" v-if="floorlockErrorRecord.status!=0">
+						{{floorlockErrorRecord.updateTime}}
+						
+					</view>
+					<view class="value  " 
+					@click="completionTimeShow=true"
+					v-else>
+					<view class="valueclock">
+						<u-icon name="clock" size="32" color="#BBBBBB"></u-icon>
+						
+							{{taskInfo.completionTime}}
+					</view>
+					
+						
+					</view>
+				</view>
+				
+				
+				
+				<view class="item item-plus" v-if="0"  >
+					<view class="name">
+						现场照片
+
+				
+					</view>
+					<view class="value" v-if="floorlockErrorRecord.status==0" >
+						<u-upload name="photoFile"
+								ref="uUpload"
+								 :form-data="formData" :header="header" :action="action"
+								  :file-list="listPic" ></u-upload>
+					</view>
+					<view class="value"  v-else >
+						
+						<img  class="viewImg" v-for="(item,i) in repairImageList"
+						  @click="previewImage(i,'repairImageList')"
+						 :key="i"
+						 :src="item" mode=""></img>
+						 
+					</view>
+				</view>
+				
+			</view>
+			
+			
+			<view class="floating-button"  v-if="floorlockErrorRecord.status==0" >
+				<view class="button"  @click="submit" >
+					
+					提交
+				</view>
+				
+			</view>
+	</view>
+</template>
+
+<script>
+	import * as API from '@/apis/pagejs/pagesTask.js'
+	import * as WxJsApi from '@/apis/utils/wxJsApi.js'
+	
+	import {
+		
+		currentTimeStamp,
+		parseUnixTime
+	} from '@/apis/utils'
+	
+	export default {
+		data() {
+			return {
+				listcheckbox:[
+					{
+										name: 'apple',
+										checked: false,
+										disabled: false
+									},
+									{
+										name: 'banner',
+										checked: false,
+										disabled: false
+									},
+									{
+										name: 'orange',
+										checked: false,
+										disabled: false
+									}
+				],
+				listPic: [],
+				action:"",
+				formData:{
+					
+				},
+				header:{
+					
+				},
+				params: {
+					year: true,
+					month: true,
+					day: true,
+					hour: true,
+					minute: true,
+					second: true,
+					timestamp: true,
+				},
+				codeN:"",
+				selectTaskInfoCode:false,
+				selectTaskInfoCodeValue:[0],
+				lockNo:"",
+				lockName:"",
+				
+				floorlockInfo:{},
+				floorlockErrorRecord:{},
+				parkingInfo:{},
+				taskInfo:{
+					id:"",
+					desc:"",
+					images:"",
+					completionTime:"",
+					
+				},
+				codeList:[],
+				id:"",
+				imgList:[],
+				repairImageList:[],
+				completionTimeShow:false,
+			};
+		},
+		onLoad(op) {
+			this.action=process.jphelp.BASE_URL+"uploadPicture"
+			this.formData.subFolder="/floorlock/inspection/updateErr"
+			var token=this.jphelp.getToken()
+			this.header={
+					
+				'Authorization':token
+			}
+			this.id=op.id
+			this.taskInfo.completionTime= parseUnixTime(currentTimeStamp())
+			this.errDetails()
+			
+			
+		},
+		onReady() {
+			WxJsApi.getWxConfig([ 'openLocation']).then((res) => {
+				// //(res)
+			}).catch(error => {
+				//(res)
+			})
+		},
+		methods:{
+			completionTimeConfirm(e){
+				console.log(e)
+				
+				this.taskInfo.completionTime= parseUnixTime(new Date(e.timestamp* 1000))
+			},
+			previewImage(i,name) {
+				let imgs = this[name];
+				//imgs.push(img);
+				uni.previewImage({
+					urls: imgs,
+					current: i
+				})
+			},
+			navigate() {
+				var item=this.parkingInfo
+				if(!(this.parkingInfo.latitude&&this.parkingInfo.longitude)){
+					return
+				}
+				//console.log(item)
+				uni.showLoading({
+			
+				})
+				setTimeout(()=>{
+					uni.hideLoading()
+				},3*1000)
+				WxJsApi.openLocation({
+					latitude: parseFloat(item.latitude), //目的地latitude
+					longitude: parseFloat(item.longitude), //目的地longitude
+					name: item.name,
+					address: item.address,
+					scale: 15, //地图缩放大小,可根据情况具体调整
+					success(res) {
+						uni.hideLoading()
+					},
+					complete() {
+						//	uni.hideLoading()
+					}
+				});
+				// //('station'+JSON.stringify(_self.stationDetail.station))
+				// window.location.href = "https://uri.amap.com/marker?position=" + _self.stationDetail.station.longitude +
+				// 	"," + _self.stationDetail.station.latitude + "&name=" + _self.stationDetail.station.name;
+			
+			},
+			errDetails(){
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				
+				API.errDetails({
+					id:this.id
+				}).then((res) => {
+					this.floorlockErrorRecord=res.data.floorlockErrorRecord
+					this.floorlockInfo=res.data.floorlockInfo
+					this.parkingInfo=res.data.parkingInfo
+					if(this.floorlockErrorRecord.errorImage){
+						this.imgList=this.floorlockErrorRecord.errorImage.split(',')
+					}
+					if(this.floorlockErrorRecord.repairImage){
+						this.repairImageList=this.floorlockErrorRecord.repairImage.split(',')
+					}
+					
+					uni.hideLoading();
+				
+				}).catch(error => {
+				
+					uni.hideLoading();
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
+			},
+			submitApi(){
+				let files = [];
+				// 通过filter,筛选出上传进度为100的文件(因为某些上传失败的文件,进度值不为100,这个是可选的操作)
+				files = this.$refs.uUpload.lists.filter(val => {
+					return val.progress == 100;
+				})
+				// 如果您不需要进行太多的处理,直接如下即可
+					// files = this.$refs.uUpload.lists;
+				
+				//(files);
+					
+				var imgUrl=files.map(item=>{
+					return item.response.data;
+				})
+				//(imgUrl);
+				this.taskInfo.images = imgUrl.join(',');
+				this.taskInfo.id=this.id;
+				
+				
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				
+				API.updateErr(this.taskInfo).then((res) => {
+					
+					const eventChannel = this.getOpenerEventChannel();
+					
+					eventChannel.emit('acceptDataFromOpenerPage', {})
+					
+					uni.showModal({
+						title: '提示',
+						showCancel: false,
+						content: "操作成功",
+						success: res1 => {
+							if (res1.confirm) {
+								uni.navigateBack()
+							} else if (res1.cancel) {
+								//('用户点击取消');
+							}
+						}
+					})
+					
+					uni.hideLoading();
+				
+				}).catch(error => {
+				
+					uni.hideLoading();
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
+			},
+			submit(){
+				
+				if(!this.taskInfo.desc){
+					uni.showModal({
+						title: '提示',
+						showCancel: true,
+						cancelText:"返回填写",
+						confirmText:"继续提交",
+						content: "未填写处理步骤,是否继续提交",
+						success: res1 => {
+							if (res1.confirm) {
+								this.submitApi()
+							} else if (res1.cancel) {
+								//('用户点击取消');
+							}
+						}
+					})
+				}else{
+					this.submitApi()
+				}
+			
+				
+				
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	.jpmain{padding-bottom: 120rpx;}
+.list{
+		background-color: rgba(255,255,255,1);
+		border-radius: 8px;
+
+		margin: 20rpx ;
+		.item:first-child {
+		  border-bottom:1px solid rgba(232,232,232,1);
+		  font-size: 16px;
+			font-weight: bold;
+		}
+		
+		
+		.item{
+			padding: 20rpx 24rpx;
+			
+			.name{
+				   // width: 40%;
+				   padding-bottom: 32rpx;
+					font-size: 32rpx;
+					color: #777777;
+					span{
+						color:red
+					}
+					white-space: pre;
+			}
+			.valueplus{
+				display: flex;
+				justify-content: space-between;
+				 
+			}
+			.valueclock{
+				width: 100%;
+				border-radius: 4px;
+				   padding: 0 8px;
+				   height: 64rpx;
+				line-height: 64rpx;
+				background-color: rgba(241,242,245,1);
+			}
+			.value{
+				font-size: 32rpx;
+				 
+				    display: flex;
+					align-items: center;
+					input::placeholder{
+						color:#AAAAAA;
+					}
+					.img{
+						width: 40rpx;
+						height: 40rpx;
+						
+					}
+					.textarea{
+						background-color: rgba(241,242,245,1);
+						width: 100%;
+						border-radius: 4px;
+					}
+					.typeN{
+						font-size: 24rpx;
+						margin-right: 8rpx;
+						display: flex;
+						align-items: center;
+							border-radius: 4px;
+							padding: 2px 8rpx;
+							color: #fff;
+					}
+					.typeN1{
+						background-color:#1677ff;
+						//border: 1px solid #1677ff;
+					}
+					.typeN2{
+						background-color:#19be6b;
+						//border: 1px solid #19be6b;
+						 
+					}
+			}
+		}
+		
+		
+	}
+	.textareaclass{
+		padding:16rpx
+	}
+	.floating-button {
+		z-index: 999;
+		position: fixed; 
+		  bottom: 0;    /* 距离底部 20px */
+		    width: 100%;
+			 display: flex;
+			  height: 120rpx;
+			    justify-content: center;
+			background-color: rgba(255,255,255,1);
+			.button{
+				margin-top: 24rpx;
+				border-radius: 50px;
+			 height: 80rpx;
+				width: 80%;
+				display: flex;
+				    align-items: center;
+				    justify-content: center;
+					padding:12rpx;
+					
+					background-color: rgba(22,119,255,1);
+					color: rgba(255,255,255,1);
+					font-size: 36rpx;
+			}
+	}
+	.viewImg{
+		width: 160rpx;
+		height: 160rpx;
+	}
+	
+</style>

+ 19 - 0
pages/inspection/info.vue

@@ -0,0 +1,19 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 385 - 0
pages/inspection/list.vue

@@ -0,0 +1,385 @@
+<template>
+	<view>
+		<u-navbar title="巡检记录" title-color="#101010" :customBack="customBack" ></u-navbar>
+		
+		<view class="top">
+			<view class="search">
+				<view class="searchBox">
+					<u-search shape="square" placeholder="使用停车场名称/地锁编号搜索" maxlength="12" v-model="testName" :show-action="false"
+						:animation="true"></u-search>
+					<u-button type="primary" size="mini" @click="testBtn">搜素</u-button>
+				</view>
+			</view>
+		</view>
+		
+		<view  class="viewTop" >
+			<u-tabs :list="tabslist" 
+			 style="   width: 50%;"
+			 :current="current" @change="change"></u-tabs>
+			 <view class="select" @click="gotoSelectLock">
+				<view class="selectSpan">
+					{{lockName?lockName:'选择地锁'}}
+				</view>
+				 <u-icon name="arrow-down" size="32" color="#AAAAAA"></u-icon>
+			 </view>
+		</view>
+		
+
+		<view class="list"  >
+			<view class="item" 
+			 v-for="(item,index) in list" 
+			 @click="gotoTask(item)"
+			 :key="index">
+			
+				<view class="body">
+					<view class="line1">
+						<view class="title">
+							{{item.errorCodeText}}
+		
+						</view>
+						<view class="status " :class="'status'+item.status">
+							{{item.statusN}}
+		
+						</view>
+					</view>
+					
+					<view class="line2">
+						<view class="value">
+							设备编号 {{item.parkingName}}
+		
+						</view>
+						<view class="value">
+							设备网点 {{item.parkingName}} 
+		
+						</view>
+						<view class="value">
+							创建时间 {{item.createTime}} 
+						</view>
+						
+					</view>
+					
+					<view class="line3">
+						
+						<u-button  type="info"  size="mini">查看</u-button>
+						
+						<u-button  type="primary"  size="mini" >去处理</u-button>
+						
+					</view>
+		
+				</view>
+				
+			</view>
+			
+			
+		</view>
+		<u-divider :isnone="list.length==0" nonetext="没有找到相关内容" border-color="#CFD2D5">已经到底了</u-divider>
+		
+		
+		<view class="floating-button">
+			<view class="button"  @click="submit" >
+				
+				故障上报
+
+			</view>
+			
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import * as API from '@/apis/pagejs/pagesTask.js'
+	
+	export default {
+		data() {
+			return {
+				list:[],
+				listForm:{
+					pageIndex: 1,
+					pageSize: 20,
+					recordsTotal: 1,
+					status:0
+				},
+				lockId:"",
+				lockName:"",
+				current:0,
+				tabslist:[
+					{
+						name: '待处理'
+					}, {
+						name: '已处理'
+					}
+				]
+			};
+		},
+		onLoad(op) {
+			if(op.status){
+				if('geterrList0'==op.status){
+					this.current=0
+					this.listForm.status=0
+				}
+				if('geterrList1'==op.status){
+					this.current=1
+					this.listForm.status=1
+				}
+			}
+			
+			if(op.lockId){
+				this.lockId=op.lockId
+				this.lockName=op.lockName
+				this.listForm.lockId=op.lockId;
+			}
+			this.getList()
+		},
+		onReachBottom() {
+			if (this.list.length < this.listForm.recordsTotal) {
+				this.myLoadmore();
+			}
+		},
+		methods: {
+			gotoSelectLock(){
+				uni.navigateTo({
+				  url: '/pages/task/selectLock?isAll=1',
+				  events: {
+				    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
+				    acceptDataFromOpenerPage: (item)=>{
+						console.log(item)
+						
+						this.lockName=item.item.name
+						this.listForm.lockId=item.item.id
+						this.getList(1)
+						this.$forceUpdate()
+						
+				    },
+				 
+				  }
+				 
+				})
+			},
+			customBack(){
+				if(this.lockId){
+					uni.switchTab({
+						url:"/pages/index/index"
+					})
+				}else{
+					uni.navigateBack()
+				}
+			},
+			gotoTask(k){
+				uni.navigateTo({
+				  url: '/pages/inspection/add?id='+k.id,
+				  events: {
+				    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
+				    acceptDataFromOpenerPage: (data)=>{
+						console.log(data)
+						this.getList(1)
+				    },
+				 
+				  }
+				 
+				})
+			},
+			change(e){
+				this.current=e
+				this.listForm.pageIndex=0
+				this.listForm.status=e
+				this.list =[]
+				this.getList()
+			},
+			
+			myLoadmore(){
+				this.listForm.pageIndex += 1;
+				this.getList()
+			},
+			getList(bl) {
+				if(bl){
+					this.listForm.pageIndex = 1
+				}
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+							 
+				API.errList(this.listForm).then((res) => {
+					var list=[]
+					
+					if (this.listForm.pageIndex == 1) {
+						list = res.data.data;
+					} else {
+						list = [
+							...list,
+							...res.data.data
+						];
+					}
+					this.list = res.data.data
+					uni.hideLoading();
+				
+				}).catch(error => {
+				
+					uni.hideLoading();
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
+			},
+		}
+		
+	}
+</script>
+
+<style lang="scss" scoped>
+
+		.list {
+			padding: 24rpx 24rpx;
+			
+			.item {
+				border-radius: 8px;
+				
+				display: flex;
+				border-bottom: 1px solid rgba(232, 232, 232, 1);
+				background-color: rgba(255,255,255,1);
+				// padding: 12rpx 0;
+				 margin-bottom: 12rpx ;
+
+				.img {
+					width: 72rpx;
+					height: 72rpx;
+
+				}
+
+				.body {
+					//margin: 0 12rpx;
+					width: 100%;
+					.line1,.line2,.line3{
+						padding: 12px;
+					}
+					.line3{
+						text-align: end;
+					}
+					.line2 {
+						color: rgba(119,119,119,1);
+						font-size: 24rpx;
+						//margin-top: 8rpx;
+						border-bottom:1px solid rgba(232,232,232,1);
+						.value:not(:last-child) {
+							margin-bottom: 16rpx;
+						}
+					}
+					.line1 {
+						
+						display: flex;
+						justify-content: space-between;
+						 border-bottom:1px solid rgba(232,232,232,1);
+						.title {
+							color: rgba(51, 51, 51, 1);
+							font-size: 28rpx;
+							font-weight: bold;
+						}
+
+						.status {
+							background-color:  rgba(255, 61, 0, 1);
+							font-size: 24rpx;
+							color:#fff;
+							padding: 2rpx 8rpx;
+							//border-radius: 4px;
+
+						}
+						
+						.status0 {
+							background-color:  #FF7B00;
+							
+						}
+						.status1 {
+							background-color:  #007aff;
+							
+						}
+
+						.status2 {
+							background-color:  #ff9900;
+							
+						}
+
+						.status3 {
+							background-color:  #19be6b;
+							
+						}
+
+						.status4 {
+							border: 1px solid rgba(255, 61, 0, 1);
+							color: rgba(255, 61, 0, 1);
+						}
+					}
+					
+					
+				}
+			}
+
+			// .item:not(:last-child) {
+			//   border-bottom:1px solid rgba(232,232,232,1);
+			// }
+		}
+		
+		.viewTop{
+			border-bottom: 1px solid #e8e8e8;
+			background-color: #fff;
+			    display: flex;
+			    justify-content: space-between;
+				    align-items: center;
+					.select{
+						    padding: 0px 15px;
+							font-size: 30rpx;
+							    display: flex;
+								
+							.selectSpan{
+								    text-align: end;
+								width: 200rpx;
+								overflow: hidden;
+								   text-overflow: ellipsis;
+								   white-space: nowrap; /* 禁止换行,强制单行 */
+							}
+					}
+				
+		}
+		
+		.search {
+		
+			padding: 16rpx 32rpx;
+			background: #fff;
+		
+			.searchBox {
+				display: flex;
+				align-items: center;
+				background: #F2F2F2;
+				padding: 1px 16rpx;
+				border-radius: 8px;
+				justify-content: space-between;
+			}
+		}
+		
+		
+		.floating-button {
+			z-index: 999;
+			position: fixed; 
+			  bottom: 0;    /* 距离底部 20px */
+			    width: 100%;
+				 display: flex;
+				  height: 120rpx;
+				    justify-content: center;
+				background-color: rgba(255,255,255,1);
+				.button{
+					margin-top: 24rpx;
+					border-radius: 50px;
+				 height: 80rpx;
+					width: 80%;
+					display: flex;
+					    align-items: center;
+					    justify-content: center;
+						padding:12rpx;
+						
+						background-color: rgba(22,119,255,1);
+						color: rgba(255,255,255,1);
+						font-size: 36rpx;
+				}
+		}
+</style>

+ 2 - 1
pages/myTab/abnormalList.vue

@@ -244,7 +244,8 @@
 
 	}
 
-	.floating-button {
+	.floating-button {
+		z-index: 999;
 		position: fixed;
 		bottom: 120rpx;
 		width: 100%;

+ 2 - 2
pages/station/stationGun.vue

@@ -1268,8 +1268,8 @@
 		background: linear-gradient(180deg, rgba(222, 222, 222, 1) 3%, rgba(255, 255, 255, 1) 5%, rgba(232, 232, 232, 1) 56%, rgba(255, 255, 255, 1) 59%, rgba(236, 236, 236, 1) 95%, rgba(215, 215, 215, 1) 98%);
 
 		.top {
-			background-repeat: round;
-			background-image: url('@/assets/img/deviceTab/index3-2.png');
+			//background-repeat: round;
+			//background-image: url('@/assets/img/deviceTab/index3-2.png');
 			display: flex;
 			justify-content: space-around;
 			text-align: center;

+ 469 - 0
pages/station/stationInfo.vue

@@ -1,6 +1,247 @@
 <template>
 	<view>
 		
+		<u-navbar title="场站主页" ></u-navbar>
+			
+			<view class="gradient-header">
+				<view class="jpback">
+			
+				</view>
+			</view>
+			
+		<view class="panel main1_panel">
+			
+			
+			<view class="name">
+				<view class="p1">
+					荆鹏软件园
+				
+				</view>
+				<view class="p2">
+					地址:荆州市沙市区江津东路155号
+				
+				</view>
+			</view>
+			<view class="body">
+				<view class="span">
+					<image class="img" src="@/assets/img/station/item2.svg" mode=""></image>
+					在用
+					<span>10</span>
+				</view>
+				<view class="span">
+					<image class="img" src="@/assets/img/station/item3.svg" mode=""></image>
+					空闲
+					<span>10</span>
+				</view>
+				<view class="span">
+					<image class="img" src="@/assets/img/station/item1.svg" mode=""></image>
+					故障
+					<span>10</span>
+				</view>
+				<view class="span">
+					<image class="img" src="@/assets/img/station/item4.svg" mode=""></image>
+					离线
+					<span>10</span>
+				</view>
+			</view>
+		</view>
+		<view class="panel main2_panel">
+			<view class="p1">
+				<view class="na-img">
+					<image class="img" src="@/assets/img/station/index2.svg" mode=""></image>
+				</view>
+				<view class="na-text ">
+					设备巡检
+				</view>
+			</view>
+			<view class="p2">
+				
+			</view>
+			<view class="p1">
+				<view class="na-img">
+					<image class="img" src="@/assets/img/station/index1.svg" mode=""></image>
+				</view>
+				<view class="na-text ">
+					故障处理
+				</view>
+			</view>
+		</view>
+		<view class="panel main3_panel">
+			<view class="title">
+				<view class="icon">
+					<image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
+				</view>
+				<view class="text">
+					<view>故障提醒</view>
+			
+					<view class="check-all">查看全部<u-icon name="arrow-right"></u-icon></view>
+			
+				</view>
+			
+			</view>
+			<view class="body">
+				<view class="line">
+					<view class="p1">
+						<view class="name">
+							停电
+
+						</view>
+						<view class="time">
+							03-16 09:00
+
+						</view>
+					</view>
+					<view class="p2">
+						<view class="tag tag1">
+							未处理
+						</view>
+						<u-icon name="arrow-right" color="#D4D4D4" ></u-icon>
+						
+					</view>
+				</view>
+				<view class="line">
+					<view class="p1">
+						<view class="name">
+							停电
+				
+						</view>
+						<view class="time">
+							03-16 09:00
+				
+						</view>
+					</view>
+					<view class="p2">
+						<view class="tag tag2">
+							已处理
+						</view>
+						<u-icon name="arrow-right" color="#D4D4D4" ></u-icon>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="panel main4_panel">
+			<view class="title">
+				<view class="icon">
+					<image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
+				</view>
+				<view class="text">
+					<view>巡检记录</view>
+			
+					<view class="check-all">查看全部<u-icon name="arrow-right"></u-icon></view>
+			
+				</view>
+			
+			</view>
+			
+			<view class="body">
+				<view class="line">
+					<view class="p1">
+						巡检
+						
+					</view>
+					<view class="p2">
+						卓光芒、肖鹏明
+
+						
+					</view>
+					<view class="p3">
+						06.15 12:00
+					</view>
+					
+					<u-icon name="arrow-right" color="#D4D4D4" ></u-icon>
+					
+				</view>
+				<view class="line">
+					<view class="p1">
+						巡检
+						
+					</view>
+					<view class="p2">
+						卓光芒、肖鹏明
+				
+						
+					</view>
+					<view class="p3">
+						06.15 12:00
+					</view>
+					
+					<u-icon name="arrow-right" color="#D4D4D4" ></u-icon>
+					
+				</view>
+			</view>
+			
+			
+			
+		</view>
+		<view class="panel main5_panel">
+			<view class="title">
+				<view class="icon">
+					<image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
+				</view>
+				<view class="text">
+					<view>设备信息</view>
+			
+					<view class="check-all">查看全部<u-icon name="arrow-right"></u-icon></view>
+			
+				</view>
+			
+			</view>
+			
+			<view class="body">
+				<view class="line lineT">
+					<view class="p1">
+						设备名称
+					</view>
+					<view class="p2">
+						设备型号
+
+					</view>
+					<view class="p3">
+						最后充电时间
+
+					</view>
+					<u-icon name="arrow-right" color="#FFF" ></u-icon>
+					
+				</view>
+				<view class="line">
+					<view class="p1">
+						充电枪
+
+						
+					</view>
+					<view class="p2">
+						JPDJ01-0002 
+
+			
+						
+					</view>
+					<view class="p3">
+						06.15 12:00
+					</view>
+					
+					<u-icon name="arrow-right" color="#D4D4D4" ></u-icon>
+					
+				</view>
+				<view class="line">
+					<view class="p1">
+						充电枪
+
+						
+					</view>
+					<view class="p2">
+						JPDJ01-0002 
+
+					</view>
+					<view class="p3">
+						06.15 12:00
+					</view>
+					
+					<u-icon name="arrow-right" color="#D4D4D4" ></u-icon>
+					
+				</view>
+			</view>
+			
+		</view>
 	</view>
 </template>
 
@@ -15,5 +256,233 @@
 </script>
 
 <style lang="scss">
+	.gradient-header {
+		height: 0px;
+	}
+	
+	.jpback {
+		height: 400rpx;
+		background: linear-gradient(180deg, rgba(22, 119, 255, 1) 20%, rgba(121, 177, 255, 1) 100%);
+	}
+	
+	.panel{
+		border-radius: 8px;
+		background-color: rgba(255, 255, 255, 1);
+		box-shadow: 0px 1px 6px 0px rgba(0, 59, 142, 0.05);
+		margin: 24rpx 32rpx;
+		padding: 40rpx;
+		
+		.title {
+			display: flex;
+			align-items: center;
+			margin-bottom: 32rpx;
+			font-weight: bold;
+		
+			.img {
+				width: 36rpx;
+				height: 36rpx;
+				vertical-align: middle;
+				border-radius: 999px;
+		
+			}
+		
+			.change {
+				display: flex;
+				align-items: center;
+		
+				.change-img {
+					width: 32rpx;
+					height: 32rpx;
+					vertical-align: middle;
+				}
+		
+				text {
+		
+					margin-left: 8rpx;
+				}
+			}
+		
+		
+			.text {
+				color: rgba(16, 16, 16, 1);
+				font-size: 36rpx;
+				margin-left: 16rpx;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				width: 100%;
+		
+				.tag {
+					border-radius: 4px;
+					border: 1px solid rgba(187, 187, 187, 1);
+					color: rgba(51, 51, 51, 1);
+		
+					font-size: 24rpx;
+					padding: 1px 8rpx;
+					margin-left: 8rpx;
+				}
+		
+			}
+		
+			.change {
+				margin-left: 16rpx;
+				font-size: 24rpx;
+				color: #838383;
+		
+			}
+		
+			.check-all {
+				margin-left: auto;
+				color: rgba(131, 131, 131, 1);
+				font-size: 24rpx;
+			}
+		}
+	}
+	
+	.main1_panel{
+		padding: 40rpx 0;
+		.name{
+			padding:   0 40rpx 24rpx 40rpx;
+			border-bottom: 1px solid #F5F5F5 ;
+			.p1{
+				color: rgba(51,51,51,1);
+				font-size: 18px;
+				font-weight: bold;
+			}
+			.p2{
+				color: rgba(51,51,51,1);
+				font-size: 14px;
+			}
+		}
+		.body{
+			padding:   26rpx 40rpx 0 40rpx;
+			    display: flex;
+			    justify-content: space-between;
+			.img{
+				width: 14px;
+				height: 14px;
+				margin-right: 8rpx;
 
+			}
+			.span{
+				    display: flex;
+				    align-items: center;
+					span{
+						margin-left: 8rpx;
+					}
+			}
+		}
+	}
+	.main2_panel{
+		margin-top: 32rpx;
+		display: flex;
+		justify-content: space-around;
+		align-items: center;
+		padding: 24rpx 0 20rpx 0;
+		
+		.p2 {
+			border-left: 1px solid rgba(187, 187, 187, 0.43);
+			height: 70rpx;
+		}
+		
+		.p1 {
+			width: 48%;
+			text-align: center;
+		
+			.na-img {
+				display: flex;
+				justify-content: center;
+		
+				.img {
+					width: 56rpx;
+					height: 56rpx;
+				}
+			}
+		}
+	}
+	.main3_panel{
+		.body{
+			.line{
+				padding: 12rpx 0;
+				    display: flex;
+				    justify-content: space-between;
+				.p1{
+					.name{
+						    font-weight: 600;
+						color: rgba(51,51,51,1);
+						font-size: 14px;
+					}
+					.time{
+						color: rgba(119,119,119,1);
+						font-size: 12px;
+					}
+				}
+				.p2{
+					    display: flex;
+					    align-items: center;
+					
+				}
+			}
+			
+			.line:not(:last-child) {
+			  border-bottom:1px solid rgba(232,232,232,1);
+			}
+			
+			.tag{
+				background-color: rgba(255,255,255,1);
+				color: rgba(255,61,0,1);
+				font-size: 12px;
+				height: 20px;
+				padding: 0 4rpx;
+				border-radius: 4px;
+				border: 1px solid rgba(255,61,0,1);
+			}
+			.tag1{
+				color: rgba(255,61,0,1);
+				
+				border: 1px solid rgba(255,61,0,1);
+			}
+			.tag2{
+				color: #00B962;
+				
+				border: 1px solid  #00B962;
+			}
+		}
+	}
+	.main4_panel,.main5_panel{
+		.body{
+			.line{
+				padding: 12rpx 0;
+				    display: flex;
+				    justify-content: space-between;
+				}
+				.p1{
+					    font-weight: 600;
+					color: rgba(51,51,51,1);
+					font-size: 14px;
+				}
+				.p2{
+					width: 300rpx;
+					overflow: hidden;
+					   text-overflow: ellipsis;
+					   white-space: nowrap; 
+				}
+				.line:not(:last-child) {
+				  border-bottom:1px solid rgba(232,232,232,1);
+				}
+		}
+	}
+	.main5_panel{
+		.p1{
+			width: 140rpx;
+			   
+		}
+		.p2{
+			width: 270rpx !important;
+			
+		}
+		.lineT{
+			font-weight: bold;
+		}
+	}
 </style>

+ 29 - 3
pages/station/stationList.vue

@@ -28,7 +28,11 @@
 				<view class="tabsItem" @click="tabsFrom.show3=!tabsFrom.show3">{{tabsFrom.show3Text}} <u-icon name="arrow-up"
 						v-if="tabsFrom.show3"></u-icon><u-icon v-else name="arrow-down"></u-icon></view>
 			</view>
-			
+			<view  class="tabsclass" >
+				<u-tabs :list="tabslist" active-color="#333" inactive-color="#777"
+				
+				 :current="current" @change="change"></u-tabs>
+			</view>
 			<view class="list">
 				<view class="line"   v-for="(item,i) in list" :key="i"
 				 @click="gotoUrl('/pages/station/stationInfo?id='+item.id)" >
@@ -38,8 +42,8 @@
 						</view>
 						<view class="item">
 							<view class="name">
-								<view class="text">{{item.parkingName}}</view>
-								
+								<view class="text"></view>
+								{{item.parkingName}}
 							</view>
 							<view class="value">
 								<span class="span span1">在用8</span> / 
@@ -95,6 +99,17 @@
 					recordsTotal: 1,
 				},
 				title:"场站列表",
+				tabslist:[
+					{
+						name: '待处理',
+						code:"geterrList0"
+						
+					}, {
+						name: '已处理',
+						code:"geterrList1"
+					}
+				],
+				current:0,
 				tabsFrom: {
 					show1: false,
 					show1Index:0,
@@ -135,6 +150,11 @@
 			}
 		},
 		methods: {
+			change(e){
+				this.current=e
+				
+			
+			},
 			testBtn() {
 			
 				this.list = []
@@ -268,6 +288,7 @@
 						 									 font-size: 28rpx;
 															 display: flex;
 															 align-items: center;
+															     font-weight: bold;
 															 .tag{
 																border-radius: 4px;
 																background-color: rgba(22,119,255,1);
@@ -333,6 +354,7 @@
 	}
 	
 	.floating-button {
+		z-index: 999;
 		position: fixed;
 		bottom: 120rpx;
 		width: 100%;
@@ -358,4 +380,8 @@
 			}
 		}
 	}
+	
+	.tabsclass{
+		border-bottom: 1px solid rgba(232,232,232,1);
+	}
 </style>

+ 5 - 2
pages/task/addTask.vue

@@ -253,7 +253,9 @@
 .list{
 		background-color: rgba(255,255,255,1);
 		
-		margin: 20rpx 0;
+		border-radius: 8px;
+		
+		margin: 20rpx ;
 		.item:not(:last-child) {
 		  border-bottom:1px solid rgba(232,232,232,1);
 		}
@@ -302,7 +304,8 @@
 		}
 	}
 	
-	.floating-button {
+	.floating-button {
+		z-index: 999;
 		position: fixed; 
 		  bottom: 0;    /* 距离底部 20px */
 		    width: 100%;

+ 103 - 36
pages/task/listTask.vue

@@ -1,6 +1,17 @@
 <template>
 	<view>
 		<u-navbar title="故障记录" title-color="#101010" :customBack="customBack" ></u-navbar>
+		
+		<view class="top">
+			<view class="search">
+				<view class="searchBox">
+					<u-search shape="square" placeholder="使用停车场名称/地锁编号搜索" maxlength="12" v-model="testName" :show-action="false"
+						:animation="true"></u-search>
+					<u-button type="primary" size="mini" @click="testBtn">搜素</u-button>
+				</view>
+			</view>
+		</view>
+		
 		<view  class="viewTop" >
 			<u-tabs :list="tabslist" 
 			 style="   width: 50%;"
@@ -19,12 +30,7 @@
 			 v-for="(item,index) in list" 
 			 @click="gotoTask(item)"
 			 :key="index">
-				<view class="icon">
-					
-					<image class="img" v-if="item.errorCodeImage" :src="item.errorCodeImage" mode=""></image>
-					
-					<image class="img" v-else src="@/assets/img/taskstatus/status3.png" mode=""></image>
-				</view>
+			
 				<view class="body">
 					<view class="line1">
 						<view class="title">
@@ -39,27 +45,45 @@
 					
 					<view class="line2">
 						<view class="value">
-							{{item.createTime}}
+							设备编号 {{item.parkingName}}
 		
 						</view>
 						<view class="value">
-							{{item.parkingName}} 
+							设备网点 {{item.parkingName}} 
 		
 						</view>
+						<view class="value">
+							创建时间 {{item.createTime}} 
+						</view>
+						
 					</view>
-					<view class="errorDesc" v-if="item.errorDesc">
-						描述:{{item.errorDesc}}
+					
+					<view class="line3">
+						
+						<u-button  type="info"  size="mini">查看</u-button>
+						
+						<u-button  type="primary"  size="mini" >去处理</u-button>
 						
 					</view>
 		
 				</view>
-				<u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
+				
 			</view>
 			
 			
 		</view>
 		<u-divider :isnone="list.length==0" nonetext="没有找到相关内容" border-color="#CFD2D5">已经到底了</u-divider>
 		
+		
+		<view class="floating-button">
+			<view class="button"  @click="submit" >
+				
+				故障上报
+
+			</view>
+			
+		</view>
+		
 	</view>
 </template>
 
@@ -207,13 +231,16 @@
 <style lang="scss" scoped>
 
 		.list {
-			padding: 24rpx 32rpx;
-background-color: rgba(255,255,255,1);
-			.item {
+			padding: 24rpx 24rpx;
+			
+			.item {
+				border-radius: 8px;
+				
 				display: flex;
-				border-bottom: 1px solid rgba(232, 232, 232, 1);
-				padding: 12rpx 0;
-				margin: 12rpx 0;
+				border-bottom: 1px solid rgba(232, 232, 232, 1);
+				background-color: rgba(255,255,255,1);
+				// padding: 12rpx 0;
+				 margin-bottom: 12rpx ;
 
 				.img {
 					width: 72rpx;
@@ -222,21 +249,28 @@ background-color: rgba(255,255,255,1);
 				}
 
 				.body {
-					margin: 0 12rpx;
+					//margin: 0 12rpx;
 					width: 100%;
-
-					.line1,
-					.line2 {
-
-						display: flex;
-						justify-content: space-between;
+					.line1,.line2,.line3{
+						padding: 12px;
+					}
+					.line3{
+						text-align: end;
 					}
 					.line2 {
 						color: rgba(119,119,119,1);
 						font-size: 24rpx;
-						margin-top: 8rpx;
+						//margin-top: 8rpx;
+						border-bottom:1px solid rgba(232,232,232,1);
+						.value:not(:last-child) {
+							margin-bottom: 16rpx;
+						}
 					}
-					.line1 {
+					.line1 {
+						
+						display: flex;
+						justify-content: space-between;
+						 border-bottom:1px solid rgba(232,232,232,1);
 						.title {
 							color: rgba(51, 51, 51, 1);
 							font-size: 28rpx;
@@ -253,7 +287,7 @@ background-color: rgba(255,255,255,1);
 						}
 						
 						.status0 {
-							background-color:  rgba(255, 61, 0, 1);
+							background-color:  #FF7B00;
 							
 						}
 						.status1 {
@@ -277,15 +311,7 @@ background-color: rgba(255,255,255,1);
 						}
 					}
 					
-					.errorDesc{
-						margin: 8rpx 0;
-						 width: 480rpx;
-						     color: #777777;
-						     font-size: 24rpx;
-						 overflow: hidden;
-						    text-overflow: ellipsis;
-						    white-space: nowrap; /* 禁止换行,强制单行 */
-					}
+					
 				}
 			}
 
@@ -315,4 +341,45 @@ background-color: rgba(255,255,255,1);
 					}
 				
 		}
+		
+		.search {
+		
+			padding: 16rpx 32rpx;
+			background: #fff;
+		
+			.searchBox {
+				display: flex;
+				align-items: center;
+				background: #F2F2F2;
+				padding: 1px 16rpx;
+				border-radius: 8px;
+				justify-content: space-between;
+			}
+		}
+		
+		
+		.floating-button {
+			z-index: 999;
+			position: fixed; 
+			  bottom: 0;    /* 距离底部 20px */
+			    width: 100%;
+				 display: flex;
+				  height: 120rpx;
+				    justify-content: center;
+				background-color: rgba(255,255,255,1);
+				.button{
+					margin-top: 24rpx;
+					border-radius: 50px;
+				 height: 80rpx;
+					width: 80%;
+					display: flex;
+					    align-items: center;
+					    justify-content: center;
+						padding:12rpx;
+						
+						background-color: rgba(22,119,255,1);
+						color: rgba(255,255,255,1);
+						font-size: 36rpx;
+				}
+		}
 </style>

+ 122 - 22
pages/task/maintenanceTaks.vue

@@ -111,8 +111,34 @@
 				</view>
 				
 			</view>
-			<view class="list" >
-				<view class="item"  >
+			<view class="list" >
+				<view class="item item-plus"  >
+					<view class="name">
+						处理人员
+				
+					</view>
+					<view class="value" v-if="floorlockErrorRecord.status!=0">
+						{{floorlockErrorRecord.updateTime}}
+						
+					</view>
+					<view class="value  " 
+				
+					v-else>
+					
+					<u-checkbox-group >
+								<u-checkbox 
+								
+									v-model="item.checked" 
+									v-for="(item, index) in listcheckbox" :key="index" 
+									:name="item.name"
+								>{{item.name}}</u-checkbox>
+							</u-checkbox-group>
+					
+						
+					</view>
+				</view>
+				
+				<view class="item item-plus" style="    align-items: center;"  >
 					<view class="name">
 						处理时间
 				
@@ -121,11 +147,44 @@
 						{{floorlockErrorRecord.updateTime}}
 						
 					</view>
-					<view class="value valueplus" 
+					<view class="value  " 
 					@click="completionTimeShow=true"
 					v-else>
-						{{taskInfo.completionTime}}
-						<u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
+					<view class="valueclock">
+						<u-icon name="clock" size="32" color="#BBBBBB"></u-icon>
+						
+							{{taskInfo.completionTime}}
+					</view>
+					
+						
+					</view>
+				</view>
+				
+				
+				<view class="item item-plus"  >
+					<view class="name">
+						维修方式
+				
+					</view>
+					<view class="value" v-if="floorlockErrorRecord.status!=0">
+						{{floorlockErrorRecord.updateTime}}
+						
+					</view>
+					<view class="value  " 
+				
+					v-else>
+					
+					<u-radio-group v-model="value" @change="radioGroupChange">
+								<u-radio 
+								 
+									v-for="(item, index) in listradio" :key="index" 
+									:name="item.name"
+									 
+								>
+									{{item.name}}
+								</u-radio>
+							</u-radio-group>
+					
 						
 					</view>
 				</view>
@@ -135,14 +194,16 @@
 					<view class="name">
 						处理结果				
 					</view>
-					<view class="value"  v-if="floorlockErrorRecord.status==0" >
+					<view class="value"   v-if="floorlockErrorRecord.status==0" >
 						<textarea placeholder="请记录处理步骤及结果" 
 						placeholder-class="textareaclass"
+						style="    height: 100px;"
 						v-model="taskInfo.desc"
 						class="textarea"></textarea>
 					</view>
-					<view class="value"  v-else >
-						<textarea placeholder="" 
+					<view class="value"    v-else >
+						<textarea  style="    height: 100px;"
+						 placeholder="" 
 						placeholder-class="textareaclass"
 						v-model="floorlockErrorRecord.repairDesc"
 						class="textarea"></textarea>
@@ -169,16 +230,7 @@
 						 
 					</view>
 				</view>
-				<view class="item"  v-if="floorlockErrorRecord.status!=0">
-					<view class="name">
-						处理人
-				
-					</view>
-					<view class="value">
-						{{floorlockErrorRecord.updateByName}}
-						
-					</view>
-				</view>
+			
 			</view>
 			
 			
@@ -205,6 +257,37 @@
 	export default {
 		data() {
 			return {
+				listradio:[
+					{
+										name: '重启',
+										disabled: false
+									},
+									{
+										name: '更换设备',
+										disabled: false
+									},
+									{
+										name: '其他',
+										disabled: false
+									}
+				],
+				listcheckbox:[
+					{
+										name: 'apple',
+										checked: false,
+										disabled: false
+									},
+									{
+										name: 'banner',
+										checked: false,
+										disabled: false
+									},
+									{
+										name: 'orange',
+										checked: false,
+										disabled: false
+									}
+				],
 				listPic: [],
 				action:"",
 				formData:{
@@ -267,6 +350,10 @@
 			})
 		},
 		methods:{
+			// 选中任一radio时,由radio-group触发
+			radioGroupChange(e) {
+				console.log(e);
+			},
 			completionTimeConfirm(e){
 				console.log(e)
 				
@@ -427,13 +514,14 @@
 	.jpmain{padding-bottom: 120rpx;}
 .list{
 		background-color: rgba(255,255,255,1);
-		
-		margin: 20rpx 0;
+		border-radius: 8px;
+
+		margin: 20rpx ;
 		.item:not(:last-child) {
 		  border-bottom:1px solid rgba(232,232,232,1);
 		}
 		.item{
-			padding: 24rpx;
+			padding: 20rpx 24rpx;
 			display: flex;
 			    justify-content: space-between;
 			.name{
@@ -448,6 +536,15 @@
 			.valueplus{
 				display: flex;
 				justify-content: space-between;
+				 
+			}
+			.valueclock{
+				width: 100%;
+				border-radius: 4px;
+				   padding: 0 8px;
+				   height: 64rpx;
+				line-height: 64rpx;
+				background-color: rgba(241,242,245,1);
 			}
 			.value{
 				font-size: 32rpx;
@@ -496,11 +593,13 @@
 				    padding-bottom: 32rpx;
 			}
 		}
+		
 	}
 	.textareaclass{
 		padding:16rpx
 	}
-	.floating-button {
+	.floating-button {
+		z-index: 999;
 		position: fixed; 
 		  bottom: 0;    /* 距离底部 20px */
 		    width: 100%;
@@ -527,4 +626,5 @@
 		width: 160rpx;
 		height: 160rpx;
 	}
+	
 </style>

+ 2 - 1
pages/team/teamAdd.vue

@@ -178,7 +178,8 @@
 		}
 	}
 
-	.floating-button {
+	.floating-button {
+		z-index: 999;
 		position: fixed;
 		bottom: 0;
 		/* 距离底部 20px */

+ 1 - 0
pages/team/teamList.vue

@@ -273,6 +273,7 @@ background-color: rgba(255,255,255,1);
 		
 		
 		.floating-button {
+			z-index: 999;
 			position: fixed; 
 			  bottom: 0;    /* 距离底部 20px */
 			    width: 100%;