浏览代码

app企业端问题处理

sunkuosheng 2 年之前
父节点
当前提交
f4006466b6

+ 3 - 2
api/company/my.js

@@ -10,7 +10,8 @@ export function versionList() {
 // 修改密码接口
 export function editPassword(data) {
  return request({
-  'url': `/system/user/profile/updatePwd?oldPassword=${data.oldPassword}&newPassword=${data.newPassword}`,
-  'method': 'put',
+  'url': `/system/user/profile/updatePwd?oldPassword=${encodeURIComponent(data.oldPassword)}&newPassword=${encodeURIComponent(data.newPassword)}`,
+  'method': 'put'
+  // 'data': data
  })
 }

+ 7 - 1
components/mapImg/mapImg.vue

@@ -3,6 +3,7 @@
 </template>
 
 <script>
+		import config from '@/config'
 	export default {
 		props:{
 			startPoint:{
@@ -39,6 +40,11 @@
 			    return coord.lat+','+coord.lng
 			},
 			getImg() {
+				let key = config.key;
+				if(this.mtRoutePointList.length===0)
+				{
+					return  'https://restapi.amap.com/v3/staticmap?location=126.04684,42.68497&zoom=6&key=' + key
+				}
 				let starUrl = 'http://139.215.216.44:9010//fileupload/2022/09/27/star_20220927151629A097.png';
 				let endUrl = 'http://139.215.216.44:9010//fileupload/2022/09/27/end_20220927151745A098.png';
 				let starMarkers = this.mercatorToWGS84(this.startPoint);
@@ -49,7 +55,7 @@
 				let fillcolor = '0x87CEFA'
 				let fillTransparency = '0.4'
 				let path =this.mtRoutePointList.map(item=>this.mercatorToWGS84(item.pointCoordinate)).join(';')
-				let key = '401c5604ca1d2597b9906a1a30f29c44'
+				
 				return 'https://restapi.amap.com/v3/staticmap?markers=-1,' + starUrl +
 					',0:' + starMarkers + '|-1,' + endUrl +
 					',0:' + endMarkers + '&paths=' + weight + ',' + color + ',' + transparency + ',' + fillcolor + ',' +

+ 5 - 1
components/tooltipNew/tooltipNew.vue

@@ -7,6 +7,7 @@
 						<text v-if="type==='type3'">注册已驳回</text>
 						<text v-else-if="type==='type4'">账号提示</text>
 						<text v-else-if="type==='type5'" style="color: #FC5536;">{{phone}}</text>
+						<text v-else-if="type==='loginOut'">系统提示</text>
 						<text v-else>账号正在审核</text>
 					</view>
 				</view>
@@ -38,13 +39,16 @@
 						<text>需要城管部门给予重置密码设置</text>
 						<text>并将密码反馈企业后重新登录移动端</text>
 					</view>
+					<view class="textBox" v-else-if="type==='loginOut'">
+						<text>确定注销并退出系统吗?</text>
+					</view>
 					<view class="textBox" v-else>
 						<text>待城管部门审核完毕</text>
 						<text>即可正常使用企业功能</text>
 					</view>
 					<u-button class="dialog-button" @click="close" color="linear-gradient(to top, #F59A02, #FFD334 )"
 						shape="circle" type="warning" text="">
-						{{type==='type5'?'确 定 呼 叫':'我 知 道 了'}}
+						{{type==='type5'?'确 定 呼 叫':type==='loginOut'?'确 定 退 出':'我 知 道 了'}}
 					</u-button>
 				</view>
 			<view class="update-close" @tap="close(true)">

+ 2 - 0
config.js

@@ -6,6 +6,8 @@ module.exports = {
   // #ifndef H5
   baseUrl: 'http://139.215.216.44:9008/prod-api',
   // #endif
+  // 高德地图web服务端key
+  key:'8b9570bc54e1d3af91fb51d75af566e3',
   // 应用信息
   appInfo: {
     // 应用名称

+ 30 - 0
pages.json

@@ -89,6 +89,12 @@
 				"navigationStyle": "custom" // 隐藏系统导航栏
 			}
 		},
+		{
+			"path": "pages/carInfoHome/index",
+			"style": {
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
+		},
 		{
 			"path": "pages/user/index",
 			"style": {
@@ -203,6 +209,30 @@
 				"navigationStyle": "custom" // 隐藏系统导航栏
 				// "navigationBarTextStyle": "white" // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一
 			}
+		},
+		// 司机端
+		{
+			"path": "pages/driverHome/index",
+			"style": {
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
+		},
+		{
+			"path": "pages/driverStartTransport/index",
+			"style": {
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
+		},
+		{
+			"path": "pages/driverFinishTransport/index",
+			"style": {
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
+		},{
+			"path": "pages/driverLookTransport/index",
+			"style": {
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
 		}
 		
 	],

+ 3 - 3
pages/addTransport/index.vue

@@ -92,7 +92,7 @@
 							<view class="start-green">
 							</view>
-							<text class="green" style="width: 70%;">{{item.startName}}</text>
+							<text class="green" style="width: 80%;">{{item.startName}}</text>
 						</view>
 						<view class="small-box-middle-line ">
 							<view class="small-box-middle-line-left">
@@ -106,7 +106,7 @@
 							<view class="start-green bgRed">
 							</view>
-							<text class="red" style="width: 70%;">{{item.endName}}</text>
+							<text class="red" style="width: 80%;">{{item.endName}}</text>
 						</view>
 					</view>
 				</view>
@@ -653,7 +653,7 @@
 		height: 70rpx;
 		margin-right: 15rpx;
 		position: absolute;
-		right: 34rpx;
+		right: 0;
 	}
 
 	.active {

+ 429 - 0
pages/carInfoHome/index.vue

@@ -0,0 +1,429 @@
+<template>
+	<view class="container">
+		<uni-navbar title="车辆信息"></uni-navbar>
+		<reaee-video-cover-extractor :path="tempFilePath" @success='success' @error='error' />
+		<view class="box">
+			<view class="reject-box commonBj commonMt commonMb infoHeightBig">
+				<view class="reject-box-top">
+					<view class="top-left">
+						<image src="../../static/images/car/yunshu.png" mode="widthFix"></image>
+						<text class="listTitle">车辆信息</text>
+					</view>
+					<view class="top-right">
+						<image
+							:src="carInfo.deleteFlag===0?'../../static/images/car/binding.png':'../../static/images/car/binding2.png'"
+							mode="widthFix"></image>
+						<text :class="carInfo.deleteFlag===0?'stateText':'nostateText'"
+							class="state-text">{{carInfo.deleteFlag===0?'已绑定':'未绑定'}}</text>
+					</view>
+				</view>
+				<view class="reject-box-bottom infoHeight">
+					<view class="state-icon">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">企业名称:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<text class="infoText">{{carInfo.companyName}}</text>
+						</view>
+					</view>
+					<!-- <view class="border-style"></view> -->
+					<view class="state-icon">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">车牌号码:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<text class="infoText">{{carInfo.carNumber}}</text>
+						</view>
+					</view>
+					<!-- <view class="border-style"></view> -->
+					<view class="state-icon">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">车&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;型:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<text class="infoText">{{carInfo.carType}}</text>
+						</view>
+					</view>
+					<!-- <view class="border-style"></view> -->
+					<view class="state-icon">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">车&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;系:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<text class="infoText">{{carInfo.carSeries}}</text>
+						</view>
+					</view>
+					<!-- <view class="border-style"></view> -->
+					<view class="state-icon">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">载重标准:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<text class="infoText">{{carInfo.carCarry}}</text>
+						</view>
+					</view>
+					<!-- <view class="border-style"></view> -->
+					<view class="state-icon block">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">车辆行驶证件</text>
+						</view>
+						<view class="uploadBox flexAlignCenter block  mt30 ">
+							<!-- <xfx-image-upload class="radius15" :remove="false" :add=false :chooseNum="1"
+								v-model="drivingLicense" mediaType="image"></xfx-image-upload> -->
+							<u--image radius="15rpx" :showLoading="true" :src="drivingLicense" width="599rpx"
+							    v-if="drivingLicense"
+								height="270rpx" @tap="previewImg(drivingLicense)">
+							</u--image>
+							<text v-else class="infoText">暂无</text>
+						</view>
+					</view>
+					<view class="state-icon mb0 block">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">车辆状态</text>
+						</view>
+						<view class="mt30 zhanwei">
+							<view v-if="imgList.length>0" class="imgBox">
+							<u--image class="border radius15" radius="15rpx" :key="index"
+								v-for="(item,index) in imgList" :showLoading="true" :src="item.url" width="240rpx"
+								height="240rpx" @tap="previewImg(item.url)">
+							</u--image>
+							</view>
+							<view class="state-box-size border radius15 " v-if="vedioList.length>0">
+								<xfx-image-upload class="state-box-size radius15" :max="1" :remove="false" :add="false"
+									v-model="vedioList" mediaType="video"></xfx-image-upload>
+							</view>
+							<text  v-if="vedioList.length===0&&imgList.length===0" class="infoText">暂无</text>
+						</view>
+					</view>
+				</view>
+			</view>
+			
+			<!-- 审批状态 -->
+			<view class="reject-box mt28 commonMb commonGreenBj" v-if="isHomeInfo">
+				<view class="reject-box-top just-content-start bg-color-green">
+					<image src="../../static/images/car/yunshu.png" mode="widthFix"></image>
+					<text class="listTitle">审批状态</text>
+				</view>
+				<view class="reject-box-bottom pb0">
+					<view class="state-icon">
+						<view class="flexAlignCenter">
+							<view class="greenCircle">
+							</view>
+							<text class="itemText">审批状态:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<u-icon color="#017D3E" style="margin-right: 12rpx;" name="checkmark-circle-fill"></u-icon>
+							<text class="greenText">通过</text>
+						</view>
+					</view>
+					<!-- <view :class="isPass?'border-style mb':'border-style2'"></view> -->
+					<!-- <view class="state-icon" v-if="carInfo.deleteFlag === 1">
+						<view class="flexAlignCenter">
+							<view class="redCircle">
+							</view>
+							<text class="itemText">驳回原因:</text>
+						</view>
+						<view class="flexAlignCenter">
+							<text class="redText">{{}}</text>
+						</view>
+					</view> -->
+					<!-- <view v-if="!isPass" class="border-style2 mb"></view> -->
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		carDetail,
+	} from "@/api/company/car.js"
+	export default {
+		data() {
+			return {
+				// 详情数据列表
+				carInfo: {},
+				// 行驶证列表
+				drivingLicense: '',
+				// 视频列表
+				vedioList: [],
+				// 车辆状态图片列表
+				imgList: [],
+				// 接收的id
+				id: null,
+				tempFilePath: '',
+				srcVideo: '',
+				isHomeInfo:true
+			}
+		},
+		methods: {
+			select() {
+				this.tempFilePath = this.srcVideo;
+			},
+			success(o) {
+				console.log('成功了', o);
+				this.vedioList = [{
+					cover: o,
+					url: this.srcVideo
+				}]
+			},
+
+			// 视频封面提取失败
+			error(e) {
+				console.log('error', e);
+			},
+			previewImg(urls) {
+				uni.previewImage({
+					urls: [urls],
+					current: urls
+				})
+			},
+			// previewImg(current) {
+			// 	const urls = this.list.map(item => {
+			// 		return item
+			// 	})
+			// 	uni.previewImage({
+			// 		current,
+			// 		urls
+			// 	})
+			// },
+			// 获取详情
+			getDetail() {
+				// console.log(this.id, '详情');
+				carDetail(this.id).then((result) => {
+					console.log(result, '详情');
+					this.carInfo = result.data
+					this.drivingLicense = result.data.drivingLicense[0].url;
+					// this.tempFilePath =result.data.carVideo[0].url;
+					this.srcVideo = result.data.carVideo[0].url;
+					// this.changVideo(result.data.carVideo[0].url);
+					// let videourl='https://vd3.bdstatic.com/mda-ke6p5rankhca6xbv/v1-cae/hd/mda-ke6p5rankhca6xbv.mp4'
+					// this.vedioList.push(result.data.carVideo[0].url)
+					// this.vedioList.push(videourl)
+					// let data=this.getVideoBase64(result.data.carVideo[0].url)
+					// console.log(data,'data');
+					this.imgList = result.data.imgList;
+					this.select();
+					// result.data.imgList.forEach(item => {
+					// 	this.imgList.push(item.url)
+					// })
+				}).catch(err => {
+					console.log('请求失败rr');
+				})
+			},
+		},
+		onLoad: function(option) {
+			// 是否是首页点进去的详情页面
+			if (option.isHomeInfo) {
+				this.isHomeInfo = false
+			}else{
+				this.isHomeInfo = true
+			}
+			if (option.id) {
+				this.companyName = this.$store.state.user.companyName
+				// console.log('接收过来的id', option.id);
+				this.id = option.id
+				// console.log(this.id); 
+				this.getDetail()
+				// this.getUserCompanyInfo()
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	// 上传组件样式
+	.uploadBox {
+
+		// width: 599rpx;
+		// height: 250rpx;
+		// /deep/ .u-image__loading{
+		// 	width: 100%;
+		// 	height: 250rpx;
+		// }
+		/deep/ .u-image {
+			border: 1rpx solid #495B93;
+		}
+	}
+
+	/deep/.xfx-image-upload-Item {
+		uni-image {
+			width: 240rpx;
+			height:240rpx;
+		}
+
+		.xfx-image-upload-Item-video-fixed {
+			width: 240rpx;
+			height:240rpx;
+		}
+	}
+
+	.zhanwei {
+		display: flex;
+		flex-direction: column;
+	}
+
+	// .zhanwei uni-view:not(:first-child) {
+	// 	width: 180rpx !important;
+	// }
+
+	// .zhanwei uni-view:not(:last-child) {
+	// 	margin-right: 29rpx;
+	// }
+
+	.reject-box {
+
+		.reject-box-top {
+			width: 100%;
+			height: 69rpx;
+			background: #7FB5FF;
+			border-radius: 26rpx 26rpx 0px 0px;
+			display: flex;
+			justify-content: space-between;
+
+			.top-right {
+				display: flex;
+				justify-content: start;
+				align-items: center;
+				margin-right: 36rpx;
+
+				uni-image {
+					width: 28rpx;
+					margin-left: 32rpx;
+					vertical-align: middle;
+				}
+
+				.state-text {
+
+					margin-left: 13rpx;
+					line-height: 69rpx;
+				}
+			}
+
+			uni-image {
+				width: 50rpx;
+				margin-left: 32rpx;
+				vertical-align: middle;
+			}
+		}
+
+		.reject-box-bottom {
+			padding: 40rpx;
+
+			.state-icon {
+				display: flex;
+				margin: 40rpx 0;
+			}
+
+			.state-icon:nth-child(1) {
+				margin: 0 0 40rpx;
+			}
+
+			.border-style {
+				border-top: 1rpx dashed #F98803;
+				width: 90%;
+				margin: 0 auto;
+			}
+
+			.border-style2 {
+				border-top: 1rpx dashed #FB5637;
+				width: 90%;
+				margin: 0 auto;
+			}
+		}
+	}
+
+	.reject-box-bottom:nth-child(2) {
+		padding: 40rpx 40rx 20rpx !important;
+	}
+
+	.block {
+		display: block !important;
+	}
+
+	.border {
+		border: 1rpx solid #495B93;
+	}
+
+	.box-size {
+		width: 598rpx;
+		height: 198rpx;
+	}
+
+	.mt30 {
+		margin-top: 30rpx;
+	}
+
+	.radius15 {
+		border-radius: 15rpx;
+	}
+
+	.state-box-size {
+		width: 240rpx;
+		height: 240rpx;
+	}
+
+	.state-box-size-video {
+		width: 235rpx !important;
+		height: 235rpx !important;
+	}
+
+	.space-between {
+		justify-content: space-between;
+	}
+
+	.just-content-start {
+		justify-content: flex-start !important;
+		align-items: center;
+	}
+
+	.bg-color-green {
+		background: #36C372 !important;
+	}
+
+	.bg-color-red {
+		background: #FB5637 !important;
+	}
+
+	.fontTongGuo {
+		font-size: 28rpx !important;
+		font-weight: bold !important;
+		color: #007C3C !important;
+	}
+
+	.mb {
+		margin-bottom: 53rpx !important;
+	}
+
+	.pb0 {
+		padding-bottom: 0 !important;
+	}
+
+	.mt28 {
+		margin-top: 28rpx;
+	}
+
+	.mb0 {
+		margin-bottom: 0rpx !important;
+	}
+	
+	.imgBox{
+		    display: flex;
+		    justify-content: space-between;
+			margin-bottom: 28rpx;
+	}
+</style>

+ 12 - 10
pages/dotPath/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="container">
 		<uni-navbar title="新增路线"></uni-navbar>
-		<view class="box">
+		<view class="box commonMt">
 			<view class="map">
 				<mapNew height="713rpx" @isChange='isChange=false' @clearMarkers='clearMarkers' @getAddres='getAddres'
 					:starAddres="starAddres" :getLocation="getLocation" :isShow='false' :isStar="isStar" :isEnd="isEnd">
@@ -9,7 +9,7 @@
 				<!-- <map id="map" ref="map" style="height: 713rpx;width: 100%;" @tap="tapMap">
 				</map> -->
 			</view>
-			<view class="reject-box commonBj commonMt">
+			<view class="reject-box commonBj ">
 				<view class="reject-box-top">
 					<view class="top-left">
 						<image src="../../static/images/path/location.png" mode="widthFix"></image>
@@ -41,6 +41,7 @@
 </template>
 
 <script>
+	import config from '@/config'
 	export default {
 		data() {
 			return {
@@ -90,7 +91,7 @@
 				this.activeIndex = null;
 				console.log(addres, 'addres');
 				//高德地图web服务端key
-				let key = '401c5604ca1d2597b9906a1a30f29c44';
+				let key = config.key;
 				//搜索范围半径
 				let radius = 200;
 				// 查询POI类型
@@ -145,15 +146,15 @@
 			submit() {
 				// console.log(this.starAddresData,'starAddresData');
 				// console.log(this.endAddresData,'endAddresData');
-				let address={
-					starAddres:this.starAddresData,
-					endAddres:this.endAddresData,
-				}
+				// let address={
+				// 	starAddres:this.starAddresData,
+				// 	endAddres:this.endAddresData,
+				// }
 				// location
 				// address
 				this.$tab.navigateTo('/pages/addPath/index?startName='
-				+this.starAddresData.name+
-				'&endName='+this.endAddresData.name+
+				+this.starAddresData.address+
+				'&endName='+this.endAddresData.address+
 				'&startPoint='+this.WGS84ToMercator(this.starAddresData.location)+
 				'&endPoint='+this.WGS84ToMercator(this.endAddresData.location)+
 				'&id='+this.id
@@ -194,7 +195,7 @@
 				} else {
 					this.isStar = true;
 					this.starAddresData=this.addresData[this.activeIndex];
-					console.log('开始地址存在')
+					console.log('开始地址存在',this.starAddresData)
 				}
 				this.isChange = true;
 				// this.starAddresData=this.addresData[this.activeIndex];
@@ -222,6 +223,7 @@
 <style lang="scss" scoped>
 	.reject-box {
 		margin-bottom: 28rpx;
+		margin-top: 28rpx;
 
 		.reject-box-top {
 			width: 100%;

+ 8 - 0
pages/driverFinishTransport/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

文件差异内容过多而无法显示
+ 1089 - 0
pages/driverHome/index.vue


+ 8 - 0
pages/driverLookTransport/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 8 - 0
pages/driverStartTransport/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 6 - 4
pages/editPassword/index.vue

@@ -62,8 +62,9 @@
 						validator: (rule, value, callback) => {
 							// let validationStr = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]+$/;
 							// 大小写字母+特殊字符组合+八位
-							let validationStr = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!#@*&.])[a-zA-Z!#@*&.]{8,8}.*$/;
-							console.log(validationStr.test(value), 'validationStr.test(value)');
+							// let validationStr = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!#@*&.])[a-zA-Z!#@*&.]{8,8}.*$/;
+							let validationStr = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]])[A-Za-z\d`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]]{8,}$/;
+							// console.log(validationStr.test(value), 'validationStr.test(value)');
 							if (!validationStr.test(value) || value.length !== 8) {
 								return false;
 							} else {
@@ -79,8 +80,9 @@
 						validator: (rule, value, callback) => {
 							// let validationStr = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]+$/;
 							// 大小写字母+特殊字符组合+八位
-							let validationStr = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!#@*&.])[a-zA-Z!#@*&.]{8,8}.*$/;
-							console.log(validationStr.test(value), 'validationStr.test(value)');
+							// let validationStr = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!#@*&.])[a-zA-Z!#@*&.]{8,8}.*$/;
+							let validationStr = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]])[A-Za-z\d`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]]{8,}$/;
+							// console.log(validationStr.test(value), 'validationStr.test(value)');
 							if (!validationStr.test(value) || value.length !== 8) {
 								return false;
 							} else {

+ 56 - 7
pages/home/index.vue

@@ -134,11 +134,20 @@
 									mode="widthFix"></image>
 								<text>车&nbsp;&nbsp;&nbsp;&nbsp;型:{{item.carType}}</text>
 							</view>
+							<view class="flexRow">
 							<view class="carinfo-bottom mt27 listText">
 								<image style="width: 22rpx;height: 22rpx;" src="../../static/images/car/lb_02.png"
 									mode="widthFix"></image>
 								<text>车&nbsp;&nbsp;&nbsp;&nbsp;系:{{item.carSeries}}</text>
 							</view>
+							<view class="top-right">
+								<image
+									:src="item.deleteFlag===0?'../../static/images/car/binding.png':'../../static/images/car/binding2.png'"
+									mode="widthFix"></image>
+								<text :class="item.deleteFlag===0?'stateText':'nostateText'"
+									class="state-text">{{item.deleteFlag===0?'已绑定':'未绑定'}}</text>
+							</view>
+							</view>
 						</view>
 					</view>
 
@@ -160,6 +169,7 @@
 										mode="widthFix"></image>
 									<text>车牌号:{{item.carNumber ?item.carNumber :'未绑定车辆'}}</text>
 								</view>
+								
 								<view class="carinfo-bottom listText">
 									<image style="width: 22rpx;height: 22rpx;" src="../../static/images/user/phone.png"
 										mode="widthFix"></image>
@@ -248,8 +258,9 @@
 						当前版本{{bnList.version}},已经是最新版本了
 					</view>
 				</view>
-				<view class="update-button"  v-if="bnList.url">
+				<view class="update-button">
 					<u-button shape="circle" color="linear-gradient(to top, #F59A02, #FFD334 )"
+					:disabled="bnList.url?false:true"
 					@tap="getKpi(bnList.url)"
 						class="add-button width220 boderRadius buttonLang width220">马上更新</u-button>
 					<u-button @tap="isUpdateShow = false"
@@ -260,6 +271,7 @@
 				</view>
 			</view>
 		</u-popup>
+		<tooltipNew :show="show" type='loginOut' @close='close'></tooltipNew>
 	</view>
 </template>
 
@@ -339,6 +351,7 @@
 				},
 				companyName:this.$store.state.user.companyName,
 				userName:this.$store.state.user.userName,
+				show:false,
 				
 			}
 		},
@@ -348,11 +361,20 @@
 		},
 		methods: {
 			handleLogout() {
-			  this.$modal.confirm('确定注销并退出系统吗?').then(() => {
-			    this.$store.dispatch('LogOut').then(() => {
-			      this.$tab.reLaunch('/pages/login/index')
-			    })
-			  })
+				this.show=true;
+			  // this.$modal.confirm('确定注销并退出系统吗?').then(() => {
+			  //   this.$store.dispatch('LogOut').then(() => {
+			  //     this.$tab.reLaunch('/pages/login/index')
+			  //   })
+			  // })
+			},
+			close(is) {
+				this.show = false;
+				if (!is) {
+					  this.$store.dispatch('LogOut').then(() => {
+					    this.$tab.reLaunch('/pages/login/index')
+				   })
+				}
 			},
 			changeTabbarName(name){
 				this.tabbarName = name
@@ -436,7 +458,9 @@
 				this.$tab.navigateTo(path)
 			},
 			gotoCarInfo(id) {
-				this.$tab.navigateTo(`/pages/carInfo/index?id=${id}&isHomeInfo=true`)
+				// this.$tab.navigateTo(`/pages/carInfo/index?id=${id}&isHomeInfo=true`)
+				this.$tab.navigateTo(`/pages/carInfoHome/index?id=${id}&isHomeInfo=true`)
+				
 			},
 			gotoPersonInfo(id) {
 				this.$tab.navigateTo(`/pages/userInfo/index?id=${id}&isHomeInfo=true`)
@@ -1090,4 +1114,29 @@
 		overflow-y: auto;
 		height: calc(100vh - 44px - 22px - 70px - 22rpx - 140rpx - 19rpx - 27rpx - 40rpx - 180rpx - 20rpx - 52rpx - 26rpx - 50rpx);
 	}
+	
+	.flexRow{
+		display: flex;
+		    justify-content: space-between;
+	}
+	
+	.top-right {
+		display: flex;
+		justify-content: start;
+		align-items: center;
+		// margin-right: 36rpx;
+	
+		uni-image {
+			width: 28rpx;
+			margin-left: 32rpx;
+			vertical-align: middle;
+		}
+	
+		.state-text {
+	
+			margin-left: 13rpx;
+			line-height: 69rpx;
+		}
+	}
+	
 </style>

文件差异内容过多而无法显示
+ 20 - 3
pages/login/index.vue


+ 3 - 1
pages/register/index.vue

@@ -96,7 +96,9 @@
 						validator: (rule, value, callback) => {
 							// let validationStr = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]+$/;
 							// 大小写字母+特殊字符组合+八位
-							let validationStr = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!#@*&.])[a-zA-Z!#@*&.]{8,8}.*$/;
+							// let validationStr = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!#@*&.])[a-zA-Z!#@*&.]{8,8}.*$/;
+							//数字+字母+特殊字符组合
+							let validationStr = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]])[A-Za-z\d`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]]{8,}$/;
 							console.log(validationStr.test(value), 'validationStr.test(value)');
 							if (!validationStr.test(value) || value.length !== 8) {
 								return false;

二进制
static/images/driverHome/catHead.png


二进制
static/images/driverHome/sj_01.png


二进制
static/images/driverHome/sj_02.png


二进制
static/images/driverHome/sj_03.png


二进制
static/images/driverHome/sj_04.png


二进制
static/images/driverHome/sj_05.png


二进制
static/images/driverHome/sj_06.png


+ 8 - 0
static/images/index.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 7 - 0
store/modules/user.js

@@ -37,9 +37,15 @@ const user = {
 		roles: storage.get(constant.roles),
 		//权限名 
 		rolesName:storage.get(constant.rolesName),
+		//司机姓名
+		nickName:storage.get(constant.nickName),
 	},
 
 	mutations: {
+		SET_NICKNAME: (state, nickName) => {
+			state.nickName = nickName
+			storage.set(constant.nickName, nickName)
+		},
 		SET_ROLESNAME: (state, rolesName) => {
 			state.rolesName = rolesName
 			storage.set(constant.rolesName, rolesName)
@@ -132,6 +138,7 @@ const user = {
 					commit('SET_COMPANYNAME', res.data.companyName)
 					commit('SET_COMPANYABBREVIATION', res.data.companyAbbreviation)
 					commit('SET_USERNAME', res.data.userName)
+					commit('SET_NICKNAME', res.data.nickName)
 					resolve(res)
 				}).catch(error => {
 					reject(error)

+ 1 - 0
utils/constant.js

@@ -9,6 +9,7 @@ const constant = {
 	userName: 'vuex_userName',
 	roles: 'vuex_roles',
 	rolesName: 'vuex_rolesName',
+	nickName:'vuex_nickName'
 }
 
 export default constant