Ver código fonte

添加我的,我的公司,货主认证页面

gjy 3 anos atrás
pai
commit
9573bf9486
78 arquivos alterados com 5182 adições e 364 exclusões
  1. 22 0
      App.vue
  2. 51 25
      common/helper.js
  3. BIN
      components/bert-suggest/icons/bg@2x (1).png
  4. BIN
      components/bert-suggest/icons/contact.png
  5. BIN
      components/bert-suggest/icons/image.png
  6. BIN
      components/bert-suggest/icons/suggestion.png
  7. 121 0
      components/bert-suggest/suggest.vue
  8. 213 0
      components/luo-navBar/components/luo-navBar/luo-navBar.vue
  9. 75 0
      components/luo-navBar/components/luo-navBar/新建文本文档.md
  10. 132 0
      components/luo-navBar/components/uni-icons/icons.js
  11. 10 0
      components/luo-navBar/components/uni-icons/uni-icons.vue
  12. 1 1
      components/ossutil/uploadFile.js
  13. 431 0
      components/uni-card/uni-card.vue
  14. 132 15
      pages.json
  15. 324 0
      pages/mine/cargoowner/addEnerprise.vue
  16. 116 13
      pages/mine/cargoowner/cargoowner.vue
  17. 427 117
      pages/mine/cargoowner/editpersonalinformation.vue
  18. 159 0
      pages/mine/cargoowner/selectcompany.vue
  19. 383 0
      pages/mine/company/addcompany.vue
  20. 88 0
      pages/mine/company/addcompanythree.vue
  21. 279 0
      pages/mine/company/addcompanytwo.vue
  22. 73 0
      pages/mine/company/companyvideo.vue
  23. 367 0
      pages/mine/company/editcompany.vue
  24. 88 0
      pages/mine/company/editcompanythree.vue
  25. 279 0
      pages/mine/company/editcompanytwo.vue
  26. 69 0
      pages/mine/company/editcompanyvideo.vue
  27. 168 0
      pages/mine/company/index.vue
  28. 7 7
      pages/mine/driverCertification.vue
  29. 3 3
      pages/mine/driverCertificationNext.vue
  30. 53 11
      pages/mine/index.vue
  31. 2 2
      pages/mine/manageBankCards/addBankCard.vue
  32. 3 0
      pages/mine/manageVehicles/index.vue
  33. 61 68
      pages/mine/set.vue
  34. 139 0
      pages/mine/settings/editAvatar.vue
  35. 208 0
      pages/mine/settings/editPassword.vue
  36. 161 0
      pages/mine/settings/editPhone.vue
  37. 31 0
      pages/mine/settings/feedback.vue
  38. 160 58
      pages/public/login.vue
  39. 199 0
      pages/public/loginOther.vue
  40. 117 42
      pages/public/register.vue
  41. 11 0
      static/css/common.scss
  42. BIN
      static/images/common/bz@2x.png
  43. BIN
      static/images/common/cy@2x.png
  44. BIN
      static/images/common/dingdan@2x(1).png
  45. BIN
      static/images/common/dingdan@2x.png
  46. BIN
      static/images/common/huoyuan@2x(1).png
  47. BIN
      static/images/common/huoyuan@2x.png
  48. BIN
      static/images/common/iconmy@2x.png
  49. BIN
      static/images/common/jt.png
  50. BIN
      static/images/common/mesicon@2x.png
  51. BIN
      static/images/common/my@2x.png
  52. BIN
      static/images/common/quxiao@2x.png
  53. BIN
      static/images/common/tianjiazhaopian@2x.png
  54. BIN
      static/images/common/top@2x.png
  55. BIN
      static/images/common/xiaoxi@2x.png
  56. BIN
      static/mine/avatar1.png
  57. BIN
      static/mine/company/Mask@3x.png
  58. BIN
      static/mine/company/del.png
  59. BIN
      static/mine/company/edit.png
  60. BIN
      static/mine/company/shipinrenzheng.png
  61. BIN
      static/mine/company/tianjiazhaopian@3x.png
  62. BIN
      static/mine/company/zanwu.png
  63. BIN
      static/mine/cy.png
  64. BIN
      static/mine/duihao@2x.png
  65. BIN
      static/mine/gh.png
  66. BIN
      static/mine/huozhu.png
  67. BIN
      static/mine/huozhurenzheng/Mask@3x.png
  68. BIN
      static/mine/huozhurenzheng/bg2.png
  69. BIN
      static/mine/ic_shanchuan@2x.png
  70. BIN
      static/mine/set/setavatar.png
  71. BIN
      static/mine/wxz.png
  72. BIN
      static/mine/yhkzm.png
  73. BIN
      static/mine/zm.png
  74. 1 1
      store/index.js
  75. 1 0
      uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
  76. 1 0
      uni_modules/uview-ui/components/u-popup/u-popup.vue
  77. 11 0
      util/base.js
  78. 5 1
      util/request.js

+ 22 - 0
App.vue

@@ -7,6 +7,7 @@
 	import {
 		mapMutations
 	} from 'vuex';
+	import Vue from 'vue'
 	import * as config from '@/config'
 	import appUpdate from 'common/appUpdate.js'
 	import app_push from './components/APPPush/app_push.js'
@@ -15,6 +16,27 @@
 			...mapMutations(['login']),
 		},
 		onLaunch: function() {
+			uni.getSystemInfo({
+			        success:function(e){
+			            Vue.prototype.statusBar = e.statusBarHeight
+			            // #ifndef MP
+			            if(e.platform == 'android') {
+			                Vue.prototype.customBar = e.statusBarHeight + 50
+			            }else {
+			                Vue.prototype.customBar = e.statusBarHeight + 45
+			            }
+			            // #endif
+			            
+			            // #ifdef MP-WEIXIN
+			            let custom = wx.getMenuButtonBoundingClientRect()
+			            Vue.prototype.customBar = custom.bottom + custom.top - e.statusBarHeight
+			            // #endif
+			            
+			            // #ifdef MP-ALIPAY
+			            Vue.prototype.customBar = e.statusBarHeight + e.titleBarHeight
+			            // #endif
+			        }
+			    })
 			uni.onTabBarMidButtonTap(()=>{
 				uni.navigateTo({
 					url: '/pages/card/card'

+ 51 - 25
common/helper.js

@@ -8,34 +8,59 @@ const chooseImage = {
 }
 const imgType = '请选择图片来源'
 const imgTypeList = [{
-			name: '相册',
-		},
-		{
-			name: '拍照',
-		}
+		name: '相册',
+	},
+	{
+		name: '拍照',
+	}
+]
+const makeValidityPeriod = function(type,endyear) {
+	//获取当前年
+	let nowDate = new Date();
+	let year = nowDate.getFullYear()
+	let _list = []
+	let _list1 = []
+	// let _list2 = ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]
+	let _list2 = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]
+	let _list3 = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14",
+		"15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
+		"31"
 	]
-	const getListByUserId = function() {
-		let baseUrlNew = config.def().baseUrlNew
-		var userInfo = uni.getStorageSync("userInfo")
-		console.log("------", userInfo)
-		if (userInfo) {
-			uni.request({
-				url: baseUrlNew + '/roleMenu/query/getListByUserId',
-				data: {
-					userId: userInfo.id ? userInfo.id : userInfo.data.id
-				},
-				method: 'GET',
-				success: (res) => {
-					if (res.statusCode === 200) {
-						uni.setStorageSync("jurisdiction", res.data.data)
-						let list = getUserAllRoles(res.data.data);
-						uni.setStorageSync("rolesList", list)
+	let _ValidityPeriod = []
+	for (let i = 0; i < endyear; i++) {
+		_list1.push(year + i)
+	}
+	if (type == 0) {
+		_list1.unshift('长期')
+		_list2.unshift('')
+		_list3.unshift('')
+	}
+	_list.push(_list1, _list2, _list3)
+	return _list
+}
+
+const getListByUserId = function() {
+	let baseUrlNew = config.def().baseUrlNew
+	var userInfo = uni.getStorageSync("userInfo")
+	console.log("------", userInfo)
+	if (userInfo) {
+		uni.request({
+			url: baseUrlNew + '/roleMenu/query/getListByUserId',
+			data: {
+				userId: userInfo.id ? userInfo.id : userInfo.data.id
+			},
+			method: 'GET',
+			success: (res) => {
+				if (res.statusCode === 200) {
+					uni.setStorageSync("jurisdiction", res.data.data)
+					let list = getUserAllRoles(res.data.data);
+					uni.setStorageSync("rolesList", list)
 
-					}
 				}
-			})
-		}
+			}
+		})
 	}
+}
 const getUserAllRoles = (item) => {
 	console.log(item)
 
@@ -82,5 +107,6 @@ export default {
 	contactCustomerService,
 	chooseImage,
 	imgType,
-	imgTypeList
+	imgTypeList,
+	makeValidityPeriod
 }

BIN
components/bert-suggest/icons/bg@2x (1).png


BIN
components/bert-suggest/icons/contact.png


BIN
components/bert-suggest/icons/image.png


BIN
components/bert-suggest/icons/suggestion.png


+ 121 - 0
components/bert-suggest/suggest.vue

@@ -0,0 +1,121 @@
+<template>
+	<view>
+		<view style='background:#fff;margin:20px 10px 10px;border-radius:10px;'>
+			<uni-card class="box" :isFull="true" title="反馈意见" >
+				<textarea v-model="data.content" placeholder="您的反馈对我们非常重要,请在此输入."></textarea>
+				<view style='position:absolute;right:22px;bottom:16px;font-size:13px;'>{{data.content.length}}/150个字</view>
+			</uni-card>
+			<uni-card class="box contact" :isFull="true" title="联系方式" >
+				<input v-model="data.contact" placeholder="手机 QQ或e-mail,方便我们联系您" />
+			</uni-card>
+		</view>
+		
+		<button class="submit-btn" @click="submit">提交</button>
+	</view>
+</template>
+
+<script>
+	import uniCard from '@/components/uni-card/uni-card.vue';
+	export default {
+		components:{
+			uniCard
+		},
+		data() {
+			return {
+				data: {
+					imgList: [],
+					content: "",
+					contact: ""
+				},
+				contentIcon: require("./icons/suggestion.png"),
+				contactIcon: require("./icons/contact.png"),
+				imgListIcon: require("./icons/image.png")
+			}
+		},
+		methods: {
+			chooseImage() {
+				let _self = this;
+				uni.chooseImage({
+					sizeType: ['compressed', 'original'],
+					sourceType: ['album', 'camera'],
+					success: function(res) {
+						_self.data.imgList = _self.data.imgList.concat(res.tempFiles)
+					},
+					fail: function(err) {
+						console.log(err);
+					}
+				});
+			},
+			removeImage(index) {
+				this.data.imgList.splice(index, 1)
+			},
+			previewImage(index) {
+				uni.previewImage({
+					current: index,
+					urls: this.data.imgList.map(r => r.path)
+				});
+			},
+			submit() {
+				this.$emit("submit", this.data)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box {
+		margin-bottom: 10rpx;
+		position: relative;
+	}
+	.imgs {
+		position: relative;
+		display: inline-flex;
+		flex-wrap: wrap;
+		margin: 10rpx;
+		width: 150rpx;
+		height: 150rpx;
+		.img {
+			width: 100%;
+			height: 100%;
+			border-radius: 10rpx;
+			border: 1rpx solid #ebebeb;
+		}
+		.remove {
+			line-height: 30rpx;
+			text-align: center;
+			border-radius: 10rpx;
+			position: absolute;
+			right: 0rpx;	
+			top: 0rpx;
+			width: 30rpx;
+			height: 30rpx;
+			font-weight: bold;
+			background-color: #e53c25;
+		}
+		.add-img {
+			background-color: #f0f0f0;
+		}
+	}
+	.submit-btn {
+		background-color: #22C572;
+		color:#fff;
+		border-radius:30px;
+		margin: 20rpx;
+		margin-top:30px;
+	}
+	textarea,input{
+		background:#F9F9FA;
+		border: 1px solid #eee;
+	}
+	textarea{
+		margin:0 auto;
+		padding:10px;
+		font-size:14px;
+	}
+	input{
+		padding:20px;
+	}
+	.contact{
+		padding-bottom:20px;
+	}
+</style>

+ 213 - 0
components/luo-navBar/components/luo-navBar/luo-navBar.vue

@@ -0,0 +1,213 @@
+<template>
+	<view class="box" :style="{'position':fixed?'fixed':'','background':boxBackColor,'border-bottom':setLinDown}">
+		<view class="left" @click="leftClick">
+			<uni-icons :color="color" :type="leftIcon" :size="leftIconSize" v-if="leftIcon.length" />
+			<text class="l-font" :style="{'color':color}" v-if="leftText.length">{{leftText}}</text>
+			<slot name="left"></slot>
+		</view>
+		<view class="mid">		
+			<text class="title" :style="{'color':color,'font-weight':isBlod?'bold':''}" v-if="midText.length && !isSearch">{{midText}}</text>
+			<view class="search-box" v-if="isSearch">
+				<uni-icons type="search" color="#666666"></uni-icons>
+				<input v-if='!isPlaceText' type="text" v-model="searchText" @confirm="confirmEvent" @focus="focusEvent" @blur="blurEvent" @input="inputEvent" placeholder="请输入搜索关键字" />
+				<input v-if='isPlaceText' type="text" v-model="searchText" @confirm="confirmEvent" @focus="focusEvent" @blur="blurEvent" @input="inputEvent" :placeholder="placeText" />
+			</view>
+			<slot name="mid"></slot>
+		</view>
+		<view class="right" @click="rightClick">
+			<text class="l-font" :style="{'color':color}" v-if="rightText.length">{{rightText}}</text>
+			<uni-icons :color="color" :type="rightIcon" :size="rightIconSize" v-if="rightIcon.length" />
+			<slot name="right"></slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcons from "../uni-icons/uni-icons.vue";
+	export default {
+		components: {
+			uniIcons
+		},
+		data() {
+			return {
+				searchText:''
+			};
+		},
+		props:{
+			// 盒子背景颜色
+			boxBackColor:{
+				type: String,
+				default() {
+					return "#ffffff"
+				}
+			},
+			// 颜色
+			color: {
+				type: String,
+				default: "#333333"
+			},
+			// 是否固定
+			fixed:{
+				type:Boolean,
+				default() {
+					return false
+				}
+			},
+			// 标题是否加粗
+			isBlod:{
+				type:Boolean,
+				default: true
+			},
+			// 设置下划线
+			setLinDown:{
+				type:String,
+				default() {
+					return ''
+				}
+			},
+			// 左边图标
+			leftIcon: {
+				type: String,
+				default: "back"
+			},
+			// 左边图标大小
+			leftIconSize: {
+				type: Number,
+				default() {
+					return 24
+				}
+			},
+			// 左边文字
+			leftText:{
+				type: String,
+				default(){
+					return ''
+				}
+			},
+			
+			// 右边图标
+			rightIcon:{
+				type: String,
+				default: ""
+			},
+			// 右边图标大小
+			rightIconSize: {
+				type: Number,
+				default() {
+					return 24
+				}
+			},
+			// 左边文字
+			rightText:{
+				type: String,
+				default(){
+					return '分享'
+				}
+			},
+			
+			
+			// 标题
+			midText:{
+				type:String,
+				default(){
+					return '标题'
+				}
+			},
+			// 是否显示搜索
+			isSearch:{
+				type:Boolean,
+				default() {
+					return false
+				}
+			},
+			isPlaceText:{
+				type:Boolean,
+				default() {
+					return false
+				}
+			},
+			placeText:{
+				type:String,
+				default() {
+					return '请输入搜索关键字'
+				}
+			},
+		},
+		methods:{
+			leftClick(){
+				this.$emit('leftClick')
+			},
+			rightClick(){
+				this.$emit('rightClick')
+			},
+			focusEvent(e){
+				this.$emit('focus',e,this.searchText)
+			},
+			confirmEvent(e){
+				this.$emit('confirm',e,this.searchText)
+			},
+			blurEvent(e){
+				this.$emit('blur',e,this.searchText)
+			},
+			inputEvent(e){
+				this.$emit('input',e,this.searchText)
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box{
+		left: 0;
+		top: 0;
+		padding: 0 24rpx;
+		width: calc(100% - 48rpx);
+		height: 88rpx;
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		.left,.right{
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+			flex: 0.5;
+			.l-img,.r-img{
+				width: 32rpx;
+				height: 32rpx;
+			}
+			.l-font{
+				font-size: 28rpx;
+				color: #666;
+			}
+		}
+		.right{
+			justify-content: flex-end;
+			// text-align: right;
+		}
+		.mid{
+			// flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			.title{
+				font-size: 32rpx;
+				color: #333333;
+			}
+			.search-box{
+				padding: 0 30rpx;
+				width: 460rpx;
+				height: 60rpx;
+				display: flex;
+				flex-direction: row;
+				align-items: center;
+				border-radius: 40rpx;
+				background: #f5f5f5;
+				input{
+					flex: 1;
+					padding-left: 5rpx;
+					font-size: 24rpx;
+				}
+			}
+		}
+	}
+</style>

+ 75 - 0
components/luo-navBar/components/luo-navBar/新建文本文档.md

@@ -0,0 +1,75 @@
+## 自定义导航栏、带搜索框、可自定义
+___
+### 示例代码
+```html
+<template>
+	<view class="container">
+		<luo-nav-bar leftIcon='back'></luo-nav-bar>
+	</view>
+</template>
+<script>
+	import luoNavBar from '@/components/luo-navBar/luo-navBar.vue';
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		components:{
+			luoNavBar
+		},
+		onLoad() {
+
+		},
+		methods: {
+			
+		}
+	}
+</script>
+```
+### ** 注意事项 **
+1. `isSearch`搜索框设置为`true`时,`midText`应设为空
+
+### 使用说明
+
+| 名称        | 类型   |  默认值  | 描述 |
+| --------   | -----:  | :----:  | :----:  |
+| boxBackColor | String   |   #FFFFFF  |背景颜色|
+| color  |  String  |  #333333 |文字及图标颜色|
+| isBlod| Boolean |  true |标题是否加粗|
+| fixed | Boolean |  false |是否固定顶部|
+| setLinDown | String |  -  |设置下边框,格式'2rpx solid #E6E6E6'|
+| leftIcon | String |  -  |左侧按钮图标(图标类型参考 [Icona](https://ext.dcloud.net.cn/plugin?id=28) 图标 type 属性)|
+| lrightIcon | String |  -  |右侧按钮图标(图标类型参考 [Icona](https://ext.dcloud.net.cn/plugin?id=28)  图标 type 属性)|
+| leftIconSize | Number |  24  |左侧图标大小|
+| rightIconSize | Number |  24  |右侧图标大小|
+| leftText | String |  -  |左侧按钮文本|
+| rightText | String |  -  |右侧按钮文本|
+| midText | String |  -  |标题文本|
+| isSearch | Boolean |  false  |搜索框|
+
+### 插槽说明
+可以自定义插入想要的内容,以达到自定义
+| 名称        | 描述   |
+| --------   | :----:  | 
+| left   | 导航栏左边插入  |
+| right  | 导航栏右边插入  |
+| mid   | 导航栏中间插入  |
+`示例代码`
+```
+<luo-nav-bar>
+    <view slot="left">left</view>
+    <view slot="mid">mid</view>
+    <view slot="right">right</view>
+</luo-nav-bar>
+```
+
+### 事件
+| 名称        | 描述   | 返回值 |
+| --------   | -----:  | -----:  | 
+| @leftClick |  左侧按钮点击时触发  | - |
+| @rightClick |  右侧按钮点击时触发  | - |
+| @input |当为默认搜索框时才有, 当键盘输入时,触发input事件,event.detail = {value}  | 第二个值为输入框值 |
+| @focus | 当为默认搜索框时才有, 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度  | 第二个值为输入框值 |
+| @blur | 当为默认搜索框时才有, 输入框失去焦点时触发,event.detail = {value: value}  | 第二个值为输入框值 |
+| @confirm | 当为默认搜索框时才有, 点击完成按钮时触发,event.detail = {value: value}  | 第二个值为输入框值 |

+ 132 - 0
components/luo-navBar/components/uni-icons/icons.js

@@ -0,0 +1,132 @@
+export default {
+	"pulldown": "\ue588",
+	"refreshempty": "\ue461",
+	"back": "\ue471",
+	"forward": "\ue470",
+	"more": "\ue507",
+	"more-filled": "\ue537",
+	"scan": "\ue612",
+	"qq": "\ue264",
+	"weibo": "\ue260",
+	"weixin": "\ue261",
+	"pengyouquan": "\ue262",
+	"loop": "\ue565",
+	"refresh": "\ue407",
+	"refresh-filled": "\ue437",
+	"arrowthindown": "\ue585",
+	"arrowthinleft": "\ue586",
+	"arrowthinright": "\ue587",
+	"arrowthinup": "\ue584",
+	"undo-filled": "\ue7d6",
+	"undo": "\ue406",
+	"redo": "\ue405",
+	"redo-filled": "\ue7d9",
+	"bars": "\ue563",
+	"chatboxes": "\ue203",
+	"camera": "\ue301",
+	"chatboxes-filled": "\ue233",
+	"camera-filled": "\ue7ef",
+	"cart-filled": "\ue7f4",
+	"cart": "\ue7f5",
+	"checkbox-filled": "\ue442",
+	"checkbox": "\ue7fa",
+	"arrowleft": "\ue582",
+	"arrowdown": "\ue581",
+	"arrowright": "\ue583",
+	"smallcircle-filled": "\ue801",
+	"arrowup": "\ue580",
+	"circle": "\ue411",
+	"eye-filled": "\ue568",
+	"eye-slash-filled": "\ue822",
+	"eye-slash": "\ue823",
+	"eye": "\ue824",
+	"flag-filled": "\ue825",
+	"flag": "\ue508",
+	"gear-filled": "\ue532",
+	"reload": "\ue462",
+	"gear": "\ue502",
+	"hand-thumbsdown-filled": "\ue83b",
+	"hand-thumbsdown": "\ue83c",
+	"hand-thumbsup-filled": "\ue83d",
+	"heart-filled": "\ue83e",
+	"hand-thumbsup": "\ue83f",
+	"heart": "\ue840",
+	"home": "\ue500",
+	"info": "\ue504",
+	"home-filled": "\ue530",
+	"info-filled": "\ue534",
+	"circle-filled": "\ue441",
+	"chat-filled": "\ue847",
+	"chat": "\ue263",
+	"mail-open-filled": "\ue84d",
+	"email-filled": "\ue231",
+	"mail-open": "\ue84e",
+	"email": "\ue201",
+	"checkmarkempty": "\ue472",
+	"list": "\ue562",
+	"locked-filled": "\ue856",
+	"locked": "\ue506",
+	"map-filled": "\ue85c",
+	"map-pin": "\ue85e",
+	"map-pin-ellipse": "\ue864",
+	"map": "\ue364",
+	"minus-filled": "\ue440",
+	"mic-filled": "\ue332",
+	"minus": "\ue410",
+	"micoff": "\ue360",
+	"mic": "\ue302",
+	"clear": "\ue434",
+	"smallcircle": "\ue868",
+	"close": "\ue404",
+	"closeempty": "\ue460",
+	"paperclip": "\ue567",
+	"paperplane": "\ue503",
+	"paperplane-filled": "\ue86e",
+	"person-filled": "\ue131",
+	"contact-filled": "\ue130",
+	"person": "\ue101",
+	"contact": "\ue100",
+	"images-filled": "\ue87a",
+	"phone": "\ue200",
+	"images": "\ue87b",
+	"image": "\ue363",
+	"image-filled": "\ue877",
+	"location-filled": "\ue333",
+	"location": "\ue303",
+	"plus-filled": "\ue439",
+	"plus": "\ue409",
+	"plusempty": "\ue468",
+	"help-filled": "\ue535",
+	"help": "\ue505",
+	"navigate-filled": "\ue884",
+	"navigate": "\ue501",
+	"mic-slash-filled": "\ue892",
+	"search": "\ue466",
+	"settings": "\ue560",
+	"sound": "\ue590",
+	"sound-filled": "\ue8a1",
+	"spinner-cycle": "\ue465",
+	"download-filled": "\ue8a4",
+	"personadd-filled": "\ue132",
+	"videocam-filled": "\ue8af",
+	"personadd": "\ue102",
+	"upload": "\ue402",
+	"upload-filled": "\ue8b1",
+	"starhalf": "\ue463",
+	"star-filled": "\ue438",
+	"star": "\ue408",
+	"trash": "\ue401",
+	"phone-filled": "\ue230",
+	"compose": "\ue400",
+	"videocam": "\ue300",
+	"trash-filled": "\ue8dc",
+	"download": "\ue403",
+	"chatbubble-filled": "\ue232",
+	"chatbubble": "\ue202",
+	"cloud-download": "\ue8e4",
+	"cloud-upload-filled": "\ue8e5",
+	"cloud-upload": "\ue8e6",
+	"cloud-download-filled": "\ue8e9",
+	"headphones":"\ue8bf",
+	"shop":"\ue609"
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 10 - 0
components/luo-navBar/components/uni-icons/uni-icons.vue


+ 1 - 1
components/ossutil/uploadFile.js

@@ -12,7 +12,7 @@ const Crypto = require('./crypto.js');
  *@param - successc:成功回调
  *@param - failc:失败回调
  */ 
-const uploadFile = function (filePath, dir, successc, failc) {debugger
+const uploadFile = function (filePath, dir, successc, failc) {
   if (!filePath || filePath.length < 9) {
     uni.showModal({
       title: '图片错误',

+ 431 - 0
components/uni-card/uni-card.vue

@@ -0,0 +1,431 @@
+<template>
+	<view class="uni-card uni-border"
+		:class="{ 'uni-card--full': isFull === true || isFull === 'true', 'uni-card--shadow': isShadow === true || isShadow === 'true'}">
+		<!-- 基础 -->
+		<view v-if="mode === 'basic' && title" @click.stop="onClick" class="uni-card__head-padding">
+			<view class="uni-card__header uni-border-bottom">
+				<slot name="header">
+					<view v-if="thumbnail" class="uni-card__header-extra-img-view">
+						<image :src="thumbnail" class="uni-card__header-extra-img" />
+					</view>
+					<text class="uni-card__header-title-text">{{ title }}</text>
+					<text v-if="extra" class="uni-card__header-extra-text">{{ extra }}</text>
+				</slot>
+			</view>
+		</view>
+		<!-- 标题 -->
+		<view v-if="mode === 'title'" @click.stop="onClick" class="uni-card__head-padding">
+			<view class="uni-card__title uni-border-bottom">
+				<slot name="header">
+					<view class="uni-card__title-box">
+						<view v-if="thumbnail" class="uni-card__title-header">
+							<image class="uni-card__title-header-image" :src="thumbnail" mode="scaleToFill" />
+						</view>
+						<view class="uni-card__title-content">
+							<text class="uni-card__title-content-title uni-ellipsis">{{ title }}</text>
+							<text class="uni-card__title-content-extra uni-ellipsis">{{ subTitle }}</text>
+						</view>
+					</view>
+					<view v-if="extra">
+						<text class="uni-card__header-extra-text">{{ extra }}</text>
+					</view>
+				</slot>
+			</view>
+		</view>
+		<!-- 图文 -->
+		<view v-if="mode === 'style'" class="uni-card__thumbnailimage" @click.stop="onClick">
+			<view class="uni-card__thumbnailimage-box">
+				<image v-if="thumbnail" class="uni-card__thumbnailimage-image" :src="thumbnail" mode="aspectFill" />
+				<uni-icons v-if="!thumbnail" type="image" size="30" color="#999" />
+			</view>
+			<view v-if="title" class="uni-card__thumbnailimage-title">
+				<text class="uni-card__thumbnailimage-title-text">{{ title }}</text>
+			</view>
+		</view>
+		<!-- 内容 -->
+		<view class="uni-card__content uni-card__content--pd" @click.stop="onClick">
+			<view v-if="mode === 'style' && extra" class=""><text class="uni-card__content-extra">{{ extra }}</text>
+			</view>
+			<slot />
+		</view>
+		<!-- 底部 -->
+		<view v-if="note" class="uni-card__footer uni-border-top">
+			<slot name="footer">
+				<text class="uni-card__footer-text">{{ note }}</text>
+			</slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	/**
+	 * Card 卡片
+	 * @description 卡片视图组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=22
+	 * @property {String} title 标题文字
+	 * @property {String} subTitle 副标题(仅仅mode=title下生效)
+	 * @property {String} extra 标题额外信息
+	 * @property {String} note 底部信息
+	 * @property {String} thumbnail 标题左侧缩略图
+	 * @property {String} mode = [basic|style|title] 卡片模式
+	 * 	@value basic 基础卡片
+	 * 	@value style 图文卡片
+	 * 	@value title 标题卡片
+	 * @property {Boolean} isFull = [true | false] 卡片内容是否通栏,为 true 时将去除padding值
+	 * @property {Boolean} isShadow = [true | false] 卡片内容是否开启阴影
+	 * @event {Function} click 点击 Card 触发事件
+	 * @example <uni-card title="标题文字" thumbnail="xxx.jpg" extra="额外信息" note="Tips">内容主体,可自定义内容及样式</uni-card>
+	 */
+	export default {
+		name: 'UniCard',
+		emits:['click'],
+		props: {
+			title: {
+				type: String,
+				default: ''
+			},
+			subTitle: {
+				type: String,
+				default: ''
+			},
+			extra: {
+				type: String,
+				default: ''
+			},
+			note: {
+				type: String,
+				default: ''
+			},
+			thumbnail: {
+				type: String,
+				default: ''
+			},
+			mode: {
+				type: String,
+				default: 'basic'
+			},
+			isFull: {
+				// 内容区域是否通栏
+				type: Boolean,
+				default: false
+			},
+			isShadow: {
+				// 是否开启阴影
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-card {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		flex: 1;
+		box-shadow: 0 0 0 rgba(0, 0, 0, 0);
+		/* #endif */
+		margin: $uni-spacing-col-lg $uni-spacing-row-lg;
+		// background-color: $uni-bg-color;
+		position: relative;
+		flex-direction: column;
+		border-radius: 5px;
+		overflow: hidden;
+		/* #ifdef H5 */
+		cursor: pointer;
+		/* #endif */
+	}
+
+
+
+	.uni-border {
+		position: relative;
+		/* #ifdef APP-NVUE */
+		border-color: $uni-border-color;
+		border-style: solid;
+		border-width: 0.5px;
+		/* #endif */
+		z-index: 1;
+	}
+
+	/* #ifndef APP-NVUE */
+	.uni-border:after {
+		content: '';
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		top: 0;
+		right: 0;
+		// border: 1px solid $uni-border-color;
+		border-radius: 10px;
+		box-sizing: border-box;
+		width: 200%;
+		height: 200%;
+		transform: scale(0.5);
+		transform-origin: left top;
+		z-index: -1;
+	}
+
+	/* #endif */
+
+	.uni-border-bottom {
+		position: relative;
+		/* #ifdef APP-NVUE */
+		border-bottom-color: $uni-border-color;
+		border-bottom-style: solid;
+		border-bottom-width: 0.5px;
+		/* #endif */
+		z-index: 1;
+	}
+
+	/* #ifndef APP-NVUE */
+	.uni-border-bottom:after {
+		content: '';
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		top: 0;
+		right: 0;
+		// border-bottom: 1px solid $uni-border-color;
+		box-sizing: border-box;
+		width: 200%;
+		height: 200%;
+		transform: scale(0.5);
+		transform-origin: left top;
+		z-index: -1;
+	}
+
+	/* #endif */
+	.uni-border-top {
+		position: relative;
+		/* #ifdef APP-NVUE */
+		border-top-color: $uni-border-color;
+		border-top-style: solid;
+		border-top-width: 0.5px;
+		/* #endif */
+		z-index: 1;
+	}
+
+	/* #ifndef APP-NVUE */
+	.uni-border-top:after {
+		content: '';
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		top: 0;
+		right: 0;
+		border-top: 1px solid $uni-border-color;
+		box-sizing: border-box;
+		width: 200%;
+		height: 200%;
+		transform: scale(0.5);
+		transform-origin: left top;
+		z-index: -1;
+	}
+
+	/* #endif */
+
+	.uni-card__thumbnailimage {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		// display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		height: 150px;
+		background-color: #F1F1F1;
+		overflow: hidden;
+	}
+
+	.uni-card__thumbnailimage-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		height: 150px;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		overflow: hidden;
+	}
+
+	.uni-card__thumbnailimage-image {
+		flex: 1;
+	}
+
+	.uni-card__thumbnailimage-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		flex-direction: row;
+		padding: $uni-spacing-col-base $uni-spacing-col-lg;
+		background-color: $uni-bg-color-mask;
+	}
+
+	.uni-card__thumbnailimage-title-text {
+		flex: 1;
+		font-size: $uni-font-size-base;
+		color: #fff;
+	}
+
+	.uni-card__title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		padding: 10px;
+
+	}
+
+	.uni-card__title-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		align-items: center;
+		overflow: hidden;
+	}
+
+	.uni-card__title-header {
+		width: 40px;
+		height: 40px;
+		overflow: hidden;
+		border-radius: 5px;
+		padding-right: 10px;
+	}
+
+	.uni-card__title-header-image {
+		width: 40px;
+		height: 40px;
+	}
+
+	.uni-card__title-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		flex: 1;
+		height: 40px;
+		overflow: hidden;
+	}
+
+	.uni-card__title-content-title {
+		font-size: $uni-font-size-base;
+		line-height: 22px;
+	}
+
+	.uni-card__title-content-extra {
+		font-size: $uni-font-size-sm;
+		line-height: 27px;
+		color: $uni-text-color-grey;
+	}
+
+	.uni-card__header {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		position: relative;
+		flex-direction: row;
+		padding: $uni-spacing-col-lg;
+		align-items: center;
+	}
+
+	.uni-card__header-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		margin-right: $uni-spacing-col-base;
+		justify-content: flex-start;
+		align-items: center;
+	}
+
+	.uni-card__header-title-text {
+		font-size: $uni-font-size-lg;
+		flex: 1;
+		color: #333;
+	}
+
+	.uni-card__header-extra-img {
+		height: $uni-img-size-sm;
+		width: $uni-img-size-sm;
+		margin-right: $uni-spacing-col-base;
+	}
+
+	.uni-card__header-extra-text {
+		flex: 1;
+		margin-left: $uni-spacing-col-base;
+		font-size: $uni-font-size-sm;
+		text-align: right;
+		color: $uni-text-color-grey;
+	}
+
+	.uni-card__content {
+		color: $uni-text-color;
+	}
+
+	.uni-card__content--pd {
+		padding:5px 12px 10px;
+	}
+
+	.uni-card__content-extra {
+		font-size: $uni-font-size-base;
+		padding-bottom: 10px;
+		color: $uni-text-color-grey;
+	}
+
+	.uni-card__footer {
+		justify-content: space-between;
+		padding: $uni-spacing-col-lg;
+	}
+
+	.uni-card__footer-text {
+		color: $uni-text-color-grey;
+		font-size: $uni-font-size-sm;
+	}
+
+	.uni-card--shadow {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.1);
+		/* #endif */
+	}
+
+	.uni-card--full {
+		margin: 0;
+		border-radius: 0;
+	}
+
+	/* #ifndef APP-NVUE */
+	.uni-card--full:after {
+		border-radius: 0;
+	}
+
+	/* #endif */
+	.uni-ellipsis {
+		/* #ifndef APP-NVUE */
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		/* #endif */
+		/* #ifdef APP-NVUE */
+		lines: 1;
+		/* #endif */
+	}
+
+	.uni-card__head-padding {
+		// mar: 12px;
+	}
+</style>

+ 132 - 15
pages.json

@@ -70,24 +70,29 @@
 		{
 			"path": "pages/mine/index",
 			"style": {
-				"navigationBarTitleText": "我的",
 				"navigationStyle": "custom"
 			}
-
 		},
 		{
 			"path": "pages/public/login",
 			"style": {
-				"navigationBarTitleText": "登录",
-				"enablePullDownRefresh": false
+				"navigationStyle": "custom"
 			}
-
+		},
+		{
+		    "path" : "pages/public/loginOther",
+		    "style" :                                                                                    
+		    {
+		      "navigationStyle": "custom"
+		    }
+		    
 		},
 		{
 			"path": "pages/public/register",
 			"style": {
 				"navigationBarTitleText": "注册",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
 			}
 		}, {
 			"path": "pages/goodSource/shippingDetails",
@@ -103,13 +108,6 @@
 				"enablePullDownRefresh": false
 			}
 
-		}, {
-			"path": "pages/order/confirmLoading",
-			"style": {
-				"navigationBarTitleText": "确认装车",
-				"enablePullDownRefresh": false
-			}
-
 		}, {
 			"path": "pages/order/confirmUnloading",
 			"style": {
@@ -138,7 +136,22 @@
 				"enablePullDownRefresh": false
 			}
 
-		}, {
+		},
+		{
+			"path": "pages/mine/company/index",
+			"style": {
+				"navigationBarTitleText": "我的公司",
+				"enablePullDownRefresh": false
+			}
+		
+		},
+		{
+			"path": "pages/mine/company/addcompany",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		
+		},{
 			"path": "pages/mine/manageVehicles/index",
 			"style": {
 				"navigationBarTitleText": "管理车辆",
@@ -213,16 +226,120 @@
                 "enablePullDownRefresh": false
             }
             
-        }
+        },
+		{
+		    "path" : "pages/mine/cargoowner/addEnerprise",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "企业认证",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
         ,{
             "path" : "pages/mine/cargoowner/editpersonalinformation",
             "style" :                                                                                    
+            {
+                "navigationBarTitleText": "身份认证",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+		,{
+            "path" : "pages/mine/settings/editAvatar",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "修改头像",
+                "enablePullDownRefresh": false
+            }
+            
+        },
+		{
+		    "path" : "pages/mine/settings/editPhone",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "修改账号",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		},
+		{
+		    "path" : "pages/mine/settings/editPassword",
+		    "style" :                                                                                    
+		    {
+		        "navigationStyle": "custom"
+		    }
+		    
+		}
+        ,{
+            "path" : "pages/mine/settings/feedback",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "意见反馈",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/company/addcompanytwo",                                                                                  
+            "style": {
+            	"navigationStyle": "custom"
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/company/addcompanythree",
+            "style" :
+            {
+                "navigationBarTitleText": "视频认证",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/company/companyvideo",
+            "style" :                                                                                    
             {
                 "navigationBarTitleText": "",
                 "enablePullDownRefresh": false
             }
             
         }
+        ,{
+            "path" : "pages/mine/company/editcompany",
+            "style": {
+            	"navigationStyle": "custom"
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/company/editcompanytwo",
+            "style" :{
+                "navigationStyle": "custom"
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/company/editcompanythree",
+            "style" :{
+                "navigationStyle": "custom"
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/company/editcompanyvideo",
+            "style" :{
+                "navigationStyle": "custom"
+            }
+            
+        }
+        ,{
+            "path" : "pages/mine/cargoowner/selectcompany",
+            "style" :                                                                                    {
+                "navigationStyle": "custom"
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 324 - 0
pages/mine/cargoowner/addEnerprise.vue

@@ -0,0 +1,324 @@
+<template>
+	<view class='content'>
+		<view class="wrap">
+			<view style='border-bottom:1px solid #eee;padding:10px 0 10px;' class="flex flex-space-between row">
+				<view class="left-text">企业</view>
+				<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectshow">
+					<view :style="{'color':dataDetails.company ? '#000':'#C6CBD5'}">{{dataDetails.company?dataDetails.company:'选择所属企业'}}</view>
+					<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+				</view>
+				
+			</view>
+			<view style='padding:10px 0 10px;' class="flex flex-space-between items-center width100">
+				<view style='width:100px;font-size:14px;'>法定代表人姓名</view>
+				<view class="flex">
+					<u--input disabledColor='#fff' disabled placeholder="自动获取" inputAlign='left' border="none" v-model="dataDetails.legalPersonName">
+					</u--input>
+				</view>
+			</view>
+		</view>
+		<view class='content1'>
+			<view class="title">上传企业授权书</view>
+			<view style='position:relative;'>
+				<view v-if='!dataDetails.certificateAddressUrl' @click="uploadImg(1)" class="picture picture7">
+					<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
+					<view class="text">上传企业授权书</view>
+				</view>
+				<view v-if='dataDetails.certificateAddressUrl' @click.stop="uploadImg(1)"
+				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.certificateAddressUrl" mode="aspectFit"></image>
+			</view>
+			</view>
+			<view class="flex row noborder">
+				<view class="left-text">营业期限截止日期</view>
+				<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectdate">
+					<view :style="{'color':dataDetails.authorizationDeadline ? '#000':'#C6CBD5'}">{{dataDetails.authorizationDeadline?dataDetails.authorizationDeadline:'选择期限截止日期'}}</view>
+					<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+				</view>
+			</view>
+			<u-picker :show="isdate" ref="uPicker" :columns="validityPeriod"
+				@confirm="confirmValidityPeriod" @change="changeHandler"  @cancel="isdate=false">
+			</u-picker>
+			
+		</view>
+		<view class="content4">
+			<view style='margin:0 0 18px;font-size:12px;color:#999;' class='flex items-center'>
+				<u--image style='margin-right:5px;' @click='consent'
+					:src="checked?'../../../static/mine/duihao@2x.png':'../../../static/mine/wxz.png'"
+					width="12px" height="12px"></u--image>
+					我已阅读并同意全部细则
+			</view>
+			<view class='line'></view>
+			<view class="next-btn" @click="submit()">
+				提交
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	import upload from '@/components/upload.vue';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		data() {
+			return {
+				dataDetails:{},
+				companuList:[],
+				isshow:false,
+				isdate:false,
+				validityPeriod:[]
+			}
+		},
+		onLoad(){
+			this.validityPeriod = this.$helper.makeValidityPeriod(0,50)
+			this.getList()
+		},
+		onShow() {
+			console.log(uni.getStorageSync('currectcompany'))
+			if(uni.getStorageSync('currectcompany')){
+				this.dataDetails.company=uni.getStorageSync('currectcompany').companyName
+				this.dataDetails.legalPersonName=uni.getStorageSync('currectcompany').legalPersonName
+			}
+		},
+		methods: {
+			selectdate(){
+				this.isdate=false
+			},
+			selectshow(){
+				this.goDetailPage('/pages/mine/cargoowner/selectcompany')
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.authorizationDeadline = e.value[0]
+				} else {
+					this.dataDetails.authorizationDeadline = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isdate = false
+			},
+			imgTypeSelect(val) {
+				var _this=this
+				if (val.name == '相册') {
+					uni.chooseImage({
+						count: 1,
+						sourceType: this.$helper.chooseImage.sourceType,
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.certificateAddressUrl=result
+									console.log(_this.dataDetails.certificateAddressUrl)
+								}
+							)
+						}
+					});
+				} else {
+					uni.chooseImage({
+						count: 1,
+						sourceType: ['camera'],
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.certificateAddressUrl=result
+								}
+							)
+						}
+					});
+				}
+			},
+			uploadImg(type, index) {
+				this.uploadType = type
+				this.isShowimgType = true
+				this.index = index
+			},
+			goDetailPage(src) {
+				uni.setStorage({key: 'companydata',data: JSON.stringify(this.dataDetails)});
+				uni.$u.route(src);
+			},
+			confirmcompany(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.businessTermDate = e.value[0]
+				} else {
+					this.dataDetails.businessTermDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isShowcardValidity = false
+			},
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+			
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+			
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
+			getList(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('get', '/companyInfo/selectAllCompany').then(res => {
+					uni.hideLoading()
+					this.companyList=res
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+			submit(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('post', '/companyInfo/api/editCompanyInfo', _this.dataDetails).then(res => {
+					uni.hideLoading()
+					uni.$u.toast('提交成功')
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+		}
+	}
+</script>
+
+<style lang='scss' scoped>
+	page{
+		background: #F5F6FA;
+	}
+	.preview-card-img {
+		/deep/uni-image>div, uni-image>img {
+		    transform: scale(1.5) rotate(-90deg);
+		}
+	}
+	.picture {
+		margin-top: 20rpx;
+		background: #F5F6FA;
+		width: 212rpx;
+		height: 212rpx;
+		border-radius: 20rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		color: #6A7282;
+	}
+	.content1 {
+		background:#fff;
+		padding:40rpx 20rpx 20rpx;
+		margin:20rpx 0rpx 200rpx;
+		border-radius: 10rpx;
+		.row {
+			border-bottom: 1px solid #EEEEEE;
+			padding-bottom: 28rpx;
+			margin-top: 26rpx;
+	
+		}
+	
+		.left-text {
+			// background: red;
+			width: 320rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+			font-size:14px;
+		}
+	
+		.picture {
+			position: relative;
+			width: 100%;
+			height: 440rpx;
+			display: flex;
+			justify-content: center;
+			flex-direction: column;
+			align-items: center;
+	
+			.text {
+				margin-top: 20rpx;
+			}
+		}
+		.picture7 {
+			background: url(../../../static/mine/cy.png);
+			background-size: 100% 100%;
+		}
+	
+	
+		.xj-image {
+			width: 100rpx;
+			height: 100rpx;
+		}
+	
+		.title {
+			color: #999999;
+			margin: 20rpx 0;
+		}
+	}
+	.u-input{
+		font-size:16px;
+	}
+	.content4 {
+		position:fixed;
+		bottom:0;
+		background: white;
+		width:100%;
+		text-align:center;
+		left:0;
+		box-sizing: border-box;;
+		padding:10px 15px;
+		.line{
+			position:absolute;
+			left:0;
+			margin-top:-9px;
+			border-top:1px solid #eee;
+			width:100%;
+		}
+		.next-btn {
+			background: #F1F3F6;
+			width: 85%;
+			padding: 20rpx 20rpx;
+			text-align: center;
+			color: #C5CAD4;
+			border-radius: 50rpx;margin:0 auto;
+			margin-top:10px;
+		}
+	}
+</style>

+ 116 - 13
pages/mine/cargoowner/cargoowner.vue

@@ -1,18 +1,20 @@
 <template>
 	<view class='content'>
-		<view class='identity flex items-center'>
+		<view @click='goDetailPage("/pages/mine/cargoowner/editpersonalinformation")' :class="[statustext == '审核中'?'identity2':'identity']" class=' flex items-center'>
 			<view style='width:100%;' class='flex items-center'>
-				<u--image class='image' :showLoading="true" src="../../../static/mine/huozhurenzheng/shenfen.png" width="32px"
+				<u--image style='margin-right:5px;' class='image' :showLoading="true" :src="status?'../../../static/mine/huozhurenzheng/shenfen2.png':'../../../static/mine/huozhurenzheng/shenfen.png'" width="32px"
 				height="32px"></u--image>
 				<view style='width:100%;'>
-					<view style='font-size:21px;'>身份信息</view>
-					<view class='flex flex-space-between' style='width:100%;color:#999999;font-size:14px;'>您还未认证身份信息<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+					<view v-if='!datastatus' style='font-size:21px;'>身份信息</view>
+					<view v-else style='font-size:21px;'>{{personage.name}}</view>
+					<view v-if='!datastatus' class='flex flex-space-between' style='width:100%;color:#999999;font-size:14px;'>您还未认证身份信息<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+					<view v-else class='flex flex-space-between' style='width:100%;color:#999999;font-size:14px;'>{{phone}}<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
 				</view>
 			</view>
 		</view>
 		<view>
-			<view>所属企业(0)</view>
-			<view>
+			<view>所属企业 <text style='color:#999;'>({{enterprise.length}})</text></view>
+			<view v-if='enterprise.length>0'>
 				<view>
 					<view>公司</view>
 					<view>状态</view>
@@ -24,23 +26,98 @@
 				</view>
 				
 			</view>
-			<view>
-				<u--image class='image weibangding' :showLoading="true" src="../../../static/mine/huozhurenzheng/weibangding.png" width="141px"
-				height="141px"></u--image>
+			<view v-else style='text-align:center;'>
+				<image class='image weibangding' :showLoading="true" src="../../../static/mine/huozhurenzheng/weibangding.png"></image>
+				<view style='font-size:12px;color:#999;'>您还未认证企业信息</view>
+			</view>
+			<view class='footer'>
+				<view @click='goDetailPage("/pages/mine/cargoowner/addEnerprise?cargoOwnerId="+personage.id)' class='newlyIncreased'>新增</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import {
+		mapState
+	} from 'vuex';
 	export default {
 		data() {
 			return {
-				
+				personage:{},
+				phone:'',
+				status:false,
+				datastatus:false,
+				statustext:'未认证',
+				enterprise:[]
+			}
+		},
+		onLoad() {
+			var _this = this;
+			if (!this.hasLogin) {
+				uni.$u.route('/pages/public/login');
 			}
+			this.getList()
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
 		},
 		methods: {
-			
+			goDetailPage(src) {
+				uni.$u.route(src);
+			},
+			getList(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				this.$request.baseRequest('get', '/cargoOwnerInfo/selectCargoOwner',{commonId:this.userInfo.id} ).then(res => {
+					uni.hideLoading()
+					if(res.data){
+						this.datastatus=true
+						this.personage=res.data
+						console.log(this.personage)
+						if(this.personage){
+							this.statustext=this.personage.authenticationStatus
+							if(this.personage.authenticationStatus=='审核中'||this.personage.authenticationStatus=='已驳回'){
+								this.status=false
+							}else{
+								this.status=true
+							}
+							this.phone=this.personage.phone.replace(this.personage.phone.substring(3,7), "****")
+						}
+						
+					}else{
+						this.datastatus=false
+					}
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				// this.$request.baseRequest('get', '/cargoOwnerCompInfo/api/addCargoOwnerComp',{commonId:this.userInfo.id} ).then(res => {
+				// 	uni.hideLoading()
+				// 	if(res.data){
+				// 		this.enterprise=res.data
+				// 	}
+				// })
+				// .catch(res => {
+				// 	uni.hideLoading()
+				// 	uni.showToast({
+				// 		title: res.message,
+				// 		icon: 'none',
+				// 		duration: 2000
+				// 	})
+				// });
+			},
 		}
 	}
 </script>
@@ -55,7 +132,33 @@
 		height:120px;
 		padding:0 30px;
 	}
-	.u-image {
-		 justify-content:center;
+	.identity2{
+		background: url('~@/static/mine/huozhurenzheng/bg2.png') no-repeat;
+		background-size:100%;
+		height:120px;
+		padding:0 30px;
+	}
+	.weibangding{
+		width:141px;
+		height:141px;
+	}
+	.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
 	}
 </style>

+ 427 - 117
pages/mine/cargoowner/editpersonalinformation.vue

@@ -1,54 +1,86 @@
 <template>
 	<view class="content">
 		<view class="content3 flex s-row">
-			<view>个人信息</view>
-			<view class="flex flex-space-between width100">
-				<view>姓名</view>
-				<view class="flex">
-					<u--input placeholder="输入姓名" inputAlign='right' border="none" v-model="dataDetails.name">
-					</u--input>
+			<view class='wrap'>
+				<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">
+						<u--input placeholder="输入姓名" inputAlign='left' border="none" v-model="dataDetails.name">
+						</u--input>
+					</view>
 				</view>
-			</view>
-			<view class="flex flex-space-between width100">
-				<view>联系电话</view>
-				<view class="flex">
-					<u--input placeholder="输入联系电话" inputAlign='right' border="none" v-model="dataDetails.name">
-					</u--input>
+				<view style='padding:10px 0 5px;' class="flex width100">
+					<view style='width:100px;font-size:14px;'>联系电话</view>
+					<view class="flex">
+						<u--input disabledColor='#fff' disabled placeholder="输入联系电话" inputAlign='left' border="none" v-model="dataDetails.phone">
+						</u--input>
+					</view>
 				</view>
 			</view>
-			<view class="flex flex-space-between width100">
-				上传身份证人像面
-			</view>
-	
-			<u-button type="primary" @click="uploadImg(3)">上传身份证人像面</u-button>
-			<view class="flex flex-space-between width100">
-				上传身份证国徽面
-			</view>
-				
-			<u-button type="primary" @click="uploadImg(3)">上传身份证国徽面</u-button>
-			<view class="flex flex-space-between width100">
-				<view>身份证号</view>
-				<view class="flex">
-					<u--input placeholder="输入身份证号" inputAlign='right' border="none" v-model="dataDetails.name">
-					</u--input>
+			<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>
-			<view class="flex flex-space-between width100">
-				<view>身份证有效期</view>
-				<view class="flex">
-					<u--input placeholder="选择身份证有效期" inputAlign='right' border="none" v-model="dataDetails.name">
+				<view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(1,index)"
+					class="preview-card-img picture">
+					<!-- <image class="card-img" :src="dataDetails.cardAddressUrl"></image> -->
+			<!-- 		<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>
+					<u--input placeholder="请输入身份证号" inputAlign='left' border="none" v-model="dataDetails.cardNumber">
 					</u--input>
-					<view>手动输入</view>
 				</view>
-			</view>
-			 <u-checkbox-group
-			            v-model="checkboxValue1"
-			            placement="column"
-			            @change="checkboxChange"
-			        >
-			            <u-checkbox v-model="checked" label="我已阅读并同意全部细则"
-                name="1">明月</u-checkbox>
-			        </u-checkbox-group>
+			
+				<view class="flex row noborder">
+					<view class="left-text">身份证截止日期</view>
+					<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectValidityPeriod">
+						<view :style="{'color':dataDetails.cardValidityDate ? '#000':'#C6CBD5'}">{{dataDetails.cardValidityDate?dataDetails.cardValidityDate:'选择身份证截止日期'}}</view>
+						<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+					</view>
+				</view>
+				<u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
+					@confirm="confirmValidityPeriod" @change="changeHandler"  @cancel="isShowcardValidity=false">
+				</u-picker>
+			</view>                                                                                          
+			 
+					<view class="content4">
+						<view style='margin:0 0 18px;font-size:12px;color:#999;' class='flex items-center'>
+							<u--image style='margin-right:5px;' @click='consent'
+								:src="checked?'../../../static/mine/duihao@2x.png':'../../../static/mine/wxz.png'"
+								width="12px" height="12px"></u--image>
+								我已阅读并同意全部细则
+						</view>
+						<view class='line'></view>
+						<view class="next-btn" @click="submit()">
+							提交
+						</view>
+					</view>
 			<!-- <view class="flex flex-space-between width100">
 				<view>收款人</view>
 				<view class="flex">
@@ -57,14 +89,16 @@
 				</view>
 			</view> -->
 		</view>
-		<view class="" @click="submit">提交</view>
 		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
-			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
+			@select="imgTypeSelect" @cancel='isShowimgType=false' :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
 		</u-action-sheet>
 	</view>
 </template>
 
 <script>
+	import {
+		mapState
+	} from 'vuex';
 	import upload from '@/components/upload.vue';
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	var _this;
@@ -75,29 +109,38 @@
 				uploadType: '',
 				isShowimgType: false,
 				dataDetails: {
-					name: '阿萨啊',
-					carNumberList: [{
-						kahao: '',
-						addressUrl: ''
-					}],
-					bankList: [{
-						yhk: '',
-						kh: '',
-						khh: '',
-						khzh: '',
-						skr: ''
-					}],
+					name: '',
+					phone:'',
+					commonId: '',
+					cardNumber: '',
+					cardAddressUrl: '',
+					cardBackAddressUrl: '',
+					cardValidityDate: '',
 				},
-				imagesrc: ''
+				checked:false,
+				isShowcardValidity:false,
+				imagesrc: '',
+				validityPeriod:[],
+				isShowimgType:false,
+				index:'',
 			};
 		},
 		onLoad() {
-			_this = this;
+			var _this = this;
+			this.validityPeriod = this.$helper.makeValidityPeriod(0,30)
+			this.dataDetails.phone=this.userInfo.phone
+			this.dataDetails.commonId=this.userInfo.id
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
 		},
 		methods: {
+			selectValidityPeriod() {
+				this.isShowcardValidity = true
+			},
 			//设置图片
 			setImage(e) {
-				debugger
+				// debugger
 				console.log(e);
 				//显示在页面
 				//this.imagesrc = e.path;
@@ -111,7 +154,7 @@
 			},
 			//保存图片到相册,方便核查
 			savePhoto(path) {
-				debugger
+				// debugger
 				this.imagesrc = path;
 				uploadImage(path, 'appData/',
 					result => {
@@ -130,10 +173,61 @@
 				// 	}
 				// });
 			},
-			uploadImg(type) {
-	
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+			
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+			
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.cardValidityDate = e.value[0]
+				} else {
+					this.dataDetails.cardValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isShowcardValidity = false
+			},
+			uploadImg(type, index) {
 				this.uploadType = type
 				this.isShowimgType = true
+				this.index = index
+			},
+			submit(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('post', '/cargoOwnerInfo/api/addCargoOwner', _this.dataDetails).then(res => {
+					uni.hideLoading()
+					uni.$u.toast('提交成功')
+					uni.$u.route('/pages/mine/cargoowner/cargoowner')
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
 			},
 			photograph() {
 				console.log('拍照')
@@ -152,59 +246,153 @@
 				});
 	
 			},
-			imgTypeSelect(val) {
-				console.log(val)
-				console.log(this.uploadType)
-				if (val.name == '相册') {
-					uni.chooseImage({
-						count: 1,
-						sourceType: this.$helper.chooseImage.sourceType,
-						success: function(res) {
-							console.log(JSON.stringify(res.tempFilePaths));
-							uploadImage(res.tempFilePaths[0], 'appData/',
-								result => {
-									// 上传成功
-									console.log('图片地址', result)
-									switch (this.uploadType) {
-										case 0:
-											console.log('人车合影')
-											break
-										case 1:
-											console.log('身份正面')
-											break
-										case 2:
-											console.log('身份反面')
-											break
-										case 3:
-											console.log('银行卡')
-											break
-										case 4:
-									}
-								}
-							)
-						}
-					});
+	// 		imgTypeSelect(val) {
+	// 			console.log(val)
+	// 			console.log(this.uploadType)
+	// 			if (val.name == '相册') {
+	// 				uni.chooseImage({
+	// 					count: 1,
+	// 					sourceType: this.$helper.chooseImage.sourceType,
+	// 					success: function(res) {
+	// 						console.log(JSON.stringify(res.tempFilePaths));
+	// 						uploadImage(res.tempFilePaths[0], 'appData/',
+	// 							result => {
+	// 								// 上传成功
+	// 								console.log('图片地址', result)
+	// 								switch (this.uploadType) {
+	// 									case 0:
+	// 										console.log('人车合影')
+	// 										break
+	// 									case 1:
+	// 										console.log('身份正面')
+	// 										break
+	// 									case 2:
+	// 										console.log('身份反面')
+	// 										break
+	// 									case 3:
+	// 										console.log('银行卡')
+	// 										break
+	// 									case 4:
+	// 								}
+	// 							}
+	// 						)
+	// 					}
+	// 				});
 	
-				} else {
-					switch (this.uploadType) {
-						case 0:
-							console.log('人车合影')
-							break
-						case 1:
-							uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=face');
-							console.log('身份正面')
-							break
-						case 2:
-							console.log('身份反面')
-							break
-						case 3:
-							console.log('银行卡')
-							break
-						case 4:
-					}
+	// 			} else {
+	// 				switch (this.uploadType) {
+	// 					case 0:
+	// 						console.log('人车合影')
+	// 						break
+	// 					case 1:
+	// 						uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=face');
+	// 						console.log('身份正面')
+	// 						break
+	// 					case 2:
+	// 						console.log('身份反面')
+	// 						break
+	// 					case 3:
+	// 						console.log('银行卡')
+	// 						break
+	// 					case 4:
+	// 				}
+	// 			}
+	
+	// 		},
+	imgTypeSelect(val) {
+		console.log(val)
+		console.log(this.uploadType)
+		if (val.name == '相册') {
+			uni.chooseImage({
+				count: 1,
+				sourceType: this.$helper.chooseImage.sourceType,
+				success: function(res) {
+					console.log(JSON.stringify(res.tempFilePaths));
+					uploadImage(res.tempFilePaths[0], 'appData/',
+						result => {
+							// 上传成功回调函数
+							console.log('图片地址', result)
+							switch (_this.uploadType) {
+								// 身份正面
+								case 1:
+									_this.dataDetails.cardAddressUrl = result
+									// 识别
+									_this.$request.baseRequest('get',
+											'/driverInfo/personShibie', {
+												personImg: result,
+											}).then(res => {
+											_this.dataDetails.cardNumber = res.data.recPersonNo
+										})
+										.catch(res => {
+											uni.$u.toast(res.message);
+										});
+									break
+									// 身份反面
+								case 2:
+									_this.dataDetails.cardBackAddressUrl = result
+									break
+									// 银行卡
+								case 3:
+									_this.bankType[_this.index] = []
+									_this.$request.baseRequest('get',
+											'/driverInfo/bankShibie', {
+												bankImg: result,
+											}).then(res => {
+											console.log(res)
+											_this.dataDetails.driverPayeeInfoList[_this.index]
+												.payeeAddressUrl = result
+											if (res.data.bankNo) {
+												_this.dataDetails.driverPayeeInfoList[_this
+													.index].bankCard = res.data.bankNo
+											}
+											if (res.data.bankName) {
+												_this.dataDetails.driverPayeeInfoList[_this
+													.index].bankDeposit = res.data.bankName
+											}
+	
+											// 开户支行LIst
+											if (res.data.bankNameZhihang) {
+												_this.bankType[_this.index].push(res.data
+													.bankNameZhihang)
+	
+											}
+											_this.$forceUpdate()
+										})
+										.catch(res => {
+											uni.$u.toast(res.message);
+										});
+	
+									break;
+							}
+						}
+					)
 				}
+			});
 	
-			},
+		} else {
+			switch (this.uploadType) {
+				// case 0:
+				// 	console.log('人车合影')
+				// 	break
+				case 1:
+					uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=idcardface');
+					console.log('身份正面')
+					break
+				case 2:
+					uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=badge');
+					console.log('身份反面')
+					break
+				case 3:
+					debugger
+					uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=bank');
+					console.log('银行卡')
+	
+					break
+				case 4:
+			}
+		}
+	
+	},
 			//身份证正面
 			getImgUrl1(src) {
 				// console.log(src)
@@ -236,13 +424,135 @@
 				// 	})
 				// })
 			},
-			submit(){
-				console.log(' tijia')
-			},
 		},
 	};
 </script>
 
-<style>
-
+<style lang="scss" scoped>
+	.preview-card-img {
+		/deep/uni-image>div, uni-image>img {
+		    transform: scale(1.5) rotate(-90deg);
+		}
+	}
+	.picture {
+		margin-top: 20rpx;
+		background: #F5F6FA;
+		width: 212rpx;
+		height: 212rpx;
+		border-radius: 20rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		color: #6A7282;
+	}
+	.content2, {
+		margin:10px 0 95px 0;
+		.left-text {
+			// background: red;
+			width: 290rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+			font-size:14px;
+		}
+	
+		.row {
+			border-bottom: 1px solid #EEEEEE;
+			padding-bottom: 28rpx;
+			margin-top: 26rpx;
+	
+			.ch-style {}
+		}
+	
+		.row-ch {
+			padding-right: 180rpx;
+			box-sizing: border-box;
+			// background-color: red;
+		}
+	}
+	.content2,
+	.content3 {
+		.del-bank {
+			position: absolute;
+			top: 0;
+			right: 0;
+			width: 80rpx;
+			height: 80rpx;
+		}
+	
+		.picture {
+			width: 100%;
+			height: 440rpx;
+			background: red;
+			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;
+		}
+	}
+	.u-input{
+		font-size:16px;
+	}
+	.content4 {
+		position:fixed;
+		bottom:0;
+		background: white;
+		width:100%;
+		text-align:center;
+		left:0;
+		box-sizing: border-box;;
+		padding:10px 15px;
+		.line{
+			position:absolute;
+			left:0;
+			margin-top:-9px;
+			border-top:1px solid #eee;
+			width:100%;
+		}
+		.next-btn {
+			background: #F1F3F6;
+			width: 85%;
+			padding: 20rpx 20rpx;
+			text-align: center;
+			color: #C5CAD4;
+			border-radius: 50rpx;margin:0 auto;
+			margin-top:10px;
+		}
+	}
+	.del-card {
+		position: absolute;
+		top: -10rpx;
+		right: -6rpx;
+		width: 80rpx;
+		height: 80rpx;
+		z-index: 9;
+	}
 </style>

+ 159 - 0
pages/mine/cargoowner/selectcompany.vue

@@ -0,0 +1,159 @@
+<template>
+	<view>
+		<luo-nav-bar @rightClick='cancel' @input='companyInput' :isSearch="true" :isPlaceText='true' placeText='输入企业名称' rightText='取消' leftIcon='back'></luo-nav-bar>
+		<view v-if='searching' style='padding:10px;'>
+			<view style='color:#999;margin-bottom:40px;font-size:14px;' v-if='more'>#输入更多关键字精准获取企业</view>
+			<view @click='checkcompany(item)' class='company' v-for='item in companyList'>
+				<rich-text :nodes="item.colorcompanyName"></rich-text>
+				<view class='flex items-center'>
+					<view class='legal_person'>法人</view>
+					<view>{{item.legalPersonName}}</view>
+				</view>
+			</view>
+		</view>
+		<view style='margin-left:20px;' v-if='!searching'>
+			<view>最近搜索</view>
+			<view class='historysearch' :style="{'margin-left':index==0 ? '0':'10px'}" v-for='(item,index) in history' >{{item.searchContent}}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	import luoNavBar from '@/components/luo-navBar/components/luo-navBar/luo-navBar.vue';
+	export default {
+		data() {
+			return {
+				more:false,
+				companyList:[],
+				lastTime:0,
+				history:[],
+				searching:false
+			}
+		},
+		components:{
+		    luoNavBar
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		onLoad(){
+			this.$request.baseRequest('get', '/searchRecordsInfo/selectSearchRecordsInfo', {functionType:1,commonId:this.userInfo.id}).then(res => {
+				this.history=res.data.records
+			})
+			.catch(res => {
+				uni.showToast({
+					title: res.message,
+					icon: 'none',
+					duration: 2000
+				})
+			});
+		},
+		methods: {
+			cancel(){
+				this.searching=false
+				this.companyList=[]
+			},
+			join(str,key){
+				var reg = new RegExp((`(${key})`), "gm");
+				var replace = '<span style="color:#2772FB;">$1</span>';
+				return str.replace(reg, replace);
+			},
+			checkcompany(item){
+				uni.setStorageSync('currectcompany', item)
+				this.goDetailPage('pages/mine/cargoowner/addEnerprise')
+			},
+			goDetailPage(src) {
+				uni.$u.route(src);
+			},
+			currectsearch(value){
+				var _this=this
+				var arr=[],filterArr=[]
+				this.$request.baseRequest('post', '/searchRecordsInfo/api/addInfo', {functionType:1,commonId:this.userInfo.id,searchContent:value}).then(res => {
+				})
+				.catch(res => {
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+				this.$request.baseRequest('get', '/companyInfo/selectAllCompany', {searchKeyWord:value}).then(res => {
+					uni.hideLoading()
+					var len=0
+					console.log(res)
+					if(res.data.records.length>10){
+						_this.more=true
+						len=10
+					}else{
+						len=res.data.records.length
+						_this.more=false
+					}
+					for (var i = 0; i < len; i++) {
+						// console.log(res.data.records[i])
+						res.data.records[i].colorcompanyName=res.data.records[i].companyName
+						res.data.records[i].colorcompanyName=_this.join(res.data.records[i].colorcompanyName,value)
+						arr.push(res.data.records[i])
+					}
+					_this.companyList=arr
+					console.log(arr)
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+			companyInput(e,value){
+				var _this=this
+				this.searching=true
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				if(this.lastTime == 0){ 
+				    this.lastTime = setTimeout(()=>{
+				         _this.currectsearch(value)
+				    },2000)
+				}else{
+				    clearTimeout(this.lastTime)
+				    this.lastTime = setTimeout(()=>{
+						_this.currectsearch(value)
+				    },2000)
+				}	
+			}
+		}
+	}
+</script>
+
+<style lang='scss' scoped>
+/deep/.u-navbar__content{
+	/deep/>.u-nav-solt{
+		width:90%;
+	}
+}
+.legal_person{
+	color:#2772FB;
+	font-size:20rpx;
+	border:1px solid #2772FB;
+	padding:4rpx 6rpx;
+	border-radius:10rpx;
+	margin:8rpx 10rpx 8rpx 0;
+}
+.company{
+	padding-bottom:80rpx;
+}
+
+.historysearch{
+	background:#F5F6FA;
+	display: inline-block;
+	padding:10rpx 20rpx;
+	margin:15rpx 20rpx;
+	border-radius:10rpx;
+}
+</style>

+ 383 - 0
pages/mine/company/addcompany.vue

@@ -0,0 +1,383 @@
+<template>
+	<view>
+		<u-navbar leftText="返回" title="企业认证" :safeAreaInsetTop="false">
+			<view class="u-nav-slot" slot="left">
+		        <u-icon @click='navback' name="arrow-left" size="19"></u-icon>
+		    </view>
+			<view class="u-nav-slot" slot="right">
+				<view @click="goDetailPage('/pages/mine/company/addcompanytwo')" class='next'>下一步</view>
+			</view>
+		</u-navbar>
+		<view style='margin:50px 0 0 19px;font-size:12px;color:#EF4034;'>注:企业认证仅限该企业法定代表人本人完成。</view>
+		<view class='wrap'>
+			<view style='padding:5px 0 10px;border-bottom:1px solid #eee;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>企业名称</view>
+				<view class="flex">
+					<u--input placeholder="输入企业名称" inputAlign='left' border="none" v-model="dataDetails.companyName">
+					</u--input>
+				</view>
+			</view>
+			<view style='padding:10px 0 10px;border-bottom:1px solid #eee;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>法定代表人姓名</view>
+				<view class="flex">
+					<u--input placeholder="输入法定代表人姓名" inputAlign='left' border="none" v-model="dataDetails.legalPersonName">
+					</u--input>
+				</view>
+			</view>
+			<view style='padding:10px 0 10px;border-bottom:1px solid #eee;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>联系电话</view>
+				<view class="flex">
+					<u--input disabledColor='#fff' disabled placeholder="输入联系电话" inputAlign='left' border="none" v-model="dataDetails.phone">
+					</u--input>
+				</view>
+			</view>
+			<view style='padding:10px 0 5px;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>注册实缴金额</view>
+				<view class="flex">
+					<u--input placeholder="输入企业注册实缴金额" inputAlign='left' border="none" v-model="dataDetails.registeredPaidAmount">
+					</u--input>
+					万元
+				</view>
+			</view>
+		</view>
+		<view class='content1'>
+			<view class="title">上传营业执照</view>
+			<view style='position:relative;'>
+				<view v-if='!dataDetails.businessLicenseAddressUrl' @click="uploadImg(1)" class="picture picture7">
+					<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
+					<view class="text">上传营业执照</view>
+				</view>
+				<view v-if='dataDetails.businessLicenseAddressUrl' @click.stop="uploadImg(1)"
+				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.businessLicenseAddressUrl" mode="aspectFit"></image>
+			</view>
+			</view>
+			<view class="flex row">
+				<view class="left-text">营业期限截止日期</view>
+				<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectValidityPeriod">
+					<view :style="{'color':dataDetails.businessTermDate ? '#000':'#C6CBD5'}">{{dataDetails.businessTermDate?dataDetails.businessTermDate:'选择期限截止日期'}}</view>
+					<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+				</view>
+			</view>
+			<view class="flex row noborder">
+				<view class="left-text">统一社会信用代码</view>
+				<u--input placeholder="请输入统一社会信用代码" inputAlign='left' border="none" v-model="dataDetails.unifiedSocialCreditCode">
+				</u--input>
+			</view>
+			<view class="flex row noborder">
+				<view class="left-text">企业用地是否自有</view>
+				<view style='margin:0 10px;' class='flex items-center'>
+					<u--image style='margin-right:5px;' @click='checkedchange'
+					:src="checked?'../../../static/mine/duihao@2x.png':'../../../static/mine/wxz.png'"
+					width="15px" height="15px"></u--image>
+					自有
+				</view>
+				<view style='margin:0 10px;' class='flex items-center'>
+					<u--image style='margin-right:5px;' @click='checkedchange1'
+					:src="checked1?'../../../static/mine/duihao@2x.png':'../../../static/mine/wxz.png'"
+					width="15px" height="15px"></u--image>
+					租赁
+				</view>
+			</view>
+			<u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
+				@confirm="confirmValidityPeriod" @change="changeHandler"  @cancel="clickcancel">
+			</u-picker>
+			
+		</view>
+		<view class='footer'>
+			<view @click="goDetailPage('/pages/mine/company/addcompanytwo')" class='newlyIncreased'>下一步</view>
+		</view>
+		
+		<u-action-sheet  :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
+			@select="imgTypeSelect" :closeOnClickOverlay="false" :closeOnClickAction="true"  @close="isShowimgType=false">
+		</u-action-sheet>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	import upload from '@/components/upload.vue';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		components:{
+		},
+		data() {
+			return {
+				isShowcardValidity:false,
+				uploadType:'',
+				index:'',
+				isShowimgType:false,
+				validityPeriod:[],
+				checked:false,
+				checked1:false,
+				dataDetails:{
+					phone:'',
+					businessLicenseAddressUrl:'',
+					propertyAddressUrl:'',
+					advanceFreightService:1
+				}
+			}
+		},
+		onLoad(){
+			this.validityPeriod = this.$helper.makeValidityPeriod(0,30)
+			console.log(this)
+			this.dataDetails.commonId=this.userInfo.id
+			this.dataDetails.phone=this.userInfo.phone
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
+			checkedchange(){
+				this.checked=!this.checked
+				if(this.checked){
+					this.dataDetails.landOwnership=0
+					this.checked1=false
+				}else{
+					
+				}
+			},
+			checkedchange1(){
+				this.checked1=!this.checked1
+				if(this.checked1){
+					this.dataDetails.landOwnership=1
+					this.checked=false
+				}else{
+					
+				}
+			},
+			clickcancel(){
+				this.isShowcardValidity=false
+			},
+			imgTypeSelect(val) {
+				var _this=this
+				if (val.name == '相册') {
+					uni.chooseImage({
+						count: 1,
+						sourceType: this.$helper.chooseImage.sourceType,
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.businessLicenseAddressUrl=result
+									console.log(_this.dataDetails.businessLicenseAddressUrl)
+								}
+							)
+						}
+					});
+				} else {
+					uni.chooseImage({
+						count: 1,
+						sourceType: ['camera'],
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.businessLicenseAddressUrl=result
+								}
+							)
+						}
+					});
+				}
+			},
+			uploadImg(type, index) {
+				this.uploadType = type
+				this.isShowimgType = true
+				this.index = index
+			},
+			goDetailPage(src) {
+				uni.setStorage({key: 'companydata',data: JSON.stringify(this.dataDetails)});
+				uni.$u.route(src);
+			},
+			selectValidityPeriod() {
+				this.isShowcardValidity = true
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.businessTermDate = e.value[0]
+				} else {
+					this.dataDetails.businessTermDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isShowcardValidity = false
+			},
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+			
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+			
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
+		}
+	}
+</script>
+
+<style  lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.next{
+		color:#2772FB;
+		font-size:13px;
+	}
+	.wrap{
+		background:#fff;
+		padding:20rpx 30rpx;
+		border-radius:5px;
+		margin:20rpx;
+	}
+	.preview-card-img {
+		/deep/uni-image>div, uni-image>img {
+		    transform: scale(1.5) rotate(-90deg);
+		}
+	}
+	.picture {
+		margin-top: 20rpx;
+		background: #F5F6FA;
+		width: 212rpx;
+		height: 212rpx;
+		border-radius: 20rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		color: #6A7282;
+	}
+	.content1 {
+		background:#fff;
+		padding:40rpx 20rpx 20rpx;
+		margin:20rpx 20rpx 200rpx;
+		border-radius: 10rpx;
+		.row {
+			border-bottom: 1px solid #EEEEEE;
+			padding-bottom: 28rpx;
+			margin-top: 26rpx;
+	
+		}
+	
+		.left-text {
+			// background: red;
+			width: 320rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+			font-size:14px;
+		}
+	
+		.picture {
+			position: relative;
+			width: 100%;
+			height: 440rpx;
+			display: flex;
+			justify-content: center;
+			flex-direction: column;
+			align-items: center;
+	
+			.text {
+				margin-top: 20rpx;
+			}
+		}
+		.picture7 {
+			background: url(../../../static/mine/cy.png);
+			background-size: 100% 100%;
+		}
+	
+	
+		.xj-image {
+			width: 100rpx;
+			height: 100rpx;
+		}
+	
+		.title {
+			color: #999999;
+			margin: 20rpx 0;
+		}
+	}
+	.u-input{
+		font-size:16px;
+	}
+	.content4 {
+		position:fixed;
+		bottom:0;
+		background: white;
+		width:100%;
+		text-align:center;
+		left:0;
+		box-sizing: border-box;;
+		padding:10px 15px;
+		.line{
+			position:absolute;
+			left:0;
+			margin-top:-9px;
+			border-top:1px solid #eee;
+			width:100%;
+		}
+		.next-btn {
+			background: #F1F3F6;
+			width: 85%;
+			padding: 20rpx 20rpx;
+			text-align: center;
+			color: #C5CAD4;
+			border-radius: 50rpx;margin:0 auto;
+			margin-top:10px;
+		}
+	}
+	.del-card {
+		position: absolute;
+		top: -10rpx;
+		right: -6rpx;
+		width: 80rpx;
+		height: 80rpx;
+		z-index: 9;
+	}
+	.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+	.u-checkbox-label--left{
+		margin:0 10px;
+	}
+</style>

+ 88 - 0
pages/mine/company/addcompanythree.vue

@@ -0,0 +1,88 @@
+<template>
+	<view>
+		<view style='text-align:center;height:90vh;'>
+			<view style='transform: translateY(50%);'>
+				<image class="xj-image" src="@/static/mine/company/shipinrenzheng.png"></image>
+				<view class='hinttext'>请打开摄像头并阅读提示文字</view>
+			</view>
+		</view>
+		<view class="content4">
+			<view style='margin:0 0 18px;font-size:12px;color:#999;' class='flex items-center'>
+				<u--image style='margin-right:5px;' @click='consent'
+					:src="checked?'../../../static/mine/duihao@2x.png':'../../../static/mine/wxz.png'"
+					width="12px" height="12px"></u--image>
+					我已阅读并同意全部细则
+			</view>
+			<view class='line'></view>
+			<view class="next-btn" :class="checked?'active':'' " @click="goDetailPage('/pages/mine/company/companyvideo')">
+				开始
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				checked:false,
+			}
+		},
+		methods: {
+			consent(){
+				this.checked=!this.checked
+			},
+			goDetailPage(src) 
+			{
+				if(this.checked){
+					uni.$u.route(src);
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.xj-image{
+		width:216rpx;
+		height:216rpx;
+	}
+	.hinttext{
+		width:236rpx;
+		margin:80rpx auto 0;
+		font-size:32rpx;
+	}
+	.content4 {
+		position:fixed;
+		bottom:0;
+		background: white;
+		width:100%;
+		text-align:center;
+		left:0;
+		box-sizing: border-box;;
+		padding:10px 15px;
+		.line{
+			position:absolute;
+			left:0;
+			margin-top:-9px;
+			border-top:1px solid #eee;
+			width:100%;
+		}
+		.next-btn {
+			background: #F1F3F6;
+			width: 85%;
+			padding: 20rpx 20rpx;
+			text-align: center;
+			color: #C5CAD4;
+			border-radius: 50rpx;margin:0 auto;
+			margin-top:10px;
+		}
+		.next-btn.active{
+			background: #2772FB;
+			color:#fff;
+		}
+	}
+</style>

+ 279 - 0
pages/mine/company/addcompanytwo.vue

@@ -0,0 +1,279 @@
+<template>
+	<view>
+		<u-navbar leftText="返回" title="企业认证" :safeAreaInsetTop="false">
+			<view class="u-nav-slot" slot="left">
+		        <u-icon @click='navback' name="arrow-left" size="19"></u-icon>
+		    </view>
+			<view class="u-nav-slot" slot="right">
+				<view @click="goDetailPage('/pages/mine/company/addcompanythree')" class='next'>下一步</view>
+			</view>
+		</u-navbar>
+		<view class='content1'>
+			<view class="title">上传房产证或租赁合同</view>
+			<view style='position:relative;'>
+				<view v-if='!dataDetails.propertyAddressUrl' @click="uploadImg(1)" class="picture">
+					<image class="xj-image" src="@/static/mine/company/tianjiazhaopian@3x.png"></image>
+				</view>
+				<view v-if='dataDetails.propertyAddressUrl' @click.stop="uploadImg(1)"
+				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="uploadimage" :src="dataDetails.propertyAddressUrl" mode="aspectFit"></image>
+			</view>
+			</view>
+		</view>
+		<view class='content'>
+			<view class="flex row">
+				<view class="left-text">场地租赁截止日期</view>
+				<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectValidityPeriod">
+					<view :style="{'color':dataDetails.siteLeaseDate ? '#000':'#C6CBD5'}">{{dataDetails.siteLeaseDate?dataDetails.siteLeaseDate:'选择日期'}}</view>
+					<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+				</view>
+			</view>
+			<view class="flex row noborder">
+				<view style='width:285px;' class="left-text">申请开通平台垫付运费业务</view>
+				<view>
+					<u-switch @change="change" v-model="value" inactiveColor='#ABB0BB' size="20" ></u-switch>
+				</view>
+			</view>
+			<u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
+				@confirm="confirmValidityPeriod" @change="changeHandler"  @cancel="isShowcardValidity=false" >
+			</u-picker>
+		</view>
+		<view class='footer'>
+			<view @click="goDetailPage('/pages/mine/company/addcompanythree')" class='newlyIncreased'>下一步</view>
+		</view>
+		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
+			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
+		</u-action-sheet>
+	</view>
+</template>
+
+<script>
+	import upload from '@/components/upload.vue';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		data() {
+			return {
+				dataDetails:{},
+				value:false,
+				isShowcardValidity:false,
+				uploadType:'',
+				index:'',
+				isShowimgType:false,
+				validityPeriod:[]
+			}
+		},
+		onLoad(){
+			var _this=this
+			this.validityPeriod = this.$helper.makeValidityPeriod(0,100)
+			uni.getStorage({
+				key: 'companydata',
+				success: function (res) {
+					console.log(res.data);
+					_this.dataDetails = JSON.parse(res.data)
+					if(_this.dataDetails.advanceFreightService){
+						_this.value=true
+					}
+				}
+			});
+		},
+		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
+			change(e){
+				if(this.value){
+					_this.$set(_this.dataDetails,'advanceFreightService',1)
+				}else{
+					_this.$set(_this.dataDetails,'advanceFreightService',0)
+				}
+			},
+			imgTypeSelect(val) {
+				var _this=this
+				if (val.name == '相册') {
+					uni.chooseImage({
+						count: 1,
+						sourceType: this.$helper.chooseImage.sourceType,
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.$set(_this.dataDetails,'propertyAddressUrl',result)
+									console.log(_this.dataDetails)
+								}
+							)
+						}
+					});
+				} else {
+					uni.chooseImage({
+						count: 1,
+						sourceType: ['camera'],
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.propertyAddressUrl=result
+								}
+							)
+						}
+					});
+				}
+			},
+			uploadImg(type, index) {
+				this.uploadType = type
+				this.isShowimgType = true
+				this.index = index
+			},
+			goDetailPage(src) {
+				uni.setStorage({key: 'companydata',data: JSON.stringify(this.dataDetails)});
+				uni.$u.route(src);
+			},
+			selectValidityPeriod() {
+				this.isShowcardValidity = true
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.siteLeaseDate = e.value[0]
+				} else {
+					this.dataDetails.siteLeaseDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isShowcardValidity = false
+			},
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+			
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+			
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.preview-card-img {
+		/deep/uni-image.uploadimage {
+		   width:212rpx;
+		   height:212rpx;
+		}
+	}
+	.next{
+		color:#2772FB;
+		font-size:13px;
+	}
+	
+	.content1,.content {
+		background:#fff;
+		padding:40rpx 20rpx 40rpx;
+		margin:110rpx 20rpx 20rpx;
+		border-radius: 10rpx;
+		.row {
+			border-bottom: 1px solid #EEEEEE;
+			padding-bottom: 28rpx;
+			margin-top: 26rpx;
+	
+		}
+	
+		.left-text {
+			// background: red;
+			width: 320rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+		}
+	
+		.picture {
+			position: relative;
+			width: 212rpx;
+			height: 212rpx;
+			display: flex;
+			justify-content: center;
+			flex-direction: column;
+			align-items: center;
+			background:#F5F6FA;
+			.text {
+				margin-top: 20rpx;
+			}
+		}
+	
+	
+		.xj-image {
+			width: 46rpx;
+			height: 46rpx;
+		}
+	
+		.title {
+			color: #999999;
+			margin: 20rpx 0;
+		}
+	}
+	.content{
+		padding:20rpx 20rpx 20rpx;
+		margin:20rpx 20rpx 20rpx;
+		background:#fff;
+		border-radius: 10rpx;
+	}
+	.service {
+		font-size: 24rpx;
+		margin: 20rpx;
+		justify-content: center;
+	
+		/deep/.u-image {
+			margin: 0 20rpx;
+		}
+	}
+	
+	.del-card {
+		position: absolute;
+		top: -10rpx;
+		right: -6rpx;
+		width: 80rpx;
+		height: 80rpx;
+		z-index: 9;
+	}
+	.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+</style>

+ 73 - 0
pages/mine/company/companyvideo.vue

@@ -0,0 +1,73 @@
+<template>
+	<view>
+		<view class='footer'>
+			<view @click="submit" class='newlyIncreased'>提交</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		onLoad(){
+			var _this=this
+			uni.getStorage({
+				key: 'companydata',
+				success: function (res) {
+					_this.dataDetails = JSON.parse(res.data)
+				}
+			});
+		},
+		methods: {
+			submit(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('post', '/companyInfo/api/addCompanyInfo', _this.dataDetails).then(res => {
+					uni.hideLoading()
+					uni.$u.toast('提交成功')
+					this.goDetailPage('/pages/mine/company/index')
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+			goDetailPage(src) {
+				uni.$u.route(src);
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+</style>

+ 367 - 0
pages/mine/company/editcompany.vue

@@ -0,0 +1,367 @@
+<template>
+	<view>
+		<u-navbar leftText="返回" title="企业认证" :safeAreaInsetTop="false">
+			<view class="u-nav-slot" slot="left">
+		        <u-icon @clcik='navback' name="arrow-left" size="19"></u-icon>
+		    </view>
+			<view class="u-nav-slot" slot="right">
+				<view @click="goDetailPage('/pages/mine/company/addcompanytwo')" class='next'>下一步</view>
+			</view>
+		</u-navbar>
+		<view style='margin:50px 0 0 19px;font-size:12px;color:#EF4034;'>注:企业认证仅限该企业法定代表人本人完成。</view>
+		<view class='wrap'>
+			<view style='padding:5px 0 10px;border-bottom:1px solid #eee;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>企业名称</view>
+				<view class="flex">
+					<u--input placeholder="输入企业名称" inputAlign='left' border="none" v-model="dataDetails.companyName">
+					</u--input>
+				</view>
+			</view>
+			<view style='padding:10px 0 10px;border-bottom:1px solid #eee;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>法定代表人姓名</view>
+				<view class="flex">
+					<u--input placeholder="输入法定代表人姓名" inputAlign='left' border="none" v-model="dataDetails.legalPersonName">
+					</u--input>
+				</view>
+			</view>
+			<view style='padding:10px 0 10px;border-bottom:1px solid #eee;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>联系电话</view>
+				<view class="flex">
+					<u--input disabledColor='#fff' disabled placeholder="输入联系电话" inputAlign='left' border="none" v-model="dataDetails.phone">
+					</u--input>
+				</view>
+			</view>
+			<view style='padding:10px 0 5px;' class="flex items-center width100">
+				<view style='width:100px;font-size:14px;'>注册实缴金额</view>
+				<view class="flex">
+					<u--input placeholder="输入企业注册实缴金额" inputAlign='left' border="none" v-model="dataDetails.registeredPaidAmount">
+					</u--input>
+					万元
+				</view>
+			</view>
+		</view>
+		<view class='content1'>
+			<view class="title">上传营业执照</view>
+			<view style='position:relative;'>
+				<view v-if='!dataDetails.businessLicenseAddressUrl' @click="uploadImg(1)" class="picture picture7">
+					<image class="xj-image" src="@/static/mine/ic_shanchuan@2x.png"></image>
+					<view class="text">上传营业执照</view>
+				</view>
+				<view v-if='dataDetails.businessLicenseAddressUrl' @click.stop="uploadImg(1)"
+				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.businessLicenseAddressUrl" mode="aspectFit"></image>
+			</view>
+			</view>
+			<view class="flex row">
+				<view class="left-text">营业期限截止日期</view>
+				<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectValidityPeriod">
+					<view :style="{'color':dataDetails.businessTermDate ? '#000':'#C6CBD5'}">{{dataDetails.businessTermDate?dataDetails.businessTermDate:'选择期限截止日期'}}</view>
+					<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+				</view>
+			</view>
+			<view class="flex row noborder">
+				<view class="left-text">统一社会信用代码</view>
+				<u--input placeholder="请输入统一社会信用代码" inputAlign='left' border="none" v-model="dataDetails.unifiedSocialCreditCode">
+				</u--input>
+			</view>
+						
+			
+			<u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
+				@confirm="confirmValidityPeriod" @change="changeHandler"  @cancel="clickcancel">
+			</u-picker>
+			
+		</view>
+		<view class='footer'>
+			<view @click="goDetailPage('/pages/mine/company/addcompanytwo')" class='newlyIncreased'>下一步</view>
+		</view>
+		
+		<u-action-sheet  :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
+			@select="imgTypeSelect" :closeOnClickOverlay="false" :closeOnClickAction="true"  @close="isShowimgType=false">
+		</u-action-sheet>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	import upload from '@/components/upload.vue';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		components:{
+		},
+		data() {
+			return {
+				isShowcardValidity:false,
+				uploadType:'',
+				index:'',
+				isShowimgType:false,
+				validityPeriod:[],
+				dataDetails:{
+					phone:'',
+					businessLicenseAddressUrl:'',
+					propertyAddressUrl:'',
+					advanceFreightService:1
+				}
+			}
+		},
+		onLoad(options){
+			this.dataDetails.id=options.id
+			this.validityPeriod = this.$helper.makeValidityPeriod(0,30)
+			this.dataDetails.commonId=this.userInfo.id
+			this.dataDetails.phone=this.userInfo.phone
+			this.getList()
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
+			getList(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('get', '/companyInfo/getCompanyInfo', {id:this.dataDetails.id}).then(res => {
+					uni.hideLoading()
+					_this.dataDetails=res.data
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+			clickcancel(){
+				this.isShowcardValidity=false
+			},
+			imgTypeSelect(val) {
+				var _this=this
+				if (val.name == '相册') {
+					uni.chooseImage({
+						count: 1,
+						sourceType: this.$helper.chooseImage.sourceType,
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.businessLicenseAddressUrl=result
+									console.log(_this.dataDetails.businessLicenseAddressUrl)
+								}
+							)
+						}
+					});
+				} else {
+					uni.chooseImage({
+						count: 1,
+						sourceType: ['camera'],
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.businessLicenseAddressUrl=result
+								}
+							)
+						}
+					});
+				}
+			},
+			uploadImg(type, index) {
+				this.uploadType = type
+				this.isShowimgType = true
+				this.index = index
+			},
+			goDetailPage(src) {
+				uni.setStorage({key: 'companydata',data: JSON.stringify(this.dataDetails)});
+				uni.$u.route(src);
+			},
+			selectValidityPeriod() {
+				this.isShowcardValidity = true
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.businessTermDate = e.value[0]
+				} else {
+					this.dataDetails.businessTermDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isShowcardValidity = false
+			},
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+			
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+			
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
+		}
+	}
+</script>
+
+<style  lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.next{
+		color:#2772FB;
+		font-size:13px;
+	}
+	.wrap{
+		background:#fff;
+		padding:20rpx 30rpx;
+		border-radius:5px;
+		margin:20rpx;
+	}
+	.preview-card-img {
+		/deep/uni-image>div, uni-image>img {
+		    transform: scale(1.5) rotate(-90deg);
+		}
+	}
+	.picture {
+		margin-top: 20rpx;
+		background: #F5F6FA;
+		width: 212rpx;
+		height: 212rpx;
+		border-radius: 20rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		color: #6A7282;
+	}
+	.content1 {
+		background:#fff;
+		padding:40rpx 20rpx 20rpx;
+		margin:20rpx 20rpx 200rpx;
+		border-radius: 10rpx;
+		.row {
+			border-bottom: 1px solid #EEEEEE;
+			padding-bottom: 28rpx;
+			margin-top: 26rpx;
+	
+		}
+	
+		.left-text {
+			// background: red;
+			width: 320rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+			font-size:14px;
+		}
+	
+		.picture {
+			position: relative;
+			width: 100%;
+			height: 440rpx;
+			display: flex;
+			justify-content: center;
+			flex-direction: column;
+			align-items: center;
+	
+			.text {
+				margin-top: 20rpx;
+			}
+		}
+		.picture7 {
+			background: url(../../../static/mine/cy.png);
+			background-size: 100% 100%;
+		}
+	
+	
+		.xj-image {
+			width: 100rpx;
+			height: 100rpx;
+		}
+	
+		.title {
+			color: #999999;
+			margin: 20rpx 0;
+		}
+	}
+	.u-input{
+		font-size:16px;
+	}
+	.content4 {
+		position:fixed;
+		bottom:0;
+		background: white;
+		width:100%;
+		text-align:center;
+		left:0;
+		box-sizing: border-box;;
+		padding:10px 15px;
+		.line{
+			position:absolute;
+			left:0;
+			margin-top:-9px;
+			border-top:1px solid #eee;
+			width:100%;
+		}
+		.next-btn {
+			background: #F1F3F6;
+			width: 85%;
+			padding: 20rpx 20rpx;
+			text-align: center;
+			color: #C5CAD4;
+			border-radius: 50rpx;margin:0 auto;
+			margin-top:10px;
+		}
+	}
+	.del-card {
+		position: absolute;
+		top: -10rpx;
+		right: -6rpx;
+		width: 80rpx;
+		height: 80rpx;
+		z-index: 9;
+	}
+	.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+</style>

+ 88 - 0
pages/mine/company/editcompanythree.vue

@@ -0,0 +1,88 @@
+<template>
+	<view>
+		<view style='text-align:center;height:90vh;'>
+			<view style='transform: translateY(50%);'>
+				<image class="xj-image" src="@/static/mine/company/shipinrenzheng.png"></image>
+				<view class='hinttext'>请打开摄像头并阅读提示文字</view>
+			</view>
+		</view>
+		<view class="content4">
+			<view style='margin:0 0 18px;font-size:12px;color:#999;' class='flex items-center'>
+				<u--image style='margin-right:5px;' @click='consent'
+					:src="checked?'../../../static/mine/duihao@2x.png':'../../../static/mine/wxz.png'"
+					width="12px" height="12px"></u--image>
+					我已阅读并同意全部细则
+			</view>
+			<view class='line'></view>
+			<view class="next-btn" :class="checked?'active':'' " @click="goDetailPage('/pages/mine/company/companyvideo')">
+				开始
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				checked:false,
+			}
+		},
+		methods: {
+			consent(){
+				this.checked=!this.checked
+			},
+			goDetailPage(src) 
+			{
+				if(this.checked){
+					uni.$u.route(src);
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.xj-image{
+		width:216rpx;
+		height:216rpx;
+	}
+	.hinttext{
+		width:236rpx;
+		margin:80rpx auto 0;
+		font-size:32rpx;
+	}
+	.content4 {
+		position:fixed;
+		bottom:0;
+		background: white;
+		width:100%;
+		text-align:center;
+		left:0;
+		box-sizing: border-box;;
+		padding:10px 15px;
+		.line{
+			position:absolute;
+			left:0;
+			margin-top:-9px;
+			border-top:1px solid #eee;
+			width:100%;
+		}
+		.next-btn {
+			background: #F1F3F6;
+			width: 85%;
+			padding: 20rpx 20rpx;
+			text-align: center;
+			color: #C5CAD4;
+			border-radius: 50rpx;margin:0 auto;
+			margin-top:10px;
+		}
+		.next-btn.active{
+			background: #2772FB;
+			color:#fff;
+		}
+	}
+</style>

+ 279 - 0
pages/mine/company/editcompanytwo.vue

@@ -0,0 +1,279 @@
+<template>
+	<view>
+		<u-navbar leftText="返回" title="企业认证" :safeAreaInsetTop="false">
+			<view class="u-nav-slot" slot="left">
+		        <u-icon @click='navback' name="arrow-left" size="19"></u-icon>
+		    </view>
+			<view class="u-nav-slot" slot="right">
+				<view @click="goDetailPage('/pages/mine/company/addcompanythree')" class='next'>下一步</view>
+			</view>
+		</u-navbar>
+		<view class='content1'>
+			<view class="title">上传房产证或租赁合同</view>
+			<view style='position:relative;'>
+				<view v-if='!dataDetails.propertyAddressUrl' @click="uploadImg(1)" class="picture">
+					<image class="xj-image" src="@/static/mine/company/tianjiazhaopian@3x.png"></image>
+				</view>
+				<view v-if='dataDetails.propertyAddressUrl' @click.stop="uploadImg(1)"
+				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="uploadimage" :src="dataDetails.propertyAddressUrl" mode="aspectFit"></image>
+			</view>
+			</view>
+		</view>
+		<view class='content'>
+			<view class="flex row">
+				<view class="left-text">场地租赁截止日期</view>
+				<view style='font-size:16px;width:50%;' class='flex flex-space-between'  @click="selectValidityPeriod">
+					<view :style="{'color':dataDetails.siteLeaseDate ? '#000':'#C6CBD5'}">{{dataDetails.siteLeaseDate?dataDetails.siteLeaseDate:'选择日期'}}</view>
+					<view><u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+				</view>
+			</view>
+			<view class="flex row noborder">
+				<view style='width:285px;' class="left-text">申请开通平台垫付运费业务</view>
+				<view>
+					<u-switch @change="change" v-model="value" inactiveColor='#ABB0BB' size="20" ></u-switch>
+				</view>
+			</view>
+			<u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
+				@confirm="confirmValidityPeriod" @change="changeHandler"  @cancel="isShowcardValidity=false" >
+			</u-picker>
+		</view>
+		<view class='footer'>
+			<view @click="goDetailPage('/pages/mine/company/addcompanythree')" class='newlyIncreased'>下一步</view>
+		</view>
+		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
+			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
+		</u-action-sheet>
+	</view>
+</template>
+
+<script>
+	import upload from '@/components/upload.vue';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		data() {
+			return {
+				dataDetails:{},
+				value:false,
+				isShowcardValidity:false,
+				uploadType:'',
+				index:'',
+				isShowimgType:false,
+				validityPeriod:[]
+			}
+		},
+		onLoad(){
+			var _this=this
+			this.validityPeriod = this.$helper.makeValidityPeriod(0,100)
+			uni.getStorage({
+				key: 'companydata',
+				success: function (res) {
+					console.log(res.data);
+					_this.dataDetails = JSON.parse(res.data)
+					if(_this.dataDetails.advanceFreightService){
+						_this.value=true
+					}
+				}
+			});
+		},
+		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
+			change(e){
+				if(this.value){
+					_this.$set(_this.dataDetails,'advanceFreightService',1)
+				}else{
+					_this.$set(_this.dataDetails,'advanceFreightService',0)
+				}
+			},
+			imgTypeSelect(val) {
+				var _this=this
+				if (val.name == '相册') {
+					uni.chooseImage({
+						count: 1,
+						sourceType: this.$helper.chooseImage.sourceType,
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.$set(_this.dataDetails,'propertyAddressUrl',result)
+									console.log(_this.dataDetails)
+								}
+							)
+						}
+					});
+				} else {
+					uni.chooseImage({
+						count: 1,
+						sourceType: ['camera'],
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功回调函数
+									console.log('图片地址', result)
+									_this.dataDetails.propertyAddressUrl=result
+								}
+							)
+						}
+					});
+				}
+			},
+			uploadImg(type, index) {
+				this.uploadType = type
+				this.isShowimgType = true
+				this.index = index
+			},
+			goDetailPage(src) {
+				uni.setStorage({key: 'companydata',data: JSON.stringify(this.dataDetails)});
+				uni.$u.route(src);
+			},
+			selectValidityPeriod() {
+				this.isShowcardValidity = true
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				if (e.value[0] == '长期') {
+					this.dataDetails.siteLeaseDate = e.value[0]
+				} else {
+					this.dataDetails.siteLeaseDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+				}
+			
+				this.isShowcardValidity = false
+			},
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+			
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+			
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.preview-card-img {
+		/deep/uni-image.uploadimage {
+		   width:212rpx;
+		   height:212rpx;
+		}
+	}
+	.next{
+		color:#2772FB;
+		font-size:13px;
+	}
+	
+	.content1,.content {
+		background:#fff;
+		padding:40rpx 20rpx 40rpx;
+		margin:110rpx 20rpx 20rpx;
+		border-radius: 10rpx;
+		.row {
+			border-bottom: 1px solid #EEEEEE;
+			padding-bottom: 28rpx;
+			margin-top: 26rpx;
+	
+		}
+	
+		.left-text {
+			// background: red;
+			width: 320rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+		}
+	
+		.picture {
+			position: relative;
+			width: 212rpx;
+			height: 212rpx;
+			display: flex;
+			justify-content: center;
+			flex-direction: column;
+			align-items: center;
+			background:#F5F6FA;
+			.text {
+				margin-top: 20rpx;
+			}
+		}
+	
+	
+		.xj-image {
+			width: 46rpx;
+			height: 46rpx;
+		}
+	
+		.title {
+			color: #999999;
+			margin: 20rpx 0;
+		}
+	}
+	.content{
+		padding:20rpx 20rpx 20rpx;
+		margin:20rpx 20rpx 20rpx;
+		background:#fff;
+		border-radius: 10rpx;
+	}
+	.service {
+		font-size: 24rpx;
+		margin: 20rpx;
+		justify-content: center;
+	
+		/deep/.u-image {
+			margin: 0 20rpx;
+		}
+	}
+	
+	.del-card {
+		position: absolute;
+		top: -10rpx;
+		right: -6rpx;
+		width: 80rpx;
+		height: 80rpx;
+		z-index: 9;
+	}
+	.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+</style>

+ 69 - 0
pages/mine/company/editcompanyvideo.vue

@@ -0,0 +1,69 @@
+<template>
+	<view>
+		<view class='footer'>
+			<view @click="submit" class='newlyIncreased'>提交</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		onLoad(){
+			var _this=this
+			uni.getStorage({
+				key: 'companydata',
+				success: function (res) {
+					_this.dataDetails = JSON.parse(res.data)
+				}
+			});
+		},
+		methods: {
+			submit(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('post', '/companyInfo/api/editCompanyInfo', _this.dataDetails).then(res => {
+					uni.hideLoading()
+					uni.$u.toast('提交成功')
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+</style>

+ 168 - 0
pages/mine/company/index.vue

@@ -0,0 +1,168 @@
+<template>
+	<view>
+		<view v-if='company.length==0' style='text-align:center;transform: translateY(30%);'>
+			<image class='image zanwu' :showLoading="true" src="../../../static/mine/company/zanwu.png"></image>
+			<view style='font-size:13px;'>您还没有公司哦,快来添加吧~</view>
+			<view @click="goDetailPage('/pages/mine/company/addcompany')" class='add'>去添加</view>
+		</view>
+		<view v-else class='content'>
+			<view style='margin-bottom:10px;'>所属公司({{company.length}})</view>
+			<view v-for='item in company' class='wrap'>
+				<view class='flex flex-space-between'>
+					<view>{{item.companyName}}</view>
+					<view v-if='item.status=="已通过"' class='status passed'>{{item.status}}</view>
+					<view v-if='item.status=="审核中"' class='status aduit'>{{item.status}}</view>
+					<view v-if='item.status=="已驳回"' class='status reject'>{{item.status}}</view>
+				</view>
+				
+				
+				<view style='position: absolute;bottom:10px;width:95%;text-align:right;'>
+					<image v-if='item.status!="审核中"' @click='edit(item)' style='width:17px;height:17px;margin:0 10px;' src="@/static/mine/company/edit.png"></image>
+					<image @click='del(item)' style='width:17px;height:17px;margin:0 10px;' src="@/static/mine/company/del.png"></image>
+				</view>
+			</view>
+			<view class='footer'>
+				<view @click="goDetailPage('/pages/mine/company/addcompany')" class='newlyIncreased'>新增</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	export default {
+		
+		data() {
+			return {
+				company:[]
+			}
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		onLoad(){
+			var _this = this;
+			if (!this.hasLogin) {
+				uni.$u.route('/pages/public/login');
+			}
+			this.getList()
+		},
+		methods: {
+			goDetailPage(src) {
+				uni.$u.route(src);
+			},
+			edit(item){
+				this.goDetailPage('/pages/mine/company/editcompany?id='+item.id)
+			},
+			del(item){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('post', '/companyInfo/api/deleteCompany', {id:item.id}).then(res => {
+					uni.hideLoading()
+					uni.$u.toast('删除成功')
+					this.getList()
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			},
+			goDetailPage(src){
+				uni.$u.route(src);
+			},
+			getList(){
+				uni.showLoading({
+					title: '加载中',
+					mask:true
+				})
+				var _this=this
+				this.$request.baseRequest('get', '/companyInfo/selectCompany', {commonId:this.userInfo.id}).then(res => {
+					uni.hideLoading()
+					this.company=res.data
+				})
+				.catch(res => {
+					uni.hideLoading()
+					uni.showToast({
+						title: res.message,
+						icon: 'none',
+						duration: 2000
+					})
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background:#F5F6FA;
+	}
+	.zanwu{
+		width:235px;
+		height:235px;
+	}
+	.add{
+		width:106px;height:42px;
+		margin:36px auto 0;
+		color:#fff;
+		
+		background:url(../../../static/mine/company/Mask@3x.png);
+		background-size:100%;
+		line-height:42px ;
+	}
+	.wrap{
+		width:100%;
+		height:228rpx;
+		background:#fff;
+		border-radius:10rpx;
+		padding:24rpx;
+		box-sizing: border-box;
+		position:relative;
+	}
+	.status{
+		font-size:26rpx;
+		padding:5rpx 18rpx;
+		color:#fff;
+		border-radius:20rpx;
+	}
+	.status.passed{
+		background:#25E491;
+	}
+	.status.aduit{
+		background:#FE8031;
+	}
+	.status.reject{
+		background:#FC5A51;
+	}
+	.content{
+		margin-bottom:200rpx;
+	}
+	.footer{
+		position:fixed;
+		background:#fff;
+		width:100%;
+		bottom:0;
+		left:0;
+		padding:15px 15px 30px;
+		box-sizing: border-box;
+	}
+	.newlyIncreased{
+		width:100%;
+		margin:0 auto;
+		text-align:center;
+		height:46px;
+		line-height: 46px;
+		color:#fff;
+		background:url(../../../static/mine/huozhurenzheng/Mask@3x.png) no-repeat;
+		background-size:100%;
+	}
+</style>

+ 7 - 7
pages/mine/driverCertification.vue

@@ -265,7 +265,7 @@
 			},
 			// 回调参数为包含columnIndex、value、values
 			confirmValidityPeriod(e) {
-				debugger
+				// debugger
 				console.log('confirm', e)
 				if (e.value[0] == '长期') {
 					this.dataDetails.cardValidityDate = e.value[0]
@@ -298,7 +298,7 @@
 			},
 			//设置图片
 			setImage(e) {
-				debugger
+				// debugger
 				console.log(e);
 				//显示在页面
 				//this.imagesrc = e.path;
@@ -312,7 +312,7 @@
 			},
 			//保存图片到相册,方便核查
 			savePhoto(path) {
-				debugger
+				// debugger
 				this.imagesrc = path;
 				uploadImage(path, 'appData/',
 					result => {
@@ -332,7 +332,7 @@
 				// });
 			},
 			uploadImg(type, val) {
-				debugger
+				// debugger
 				this.uploadType = type
 				this.isShowimgType = true
 				this.carInfo = val
@@ -355,7 +355,7 @@
 
 			},
 			imgTypeSelect(val) {
-				debugger
+				// debugger
 				console.log(val)
 				console.log(this.uploadType)
 				if (val.name == '相册') {
@@ -449,12 +449,12 @@
 				// 	})
 				// })
 			},
-			handleClick(e) {debugger
+			handleClick(e) {
 				this.carNumber = e.value
 				this.dataDetails.driverCarInfoList[this.index].carNumber = e.value //键盘输入值
 			},
 			handleShowKeyboard(index) {
-				debugger
+				// debugger
 				if (this.dataDetails.driverCarInfoList[index].carNumber == '') {
 					this.carNumber = ''
 				} else {

+ 3 - 3
pages/mine/driverCertificationNext.vue

@@ -131,7 +131,7 @@
 			},
 			//设置图片
 			setImage(e) {
-				debugger
+				// debugger
 				console.log(e);
 				//显示在页面
 				//this.imagesrc = e.path;
@@ -145,7 +145,7 @@
 			},
 			//保存图片到相册,方便核查
 			savePhoto(path) {
-				debugger
+				// debugger
 				this.imagesrc = path;
 				uploadImage(path, 'appData/',
 					result => {
@@ -220,7 +220,7 @@
 					});
 
 				} else {
-					debugger
+					// debugger
 					switch (this.uploadType) {
 						case 0:
 

+ 53 - 11
pages/mine/index.vue

@@ -6,22 +6,23 @@
 				<view style='margin-bottom:14px;' class="row flex flex-end">
 					<u--image class='image' :showLoading="true" src="../../static/mine/saoma.png" width="20px"
 						height="20px"></u--image>
-					<u--image style='margin-right:0;' class='image' :showLoading="true" src="../../static/mine/shezhi.png" width="20px"
+					<u--image @click="goDetailPage('/pages/mine/set')" style='margin-right:0;' class='image' :showLoading="true" src="../../static/mine/shezhi.png" width="20px"
 						height="20px"></u--image>
 				</view>
 				<view class="flex">
-					<u--image :showLoading="true" src="https://cdn.uviewui.com/uview/album/1.jpg" width="56px"
+					<u--image :showLoading="true" :src="userInfo.avatarUrl?userInfo.avatarUrl:'../../static/mine/avatar1.png'" width="56px"
 					height="56px"></u--image>
 					<view class='information' v-if='hasLogin'>
 						<view class='flex items-center'>
-							<view class='username'>李振华</view>
-							<view class='currectstatus'>已认证</view>
+							<view class='username'>{{userName}}</view>
+							<view v-if='status' class='currectstatus'>已认证</view>
+							<view v-if='!status' class='currectstatus1'>未认证</view>
 						</view>
-						<view class='phone'>18513069273</view>
+						<view class='phone'>{{phone}}</view>
 					</view>
 					<view class='information' v-else @click="toLogin">立即登录</view>
 				</view>
-				<view class='authentication flex flex-space-between'>
+				<view v-if='hasLogin&&!status' class='authentication flex flex-space-between'>
 					<view>
 						<view style='font-size:14px;'>货主身份认证</view>
 						<view style='color:#DDA558;font-size:12px;'>您还没有完成货主认证哦~</view>
@@ -41,11 +42,15 @@
 				</view>
 			</view>
 			<view class="content1">
-
-				<view class="flex flex-space-between content1-item" @click="goDetailPage('/pages/mine/manageBankCards/index')">
+				<view class="flex flex-space-between content1-item" @click="goDetailPage('/pages/mine/cargoowner/cargoowner')">
+					<view class='flex items-center'><u--image style='margin-right:8px;' :showLoading="true" src="../../static/mine/huozhu.png" width="20px"
+						height="20px"></u--image>货主认证</view>
+					<view class='flex'> <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/company/index')">
 					<view class='flex items-center'><u--image style='margin-right:8px;' :showLoading="true" src="../../static/mine/wodegongsi.png" width="20px"
 						height="20px"></u--image>我的公司</view>
-					<view class='flex'> 证件过期 <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon></view>
+					<view class='flex'> <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/manageVehicles/index')">
 					<view class='flex items-center'><u--image style='margin-right:8px;' :showLoading="true" src="../../static/mine/dailihuozhu.png" width="20px"
@@ -75,11 +80,40 @@
 		data() {
 			return {
 				userName:'',
+				phone:'',
+				status:false,
 			};
 		},
 		onLoad() {
+			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=false
+				}
+			})
+			.catch(res => {
+				uni.hideLoading()
+				uni.showToast({
+					title: res.message,
+					icon: 'none',
+					duration: 2000
+				})
+			});
 			// debugger
 			this.userName = this.userInfo.userName
+			this.phone=this.userInfo.phone.replace(this.userInfo.phone.substring(3,7), "****")
 		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo']),
@@ -134,7 +168,7 @@
 		font-size:21px;
 	}
 	.information{
-		margin:0 0 36px 17px;
+		margin:0 0 10px 17px;
 	}
 	.currectstatus{
 		font-size:10px;
@@ -143,6 +177,14 @@
 		border-radius:10px;
 		margin:0 6px;
 	}
+	.currectstatus1{
+		font-size:10px;
+		color:#fff;
+		background: linear-gradient(145deg, #C1C3CC 0%, #85909E 100%);
+		padding:1px 6px;
+		border-radius:10px;
+		margin:0 6px;
+	}
 	.phone{
 		color:#8F97AB;
 		font-size:13px;
@@ -154,7 +196,7 @@
 		background:#fff;
 		border-radius:10px;
 		padding:10px 15px;
-		margin-bottom:15px;
+		margin:15px 0;
 	}
 	.content1{
 		background:#fff;

+ 2 - 2
pages/mine/manageBankCards/addBankCard.vue

@@ -78,7 +78,7 @@
 		methods: {
 			//设置图片
 			setImage(e) {
-				debugger
+				// debugger
 				console.log(e);
 				//显示在页面
 				//this.imagesrc = e.path;
@@ -92,7 +92,7 @@
 			},
 			//保存图片到相册,方便核查
 			savePhoto(path) {
-				debugger
+				// debugger
 				this.imagesrc = path;
 				uploadImage(path, 'appData/',
 					result => {

+ 3 - 0
pages/mine/manageVehicles/index.vue

@@ -73,6 +73,9 @@
 				uni.$u.route('/pages/public/login');
 			}
 		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
 		methods: {
 			addCar() {
 				uni.$u.route('/pages/mine/manageVehicles/addVehicle');

+ 61 - 68
pages/mine/set.vue

@@ -1,18 +1,16 @@
 <template>
 	<view class="content">
-		<view class="cu-list menu text-left solid-top indexlow">
-			<view class='flex flex-space-between' @click="switchPicture">
-				<view>
-					<text>头像</text>
-				</view>
-				<view style='align-items: center;' class="flex">
-					<view class="pictures">
-						<image :src="headUrl" class="picture"></image>
-					</view>
-					<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
-				</view>
+		<view class='avatar'>
+			<image :src="headUrl" class="picture"></image>
+			<view class='setavatar'>
+				<image style='width:39px;height:39px;' src="../../static/mine/set/setavatar.png"></image>
 			</view>
-			<view class='flex flex-space-between' @click="nickname(username)">
+			<view style='font-size:12px;color:#999;margin-bottom:20px;' class="">
+				未上传头像
+			</view>
+		</view>
+		<view class='wrap'>
+			<view class='flex flex-space-between  wrap-item' @click="nickname(username)">
 				<view>
 					<text>姓名</text>
 				</view>
@@ -23,25 +21,28 @@
 					<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
 				</view>
 			</view>
-			<view class='flex flex-space-between' @click='UpdataPassword'>
+			<view class='flex flex-space-between  wrap-item' @click='UpdataPassword'>
 				<view>
 					<text>修改账号</text>
 				</view>
 				<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
 			</view>
-			<view class='flex flex-space-between' @click='UpdataPassword'>
+			<view class='flex flex-space-between wrap-item' @click='UpdataPassword'>
 				<view>
 					<text>修改密码</text>
 				</view>
 				<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
 			</view>
-			<view class='flex flex-space-between' @click='fankui'>
+		</view>
+		<view class='wrap'>
+			<view class='flex flex-space-between wrap-item' @click='fankui'>
 				<view>
 					<text>意见反馈</text>
 				</view>
 				<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
 			</view>
-			<view class='flex flex-space-between' @click='clearStorage'>
+			<u-line color="#EEEEEE" class="line"></u-line>
+			<view class='flex flex-space-between wrap-item' @click='clearStorage'>
 				<view>
 					<text>清除缓存</text>
 				</view>
@@ -51,9 +52,9 @@
 		<view class='exitloginwrap'>
 			<button @click='logout()' class='exitlogin'>退出登录</button>
 		</view>
-		<!-- <u-modal v-model="isShowAlert" :title-style="{fontSize: '18px',fontWeight:'500'}"
-			:content-style="{fontSize: '14px',fontWeight:'400'}" confirm-color='#22C572' confirm-text='确定' title='温馨提示'
-			showCancelButton='false' :content="content" @confirm="goOpenService" @cancel="cancelClick"></u-modal> -->
+		<u-modal :show="isShowAlert" :title-style="{fontSize: '18px',fontWeight:'500'}"
+			:content-style="{fontSize: '14px',fontWeight:'400'}" confirm-color='#22C572' confirm-text='确定' :title='title'
+			:showCancelButton='false' :content="content" @confirm="goOpenService" @cancel="cancelClick"></u-modal>
 	</view>
 </template>
 
@@ -66,7 +67,10 @@
 			return {
 				isShowAlert: false,
 				content: '您确定要退出吗?',
-				headUrl: "../../static/images/myimg/YongHu@3x.png",
+				show:false,
+				title:'温馨提示',
+				// content:'uView的目标是成为uni-app生态最优秀的UI框架',
+				headUrl: "@/static/mine/avatar1.png",
 				username: "",
 				gridList: [{
 					num: 0,
@@ -88,8 +92,9 @@
 		onLoad() {},
 		methods: {
 			UpdataPassword() {
+				console.log(1111)
 				uni.navigateTo({
-					url: `/pages/public/reset?phone=${this.userInfo.phone}`
+					url: `/pages/mine/settings/editPassword?phone=${this.userInfo.phone}`
 				})
 			},
 			clearStorage() {
@@ -110,10 +115,7 @@
 				})
 				uni.clearStorageSync();
 				var that = this
-				this.$api.doRequest('post', '/auth/api/logout').then(res => {
-					if (res.data.data) {
-
-					}
+				this.$request.baseRequest('post', '/auth/api/logout').then(res => {
 				})
 				this.$store.commit('logout')
 				this.$api.logout()
@@ -125,7 +127,7 @@
 				this.userInfo = uni.getStorageSync('userInfo')
 				this.headUrl = this.userInfo.avatarUrl
 				if (this.headUrl == null || this.headUrl == "") {
-					this.headUrl = "../../static/images/myimg/YongHu@3x.png"
+					this.headUrl = "../../static/mine/avatar1.png"
 				}
 				this.username = this.userInfo.userName
 			},
@@ -148,6 +150,7 @@
 				})
 			},
 			logout() {
+				this.show=true
 				// const that = this
 				this.isShowAlert = true
 				// uni.showModal({
@@ -178,25 +181,24 @@
 	page {
 		background-color: #F5F6FA;
 	}
-
+	.wrap{
+		background:#fff;
+		padding:10px 15px;
+		border-radius:5px;
+		margin:10px 0;
+		font-size:14px;
+		.wrap-item{
+			padding:10px 0;
+		}
+	}
+	.avatar{
+		text-align:center;
+	}
 	.container {
 		padding: 10px 0 0px;
 	}
-
-	.headPortrait {
-		width: 100%;
-		height: 52px;
-		margin-top: 15px;
-		background-color: #FFFFFF;
-		border-radius: 6px;
-		// justify-content: flex-end;
-	}
-
-	.title {
-		font-size: 16px;
-		line-height: 50px;
-		font-weight: 600;
-		margin-left: 10px;
+	.content{
+		padding:0 20px;
 	}
 
 	.pictures {
@@ -208,51 +210,42 @@
 	}
 
 	.picture {
-		width: 35px;
-		height: 35px;
+		width: 58px;
+		height: 58px;
 	}
-
 	.arrow {
 		margin-left: 15px;
 		width: 8px;
 		height: 12px;
 		// justify-content: flex-end
-
-	}
-
-	.username {
-		line-height: 50px;
-		color: #6D6D72;
-	}
-
-	.sign {
-		width: 18px;
-		height: 18px;
-		top: 4px;
-		margin-right: 6px;
-	}
-
-	.cu-list>.cu-item:after {
-		border: none;
+	
 	}
 
 	.exitloginwrap {
-		position: fixed;
-		bottom: 0;
-		left: 0;
 		width: 100%;
 		padding-bottom: 20px;
 	}
 
 	.exitlogin {
-		width: 90%;
 		background: #fff;
-		border-radius: 30px;
-		color: #FB1E1E;
+		border-radius: 10px;
+		color: #2772FB;
 		font-size: 17px;
 	}
 
 	.exitlogin:after {
 		border: none;
 	}
+	.setavatar{
+		position:relative;
+		margin:0 auto;
+		width:58px;
+		height:10px;
+		image{
+			position:absolute;
+			bottom:1px;
+			left:50%;
+			transform: translateX(-50%);
+		}
+	}
 </style>

+ 139 - 0
pages/mine/settings/editAvatar.vue

@@ -0,0 +1,139 @@
+<template>
+	<view class="content">
+		<view @click="upload" class="picture">
+			<image class="xj-image"  v-if="!deptListurl.avatarUrl" src="@/static/images/common/tianjiazhaopian@2x.png"></image>
+			<image class="xj-image" :src="deptListurl.avatarUrl" v-if="deptListurl.avatarUrl"></image>
+			
+		</view>
+			<view @click="submit" class="submit">提交</view>
+		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
+			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true"
+			@close="isShowimgType=false">
+		</u-action-sheet>
+	</view>
+</template>
+
+<script>
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import {
+		mapState
+	} from 'vuex';
+	var that
+	export default {
+		data() {
+			return {
+					isShowimgType:false,
+					imgSrc:'',
+					deptListurl:{
+						avatarUrl:'',
+						id:''
+					}
+			}
+		},
+		onLoad() {
+			that = this
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo'])
+		},
+		methods: {
+			upload() {
+				this.isShowimgType = true
+			
+			},
+			imgTypeSelect(val) {
+				console.log(val)
+				if (val.name == '相册') {
+					uni.chooseImage({
+						count: 1,
+						sourceType: this.$helper.chooseImage.sourceType,
+						success: function(res) {
+							console.log(JSON.stringify(res.tempFilePaths));
+							uploadImage(res.tempFilePaths[0], 'appData/',
+								result => {
+									// 上传成功
+									console.log('图片地址', result)
+								that.deptListurl.avatarUrl = result
+			
+								}
+							)
+						}
+					});
+			
+				} else {
+			
+				}
+			
+			},
+			submit(){
+				this.deptListurl.id = this.userInfo.id
+				this.$request.baseRequest('post', '/commonUser/editUserInfo', this.deptListurl).then(res => {
+						uni.showToast({
+							title: '修改成功!',
+							icon: 'success',
+							duration: 2000,
+							success() {
+								setTimeout(()=>{
+									that.userInfo.avatarUrl = that.deptListurl.avatarUrl
+									var _student = uni.getStorageSync('userInfo');
+									_student.avatarUrl = that.deptListurl.avatarUrl;
+									uni.setStorageSync('userInfo', _student);
+									var name = 'userInfo';
+									var value = _student;
+									that.$store.commit('$uStore', {
+										name,
+										value
+									});
+									// this.$api.msg('修改成功2!')
+									uni.navigateBack({
+										delta:1
+									})
+								},2000)
+							}
+						})
+				
+					})
+					.catch(res => {
+					uni.$u.toast( res.message);
+					});
+			}
+		}
+	}
+</script>
+
+<style>
+	.content{
+		background: white;
+		padding: 20rpx;
+	}
+.left-text {
+			width: 290rpx;
+			color: #333333;
+			display: flex;
+			align-items: center;
+		}
+		.picture {
+			margin-top: 20rpx;
+			background: #F5F6FA;
+			width: 212rpx;
+			height: 212rpx;
+			border-radius: 10rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			color: #6A7282;
+		}
+		.xj-image {
+			width: 100rpx;
+			height: 100rpx;
+		}
+		.submit{
+			margin-top: 20rpx;
+			background: #2772FB;
+			border-radius: 50rpx;
+			padding: 20rpx 0;
+			color: white;
+			text-align: center;
+		}
+</style>

+ 208 - 0
pages/mine/settings/editPassword.vue

@@ -0,0 +1,208 @@
+<template>
+	<view class="u-page content">
+		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
+		<view class="wrapper">
+				<h2 class="Semibold">重置密码</h2>
+			<u--form labelPosition="left" :model="registerData" ref="registerForm" labelWidth="80">
+				<u-form-item label="电话" prop="phone" borderBottom>
+					<u--input v-model="registerData.phone" border="none" placeholder="请输入手机号码"></u--input>
+				</u-form-item>
+			
+				<u-form-item label="验证码" prop="code"borderBottom>
+					<u--input v-model="registerData.verifyCode" border="none" placeholder="请填写验证码"></u--input>
+					<u-button slot="right" @tap="getCode" :text="tips" size="mini" :disabled="disabled1" class="code-style">
+					</u-button>
+				</u-form-item>
+				<u-form-item label="新密码" prop="password" borderBottom>
+					<u--input v-model="registerData.password" border="none" placeholder="请输新入密码,6-16位字符"></u--input>
+				</u-form-item>
+			
+				<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true" @end="disabled1 = false">
+				</u-code>
+			</u--form>
+			<u-button class="code-style reset" @click='reset'>重置密码</u-button>
+		</view>
+
+
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	var _this;
+	import helper from '@/common/helper.js';
+	export default {
+		data() {
+			return {
+				disabled1: false,
+				tips: '',
+				registerData: {
+					phone: '',
+					password: '',
+					verifyCode: '',
+				},
+				rules: {
+					phone: {
+						type: 'string',
+						required: true,
+						len: 11,
+						message: '请填写11位手机号',
+						trigger: ['blur']
+					},
+					verifyCode: {
+						type: 'string',
+						required: true,
+						len: 6,
+						message: '请填写6位验证码',
+						trigger: ['blur']
+					},
+				}
+			}
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+			// 手机号中间4位加*
+			// starUserphone() {
+			// 	let reg = /^(\d{3})\d{4}(\d{4})$/;
+			// 	if (this.userphone) {
+			// 		return this.userphone.replace(reg, "$1****$2");
+			// 	}
+			// }
+		},
+		onReady() {
+			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
+			this.$refs.registerForm.setRules(this.rules)
+		},
+		onLoad() {
+			_this = this
+			this.registerData.phone = this.userInfo.phone
+		},
+		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
+			codeChange(text) {
+				this.tips = text;
+			},
+			// 获取验证码
+			getCode() {
+				if (/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.registerData.phone)) {
+					if (this.$refs.uCode.canGetCode) {
+
+						// 模拟向后端请求验证码
+						uni.showLoading({
+							title: '正在获取验证码'
+						})
+						_this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
+								phone: this.registerData.phone
+							}).then(res => {
+								uni.hideLoading();
+								// 这里此提示会被this.start()方法中的提示覆盖
+								uni.$u.toast('验证码已发送');
+								// 通知验证码组件内部开始倒计时
+								this.$refs.uCode.start();
+
+							})
+							.catch(res => {
+								uni.$u.toast(res.message);
+							});
+
+						// setTimeout(() => {
+
+						// }, 2000);
+					} else {
+						uni.$u.toast('倒计时结束后再发送');
+					}
+				} else {
+					uni.$u.toast('请输入正确手机号');
+				}
+
+			},
+
+
+			//修改密码
+			reset() {
+				uni.showLoading({
+					title: '加载中1'
+				})
+				this.$refs.registerForm.validate().then(res => {
+					uni.$u.toast('校验通过')
+					_this.isLoading = true
+					_this.$request.baseRequest('post', '/commonUser/resetPassword', _this.registerData).then(
+						res => {
+							// 获得数据
+							if (res.code == 200) {
+								uni.clearStorageSync();
+								this.$request.baseRequest('post', '/auth/api/logout').then(res => {
+									
+								})
+								this.$store.commit('logout')
+								// this.$api.logout()
+									uni.showToast({
+										title: '修改成功',
+										icon: 'none',
+										duration: 2000
+									})
+							uni.navigateTo({
+								url: `/pages/public/login`
+							})
+							} else {
+								uni.showToast({
+									title: "系统异常或验证码已过期,请退出重试",
+									icon: 'none',
+									duration: 2000
+								})
+							}
+							uni.hideLoading()
+						})
+						.catch(res => {
+							uni.$u.toast(res.message)
+						});
+				}).catch(errors => {
+					uni.$u.toast('校验失败')
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		background: url(~@/static/mine/bg@3x.png);
+		background-size: 100% 100%;
+		height: 100vh;
+		padding-top: 85px;
+		position: relative;
+	}
+
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: red;
+	}
+
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height: 100%;
+		padding: 0 30px;
+	}
+
+	.code-style {
+		background: #2772FB;
+		color: white;
+	}
+	.reset{
+		margin-top: 50rpx;
+	}
+	.Semibold{
+		margin-bottom: 50rpx;
+	}
+</style>

+ 161 - 0
pages/mine/settings/editPhone.vue

@@ -0,0 +1,161 @@
+<template>
+	<view class="u-page">
+		<u--form labelPosition="left" :model="registerData" ref="registerForm">
+			<u-form-item label="新电话" prop="phone" borderBottom labelWidth="120">
+				<u--input v-model="registerData.phone" border="none" placeholder="电话"></u--input>
+			</u-form-item>
+
+			<u-form-item label="验证码" prop="code" labelWidth="80" borderBottom>
+				<u--input v-model="registerData.verifyCode" border="none" placeholder="请填写验证码"></u--input>
+				<u-button slot="right" @tap="getCode" :text="tips" type="success" size="mini" :disabled="disabled1">
+				</u-button>
+			</u-form-item>
+			<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true" @end="disabled1 = false">
+			</u-code>
+		</u--form>
+		<u-button type="primary" @click='reset'>确定修改</u-button>
+
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	var _this;
+	import helper from '@/common/helper.js';
+	export default {
+		data() {
+			return {
+				disabled1: false,
+				tips: '',
+				registerData: {
+					id: '',
+					phone: '',
+					verifyCode: '',
+				},
+				rules: {
+					phone: {
+						type: 'string',
+						required: true,
+						len: 11,
+						message: '请填写11位手机号',
+						trigger: ['blur']
+					},
+					verifyCode: {
+						type: 'string',
+						required: true,
+						len: 6,
+						message: '请填写6位验证码',
+						trigger: ['blur']
+					},
+				}
+			}
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+			// 手机号中间4位加*
+			// starUserphone() {
+			// 	let reg = /^(\d{3})\d{4}(\d{4})$/;
+			// 	if (this.userphone) {
+			// 		return this.userphone.replace(reg, "$1****$2");
+			// 	}
+			// }
+		},
+		onReady() {
+			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
+			this.$refs.registerForm.setRules(this.rules)
+		},
+		onLoad() {
+			_this = this
+			// this.registerData.phone = this.userInfo.phone
+			this.registerData.id = this.userInfo.id
+		},
+		methods: {
+			codeChange(text) {
+				this.tips = text;
+			},
+			// 获取验证码
+			getCode() {
+				if (/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.registerData.phone)) {
+					if (this.$refs.uCode.canGetCode) {
+
+						// 模拟向后端请求验证码
+						uni.showLoading({
+							title: '正在获取验证码'
+						})
+						_this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
+								phone: this.registerData.phone
+							}).then(res => {
+								uni.hideLoading();
+								// 这里此提示会被this.start()方法中的提示覆盖
+								uni.$u.toast('验证码已发送');
+								// 通知验证码组件内部开始倒计时
+								this.$refs.uCode.start();
+
+							})
+							.catch(res => {
+								uni.$u.toast(res.message);
+							});
+
+						// setTimeout(() => {
+
+						// }, 2000);
+					} else {
+						uni.$u.toast('倒计时结束后再发送');
+					}
+				} else {
+					uni.$u.toast('请输入正确手机号');
+				}
+
+			},
+
+
+			//修改账号
+			reset() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$refs.registerForm.validate().then(res => {
+					_this.isLoading = true
+					this.$request.baseRequest('post', '/commonUser/resetAccount', _this.registerData).then(res => {
+							if (res.code == 200) {
+								uni.clearStorageSync();
+								this.$request.baseRequest('post', '/auth/api/logout').then(res => {
+									this.$store.commit('logout')
+									// this.$api.logout()
+									setTimeout(function(){
+										uni.showToast({
+											title: '修改成功',
+											icon: 'none',
+											duration: 2000
+										})
+										uni.navigateTo({
+											url: `/pages/public/login`
+										})
+									},1000)
+								
+								})
+							} else {
+								uni.showToast({
+									title: res.message,
+									icon: 'none',
+									duration: 2000
+								})
+							}
+							uni.hideLoading()
+						})
+						.catch(res => {
+							uni.$u.toast(res.message);
+						});
+				}).catch(errors => {
+					uni.$u.toast('校验失败')
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 31 - 0
pages/mine/settings/feedback.vue

@@ -0,0 +1,31 @@
+<template>
+	<view>
+		意见反馈
+		<!-- <suggest @submit="submit"></suggest> -->
+	</view>
+</template>
+
+<script>
+	import suggest from "@/components/bert-suggest/suggest.vue"
+	export default {
+	    components: { suggest },
+	    methods: {
+	        submit(v) {
+				uni.showModal({
+					title: '提示',
+					content: "感谢您提供反馈意见,我们将立即联系您",
+					showCancel: false,
+					confirmText: '确定',
+					success: () => {
+						uni.navigateBack()
+					}
+				})
+	            console.log(v)
+	        }
+	    }
+	}
+</script>
+
+<style>
+
+</style>

+ 160 - 58
pages/public/login.vue

@@ -1,25 +1,36 @@
 <template>
-	<view class="u-page">
-		<u--form labelPosition="left" :model="model1" ref="form1">
-			<u-form-item label="电话" prop="phone" borderBottom ref="item1">
-				<u--input v-model="model1.phone" border="none" placeholder="电话"></u--input>
-			</u-form-item>
+	<view class="u-page content">
+		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
+		<view class="wrapper">
+			<image style='width:38px;height:38px;margin-bottom:10px;' src='@/static/logo.png'></image>
+			<h2 class="title">欢迎使用网络货运</h2>
+			<u--form labelPosition="left" :model="dataDetails" ref="loginForm" labelWidth="80">
+				<u-form-item label="电话" prop="phone" borderBottom>
+					<u--input v-model="dataDetails.phone" border="none" placeholder="请输入手机号码"></u--input>
+				</u-form-item>
 
-			<u-form-item label="验证码" prop="code" labelWidth="80" borderBottom>
-				<u--input v-model="model1.code" border="none" placeholder="请填写验证码"></u--input>
-				<u-button slot="right" @tap="getCode" :text="tips" type="success" size="mini" :disabled="disabled1">
-				</u-button>
-			</u-form-item>
-			<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true" @end="disabled1 = false">
-			</u-code>
-		</u--form>
-		<u-button type="primary" text="提交" customStyle="margin-top: 50px" @click="submit"></u-button>
-		<u-button  type="primary" @click='goregister'>手机号一键注册</u-button>
-		<u-loading-page :loading="isLoading" bg-color="#e8e8e8"></u-loading-page>
+				<u-form-item label="验证码" prop="code" labelWidth="80" borderBottom>
+					<u--input v-model="dataDetails.code" border="none" placeholder="请填写验证码"></u--input>
+					<u-button slot="right" @tap="getCode" :text="tips" class="code-style" size="mini"
+						:disabled="disabled1">
+					</u-button>
+				</u-form-item>
+				<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true"
+					@end="disabled1 = false">
+				</u-code>
+			</u--form>
+			<u-button  @tap="login"class="code-style submit">登录</u-button>
+			<view @click='gonumber' class="use-password" style='text-align:center;color:#6A6A6A;'>使用账号密码登录</view>
+			<!-- <u-button type="primary" text="登录" customStyle="margin-top: 50px" @click="login()"></u-button>
+			<u-button type="primary" @click='goregister'>手机号一键注册</u-button> -->
+			<!-- <u-loading-page :loading="isLoading" bg-color="#e8e8e8"></u-loading-page> -->
+		</view>
+		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
 
 <script>
+	var _this
 	import helper from '@/common/helper.js';
 	export default {
 		data() {
@@ -29,72 +40,125 @@
 				tips: '',
 				showCalendar: false,
 				showBirthday: false,
-				model1: {
-					phone: '13333333333',
-					code: '123456'
+				dataDetails: {
+					phone: '',
+					code: ''
 				},
 				rules: {
+					phone: [
+						{
+							required: true,
+							message: '请输入手机号',
+							trigger: ['change', 'blur'],
+						},
+						{
+							// 自定义验证函数,见上说明
+							validator: (rule, value, callback) => {
+								// 上面有说,返回true表示校验通过,返回false表示不通过
+								// uni.$u.test.mobile()就是返回true或者false的
+								return uni.$u.test.mobile(value);
+							},
+							message: '手机号码不正确',
+							// 触发器可以同时用blur和change
+							trigger: [ 'blur'],
+						}
+					],
 					code: {
 						type: 'string',
 						required: true,
 						len: 6,
-						message: '请填写4位验证码',
-						trigger: ['blur']
+						message: '请填写6位验证码',
+						trigger: ['blur'],
 					},
 				}
 			}
 		},
 		onReady() {
 			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
-			this.$refs.form1.setRules(this.rules)
+			this.$refs.loginForm.setRules(this.rules)
+		},
+		onLoad() {
+			_this = this
 		},
 		methods: {
-
+			gonumber(){
+				uni.navigateTo({
+					url:'/pages/public/loginOther'
+				})
+			},
+			navBack() {
+				uni.navigateBack();
+			},
 			codeChange(text) {
 				this.tips = text;
 			},
 			getCode() {
-				if (this.$refs.uCode.canGetCode) {
-					// 模拟向后端请求验证码
-					uni.showLoading({
-						title: '正在获取验证码'
+				if (this.dataDetails.phone.length != 11) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "手机号输入错误",
 					})
-					setTimeout(() => {
-						uni.hideLoading();
-						// 这里此提示会被this.start()方法中的提示覆盖
-						uni.$u.toast('验证码已发送');
-						// 通知验证码组件内部开始倒计时
-						this.$refs.uCode.start();
-					}, 2000);
 				} else {
-					uni.$u.toast('倒计时结束后再发送');
+					if (this.$refs.uCode.canGetCode) {
+						// 模拟向后端请求验证码
+						uni.showLoading({
+							title: '正在获取验证码'
+						})
+						_this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
+								phone: this.dataDetails.phone
+							}).then(res => {
+								uni.hideLoading();
+								// 这里此提示会被this.start()方法中的提示覆盖
+								uni.$u.toast('验证码已发送');
+								// 通知验证码组件内部开始倒计时
+								this.$refs.uCode.start();
+
+							})
+							.catch(res => {
+								uni.$u.toast(res.message);
+							});
+					} else {
+						uni.$u.toast('倒计时结束后再发送');
+					}
 				}
+
 			},
 
-			submit() {
-				let that = this
+			login() {
 				// 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
-				this.$refs.form1.validate().then(res => {
+				this.$refs.loginForm.validate().then(res => {
 					uni.$u.toast('校验通过')
 					this.isLoading = true
-					that.$request.baseRequest('get', '/commonUser/loginVerifyCode', {
-							phone: that.model1.phone,
-							verifyCode: that.model1.code
+					_this.dataDetails.loginFlag=1
+					_this.$request.baseRequest('get', '/commonUser/loginVerifyCode', {
+							phone: _this.dataDetails.phone,
+							verifyCode: _this.dataDetails.code
 						}).then(res => {
-							that.$request.TokenRequest('post', '/commonUser/api/loginQuickly', {
-								mobilePhone: that.model1.phone,
-								veriCode: that.model1.code
-							}).then(res1 => {
-								uni.setStorageSync('pcUserInfo', res1.data)
-								uni.setStorageSync('userInfo', res.data)
-								helper.getListByUserId()
-								that.$store.commit('login', res.data)
-								// that.liangxinLogin()
-								uni.switchTab({
-									url: '/pages/index/index'
-								});
-								this.isLoading = false
-							})
+									uni.setStorageSync('pcUserInfo', res.data)
+									uni.setStorageSync('userInfo', res.data)
+									helper.getListByUserId()
+									_this.$store.commit('login', res.data)
+									// that.liangxinLogin()
+									uni.switchTab({
+										url: '/pages/goodSource/index'
+									});
+									_this.isLoading = false
+
+
+							// that.$request.TokenRequest('post', '/commonUser/api/loginQuickly', {
+							// 	mobilePhone: that.model1.phone,
+							// 	veriCode: that.model1.code
+							// }).then(res1 => {
+							// 	uni.setStorageSync('pcUserInfo', res1.data)
+							// 	uni.setStorageSync('userInfo', res.data)
+							// 	helper.getListByUserId()
+							// 	that.$store.commit('login', res.data)
+							// 	// that.liangxinLogin()
+							// 	uni.switchTab({
+							// 		url: '/pages/index/index'
+							// 	});
+							// 	this.isLoading = false
+							// })
 
 						})
 						.catch(res => {
@@ -105,7 +169,10 @@
 							})
 						});
 				}).catch(errors => {
-					uni.$u.toast('校验失败')
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "校验失败",
+					})
 				})
 			},
 			reset() {
@@ -122,13 +189,48 @@
 			hideKeyboard() {
 				uni.hideKeyboard()
 			},
-			goregister(){
-					uni.$u.route('/pages/public/register');
+			goregister() {
+				uni.$u.route('/pages/public/register');
 			},
 		},
 	}
 </script>
 
 <style lang="scss">
+	.content {
+		background: url(~@/static/mine/bg@3x.png);
+		background-size: 100% 100%;
+		height: 100vh;
+		padding-top: 85px;
+		position: relative;
+	}
+
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: red;
+	}
 
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height: 100%;
+		padding: 0 30px;
+	}
+
+	.code-style {
+		background: #2772FB;
+		color: white;
+	}
+	.use-password{
+		margin-top: 31rpx;
+	}
+	.submit{
+		margin-top: 40rpx;
+	}
 </style>

+ 199 - 0
pages/public/loginOther.vue

@@ -0,0 +1,199 @@
+<template>
+	<view class="u-page content">
+		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
+		<view class="wrapper">
+			<image style='width:38px;height:38px;margin-bottom:10px;' src='@/static/logo.png'></image>
+			<h2 class="title">欢迎使用网络货运</h2>
+			<u--form labelPosition="left" :model="dataDetails" ref="loginForm" labelWidth="80">
+				<u-form-item label="电话" prop="phone" borderBottom>
+					<u--input v-model="dataDetails.phone" @input='passwordInput' border="none" placeholder="请输入手机号码">
+					</u--input>
+				</u-form-item>
+				<u-form-item label="密码" prop="password" borderBottom>
+					<u--input v-model="dataDetails.password" @input='passwordInput' border="none"
+						placeholder="请输入密码,6-16位字符"></u--input>
+				</u-form-item>
+			</u--form>
+			<u-button @tap="login" class="code-style submit" :disabled="isdisabled">登录</u-button>
+			<u-button @click='goregister' class="code-style submit">手机号一键注册</u-button>
+			<view class='flex' style='color:#6A6A6A;margin-top:10px;'>
+				<view style='flex:1;text-align:center;border-right:1px solid #E8E9ED;' class="Regular"
+					@click="forgetpass()">忘记密码</view>
+				<view @click='gocode' style='flex:1;text-align:center;' class="Regular">验证码登录</view>
+			</view>
+		</view>
+		<u-toast ref="uToast"></u-toast>
+	</view>
+</template>
+
+<script>
+	var _this
+	import helper from '@/common/helper.js';
+	export default {
+		data() {
+			return {
+				isdisabled: true,
+				dataDetails: {
+					phone: '',
+					password: ''
+				},
+				rules: {
+					phone: [{
+							required: true,
+							message: '请输入手机号',
+							trigger: ['blur'],
+						},
+						{
+							// 自定义验证函数,见上说明
+							validator: (rule, value, callback) => {
+								// 上面有说,返回true表示校验通过,返回false表示不通过
+								// uni.$u.test.mobile()就是返回true或者false的
+								return uni.$u.test.mobile(value);
+							},
+							message: '手机号码不正确',
+							// 触发器可以同时用blur和change
+							trigger: ['blur'],
+						}
+					],
+					password: {
+						type: 'string',
+						required: true,
+						min: 6,
+						max: 16,
+						message: '长度在6-16位字符之间',
+						trigger: ['blur'],
+					},
+				}
+			}
+		},
+		onReady() {
+			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
+			this.$refs.loginForm.setRules(this.rules)
+		},
+		onLoad() {
+			_this = this
+		},
+		methods: {
+			passwordInput() {
+				if (this.dataDetails.password && this.dataDetails.phone) {
+					this.isdisabled = false
+				} else {
+					this.isdisabled = true
+				}
+			},
+			forgetpass() {
+				uni.navigateTo({
+					url: '/pages/mine/settings/editPassword'
+				})
+			},
+			goregister() {
+				uni.navigateTo({
+					url: '/pages/public/register'
+				})
+			},
+			gocode() {
+				uni.navigateTo({
+					url: '/pages/public/login'
+				})
+			},
+			navBack() {
+				uni.navigateBack();
+			},
+			codeChange(text) {
+				this.tips = text;
+			},
+
+			login() {
+				// 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
+				this.$refs.loginForm.validate().then(res => {
+					uni.showLoading({
+						title: '登录中',
+						mask:true
+					})
+					_this.dataDetails.loginFlag=1
+					_this.$request.baseRequest('get', '/commonUser/login', _this.dataDetails).then(res => {
+						uni.setStorageSync('pcUserInfo', res.data)
+						uni.setStorageSync('userInfo', res.data)
+						helper.getListByUserId()
+						_this.$store.commit('login', res.data)
+						uni.switchTab({
+							url: '/pages/goodSource/index'
+						});
+						uni.hideLoading()
+						})
+						.catch(res => {
+							
+							uni.showToast({
+								title: res.message,
+								icon: 'none',
+								duration: 2000
+							})
+						});
+				}).catch(errors => {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "校验失败",
+					})
+				})
+			},
+			reset() {
+				const validateList = ['userInfo.name', 'userInfo.sex', 'radiovalue1', 'checkboxValue1', 'intro',
+					'hotel', 'code', 'userInfo.birthday'
+				]
+				this.$refs.form1.resetFields()
+				this.$refs.form1.clearValidate()
+				setTimeout(() => {
+					this.$refs.form1.clearValidate(validateList)
+					// 或者使用 this.$refs.form1.clearValidate()
+				}, 10)
+			},
+			hideKeyboard() {
+				uni.hideKeyboard()
+			},
+			goregister() {
+				uni.$u.route('/pages/public/register');
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		background: url(~@/static/mine/bg@3x.png);
+		background-size: 100% 100%;
+		height: 100vh;
+		padding-top: 85px;
+		position: relative;
+	}
+
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: red;
+	}
+
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height: 100%;
+		padding: 0 30px;
+	}
+
+	.code-style {
+		background: #2772FB;
+		color: white;
+	}
+
+	.use-password {
+		margin-top: 31rpx;
+	}
+
+	.submit {
+		margin-top: 40rpx;
+	}
+</style>

+ 117 - 42
pages/public/register.vue

@@ -1,35 +1,39 @@
 <template>
-	<view class="u-page">
-		<u--form labelPosition="left" :model="registerData" ref="registerForm">
-			<u-form-item label="电话" prop="phone" borderBottom>
-				<u--input v-model="registerData.phone" border="none" placeholder="电话"></u--input>
-			</u-form-item>
-
-			<u-form-item label="验证码" prop="code" labelWidth="80" borderBottom>
-				<u--input v-model="registerData.verifyCode" border="none" placeholder="请填写验证码"></u--input>
-				<u-button slot="right" @tap="getCode" :text="tips" type="success" size="mini" :disabled="disabled1">
-				</u-button>
-			</u-form-item>
-			<u-form-item label="密码" prop="password" borderBottom>
-				<u--input v-model="registerData.password" border="none" placeholder="请输入密码,6-16位字符"></u--input>
-			</u-form-item>
-
-			<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true" @end="disabled1 = false">
-			</u-code>
-		</u--form>
-		<u-button type="primary" @click='register'>注册</u-button>
-		<view style='color:#6A6A6A;margin-top:10px;text-align:center;' class="flex">
-			<u--image @click='consent' :src="consentStatus==true?'../../static/images/login/select@2x.png':'../../static/images/login/selected2.png'"
-				width="40px" height="40px"></u--image>
-			<!-- <image @click='consent' style='width:14px;height:14px;position:relative;top:2px;margin-right:5px;'
-				:src="consentStatus==true?'../../static/img/login/select@2x.png':'../../static/img/login/selected2.png'"
-				alt=""></image> -->
-			已阅读并同意
-			<navigator url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/userAgreement.html"
-				class="path" hover-class="navigator-hover">《服务协议》</navigator>和<navigator
-				url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/screctAgreement.html"
-				class="path" hover-class="navigator-hover">《隐私政策》</navigator>
+	<view class="u-page content">
+		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
+		<view class="wrapper">
+			<h2 class="Semibold">手机号注册</h2>
+			<u--form labelPosition="left" :model="registerData" ref="registerForm" labelWidth="80">
+				<u-form-item label="电话" prop="phone" borderBottom>
+					<u--input v-model="registerData.phone" border="none" placeholder="请输入手机号码"></u--input>
+				</u-form-item>
+			
+				<u-form-item label="验证码" prop="verifyCode" labelWidth="80" borderBottom>
+					<u--input v-model="registerData.verifyCode" border="none" placeholder="请填写验证码"></u--input>
+					<u-button slot="right" @tap="getCode" :text="tips"  size="mini" :disabled="disabled1" class="code-style">
+					</u-button>
+				</u-form-item>
+				<u-form-item label="密码" prop="password" borderBottom>
+					<u--input v-model="registerData.password" border="none" placeholder="请输入密码,6-16位字符"></u--input>
+				</u-form-item>
+			
+				<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true" @end="disabled1 = false">
+				</u-code>
+			</u--form>
+			<u-button class="code-style register" @click='register'>注册</u-button>
+			<view class="flex service aligns-center">
+				<u--image class='check' @click='consent'
+					:src="consentStatus==true?'../../static/mine/duihao@2x.png':'../../static/mine/wxz.png'"
+					width="12px" height="12px"></u--image>
+				我已阅读并同意
+				<navigator
+					url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/userAgreement.html"
+					class="path" hover-class="navigator-hover">《服务协议》</navigator>和<navigator
+					url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/screctAgreement.html"
+					class="path" hover-class="navigator-hover">《隐私政策》</navigator>
+			</view>
 		</view>
+	
 	</view>
 </template>
 
@@ -47,23 +51,41 @@
 					phone: '',
 					password: '',
 					verifyCode: '',
-					userName: ''
 				},
 				rules: {
-					phone: {
-						type: 'string',
-						required: true,
-						len: 11,
-						message: '请填写11位手机号',
-						trigger: ['blur']
-					},
+					phone: [
+						{
+							required: true,
+							message: '请输入手机号',
+							trigger: ['change', 'blur'],
+						},
+						{
+							// 自定义验证函数,见上说明
+							validator: (rule, value, callback) => {
+								// 上面有说,返回true表示校验通过,返回false表示不通过
+								// uni.$u.test.mobile()就是返回true或者false的
+								return uni.$u.test.mobile(value);
+							},
+							message: '手机号码不正确',
+							// 触发器可以同时用blur和change
+							trigger: [ 'blur'],
+						}
+					],
 					verifyCode: {
 						type: 'string',
 						required: true,
 						len: 6,
 						message: '请填写6位验证码',
-						trigger: ['blur']
+						trigger: ['blur'],
 					},
+					password: {
+						type: 'string',
+						required: true,
+						min: 6,
+						max: 16,
+						message: '长度在6-16位字符之间',
+						trigger: ['blur'],
+					}
 				}
 			}
 		},
@@ -75,6 +97,9 @@
 			_this = this
 		},
 		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
 			codeChange(text) {
 				this.tips = text;
 			},
@@ -153,10 +178,11 @@
 					})
 					return
 				}
-				this.$refs.registerForm.validate().then(res => {debugger
+				this.$refs.registerForm.validate().then(res => {
 					_this.registerData.userName = _this.getRandomName(3)
-					uni.$u.toast('校验通过')
+					// uni.$u.toast('校验通过')
 					_this.isLoading = true
+					_this.registerData.loginFlag=1
 					_this.$request.baseRequest('post', '/commonUser/register', _this.registerData).then(res => {
 							if (res.data.code == '11002') {
 								uni.$u.toast('验证码错误或过期,请重新获取')
@@ -171,7 +197,6 @@
 								title: '登录中',
 								mask: true
 							})
-							debugger
 							_this.$request.baseRequest('get', '/commonUser/login', {
 								phone: _this.registerData.phone,
 								password: _this.registerData.password,
@@ -204,5 +229,55 @@
 </script>
 
 <style lang="scss">
+	.content {
+		background: url(~@/static/mine/bg@3x.png);
+		background-size: 100% 100%;
+		height: 100vh;
+		padding-top: 85px;
+		position: relative;
+	}
+	.check{
+		position:relative;
+		top:2px;
+	}
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: red;
+	}
 
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height: 100%;
+		padding: 0 30px;
+	}
+
+	.code-style {
+		background: #2772FB;
+		color: white;
+	}
+	.register{
+		margin-top: 50rpx;
+	}
+	.service {
+		font-size: 24rpx;
+		margin: 20rpx;
+		justify-content: center;
+	
+		/deep/.u-image {
+			margin: 0 20rpx;
+		}
+	}
+	.path{
+		color: #2772FB;
+	}
+	.Semibold{
+		margin-bottom: 50rpx;
+	}
 </style>

+ 11 - 0
static/css/common.scss

@@ -67,6 +67,17 @@
 .width100{
 	width: 100%;
 }
+.wrap{
+	background:#fff;
+	padding:10px 15px;
+	border-radius:5px;
+}
+
+// 文字相关end
+// 边线相关start
+.noborder{
+	border-bottom: none!important;
+}
 // 布局相关 end
 
 // 边线相关start

BIN
static/images/common/bz@2x.png


BIN
static/images/common/cy@2x.png


BIN
static/images/common/dingdan@2x(1).png


BIN
static/images/common/dingdan@2x.png


BIN
static/images/common/huoyuan@2x(1).png


BIN
static/images/common/huoyuan@2x.png


BIN
static/images/common/iconmy@2x.png


BIN
static/images/common/jt.png


BIN
static/images/common/mesicon@2x.png


BIN
static/images/common/my@2x.png


BIN
static/images/common/quxiao@2x.png


BIN
static/images/common/tianjiazhaopian@2x.png


BIN
static/images/common/top@2x.png


BIN
static/images/common/xiaoxi@2x.png


BIN
static/mine/avatar1.png


BIN
static/mine/company/Mask@3x.png


BIN
static/mine/company/del.png


BIN
static/mine/company/edit.png


BIN
static/mine/company/shipinrenzheng.png


BIN
static/mine/company/tianjiazhaopian@3x.png


BIN
static/mine/company/zanwu.png


BIN
static/mine/cy.png


BIN
static/mine/duihao@2x.png


BIN
static/mine/gh.png


BIN
static/mine/huozhu.png


BIN
static/mine/huozhurenzheng/Mask@3x.png


BIN
static/mine/huozhurenzheng/bg2.png


BIN
static/mine/ic_shanchuan@2x.png


BIN
static/mine/set/setavatar.png


BIN
static/mine/wxz.png


BIN
static/mine/yhkzm.png


BIN
static/mine/zm.png


+ 1 - 1
store/index.js

@@ -114,7 +114,7 @@ const store = new Vuex.Store({
 			saveLifeData(saveKey, state[saveKey])
 		},
 		login(state, provider) {
-			debugger
+			// debugger
 			state.hasLogin = true;
 			state.userInfo = provider;
 			uni.setStorageSync('userInfo', provider)

+ 1 - 0
uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue

@@ -170,6 +170,7 @@
 			close() {
 				// 允许点击遮罩关闭时,才发出close事件
 				if(this.closeOnClickOverlay) {
+					
 					this.$emit('close')
 				}
 			},

+ 1 - 0
uni_modules/uview-ui/components/u-popup/u-popup.vue

@@ -182,6 +182,7 @@
 				}
 			},
 			close(e) {
+				console.log(11111)
 				this.$emit('close')
 			},
 			afterEnter() {

+ 11 - 0
util/base.js

@@ -0,0 +1,11 @@
+let userInfo = undefined
+// 退出登录清除storage里的数据
+const logout = () => {
+	userInfo = undefined
+	uni.removeStorage({
+		key: 'userInfo'
+	})
+}
+export default {
+	logout
+}

+ 5 - 1
util/request.js

@@ -20,11 +20,15 @@ const baseRequest = (method, url, data,header) => {
 		let promise = new Promise(function(resolve, reject) {
 			uni.request(baseDefaultOpts).then(
 				(res) => {
-					console.log(JSON.stringify(res[1].data))
+					// console.log(JSON.stringify(res[1].data))
 					if(res[1].data.code == '200' || res[1].data.code == 200){
 						// 后端返回的状态码100为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值(以项目实际情况为准)
 						resolve(res[1].data)
 					}
+					// 登录失败
+					if(res[1].data.code == '11006' || res[1].data.code == 11006){
+						reject(res[1].data)
+					}
 					if(res[1].data.code == '105' || res[1].data.code == 105){
 						// 后端返回状态码为105则为未登录状态(以项目实际情况为准)
 						uni.showToast({

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff