zhongtianhaoyuan 3 سال پیش
والد
کامیت
9e133714e1
100فایلهای تغییر یافته به همراه9576 افزوده شده و 304 حذف شده
  1. 9 1
      pages.json
  2. 74 64
      pages/mine/cargoowner/editpersonalinformation.vue
  3. 7 7
      pages/mine/company/addcompany.vue
  4. 60 47
      pages/mine/index.vue
  5. 11 2
      pages/mine/myAccount/bill.vue
  6. 412 86
      pages/order/confirmLoading.vue
  7. 15 13
      pages/order/orderDetails.vue
  8. 10 4
      pages/order/signContract.vue
  9. 10 71
      pages/public/code.vue
  10. 1 1
      pages/release/addAddress.vue
  11. 6 6
      pages/release/release.vue
  12. 6 2
      store/index.js
  13. 0 0
      unpackage/dist/dev/.automator/app-plus/.automator.json
  14. 0 0
      unpackage/dist/dev/app-plus/__uniappchooselocation.js
  15. BIN
      unpackage/dist/dev/app-plus/__uniapperror.png
  16. 0 0
      unpackage/dist/dev/app-plus/__uniappes6.js
  17. 0 0
      unpackage/dist/dev/app-plus/__uniappopenlocation.js
  18. 0 0
      unpackage/dist/dev/app-plus/__uniapppicker.js
  19. 6 0
      unpackage/dist/dev/app-plus/__uniappquill.js
  20. 0 0
      unpackage/dist/dev/app-plus/__uniappquillimageresize.js
  21. 0 0
      unpackage/dist/dev/app-plus/__uniappscan.js
  22. BIN
      unpackage/dist/dev/app-plus/__uniappsuccess.png
  23. 25 0
      unpackage/dist/dev/app-plus/__uniappview.html
  24. 3 0
      unpackage/dist/dev/app-plus/app-config-service.js
  25. 154 0
      unpackage/dist/dev/app-plus/app-config.js
  26. 9 0
      unpackage/dist/dev/app-plus/app-service.js
  27. 1432 0
      unpackage/dist/dev/app-plus/app-view.js
  28. BIN
      unpackage/dist/dev/app-plus/components/bert-suggest/icons/contact.png
  29. BIN
      unpackage/dist/dev/app-plus/components/bert-suggest/icons/image.png
  30. BIN
      unpackage/dist/dev/app-plus/components/bert-suggest/icons/suggestion.png
  31. 1 0
      unpackage/dist/dev/app-plus/hybrid/html/axios.min.js
  32. 147 0
      unpackage/dist/dev/app-plus/hybrid/html/base64.js
  33. 273 0
      unpackage/dist/dev/app-plus/hybrid/html/crypto.js
  34. BIN
      unpackage/dist/dev/app-plus/hybrid/html/img/1.png
  35. BIN
      unpackage/dist/dev/app-plus/hybrid/html/img/shipinrenzheng.png
  36. 0 0
      unpackage/dist/dev/app-plus/hybrid/html/index.js
  37. 182 0
      unpackage/dist/dev/app-plus/hybrid/html/map.html
  38. 37 0
      unpackage/dist/dev/app-plus/hybrid/html/play.html
  39. 428 0
      unpackage/dist/dev/app-plus/hybrid/html/video.html
  40. 0 0
      unpackage/dist/dev/app-plus/hybrid/html/video.js
  41. 5 0
      unpackage/dist/dev/app-plus/hybrid/html/vue.min.js
  42. 0 0
      unpackage/dist/dev/app-plus/manifest.json
  43. 1972 0
      unpackage/dist/dev/app-plus/pages/mine/camera/idcard/idcard.js
  44. 1972 0
      unpackage/dist/dev/app-plus/pages/mine/camera/video/video.js
  45. 1972 0
      unpackage/dist/dev/app-plus/pages/mine/company/companyvideo.js
  46. 96 0
      unpackage/dist/dev/app-plus/pages/order/map.js
  47. BIN
      unpackage/dist/dev/app-plus/static/ITkoala-amap/amap.png
  48. BIN
      unpackage/dist/dev/app-plus/static/ITkoala-amap/close.png
  49. BIN
      unpackage/dist/dev/app-plus/static/ITkoala-amap/selectedStart.png
  50. BIN
      unpackage/dist/dev/app-plus/static/ITkoala-amap/sharp.png
  51. BIN
      unpackage/dist/dev/app-plus/static/ITkoala-amap/start.png
  52. BIN
      unpackage/dist/dev/app-plus/static/banner@2x.png
  53. 221 0
      unpackage/dist/dev/app-plus/static/css/common.scss
  54. 20 0
      unpackage/dist/dev/app-plus/static/css/font.css
  55. BIN
      unpackage/dist/dev/app-plus/static/icon_delete.png
  56. BIN
      unpackage/dist/dev/app-plus/static/icon_down.png
  57. BIN
      unpackage/dist/dev/app-plus/static/iconfont.ttf
  58. BIN
      unpackage/dist/dev/app-plus/static/images/carSource/exchange.png
  59. BIN
      unpackage/dist/dev/app-plus/static/images/carSource/yaoqing.png
  60. BIN
      unpackage/dist/dev/app-plus/static/images/common/bz@2x.png
  61. BIN
      unpackage/dist/dev/app-plus/static/images/common/cy@2x.png
  62. BIN
      unpackage/dist/dev/app-plus/static/images/common/dingdan@2x(1).png
  63. BIN
      unpackage/dist/dev/app-plus/static/images/common/dingdan@2x.png
  64. BIN
      unpackage/dist/dev/app-plus/static/images/common/huoyuan@2x(1).png
  65. BIN
      unpackage/dist/dev/app-plus/static/images/common/huoyuan@2x.png
  66. BIN
      unpackage/dist/dev/app-plus/static/images/common/iconmy@2x.png
  67. BIN
      unpackage/dist/dev/app-plus/static/images/common/jt.png
  68. BIN
      unpackage/dist/dev/app-plus/static/images/common/mesicon@2x.png
  69. BIN
      unpackage/dist/dev/app-plus/static/images/common/my@2x.png
  70. BIN
      unpackage/dist/dev/app-plus/static/images/common/quxiao@2x.png
  71. BIN
      unpackage/dist/dev/app-plus/static/images/common/sh.png
  72. BIN
      unpackage/dist/dev/app-plus/static/images/common/sx.png
  73. BIN
      unpackage/dist/dev/app-plus/static/images/common/tg.png
  74. BIN
      unpackage/dist/dev/app-plus/static/images/common/tianjiazhaopian@2x.png
  75. BIN
      unpackage/dist/dev/app-plus/static/images/common/top@2x.png
  76. BIN
      unpackage/dist/dev/app-plus/static/images/common/wtg.png
  77. BIN
      unpackage/dist/dev/app-plus/static/images/common/xiaoxi@2x.png
  78. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/Mask@2x.png
  79. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/banner@2x.png
  80. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/change.png
  81. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/jt.png
  82. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/jx.png
  83. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/jxbf.png
  84. BIN
      unpackage/dist/dev/app-plus/static/images/goodSource/msgicon@2x.png
  85. BIN
      unpackage/dist/dev/app-plus/static/images/help/banner@2x.png
  86. BIN
      unpackage/dist/dev/app-plus/static/images/help/tu1@2x.png
  87. BIN
      unpackage/dist/dev/app-plus/static/images/help/zy.png
  88. BIN
      unpackage/dist/dev/app-plus/static/images/login/bg.png
  89. BIN
      unpackage/dist/dev/app-plus/static/images/login/bg@2x.png
  90. BIN
      unpackage/dist/dev/app-plus/static/images/login/bg@3x.png
  91. BIN
      unpackage/dist/dev/app-plus/static/images/login/bg_slices/bg.png
  92. BIN
      unpackage/dist/dev/app-plus/static/images/login/bg_slices/bg@2x.png
  93. BIN
      unpackage/dist/dev/app-plus/static/images/login/bg_slices/bg@3x.png
  94. BIN
      unpackage/dist/dev/app-plus/static/images/login/duihao2.png
  95. BIN
      unpackage/dist/dev/app-plus/static/images/login/duihao2@2x.png
  96. BIN
      unpackage/dist/dev/app-plus/static/images/login/duihao2@3x.png
  97. BIN
      unpackage/dist/dev/app-plus/static/images/login/guanbi@2x.png
  98. BIN
      unpackage/dist/dev/app-plus/static/images/login/logo.png
  99. BIN
      unpackage/dist/dev/app-plus/static/images/login/logo@2x.png
  100. BIN
      unpackage/dist/dev/app-plus/static/images/login/logo@3x.png

+ 9 - 1
pages.json

@@ -140,7 +140,15 @@
 				"navigationBarTextStyle": "white"
 			}
 
-		}, {
+		},
+		{
+			"path": "pages/order/confirmLoading",
+			"style": {
+				"navigationBarTitleText": "确认装车",
+				"enablePullDownRefresh": false
+			}
+		
+		},{
 			"path": "pages/order/confirmUnloading",
 			"style": {
 				"navigationBarTitleText": "确认卸车",

+ 74 - 64
pages/mine/cargoowner/editpersonalinformation.vue

@@ -1,6 +1,38 @@
 <template>
 	<view class="content">
 		<view class='content1'>
+			
+			<view class="title">上传身份证人像面</view>
+			<view @click.stop="uploadImg(1,index)" class="picture picture1" v-if="!dataDetails.cardAddressUrl">
+				<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
+				<view class="text">上传身份证人像面</view>
+			</view>
+			<view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(1,index)" class="preview-card-img picture">
+				<view @click.stop="delCard(1)">
+					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
+					</image>
+				</view>
+				<image class="" :src="dataDetails.cardAddressUrl" mode="aspectFit" style=""></image>
+			</view>
+			
+			<view class="title">上传身份证国徽面</view>
+			<view @click="uploadImg(2,index)" class="picture picture2" v-if="!dataDetails.cardBackAddressUrl">
+				<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
+				<view class="text">上传身份证国徽面</view>
+			</view>
+			
+			<view v-if="dataDetails.cardBackAddressUrl" @click.stop="uploadImg(2,index)"
+				class="preview-card-img picture">
+				<!-- <image class="card-img" :src="dataDetails.cardAddressUrl"></image> -->
+				<view @click.stop="delCard(2)">
+					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
+					</image>
+				</view>
+			
+				<image class="" :src="dataDetails.cardBackAddressUrl" mode="aspectFit"></image>
+			</view>
+		</view>
+		<view class="content2 content-other">
 			<view style='padding:5px 0 10px;border-bottom:1px solid #eee;' class="flex width100">
 				<view style='width:100px;font-size:14px;'>姓名</view>
 				<view class="flex">
@@ -31,37 +63,6 @@
 				</u--input>
 				<view class="flex align-center" >{{sexText}}</view>
 			</view>
-		</view>
-		<view class="content2 content-other">
-			<view class="title">上传身份证人像面</view>
-			<view @click.stop="uploadImg(1,index)" class="picture picture1" v-if="!dataDetails.cardAddressUrl">
-				<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
-				<view class="text">上传身份证人像面</view>
-			</view>
-			<view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(1,index)" class="preview-card-img picture">
-				<view @click.stop="delCard(1)">
-					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
-					</image>
-				</view>
-				<image class="" :src="dataDetails.cardAddressUrl" mode="aspectFit" style=""></image>
-			</view>
-
-			<view class="title">上传身份证国徽面</view>
-			<view @click="uploadImg(2,index)" class="picture picture2" v-if="!dataDetails.cardBackAddressUrl">
-				<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
-				<view class="text">上传身份证国徽面</view>
-			</view>
-
-			<view v-if="dataDetails.cardBackAddressUrl" @click.stop="uploadImg(2,index)"
-				class="preview-card-img picture">
-				<!-- <image class="card-img" :src="dataDetails.cardAddressUrl"></image> -->
-				<view @click.stop="delCard(2)">
-					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
-					</image>
-				</view>
-
-				<image class="" :src="dataDetails.cardBackAddressUrl" mode="aspectFit"></image>
-			</view>
 
 			<view class="flex row">
 				<view class="left-text">身份证号</view>
@@ -364,6 +365,16 @@
 														personImg: result,
 													}).then(res => {
 													that.dataDetails.cardNumber = res.data.recPersonNo
+													//性别设置默认
+													let i = res.data.recPersonNo.substr(16,1)
+													if(i%2 == 0){
+														that.dataDetails.sex = "女" 
+														that.sexText = "女士"
+													}else{
+														that.dataDetails.sex = "男" 
+														that.sexText = "先生"
+													}
+													
 													if (!that.dataDetails.name) {
 														that.dataDetails.name = res.data.recPerson
 													}
@@ -509,41 +520,26 @@
 			height: 80rpx;
 		}
 
-		.picture {
-			width: 100%;
-			height: 440rpx;
-			position: relative;
-			.text {
-				margin-top: 20rpx;
-			}
-		}
-
-		.picture1 {
-			background: url(../../../static/mine/zm.png);
-			background-size: 100% 100%;
-		}
-
-		.picture2 {
-			background: url(../../../static/mine/gh.png);
-			background-size: 100% 100%;
-		}
-
-		.picture3 {
-			background: url(../../../static/mine/yhkzm.png);
-			background-size: 100% 100%;
-		}
-
-		.xj-image {
-			width: 100rpx;
-			height: 100rpx;
-		}
-
-		.title {
-			color: #999999;
-			margin: 20rpx 0;
-			font-size: 14px;
+			
+	}
+	.picture {
+		width: 100%;
+		height: 440rpx;
+		position: relative;
+		.text {
+			margin-top: 20rpx;
 		}
 	}
+	.xj-image {
+		width: 100rpx;
+		height: 100rpx;
+	}
+	
+	.title {
+		color: #999999;
+		margin: 20rpx 0;
+		font-size: 14px;
+	}
 
 	.u-input {
 		font-size: 16px;
@@ -591,4 +587,18 @@
 	.bz{
 		font-size: 28rpx;
 	}
+	.picture1 {
+		background: url(../../../static/mine/zm.png);
+		background-size: 100% 100%;
+	}
+	
+	.picture2 {
+		background: url(../../../static/mine/gh.png);
+		background-size: 100% 100%;
+	}
+	
+	.picture3 {
+		background: url(../../../static/mine/yhkzm.png);
+		background-size: 100% 100%;
+	}
 </style>

+ 7 - 7
pages/mine/company/addcompany.vue

@@ -434,13 +434,13 @@
 						return true
 					}
 				}
-				if (uni.$u.test.isEmpty(this.dataDetails.videoAddressUrl)) {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "视频认证不能为空!",
-					})
-					return true
-				}
+				// if (uni.$u.test.isEmpty(this.dataDetails.videoAddressUrl)) {
+				// 	this.$refs.uToast.show({
+				// 		type: 'error',
+				// 		message: "视频认证不能为空!",
+				// 	})
+				// 	return true
+				// }
 			},
 			submit() {
 				if (this.validate()) return

+ 60 - 47
pages/mine/index.vue

@@ -15,7 +15,7 @@
 						height="56px"></u--image>
 					<view class='information' v-if='hasLogin'>
 						<view class='flex items-center'>
-							<view class='username'>{{userName}}</view>
+							<view class='username'>{{userName}}  {{cargoCall}}</view>
 							<view v-if='status' class='currectstatus'>已认证</view>
 							<view v-if='!status' class='currectstatus1'>未认证</view>
 						</view>
@@ -32,7 +32,7 @@
 					</view>
 				</view>
 			</view>
-			
+
 			<view class='flex operate flex-space-around'>
 				<view class='flex items-center' @click="toMyRelease">
 					<u--image style='margin-right:8px;' :showLoading="true" src="../../static/mine/wodefabu.png"
@@ -94,7 +94,7 @@
 						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
 					</view>
 				</view>
-			
+
 				<view class="flex flex-space-between content1-item"
 					@click="goDetailPage('/pages/mine/manageBankCards/index')">
 					<view class='flex items-center'>
@@ -105,7 +105,7 @@
 						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
 					</view>
 				</view>
-		<!-- 		<view class="flex flex-space-between content1-item"
+				<!-- 		<view class="flex flex-space-between content1-item"
 					@click="goDetailPage('/pages/mine/driverEvaluation')">
 					<view class='flex items-center'>
 						<u--image style='margin-right:8px;' :showLoading="true" src="../../static/mine/dailihuozhu.png"
@@ -149,50 +149,63 @@
 				phone: '',
 				status: false,
 				alertContent: '您尚未登录,是否立即登录?',
+				cargoCall:"先生",
 			};
 		},
 		onShow() {
-			uni.showLoading({
-				title: '加载中',
-				mask: true
-			})
-			this.$request.baseRequest('get', '/cargoOwnerInfo/selectCargoOwner', {
-					commonId: this.userInfo.id
-				}).then(res => {
-					uni.hideLoading()
-			
-					if (res.data) {
-						if (res.data.authenticationStatus == '审核中' || res.data.authenticationStatus == '已驳回') {
-							this.status = false
+			if (this.hasLogin) {
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				})
+				this.$request.baseRequest('get', '/cargoOwnerInfo/selectCargoOwner', {
+						commonId: this.userInfo.id
+					}).then(res => {
+						uni.hideLoading()
+						if (res.data) {
+							if (res.data.authenticationStatus == '审核中' || res.data.authenticationStatus == '已驳回') {
+								this.status = false
+							} else {
+								this.status = true
+							}
+
 						} else {
-							this.status = true
+							this.status = false
 						}
-			
-					} else {
-						this.status = false
-					}
-				})
-				.catch(res => {
-					uni.hideLoading()
-					uni.showToast({
-						title: res.message,
-						icon: 'none',
-						duration: 2000
 					})
-				});
-			// 
-			this.userName = this.userInfo.userName
-			this.phone = this.userInfo.phone.replace(this.userInfo.phone.substring(3, 7), "****")
-			if (!this.hasLogin) {
-				this.isShowAlert = true
-				return
+					.catch(res => {
+						uni.hideLoading()
+						uni.showToast({
+							title: res.message,
+							icon: 'none',
+							duration: 2000
+						})
+					});
+				this.$request.baseRequest('get', '/cargoOwnerInfo/firstAuthentication', {
+					phone: this.userInfo.phone
+				}).then(res => {
+					uni.setStorageSync("firstAuthentication",res.data)
+						this.userName = res.data.call
+						if(res.data.sex == '男'){
+							this.cargoCall = "先生"
+						}else{
+							this.cargoCall = "女士"
+						}
+				})
+				this.phone = this.userInfo.phone ? this.userInfo.phone.replace(this.userInfo.phone.substring(3, 7),
+					"****") : ''
+				if (!this.hasLogin) {
+					this.isShowAlert = true
+					return
+				}
 			}
+
 		},
 		onLoad() {
-			
+
 		},
 		computed: {
-			...mapState(['hasLogin', 'userInfo']),
+			...mapState(['hasLogin', 'userInfo',"firstAuthentication"]),
 			// 手机号中间4位加*
 			// starUserphone() {
 			// 	let reg = /^(\d{3})\d{4}(\d{4})$/;
@@ -203,16 +216,16 @@
 		},
 		methods: {
 			confirmClick() {
-							// #ifdef APP-PLUS
-								if (this.alertTitle == '账号审核中') {
-									if (uni.getSystemInfoSync().platform == 'ios') {
-										plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
-									} else if (uni.getSystemInfoSync().platform == 'android') {
-										plus.runtime.quit();
-									}
-									return
-								}
-								// #endif
+				// #ifdef APP-PLUS
+				if (this.alertTitle == '账号审核中') {
+					if (uni.getSystemInfoSync().platform == 'ios') {
+						plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
+					} else if (uni.getSystemInfoSync().platform == 'android') {
+						plus.runtime.quit();
+					}
+					return
+				}
+				// #endif
 				this.isShowAlert = false
 				uni.$u.route('/pages/public/login');
 			},

+ 11 - 2
pages/mine/myAccount/bill.vue

@@ -7,7 +7,7 @@
 			<view class="flex row">
 				<view class="left-text">{{item.types}}</view>
 				<view class="flex right-text">
-						{{item.amountMoney}}
+					{{item.amountMoney}}
 				</view>
 			</view>
 			<view class="date_css">
@@ -116,9 +116,18 @@
 				width: 60%;
 				justify-content: flex-end;
 			}
-			.date_css{
+
+			.date_css {
 				text-align: right;
 			}
 		}
 	}
 </style>
+uni.setStorageSync('userInfo', res.data)
+helper.getListByUserId()
+that.$store.commit('login', res.data)
+// that.liangxinLogin()
+uni.switchTab({
+url: '/pages/order/index'
+});
+uni.hideLoading()

+ 412 - 86
pages/order/confirmLoading.vue

@@ -1,86 +1,111 @@
 <!-- 确认装车 -->
 <template>
 	<view class="content">
-		<view class="level1-title">
-			任务信息
-		</view>
-		<view class="content1">
+		<!-- <div class='content1'>
+			<view class="level2-title">承运合同</view>
 			<view class='row-between'>
-				<view class="">货主</view>
-				<view class="flex">
-					<view>张三</view>
-					<view>del</view>
-				</view>
-				
+				<view class="">合同编号</view>
+				<view class="" @click="toSignContract">{{detailData.contractNo?detailData.contractNo:'去签订合同'}}</view>
+			</view>
+		</div> -->
+		<view class="content2">
+			<view class="level2-title">基本信息</view>
+			<view class='row-between'>
+				<view class="">订单编号</view>
+				<view class="">{{detailData.orderNo}}</view>
 			</view>
 			<view class='row-between'>
-				<view class="">货主单位</view>
-				<view>黑龙江中天昊元贸易有限公司</view>
+				<view class="">司机</view>
+				<view class="">{{detailData.driverName}}</view>
+			</view>
+			<view class='row-between'>
+				<view class="">发货单位</view>
+				<view class="">{{detailData.compName?detailData.compName:'个人货主'}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="">发货地</view>
-				<view>鲅鱼圈</view>
+				<view class=" place">
+					{{detailData.sendPrivate}}{{detailData.sendCity}}{{detailData.sendArea}}{{detailData.sendDetailedAddress}}
+				</view>
 			</view>
 			<view class='row-between'>
 				<view class="">卸货地</view>
-				<view>黑龙江省齐齐哈尔市梅里斯达斡尔族区杜尔门沁达斡尔乡53农场</view>
+				<view class=" place">
+					{{detailData.unloadPrivate}}{{detailData.unloadCity}}{{detailData.unloadArea}}{{detailData.unloadDetailedAddress}}
+				</view>
 			</view>
 			<view class='row-between'>
 				<view class="">货名</view>
-				<view>玉米</view>
+				<view class="">{{detailData.goodsName}}</view>
 			</view>
 			<view class='row-between'>
-				<view class="">运费</view>
-				<view>100元/吨</view>
+				<view class="">距离</view>
+				<view class="">{{detailData.distance?detailData.distance:'暂无'}}公里</view>
 			</view>
 		</view>
-		<view class="level1-title">
-			装车信息
-		</view>
 		<view class="content2">
+			<view class="level2-title">承运信息</view>
+			<view class='row-between'>
+				<view class="">合同编号</view>
+				<view class="date-style">
+					{{detailData.contractNo?detailData.contractNo:'暂无'}}
+				</view>
+			</view>
 			<view class='row-between'>
 				<view class="">车牌号</view>
-				<view>辽H12345</view>
+				{{detailData.carNo?detailData.carNo:"来自合同"}}
 			</view>
+
 			<view class='row-between'>
-				<view class="">装车时间</view>
-				<view>2022-02-10 16:13:15</view>
+				<view class="">装车净重(吨)</view>
+				{{detailData.weight ? detailData.weight:"来自合同"}}
 			</view>
 			<view class='row-between'>
-				<view class="">装车净重</view>
+				<view class="">预计运费(元)</view>
+				{{detailData.freight ? detailData.freight:"来自合同"}}
 			</view>
-			<view class='s-flex'>
-				<view class="">上传装车照片</view>
-				<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="3"
-					:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
-					@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+			<view class='row-between'>
+				<view class="">装车日期</view>
+				<view class="date-style">
+					{{detailData.loadingDate?detailData.loadingDate:'来自合同'}}
+				</view>
 			</view>
 			<view class='s-flex'>
-				<view class="">上传装车磅单</view>
-				<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="1"
-					:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
-					@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+				<view class="" style="margin:20rpx 0;">上传装车照片</view>
+				<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
+					name="1" multiple :maxCount="3"></u-upload>
 			</view>
+
 		</view>
-		<view class="content3 flex">
-			<u-button text="暂存" type="primary" @click="submit(0)"></u-button>
-			<u-button text="提交" type="primary" @click="submit(1)"></u-button>
+		<view class="bottom-btn">
+			<!-- <view class="store" @click="submit(1)">暂存</view> -->
+			<view class="submit" @click="submit(3)">提交</view>
 		</view>
+		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :closeOnClickOverlay='true'
+			:showCancelButton='true' confirmColor='#2772FB' @confirm="confirmClick" @close="cancelClick"
+			@cancel="cancelClick"></u-modal>
+		<master-keyboard ref="keyboard" keyboardtype="car" :show="keyShow" :randomNumber="true" :newCar="false"
+			:defaultValue="carNumber" @keyboardClick="handleClick"></master-keyboard>
 		<u-toast ref="uToast"></u-toast>
-		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :closeOnClickOverlay='true' :showCancelButton='true' confirmColor='#22C572'  @confirm="confirmClick" @close="cancelClick" @cancel="cancelClick"></u-modal>
+		<u-calendar :show="showDate" :mode="mode" @confirm="confirmDate" @close="showDate= false"></u-calendar>
 	</view>
 </template>
 
 <script>
-	import upload from '@/components/upload.vue';
+	let that;
+	import uploadImage from '@/components/ossutil/uploadFile.js';
 	export default {
-		components: {
-			upload
-		},
 		data() {
 			return {
+				imgList: [],
+				fileList1: [],
+				showDate: false,
+				mode: 'single',
+				id: '',
+				sourceType: ['camera'],
 				detailData: {
-					addressUrl: ''
+					carrierInfo: {},
+					loadingDate: {}
 				},
 				action: this.$helper.ossUploadUrl,
 				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
@@ -88,12 +113,205 @@
 				isShowAlert: false,
 				alertContent: '',
 				alertTitle: '',
+				keyShow: false,
+				carNumber: '',
+				gjList: [],
 			}
 		},
 		onLoad(options) {
+			that = this
+			// #ifdef APP-PLUS
+			// this.getLngLat();
+			// #endif
 			console.log(options)
+			this.id = JSON.parse(decodeURIComponent(options.obj)).id
+			this.getInfo()
+			// this.detailData = JSON.parse(options.obj) ;
+			// console.log(this.detailData)
+			// CYHT20220317000001
 		},
 		methods: {
+			//确认装车提交成功后,开启实时定位,
+			// 调接口5分钟一次发送轨迹,[
+			// 	{latitude: 39.997761, longitude: 116.478935},
+			// 	{latitude: 39.997825, longitude: 116.478939},
+			// 	{latitude: 39.998549, longitude: 116.478912},
+			// 	{latitude: 39.998555, longitude: 116.478998},
+			// 	{latitude: 39.998566, longitude: 116.479282},
+			// 	{latitude: 39.998528, longitude: 116.479658},
+			// 	{latitude: 39.998453, longitude: 116.480151},
+			// 	{latitude: 39.998302, longitude: 116.480784},
+			// 	{latitude: 39.998184, longitude: 116.481149},
+			// 	{latitude: 39.997997, longitude: 116.481573},
+			// 	{latitude: 39.997846, longitude: 116.481863},
+			// 	{latitude: 39.997718, longitude: 116.482072},
+			// 	{latitude: 39.997718, longitude: 116.482362},
+			// 	{latitude: 39.998935, longitude: 116.483633},
+			// 	{latitude: 39.998968, longitude: 116.48367},
+			// 	{latitude: 39.999861, longitude: 116.484648}
+			// ]
+			// a(){},
+			toSignContract() {
+				uni.$u.route('/pages/order/signContract', {
+					obj: JSON.stringify(this.detailData),
+				});
+			},
+			selectDate() {
+				this.showDate = true
+			},
+			confirmDate(e) {
+				this.detailData.carrierInfo.loadingDate = e[0]
+				this.showDate = false
+			},
+			getInfo() {
+				this.$request.baseRequest('get', '/orderInfo/getOrderInfo', {
+					id: this.id,
+				}).then(res => {
+					if (res.code == 200) {
+						this.detailData = res.data
+						this.$request.baseRequest('get', '/carrierInfo/getHyCarrierInfo', {
+							orderId: this.detailData.id,
+						}).then(res => {
+							if (res.data) {
+								this.detailData.carNo = res.data.carNo
+								this.detailData.loadingDate = res.data.loadingDate
+								this.detailData.weight = res.data.loadingWeight
+								this.detailData.freight = res.data.estimatedFreight
+							}
+						})
+
+						// this.detailData.contractNo = ''
+						// this.detailData.id = this.detailData.carrierId
+						// this.detailData.carrierInfo.loadingDate = ''
+						// this.detailData.carrierInfo.carNo = ''
+						// this.detailData.carrierInfo.loadingAreaLongitude = ''
+						// this.detailData.carrierInfo.loadingAreaLatitude = ''
+						// this.detailData.carrierInfo.sendCity = '营口'
+						// this.detailData.carrierInfo.sendArea = '鲅鱼圈'
+						// this.detailData.carrierInfo.loadingImg = ''
+						// this.carrierInfo = res.data.carrierInfo
+						// this.freightInfo = res.data.freightInfo
+						// this.zcPhoneList = this.carrierInfo.loadingImg.split(',')
+						// if(res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="已终止"){
+						// 	this.status1 = true
+						// }
+						// if(res.data.orderStatus!="已终止"&&res.data.orderStatus!="平台驳回装车信息"&&res.data.orderStatus!="待平台确认装车"&&res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="待货主确认装车"&&res.data.orderStatus!="货主驳回装车信息"){
+						// 	this.status2 = true
+						// }
+					}
+
+				})
+
+			},
+			//车牌号弹出键盘
+			handleShowKeyboard() {
+				if (this.detailData.carrierInfo.carNo == '') {
+					this.carNumber = ''
+				} else {
+					this.carNumber = this.detailData.carrierInfo.carNo
+				}
+				if (this.$refs.keyboard.open) {
+					this.$refs.keyboard.open(false) //true 键盘显示 false 键盘隐藏
+				} else {
+					this.$refs.keyboard[0].open(false)
+				}
+				if (this.$refs.keyboard.open) {
+					this.$refs.keyboard.open(true) //true 键盘显示 false 键盘隐藏
+				} else {
+					this.$refs.keyboard[0].open(true)
+				}
+			},
+			//车牌号弹出键盘
+			handleClick(e) {
+				this.carNumber = e.value
+				this.detailData.carrierInfo.carNo = e.value //键盘输入值
+			},
+			// getLngLat() {
+			// 	uni.showLoading({
+			// 		title: '获取定位中',
+			// 		mask: true
+			// 	})
+			// 	this.$helper.fUN_AmapLocation.start({
+			// 			intervalTime: 1000 * 3,
+			// 			isReport: false,
+			// 		},
+			// 		res => {
+			// 			//见下方定位返回示例
+			// 			console.log('====fUN_AmapLocation定位====', JSON.stringify(res));
+			// 			if (res.latitude) {
+			// 				this.detailData.carrierInfo.loadingAreaLongitude = res.longitude;
+			// 				this.detailData.carrierInfo.loadingAreaLatitude = res.latitude;
+			// 				this.detailData.carrierInfo.sendCity = this.$helper.filterUrban(res.city)
+			// 				this.detailData.carrierInfo.sendArea = this.$helper.filterArea(res.district);
+			// 				console.log(this.detailData.carrierInfo.sendCity)
+			// 				console.log(this.detailData.carrierInfo.sendArea)
+			// 				this.$forceUpdate()
+
+			// 			}
+			// 			uni.hideLoading()
+
+			// 			this.$helper.fUN_AmapLocation.stop({}, result => {
+			// 				console.log('====fUN_AmapLocation定位stop====', JSON.stringify(result));
+			// 			});
+			// 		}
+			// 	);
+			// 	uni.getLocation({
+			// 		type: 'gcj02',
+			// 		geocode: true,
+			// 		success: res => {
+			// 			console.log('定位地址')
+			// 			console.log(res)
+			// 			if (res.latitude) {
+			// 				this.detailData.carrierInfo.loadingAreaLongitude = res.longitude;
+			// 				this.detailData.carrierInfo.loadingAreaLatitude = res.latitude;
+			// 				this.detailData.carrierInfo.sendCity = this.$helper.filterUrban(res.address.city)
+			// 				this.detailData.carrierInfo.sendArea = this.$helper.filterArea(res.address
+			// 					.district);
+			// 				console.log(this.detailData.carrierInfo.sendCity)
+			// 				console.log(this.detailData.carrierInfo.sendArea)
+			// 				this.$forceUpdate()
+			// 				uni.hideLoading()
+			// 			} else {
+			// 				if (uni.getSystemInfoSync().platform == 'android') {
+			// 					var context = plus.android.importClass("android.content.Context");
+			// 					var locationManager = plus.android.importClass(
+			// 						"android.location.LocationManager");
+			// 					var main = plus.android.runtimeMainActivity();
+			// 					var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
+			// 					this.bool = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)
+			// 				}
+			// 				if (this.bool === false) {
+			// 					uni.showModal({
+			// 						title: '提示',
+			// 						content: '请打开定位服务',
+			// 						success: ({
+			// 							confirm,
+			// 							cancel
+			// 						}) => {
+			// 							if (confirm) {
+			// 								if (uni.getSystemInfoSync().platform == 'android') {
+			// 									var Intent = plus.android.importClass(
+			// 										'android.content.Intent');
+			// 									var Settings = plus.android.importClass(
+			// 										'android.provider.Settings');
+			// 									var intent = new Intent(Settings
+			// 										.ACTION_LOCATION_SOURCE_SETTINGS);
+			// 									var main = plus.android.runtimeMainActivity();
+			// 									main.startActivity(intent); // 打开系统设置GPS服务页面
+			// 								}
+			// 							}
+			// 						}
+			// 					});
+			// 				}
+			// 			}
+			// 		},
+			// 		fail: res => {
+			// 			console.log('定位失败')
+			// 			console.log(res)
+
+			// 		}
+			// 	});
+			// },
 			alertBtn() {
 				// uni.navigateTo({
 				// 	url: '/pages/public/login'
@@ -102,63 +320,171 @@
 			cancelClick() {
 				this.isShowAlert = false
 			},
-			getImgUrl(res) {
-				this.detailData.addressUrl = res
-				console.log(res)
-				console.log('------------res-----------')
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
 			},
-			onError(error) {
-				alert(error)
-				console.log('------------error-----------')
-				console.log(error)
-			},
-			onRemove(index) {},
-			filterFileType(index, lists) {
-				if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
-					lists.splice(index, 1);
-					// 当前文件不支持
-					uni.showModal({
-						title: '暂不支持当前图片类型',
-						showCancel: false
-					});
-				} else {
-					this.isAdd = false;
+			// 新增图片
+			async afterRead(event) {
+				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await this.uploadFilePromise(lists[i].url)
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result
+					}))
+					fileListLen++
 				}
 			},
+			uploadFilePromise(url) {
+				uploadImage('image', url, 'appData/',
+					result => {
+						// 上传成功回调函数
+						console.log('图片地址', result)
+						this.imgList.push(result)
+
+					}
+				)
+			},
 			onProgress(e) {
 				console.log(e)
 			},
 			submit(type) {
-				console.log(type)
-				let params = {
-						type: 'success',
-						title: '成功主题(带图标)',
-						message: "庄生晓梦迷蝴蝶",
-						iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/success.png'
+				if (type == 1) {
+					if (!this.detailData.contractNo) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "合同未签订不能暂存!"
+						})
+						return
 					}
-					if(type==0){
-						
-					}else{
-						this.alertContent='确定提交装车信息?'
-						this.alertTitle='提示'
-						this.isShowAlert = true
-					}
-				// this.$refs.uToast.show({
-				// 	...params,
-				// 	complete() {
-				// 		params.url && uni.navigateTo({
-				// 			url: params.url
-				// 		})
-				// 	}
-				// })
+					this.alertTitle = '确定暂存装车信息?'
+				} else {
+					this.alertTitle = '确定提交装车信息?'
+				}
+				this.isShowAlert = true
+				this.detailData.statusFlag = type
 			},
-			confirmClick(){
-				console.log('提交')
+			confirmClick() {
+				this.isShowAlert = false
+				//1暂存
+				// if (this.detailData.statusFlag == 1) {
+				// 	delete this.detailData.carrierInfo.loadingAreaLongitude;
+				// 	delete this.detailData.carrierInfo.loadingAreaLatitude;
+				// 	delete this.detailData.carrierInfo.sendCity;
+				// 	delete this.detailData.carrierInfo.sendArea;
+				// }
+				this.detailData.carrierInfo = {}
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$request.baseRequest('post', '/carrierInfo/cargoOwnerLoadingAdd', {
+						id: this.id,
+						loadingFlag: 1,
+						flag: 1
+					}).then(res => {
+						if (res.code == 200) {
+							uni.hideLoading()
+							let _title = ''
+							if (this.detailData.statusFlag == 1) {
+								_title = '暂存成功!'
+							} else {
+								_title = '提交成功!'
+							}
+							uni.navigateBack({
+								delta:1
+							})
+						}
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
 			}
 		},
 	}
 </script>
 
-<style>
+<style scoped lang="scss">
+	.content {
+		// . {
+		// 	color: #333333;
+		// }
+	}
+
+	.level2-title {
+		margin: 0 0 20rpx 0;
+	}
+
+	.content1,
+	.content2 {
+		background: white;
+		margin: 20rpx;
+		border-radius: 20rpx;
+		padding: 20rpx;
+
+		.place {
+			width: 80%;
+			text-align: right;
+		}
+	}
+
+	.upload {}
+
+	.bottom-btn {
+		display: flex;
+		justify-content: space-around;
+		margin-bottom: 50rpx;
+		background: #FFFFFF;
+		padding: 40rpx 0;
+	}
+
+	.store {
+		padding: 20rpx 30rpx;
+		color: #2772FB;
+		width: 40%;
+		background: #EEF4FF;
+		border-radius: 40rpx;
+		font-size: 36rpx;
+		text-align: center;
+	}
+
+	.submit {
+		font-size: 36rpx;
+		padding: 20rpx 30rpx;
+		color: white;
+		width: 40%;
+		background: #2772FB;
+		border-radius: 40rpx;
+		text-align: center;
+	}
+
+	.row-between {
+		margin: 20rpx 0;
+	}
+
+	.sx-style {
+		background: #2772FB;
+		color: white;
+		padding: 2rpx 16rpx;
+		box-sizing: border-box;
+		border-radius: 10rpx;
+		margin-left: 20rpx;
+	}
+
+	.input {
+		text-align: right;
+	}
 
+	.date-style {}
 </style>

+ 15 - 13
pages/order/orderDetails.vue

@@ -153,15 +153,15 @@
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">车牌号</view>
-				<view class="row-right-text">{{dataObj.carrierInfo.carNo}}</view>
+				<view class="row-right-text">{{dataObj.hyCarrierInfo.carNo}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">预计运费</view>
-				<view class="row-right-text">{{dataObj.carrierInfo.estimatedFreight}}元</view>
+				<view class="row-right-text">{{dataObj.hyCarrierInfo.estimatedFreight}}元</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">装车时间</view>
-				<view class="row-right-text gray">{{dataObj.carrierInfo.loadingDate}}</view>
+				<view class="row-right-text gray">{{dataObj.hyCarrierInfo.loadingDate}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">装车照片</view>
@@ -172,11 +172,11 @@
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">合计应付运费</view>
-				<view class="row-right-text">{{dataObj.carrierInfo.totalFreight}}元</view>
+				<view class="row-right-text">{{dataObj.hyCarrierInfo.totalFreight}}元</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">卸车时间</view>
-				<view class="row-right-text gray">{{dataObj.carrierInfo.loadingDate}}</view>
+				<view class="row-right-text gray">{{dataObj.hyCarrierInfo.loadingDate}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">卸车照片</view>
@@ -278,7 +278,6 @@
 	export default {
 		data() {
 			return {
-				type: null,
 				cyinfoStatus: '未装车',
 				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
 				isShowTerminationReason: false,
@@ -420,8 +419,11 @@
 				}
 				this.type = type
 				if (type == 3) {
-					this.alertTitle = '确认装车?'
-					this.confirmText = '确定'
+					uni.$u.route("/pages/order/confirmLoading", {
+					obj: JSON.stringify({id:this.id}),
+				})
+					// this.alertTitle = '确认装车?'
+					// this.confirmText = '确定'
 				} else if (type == 4) {
 					this.alertTitle = '确认卸车?'
 					this.confirmText = '确定'
@@ -586,15 +588,15 @@
 							.cargoOwnerStatus == "已完结") {
 							this.status3 = true
 						}
-						if (res.data.carrierInfo) {
-							if (res.data.carrierInfo.loadingImg) {
-								let _zcList = res.data.carrierInfo.loadingImg.split(',')
+						if (res.data.hyCarrierInfo) {
+							if (res.data.hyCarrierInfo.loadingImg) {
+								let _zcList = res.data.hyCarrierInfo.loadingImg.split(',')
 								for (let i = 0; i < _zcList.length; i++) {
 									if (_zcList[i]) this.zcImgList.push(_zcList[i])
 								}
 							}
-							if (res.data.carrierInfo.unloadingImg) {
-								let _xcList = res.data.carrierInfo.unloadingImg.split(',')
+							if (res.data.hyCarrierInfo.unloadingImg) {
+								let _xcList = res.data.hyCarrierInfo.unloadingImg.split(',')
 								for (let i = 0; i < _xcList.length; i++) {
 									if (_xcList[i]) this.xcImgList.push(_xcList[i])
 								}

+ 10 - 4
pages/order/signContract.vue

@@ -43,11 +43,14 @@
 				<view class="gray">距离</view>
 				<view class="">约{{dataDetails.distance}}公里</view>
 			</view>
-			<view class='row-between'>
+			<!-- <view class='row-between'>
 				<view class="gray">运费</view>
 				<view class="">{{dataDetails.freightInfo.freight}}{{dataDetails.illingMethod==0?'元/吨':'元/车'}}</view>
-				<!-- 				<view class="flex"><input type="text" placeholder="请输入运费" v-model="dataDetails.freight"
-						class="text-align-right yf-input">{{dataDetails.freight}}元/车</view> -->
+			</view> -->
+			<view class='row-between'>
+				<!-- 后加 -->
+				<view class="gray">服务费(元)</view>
+				<view class="">{{dataDetails.serviceCharge}}</view>
 			</view>
 		</view>
 		<view class="wrapper content3">
@@ -102,7 +105,10 @@
 				lineColor: '#1A1A1A', // 颜色
 				lineSize: 5, // 笔记倍数
 				value: true,
-				dataDetails: {},
+				dataDetails: {
+					carrierInfo: {},
+					serviceCharge:'50'
+				},
 				radiolist1: [{
 						name: '平台垫付运费',
 						disabled: false

+ 10 - 71
pages/public/code.vue

@@ -82,6 +82,7 @@
 					--this.count_down
 				}, 1000)
 				if (this.count_down == 0) {
+					this.count_down = 60
 					this.status = false
 				}
 				// 设定一个定时器 60000就是六十秒
@@ -117,92 +118,30 @@
 						title: '登录中',
 						mask: true
 					})
-					that.$request.baseRequest('get', '/commonUser/loginVerifyCode', {
+					console.log("----------------------------")
+					console.log(this.phone)
+					console.log(this.inputList)
+					this.$request.baseRequest('get', '/commonUser/loginVerifyCode', {
 							phone: this.phone,
 							verifyCode: this.inputList,
 							loginFlag: 1,
-							identification:2
+							identification: 2
 						}).then(res => {
+							console.log("res",res)
 							if (res.code == 200) {
-								that.$request.baseRequest('post', '/commonUser/api/loginQuickly', {
-									mobilePhone: this.phone,
-									veriCode: "123456",
-									loginFlag: 1,
-									identification:2
-								}).then(res1 => {
-									that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
-										reCommonId: this.userInfo.id,
-									}).then(res3 => {
-										if (res3.data) {
-											let name = 'myTip';
-											let value = res3.data
-											if (value == 0) {
-												uni.removeTabBarBadge({
-													index: 2
-												})
-											}
-											that.$store.commit('$uStore', {
-												name,
-												value
-											});
-											if (value != 0 && value) {
-												uni.setTabBarBadge({
-													index: 2,
-													text: value + ""
-												})
-											}
-										}
-									})
-									if (res1.code == 200) {
-										uni.setStorageSync('pcuserInfo', res1.data)
-										helper.getListByUserId()
-									} else {
-										that.$api.doRequest('post', '/commonUser/api/loginQuickly', {
-											mobilePhone: '14444444444',
-											veriCode: "123456",
-											loginFlag: 1
-										}).then(res2 => {
-											that.$request.baseRequest('get',
-											'/newsInfo/unreadMessage', {
-												reCommonId: this.userInfo.id,
-											}).then(res3 => {
-												if (res3.data) {
-													let name = 'myTip';
-													let value = res3.data
-													if (value == 0) {
-														uni.removeTabBarBadge({
-															index: 2
-														})
-													}
-													that.$store.commit('$uStore', {
-														name,
-														value
-													});
-													if (value != 0 && value) {
-														uni.setTabBarBadge({
-															index: 2,
-															text: value + ""
-														})
-													}
-												}
-											})
-											uni.setStorageSync('pcuserInfo', res2.data)
-											helper.getListByUserId()
-										})
-									}
-								})
+								console.log("res",res)
 								uni.setStorageSync('userInfo', res.data)
 								helper.getListByUserId()
 								that.$store.commit('login', res.data)
-								// that.liangxinLogin()
 								uni.switchTab({
 									url: '/pages/order/index'
 								});
 								uni.hideLoading()
+
 							} else {
 								uni.hideLoading()
 								uni.showToast({
-									title: res.message,
+									title: res1.message,
 									icon: 'none',
 									duration: 2000
 								})

+ 1 - 1
pages/release/addAddress.vue

@@ -25,7 +25,7 @@
 						<u--input v-model="addressInfo.contacts" border="none" placeholder="联系人">></u--input>
 					</u-form-item>
 					<u-form-item label="联系电话" prop="addressInfo.contactPhone" ref="item1">
-						<u--input v-model="addressInfo.contactPhone" border="none" placeholder="联系电话">></u--input>
+						<u--input v-model="addressInfo.contactPhone" border="none" placeholder="联系电话" maxlength="11">></u--input>
 					</u-form-item>
 				</u--form>
 			</view>

+ 6 - 6
pages/release/release.vue

@@ -91,14 +91,14 @@
 			<view class="row">
 				<view class="left">收货人身份证号</view>
 				<view class="right flex">
-					<input type="number" maxlength="11" placeholder="输入收货人身份证号" class="input"
+					<input type="number" maxlength="18" placeholder="输入收货人身份证号" class="input"
 						v-model="dataObj.receiverIdcard" />
 				</view>
 			</view>
 			<view class="row">
 				<view class="left">收货方信用代码(选填)</view>
 				<view class="right flex">
-					<input type="number" maxlength="11" placeholder="输入收货方信用代码" class="input"
+					<input placeholder="输入收货方信用代码" class="input"
 						v-model="dataObj.receiverCreditCode" />
 				</view>
 			</view>
@@ -329,7 +329,6 @@
 			}
 		},
 		onShow() {
-
 			console.log("点击发布")
 			if (!this.hasLogin) {
 				uni.$u.route('/pages/public/login');
@@ -425,9 +424,11 @@
 						// 可用企业货主
 						this.qyList = []
 						// 自己法人
-						let _self = res.data.companyInfoList
+						// let _self = res.data.companyInfoList
+						let _self = res.data.hyCompanyInfoList
 						//代理货主
-						let _dlhz = res.data.cargoOwnerCompInfoList
+						// let _dlhz = res.data.cargoOwnerCompInfoList
+						let _dlhz = res.data.hyCargoOwnerCompInfoList
 						if (!_dlhz) _dlhz = []
 						for (let i = 0; i < _self.length; i++) {
 							if (_self[i].status == '已认证') {
@@ -662,7 +663,6 @@
 							type: 'success',
 							message: "发布成功",
 							complete() {
-
 								_this.dataObj = {
 									commonId: '',
 									cargoOwner: '',

+ 6 - 2
store/index.js

@@ -10,7 +10,7 @@ try {
 }
 
 // 需要永久存储,且下次APP启动需要取出的,在state中的变量名
-let saveStateKeys = ['firendItem','userData','userInfo','enter','pushRes','myTip','taskTip','contractTip','liangxinTip','packet','linkItem','memberItem','memberItemIndex','chatItem','clientId','infoList'];
+let saveStateKeys = ['firendItem','userData','userInfo','firstAuthentication','enter','pushRes','myTip','taskTip','contractTip','liangxinTip','packet','linkItem','memberItem','memberItemIndex','chatItem','clientId','infoList'];
 
 // 保存变量到本地存储中
 const saveLifeData = function(key, value) {
@@ -90,7 +90,8 @@ const store = new Vuex.Store({
 		clientId: lifeData.clientId?lifeData.clientId: "",
 		// 确定收货
 		isConfigfreightTransport:true,
-		choice:""
+		choice:"",
+		firstAuthentication:{}
 	},
 	mutations: {
 		$uStore(state, payload) {
@@ -116,13 +117,16 @@ const store = new Vuex.Store({
 		login(state, provider) {
 			state.hasLogin = true;
 			state.userInfo = provider;
+				state.firstAuthentication = uni.getStorageSync('firstAuthentication');
 			uni.setStorageSync('userInfo', provider)
 		},
 		
 		logout(state) {
 			state.hasLogin = false;
 			state.userInfo = {};
+			state.firstAuthentication = {};
 			uni.removeStorageSync('userInfo')
+			uni.removeStorageSync('firstAuthentication')
 			uni.removeStorageSync('pcUserInfo')
 		},
 		configfreightTransport(state,flag){

+ 0 - 0
unpackage/dist/dev/.automator/app-plus/.automator.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappchooselocation.js


BIN
unpackage/dist/dev/app-plus/__uniapperror.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappes6.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappopenlocation.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/__uniapppicker.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 6 - 0
unpackage/dist/dev/app-plus/__uniappquill.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappquillimageresize.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappscan.js


BIN
unpackage/dist/dev/app-plus/__uniappsuccess.png


+ 25 - 0
unpackage/dist/dev/app-plus/__uniappview.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var __UniViewStartTime__ = Date.now();
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title>View</title>
+    <link rel="stylesheet" href="view.css" />
+  </head>
+
+  <body>
+    <div id="app"></div>
+    <script src="__uniappes6.js"></script>
+    <script src="view.umd.min.js"></script>
+    <script src="app-view.js"></script>
+  </body>
+
+</html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 3 - 0
unpackage/dist/dev/app-plus/app-config-service.js


+ 154 - 0
unpackage/dist/dev/app-plus/app-config.js

@@ -0,0 +1,154 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// install a JSONP callback for chunk loading
+/******/ 	function webpackJsonpCallback(data) {
+/******/ 		var chunkIds = data[0];
+/******/ 		var moreModules = data[1];
+/******/ 		var executeModules = data[2];
+/******/
+/******/ 		// add "moreModules" to the modules object,
+/******/ 		// then flag all "chunkIds" as loaded and fire callback
+/******/ 		var moduleId, chunkId, i = 0, resolves = [];
+/******/ 		for(;i < chunkIds.length; i++) {
+/******/ 			chunkId = chunkIds[i];
+/******/ 			if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 				resolves.push(installedChunks[chunkId][0]);
+/******/ 			}
+/******/ 			installedChunks[chunkId] = 0;
+/******/ 		}
+/******/ 		for(moduleId in moreModules) {
+/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ 				modules[moduleId] = moreModules[moduleId];
+/******/ 			}
+/******/ 		}
+/******/ 		if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ 		while(resolves.length) {
+/******/ 			resolves.shift()();
+/******/ 		}
+/******/
+/******/ 		// add entry modules from loaded chunk to deferred list
+/******/ 		deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ 		// run deferred modules when all chunks ready
+/******/ 		return checkDeferredModules();
+/******/ 	};
+/******/ 	function checkDeferredModules() {
+/******/ 		var result;
+/******/ 		for(var i = 0; i < deferredModules.length; i++) {
+/******/ 			var deferredModule = deferredModules[i];
+/******/ 			var fulfilled = true;
+/******/ 			for(var j = 1; j < deferredModule.length; j++) {
+/******/ 				var depId = deferredModule[j];
+/******/ 				if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ 			}
+/******/ 			if(fulfilled) {
+/******/ 				deferredModules.splice(i--, 1);
+/******/ 				result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ 			}
+/******/ 		}
+/******/
+/******/ 		return result;
+/******/ 	}
+/******/
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// object to store loaded and loading chunks
+/******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 	// Promise = chunk loading, 0 = chunk loaded
+/******/ 	var installedChunks = {
+/******/ 		"app-config": 0
+/******/ 	};
+/******/
+/******/ 	var deferredModules = [];
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/ 	var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
+/******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ 	jsonpArray.push = webpackJsonpCallback;
+/******/ 	jsonpArray = jsonpArray.slice();
+/******/ 	for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ 	var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ 	// run deferred modules from other chunks
+/******/ 	checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 9 - 0
unpackage/dist/dev/app-plus/app-service.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1432 - 0
unpackage/dist/dev/app-plus/app-view.js


BIN
unpackage/dist/dev/app-plus/components/bert-suggest/icons/contact.png


BIN
unpackage/dist/dev/app-plus/components/bert-suggest/icons/image.png


BIN
unpackage/dist/dev/app-plus/components/bert-suggest/icons/suggestion.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
unpackage/dist/dev/app-plus/hybrid/html/axios.min.js


+ 147 - 0
unpackage/dist/dev/app-plus/hybrid/html/base64.js

@@ -0,0 +1,147 @@
+(function() {
+	var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+	var base64DecodeChars = new Array(
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
+		52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
+		-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+		15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+		-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+		41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
+	 Window.base64 = {
+		encode: function encode(str) {
+			var out, i, len;
+			var c1, c2, c3;
+			len = str.length;
+			i = 0;
+			out = "";
+			while (i < len) {
+				c1 = str.charCodeAt(i++) & 0xff;
+				if (i == len) {
+					out += base64EncodeChars.charAt(c1 >> 2);
+					out += base64EncodeChars.charAt((c1 & 0x3) << 4);
+					out += "==";
+					break;
+				}
+				c2 = str.charCodeAt(i++);
+				if (i == len) {
+					out += base64EncodeChars.charAt(c1 >> 2);
+					out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
+					out += base64EncodeChars.charAt((c2 & 0xF) << 2);
+					out += "=";
+					break;
+				}
+				c3 = str.charCodeAt(i++);
+				out += base64EncodeChars.charAt(c1 >> 2);
+				out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
+				out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
+				out += base64EncodeChars.charAt(c3 & 0x3F);
+			}
+			return out;
+		},
+		decode: function decode(str) {
+			var c1, c2, c3, c4;
+			var i, len, out;
+			len = str.length;
+			i = 0;
+			out = "";
+			while (i < len) {
+				/* c1 */
+				do {
+					c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
+				} while (i < len && c1 == -1);
+				if (c1 == -1)
+					break;
+				/* c2 */
+				do {
+					c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
+				} while (i < len && c2 == -1);
+				if (c2 == -1)
+					break;
+				out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
+				/* c3 */
+				do {
+					c3 = str.charCodeAt(i++) & 0xff;
+					if (c3 == 61)
+						return out;
+					c3 = base64DecodeChars[c3];
+				} while (i < len && c3 == -1);
+				if (c3 == -1)
+					break;
+				out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
+				/* c4 */
+				do {
+					c4 = str.charCodeAt(i++) & 0xff;
+					if (c4 == 61)
+						return out;
+					c4 = base64DecodeChars[c4];
+				} while (i < len && c4 == -1);
+				if (c4 == -1)
+					break;
+				out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
+			}
+			return out;
+		},
+		utf16to8: function utf16to8(str) {
+			var out, i, len, c;
+			out = "";
+			len = str.length;
+			for (i = 0; i < len; i++) {
+				c = str.charCodeAt(i);
+				if ((c >= 0x0001) && (c <= 0x007F)) {
+					out += str.charAt(i);
+				} else if (c > 0x07FF) {
+					out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
+					out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
+					out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
+				} else {
+					out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
+					out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
+				}
+			}
+			return out;
+		},
+		utf8to16: function utf8to16(str) {
+			var out, i, len, c;
+			var char2, char3;
+			out = "";
+			len = str.length;
+			i = 0;
+			while (i < len) {
+				c = str.charCodeAt(i++);
+				switch (c >> 4) {
+					case 0:
+					case 1:
+					case 2:
+					case 3:
+					case 4:
+					case 5:
+					case 6:
+					case 7:
+						// 0xxxxxxx
+						out += str.charAt(i - 1);
+						break;
+					case 12:
+					case 13:
+						// 110x xxxx 10xx xxxx
+						char2 = str.charCodeAt(i++);
+						out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
+						break;
+					case 14:
+						// 1110 xxxx 10xx xxxx 10xx xxxx
+						char2 = str.charCodeAt(i++);
+						char3 = str.charCodeAt(i++);
+						out += String.fromCharCode(((c & 0x0F) << 12) |
+							((char2 & 0x3F) << 6) |
+							((char3 & 0x3F) << 0));
+						break;
+				}
+			}
+			return out;
+		}
+	}
+console.log('base64')
+console.log(Window.base64)
+	return Window.base64
+})()

+ 273 - 0
unpackage/dist/dev/app-plus/hybrid/html/crypto.js

@@ -0,0 +1,273 @@
+
+
+(function() {
+Window.Crypto = {};
+	var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+
+	// Crypto utilities
+	var util = Window.Crypto.util = {
+
+		// Bit-wise rotate left
+		rotl: function(n, b) {
+			return (n << b) | (n >>> (32 - b));
+		},
+
+		// Bit-wise rotate right
+		rotr: function(n, b) {
+			return (n << (32 - b)) | (n >>> b);
+		},
+
+		// Swap big-endian to little-endian and vice versa
+		endian: function(n) {
+
+			// If number given, swap endian
+			if (n.constructor == Number) {
+				return util.rotl(n, 8) & 0x00FF00FF |
+					util.rotl(n, 24) & 0xFF00FF00;
+			}
+
+			// Else, assume array and swap all items
+			for (var i = 0; i < n.length; i++)
+				n[i] = util.endian(n[i]);
+			return n;
+
+		},
+
+		// Generate an array of any length of random bytes
+		randomBytes: function(n) {
+			for (var bytes = []; n > 0; n--)
+				bytes.push(Math.floor(Math.random() * 256));
+			return bytes;
+		},
+
+		// Convert a string to a byte array
+		stringToBytes: function(str) {
+			var bytes = [];
+			for (var i = 0; i < str.length; i++)
+				bytes.push(str.charCodeAt(i));
+			return bytes;
+		},
+
+		// Convert a byte array to a string
+		bytesToString: function(bytes) {
+			var str = [];
+			for (var i = 0; i < bytes.length; i++)
+				str.push(String.fromCharCode(bytes[i]));
+			return str.join("");
+		},
+
+		// Convert a string to big-endian 32-bit words
+		stringToWords: function(str) {
+			var words = [];
+			for (var c = 0, b = 0; c < str.length; c++, b += 8)
+				words[b >>> 5] |= str.charCodeAt(c) << (24 - b % 32);
+			return words;
+		},
+
+		// Convert a byte array to big-endian 32-bits words
+		bytesToWords: function(bytes) {
+			var words = [];
+			for (var i = 0, b = 0; i < bytes.length; i++, b += 8)
+				words[b >>> 5] |= bytes[i] << (24 - b % 32);
+			return words;
+		},
+
+		// Convert big-endian 32-bit words to a byte array
+		wordsToBytes: function(words) {
+			var bytes = [];
+			for (var b = 0; b < words.length * 32; b += 8)
+				bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
+			return bytes;
+		},
+
+		// Convert a byte array to a hex string
+		bytesToHex: function(bytes) {
+			var hex = [];
+			for (var i = 0; i < bytes.length; i++) {
+				hex.push((bytes[i] >>> 4).toString(16));
+				hex.push((bytes[i] & 0xF).toString(16));
+			}
+			return hex.join("");
+		},
+
+		// Convert a hex string to a byte array
+		hexToBytes: function(hex) {
+			var bytes = [];
+			for (var c = 0; c < hex.length; c += 2)
+				bytes.push(parseInt(hex.substr(c, 2), 16));
+			return bytes;
+		},
+
+		// Convert a byte array to a base-64 string
+		bytesToBase64: function(bytes) {
+
+			// Use browser-native function if it exists
+			// if (typeof btoa == "function") return btoa(util.bytesToString(bytes));
+
+			var base64 = [],
+				overflow;
+
+			for (var i = 0; i < bytes.length; i++) {
+				switch (i % 3) {
+					case 0:
+						base64.push(base64map.charAt(bytes[i] >>> 2));
+						overflow = (bytes[i] & 0x3) << 4;
+						break;
+					case 1:
+						base64.push(base64map.charAt(overflow | (bytes[i] >>> 4)));
+						overflow = (bytes[i] & 0xF) << 2;
+						break;
+					case 2:
+						base64.push(base64map.charAt(overflow | (bytes[i] >>> 6)));
+						base64.push(base64map.charAt(bytes[i] & 0x3F));
+						overflow = -1;
+				}
+			}
+
+			// Encode overflow bits, if there are any
+			if (overflow != undefined && overflow != -1)
+				base64.push(base64map.charAt(overflow));
+
+			// Add padding
+			while (base64.length % 4 != 0) base64.push("=");
+
+			return base64.join("");
+
+		},
+
+		// Convert a base-64 string to a byte array
+		base64ToBytes: function(base64) {
+
+			// Use browser-native function if it exists
+			if (typeof atob == "function") return util.stringToBytes(atob(base64));
+
+			// Remove non-base-64 characters
+			base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
+
+			var bytes = [];
+
+			for (var i = 0; i < base64.length; i++) {
+				switch (i % 4) {
+					case 1:
+						bytes.push((base64map.indexOf(base64.charAt(i - 1)) << 2) |
+							(base64map.indexOf(base64.charAt(i)) >>> 4));
+						break;
+					case 2:
+						bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0xF) << 4) |
+							(base64map.indexOf(base64.charAt(i)) >>> 2));
+						break;
+					case 3:
+						bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0x3) << 6) |
+							(base64map.indexOf(base64.charAt(i))));
+						break;
+				}
+			}
+
+			return bytes;
+
+		}
+
+	};
+
+	Window.Crypto.HMAC = function(hasher, message, key, options) {
+
+		// Allow arbitrary length keys
+		key = key.length > hasher._blocksize * 4 ?
+			hasher(key, {
+				asBytes: true
+			}) :
+			util.stringToBytes(key);
+
+		// XOR keys with pad constants
+		var okey = key,
+			ikey = key.slice(0);
+		for (var i = 0; i < hasher._blocksize * 4; i++) {
+			okey[i] ^= 0x5C;
+			ikey[i] ^= 0x36;
+		}
+
+		var hmacbytes = hasher(util.bytesToString(okey) +
+			hasher(util.bytesToString(ikey) + message, {
+				asString: true
+			}), {
+				asBytes: true
+			});
+		return options && options.asBytes ? hmacbytes :
+			options && options.asString ? util.bytesToString(hmacbytes) :
+			util.bytesToHex(hmacbytes);
+
+	};
+	// The core
+	var SHA1 = Window.Crypto.SHA1 = function (message, options) {
+		var digestbytes = util.wordsToBytes(SHA1._sha1(message));
+		return options && options.asBytes ? digestbytes :
+		       options && options.asString ? util.bytesToString(digestbytes) :
+		       util.bytesToHex(digestbytes);
+	};
+	SHA1._sha1 = function(message) {
+
+		var m = util.stringToWords(message),
+			l = message.length * 8,
+			w = [],
+			H0 = 1732584193,
+			H1 = -271733879,
+			H2 = -1732584194,
+			H3 = 271733878,
+			H4 = -1009589776;
+
+		// Padding
+		m[l >> 5] |= 0x80 << (24 - l % 32);
+		m[((l + 64 >>> 9) << 4) + 15] = l;
+
+		for (var i = 0; i < m.length; i += 16) {
+
+			var a = H0,
+				b = H1,
+				c = H2,
+				d = H3,
+				e = H4;
+
+			for (var j = 0; j < 80; j++) {
+
+				if (j < 16) w[j] = m[i + j];
+				else {
+					var n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16];
+					w[j] = (n << 1) | (n >>> 31);
+				}
+
+				var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + (
+					j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 :
+					j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 :
+					j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 :
+					(H1 ^ H2 ^ H3) - 899497514);
+
+				H4 = H3;
+				H3 = H2;
+				H2 = (H1 << 30) | (H1 >>> 2);
+				H1 = H0;
+				H0 = t;
+
+			}
+
+			H0 += a;
+			H1 += b;
+			H2 += c;
+			H3 += d;
+			H4 += e;
+
+		}
+
+		return [H0, H1, H2, H3, H4];
+
+	};
+
+	// Package private blocksize
+	SHA1._blocksize = 16;
+
+	// Crypto mode namespace
+	Window.Crypto.mode = {};
+	console.log("Window.Crypto")
+	console.log(Window.Crypto)
+	return Window.Crypto;
+})();

BIN
unpackage/dist/dev/app-plus/hybrid/html/img/1.png


BIN
unpackage/dist/dev/app-plus/hybrid/html/img/shipinrenzheng.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/hybrid/html/index.js


+ 182 - 0
unpackage/dist/dev/app-plus/hybrid/html/map.html

@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<meta http-equiv="X-UA-Compatible" content="IE=edge">
+		<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+		<link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
+		<title>运输轨迹</title>
+		<style>
+			* {
+				margin: 0;
+				padding: 0;
+			}
+
+			html,
+			body,
+			#container {
+				height: 100%;
+				width: 100%;
+			}
+			.content{
+				background-color: white;
+				position: absolute;
+				top: 20px;
+				padding: 6px 10px;
+				border-radius: 6px;
+				width: 90%;
+				margin-left: 5%;
+				display: flex;
+				align-items: center;
+			}
+			.start,.end{
+				display: flex;
+			}
+			.distance {
+				background-color: #00000061;
+				position: absolute;
+				bottom: 20px;
+				right: 20px;
+				color: white;
+				padding: 6px 10px;
+				border-radius: 6px;
+			}
+		</style>
+	</head>
+	<body>
+		<div id="container"></div>
+		<div class='content'>
+			<div class='start'>
+				<div id='sendCity'></div>
+				<div id='sendArea'></div>
+			</div>
+			<div>-----------></div>
+			<div class='end'>
+				<div id='unloadCity'></div>
+				<div id='unloadArea'></div>
+			</div>
+		</div>
+		<div id="distance" class='distance'></div>
+		<script
+			src="https://webapi.amap.com/maps?v=2.0&key=211dd6f989e719022aaf47ddb0659c47&plugin=AMap.Scale,AMap.ToolBar,AMap.Geocoder,AMap.Geolocation,Geolocation,AMap.Driving">
+		</script>
+		<script src="https://webapi.amap.com/loca?v=2.0.0&key=211dd6f989e719022aaf47ddb0659c47"></script>
+		<script>
+		var _t = getQueryString("obj"); 
+				var obj = JSON.parse(decodeURI(_t)) ; 
+				console.log('---------------------')
+				console.log(obj)
+				document.getElementById('sendCity').innerHTML = obj.sendCity
+				document.getElementById('sendArea').innerHTML = obj.sendArea
+				document.getElementById('unloadCity').innerHTML = obj.unloadCity
+				document.getElementById('unloadArea').innerHTML = obj.unloadArea
+				
+				
+				
+				function getQueryString(name) {
+					var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+					var r = window.location.search.substr(1).match(reg);
+					if (r != null) return unescape(r[2]); return null;
+				}
+			let starLnglat = [40.243655, 122.114407]
+			console.log(starLnglat)
+			var map = new AMap.Map('container', {
+				zoom: 12,
+				center: [starLnglat[1], starLnglat[0]],
+				resizeEnable: true
+			});
+			map.clearMap();
+			var startIcon = new AMap.Icon({
+				size: new AMap.Size(25, 25),
+				image: './img/1.png',
+				imageSize: new AMap.Size(25, 25),
+			});
+			/*
+			 * 驾车策略 
+			 * AMap.DrivingPolicy.LEAST_TIME           最快捷模式
+			 * AMap.DrivingPolicy.LEAST_FEE            最经济模式
+			 * AMap.DrivingPolicy.LEAST_DISTANCE       最短距离模式
+			 * AMap.DrivingPolicy.REAL_TRAFFIC         考虑实时路况
+			 */
+			var drivingOption = {
+				policy: AMap.DrivingPolicy
+					.LEAST_TIME, // 其它policy参数请参考 https://lbs.amap.com/api/javascript-api/reference/route-search#m_DrivingPolicy
+				ferry: 1, // 是否可以使用轮渡
+				map: map,
+				hideMarkers: false, // 设置隐藏路径规划的起始点图标
+				autoFitView: true
+			}
+			var dis = getDistance(122.114407, 40.243655, 122.114407, 42.243655)
+			document.getElementById("distance").innerHTML = dis
+			console.log(dis)
+			render(122.114407, 42.243655)
+
+			function getDistance(lat1, lng1, lat2, lng2) {
+				function Rad(d) {
+					return d * Math.PI / 180.0;
+				}
+				if (!lat1 || !lng1) {
+					return '';
+				}
+				// lat1用户的纬度
+				// lng1用户的经度
+				// lat2商家的纬度
+				// lng2商家的经度
+				let radLat1 = Rad(lat1);
+				let radLat2 = Rad(lat2);
+				let a = radLat1 - radLat2;
+				let b = Rad(lng1) - Rad(lng2);
+				let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) *
+					Math.pow(
+						Math.sin(b / 2), 2)));
+				s = s * 6378.137;
+				s = Math.round(s * 10000) / 10000;
+				s = '距离' + s.toFixed(2) + '公里' //保留两位小数
+				return s
+			}
+
+			function render(endLng, endLat) {
+				// 构造路线导航类
+				var driving = new AMap.Driving(drivingOption)
+				// 根据起终点经纬度规划驾车导航路线
+				driving.search(new AMap.LngLat(starLnglat[1], starLnglat[0]), new AMap.LngLat(endLng, endLat), function(status,
+					result) {
+					if (status === 'complete') {
+						console.log('绘制驾车路线完成')
+					} else {
+						console.log('获取驾车数据失败:' + result)
+					}
+				});
+				// var capitals = [{
+				// 	center: [116.42, 39.93123],
+				// }, {
+				// 	center: [116.41, 39.92132],
+				// }, {
+				// 	center: [116.40, 39.91122],
+				// }];
+				var capitals = [];
+				var facilities = [];
+				for (var i = 0; i < capitals.length; i++) {
+					var marker = new AMap.Marker({
+						position: new AMap.LngLat(capitals[i].center[0], capitals[i].center[1]),
+						offset: new AMap.Pixel(-10, -10),
+						icon: startIcon,
+					});
+					facilities.push(marker);
+				}
+				map.add(facilities);
+			}
+			// map.on('click', clickHandler)
+
+			function clickHandler(e) {
+				map.clearMap();
+				var endLng = e.lnglat.getLng();
+				var endLat = e.lnglat.getLat();
+				render(endLng, endLat)
+			}
+		</script>
+
+		<script>
+		</script>
+	</body>
+</html>

+ 37 - 0
unpackage/dist/dev/app-plus/hybrid/html/play.html

@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta name="viewport"
+			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
+		<title>视频认证</title>
+		<style>
+			body {
+				margin: 0;
+				background: #F5F6FA;
+			}
+
+			
+		</style>
+	</head>
+	<body>
+		<div id='app'>
+			<video width="320" height="240" controls id='srcSource'>
+			</video>
+		</div>
+	</body>
+	<script type="text/javascript" src="https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/jquery.min.js"></script>
+	<script type="text/javascript">
+		var src = getUrlParam("src")
+		function getUrlParam(name) {
+			var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
+			var r = window.location.search.substr(1).match(reg); //匹配目标参数
+			if (r != null) return unescape(r[2]);
+			return null; //返回参数值
+		}
+			console.log("src")
+		console.log(src)
+		$('#srcSource').attr("src",src)
+	</script>
+
+</html>

+ 428 - 0
unpackage/dist/dev/app-plus/hybrid/html/video.html

@@ -0,0 +1,428 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta name="viewport"
+			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
+		<title>视频认证</title>
+		<style>
+			body {
+				margin: 0;
+				background: #F5F6FA;
+			}
+
+			.content {
+				background: #F5F6FA;
+				height: 100vh;
+				position: relative;
+			}
+
+			.row {
+				display: flex;
+				justify-content: center;
+				padding-top: 50px;
+
+			}
+
+			.img-video {
+				position: relative;
+				border-radius: 280px;
+				width: 250px;
+				height: 250px;
+				overflow: hidden;
+			}
+
+			.row2 {
+				display: flex;
+				font-size: 20px;
+				justify-content: center;
+				margin-top: 20px;
+			}
+
+			.verify-btn {
+				background: #2772FB;
+				font-size: 20px;
+				padding: 10px 0;
+				width: 70%;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				border-radius: 50px;
+				color: white;
+
+			}
+
+			.btn {
+				position: absolute;
+				bottom: 0;
+				background: white;
+				width: 100%;
+				display: flex;
+				justify-content: center;
+				padding: 40px 0;
+			}
+
+			.img {
+				position: absolute;
+				top: 0;
+				bottom: 0;
+				width: 100%;
+				width: 564px;
+				height: 564px;
+				right: 0;
+				left: 0;
+				margin: auto;
+			}
+
+			.video-content {
+				position: absolute;
+				top: 0;
+				bottom: 0;
+				width: 100%;
+				right: 0;
+				left: 0;
+				margin: auto;
+			}
+
+			.video {
+				width: calc(100%);
+				background: #F5F6FA;
+			}
+
+			.video-btn {
+				width: 100%;
+				display: flex;
+				justify-content: center;
+			}
+			.progressBar {
+				width: 50%;
+				height: 25px;
+				display: block;
+				top: 0;
+				left: 0;
+				bottom: 0;
+				right: 0;
+				margin: auto;
+				padding: 10px 10px 10px 10px;
+				position: absolute;
+				z-index: 2001;
+				background: rgb(102, 102, 102);
+				color: white;
+				border-radius: 5px;
+			}
+			.text{
+				padding: 20px;
+			}
+		</style>
+	</head>
+	<body>
+		<div id='app'>
+			<div class='content'>
+				<!-- <div id="progressBar" class="progressBar">地图数据加载中...</div> -->
+				<div class='row'>
+					<div class='img-video'>
+						<!-- <img src="./img/shipinrenzheng.png" alt="" class='img'> -->
+						<div class="video-content">
+							<!--    人脸检测-->
+							<div class="video-cover"></div>
+							<video :src="url" ref="videoRef" autoplay playsinline x5-video-player-type="h5"
+								class="video"></video>
+						</div>
+					</div>
+				</div>
+				<!-- 	<div class='row2' v-show="!showVideo">
+					请打开摄像头 并阅读提示文字
+				</div> -->
+				<div class='row2'>
+					请将头像放于圆圈内,并阅读以下文字
+				</div>
+				<div class='row2 text'>
+					网络客服过段时间浪费多少级范德萨快逻辑范德萨拉丝机多亏了房价按时付款了金坷垃所肩负的看离开静安寺了发动机as在考虑家双方都会计分录卡死范德萨拉使肌肤抵抗力
+				</div>
+				<div class='btn'>
+					<!-- <div class="verify-btn" @click="getCamera" v-show="!showVideo">打开摄像头</div> -->
+					<div class='video-btn'>
+						<div class="verify-btn" @click="saveVideo" v-if='!isAlreadyRecord'>开始录制</div>
+						<div class="verify-btn" @click="saveVideo" v-if='isAlreadyRecord' data-action="navigateTo">结束录制
+						</div>
+						<!-- <button class="video-close" @click="closeVideo">×</button>
+						<button class="video-save" @click="saveVideo">
+							{{ isAlreadyRecord ? '结束录制(' + count + 's)' : '开始录制' }}</button> -->
+					</div>
+				</div>
+				<!-- <video ref="videob" controls="" name="media" width="100%" height="100"></video> -->
+			</div>
+
+
+		</div>
+	</body>
+	<script type="text/javascript" src="vue.min.js"></script>
+	<script type="text/javascript" src="https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/jquery.min.js"></script>
+	<script type="text/javascript" src="base64.js"></script>
+	<script type="text/javascript" src="crypto.js"></script>
+	<script type="text/javascript" src="index.js"></script>
+	<script type="text/javascript">
+		document.addEventListener('UniAppJSBridgeReady', function() {
+			uni.webView.getEnv(function(res) {
+				console.log('当前环境:' + JSON.stringify(res));
+			});
+			// 
+			new Vue({
+		 	el: '#app',
+				data: {
+					url: '',
+					// showVideo: true,
+					mediaRecorder: null,
+					MediaStreamTrack: null,
+					isAlreadyRecord: false,
+					count: 8,
+					countTimer: null,
+					recordedBlobs: [],
+					compId: ''
+				},
+				beforeDestroy() {
+					this.MediaStreamTrack && this.MediaStreamTrack.stop()
+					this.countTimer && clearTimeout(this.countTimer)
+				},
+				computed: {},
+
+				mounted() {
+					this.getCamera()
+				},
+				watch: {},
+				methods: {
+					getPolicyBase64() {
+						let date = new Date();
+						date.setHours(date.getHours() + 87600);
+						let srcT = date.toISOString();
+		 			const policyText = {
+							"expiration": srcT, //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了 
+							"conditions": [
+								["content-length-range", 0, 100 * 1024 * 1024] // 设置上传文件的大小限制,5mb
+							]
+						};
+
+						const policyBase64 = Window.base64.encode(JSON.stringify(policyText));
+						console.log(policyBase64);
+						return policyBase64;
+					},
+					getSignature(policyBase64) {
+						const accesskey = 'FpClTp4OVrRRtHEfi3lBOWUoLxKieW';
+						// console.log('video.js')
+						// console.log(Crypto)
+						const bytes = Window.Crypto.HMAC(Window.Crypto.SHA1, policyBase64, accesskey, {
+							asBytes: true
+						})
+						const signature = Window.Crypto.util.bytesToBase64(bytes);
+						// console.log(signature);
+		 			return signature;
+					},
+					async uploadFile(file) {
+						var formdata = new FormData()
+						const policyBase64 = this.getPolicyBase64();
+						const signature = this.getSignature(policyBase64); //获取签名
+						const urlStr = "https://taohaoliang.oss-cn-beijing.aliyuncs.com/"
+						const fileName = "appData/video" + new Date().getTime() + Math.floor(Math.random() *
+							150) + '.mp4'
+						formdata.append("key", fileName)
+						formdata.append("policy", policyBase64)
+						formdata.append("OSSAccessKeyId", 'LTAI4G9c14PgKvM23WZ9zrpc')
+						formdata.append("signature", signature)
+						formdata.append("success_action_status", '200')
+						formdata.append("file", file)
+						console.log('file.name')
+						$.ajax({
+							type: "POST",
+							data: formdata,
+							contentType: false,
+							processData: false,
+							url: urlStr,
+							success: function(result) {
+		 					console.log(urlStr + fileName)
+								uni.webView.navigateTo({
+									url: '/pages/mine/company/addcompany?videoSrc=' +
+										urlStr + fileName
+								})
+
+							},
+
+							//请求失败,包含具体的错误信息
+							error: function(e) {
+								console.log(e);
+								console.log(e.status);
+								console.log(e.responseText);
+							}
+						});
+					},
+					// 调用摄像头 开始录制
+					getCamera() {
+						// 注意本例需要在HTTPS协议网站中运行,新版本Chrome中getUserMedia接口在http下不再支持。
+						let constraints = {
+		 				audio: true,
+							video: {
+								facingMode: 'user' // 优先调前置摄像头
+							}
+						}
+						console.log('--------------')
+						console.log(navigator)
+						// 老的浏览器可能根本没有实现 mediaDevices,所以我们可以先设置一个空的对象
+						if (navigator.mediaDevices === undefined) {
+							navigator.mediaDevices = {}
+						}
+						// 一些浏览器部分支持 mediaDevices。我们不能直接给对象设置 getUserMedia
+						// 因为这样可能会覆盖已有的属性。这里我们只会在没有getUserMedia属性的时候添加它。
+						if (navigator.mediaDevices.getUserMedia === undefined) {
+							navigator.mediaDevices.getUserMedia = function(constraints) {
+								// 首先,如果有getUserMedia的话,就获得它
+								//   var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia
+								var getUserMedia = navigator.getUserMedia ||
+		 						navigator.webkitGetUserMedia ||
+									navigator.mozGetUserMedia
+		 					// 一些浏览器根本没实现它 - 那么就返回一个error到promise的reject来保持一个统一的接口
+								if (!getUserMedia) {
+									this.$messageBox.alert('该浏览器不支持getUserMedia,请使用其他浏览器')
+									return Promise.reject(new Error(
+										'getUserMedia is not implemented in this browser'))
+								}
+								// 否则,为老的navigator.getUserMedia方法包裹一个Promise
+								return new Promise(function(resolve, reject) {
+									getUserMedia.call(navigator, constraints, resolve, reject)
+								})
+							}
+						}
+						navigator.mediaDevices.getUserMedia(constraints)
+							.then((stream) => {
+								this.MediaStreamTrack = typeof stream.stop === 'function' ? stream :
+									stream
+									.getTracks()[0]
+								console.log(stream)
+								console.log(this.MediaStreamTrack)
+								// 显示录制框
+								this.showVideo = true
+								this.isAlreadyRecord = false
+								let winURL = window.URL || window.webkitURL
+								if ('srcObject' in this.$refs.videoRef) {
+									this.$refs.videoRef.srcObject = stream
+								} else {
+									this.$refs.videoRef.src = winURL.createObjectURL(stream)
+								}
+								console.log(this.$refs.videoRef)
+								this.$refs.videoRef.onloadedmetadata = e => {
+									// 播放视频
+									this.$refs.videoRef.play()
+								}
+								let options = {
+									videoBitsPerSecond: 2500000
+		 					}
+								this.mediaRecorder = new MediaRecorder(stream, options)
+							})
+							.catch((err) => {
+								console.log(err)
+							console.log('摄像头开启失败,请检查摄像头是否授权或是否可用!')
+							})
+							$("#progressBar").hide();
+					},
+					// 关闭活体检测
+					closeVideo() {
+						this.recordedBlobs = ''
+						this.isAlreadyRecord = false
+						this.MediaStreamTrack && this.MediaStreamTrack.stop()
+						this.countTimer && clearTimeout(this.countTimer)
+						this.$router.go(0)
+					},
+					// 录制倒计时
+					countDown() {
+						let that = this
+						let sendTime = Math.round(+new Date() / 1000)
+		 			return function walk() {
+							that.countTimer = setTimeout(function() {
+								that.countTimer && clearTimeout(that.countTimer)
+								let diff = sendTime + 8 - Math.round(+new Date() / 1000)
+								if (diff > 0) {
+									that.count = diff
+									walk()
+								} else {
+									console.log('倒计时结束')
+									// this.showVideo = false
+									console.log(this.url)
+									console.log(this.MediaStreamTrack)
+								}
+							}, 1000)
+						}
+					},
+					dataURLtoBlob(dataurl) {
+
+						var arr = dataurl.split(","),
+
+							mime = arr[0].match(/:(.*?);/)[1],
+
+							bstr = atob(arr[1]),
+
+							n = bstr.length,
+
+							u8arr = new Uint8Array(n);
+
+						while (n--) {
+
+							u8arr[n] = bstr.charCodeAt(n);
+
+						}
+
+						return this.blobToFile(new Blob([u8arr], {
+							type: mime
+						}), {
+							type: mime
+						});
+
+					},
+					blobToFile(theBlob, type) {
+						theBlob.lastModifiedDate = new Date();
+						return new File([theBlob], `${new Date().getTime()}.mp4`, type);
+
+					},
+					// 保存录制视频
+					saveVideo() {
+						let that = this
+						if (this.isAlreadyRecord) {
+							this.countTimer && clearTimeout(this.countTimer)
+							// this.showVideo = false
+							//当录制的数据可用时
+							this.mediaRecorder.ondataavailable = (e) => {
+								if (e.data && e.data.size > 0) {
+									this.recordedBlobs.push(e.data)
+								}
+							}
+							this.mediaRecorder.stop()
+							setTimeout(() => {
+								console.log("this.recordedBlobs-------------------------")
+		 					var blob = new Blob(this.recordedBlobs, {
+									type: 'video/mp4'
+		 					})
+								this.isAlreadyRecord = false
+								this.MediaStreamTrack && this.MediaStreamTrack.stop()
+								var reader = new FileReader();
+								reader.readAsDataURL(blob)
+								reader.onload = (e) => {
+									// this.$refs.videob.src = reader.result
+									let a = this.dataURLtoBlob(reader.result)
+									console.log(a)
+									this.uploadFile(a)
+								}
+							}, 100)
+						} else {
+							this.count = 8
+							this.isAlreadyRecord = true
+							this.mediaRecorder.start(8000)
+							this.countDown()()
+						}
+					},
+					changeVideo(e) {
+		 			let file = this.$refs.videoFile.files
+						console.log(file)
+					}
+				}
+			})
+		});
+	</script>
+
+</html>

+ 0 - 0
unpackage/dist/dev/app-plus/hybrid/html/video.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 5 - 0
unpackage/dist/dev/app-plus/hybrid/html/vue.min.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
unpackage/dist/dev/app-plus/manifest.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1972 - 0
unpackage/dist/dev/app-plus/pages/mine/camera/idcard/idcard.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1972 - 0
unpackage/dist/dev/app-plus/pages/mine/camera/video/video.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1972 - 0
unpackage/dist/dev/app-plus/pages/mine/company/companyvideo.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 96 - 0
unpackage/dist/dev/app-plus/pages/order/map.js


BIN
unpackage/dist/dev/app-plus/static/ITkoala-amap/amap.png


BIN
unpackage/dist/dev/app-plus/static/ITkoala-amap/close.png


BIN
unpackage/dist/dev/app-plus/static/ITkoala-amap/selectedStart.png


BIN
unpackage/dist/dev/app-plus/static/ITkoala-amap/sharp.png


BIN
unpackage/dist/dev/app-plus/static/ITkoala-amap/start.png


BIN
unpackage/dist/dev/app-plus/static/banner@2x.png


+ 221 - 0
unpackage/dist/dev/app-plus/static/css/common.scss

@@ -0,0 +1,221 @@
+// 全局公共样式
+.content{
+	background:#F7F8FA;
+	// padding:$uni-spacing-row-base;
+	overflow: hidden;
+	position: relative;
+	
+}
+// 常用公共样式
+// 布局相关 start
+.flex{
+	display: flex;
+}
+.align-center{
+	align-items: center;
+}
+.inline-block{
+	display: inline-block;
+}
+.s-row{
+	display: flex;
+	flex-direction: column;
+}
+
+.flex-center{
+	justify-content: center;
+	align-items: center;
+}
+.flex-space-between{
+	justify-content: space-between;
+	align-items: center;
+}
+.flex-space-around{
+	justify-content: space-around;
+	align-items: center;
+}
+.flex-space-evenly{
+	justify-content: space-evenly;
+	align-items: center;
+}
+.flex-end{
+	    justify-content: flex-end;
+}
+.flex-start{
+	    justify-content: flex-start;
+}
+.m-top20{
+	margin-top: 20rpx;
+}
+.paddingr20{
+	padding:20rpx;
+}
+.paddingr35{
+	padding:35rpx;
+}
+.lr-paddingr20{
+	padding: 0 20rpx;
+}
+.fixed{
+	position: fixed;
+}
+.row-between{
+	display: flex;
+	justify-content: space-between;
+}
+.content-other{
+	background: white;
+	padding:10rpx 20rpx;
+	border-radius: 10rpx;
+}
+.width100{
+	width: 100%;
+}
+.mr20{
+	margin-right: 20rpx;
+}
+.ml20{
+	margin-left: 20rpx;
+}
+.msx20{
+	margin:20rpx 0;
+}
+.mt20{
+	margin-top:20rpx;
+}
+.text-align-right{
+	text-align: right;
+}
+// 布局相关 end
+
+// 边线相关start
+.border-bottom{
+	border-bottom: 1px solid #EEEEEE;
+	padding-bottom: 10rpx;
+}
+// 边线相关end
+
+
+// 颜色相关start
+.red{
+	background: red;
+}
+.yellow{
+	background:yellow;
+}
+.btn-color{
+	background: #2772FB!important;
+	color: white!important;
+}
+.h-color{
+	color: #FE6300;
+}
+.number-color{
+	color:#2772FB;
+}
+// 颜色相关end
+// 文字相关start
+.level2-title{
+font-size: 32rpx;
+font-weight: 700;
+color: #000000;
+}
+.fontsize-24{
+	font-size: 24rpx;
+}
+.fontsize-25{
+	font-size: 25rpx;
+}
+.fontsize-26{
+	font-size: 26rpx;
+}
+.fontsize-28{
+	font-size: 28rpx;
+}
+.fontsize-36{
+	font-size: 36rpx!important;
+}
+.fontsize-46{
+	font-size: 46rpx;
+}
+.gray{
+	color: #BBBBBB;
+}
+.fontweight-500{
+	font-weight: 500;
+}
+.point{
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.row-left-text{
+	font-size:28rpx;
+	// color: #8F8F8F;
+}
+.row-right-text{
+	font-size:28rpx;
+}
+.ytg-color{
+	color: #0CBB6B;
+}
+.shz-color{
+	color:#FE6300;
+}
+.wtg-color{
+	color:#EF4034;
+}
+.ygq-color{
+	color: #878787;
+}
+// 文字相关end
+// 边线相关start
+.noborder{
+	border-bottom: none!important;
+}
+// 边线相关start
+
+// other
+.ssx{
+	width: 40rpx;
+	height: 40rpx;
+	background: linear-gradient(180deg, #C8D7E5 0%, #AFC1D6 100%);
+	font-size: 26rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #FFFFFF;
+	border-radius: 50%;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	margin-right: 10rpx;
+}
+.row-tips{
+font-size: 26rpx;
+font-weight: 400;
+color: #FE7F1A;
+background: #FFEEE1;
+padding: 4rpx 11rpx;
+border-radius: 4px;
+}
+.xj-image{
+	width:46rpx;
+	height: 46rpx;
+}
+/deep/.u-modal__content__text{
+	text-align: center;
+}
+.preview-img{
+	margin-top: 20rpx;
+	width: 212rpx;
+	height: 212rpx;
+	border-radius: 10rpx;
+}
+.uview-upload{
+	margin-top: 20rpx;
+}
+.card-img{
+	width: 100%;
+	height: 440rpx;
+	
+}

+ 20 - 0
unpackage/dist/dev/app-plus/static/css/font.css

@@ -0,0 +1,20 @@
+@font-face {
+	font-family: "PingFang SC";
+	src: url('https://taohaoliang.oss-accelerate.aliyuncs.com/app/tmp/PingFang-Bold.ttf'),
+/* 		url('https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/tmp/PingFang-ExtraLight.ttf'),
+		url('https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/tmp/PingFang-Heavy.ttf'),
+		url('https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/tmp/PingFang-Light.ttf'), */
+		url('https://taohaoliang.oss-accelerate.aliyuncs.com/app/tmp/PingFang-Medium.ttf'),
+		url('https://taohaoliang.oss-accelerate.aliyuncs.com/app/tmp/PingFang-Regular.ttf');
+		font-weight: normal;
+	font-style: normal;
+}
+@font-face {
+	font-family: "DINPro";
+	src:url('https://taohaoliang.oss-accelerate.aliyuncs.com/app/tmp/DINPro-Bold.ttf'),
+		/* url('https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/tmp/DINPro-Light.ttf'), */
+		url('https://taohaoliang.oss-accelerate.aliyuncs.com/app/tmp/DINPro-Medium.ttf');
+		font-weight: normal;
+	font-style: normal;
+}
+

BIN
unpackage/dist/dev/app-plus/static/icon_delete.png


BIN
unpackage/dist/dev/app-plus/static/icon_down.png


BIN
unpackage/dist/dev/app-plus/static/iconfont.ttf


BIN
unpackage/dist/dev/app-plus/static/images/carSource/exchange.png


BIN
unpackage/dist/dev/app-plus/static/images/carSource/yaoqing.png


BIN
unpackage/dist/dev/app-plus/static/images/common/bz@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/cy@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/dingdan@2x(1).png


BIN
unpackage/dist/dev/app-plus/static/images/common/dingdan@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/huoyuan@2x(1).png


BIN
unpackage/dist/dev/app-plus/static/images/common/huoyuan@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/iconmy@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/jt.png


BIN
unpackage/dist/dev/app-plus/static/images/common/mesicon@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/my@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/quxiao@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/sh.png


BIN
unpackage/dist/dev/app-plus/static/images/common/sx.png


BIN
unpackage/dist/dev/app-plus/static/images/common/tg.png


BIN
unpackage/dist/dev/app-plus/static/images/common/tianjiazhaopian@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/top@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/common/wtg.png


BIN
unpackage/dist/dev/app-plus/static/images/common/xiaoxi@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/Mask@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/banner@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/change.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/jt.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/jx.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/jxbf.png


BIN
unpackage/dist/dev/app-plus/static/images/goodSource/msgicon@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/help/banner@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/help/tu1@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/help/zy.png


BIN
unpackage/dist/dev/app-plus/static/images/login/bg.png


BIN
unpackage/dist/dev/app-plus/static/images/login/bg@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/bg@3x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/bg_slices/bg.png


BIN
unpackage/dist/dev/app-plus/static/images/login/bg_slices/bg@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/bg_slices/bg@3x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/duihao2.png


BIN
unpackage/dist/dev/app-plus/static/images/login/duihao2@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/duihao2@3x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/guanbi@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/logo.png


BIN
unpackage/dist/dev/app-plus/static/images/login/logo@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/login/logo@3x.png


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است