Forráskód Böngészése

认证流程 页面改版

@dongkboy 1 éve
szülő
commit
135ec9f6c8
99 módosított fájl, 3841 hozzáadás és 2617 törlés
  1. 6 0
      App.vue
  2. 40 3
      components/modules/my/my-list-item.vue
  3. 129 0
      components/modules/user/authModal.vue
  4. 4 1
      components/uni-grid-item/uni-grid-item.vue
  5. 3 3
      config/baseUrl.js
  6. 220 217
      manifest.json
  7. 45 27
      pages.json
  8. 1 0
      pages/carInsure/Information.vue
  9. 2 1
      pages/carInsure/companyQuotable.vue
  10. 1 0
      pages/carInsure/entry.vue
  11. 2 1
      pages/carInsure/premiumCalc.vue
  12. 35 29
      pages/index/index.vue
  13. 442 192
      pages/my/my.vue
  14. 3 14
      pages/register/orderissuer.vue
  15. 1 5
      pages/register/register.vue
  16. 7 94
      pages/set/safe.vue
  17. 165 12
      pages/set/set.vue
  18. 317 86
      pages/tools/addStaff/addStaff.vue
  19. 367 0
      pages/tools/addStaff/authentication.vue
  20. 0 228
      pages/tools/addStaff/authentication1.vue
  21. 0 228
      pages/tools/addStaff/authentication2.vue
  22. 0 332
      pages/tools/addStaff/authentication3.vue
  23. 308 0
      pages/tools/addStaff/authenticationSearch.vue
  24. 88 67
      pages/tools/addStaff/authenticationdetails.vue
  25. 373 0
      pages/tools/addStaff/employeeAdditionCount.vue
  26. 12 12
      pages/tools/team/team1.vue
  27. 3 3
      pages/tools/team/teamMember1.vue
  28. 540 0
      pages/user/authInfo.vue
  29. 149 0
      pages/user/authResult.vue
  30. 125 0
      pages/user/authResult1.vue
  31. 0 697
      pages/user/certification.vue
  32. 0 90
      pages/user/infoExamine.vue
  33. 0 262
      pages/user/infoInput.vue
  34. 453 0
      pages/user/practitionerInfo.vue
  35. 0 13
      pages/user/userInfoImage.vue
  36. BIN
      static/image/addStaff/add.png
  37. BIN
      static/image/addStaff/banner.png
  38. BIN
      static/image/addStaff/bq1.png
  39. BIN
      static/image/addStaff/bq2.png
  40. BIN
      static/image/addStaff/kefu.png
  41. BIN
      static/image/addStaff/saveimg.png
  42. BIN
      static/image/addStaff/search.png
  43. BIN
      static/image/addStaff/share.png
  44. BIN
      static/image/addStaff/smsshare.png
  45. BIN
      static/image/addStaff/urlshare.png
  46. BIN
      static/image/addStaff/user.png
  47. BIN
      static/image/addStaff/zgcx.png
  48. BIN
      static/image/my/Frame1.png
  49. BIN
      static/image/my/Frame2.png
  50. BIN
      static/image/my/Frame3.png
  51. BIN
      static/image/my/Frame4.png
  52. BIN
      static/image/my/Frame5.png
  53. BIN
      static/image/my/Frame6.png
  54. BIN
      static/image/my/Frame7.png
  55. BIN
      static/image/my/Frame8.png
  56. BIN
      static/image/my/banner.png
  57. BIN
      static/image/my/chongzhi-icon.png
  58. BIN
      static/image/my/chongzhi-shape.png
  59. BIN
      static/image/my/chongzhi.png
  60. BIN
      static/image/my/decor1.png
  61. BIN
      static/image/my/icon1.png
  62. BIN
      static/image/my/icon10.png
  63. BIN
      static/image/my/icon11.png
  64. BIN
      static/image/my/icon12.png
  65. BIN
      static/image/my/icon13.png
  66. BIN
      static/image/my/icon2.png
  67. BIN
      static/image/my/icon3.png
  68. BIN
      static/image/my/icon4.png
  69. BIN
      static/image/my/icon5.png
  70. BIN
      static/image/my/icon6.png
  71. BIN
      static/image/my/icon7.png
  72. BIN
      static/image/my/icon8.png
  73. BIN
      static/image/my/icon9.png
  74. BIN
      static/image/my/ka-icon.png
  75. BIN
      static/image/my/ka-shape.png
  76. BIN
      static/image/my/ka.png
  77. BIN
      static/image/my/qianbao-icon.png
  78. BIN
      static/image/my/qianbao-shape.png
  79. BIN
      static/image/my/qianbao.png
  80. BIN
      static/image/my/qrcode.png
  81. BIN
      static/image/my/renzheng.png
  82. BIN
      static/image/my/right-jiantou.png
  83. BIN
      static/image/team/proxy2.png
  84. BIN
      static/image/team/proxy3.png
  85. BIN
      static/image/user/asset1.png
  86. BIN
      static/image/user/asset2.png
  87. BIN
      static/image/user/asset3.png
  88. BIN
      static/image/user/auth.png
  89. BIN
      static/image/user/bank.png
  90. BIN
      static/image/user/card.png
  91. BIN
      static/image/user/del.png
  92. BIN
      static/image/user/deny.png
  93. BIN
      static/image/user/error.png
  94. BIN
      static/image/user/identy1.png
  95. BIN
      static/image/user/identy2.png
  96. BIN
      static/image/user/pic1.jpg
  97. BIN
      static/image/user/success.png
  98. BIN
      static/image/user/wawit.png
  99. BIN
      static/image/user/zigezheng.png

+ 6 - 0
App.vue

@@ -251,5 +251,11 @@
 		display: none !important;
 	}
 
+	.uni-tabbar-bottom {
+		.uni-tabbar {
+			box-shadow: 0px -2px 5px 0px rgba(218, 227, 244, 0.2);
+		}
+	}
+
 	/* #endif */
 </style>

+ 40 - 3
components/modules/my/my-list-item.vue

@@ -6,14 +6,22 @@
 				<view v-if="item.icon" class="icon iconfont" :class="['icon-'+item.icon]"></view> {{item.name}}
 			</view>
 			<view class="d-flex a-center j-center rightText">
-				{{item.text}}
-				<view class="icon iconfont" :class="{'icon-youjiantou':!item.data}">{{item.data || ''}}</view>
+				<text v-if="item.clicktype!='auth'">{{item.text}}</text>
+				<view v-else class="auth"
+					:style="{background:item.backColor,border:`1px solid ${item.borderColor}`,color:item.borderColor}">
+					<text>{{item.text}}</text>
+				</view>
+				<image src="../../../static/image/my/right-jiantou.png" mode="" style="width: 15px;height: 15px;">
+				</image>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import {
+		mapState
+	} from "vuex"
 	const PACKAGE_INFO_KEY = '__package_info__'
 	export default {
 
@@ -29,8 +37,12 @@
 			//获取支付宝回调code
 
 		},
+		computed: {
+			...mapState(['userInfo'])
+		},
 		methods: {
 			clickevent() {
+				console.log(this.item);
 				switch (this.item.clicktype) {
 					case "navigateTo":
 						if (this.item.url) {
@@ -89,6 +101,25 @@
 							this.zhofubaobindother();
 						}
 						break;
+					case "auth":
+						if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
+							if (this.userInfo.sysUser.factorVerify == '2') {
+								uni.navigateTo({
+									url: this.item.url,
+								})
+							} else {
+								this.$emit('authModal', true);
+							}
+						} else if (this.userInfo.sysUser.status == '8' || this.userInfo.sysUser.status == '3') {
+							uni.navigateTo({
+								url: this.item.url
+							})
+						} else if (this.userInfo.sysUser.status == '2') {
+							uni.navigateTo({
+								url: this.item.url,
+							})
+						}
+						break;
 					case "nothing":
 						uni.showToast({
 							title: '更新中...',
@@ -148,7 +179,7 @@
 	}
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 	.home-list-item {
 		padding: 20upx;
 		border-top: 1upx solid #F4F4F4;
@@ -174,6 +205,12 @@
 
 	.rightText {
 		font-size: 30upx;
+
+		.auth {
+			border-radius: 2px 2px 2px 2px;
+			padding: 2px 4px;
+			font-size: 22rpx;
+		}
 	}
 
 	.icon {

+ 129 - 0
components/modules/user/authModal.vue

@@ -0,0 +1,129 @@
+<template>
+	<view class="page">
+		<u-mask :show="localAuthShow" class="dis a-c j-c">
+			<view class="auth-wrap">
+				<view class="header">
+					<text>实名认证</text>
+					<image src="../../../static/image/user/auth.png" mode="aspectFit"></image>
+				</view>
+				<view class="content dis f-c a-c">
+					<text>您好,成为 <text class="highlight">晋掌柜平台使用人</text>,需要先对您的身份信息进行核对,建议您先实名认证再进行车险报价等业务。</text>
+					<view class="dis a-c j-s" style="width: 100%;margin-top: 72rpx;">
+						<view class="btn1" @click.stop="onMaskClick">
+							<text>取消</text>
+						</view>
+						<view class="btn" @click.stop="onBtnClick">
+							<text>好的,去认证</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</u-mask>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'AuthPopup',
+		props: {
+			authShow: {
+				type: Boolean,
+				default: true,
+			},
+		},
+		data() {
+			return {
+				localAuthShow: this.authShow
+			};
+		},
+		watch: {
+			authShow(newVal) {
+				this.localAuthShow = newVal;
+			},
+		},
+		methods: {
+			onBtnClick() {
+				this.$emit('btnClick');
+				uni.navigateTo({
+					url: "/pages/user/authInfo"
+				})
+
+			},
+			onMaskClick() {
+				this.$emit('maskClick');
+			},
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	.auth-wrap {
+		width: 570rpx;
+		height: 390rpx;
+		border-radius: 12rpx;
+		position: relative;
+
+		.header {
+			width: 100%;
+			height: 118rpx;
+			background: linear-gradient(0deg, #4FA4F7 0%, #306CF1 100%);
+			border-radius: 12rpx 12rpx 0 0;
+			position: absolute;
+			padding: 20rpx 30rpx;
+
+			text {
+				font-size: 40rpx;
+				color: #FFFFFF;
+				font-weight: bold;
+				line-height: 1.5;
+			}
+
+			image {
+				position: absolute;
+				width: 180rpx;
+				height: 180rpx;
+				right: 30rpx;
+				top: -82rpx;
+			}
+		}
+
+		.content {
+			position: relative;
+			height: 390rpx;
+			background: linear-gradient(180deg, #EBF3FF 0%, #FFFFFF 100%);
+			border-radius: 12rpx;
+			margin-top: 98rpx;
+			padding: 56rpx 30rpx;
+
+			>text {
+				color: #333;
+				font-size: 28rpx;
+			}
+
+			.highlight {
+				color: #0052FF;
+				font-weight: bold;
+			}
+
+			.btn1 {
+				background: #FFFFFF;
+				box-shadow: 0px 4rpx 10rpx 0px rgba(0, 82, 255, 0.1);
+				border-radius: 8rpx;
+				border: 1px solid #4F88FD;
+				font-size: 32rpx;
+				color: #4F88FD;
+				padding: 8rpx 44rpx;
+			}
+
+			.btn {
+				background: linear-gradient(90deg, #0153FF 0%, #0D89FF 100%);
+				box-shadow: 0 4rpx 10rpx 0 rgba(0, 82, 255, 0.1);
+				border-radius: 8rpx;
+				padding: 8rpx 60rpx;
+				border: 1px solid #0D89FF;
+				color: #FFFFFF;
+				font-size: 32rpx;
+			}
+		}
+	}
+</style>

+ 4 - 1
components/uni-grid-item/uni-grid-item.vue

@@ -1,6 +1,9 @@
 <template>
 	<view v-if="width" :style="'width:'+width+';'+(square?'height:'+width:'')" class="uni-grid-item">
-		<view :class="{ 'uni-grid-item--border': showBorder,  'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }" :style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }" class="uni-grid-item__box" @click="_onClick">
+		<view
+			:class="{ 'uni-grid-item--border': showBorder,  'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }"
+			:style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }"
+			class="uni-grid-item__box" @click="_onClick">
 			<slot />
 		</view>
 	</view>

+ 3 - 3
config/baseUrl.js

@@ -4,7 +4,7 @@ let socketUrl = "";
 if (process.env.NODE_ENV === 'development') {
 	// 开发环境
 	// baseUrl = "http://192.168.0.115:8080"; //屈晨
-	// baseUrl = "http://192.168.0.52:8080"; //贺礼霄
+	// baseUrl = "http://192.168.0.55:8080"; //董鑫
 	// baseUrl = "http://192.168.0.253:8080"; //田智
 	// baseUrl = "https://test.baoxianzhanggui.com/web-api"; //测试
 	// h5BaseUrl = "https://test.baoxianzhanggui.com/h5";
@@ -21,8 +21,8 @@ if (process.env.NODE_ENV === 'development') {
 	// h5BaseUrl = "https://test.baoxianzhanggui.com/h5";
 	// baseUrl = "https://pre.baoxianzhanggui.com/web-api"; //预生产
 	// h5BaseUrl = "https://pre.baoxianzhanggui.com/h5";
-	baseUrl = "https://sxzgkj.baoxianzhanggui.com/web-api"; //生产
-	h5BaseUrl = "https://sxzgkj.baoxianzhanggui.com/h5";
+	// baseUrl = "https://sxzgkj.baoxianzhanggui.com/web-api"; //生产
+	// h5BaseUrl = "https://sxzgkj.baoxianzhanggui.com/h5";
 	socketUrl = "wss://sxzgkj.baoxianzhanggui.com/web-api/websocket";
 }
 const courtConfig = {

+ 220 - 217
manifest.json

@@ -1,219 +1,222 @@
 {
-	"name": "晋掌柜",
-	"appid": "__UNI__D4FE29A",
-	"description": "保险类app",
-	"transformPx": false,
-	"icons": [{
-		"sizes": "分辨率,192x192",
-		"src": "图片路径"
-	}],
-	"versionName": "3.0.3",
-	"versionCode": 303,
-	"app-plus": {
-		"error": {
-			"url": "hybrid/html/error.html"
-		},
-		"compatible": {
-			"ignoreVersion": true
-		},
-		"privacy": {
-			"prompt": "template",
-			"template": {
-				"title": "平台协议和隐私协议",
-				"message": "欢迎使用晋掌柜app,我们非常重视您的个人信息和隐私保护。我们将通过《隐私权保护政策》帮助您了解我们收集、使用、存储、共享和保护个人信息的情况,以及您所享有的相关权利。<br/> 为了更好的向您提供注册认证、线上投保、以及周边服务等相关服务功能,我们会收集、使用必要的信息。包括但不限于:<br/>1、为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。2、在使用道路救援功能时,基于您的授权我们可能会获取您的位置信息,以便为您提供服务。您有权拒绝或取消授权。在使用线上投保以及注册等功能时, 基于您的授权我们会获取您的相册存储的权限, 以便在使用时能够正确的上传个人资料。获取通知权限, 用于向您发送重要通知, 如服务更新或安全提醒。<br/>   请仔细阅读<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/xieyi'>《平台协议》</a>和<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/mimi'>《隐私协议》</a>了解详细信息。我们将按照您同意的条款使用您的个人信息,以便为您提供服务。",
-				"buttonAccept": "同意",
-				"buttonRefuse": "暂不同意"
-			}
-		},
-		"modules": {
-			"Messaging": {},
-			"OAuth": {},
-			"Payment": {},
-			"Share": {},
-			"SQLite": {
-				"description": "iBeacon"
-			},
-			"Camera": {},
-			"Maps": {},
-			"Geolocation": {}
-		},
-		"distribute": {
-			"android": {
-				"permissionPhoneState": {
-					"request": "none",
-					"prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
-				},
-				"permissionExternalStorage": {
-					"request": "none",
-					"prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
-				},
-				"permissions": [
-					"<uses-feature android:name=\"android.hardware.camera\"/>",
-					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-					"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
-					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-					"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
-					"<uses-permission android:name=\"android.permission.INTERNET\"/>",
-					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.READ_SMS\"/>",
-					"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
-					"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
-					"<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
-					"<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
-					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-					"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
-					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
-					"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
-				],
-				"abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"],
-				"minSdkVersion": 21,
-				"schemes": "zgcxapp",
-				"targetSdkVersion": 30
-			},
-			"sdkConfigs": {
-				"ad": {
-					"ks": {},
-					"sigmob": {}
-				},
-				"payment": {
-					"weixin": {
-						"__platform__": ["android"],
-						"appid": "wx612ca90988c46947",
-						"UniversalLinks": ""
-					}
-				},
-				"share": {
-					"weixin": {
-						"appid": "wx612ca90988c46947",
-						"UniversalLinks": ""
-					}
-				},
-				"oauth": {
-					"weixin": {
-						"appid": "wx612ca90988c46947",
-						"appsecret": "75b7d4cda453b2075dec23f849278bc0",
-						"UniversalLinks": ""
-					}
-				},
-				"geolocation": {
-					"amap": {
-						"name": "amap_18335592986CWFSxSLAB",
-						"__platform__": ["android"],
-						"appkey_ios": "e410fdbf6be7110af9267b6d56c93c8d",
-						"appkey_android": "e410fdbf6be7110af9267b6d56c93c8d"
-					},
-					"system": {
-						"__platform__": ["ios", "android"]
-					}
-				},
-				"push": {
-					"unipush": {
-						"appid": "YDcU8mcWRO6MWIT1i4naP2",
-						"appkey": "DK2LTzhnc87pFFFhcTSgs8",
-						"appsecret": "wTUMKWB4ReAoPyCp7Jyaz9"
-					}
-				},
-				"maps": {
-					"amap": {
-						"name": "amap_18335592986CWFSxSLAB",
-						"appkey_ios": "e410fdbf6be7110af9267b6d56c93c8d",
-						"appkey_android": "e410fdbf6be7110af9267b6d56c93c8d"
-					}
-				}
-			},
-			"icons": {
-				"android": {
-					"hdpi": "unpackage/res/icons/72x72.png",
-					"xhdpi": "unpackage/res/icons/96x96.png",
-					"xxhdpi": "unpackage/res/icons/144x144.png",
-					"xxxhdpi": "unpackage/res/icons/192x192.png"
-				},
-				"ios": {
-					"appstore": "unpackage/res/icons/1024x1024.png",
-					"ipad": {
-						"app": "unpackage/res/icons/76x76.png",
-						"app@2x": "unpackage/res/icons/152x152.png",
-						"notification": "unpackage/res/icons/20x20.png",
-						"notification@2x": "unpackage/res/icons/40x40.png",
-						"proapp@2x": "unpackage/res/icons/167x167.png",
-						"settings": "unpackage/res/icons/29x29.png",
-						"settings@2x": "unpackage/res/icons/58x58.png",
-						"spotlight": "unpackage/res/icons/40x40.png",
-						"spotlight@2x": "unpackage/res/icons/80x80.png"
-					},
-					"iphone": {
-						"app@2x": "unpackage/res/icons/120x120.png",
-						"app@3x": "unpackage/res/icons/180x180.png",
-						"notification@2x": "unpackage/res/icons/40x40.png",
-						"notification@3x": "unpackage/res/icons/60x60.png",
-						"settings@2x": "unpackage/res/icons/58x58.png",
-						"settings@3x": "unpackage/res/icons/87x87.png",
-						"spotlight@2x": "unpackage/res/icons/80x80.png",
-						"spotlight@3x": "unpackage/res/icons/120x120.png"
-					}
-				}
-			},
-			"splashscreen": {
-				"androidStyle": "common",
-				"useOriginalMsgbox": true
-			},
-			"ios": {
-				"dSYMs": false,
-				"urltypes": "zgcxapp"
-			}
-		},
-		"compilerVersion": 3,
-		"nvueLaunchMode": "fast",
-		"splashscreen": {
-			"alwaysShowBeforeRender": true
-		},
-		"nativePlugins": {}
-	},
-	// 5+App特有相关
-	"quickapp": {},
-	// 快应用特有相关
-	"mp-weixin": {
-		"setting": {
-			"urlCheck": false,
-			"es6": false,
-			"postcss": false,
-			"minified": false
-		},
-		"usingComponents": true,
-		"appid": "wxe57ddfbe230bcfba",
-		"permission": {}
-	},
-	"h5": {
-		"template": "template.h5.html",
-		"router": {
-			"mode": "hash",
-			"base": "./"
-		},
-		"optimization": {
-			"treeShaking": {
-				"enable": true
-			}
-		},
-		"devServer": {
-			"https": false,
-			"port": 80
-		},
-		"sdkConfigs": {
-			"maps": {}
-		},
-		"uniStatistics": {
-			"enable": false
-		}
-	},
-	"mp-jd": {
-		"unipush": {
-			"enable": false
-		}
-	}
+    "name" : "晋掌柜",
+    "appid" : "__UNI__D4FE29A",
+    "description" : "保险类app",
+    "transformPx" : false,
+    "icons" : [
+        {
+            "sizes" : "分辨率,192x192",
+            "src" : "图片路径"
+        }
+    ],
+    "versionName" : "3.0.4",
+    "versionCode" : 304,
+    "app-plus" : {
+        "error" : {
+            "url" : "hybrid/html/error.html"
+        },
+        "compatible" : {
+            "ignoreVersion" : true
+        },
+        "privacy" : {
+            "prompt" : "template",
+            "template" : {
+                "title" : "平台协议和隐私协议",
+                "message" : "欢迎使用晋掌柜app,我们非常重视您的个人信息和隐私保护。我们将通过《隐私权保护政策》帮助您了解我们收集、使用、存储、共享和保护个人信息的情况,以及您所享有的相关权利。<br/> 为了更好的向您提供注册认证、线上投保、以及周边服务等相关服务功能,我们会收集、使用必要的信息。包括但不限于:<br/>1、为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。2、在使用道路救援功能时,基于您的授权我们可能会获取您的位置信息,以便为您提供服务。您有权拒绝或取消授权。在使用线上投保以及注册等功能时, 基于您的授权我们会获取您的相册存储的权限, 以便在使用时能够正确的上传个人资料。获取通知权限, 用于向您发送重要通知, 如服务更新或安全提醒。<br/>   请仔细阅读<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/xieyi'>《平台协议》</a>和<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/mimi'>《隐私协议》</a>了解详细信息。我们将按照您同意的条款使用您的个人信息,以便为您提供服务。",
+                "buttonAccept" : "同意",
+                "buttonRefuse" : "暂不同意"
+            }
+        },
+        "modules" : {
+            "Messaging" : {},
+            "OAuth" : {},
+            "Payment" : {},
+            "Share" : {},
+            "SQLite" : {
+                "description" : "iBeacon"
+            },
+            "Camera" : {},
+            "Maps" : {},
+            "Geolocation" : {}
+        },
+        "distribute" : {
+            "android" : {
+                "permissionPhoneState" : {
+                    "request" : "none",
+                    "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
+                },
+                "permissionExternalStorage" : {
+                    "request" : "none",
+                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+                },
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
+                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_SMS\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
+                    "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
+                    "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
+                ],
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
+                "minSdkVersion" : 21,
+                "schemes" : "zgcxapp",
+                "targetSdkVersion" : 30
+            },
+            "sdkConfigs" : {
+                "ad" : {
+                    "ks" : {},
+                    "sigmob" : {}
+                },
+                "payment" : {
+                    "weixin" : {
+                        "__platform__" : [ "android" ],
+                        "appid" : "wx612ca90988c46947",
+                        "UniversalLinks" : ""
+                    }
+                },
+                "share" : {
+                    "weixin" : {
+                        "appid" : "wx612ca90988c46947",
+                        "UniversalLinks" : ""
+                    }
+                },
+                "oauth" : {
+                    "weixin" : {
+                        "appid" : "wx612ca90988c46947",
+                        "appsecret" : "75b7d4cda453b2075dec23f849278bc0",
+                        "UniversalLinks" : ""
+                    }
+                },
+                "geolocation" : {
+                    "amap" : {
+                        "name" : "amap_18335592986CWFSxSLAB",
+                        "__platform__" : [ "android" ],
+                        "appkey_ios" : "e410fdbf6be7110af9267b6d56c93c8d",
+                        "appkey_android" : "e410fdbf6be7110af9267b6d56c93c8d"
+                    },
+                    "system" : {
+                        "__platform__" : [ "ios", "android" ]
+                    }
+                },
+                "push" : {
+                    "unipush" : {
+                        "appid" : "YDcU8mcWRO6MWIT1i4naP2",
+                        "appkey" : "DK2LTzhnc87pFFFhcTSgs8",
+                        "appsecret" : "wTUMKWB4ReAoPyCp7Jyaz9"
+                    }
+                },
+                "maps" : {
+                    "amap" : {
+                        "name" : "amap_18335592986CWFSxSLAB",
+                        "appkey_ios" : "e410fdbf6be7110af9267b6d56c93c8d",
+                        "appkey_android" : "e410fdbf6be7110af9267b6d56c93c8d"
+                    }
+                }
+            },
+            "icons" : {
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                },
+                "ios" : {
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "ipad" : {
+                        "app" : "unpackage/res/icons/76x76.png",
+                        "app@2x" : "unpackage/res/icons/152x152.png",
+                        "notification" : "unpackage/res/icons/20x20.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "proapp@2x" : "unpackage/res/icons/167x167.png",
+                        "settings" : "unpackage/res/icons/29x29.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "spotlight" : "unpackage/res/icons/40x40.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                    },
+                    "iphone" : {
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                    }
+                }
+            },
+            "splashscreen" : {
+                "androidStyle" : "common",
+                "useOriginalMsgbox" : true
+            },
+            "ios" : {
+                "dSYMs" : false,
+                "urltypes" : "zgcxapp"
+            }
+        },
+        "compilerVersion" : 3,
+        "nvueLaunchMode" : "fast",
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true
+        },
+        "nativePlugins" : {}
+    },
+    // 5+App特有相关
+    "quickapp" : {},
+    // 快应用特有相关
+    "mp-weixin" : {
+        "setting" : {
+            "urlCheck" : false,
+            "es6" : false,
+            "postcss" : false,
+            "minified" : false
+        },
+        "usingComponents" : true,
+        "appid" : "wxe57ddfbe230bcfba",
+        "permission" : {}
+    },
+    "h5" : {
+        "template" : "template.h5.html",
+        "router" : {
+            "mode" : "hash",
+            "base" : "./"
+        },
+        "optimization" : {
+            "treeShaking" : {
+                "enable" : true
+            }
+        },
+        "devServer" : {
+            "https" : false,
+            "port" : 80
+        },
+        "sdkConfigs" : {
+            "maps" : {}
+        },
+        "uniStatistics" : {
+            "enable" : false
+        }
+    },
+    "mp-jd" : {
+        "unipush" : {
+            "enable" : false
+        }
+    }
 }
-// 小程序特有相关
+// 小程序特有相关
+

+ 45 - 27
pages.json

@@ -93,15 +93,6 @@
 					"titleNView": false
 				}
 			}
-		}, {
-			"path": "pages/user/infoExamine", //认证审核
-			"style": {
-				"navigationBarTitleText": "认证审核",
-				"app-plus": {
-					"scrollIndicator": "none", //隐藏滚动条
-					"bounce": "none" //关闭反弹效果
-				}
-			}
 		},
 		{
 			"path": "pages/wallet/preReceivedDetails",
@@ -127,7 +118,7 @@
 			"path": "pages/my/my",
 			"style": {
 				"navigationBarTextStyle": "white",
-				"enablePullDownRefresh": false, //开启下拉刷新
+				"enablePullDownRefresh": true, //开启下拉刷新
 				"navigationStyle": "custom",
 				"app-plus": {
 					"titleNView": false
@@ -142,6 +133,17 @@
 					"bounce": "none" //关闭反弹效果
 				}
 			}
+		},
+		{
+			"path": "pages/user/practitionerInfo",
+			"style": {
+				"navigationBarTitleText": "提交资料",
+				"app-plus": {
+					"titleNView": false,
+					"scrollIndicator": "none", //隐藏滚动条
+					"bounce": "none" //关闭反弹效果
+				}
+			}
 		}, {
 			"path": "pages/index/index",
 			"style": {
@@ -153,25 +155,41 @@
 					"titleNView": false
 				}
 			}
-		}, {
-			"path": "pages/user/infoInput",
+		},
+		{
+			"path": "pages/user/authInfo",
 			"style": {
-				"navigationBarTitleText": "信息录入",
+				"navigationBarTitleText": "我的认证",
 				"app-plus": {
+					"titleNView": false,
 					"scrollIndicator": "none", //隐藏滚动条
 					"bounce": "none" //关闭反弹效果
 				}
 			}
-		}, {
-			"path": "pages/user/certification",
+		},
+		{
+			"path": "pages/user/authResult",
 			"style": {
-				"navigationBarTitleText": "实名认证",
+				"navigationBarTitleText": "认证结果",
 				"app-plus": {
+					"titleNView": false,
 					"scrollIndicator": "none", //隐藏滚动条
 					"bounce": "none" //关闭反弹效果
 				}
 			}
-		}, {
+		},
+		{
+			"path": "pages/user/authResult1",
+			"style": {
+				"navigationBarTitleText": "认证结果",
+				"app-plus": {
+					"titleNView": false,
+					"scrollIndicator": "none", //隐藏滚动条
+					"bounce": "none" //关闭反弹效果
+				}
+			}
+		},
+		{
 			"path": "pages/set/set",
 			"style": {
 				"navigationBarTitleText": "设置",
@@ -318,10 +336,11 @@
 				}
 			}
 		},
+
 		{
-			"path": "pages/tools/addStaff/authentication1",
+			"path": "pages/tools/addStaff/authentication",
 			"style": {
-				"navigationBarTitleText": "未认证",
+				"navigationBarTitleText": "我的成员",
 				"app-plus": {
 					"titleNView": false,
 					"scrollIndicator": "none", //隐藏滚动条
@@ -330,9 +349,9 @@
 			}
 		},
 		{
-			"path": "pages/tools/addStaff/authentication2",
+			"path": "pages/tools/addStaff/authenticationSearch",
 			"style": {
-				"navigationBarTitleText": "已认证",
+				"navigationBarTitleText": "成员搜索",
 				"app-plus": {
 					"titleNView": false,
 					"scrollIndicator": "none", //隐藏滚动条
@@ -341,20 +360,19 @@
 			}
 		},
 		{
-			"path": "pages/tools/addStaff/authentication3",
+			"path": "pages/tools/addStaff/authenticationdetails",
 			"style": {
-				"navigationBarTitleText": "认证管理",
+				"navigationBarTitleText": "查看详情",
 				"app-plus": {
-					"titleNView": false,
 					"scrollIndicator": "none", //隐藏滚动条
 					"bounce": "none" //关闭反弹效果
 				}
 			}
 		},
 		{
-			"path": "pages/tools/addStaff/authenticationdetails",
+			"path": "pages/tools/addStaff/employeeAdditionCount",
 			"style": {
-				"navigationBarTitleText": "查看详情",
+				"navigationBarTitleText": "新增统计",
 				"app-plus": {
 					"titleNView": false,
 					"scrollIndicator": "none", //隐藏滚动条
@@ -1002,7 +1020,7 @@
 	"tabBar": {
 		"color": "rgba(51,51,51,0.8)",
 		"selectedColor": "#0059FF",
-		"borderStyle": "black",
+		"borderStyle": "white",
 		"backgroundColor": "#ffffff",
 		"list": [{
 				"pagePath": "pages/index/index",

+ 1 - 0
pages/carInsure/Information.vue

@@ -1,6 +1,7 @@
 <template>
 	<view class="page">
 		<public-module></public-module>
+		<service-widget @btnClick="btn_click"></service-widget>
 		<view class="fixed dis a-c j-start" :style="headerStyle">
 			<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
 			<text style="margin:  auto;">{{headerText}}</text>

+ 2 - 1
pages/carInsure/companyQuotable.vue

@@ -1,5 +1,6 @@
 <template>
 	<view class="">
+		<service-widget @btnClick="btn_click"></service-widget>
 		<image src="/static/image/car-insure/Quotablebanner.png" mode=""
 			style="width: 100%;height: 110px;position: absolute;"></image>
 		<view class="page">
@@ -60,7 +61,7 @@
 					</view>
 					<view class="row d-flex a-center j-sb font-weight"
 						style="background-color: #E5ECFA;padding:5px 10px;">
-						<view>车主性质</view>
+						<view>车辆其他信息</view>
 					</view>
 					<view class="row d-flex a-center j-sb">
 						<view>使用性质</view>

+ 1 - 0
pages/carInsure/entry.vue

@@ -1,6 +1,7 @@
 <template>
 	<view class="page">
 		<public-module></public-module>
+		<service-widget @btnClick="btn_click"></service-widget>
 		<!-- <view class="inputPrompt mb-2">
 			请尽量与上年度保单保持一致!
 		</view> -->

+ 2 - 1
pages/carInsure/premiumCalc.vue

@@ -1,5 +1,6 @@
 <template>
 	<view class="">
+		<service-widget @btnClick="btn_click"></service-widget>
 		<image src="/static/image/car-insure/Quotablebanner.png" mode=""
 			style="width: 100%;height: 110px;position: absolute;"></image>
 		<view class="page">
@@ -46,7 +47,7 @@
 
 					</view>
 				</view>
-				<view class=" dis  f-c " v-if="['034001','0330034002','0330034001'].includes(productId)">
+				<view class=" dis  f-c " v-if="['034001','034002','0330034002','0330034001'].includes(productId)">
 					<text class="plan-ins-title">商业险</text>
 					<view class="quotePlan">
 						<view class=" dis a-c j-s modelformcss">

+ 35 - 29
pages/index/index.vue

@@ -45,10 +45,11 @@
 				</view>
 			</view>
 		</view>
-
+		<auth-Modal :authShow="authShow" @btnClick="authShow=false" @maskClick="authShow=false"></auth-Modal>
 	</view>
 </template>
 <script>
+	import authModal from '@/components/modules/user/authModal.vue'; //实名认证弹窗
 	import swiperImage from "@/components/modules/index/swiper-image.vue"
 	import indexNav from "@/components/modules/index/index-nav.vue"
 	import bankBin from "@/common/bankcardinfo.js"
@@ -65,9 +66,11 @@
 		components: {
 			swiperImage,
 			indexNav,
+			authModal,
 		},
 		data() {
 			return {
+				authShow: false,
 				locationshow: false,
 				avatar: "",
 				xuelishow: false,
@@ -271,7 +274,7 @@
 			}
 		},
 		onShow() {
-
+			this.loginUser();
 			if (this.userInfo.sysUser.headSculpture) {
 				this.avatar = this.$base.baseUrl + this.userInfo.sysUser.headSculpture;
 			} else {
@@ -289,41 +292,44 @@
 		},
 		async onLoad() {
 
-			this.isShow = this.userInfo.sysUser.status == '2' ? true : false
-			let res = await this.$http.get('/apps/getApplicationStatus?jobNumber=' + this.userInfo.sysUser.id);
-			if (res.code == 200) {
-				if (res.data == '0') {
-					this.getApplicationStatus = res.data;
-				}
-			}
+
 
 		},
 		async onPullDownRefresh() {
-			let userInfoRes = await this.$http.get('/user/loginUser')
-			// let userInfoRes = await this.$http.get('/esmUserInternal/findById?id=' + this.userInfo.sysUser.id, {}, {});
+			await this.loginUser();
 			uni.stopPullDownRefresh();
-			store.commit('setUserModules', {
-				title: 'userInfo',
-				data: {
-					sysUser: {
-						...userInfoRes.data
-					}
-				}
-			})
-			if (userInfoRes.data.status == 2) {
-				this.isShow = true;
-			} else {
-				this.isShow = false;
-			}
+
+
 
 		},
 		methods: {
+			async loginUser() {
+				let userInfoRes = await this.$http.get('/user/loginUser')
+				store.commit('setUserModules', {
+					title: 'userInfo',
+					data: {
+						sysUser: {
+							...userInfoRes.data
+						}
+					}
+				})
+			},
 			tapEvent(item) {
-				if (this.userInfo.sysUser.status == '2') {
-					uni.showToast({
-						icon: "none",
-						title: '请先通过实名认证',
-						duration: 1500
+				if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
+					if (this.userInfo.sysUser.factorVerify == '2') {
+						uni.navigateTo({
+							url: "/pages/user/authInfo"
+						})
+					} else {
+						this.authShow = true;
+					}
+				} else if (this.userInfo.sysUser.status == '8' || this.userInfo.sysUser.status == '3') {
+					uni.navigateTo({
+						url: "/pages/user/practitionerInfo"
+					})
+				} else if (this.userInfo.sysUser.status == '2') {
+					uni.navigateTo({
+						url: "/pages/user/authResult1"
 					})
 				} else if (this.userInfo.sysUser.status == '1') {
 					if (!item.src || item.src == '#' || item.src == '') {

+ 442 - 192
pages/my/my.vue

@@ -10,44 +10,69 @@
 			</view>
 		</view>
 		<view class="Personnel">
-			<view class="dis a-c" @tap="openDetail">
+			<image src="../../static/image/my/decor1.png" class="decor" mode="widthFix"></image>
+			<view class="promotion dis a-c j-c " @click="promotionQrde">
+				<image src="../../static/image/my/qrcode.png" mode="widthFix"></image>
+				<text>我的推广码</text>
+			</view>
+			<view class="dis a-c" @tap.stop="openDetail">
 				<image :src="avatar" class="avatar" mode=""></image>
-				<view class="info">
-					<view class="dis a-c">
-						<text>{{userInfo.sysUser.name}}</text>
-						<u-tag :text="userInfo.sysUser.status=='1'?'已认证':'未认证'" mode="dark"
-							style="background: linear-gradient( 268deg, #FF8B2F 0%, #FF5A00 100%);" />
+				<view class="info dis f-c a-start">
+					<view class="dis a-end">
+						<view class="dis a-c">
+							<text
+								style="margin-right: 10px;color: #082E5D;font-size: 18px;font-weight: bold;">{{userInfo.sysUser.name}}</text>
+							<image v-if="userInfo.sysUser.status=='1'" src="../../static/image/my/renzheng.png" mode="">
+							</image>
+						</view>
+						<view v-if="userInfo.sysUser.status!='1'" class="cloudAlert dis a-c j-c"
+							@click.stop="cloudAlert">
+							{{getStatusInfo(userInfo.sysUser.status,userInfo.sysUser.factorVerify,userInfo.sysUser.managementSource).message}}
+						</view>
 					</view>
-					<text>你身边最贴心,最权威的保险咨询专家。</text>
+					<text>专属领地 开心溢满 绽放璀璨</text>
 				</view>
 			</view>
 			<view class="my-wallet">
 				<view class="wallet-body dis f-c">
 					<view class="dis a-c j-s route">
-						<view class="flex-1 dis f-c a-c" @tap="accountTool('/pages/wallet/wallet')">
-							<image src="/static/image/my/qianbao.png" mode=""></image>
-							<text>钱包</text>
+						<view class="bg  dis f-c" @tap="accountTool('/pages/wallet/wallet')">
+							<text>我的钱包</text>
+							<view class="dis a-c details" style="margin-top: 7rpx;">
+								<text>查看详情</text>
+								<image src="../../static/image/my/qianbao-icon.png" mode=""></image>
+							</view>
+							<image class="imgIcon" src="../../static/image/my/qianbao.png" mode=""></image>
+							<image class="shape" src="../../static/image/my/qianbao-shape.png" mode=""></image>
 						</view>
-						<view class="flex-1 dis f-c a-c" @tap="accountTool('/pages/wallet/bankCard')">
-							<image src="/static/image/my/ka.png" mode=""></image>
-							<text>银行卡</text>
+						<view class="bg dis f-c" @tap="accountTool('/pages/wallet/bankCard')">
+							<text>我的银行卡</text>
+							<view class="dis a-c details" style="margin-top: 7rpx;">
+								<text>查看详情</text>
+								<image src="../../static/image/my/ka-icon.png" mode=""></image>
+							</view>
+							<image class="imgIcon" src="../../static/image/my/ka.png" mode=""></image>
+							<image class="shape" src="../../static/image/my/ka-shape.png" mode=""></image>
 						</view>
-						<view class="flex-1 dis f-c a-c" @tap="accountTool()">
-							<image src="/static/image/my/chongzhi.png" mode="">
-							</image>
-							<text>充值</text>
+						<view class="bg dis f-c" @tap="accountTool()">
+							<text>我的充值</text>
+							<view class="dis a-c details" style="margin-top: 7rpx;">
+								<text>查看详情</text>
+								<image src="../../static/image/my/chongzhi-icon.png" mode=""></image>
+							</view>
+							<image class="imgIcon" src="../../static/image/my/chongzhi.png" mode=""></image>
+							<image class="shape" src="../../static/image/my/chongzhi-shape.png" mode=""></image>
 						</view>
 					</view>
-
-
 				</view>
 			</view>
 		</view>
-		<view class="my-tools">
-			<view class="header ">
-				<text>我的工具</text>
-			</view>
-			<view class="order-body d-flex a-center">
+		<view class="my-tools mb-2" style="margin-top: -126rpx;">
+			<view class="order-body dis f-c ">
+				<view class="header dis a-c">
+					<view class="tag"></view>
+					<text>我的工具</text>
+				</view>
 				<!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
 				<uni-swiper-dot :info="info" :current="current" field="content" :mode="mode" :dots-styles="dotsStyles">
 					<swiper style="height:calc(324upx)" class="swiper" @change="change">
@@ -57,8 +82,8 @@
 								<uni-grid-item class="" v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)"
 									v-for="(item ,index) in toolsList" :index="index" :key="item.text">
 									<view class="grid-item-box dis a-c j-c f-c">
-										<view class="icon iconfont" :class="item.icon">
-										</view>
+										<image :src="item.image" mode=""
+											style="width: 30px;height: 30px;margin: 10px 9px 4px;"></image>
 										<text class="text">{{item.text}}</text>
 										<u-badge v-if="item.text=='客户管理'" size="mini" type="error" :count="InsureCount"
 											:offset="[10, 10]"></u-badge>
@@ -74,11 +99,12 @@
 		<!-- 我的工具End -->
 
 		<!-- 售后管理Start -->
-		<view class="my-tools">
-			<view class="header d-flex a-center j-sb">
-				<view>售后管理</view>
-			</view>
-			<view class="order-body d-flex a-center">
+		<view class="my-tools mb-2">
+			<view class="order-body dis f-c">
+				<view class="header dis a-c">
+					<view class="tag"></view>
+					<text>后台管理</text>
+				</view>
 				<!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
 				<swiper style="height:calc(162upx)" class="swiper" :indicator-dots="(serviceListLength!=1)?true:false">
 					<swiper-item class="swiper dis a-c" v-for="(count,cindex) of  serviceListLength" :key="count">
@@ -87,7 +113,8 @@
 							<uni-grid-item v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)"
 								v-for="(item ,index) in serviceList" :index="index" :key="item.text">
 								<view class="grid-item-box dis a-c  f-c">
-									<image :src="item.image" mode=""></image>
+									<image :src="item.image" mode="" style="width: 24px;height: 24px;margin: 5px 12px;">
+									</image>
 									<text class="text">{{item.text}}</text>
 								</view>
 							</uni-grid-item>
@@ -97,29 +124,23 @@
 			</view>
 		</view>
 		<!-- 售后管理End -->
-
 		<!-- 我的关于Start -->
-		<view class="my-tools">
-			<view class="header d-flex a-center j-sb">
-				<view>关于掌柜</view>
-			</view>
-			<view class="order-body d-flex a-center">
-				<!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
-				<swiper style="height:calc(162upx)" class="swiper" :indicator-dots="(aboutListLength!=1)?true:false">
-					<swiper-item class="swiper dis a-c" v-for="(count,cindex) of  aboutListLength" :key="count">
-						<uni-grid :column="4" :show-border="false" :square="false" :highlight="false"
-							@change="toTools($event,'aboutList')">
-							<uni-grid-item class="d-flex a-center j-center"
-								v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)" v-for="(item ,index) in aboutList"
-								:index="index" :key="item.text">
-								<view class="grid-item-box d-flex a-center j-center flex-column">
-									<image :src="item.image" mode=""></image>
-									<text class="text">{{item.text}}</text>
-								</view>
-							</uni-grid-item>
-						</uni-grid>
-					</swiper-item>
-				</swiper>
+		<view class="my-tools mb-2">
+			<view class="order-body dis  f-c">
+				<view class="header dis a-c">
+					<view class="tag"></view>
+					<text>关于掌柜</text>
+				</view>
+				<view class="shopKeeper mt-2">
+					<view class="item dis a-c j-s" v-for="(item,index) in aboutList" :key="index"
+						@click="toTools(index,'aboutList')">
+						<view class="dis a-c ">
+							<image :src="item.image" mode=""></image>
+							<text>{{item.text}}</text>
+						</view>
+						<image :src="item.icon" mode="" style="width: 15px;height: 15px;"></image>
+					</view>
+				</view>
 			</view>
 		</view>
 
@@ -136,10 +157,12 @@
 			</view>
 		</u-modal>
 		<service-widget @btnClick="btn_click"></service-widget>
+		<auth-Modal :authShow="authShow" @btnClick="authShow=false" @maskClick="authShow=false"></auth-Modal>
 	</view>
 </template>
 
 <script>
+	import authModal from '@/components/modules/user/authModal.vue'; //实名认证弹窗
 	import store from '@/store';
 	import {
 		mapState,
@@ -155,11 +178,13 @@
 	export default {
 		components: {
 			zPopup,
-			myListItem
+			myListItem,
+			authModal,
 		},
 
 		data() {
 			return {
+				authShow: false,
 				promoImage: "",
 				modalshow: false,
 				info: ["", ""],
@@ -219,66 +244,66 @@
 					},
 				],
 				toolsList: [{
-						icon: 'icon-Frame-1',
-						text: '会员分享',
+						image: '/static/image/my/icon1.png',
+						text: '闪电增员',
 						url: '/pages/tools/addStaff/addStaff',
 					},
 					{
-						icon: 'icon-Frame',
-						text: '会员管理',
+						image: '/static/image/my/icon2.png',
+						text: '团队管理',
 						url: '/pages/tools/team/team1',
 					},
 					{
-						icon: 'icon-Frame-2',
+						image: '/static/image/my/icon3.png',
 						text: '客户管理',
 						url: '/pages/tools/customer/customer',
 					},
 					{
-						icon: 'icon-Frame-3',
+						image: '/static/image/my/icon4.png',
 						text: '业绩管理',
 						url: '/pages/tools/achievement/achievement',
 					},
 					{
-						icon: 'icon-Frame-5',
-						text: '报案服务',
+						image: '/static/image/my/icon5.png',
+						text: '报案电话',
 						url: '/pages/tools/insuranceClaims/insuranceClaims',
 					},
 					{
-						icon: 'icon-Frame-4',
+						image: '/static/image/my/icon6.png',
 						text: '掌柜秘书',
 						url: '/pages/tools/messageReminder/messageReminder',
 					},
 					{
-						icon: 'icon-Frame-6',
-						text: '保单',
+						image: '/static/image/my/icon7.png',
+						text: '保单管理',
 						url: '/pages/tools/policy/policy',
 					},
 					{
-						icon: 'icon-Frame-7',
+						image: '/static/image/my/icon8.png',
 						text: '计算器',
 						url: '/pages/tools/calculator/calculator',
 					},
 					{
-						icon: 'icon-a-02',
+						image: '/static/image/my/icon9.png',
 						text: '海报管理',
 						url: '/pages/tools/poster/poster',
 					},
 					{
-						icon: 'icon-a-01',
+						image: '/static/image/my/icon10.png',
 						text: '优惠劵',
 						url: '/pages/tools/coupon/coupon',
 					},
 					{
-						icon: 'icon-a-03',
+						image: '/static/image/my/icon11.png',
 						text: '掌柜商城',
 					},
 					{
-						icon: 'icon-a-04',
+						image: '/static/image/my/icon12.png',
 						text: '车险之家',
 						url: "/pages/carInsure/entry",
 					},
 					{
-						icon: 'icon-renwuzhongxin',
+						image: '/static/image/my/icon13.png',
 						text: '任务中心',
 						url: "/pages/ad/index",
 					}
@@ -287,22 +312,25 @@
 						image: '/static/image/my/Frame5.png',
 						text: '常见问题',
 						url: '/pages/set/question',
+						icon: '/static/image/my/right-jiantou.png'
 					},
-					// { icon: 'icon-baodan',text: '意见反馈',url:'/pages/set/suggest',iconColor:'#DD525E'},
 					{
 						image: '/static/image/my/Frame6.png',
 						text: '意见反馈',
 						url: '',
+						icon: '/static/image/my/right-jiantou.png'
 					},
 					{
 						image: '/static/image/my/Frame7.png',
 						text: '联系客服',
 						tel: '4006333016',
+						icon: '/static/image/my/right-jiantou.png'
 					},
 					{
 						image: '/static/image/my/Frame8.png',
 						text: '关于我们',
 						url: '/pages/set/about',
+						icon: '/static/image/my/right-jiantou.png'
 					}
 				],
 				serviceList: [{
@@ -347,6 +375,7 @@
 
 		computed: {
 			...mapState(['userInfo', "userCheckInfo"]),
+
 			toolsListLength() {
 				// let length = Math.ceil(this.toolsList.length / 8);
 				let list = ["1", "2"]
@@ -360,6 +389,7 @@
 			}
 		},
 		async onShow() {
+			await this.loginUser();
 			await this.getInsureCount();
 			if (this.userInfo.sysUser.headSculpture) {
 				this.avatar = this.$base.baseUrl + this.userInfo.sysUser.headSculpture;
@@ -373,6 +403,10 @@
 				this.mystatusText = "未认证";
 			}
 		},
+		async onPullDownRefresh() {
+			await this.loginUser();
+			uni.stopPullDownRefresh();
+		},
 		async onload() {
 			await this.getInsureCount();
 		},
@@ -397,6 +431,86 @@
 					url: '/pages/chat/chat'
 				})
 			},
+			promotionQrde() {
+				uni.navigateTo({
+					url: '/pages/tools/addStaff/addStaff'
+				})
+
+			},
+			async loginUser() {
+				let userInfoRes = await this.$http.get('/user/loginUser')
+				store.commit('setUserModules', {
+					title: 'userInfo',
+					data: {
+						sysUser: {
+							...userInfoRes.data
+						}
+					}
+				})
+			},
+			getStatusInfo(status, factorVerify, managementSource) {
+				// 定义状态与页面路径及消息的映射
+				const statusInfo = {
+					0: {
+						page: '',
+						message: '您还未实名认证 请去实名认证',
+						status: 0,
+					},
+
+					2: {
+						page: '/pages/user/authResult1',
+						message: '入司资料审核中 请耐心等待',
+						status: 2,
+					},
+					3: {
+						page: '/pages/user/practitionerInfo',
+						message: '入司资料审核不通过,请查看详情',
+						status: 3,
+					},
+					8: {
+						page: '/pages/user/practitionerInfo',
+						message: '入司待补充资料 请去补充资料',
+						status: 8,
+					},
+				};
+				const factorVerifyInfo = {
+					2: {
+						page: '/pages/user/authInfo',
+						message: '您的实名认证失败,请查看详情',
+						status: 2,
+					},
+
+				};
+				if (status == '0' && managementSource == '2') {
+					if (factorVerify == '2') {
+						return factorVerifyInfo[factorVerify];
+					} else {
+						return statusInfo[status];
+					}
+				} else {
+					return statusInfo[status];
+				}
+
+			},
+			cloudAlert() {
+				let info = this.getStatusInfo(this.userInfo.sysUser.status, this.userInfo.sysUser.factorVerify, this
+					.userInfo.sysUser
+					.managementSource)
+				switch (info.status) {
+					case 0:
+						this.authShow = true;
+						break;
+					case 2:
+					case 3:
+					case 8:
+						uni.navigateTo({
+							url: info.page
+						})
+						break;
+
+				}
+
+			},
 			change(e) {
 				this.current = e.detail.current;
 			},
@@ -432,113 +546,111 @@
 			},
 			//去工具页面
 			async toTools(e, listName) {
-				if (this.userInfo.sysUser.status == '2') {
-					return uni.showToast({
-						icon: "none",
-						title: '请先通过实名认证',
-						duration: 1500
-					})
-				}
-				if (!!this[listName][e.detail.index].url && (this[listName][e.detail.index].url ==
-						'/pages/wallet/wallet')) {
-					if ((!!this.userInfo.esmUserInternal) && (!!this.userInfo.esmUserInternal.accountno)) {
-						this.navigate({
-							url: this[listName][e.detail.index].url
-						}, "navigateTo", true)
+				let index = e.detail ? e.detail.index : e;
+				if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
+					if (this.userInfo.sysUser.factorVerify == '2') {
+						uni.navigateTo({
+							url: "/pages/user/authInfo"
+						})
 					} else {
-						this.navigate({
-							url: '/pages/wallet/bindBank',
-							complete: () => {
-								setTimeout(() => {
-									uni.showToast({
-										title: '请先绑定银行卡',
-										duration: 3000,
-										icon: "none"
-									});
-								}, 500);
-
-							}
-						}, "navigateTo", true)
+						this.authShow = true;
 					}
-				} else if (this[listName][e.detail.index].url) {
-					this.navigate({
-						url: this[listName][e.detail.index].url
-					}, "navigateTo", true)
-				} else if (this[listName][e.detail.index].tel) {
-					uni.makePhoneCall({
-						phoneNumber: this[listName][e.detail.index].tel,
+				} else if (this.userInfo.sysUser.status == '8' || this.userInfo.sysUser.status == '3') {
+					uni.navigateTo({
+						url: "/pages/user/practitionerInfo"
 					})
-				} else if (this[listName][e.detail.index].popup) {
-					let res = await this.$http.get('/sys/qy/wechat/find/picture');
-					if (res.code == '200') {
-						this.promoImage = QR.createQrCodeImg(res.data.wechatPictureUrl, {
-							size: parseInt(200) //二维码大小  
+				} else if (this.userInfo.sysUser.status == '2') {
+					uni.navigateTo({
+						url: "/pages/user/authResult1"
+					})
+				} else if (this.userInfo.sysUser.status == '1') {
+					if (this[listName][index].url) {
+						this.navigate({
+							url: this[listName][index].url
+						}, "navigateTo", true)
+					} else if (this[listName][index].tel) {
+						uni.makePhoneCall({
+							phoneNumber: this[listName][index].tel,
 						})
-						this.modalshow = true;
+					} else if (this[listName][index].popup) {
+						let res = await this.$http.get('/sys/qy/wechat/find/picture');
+						if (res.code == '200') {
+							this.promoImage = QR.createQrCodeImg(res.data.wechatPictureUrl, {
+								size: parseInt(200) //二维码大小  
+							})
+							this.modalshow = true;
+						} else {
+							uni.showModal({
+								showCancel: false,
+								content: this[listName][index].popup,
+							});
+						}
+
 					} else {
-						uni.showModal({
-							showCancel: false,
-							content: this[listName][e.detail.index].popup,
-						});
+						uni.showToast({
+							title: this[listName][index].text + '更新中...',
+							icon: 'none'
+						})
 					}
 
-				} else {
-					uni.showToast({
-						title: this[listName][e.detail.index].text + '更新中...',
-						icon: 'none'
-					})
 				}
 
 			},
 			async accountTool(path) {
-
-				if (path) {
-					if (path == '/pages/wallet/bankCard') {
-						let res = await this.$http.post('/userBank/getUserBankList', {
-							auditStatus: '',
-						});
-						if (!res.data.length) {
-							this.navigate({
-								url: '/pages/wallet/bindBank',
-								complete: () => {
-									setTimeout(() => {
-										uni.showToast({
-											title: '请先绑定银行卡',
-											duration: 3000,
-											icon: "none"
-										});
-									}, 500);
-
-								}
-							}, "navigateTo", true)
+				if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
+					if (this.userInfo.sysUser.factorVerify == '2') {
+						uni.navigateTo({
+							url: "/pages/user/authInfo"
+						})
+					} else {
+						this.authShow = true;
+					}
+				} else if (this.userInfo.sysUser.status == '8' || this.userInfo.sysUser.status == '3') {
+					uni.navigateTo({
+						url: "/pages/user/practitionerInfo"
+					})
+				} else if (this.userInfo.sysUser.status == '2') {
+					uni.navigateTo({
+						url: "/pages/user/authResult1"
+					})
+				} else if (this.userInfo.sysUser.status == '1') {
+					if (path) {
+						if (path == '/pages/wallet/bankCard') {
+							let res = await this.$http.post('/userBank/getUserBankList', {
+								auditStatus: '',
+							});
+							if (!res.data.length) {
+								this.navigate({
+									url: '/pages/wallet/bindBank',
+									complete: () => {
+										setTimeout(() => {
+											uni.showToast({
+												title: '请先绑定银行卡',
+												duration: 3000,
+												icon: "none"
+											});
+										}, 500);
+
+									}
+								}, "navigateTo", true)
+							} else {
+								this.navigate({
+									url: path,
+								}, "navigateTo", true)
+							}
 						} else {
 							this.navigate({
 								url: path,
 							}, "navigateTo", true)
 						}
 					} else {
-						this.navigate({
-							url: path,
-						}, "navigateTo", true)
+						uni.showToast({
+							title: '功能待开发...',
+							icon: "none"
+						});
 					}
-				} else {
-					uni.showToast({
-						title: '功能待开发...',
-						icon: "none"
-					});
 				}
-			},
-			// 去账单明细
-			toBillDetails(type) {
-				this.navigate({
-					url: `/pages/wallet/billDetails${type}`,
-				}, "navigateTo", true)
-			},
-			// 去账单明细
-			toWallet(type) {
-				this.navigate({
-					url: "/pages/wallet/wallet"
-				}, "navigateTo", true)
+
 			},
 			//跳转个人信息页面
 			openDetail() {
@@ -546,14 +658,6 @@
 					url: "/pages/user/userInfo"
 				}, "navigateTo", false)
 			},
-			//跳转订单页面
-			openOrder(e) {
-
-				this.setOrderStage(this.orderTypeList[e].orderStage);
-				this.navigate({
-					url: "/pages/orders/orders"
-				}, "switchTab", true)
-			}
 		}
 	}
 </script>
@@ -562,7 +666,7 @@
 	@import '@/style/mixin.scss';
 
 	page {
-		background-color: #F8FAFE;
+		background-color: #EEF1F7;
 	}
 
 	.headers {
@@ -601,39 +705,108 @@
 		background: #fff;
 		background-image: url("/static/image/my/banner.png");
 		background-size: 100% 100%;
-		padding: 110px 16px 10px 16px;
+		padding: 110px 16px 73px 16px;
+		position: relative;
+
+		.decor {
+			position: absolute;
+			width: 230rpx;
+			height: 210rpx;
+			right: 21px;
+			top: 58px;
+		}
+
+		.promotion {
+			position: absolute;
+			background: rgba(0, 82, 255, 0.7);
+			border-radius: 50px 0px 0px 50px;
+			right: 0;
+			top: 114px;
+			color: #fff;
+			font-size: 20rpx;
+			padding: 9rpx 10rpx;
+			line-height: 1;
+			letter-spacing: 1px;
+
+			image {
+				width: 13px;
+				height: 13px;
+				margin-right: 2px;
+			}
+		}
 
 		.avatar {
-			width: 60px;
-			height: 60px;
+			width: 42px;
+			height: 42px;
 			border-radius: 50%;
 		}
 
 		.info {
-			margin-left: 10px;
+			margin-left: 12px;
 
 			text {
 				margin-right: 10px;
-				color: #333333;
-				font-size: 13px;
+				color: #082E5D;
+				font-size: 18px;
+				font-weight: bold;
 			}
 
 			text:last-child {
-				color: rgba(51, 51, 51, 0.8);
-				font-size: 12px;
+				color: rgba(8, 46, 93, 0.9);
+				font-size: 22rpx;
 			}
 
+			image {
+				width: 95rpx;
+				height: 40rpx;
+			}
+
+			.cloudAlert {
+				position: relative;
+				width: 85px;
+				background: rgba(0, 0, 0, 0.6);
+				border-radius: 2px;
+				margin-left: 10px;
+				color: #fff;
+				font-size: 22rpx;
+				padding: 3px 4px;
+				line-height: 1.5;
+			}
+
+			.cloudAlert::before {
+				content: '';
+				position: absolute;
+				top: 40%;
+				/* 箭头垂直位置 */
+				left: -10px;
+				/* 箭头左侧位置 */
+				border-width: 5px;
+				/* 箭头大小 */
+				border-style: solid;
+				/* 实心箭头 */
+				border-color: transparent rgba(0, 0, 0, 0.6) transparent transparent;
+				/* 左边框有色,其他透明 */
+			}
 		}
 	}
 
 	.my-tools {
 		padding: 0 16px;
+		position: relative;
 
 		.header {
-			padding: 10px 0;
-			font-size: 14px;
+			padding: 10px 0 0;
+			font-size: 16px;
 			color: #232832;
 			font-weight: bold;
+
+			.tag {
+				width: 4px;
+				height: 16px;
+				background: #0052FF;
+				border-radius: 0 6px 6px 0;
+				margin-right: 11px;
+			}
 		}
 
 		.order-body {
@@ -641,6 +814,24 @@
 			box-shadow: 0px 4px 10px 0px #DAE3F4;
 			border-radius: 6px;
 		}
+
+		.shopKeeper {
+			padding: 0 15px;
+
+			.item {
+				padding: 25rpx 0;
+				color: #333;
+				font-size: 28rpx;
+				border-top: 1px solid #EEEEEE;
+
+				image {
+					width: 40rpx;
+					height: 40rpx;
+					margin-right: 10px;
+				}
+
+			}
+		}
 	}
 
 	/* 产品介绍Start */
@@ -731,22 +922,83 @@
 		.wallet-body {
 			width: 100%;
 			height: auto;
-			padding: 8px 16px;
+			padding: 12px;
 			background: #FFFFFF;
 			box-shadow: 0px 4px 10px 0px #DAE3F4;
 			border-radius: 6px;
 			margin-top: 10px;
 
 			.route {
-				text {
-					font-size: 12px;
-					color: #333;
-					font-weight: 400;
+				.bg {
+					width: 31%;
+					border-radius: 4px;
+					padding: 10px 6px;
+					position: relative;
+					background: linear-gradient(180deg, #FFF1E3 0%, #FCF6EF 100%);
+
+					.imgIcon {
+						position: absolute;
+						right: 0;
+						bottom: 6rpx;
+						width: 68rpx;
+						height: 72rpx;
+					}
+
+					.shape {
+						position: absolute;
+						left: 12rpx;
+						bottom: 0;
+						width: 50rpx;
+						height: 18rpx;
+					}
+
+					>text {
+						color: #FF9520;
+						font-size: 26rpx;
+						font-weight: bold;
+					}
+
+					.details {
+						margin-top: 7rpx;
+
+						>text {
+							color: #FFB767;
+							font-size: 18rpx;
+							margin-right: 4rpx;
+						}
+
+						image {
+							width: 16rpx;
+							height: 16rpx;
+						}
+					}
+
 				}
 
-				image {
-					width: 45px;
-					height: 40px;
+				.bg:nth-child(2) {
+					background: linear-gradient(180deg, #E0F1FF 0%, #F6FBFF 100%);
+
+					text {
+						color: #2099FE;
+					}
+
+					.imgIcon {
+						width: 71rpx;
+						height: 72rpx;
+					}
+				}
+
+				.bg:nth-child(3) {
+					background: linear-gradient(180deg, #FDEBE4 0%, #FFF7F3 100%);
+
+					text {
+						color: #FF5D52;
+					}
+
+					.imgIcon {
+						width: 65rpx;
+						height: 72rpx;
+					}
 				}
 			}
 
@@ -784,12 +1036,10 @@
 
 		.text {
 			font-size: 12px;
+			color: #232832;
 		}
 
-		image {
-			width: 32px;
-			height: 32px;
-		}
+
 	}
 
 	.swiper {

+ 3 - 14
pages/register/orderissuer.vue

@@ -21,11 +21,6 @@
 					</image>
 					<input placeholder="请输入姓名" v-model="name" />
 				</view>
-				<view class="phone d-flex">
-					<image src="../../static/image/login/shenfenzheng.png" mode="" style="width: 18px;height: 18px;">
-					</image>
-					<input placeholder="请输入身份证号" v-model="identity" />
-				</view>
 				<view class="password d-flex">
 					<image src="../../static/image/login/mima.png" mode="" style="width: 18px;height: 18px;">
 					</image>
@@ -266,12 +261,11 @@
 					})
 				}
 				// 请求服务器,发送验证码
-				let res = await this.$http.post('/user/agentRegist', {
+				let res = await this.$http.post('/userAgent/agentRegist', {
 					"name": this.name,
 					"password": this.password,
 					"mobile": this.phone,
 					"mobileMsg": this.code,
-					"identity": this.identity,
 					"referrerId": this.recommenderid,
 					"referrerName": this.recommendername,
 					"flag": 2,
@@ -304,7 +298,8 @@
 					// #ifdef H5
 					setTimeout(() => {
 						return uni.reLaunch({
-							url: "/pages/register/registerSuccess?id=" + res.data + '&phone=' + this
+							url: "/pages/register/registerSuccess?id=" + res.data + '&phone=' +
+								this
 								.phone
 						})
 					}, 2000);
@@ -377,12 +372,6 @@
 
 
 
-	.idCardBefore {
-		background: rgba($themeColor, 0.1) url('/static/image/user/identy2.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-	}
-
 	.page {
 		background: #F8FAFE;
 		height: 100vh;

+ 1 - 5
pages/register/register.vue

@@ -353,11 +353,7 @@
 
 
 
-	.idCardBefore {
-		background: rgba($themeColor, 0.1) url('/static/image/user/identy2.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-	}
+
 
 	.page {
 		background: #F8FAFE;

+ 7 - 94
pages/set/safe.vue

@@ -3,8 +3,7 @@
 		<!-- 公共组件-每个页面必须引入 -->
 		<public-module></public-module>
 		<block v-for="(item,index) in list" :key="index">
-			<my-list-item :item="item" :index="index" @weixinMsg="weixinMsg" @zhifubaoMsg="zhifubaoMsg"
-				:someData="status"></my-list-item>
+			<my-list-item :item="item" :index="index"></my-list-item>
 		</block>
 	</view>
 </template>
@@ -36,109 +35,23 @@
 						text: '',
 						auth: true
 					},
-					{
-						icon: "",
-						name: "微信",
-						clicktype: "weixin",
-						url: "",
-						text: '未绑定',
-					},
-					{
-						icon: "",
-						name: "支付宝",
-						clicktype: "zhifubao",
-						url: "",
-						text: '未绑定',
-					},
+
 				],
-				status: {
-					weixinstatus: false,
-					zhifubaostatus: false,
-				}
+
 
 			}
 		},
-		async onLoad() {
+		onLoad() {
 			this.list[1].text = this.userInfo.sysUser.mobile;
-			this.bindingStatus();
-			this.isBindAlipay();
 		},
-		async onShow() {
-			let args = plus.runtime.arguments;
-			if (args) {
-				plus.runtime.arguments = null; //进入之后就把urlscheme清空要不然下一次oushow时还会执行
-				// 处理args参数,如直达到某新页面等
-				//通过code请求获取user_id
-				var authCode = args.split("=")[1];
-				if (authCode != undefined && authCode != "" && authCode != null) {
-					let res = await this.$http.post("/alipay/bind", {
-						code: authCode,
-					})
-					if (res.code == '200') {
-						uni.showToast({
-							title: res.msg,
-							icon: "success"
-						});
-						this.isBindAlipay();
-					} else {
-						uni.showToast({
-							title: res.msg,
-							icon: "none"
-						});
-					}
-				}
-			}
+		onShow() {
+
 		},
 		computed: {
 			...mapState(["userInfo"])
 		},
 		methods: {
-			async bindingStatus() {
-				let res = await this.$http.get("/user/isBindWechat")
-				if (res.code == '200') {
-					this.list[2].text = "已绑定"
-					this.status.weixinstatus = true;
-				} else {
-					this.status.weixinstatus = false;
-				}
-			},
-			async isBindAlipay() {
-				let res = await this.$http.get("/alipay/isBindAlipay")
-				if (res.code == '200') {
-					this.list[3].text = "已绑定"
-					this.status.zhifubaostatus = true;
-				} else {
-					this.status.zhifubaostatus = false;
-				}
-			},
-			weixinMsg(res) {
-				if (res.code == '200') {
-					uni.showToast({
-						title: res.msg,
-						icon: "success"
-					});
-					this.bindingStatus();
-				} else {
-					uni.showToast({
-						title: res.msg,
-						icon: "none"
-					});
-				}
-			},
-			zhifubaoMsg(res) {
-				if (res.code == '200') {
-					uni.showToast({
-						title: res.msg,
-						icon: "success"
-					});
-					this.isBindAlipay();
-				} else {
-					uni.showToast({
-						title: res.msg,
-						icon: "none"
-					});
-				}
-			}
+
 		}
 	}
 </script>

+ 165 - 12
pages/set/set.vue

@@ -4,23 +4,31 @@
 		<public-module></public-module>
 
 		<block v-for="(item,index) in list" :key="index">
-			<my-list-item :item="item" :index="index"></my-list-item>
+			<my-list-item :item="item" :index="index" @authModal="authModal" @weixinMsg="weixinMsg"
+				@zhifubaoMsg="zhifubaoMsg" :someData="status"></my-list-item>
 		</block>
-		<button class="my-3 mt-4 mx-3 d-flex a-center j-center main-bg-color" type="primary" @tap="logout">退出登录</button>
+		<button class="my-3 mt-4 mx-3 dis a-c j-c btn" type="primary" @tap="logout">退出登录</button>
+		<auth-Modal :authShow="authShow" @btnClick="authShow=false" @maskClick="authShow=false"></auth-Modal>
 	</view>
 </template>
 
 <script>
+	import {
+		mapState
+	} from "vuex"
 	import {
 		mapMutations
 	} from "vuex"
+	import authModal from '@/components/modules/user/authModal.vue'; //实名认证弹窗
 	import myListItem from "@/components/modules/my/my-list-item.vue";
 	export default {
 		components: {
-			myListItem
+			myListItem,
+			authModal
 		},
 		data() {
 			return {
+				authShow: false,
 				list: [{
 						icon: "",
 						name: "账号管理",
@@ -28,11 +36,34 @@
 						url: "/pages/set/safe",
 						auth: true
 					},
+					{
+						icon: "",
+						name: "实名认证",
+						clicktype: "auth",
+						text: "",
+						borderColor: "",
+						backColor: "",
+						url: ""
+					},
+					{
+						icon: "",
+						name: "微信绑定",
+						clicktype: "weixin",
+						url: "",
+						text: '未绑定',
+					},
+					{
+						icon: "",
+						name: "支付宝绑定",
+						clicktype: "zhifubao",
+						url: "",
+						text: '未绑定',
+					},
 					{
 						icon: "",
 						name: "清除缓存",
 						clicktype: "clear",
-						url: ""
+						url: "",
 					},
 					{
 						icon: "",
@@ -41,7 +72,6 @@
 						url: "/pages/set/question",
 						auth: true
 					},
-					// { icon:"",name:"意见反馈",clicktype:"navigateTo",url:"/pages/set/suggest",auth:true },
 					{
 						icon: "",
 						name: "关于掌柜",
@@ -50,15 +80,80 @@
 						text: "",
 						auth: false
 					},
-				]
+				],
+				status: {
+					weixinstatus: false,
+					zhifubaostatus: false,
+				}
 			}
 		},
+		computed: {
+			...mapState(['userInfo'])
+		},
 		onLoad() {
-			// #ifdef APP-PLUS
-			plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
-				this.list[4].text = widgetInfo.version;
-			})
-			// #endif
+			// #ifdef APP
+			this.bindingStatus();
+			this.isBindAlipay();
+			//#endif
+			if (this.userInfo.sysUser.status == '0' && this.userInfo.sysUser.managementSource == '2') {
+				if (this.userInfo.sysUser.factorVerify == '2') {
+					this.list[1].text = '实名认证失败';
+					this.list[1].borderColor = '#FF0000';
+					this.list[1].backColor = '#FFE2E2';
+					this.lsit[1].url = '/pages/user/authInfo';
+				} else {
+					this.list[1].text = '未认证';
+					this.list[1].borderColor = '#0052FF';
+					this.list[1].backColor = '#DDE8FF';
+				}
+			} else if (this.userInfo.sysUser.status == '8') {
+				this.list[1].text = '待补充资料';
+				this.list[1].borderColor = '#FFB800';
+				this.list[1].backColor = '#FFF3D3';
+				this.lsit[1].url = '/pages/user/practitionerInfo';
+			} else if (this.userInfo.sysUser.status == '3') {
+				this.list[1].text = '审核不通过';
+				this.list[1].borderColor = '#FF0000';
+				this.list[1].backColor = '#FFE2E2';
+				this.lsit[1].url = '/pages/user/practitionerInfo';
+			} else if (this.userInfo.sysUser.status == '2') {
+				this.list[1].text = '资料审核中';
+				this.list[1].borderColor = '#FFB800';
+				this.list[1].backColor = '#FFF3D3';
+				this.lsit[1].url = '/pages/user/authResult1';
+			} else if (this.userInfo.sysUser.status == '1') {
+				this.list[1].text = '已认证';
+				this.list[1].borderColor = '#0052FF';
+				this.list[1].backColor = '#DDE8FF';
+			}
+		},
+		async onShow() {
+			// #ifdef APP
+			let args = plus.runtime.arguments;
+			if (args) {
+				plus.runtime.arguments = null; //进入之后就把urlscheme清空要不然下一次oushow时还会执行
+				// 处理args参数,如直达到某新页面等
+				//通过code请求获取user_id
+				var authCode = args.split("=")[1];
+				if (authCode != undefined && authCode != "" && authCode != null) {
+					let res = await this.$http.post("/alipay/bind", {
+						code: authCode,
+					})
+					if (res.code == '200') {
+						uni.showToast({
+							title: res.msg,
+							icon: "success"
+						});
+						this.isBindAlipay();
+					} else {
+						uni.showToast({
+							title: res.msg,
+							icon: "none"
+						});
+					}
+				}
+			}
+			//#endif
 		},
 		methods: {
 			...mapMutations(['emptyUserInfo']),
@@ -70,10 +165,68 @@
 					})
 					return true;
 				}, 500);
+			},
+			authModal(res) {
+				this.authShow = res;
+			},
+			//微信绑定查询
+			async bindingStatus() {
+				let res = await this.$http.get("/user/isBindWechat")
+				if (res.code == '200') {
+					this.list[2].text = "已绑定"
+					this.status.weixinstatus = true;
+				} else {
+					this.status.weixinstatus = false;
+				}
+			},
+			//支付宝绑定查询
+			async isBindAlipay() {
+				let res = await this.$http.get("/alipay/isBindAlipay")
+				if (res.code == '200') {
+					this.list[3].text = "已绑定"
+					this.status.zhifubaostatus = true;
+				} else {
+					this.status.zhifubaostatus = false;
+				}
+			},
+			weixinMsg(res) {
+				if (res.code == '200') {
+					uni.showToast({
+						title: res.msg,
+						icon: "success"
+					});
+					this.bindingStatus();
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: "none"
+					});
+				}
+			},
+			zhifubaoMsg(res) {
+				if (res.code == '200') {
+					uni.showToast({
+						title: res.msg,
+						icon: "success"
+					});
+					this.isBindAlipay();
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: "none"
+					});
+				}
 			}
 		}
 	}
 </script>
 
-<style>
+<style lang="scss" scoped>
+	.btn {
+		background: #fff;
+		border-radius: 4px;
+		border: 1px solid #343EEF;
+		color: #343EEF;
+		font-size: 32rpx;
+	}
 </style>

+ 317 - 86
pages/tools/addStaff/addStaff.vue

@@ -1,90 +1,162 @@
 <template>
 	<view>
-		<!-- 公共组件-每个页面必须引入 -->
 		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
+		<!-- <service-widget @btnClick="btn_click"></service-widget> -->
 		<view class="headers dis a-c j-start " :style="headerStyle">
 			<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
-			<text style="margin: auto;">会员分享</text>
+			<text style="margin: auto;">我的邀请码</text>
 		</view>
 		<view class="Personnel dis a-c j-s">
-			<view class="addMe">
-				<image src="../../../static/image/addStaff/f1.png" mode="" @click="getStaffList(1)"></image>
-			</view>
-			<view class="addMe">
-				<image src="../../../static/image/addStaff/f2.png" mode="" @click="getStaffList(2)"></image>
-			</view>
-			<view class="addMe">
-				<image src="../../../static/image/addStaff/f3.png" mode="" @click="getStaffList(3)"></image>
-			</view>
+
 		</view>
-		<view class="" style="padding: 16px;">
+		<view class="" style="padding: 16px;margin-top: -78px;">
 			<view class="promotion " v-if="sources==1">
-				<view style="width: 100%;border-bottom: 1px solid #f2f2f2;">
-					<u-tabs :list="list1" :is-scroll="false" :current="current" @change="change"></u-tabs>
+				<view style="border-bottom: 1px solid #f2f2f2;">
+					<u-tabs :list="list" :is-scroll="false" :current="current" @change="change"
+						style="background: transparent;width: 210px;" :active-item-style="activestyle"
+						inactive-color="#81869B" bar-width="80"></u-tabs>
 				</view>
-				<view class="dis a-c j-c f-c mt-5" v-if="current==0">
-					<image :src="recommendImg" mode="widthFix" lazy-load style="width: 110px;"></image>
-					<text class="mt-1" style="color: rgba(51, 51, 51, 0.8);">面对面推荐</text>
-					<text style="color: rgba(51, 51, 51, 0.8);">更安全更方便的加入方式</text>
-					<view class="invitation dis j-c a-c">
-						<image src="../../../static/image/addStaff/f4.png" mode=""></image>
-						<text @click="invitation">邀请函</text>
+				<view class="dis a-c j-c f-c " v-if="current==0">
+					<view class="" style="position: relative;margin: 40px 0;">
+						<image :src="recommendImg" mode="widthFix" lazy-load style="width: 110px;height: 110px;">
+						</image>
+						<image src="../../../static/image/addStaff/zgcx.png" mode=""
+							style="width: 26px;height: 26px;position: absolute;top: 50%;left: 50%; transform: translate(-50%, -50%);">
+						</image>
+					</view>
+					<view class="shareMethod dis a-c j-s ">
+						<view class="dis f-c a-c" @click="save">
+							<image src="../../../static/image/addStaff/saveimg.png" mode=""></image>
+							<text>保存图片</text>
+						</view>
+						<view class="dis f-c a-c" @click="invitation">
+							<image src="../../../static/image/addStaff/share.png" mode=""></image>
+							<text>分享海报</text>
+						</view>
+						<view class="dis f-c a-c" @click="linkShare(recommendUrl)">
+							<image src="../../../static/image/addStaff/urlshare.png" mode=""></image>
+							<text>链接分享</text>
+						</view>
+						<!-- #ifdef APP -->
+						<view class="dis f-c a-c" @click="smsShare(recommendUrl)">
+							<image src="../../../static/image/addStaff/smsshare.png" mode=""></image>
+							<text>短信分享</text>
+						</view>
+						<!-- #endif -->
 					</view>
 				</view>
-				<view class="dis a-c j-c f-c mt-5" v-if="current==1">
-					<image :src="DownloadImg" mode="widthFix" lazy-load style="width: 110px;"></image>
-					<text class="mt-1" style="color: rgba(51, 51, 51, 0.8);">微信扫描二维码</text>
-					<text style="color: rgba(51, 51, 51, 0.8);">即可下载App</text>
-					<!-- 	<view class="invitation dis j-c a-c">
-						<image src="../../../static/image/addStaff/f4.png" mode=""></image>
-						<text @click="invitation">邀请函</text>
-					</view> -->
+				<view class="dis a-c j-c f-c " v-if="current==1">
+					<view class="qodeurl dis j-c a-c">
+						<text>{{Downloadurl}}</text>
+					</view>
+					<view class="btn mt-4" @click="downloadUrl(Downloadurl)">
+						<text>复制链接</text>
+					</view>
+					<view class="tioop dis a-c j-c">
+						<text>下载APP,请点击复制链接后发送给好友,然后使用浏览器访问。</text>
+					</view>
 				</view>
+
 			</view>
 			<view class="promotion " v-if="sources==2">
-				<view style="width: 100%;border-bottom: 1px solid #f2f2f2;">
-					<u-tabs :list="list" :is-scroll="false" :current="current1" @change="change1"></u-tabs>
+				<view style="border-bottom: 1px solid #f2f2f2;">
+					<u-tabs :list="list1" :is-scroll="false" :current="current1" @change="change1"
+						style="background: transparent;width: 150px;" :active-item-style="activestyle"
+						inactive-color="#81869B" bar-width="80"></u-tabs>
 				</view>
-				<view class="dis a-c j-c f-c mt-5" v-if="current1==0">
-					<image :src="orderissuerImg" mode="widthFix" lazy-load style="width: 110px;"></image>
-					<text class="mt-1" style="color: rgba(51, 51, 51, 0.8);">面对面推荐</text>
-					<text style="color: rgba(51, 51, 51, 0.8);">更安全更方便的加入方式</text>
+				<view class="dis a-c j-c f-c " v-if="current1==0">
+					<view class="" style="position: relative;margin: 40px 0;">
+						<image :src="orderissuerImg" mode="widthFix" lazy-load style="width: 110px;height: 110px;">
+						</image>
+						<image src="../../../static/image/addStaff/zgcx.png" mode=""
+							style="width: 26px;height: 26px;position: absolute;top: 50%;left: 50%; transform: translate(-50%, -50%);">
+						</image>
+					</view>
+					<view class="shareMethod dis a-c j-s ">
+						<view class="dis f-c a-c" @click="save">
+							<image src="../../../static/image/addStaff/saveimg.png" mode=""></image>
+							<text>保存图片</text>
+						</view>
+						<view class="dis f-c a-c" @click="linkShare(orderissuerUrl)">
+							<image src="../../../static/image/addStaff/urlshare.png" mode=""></image>
+							<text>链接分享</text>
+						</view>
+						<!-- #ifdef APP -->
+						<view class="dis f-c a-c" @click="smsShare(orderissuerUrl)">
+							<image src="../../../static/image/addStaff/smsshare.png" mode=""></image>
+							<text>短信分享</text>
+						</view>
+						<!-- #endif -->
+					</view>
+				</view>
+				<view class="dis a-c j-c f-c " v-if="current1==1">
+					<view class="qodeurl dis j-c a-c">
+						<text>{{Downloadurl}}</text>
+					</view>
+					<view class="btn mt-4" @click="downloadUrl(Downloadurl)">
+						<text>复制链接</text>
+					</view>
+					<view class="tioop dis a-c j-c">
+						<text>下载APP,请点击复制链接后发送给好友,然后使用浏览器访问。</text>
+					</view>
+				</view>
+			</view>
+			<view class="myMembers dis a-c j-s" @click="getStaffList">
+				<view class="dis a-c">
+					<image src="../../../static/image/addStaff/kefu.png" mode=""></image>
+					<view class="dis f-c a-start">
+						<text>我的成员</text>
+						<text>查看成员已认证、未认证以及详细信息</text>
+					</view>
+				</view>
+				<view class="circle dis a-c j-c">
+					<u-icon name="arrow-right" color="#fff" size="26"
+						:custom-style="{marginLeft:'2px',marginTop:'2px'}"></u-icon>
+				</view>
+			</view>
+			<view class="myMembers1 dis a-c j-s" @click="newStats" v-if="this.userInfo.sysUser.managementSource == '2'">
+				<view class="dis a-c">
+					<image src="../../../static/image/addStaff/add.png" mode=""></image>
+					<view class="dis f-c a-start">
+						<text>新增统计</text>
+						<text>查看成员新增数据的内容统计</text>
+					</view>
 				</view>
-				<view class="dis a-c j-c f-c mt-5" v-if="current1==1">
-					<image :src="DownloadImg" mode="widthFix" lazy-load style="width: 110px;"></image>
-					<text class="mt-1" style="color: rgba(51, 51, 51, 0.8);">微信扫描二维码</text>
-					<text style="color: rgba(51, 51, 51, 0.8);">即可下载App</text>
+				<view class="circle dis a-c j-c">
+					<u-icon name="arrow-right" color="#fff" size="26"
+						:custom-style="{marginLeft:'2px',marginTop:'2px'}"></u-icon>
 				</view>
 			</view>
 		</view>
 	</view>
 </template>
 <script>
-	import myListItem from "@/components/modules/my/my-list-item.vue";
 	import {
 		mapState
 	} from "vuex"
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/common/pdf.js'
 	import QR from "@/common/wxqrcode.js"
 	export default {
-		components: {
-			myListItem
-		},
 		data() {
 			return {
+				Downloadurl: "", //app下载链接
 				recommendImg: "",
-				DownloadImg: "",
+				recommendUrl: "", //注册链接
 				orderissuerImg: '',
-				list: [{
-					name: '面对面推荐'
+				orderissuerUrl: "",
+				list1: [{
+					name: '邀请注册'
 				}, {
-					name: '扫码下载'
+					name: 'APP下载'
 				}],
 				current: 0,
-				list1: [{
+				list: [{
 					name: '出单员扫码注册'
 				}, {
-					name: '扫码下载'
+					name: 'APP下载'
 				}, ],
 				current1: 0,
 				headerStyle: {
@@ -95,6 +167,13 @@
 					boxShadow: ''
 					// 其他样式属性...
 				},
+				activestyle: {
+					background: 'linear-gradient(to right, #52C7E0, #2B91EF)',
+					backgroundClip: 'text',
+					WebkitBackgroundClip: 'text',
+					WebkitTextFillColor: 'transparent', // 透明填充颜色
+					transition: 'background 0.3s ease', // 添加过渡效果
+				}
 			}
 		},
 		onLoad() {
@@ -102,11 +181,73 @@
 			this.codeDownload();
 			this.orderissuer();
 			this.$http.get('/sysMenuRecord/add?type=1&menuType=4')
+			// #ifdef APP
+			if (window.plus) {
+				plusReady();
+			}
+			//#endif
+
 		},
 		computed: {
 			...mapState(['userInfo', 'sources']),
 		},
 		methods: {
+			//保存图片
+			save() {
+				let url = this.sources == '1' ? this.recommendImg : this.orderissuerImg;
+				let base64Data = url.replace("data:image/gif;base64,", "");
+				let pdfBase64 = `data:image/png;base64,${base64Data}`;
+				base64ToPath(pdfBase64)
+					.then(path => {
+						uni.saveImageToPhotosAlbum({ //保存图片到系统相册。
+							filePath: path, //图片文件路径
+							success: function() {
+								uni.showToast({
+									title: '已保存到相册',
+									icon: 'none',
+								});
+							},
+							fail: function(e) {
+								uni.showToast({
+									title: '图片保存失败',
+									icon: 'none',
+								});
+							}
+						});
+					})
+			},
+			downloadUrl(value) {
+				uni.setClipboardData({
+					data: value, //要被复制的内容
+					success: () => { //复制成功的回调函数
+						uni.showToast({ //提示
+							icon: 'none',
+							title: '链接复制成功'
+						})
+					}
+				});
+			},
+			//链接分享
+			linkShare(value) {
+				uni.setClipboardData({
+					data: value, //要被复制的内容
+					success: () => { //复制成功的回调函数
+						uni.showToast({ //提示
+							icon: 'none',
+							title: '邀请链接已复制成功'
+						})
+					}
+				});
+			},
+			//编辑短信加载事件
+			plusReady() {},
+			//短信分享
+			smsShare(value) {
+				var msg = plus.messaging.createMessage(plus.messaging.TYPE_SMS);
+				msg.to = [""];
+				msg.body = `${this.userInfo.sysUser.name}向您发送来了加入团队的邀请,点击加入:%${value}%`;
+				plus.messaging.sendMessage(msg);
+			},
 			btn_click() {
 				uni.navigateTo({
 					url: '/pages/chat/chat'
@@ -129,6 +270,8 @@
 				this.recommendImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/register/register?id=" + id, {
 					size: parseInt(200) //二维码大小  
 				})
+				this.recommendUrl = this.$base.h5BaseUrl + "/#/pages/register/register?id=" + id;
+				// this.recommendUrl = "http://192.168.0.20/h5/#/pages/register/register?id=" + id;
 			},
 			async codeDownload() {
 				let id = this.userInfo.sysUser.id;
@@ -148,15 +291,17 @@
 				};
 				let getquote = await this.$http.post('/sysVersion/findPage', pageRequest);
 				let url = getquote.data.content[0].path;
-				this.DownloadImg = QR.createQrCodeImg(url, {
-					size: parseInt(200) //二维码大小  
-				})
+				this.Downloadurl = url;
+
 			},
 			orderissuer() {
 				let id = this.userInfo.sysUser.id;
 				this.orderissuerImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/register/orderissuer?id=" + id, {
 					size: parseInt(200) //二维码大小  
 				})
+				this.orderissuerUrl = this.$base.h5BaseUrl + "/#/pages/register/orderissuer?id=" + id;
+				// this.orderissuerUrl = "http://192.168.0.20/h5/#/pages/register/orderissuer?id=" + id;
+
 			},
 			change(index) {
 				this.current = index;
@@ -164,21 +309,35 @@
 			change1(index) {
 				this.current1 = index;
 			},
-			getStaffList(staffType) {
-				// 0未认证 1已认证 2全部
+			getStaffList() {
 				this.navigate({
-					url: '/pages/tools/addStaff/authentication' + staffType,
+					url: '/pages/tools/addStaff/authentication',
 				}, "navigateTo", true);
-			}
+			},
+			newStats() {
+				this.navigate({
+					url: '/pages/tools/addStaff/employeeAdditionCount',
+				}, "navigateTo", true);
+			},
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
+	/deep/ {
+		.u-tab-bar {
+			background: linear-gradient(90deg, rgba(82, 199, 224, 1), rgba(43, 145, 239, 1)) !important;
+			border-radius: 4px 4px 4px 4px;
+		}
+
+		.u-tab-item {}
+	}
+
 	page {
-		background-color: #F8FAFE;
+		background-color: #fff;
 	}
 
+	// 扫码注册下载
 	.promotion {
 		width: 100%;
 		height: auto;
@@ -187,43 +346,115 @@
 		border-radius: 6px;
 		padding: 0 16px 16px;
 
-		.invitation {
-			width: 160px;
-			height: 24px;
-			background: rgba(255, 224, 178, 0.5);
-			box-shadow: 2px 0px 1px 0px rgba(255, 255, 255, 0.6);
-			border-radius: 12px;
-			border: 1px solid #FFDCA7;
-			color: #FB892B;
-			margin-top: 10px;
-
-			image {
-				width: 16px;
-				height: 16px;
-				margin-right: 5px;
+		.shareMethod {
+			width: 100%;
+
+			>view {
+				text {
+					color: #999;
+					font-size: 12px;
+					margin-top: 4px;
+				}
+
+				image {
+					width: 38px;
+					height: 38px;
+				}
+			}
+		}
+
+		.qodeurl {
+			padding: 5px 10px;
+			border: 1px solid #EEEEEE;
+			border-radius: 2px;
+			margin-top: 36px;
+
+			text {
+				white-space: normal;
+				word-wrap: break-word;
+				word-break: break-all;
+				text-align: center;
+				/* 文本居中 */
+				color: #666;
+				font-size: 13px;
 			}
+		}
+
+		.btn {
+			background: linear-gradient(90deg, #0153FF 0%, #0D89FF 100%);
+			box-shadow: 0px 2px 5px 0px rgba(0, 82, 255, 0.1);
+			border-radius: 4px;
+			padding: 5px 40px;
+			margin-bottom: 48px;
+
+			text {
+				font-size: 13px;
+				color: #fff;
+			}
+		}
 
+		.tioop {
+			background: #F9FAFB;
+			border-radius: 2px;
+			padding: 5px 10px;
+			border: 1px solid #EEEEEE;
+			text-align: center;
+			color: #333;
+			font-size: 12px;
 		}
 	}
 
-	.Personnel {
-		height: auto;
-		width: 100%;
-		background: #fff;
-		background-image: url("/static/image/my/banner.png");
-		background-size: 100% 100%;
-		padding: 110px 24px 10px;
+	// 扫码注册下载
+	// 我的成员  统计
+	.myMembers,
+	.myMembers1 {
+		height: 60px;
+		background: linear-gradient(90deg, #F3F8FF 0%, #DCF0FF 100%);
+		box-shadow: 0px 2px 5px 0px #DAE3F4;
+		border-radius: 6px;
+		margin-top: 16px;
+		padding: 10px;
 
-		.addMe {
-			width: 70px;
-			height: 70px;
+		image {
+			width: 40px;
+			height: 40px;
+			margin-right: 6px;
+		}
 
-			image {
-				width: 100%;
-				height: 100%;
-			}
+		text:nth-child(1) {
+			color: #536674;
+			font-size: 15px;
+			font-weight: bold;
 		}
 
+		text:nth-child(2) {
+			color: #999999;
+			font-size: 12px;
+		}
+
+		.circle {
+			width: 24px;
+			height: 24px;
+			background: linear-gradient(175deg, #3793FF 0%, #0175FF 100%);
+			box-shadow: 0px 2px 2px 0px rgba(0, 133, 255, 0.15);
+			border-radius: 50%;
+		}
+	}
+
+	.myMembers1 {
+		background: linear-gradient(90deg, #FFFAF4 0%, #FFEDDD 100%);
+
+		.circle {
+			background: linear-gradient(175deg, #FFBB37 0%, #FF8A00 100%);
+		}
+	}
+
+	// 我的成员  统计
+	.Personnel {
+		height: 177px;
+		width: 100%;
+		background-image: url("/static/image/addStaff/banner.png");
+		background-size: 100% 100%;
 	}
 
 	.headers {

+ 367 - 0
pages/tools/addStaff/authentication.vue

@@ -0,0 +1,367 @@
+<template>
+	<view>
+		<!-- 公共组件-每个页面必须引入 -->
+		<public-module></public-module>
+
+		<service-widget @btnClick="btn_click"></service-widget>
+		<view class="headers ">
+			<view class="dis a-c j-start ">
+				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+				<text style="margin: auto;">我的成员</text>
+				<image src="../../../static/image/addStaff/search.png" mode="" style="width: 22px;height: 22px;"
+					@click="search">
+				</image>
+			</view>
+			<view class="search dis  f-c mt-3" v-if="this.userInfo.sysUser.managementSource == '2'">
+				<u-tabs :list="userAuthType" :is-scroll="false" :current="current" @change="change"
+					inactive-color="#666666" active-color="#333" style="width: 100%;"></u-tabs>
+				<view class="dis j-s a-c numberOfPeople">
+					<text>{{allCount}}</text>
+					<text>{{noCount}}</text>
+					<text>{{yesCount}}</text>
+				</view>
+			</view>
+		</view>
+		<view
+			:style="{padding:this.userInfo.sysUser.managementSource == '2'?'188px 16px 50px 16px':'108px 16px 50px 16px'}">
+			<view class="Paging dis f-c " v-for="(item,index) in authlist" :key="index">
+				<view class="pa-title dis a-c"
+					:style="{background:item.status==1?'linear-gradient( 90deg, #F5F7FF 0%, #E4EBFF 100%)':'linear-gradient( 90deg, #FDF9F4 0%, #FFF1E0 100%)',borderBottom:item.status==1?'1px solid #E7EFFF':'1px solid #FFF1E7'}">
+					<view class="colorBlock dis a-c j-c " :style="{background:item.status==1?'#3D7BFE':'#FF984E'}">
+						<text>{{item.status==1?'认证通过':'申请加入'}}</text>
+					</view>
+					<text :style="{color:item.status==1?'#3D7BFE':'#E37D34'}">{{item.updateTime}}</text>
+				</view>
+				<view class="pa-cent dis f-c " @click.stop="detail(item)">
+					<view class="title dis a-c j-s">
+						<view class="dis a-c">
+							<text>{{item.name}}</text>
+							<image v-if="item.levelName=='一级代理'" src="../../../static/image/team/proxy1.png" mode="">
+							</image>
+							<image v-if="item.levelName=='二级代理'" src="../../../static/image/team/proxy2.png" mode="">
+							</image>
+							<image v-if="item.levelName=='三级代理'" src="../../../static/image/team/proxy3.png" mode="">
+							</image>
+							<image v-if="item.levelName=='临时代理'" src="../../../static/image/team/proxy4.png" mode="">
+							</image>
+						</view>
+						<u-icon name="arrow-right" color="#C7C6CA" size="26"></u-icon>
+					</view>
+					<text>工号:{{item.id}}</text>
+					<view class="dis j-s a-c">
+						<text>手机号:{{item.mobile}}</text>
+						<view class="callPhone dis a-c j-c" @click.stop="callPhone(item.mobile)">
+							<text>联系TA</text>
+						</view>
+					</view>
+				</view>
+			</view>
+			<u-loadmore v-if="authlist.length!=0" :status="status" />
+		</view>
+
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from "vuex"
+	export default {
+		data() {
+			return {
+				userAuthType: [{
+					name: '全部'
+				}, {
+					name: '未认证'
+				}, {
+					name: '认证通过'
+				}, ],
+				current: 0,
+				shape: 'square',
+				clearabled: true,
+				showAction: false,
+				inputAlign: 'left',
+				pageRequest: { //查询的默认条件
+					pageNum: 1,
+					pageSize: 20,
+					authenticationStatus: null,
+					criteria: "",
+				},
+				authlist: [],
+				status: 'loadmore',
+				totalPages: 0, //订单总页数
+				allCount: "",
+				noCount: "",
+				yesCount: "",
+			}
+		},
+		onReachBottom() {
+			if (this.pageRequest.pageNum >= this.totalPages) return;
+			this.status = 'loading';
+			this.pageRequest.pageNum = ++this.pageRequest.pageNum;
+			setTimeout(async () => {
+				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
+				if (res.code == '200') {
+					this.authlist = [...this.authlist, ...res.data.content];
+				}
+				if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
+				else this.status = 'loading';
+			}, 1000)
+		},
+		onLoad() {
+			if (this.userInfo.sysUser.managementSource == '1') {
+				this.userAuthType = [{
+					name: '全部'
+				}];
+			}
+			this.getServerData();
+			this.querylist();
+		},
+		computed: {
+			...mapState(['userInfo', 'sources']),
+		},
+		methods: {
+			change(index) {
+				this.current = index;
+				switch (index) {
+					case 0:
+						this.pageRequest.authenticationStatus = null;
+						this.querylist();
+						break;
+					case 1:
+						this.pageRequest.authenticationStatus = "2";
+						this.querylist();
+						break;
+					case 2:
+						this.pageRequest.authenticationStatus = "1";
+						this.querylist();
+						break;
+				}
+			},
+			async getServerData() {
+				let res = await this.$http.get(
+					`/app/customer/authStatics?dateType=0`);
+				if (res.code == '200') {
+					this.allCount = res.data.allCount;
+					this.noCount = res.data.noCount;
+					this.yesCount = res.data.yesCount;
+				}
+			},
+			btn_click() {
+				uni.navigateTo({
+					url: '/pages/chat/chat'
+				})
+			},
+			async querylist() {
+				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
+				if (res.code == '200') {
+					this.authlist = res.data.content;
+					this.totalPages = res.data.totalPages;
+				}
+			},
+			detail(item) {
+				this.navigate({
+					url: '/pages/tools/addStaff/authenticationdetails?id=' + item.id + "&status=" + item.status
+				}, "navigateTo", true);
+			},
+			async stausSearch() {
+				this.querylist();
+				this.statusShow = false;
+			},
+			//状态筛选
+			statusclick(e) {
+				this.pageRequest.authenticationStatus = e.value;
+			},
+			callPhone(tel) {
+				uni.makePhoneCall({
+					phoneNumber: tel,
+					success: () => {
+						console.log("成功拨打电话")
+					}
+				})
+			},
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+			change1(index) {
+				this.current1 = index;
+			},
+			//回车搜索事件
+			search() {
+				this.navigate({
+					url: '/pages/tools/addStaff/authenticationSearch'
+				}, "navigateTo", true);
+			},
+			//搜索按钮事件
+			clear(val) {
+				this.pageRequest.criteria = "";
+				this.querylist();
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ {
+		.u-tab-bar {
+			background: linear-gradient(90deg, #0052FF 0%, rgba(0, 82, 255, 0) 100%) !important;
+			border-radius: 4px 4px 4px 4px;
+		}
+	}
+
+	page {
+		background-color: #F8FAFE;
+	}
+
+	.active {
+		position: relative;
+		background: rgba(0, 82, 255, 0.1);
+		color: #0052FF;
+		border: 1px solid #0052FF;
+		font-weight: 700;
+	}
+
+	.term {
+
+		height: 100%;
+
+		.title {
+			font-size: 14px;
+			font-weight: bold;
+			color: #232832;
+			padding: 10px 0;
+			border-bottom: 1px solid #f2f2f2;
+		}
+
+		>text {
+			font-size: 13px;
+			font-weight: bold;
+			color: #232832;
+			margin-bottom: 10px;
+		}
+
+		.status-data {
+			padding: 4px 10px;
+			box-sizing: border-box;
+			margin-right: 10px;
+			font-size: 12px;
+			border: 1px solid #eee;
+			cursor: pointer;
+		}
+
+		.operateBtn {
+			font-weight: bold;
+			font-size: 16px;
+
+			.cancel {
+				width: 50%;
+				height: 46px;
+				color: #0052FF;
+				background-color: #EAEAEA;
+			}
+
+			.confirm {
+				width: 50%;
+				height: 46px;
+				color: #fff;
+				background-color: #0052FF;
+			}
+		}
+	}
+
+	.search {
+		width: 100%;
+
+		.numberOfPeople {
+			text {
+				width: 33.33%;
+				text-align: center;
+				font-weight: 500;
+				font-size: 14px;
+				color: #333;
+			}
+		}
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		height: auto;
+		width: 100%;
+		z-index: 999999;
+		padding: 50px 16px 10px;
+		height: auto;
+		background: #fff;
+
+		text {
+			font-size: 18px;
+			font-weight: bold;
+			color: #000;
+		}
+	}
+
+	.Paging {
+		background: #FFFFFF;
+		border-radius: 4px;
+		border-bottom: 1px solid #E7EFFF;
+		margin-bottom: 10px;
+
+		.pa-title {
+			background: linear-gradient(90deg, #FDF9F4 0%, #FFF1E0 100%);
+			border-radius: 4px 4px 0px 0px;
+			border-bottom: 1px solid #FFF1E7;
+
+			.colorBlock {
+
+				background: #FF984E;
+				border-radius: 4px 0px 4px 0px;
+				color: #fff;
+				font-size: 12px;
+				margin-right: 6px;
+				padding: 3px 8px;
+			}
+
+			>text {
+				font-size: 12px;
+				color: #E37D34;
+			}
+		}
+
+		.pa-cent {
+			padding: 10px;
+
+			.title {
+				text {
+					font-size: 17px;
+					color: #333;
+					font-weight: bold;
+				}
+
+				image {
+					width: 133rpx;
+					height: 46rpx;
+					margin-left: 8px;
+				}
+			}
+
+			>text {
+				font-size: 14px;
+				color: #666;
+			}
+
+			.callPhone {
+				background: linear-gradient(90deg, #3793FF 0%, #0075FF 100%);
+				box-shadow: 0px 2px 2px 0px rgba(0, 178, 255, 0.15);
+				border-radius: 4px;
+				padding: 2px 6px;
+				color: #fff;
+				font-size: 12px;
+			}
+
+		}
+	}
+</style>

+ 0 - 228
pages/tools/addStaff/authentication1.vue

@@ -1,228 +0,0 @@
-<template>
-	<view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="headers " :style="headerStyle">
-			<view class="dis a-c j-start ">
-				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">未认证</text>
-			</view>
-			<view class="search dis j-s a-c mt-5">
-				<u-search v-model="pageRequest.criteria"
-					style="box-shadow: 0px 4px 10px 0px #DAE3F4;border-radius: 6px;" @custom="custom" @search="search"
-					:shape="shape" :height='68' bg-color="#fff" color="#000" :input-style="{background:'transparent'}"
-					placeholder-color="rgba(51,51,51,0.6)" :clearabled="clearabled" :show-action="showAction"
-					:input-align="inputAlign" @clear="clear" :action-style="{background:'#fff'}"
-					placeholder="请输入工号、姓名、手机号查询"></u-search>
-				<!-- <image src="/static/image/car-insure/dropdown.png" mode="" @tap="searchPopup"></image> -->
-			</view>
-		</view>
-		<view style="padding: 160px 16px 50px 16px;">
-			<view class="Paging dis f-c " v-for="(item,index) in list" :key="index">
-				<view class="pa-title dis a-c j-s">
-					<view class="dis a-c ">
-						<image src="../../../static/image/addStaff/active.png" mode=""></image>
-						<text>未认证</text>
-					</view>
-					<u-button size="mini" type="primary" :custom-style="{fontSize:'14px'}" :plain="true"
-						@click="details(item.id)">查看详情</u-button>
-				</view>
-				<view class="pa-cent dis f-c mt-2">
-					<text style="color: #333;">姓名:{{item.name}}</text>
-					<text>工号:{{item.id}}</text>
-					<view class="dis j-s a-c">
-						<text>手机号:{{item.mobile}}</text>
-						<image src="../../../static/image/addStaff/phone.png" mode="" @click="callPhone(item.mobile)">
-						</image>
-					</view>
-				</view>
-			</view>
-			<u-loadmore v-if="list.length!=0" :status="status" />
-		</view>
-
-	</view>
-</template>
-<script>
-	import {
-		mapState
-	} from "vuex"
-	export default {
-		data() {
-			return {
-				headerStyle: {
-					backgroundColor: '',
-					backgroundImage: '',
-					backgroundSize: '',
-					backgroundPosition: '',
-					boxShadow: ''
-					// 其他样式属性...
-				},
-				shape: 'square',
-				clearabled: true,
-				showAction: false,
-				inputAlign: 'left',
-				list: [],
-				pageRequest: { //查询的默认条件
-					pageNum: 1,
-					pageSize: 20,
-					authenticationStatus: '2',
-					criteria: "",
-				},
-				status: 'loadmore',
-				totalPages: 0, //订单总页数
-			}
-		},
-		onReachBottom() {
-			if (this.pageRequest.pageNum >= this.totalPages) return;
-			this.status = 'loading';
-			this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-			setTimeout(async () => {
-				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
-				if (res.code == '200') {
-					this.list = [...this.list, ...res.data.content];
-				}
-				if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-				else this.status = 'loading';
-			}, 1000)
-		},
-		onLoad() {
-			this.querylist();
-		},
-		computed: {
-			...mapState(['userInfo', 'sources']),
-		},
-		methods: {
-			btn_click() {
-				uni.navigateTo({
-					url: '/pages/chat/chat'
-				})
-			},
-			async querylist() {
-				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
-				if (res.code == '200') {
-					this.list = res.data.content;
-					this.totalPages = res.data.totalPages;
-				}
-			},
-			details(id) {
-				this.navigate({
-					url: '/pages/tools/addStaff/authenticationdetails?id=' + id
-				}, "navigateTo", true);
-			},
-			callPhone(tel) {
-				uni.makePhoneCall({
-					phoneNumber: tel,
-					success: () => {
-						console.log("成功拨打电话")
-					}
-				})
-			},
-			//页面返回按钮
-			back() {
-				uni.navigateBack({
-					delta: 1, // 返回的页面数,如果是1表示返回上一页
-					success: function() {}
-				});
-			},
-			change(index) {
-				this.current = index;
-			},
-			change1(index) {
-				this.current1 = index;
-			},
-			getStaffList(staffType) {
-				// 0未认证 1已认证 2全部
-				this.navigate({
-					url: '/pages/tool-staff-list/tool-staff-list?staffType=' + staffType
-				}, "navigateTo", true);
-			},
-			//回车搜索事件
-			search(val) {
-				this.querylist();
-			},
-			//搜索按钮事件
-			clear(val) {
-				this.pageRequest.criteria = "";
-				this.querylist();
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	page {
-		background-color: #F8FAFE;
-	}
-
-	.search {
-
-		image {
-			width: 22px;
-			height: 22px;
-			margin-left: 20px;
-		}
-	}
-
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		height: auto;
-		width: 100%;
-		z-index: 999999;
-		padding: 16px;
-		padding-top: 50px;
-		height: auto;
-		background: #F8FAFE;
-		background-image: url("/static/image/addStaff/bfg.png");
-		background-size: 100% 100%;
-
-		text {
-			font-size: 18px;
-			font-weight: bold;
-			color: #000;
-		}
-	}
-
-	.Paging {
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		box-shadow: 0px 4px 10px 0px #DAE3F4;
-		border-radius: 6px;
-		padding: 10px;
-		box-sizing: border-box;
-		margin-bottom: 10px;
-
-		.pa-title {
-			padding-bottom: 6px;
-			border-bottom: 1px solid #f2f2f2;
-
-			text {
-				font-size: 14px;
-				color: #0BA7FF;
-				font-weight: 700;
-				margin-left: 6px;
-			}
-
-			image {
-				width: 18px;
-				height: 18px;
-			}
-		}
-
-		.pa-cent {
-			text {
-				font-size: 13px;
-				color: rgba(51, 51, 51, 0.8);
-				font-weight: 400;
-			}
-
-			image {
-				width: 20px;
-				height: 20px;
-			}
-		}
-	}
-</style>

+ 0 - 228
pages/tools/addStaff/authentication2.vue

@@ -1,228 +0,0 @@
-<template>
-	<view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="headers " :style="headerStyle">
-			<view class="dis a-c j-start ">
-				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">已认证</text>
-			</view>
-			<view class="search dis j-s a-c mt-5">
-				<u-search v-model="pageRequest.criteria"
-					style="box-shadow: 0px 4px 10px 0px #DAE3F4;border-radius: 6px;" @custom="custom" @search="search"
-					:shape="shape" :height='68' bg-color="#fff" color="#000" :input-style="{background:'transparent'}"
-					placeholder-color="rgba(51,51,51,0.6)" :clearabled="clearabled" :show-action="showAction"
-					:input-align="inputAlign" @clear="clear" :action-style="{background:'#fff'}"
-					placeholder="请输入工号、姓名、手机号查询"></u-search>
-				<!-- <image src="/static/image/car-insure/dropdown.png" mode="" @tap="searchPopup"></image> -->
-			</view>
-		</view>
-		<view style="padding: 160px 16px 50px 16px;">
-			<view class="Paging dis f-c " v-for="(item,index) in list" :key="index">
-				<view class="pa-title dis a-c j-s">
-					<view class="dis a-c ">
-						<image src="../../../static/image/addStaff/active1.png" mode=""></image>
-						<text>已认证</text>
-					</view>
-					<u-button size="mini" type="primary" :custom-style="{fontSize:'14px'}" :plain="true"
-						@click="detail(item.id)">查看详情</u-button>
-				</view>
-				<view class="pa-cent dis f-c mt-2">
-					<text style="color: #333;">姓名:{{item.name}}</text>
-					<text>工号:{{item.id}}</text>
-					<view class="dis j-s a-c">
-						<text>手机号:{{item.mobile}}</text>
-						<image src="../../../static/image/addStaff/phone.png" mode="" @click="callPhone(item.mobile)">
-						</image>
-					</view>
-				</view>
-			</view>
-			<u-loadmore v-if="list.length!=0" :status="status" />
-		</view>
-
-	</view>
-</template>
-<script>
-	import {
-		mapState
-	} from "vuex"
-	export default {
-		data() {
-			return {
-				headerStyle: {
-					backgroundColor: '',
-					backgroundImage: '',
-					backgroundSize: '',
-					backgroundPosition: '',
-					boxShadow: ''
-					// 其他样式属性...
-				},
-				shape: 'square',
-				clearabled: true,
-				showAction: false,
-				inputAlign: 'left',
-				pageRequest: { //查询的默认条件
-					pageNum: 1,
-					pageSize: 20,
-					authenticationStatus: '1',
-					criteria: "",
-				},
-				list: [],
-				status: 'loadmore',
-				totalPages: 0, //订单总页数
-			}
-		},
-		onReachBottom() {
-			if (this.pageRequest.pageNum >= this.totalPages) return;
-			this.status = 'loading';
-			this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-			setTimeout(async () => {
-				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
-				if (res.code == '200') {
-					this.list = [...this.list, ...res.data.content];
-				}
-				if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-				else this.status = 'loading';
-			}, 1000)
-		},
-		onLoad() {
-			this.querylist();
-		},
-		computed: {
-			...mapState(['userInfo', 'sources']),
-		},
-		methods: {
-			btn_click() {
-				uni.navigateTo({
-					url: '/pages/chat/chat'
-				})
-			},
-			async querylist() {
-				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
-				if (res.code == '200') {
-					this.list = res.data.content;
-					this.totalPages = res.data.totalPages;
-				}
-			},
-			detail(id) {
-				this.navigate({
-					url: '/pages/tools/addStaff/authenticationdetails?id=' + id
-				}, "navigateTo", true);
-			},
-			callPhone(tel) {
-				uni.makePhoneCall({
-					phoneNumber: tel,
-					success: () => {
-						console.log("成功拨打电话")
-					}
-				})
-			},
-			//页面返回按钮
-			back() {
-				uni.navigateBack({
-					delta: 1, // 返回的页面数,如果是1表示返回上一页
-					success: function() {}
-				});
-			},
-			change(index) {
-				this.current = index;
-			},
-			change1(index) {
-				this.current1 = index;
-			},
-			getStaffList(staffType) {
-				// 0未认证 1已认证 2全部
-				this.navigate({
-					url: '/pages/tool-staff-list/tool-staff-list?staffType=' + staffType
-				}, "navigateTo", true);
-			},
-			//回车搜索事件
-			search(val) {
-				this.querylist();
-			},
-			//搜索按钮事件
-			clear(val) {
-				this.pageRequest.criteria = "";
-				this.querylist();
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	page {
-		background-color: #F8FAFE;
-	}
-
-	.search {
-
-		image {
-			width: 22px;
-			height: 22px;
-			margin-left: 20px;
-		}
-	}
-
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		height: auto;
-		width: 100%;
-		z-index: 999999;
-		padding: 16px;
-		padding-top: 50px;
-		height: auto;
-		background: #F8FAFE;
-		background-image: url("/static/image/addStaff/bfg.png");
-		background-size: 100% 100%;
-
-		text {
-			font-size: 18px;
-			font-weight: bold;
-			color: #000;
-		}
-	}
-
-	.Paging {
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		box-shadow: 0px 4px 10px 0px #DAE3F4;
-		border-radius: 6px;
-		padding: 10px;
-		box-sizing: border-box;
-		margin-bottom: 10px;
-
-		.pa-title {
-			padding-bottom: 6px;
-			border-bottom: 1px solid #f2f2f2;
-
-			text {
-				font-size: 14px;
-				color: #31BE0E;
-				font-weight: 700;
-				margin-left: 6px;
-			}
-
-			image {
-				width: 18px;
-				height: 18px;
-			}
-		}
-
-		.pa-cent {
-			text {
-				font-size: 13px;
-				color: rgba(51, 51, 51, 0.8);
-				font-weight: 400;
-			}
-
-			image {
-				width: 20px;
-				height: 20px;
-			}
-		}
-	}
-</style>

+ 0 - 332
pages/tools/addStaff/authentication3.vue

@@ -1,332 +0,0 @@
-<template>
-	<view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="headers " :style="headerStyle">
-			<view class="dis a-c j-start ">
-				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">认证管理</text>
-			</view>
-			<view class="search dis j-s a-c mt-5">
-				<u-search v-model="pageRequest.criteria"
-					style="box-shadow: 0px 4px 10px 0px #DAE3F4;border-radius: 6px;" @search="search" :shape="shape"
-					:height='68' bg-color="#fff" color="#000" :input-style="{background:'transparent'}"
-					placeholder-color="rgba(51,51,51,0.6)" :clearabled="clearabled" :show-action="showAction"
-					:input-align="inputAlign" @clear="clear" :action-style="{background:'#fff'}"
-					placeholder="请输入工号、姓名、手机号查询"></u-search>
-				<image src="/static/image/addStaff/screen.png" mode="" @tap="statusShow=true"></image>
-			</view>
-
-		</view>
-		<view style="padding: 160px 16px 50px 16px;">
-			<view class="Paging dis f-c " v-for="(item,index) in list" :key="index">
-				<view class="pa-title dis a-c j-s">
-					<view class="dis a-c ">
-						<image
-							:src="item.status==1?'../../../static/image/addStaff/active1.png':'../../../static/image/addStaff/active.png'"
-							mode=""></image>
-						<text>{{item.status==1?"已认证":"未认证"}}</text>
-					</view>
-					<u-button size="mini" type="primary" :custom-style="{fontSize:'14px'}" :plain="true"
-						@click="detail(item)">查看详情</u-button>
-				</view>
-				<view class="pa-cent dis f-c mt-2">
-					<text style="color: #333;">姓名:{{item.name}}</text>
-					<text>工号:{{item.id}}</text>
-					<view class="dis j-s a-c">
-						<text>手机号:{{item.mobile}}</text>
-						<image src="../../../static/image/addStaff/phone.png" mode="" @click="callPhone(item.mobile)">
-						</image>
-					</view>
-				</view>
-			</view>
-			<u-loadmore v-if="list.length!=0" :status="status" />
-		</view>
-		<u-popup v-model="statusShow" mode="bottom" height="400">
-			<view class="term dis f-c j-s">
-				<view style="padding: 0 16px;">
-					<view class="title dis j-c a-c">
-						<text>状态筛选</text>
-					</view>
-					<text>人员状态</text>
-					<view class="dis  a-c  " style="margin-top: 10px;">
-						<view class="status-data" :class="item.value==pageRequest.authenticationStatus? 'active':''"
-							v-for="(item,index) in statusList" @tap.stop.prevent="statusclick(item)" :key="index">
-							{{item.label}}
-						</view>
-					</view>
-				</view>
-				<view class="operateBtn dis ">
-					<view class="cancel dis a-c j-c" @click="statusShow=false">
-						取消
-					</view>
-					<view class="confirm dis a-c j-c" @click="stausSearch">
-						确定
-					</view>
-				</view>
-			</view>
-		</u-popup>
-	</view>
-</template>
-<script>
-	import {
-		mapState
-	} from "vuex"
-	export default {
-		data() {
-			return {
-				statusList: [{
-						label: '未认证',
-						value: 2,
-					},
-					{
-						label: '已认证',
-						value: 1,
-					},
-					{
-						label: '全部',
-						value: null,
-					},
-				],
-				statusShow: false, //状态筛选
-				headerStyle: {
-					backgroundColor: '',
-					backgroundImage: '',
-					backgroundSize: '',
-					backgroundPosition: '',
-					boxShadow: ''
-					// 其他样式属性...
-				},
-				shape: 'square',
-				clearabled: true,
-				showAction: false,
-				inputAlign: 'left',
-				pageRequest: { //查询的默认条件
-					pageNum: 1,
-					pageSize: 20,
-					authenticationStatus: null,
-					criteria: "",
-				},
-				list: [],
-				status: 'loadmore',
-				totalPages: 0, //订单总页数
-			}
-		},
-		onReachBottom() {
-			if (this.pageRequest.pageNum >= this.totalPages) return;
-			this.status = 'loading';
-			this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-			setTimeout(async () => {
-				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
-				if (res.code == '200') {
-					this.list = [...this.list, ...res.data.content];
-				}
-				if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-				else this.status = 'loading';
-			}, 1000)
-		},
-		onLoad() {
-			this.querylist();
-		},
-		computed: {
-			...mapState(['userInfo', 'sources']),
-		},
-		methods: {
-			btn_click() {
-				uni.navigateTo({
-					url: '/pages/chat/chat'
-				})
-			},
-			async querylist() {
-				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
-				if (res.code == '200') {
-					this.list = res.data.content;
-					this.totalPages = res.data.totalPages;
-				}
-			},
-			detail(item) {
-				this.navigate({
-					url: '/pages/tools/addStaff/authenticationdetails?id=' + item.id + "&status=" + item.status
-				}, "navigateTo", true);
-			},
-			async stausSearch() {
-				this.querylist();
-				this.statusShow = false;
-			},
-			//状态筛选
-			statusclick(e) {
-				this.pageRequest.authenticationStatus = e.value;
-			},
-			callPhone(tel) {
-				uni.makePhoneCall({
-					phoneNumber: tel,
-					success: () => {
-						console.log("成功拨打电话")
-					}
-				})
-			},
-			//页面返回按钮
-			back() {
-				uni.navigateBack({
-					delta: 1, // 返回的页面数,如果是1表示返回上一页
-					success: function() {}
-				});
-			},
-			change(index) {
-				this.current = index;
-			},
-			change1(index) {
-				this.current1 = index;
-			},
-			getStaffList(staffType) {
-				// 0未认证 1已认证 2全部
-				this.navigate({
-					url: '/pages/tool-staff-list/tool-staff-list?staffType=' + staffType
-				}, "navigateTo", true);
-			},
-			//回车搜索事件
-			search(val) {
-				this.querylist();
-			},
-			//搜索按钮事件
-			clear(val) {
-				this.pageRequest.criteria = "";
-				this.querylist();
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	page {
-		background-color: #F8FAFE;
-	}
-
-	.active {
-		position: relative;
-		background: rgba(0, 82, 255, 0.1);
-		color: #0052FF;
-		border: 1px solid #0052FF;
-		font-weight: 700;
-	}
-
-	.term {
-
-		height: 100%;
-
-		.title {
-			font-size: 14px;
-			font-weight: bold;
-			color: #232832;
-			padding: 10px 0;
-			border-bottom: 1px solid #f2f2f2;
-		}
-
-		>text {
-			font-size: 13px;
-			font-weight: bold;
-			color: #232832;
-			margin-bottom: 10px;
-		}
-
-		.status-data {
-			padding: 4px 10px;
-			box-sizing: border-box;
-			margin-right: 10px;
-			font-size: 12px;
-			border: 1px solid #eee;
-			cursor: pointer;
-		}
-
-		.operateBtn {
-			font-weight: bold;
-			font-size: 16px;
-
-			.cancel {
-				width: 50%;
-				height: 46px;
-				color: #0052FF;
-				background-color: #EAEAEA;
-			}
-
-			.confirm {
-				width: 50%;
-				height: 46px;
-				color: #fff;
-				background-color: #0052FF;
-			}
-		}
-	}
-
-	.search {
-
-		image {
-			width: 22px;
-			height: 22px;
-			margin-left: 20px;
-		}
-	}
-
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		height: auto;
-		width: 100%;
-		z-index: 999999;
-		padding: 16px;
-		padding-top: 50px;
-		height: auto;
-		background: #F8FAFE;
-		background-image: url("/static/image/addStaff/bfg.png");
-		background-size: 100% 100%;
-
-		text {
-			font-size: 18px;
-			font-weight: bold;
-			color: #000;
-		}
-	}
-
-	.Paging {
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		box-shadow: 0px 4px 10px 0px #DAE3F4;
-		border-radius: 6px;
-		padding: 10px;
-		box-sizing: border-box;
-		margin-bottom: 10px;
-
-		.pa-title {
-			padding-bottom: 6px;
-			border-bottom: 1px solid #f2f2f2;
-
-			text {
-				font-size: 14px;
-				color: #31BE0E;
-				font-weight: 700;
-				margin-left: 6px;
-			}
-
-			image {
-				width: 18px;
-				height: 18px;
-			}
-		}
-
-		.pa-cent {
-			text {
-				font-size: 13px;
-				color: rgba(51, 51, 51, 0.8);
-				font-weight: 400;
-			}
-
-			image {
-				width: 20px;
-				height: 20px;
-			}
-		}
-	}
-</style>

+ 308 - 0
pages/tools/addStaff/authenticationSearch.vue

@@ -0,0 +1,308 @@
+<template>
+	<view>
+		<!-- 公共组件-每个页面必须引入 -->
+		<public-module></public-module>
+
+		<service-widget @btnClick="btn_click"></service-widget>
+		<view class="headers " :style="headerStyle">
+			<view class="dis a-c j-start ">
+				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+				<u-search v-model="pageRequest.criteria" @search="search" @custom="custom" :shape="shape" :height='68'
+					bg-color="#E8E8E9" color="#000" :input-style="{background:'transparent'}" margin=" 0 0 0  30rpx"
+					placeholder-color="rgba(51,51,51,0.6)" :clearabled="clearabled" :show-action="showAction"
+					:input-align="inputAlign" @clear="clear" :action-style="{background:'#fff'}"
+					placeholder="请输入工号、姓名、手机号查询"></u-search>
+
+			</view>
+
+
+		</view>
+		<view style="padding: 114px 16px 50px 16px;">
+			<view class="Paging dis f-c " v-for="(item,index) in list" :key="index">
+				<view class="pa-title dis a-c"
+					:style="{background:item.status==1?'linear-gradient( 90deg, #F5F7FF 0%, #E4EBFF 100%)':'linear-gradient( 90deg, #FDF9F4 0%, #FFF1E0 100%)',borderBottom:item.status==1?'1px solid #E7EFFF':'1px solid #FFF1E7'}">
+					<view class="colorBlock dis a-c j-c " :style="{background:item.status==1?'#3D7BFE':'#FF984E'}">
+						<text>{{item.status==1?'认证通过':'申请加入'}}</text>
+					</view>
+					<text :style="{color:item.status==1?'#3D7BFE':'#E37D34'}">{{item.updateTime}}</text>
+				</view>
+				<view class="pa-cent dis f-c " @click.stop="detail(item)">
+					<view class="title dis a-c j-s">
+						<view class="dis a-c">
+							<text>{{item.name}}</text>
+							<image v-if="item.levelName=='一级代理'" src="../../../static/image/team/proxy1.png" mode="">
+							</image>
+							<image v-if="item.levelName=='二级代理'" src="../../../static/image/team/proxy3.png" mode="">
+							</image>
+							<image v-if="item.levelName=='三级代理'" src="../../../static/image/team/proxy2.png" mode="">
+							</image>
+							<image v-if="item.levelName=='临时代理'" src="../../../static/image/team/proxy4.png" mode="">
+							</image>
+
+						</view>
+						<u-icon name="arrow-right" color="#C7C6CA" size="26"></u-icon>
+					</view>
+					<text>工号:{{item.id}}</text>
+					<view class="dis j-s a-c">
+						<text>手机号:{{item.mobile}}</text>
+						<view class="callPhone dis a-c j-c" @click.stop="callPhone(item.mobile)">
+							<text>联系TA</text>
+						</view>
+						<!-- <image src="../../../static/image/addStaff/phone.png" mode="" >
+						</image> -->
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from "vuex"
+	export default {
+		data() {
+			return {
+				userAuthType: [{
+						name: '全部'
+					}, {
+						name: '未认证'
+					}, {
+						name: '认证通过'
+					},
+					{
+						name: '认证驳回'
+					}
+				],
+				current: 0,
+				headerStyle: {
+					backgroundColor: '',
+					backgroundImage: '',
+					backgroundSize: '',
+					backgroundPosition: '',
+					boxShadow: ''
+					// 其他样式属性...
+				},
+				shape: 'square',
+				clearabled: true,
+				showAction: true,
+				inputAlign: 'left',
+				pageRequest: { //查询的默认条件
+					pageNum: 1,
+					pageSize: 20,
+					authenticationStatus: null,
+					criteria: "",
+				},
+				list: [],
+				status: 'loadmore',
+				totalPages: 0, //订单总页数
+			}
+		},
+
+		onLoad() {},
+		computed: {
+			...mapState(['userInfo', 'sources']),
+		},
+		methods: {
+			btn_click() {
+				uni.navigateTo({
+					url: '/pages/chat/chat'
+				})
+			},
+			async querylist() {
+				let res = await this.$http.post('/app/customer/authenticationQuery', this.pageRequest);
+				if (res.code == '200') {
+					this.list = res.data.content;
+					this.totalPages = res.data.totalPages;
+				}
+			},
+			detail(item) {
+				this.navigate({
+					url: '/pages/tools/addStaff/authenticationdetails?id=' + item.id + "&status=" + item.status
+				}, "navigateTo", true);
+			},
+			callPhone(tel) {
+				uni.makePhoneCall({
+					phoneNumber: tel,
+					success: () => {
+						console.log("成功拨打电话")
+					}
+				})
+			},
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+			custom(val) {
+				this.querylist();
+			},
+			//回车搜索事件
+			search(val) {
+				this.querylist();
+			},
+			//搜索按钮事件
+			clear(val) {
+				this.list = [];
+				this.pageRequest.criteria = "";
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background-color: #F8FAFE;
+	}
+
+	.active {
+		position: relative;
+		background: rgba(0, 82, 255, 0.1);
+		color: #0052FF;
+		border: 1px solid #0052FF;
+		font-weight: 700;
+	}
+
+	.term {
+
+		height: 100%;
+
+		.title {
+			font-size: 14px;
+			font-weight: bold;
+			color: #232832;
+			padding: 10px 0;
+			border-bottom: 1px solid #f2f2f2;
+		}
+
+		>text {
+			font-size: 13px;
+			font-weight: bold;
+			color: #232832;
+			margin-bottom: 10px;
+		}
+
+		.status-data {
+			padding: 4px 10px;
+			box-sizing: border-box;
+			margin-right: 10px;
+			font-size: 12px;
+			border: 1px solid #eee;
+			cursor: pointer;
+		}
+
+		.operateBtn {
+			font-weight: bold;
+			font-size: 16px;
+
+			.cancel {
+				width: 50%;
+				height: 46px;
+				color: #0052FF;
+				background-color: #EAEAEA;
+			}
+
+			.confirm {
+				width: 50%;
+				height: 46px;
+				color: #fff;
+				background-color: #0052FF;
+			}
+		}
+	}
+
+	.search {
+		width: 100%;
+
+		.numberOfPeople {
+			text {
+				width: 25%;
+				text-align: center;
+				font-weight: 500;
+				font-size: 14px;
+				color: #333;
+			}
+		}
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		height: auto;
+		width: 100%;
+		z-index: 999999;
+		padding: 50px 16px 16px;
+		height: auto;
+		background: #fff;
+
+		text {
+			font-size: 18px;
+			font-weight: bold;
+			color: #000;
+		}
+	}
+
+	.Paging {
+		background: #FFFFFF;
+		border-radius: 4px;
+		border-bottom: 1px solid #E7EFFF;
+		margin-bottom: 10px;
+
+		.pa-title {
+			background: linear-gradient(90deg, #FDF9F4 0%, #FFF1E0 100%);
+			border-radius: 4px 4px 0px 0px;
+			border-bottom: 1px solid #FFF1E7;
+
+			.colorBlock {
+
+				background: #FF984E;
+				border-radius: 4px 0px 4px 0px;
+				color: #fff;
+				font-size: 12px;
+				margin-right: 6px;
+				padding: 3px 8px;
+			}
+
+			>text {
+				font-size: 12px;
+				color: #E37D34;
+			}
+		}
+
+		.pa-cent {
+			padding: 10px;
+
+			.title {
+				text {
+					font-size: 16px;
+					color: #333;
+					font-weight: bold;
+				}
+
+				image {
+					width: 49px;
+					height: 17px;
+					margin-left: 8px;
+				}
+			}
+
+			>text {
+				font-size: 14px;
+				color: #666;
+			}
+
+			.callPhone {
+				background: linear-gradient(90deg, #3793FF 0%, #0075FF 100%);
+				box-shadow: 0px 2px 2px 0px rgba(0, 178, 255, 0.15);
+				border-radius: 4px;
+				padding: 2px 6px;
+				color: #fff;
+				font-size: 12px;
+			}
+
+		}
+	}
+</style>

+ 88 - 67
pages/tools/addStaff/authenticationdetails.vue

@@ -1,69 +1,80 @@
 <template>
 	<view>
+
 		<!-- 公共组件-每个页面必须引入 -->
 		<public-module></public-module>
 		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="headers " :style="headerStyle">
-			<view class="dis a-c j-start ">
-				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">查看详情</text>
-			</view>
-		</view>
-		<view style="padding-top: 100px;">
-			<view class="Paging dis f-c ">
-				<view class="pag-data dis j-s a-c">
-					<text>机构名称:</text>
-					<text>{{userData.organization}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>部门编码:</text>
-					<text>{{userData.deptId}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>部门名称:</text>
-					<text>{{userData.deptName}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>工号:</text>
-					<text>{{userData.userId}}</text>
+		<view>
+			<view class="data">
+				<view class="header">
+					<image
+						:src="status==1?'../../../static/image/addStaff/bq1.png':'../../../static/image/addStaff/bq2.png' "
+						mode="widthFix"></image>
 				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>姓名:</text>
-					<text>{{userData.name}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>联系电话:</text>
-					<text>{{userData.phone}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>状态:</text>
-					<text v-if="userData.state==1">已认证</text>
-					<text v-else>未认证</text>
-				</view>
-				<view class="pag-data dis j-s a-c">
-					<text>注册时间:</text>
-					<text>{{userData.createTime}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c" v-if="userData.state==1">
-					<text>认证时间:</text>
-					<text>{{userData.approveTime}}</text>
-				</view>
-				<view class="pag-data dis j-s a-c" v-if="userData.state==1">
-					<text>认证人:</text>
-					<text>{{userData.approveBy}}</text>
+				<view class="Paging dis f-c ">
+					<view class="pag-data dis  a-c">
+						<image src="../../../static/image/addStaff/user.png" mode=""></image>
+						<text class="font-weight" style="">个人信息</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>机构名称:</text>
+						<text>{{userData.organization}}</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>部门编码:</text>
+						<text>{{userData.deptId}}</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>部门名称:</text>
+						<text>{{userData.deptName}}</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>工号:</text>
+						<text>{{userData.userId}}</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>姓名:</text>
+						<text>{{userData.name}}</text>
+					</view>
+
+					<view class="pag-data dis  a-c">
+						<text>角色:</text>
+						<text>{{userData.roleName}}</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>来源:</text>
+						<text>{{userData.source}}</text>
+					</view>
+					<view class="pag-data dis  a-c">
+						<text>联系电话:</text>
+						<text>{{userData.phone}}</text>
+						<image src="../../../static/image/addStaff/phone.png" mode="" @click="callPhone(userData.phone)"
+							style="margin-left: auto;">
+						</image>
+					</view>
+					<view class="pag-data dis  a-c" v-if="userData.passDesc">
+						<text>通过描述:</text>
+						<text>{{userData.passDesc}}</text>
+					</view>
 				</view>
 			</view>
 		</view>
+		<auth-Modal :authShow="authShow" @btnClick="authShow=false" @maskClick="authShow=false"></auth-Modal>
 
 	</view>
 </template>
 <script>
+	import authModal from '@/components/modules/user/authModal.vue'; //实名认证弹窗
 	import {
 		mapState
 	} from "vuex"
 	export default {
+		components: {
+			authModal,
+		},
 		data() {
 			return {
+				authShow: false,
 				headerStyle: {
 					backgroundColor: '',
 					backgroundImage: '',
@@ -97,7 +108,7 @@
 		async onLoad(params) {
 			if (params.id) {
 				this.status = params.status;
-				let res = await this.$http.get('/app/customer/' + params.id);
+				let res = await this.$http.get(`/app/customer/${params.id}`);
 				if (res.code == '200') {
 					this.userData = res.data;
 				}
@@ -171,38 +182,48 @@
 		}
 	}
 
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		height: auto;
-		width: 100%;
-		z-index: 999999;
-		padding: 16px;
-		padding-top: 50px;
-		height: auto;
-		background: #F8FAFE;
-		background-image: url("/static/image/addStaff/bfg.png");
-		background-size: 100% 100%;
+	.data {
+		position: relative;
 
-		text {
-			font-size: 18px;
-			font-weight: bold;
-			color: #000;
+		.header {
+			width: 100%;
+			position: absolute;
+			left: 0;
+			top: 0;
 		}
 	}
 
 	.Paging {
+		position: absolute;
 		width: 100%;
 		height: auto;
 		background: #FFFFFF;
-		box-shadow: 0px 4px 10px 0px #DAE3F4;
 		border-radius: 6px;
-		padding: 6px;
+		padding: 8px 10px;
+		margin-top: 37px;
+		border-bottom: 1px solid #E7EFFF;
 
 		.pag-data {
 			border-bottom: 1px solid #f2f2f2;
 			padding: 6px 0;
+
+			image {
+				width: 20px;
+				height: 20px;
+				margin-right: 6px;
+			}
+
+			>text:first-child {
+				color: #232832;
+				width: 80px;
+				font-size: 14px;
+			}
+
+			>text:last-child {
+				color: #666;
+				width: 70%;
+				font-size: 14px;
+			}
 		}
 
 		.pag-data:last-child {

+ 373 - 0
pages/tools/addStaff/employeeAdditionCount.vue

@@ -0,0 +1,373 @@
+<template>
+	<view>
+		<view class="headers ">
+			<view class="header">
+				<view class="dis a-c j-start ">
+					<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+					<text style="margin: auto;">新增统计</text>
+				</view>
+			</view>
+			<view class="sub">
+				<u-subsection :list="list" mode="subsection" :current="current" :bold="false" @change="subChange"
+					active-color="rgba(255,140,4,0.6)" style="background-color: white;"></u-subsection>
+			</view>
+		</view>
+		<view style="padding: 164px 16px 16px;">
+			<view class="dataset">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>新增人员数据统计</text>
+				</view>
+				<view class="data dis f-wrap a-c j-c">
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.allCount}}</text>
+						<text>全部人员</text>
+					</view>
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.yesCount}}</text>
+						<text>已认证</text>
+					</view>
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.noCount}}</text>
+						<text>未认证</text>
+					</view>
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.oneCount}}</text>
+						<text>一级代理</text>
+					</view>
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.twoCount}}</text>
+						<text>二级代理</text>
+					</view>
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.threeCount}}</text>
+						<text>三级代理</text>
+					</view>
+					<view class="dis f-c a-c ">
+						<text>{{dataInfo.tempCount}}</text>
+						<text>临时代理</text>
+					</view>
+				</view>
+			</view>
+			<view class="chartData">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>新增人员数据列表</text>
+				</view>
+				<view class="echarts-data">
+					<qiun-data-charts v-if="current==0" type="column" :opts="opts1" :chartData="chartData1"
+						:ontouch="true" style="height: 250px;" />
+					<view class="">
+						<qiun-data-charts v-if="current==1 || current==2" type="bar" :opts="opts2"
+							:chartData="chartData2" :ontouch="true" :style="{height:current==1?'250px':'600px'}" />
+					</view>
+
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from "vuex"
+	export default {
+		data() {
+			return {
+				list: [{
+						name: '当日'
+					},
+					{
+						name: '7天'
+					},
+					{
+						name: '近30天'
+					}
+				],
+				current: 0,
+				chartData1: {
+
+				},
+				chartData2: {},
+				opts1: {
+					dataLabel: false,
+					color: ["#FFB632"],
+					padding: [15, 15, 0, 5],
+					touchMoveLimit: 24,
+					legend: {
+						show: false,
+						position: "top"
+					},
+					xAxis: {
+						disableGrid: true,
+						scrollShow: true,
+						itemCount: 4
+					},
+					yAxis: {
+						disableGrid: true,
+						splitNumber: 5,
+						data: [{}]
+					},
+					extra: {
+						column: {
+							type: "group",
+							width: 22,
+							linearType: "custom",
+							seriesGap: 5,
+							barBorderCircle: true,
+							customColor: [
+								"#FF910A"
+							],
+						}
+					}
+				},
+				opts2: {
+					dataLabel: false,
+					color: ["#41B9F7", "#FF920B", "#FDD96B", "#6A95F6"],
+					padding: [15, 30, 0, 5],
+					enableScroll: false,
+					legend: {},
+					xAxis: {
+						boundaryGap: "justify",
+						disableGrid: false,
+						min: 0,
+						axisLine: false,
+						max: 70
+					},
+					yAxis: {
+						showTitle: true,
+						data: [{
+							type: "categories",
+							title: "日期/人数"
+						}]
+					},
+					extra: {
+						bar: {
+							type: "stack",
+							width: 5,
+							meterBorde: 1,
+							meterFillColor: "#FFFFFF",
+							activeBgColor: "#000000",
+							activeBgOpacity: 0.08,
+							categoryGap: 2
+						},
+						tooltip: {
+							borderRadius: 2,
+							boxPadding: 6,
+
+						}
+					}
+				},
+				dateType: 1,
+				dataInfo: {}
+			}
+
+		},
+		computed: {},
+		onShow() {
+
+		},
+		onLoad() {
+			this.getServerData1();
+		},
+		methods: {
+			getMaxOrFive(arr) {
+				if (arr.length === 0) {
+					console.log("数组是空的,无法判断最大值。");
+					return null; // 如果数组为空,返回 null 或者其他您希望的值
+				}
+				const maxValue = Math.max(...arr); // 获取数组中的最大值
+
+				return maxValue < 10 ? maxValue : 5; // 判断并返回最大值或5
+			},
+			async getServerData1() {
+				let res = await this.$http.get(
+					`/app/customer/authStatics?dateType=${this.dateType}`);
+				if (res.code == '200') {
+					this.dataInfo = res.data;
+					let rualit = {
+						categories: res.data.staticsData.categories,
+						series: [{
+							name: "人数",
+							data: res.data.staticsData.series
+						}]
+					};
+					let sum = this.getMaxOrFive(res.data.staticsData.series);
+					if (sum) {
+						this.opts1.yAxis.splitNumber = sum;
+					}
+					this.chartData1 = JSON.parse(JSON.stringify(rualit));
+				}
+
+			},
+			async getServerData2() {
+				let res = await this.$http.get(
+					`/app/customer/authStatics?dateType=${this.dateType}`);
+				if (res.code == '200') {
+					this.dataInfo = res.data;
+					let rualit = {
+						categories: res.data.staticsData.categories,
+						series: [{
+								name: "一级代理",
+								data: res.data.staticsData.series[0].data,
+							},
+							{
+								name: "二级代理",
+								data: res.data.staticsData.series[1].data,
+							},
+							{
+								name: "三级代理",
+								data: res.data.staticsData.series[2].data,
+							},
+							{
+								name: "临时代理",
+								data: res.data.staticsData.series[3].data,
+							}
+						]
+					};
+					this.chartData2 = JSON.parse(JSON.stringify(rualit));
+				}
+
+			},
+			subChange(index) {
+				this.current = index;
+				switch (index) {
+					case 0:
+						this.dateType = 1;
+						this.getServerData1();
+						break;
+					case 1:
+						this.dateType = 2;
+						this.getServerData2();
+						break;
+					case 2:
+						this.dateType = 3;
+						this.getServerData2();
+						break;
+				}
+			},
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ {
+		.u-subsection {}
+	}
+
+	page {
+		background-color: #F7F7F7;
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999999;
+		width: 100%;
+
+		.header {
+			width: 100%;
+			height: auto;
+			padding: 50px 16px 14px;
+			background: linear-gradient(180deg, #FEECD1 0%, #FFFFFF 100%);
+
+			text {
+				font-size: 18px;
+				font-weight: bold;
+				color: #000;
+			}
+		}
+
+		.sub {
+			padding: 8px 15px;
+			background: #fff;
+			border-bottom: 1px solid #EEEEEE;
+		}
+
+	}
+
+	.dataset {
+		background: #FFFFFF;
+		border-radius: 5px;
+		border-bottom: 1px solid #EEEEEE;
+
+		.title {
+			padding: 11px 0;
+
+			.tag {
+				width: 4px;
+				height: 16px;
+				background: linear-gradient(132deg, #FFB834 0%, #FF8D04 100%);
+				border-radius: 5px;
+			}
+
+			text {
+				font-size: 16px;
+				color: #333;
+				font-weight: bold;
+				margin-left: 6px;
+			}
+		}
+
+		.data {
+			margin: 0 10px 10px;
+			background: #FBFBFB;
+			border-radius: 4px;
+			padding: 15px;
+
+			>view {
+				width: 33.33%;
+
+				text:first-child {
+					font-size: 22px;
+					color: #333;
+					font-weight: bold;
+
+				}
+
+				text:last-child {
+					font-size: 12px;
+					color: #999;
+
+				}
+			}
+		}
+	}
+
+	.chartData {
+		background: #FFFFFF;
+		border-radius: 5px;
+		border-bottom: 1px solid #EEEEEE;
+		margin-top: 12px;
+
+		.title {
+			padding: 11px 0;
+
+			.tag {
+				width: 4px;
+				height: 16px;
+				background: linear-gradient(132deg, #FFB834 0%, #FF8D04 100%);
+				border-radius: 5px;
+			}
+
+			text {
+				font-size: 16px;
+				color: #333;
+				font-weight: bold;
+				margin-left: 6px;
+			}
+		}
+
+		.echarts-data {
+			padding: 0 8px 12px;
+		}
+	}
+</style>

+ 12 - 12
pages/tools/team/team1.vue

@@ -205,7 +205,7 @@
 					<view class="dis a-c j-s">
 						<view class="dis a-c">
 							<text
-								style="	font-size: 14px;color: #333;font-weight: bold;width: 45px;">{{item.username}}</text>
+								style="	font-size: 16px;color: #333;font-weight: bold;width: 50px;">{{item.username}}</text>
 							<image
 								:src="item.teamlevel?`../../../static/image/team/proxy${item.teamlevel}.png`:'../../../static/image/team/proxy4.png'"
 								mode=""></image>
@@ -238,14 +238,14 @@
 					<view class="dis a-c j-s">
 						<view class="dis a-c">
 							<text
-								style="	font-size: 14px;color: #333;font-weight: bold;width: 45px;">{{item.username}}</text>
+								style="	font-size: 16px;color: #333;font-weight: bold;width: 50px;">{{item.username}}</text>
 							<image
 								:src="item.teamlevel?`../../../static/image/team/proxy${item.teamlevel}.png`:'../../../static/image/team/proxy4.png'"
 								mode=""></image>
 						</view>
 						<u-icon name="arrow-right" color="#999" size="24"></u-icon>
 					</view>
-					<text class="phone">联系方式:33333333333333333</text>
+					<text class="phone">联系方式:{{item.mobile}}</text>
 				</view>
 				<view class="basicInformation dis a-c j-s">
 					<view class="dis f-c a-c">
@@ -271,14 +271,14 @@
 					<view class="dis a-c j-s">
 						<view class="dis a-c">
 							<text
-								style="	font-size: 14px;color: #333;font-weight: bold;width: 45px;">{{item.username}}</text>
+								style="	font-size: 16px;color: #333;font-weight: bold;width: 50px;">{{item.username}}</text>
 							<image
 								:src="item.teamlevel?`../../../static/image/team/proxy${item.teamlevel}.png`:'../../../static/image/team/proxy4.png'"
 								mode=""></image>
 						</view>
 						<u-icon name="arrow-right" color="#999" size="24"></u-icon>
 					</view>
-					<text class="phone">联系方式:33333333333333333</text>
+					<text class="phone">联系方式:{{item.mobile}}</text>
 				</view>
 				<view class="basicInformation dis a-c j-s">
 					<view class="dis f-c a-c">
@@ -304,14 +304,14 @@
 					<view class="dis a-c j-s">
 						<view class="dis a-c">
 							<text
-								style="	font-size: 14px;color: #333;font-weight: bold;width: 45px;">{{item.username}}</text>
+								style="	font-size: 16px;color: #333;font-weight: bold;width: 50px;">{{item.username}}</text>
 							<image
 								:src="item.teamlevel?`../../../static/image/team/proxy${item.teamlevel}.png`:'../../../static/image/team/proxy4.png'"
 								mode=""></image>
 						</view>
 						<u-icon name="arrow-right" color="#999" size="24"></u-icon>
 					</view>
-					<text class="phone">联系方式:33333333333333333</text>
+					<text class="phone">联系方式:{{item.mobile}}</text>
 				</view>
 				<view class="basicInformation dis a-c j-s">
 					<view class="dis f-c a-c">
@@ -337,14 +337,14 @@
 					<view class="dis a-c j-s">
 						<view class="dis a-c">
 							<text
-								style="	font-size: 14px;color: #333;font-weight: bold;width: 45px;">{{item.username}}</text>
+								style="	font-size: 16px;color: #333;font-weight: bold;width: 50px;">{{item.username}}</text>
 							<image
 								:src="item.teamlevel?`../../../static/image/team/proxy${item.teamlevel}.png`:'../../../static/image/team/proxy4.png'"
 								mode=""></image>
 						</view>
 						<u-icon name="arrow-right" color="#999" size="24"></u-icon>
 					</view>
-					<text class="phone">联系方式:33333333333333333</text>
+					<text class="phone">联系方式:{{item.mobile}}</text>
 				</view>
 				<view class="basicInformation dis a-c j-s">
 					<view class="dis f-c a-c">
@@ -564,7 +564,7 @@
 					this.SummaryList = res.data.hzList;
 					this.userPolicyList1 = res.data.aggregateDataLists.userPolicyList;
 					this.userPolicyList1 = this.userPolicyList1.filter(val => val
-						.username !== '老王');
+						.username !== this.userInfo.sysUser.name);
 					this.userPolicyList2 = res.data.aggregateDataLists0.userPolicyList;
 					this.userPolicyList3 = res.data.aggregateDataLists1.userPolicyList;
 					this.userPolicyList4 = res.data.aggregateDataLists2.userPolicyList;
@@ -812,8 +812,8 @@
 				}
 
 				image {
-					width: 98rpx;
-					height: 34rpx;
+					width: 133rpx;
+					height: 46rpx;
 					margin-left: 6px;
 				}
 			}

+ 3 - 3
pages/tools/team/teamMember1.vue

@@ -210,14 +210,14 @@
 
 		.name {
 			>text {
-				font-size: 16px;
+				font-size: 17px;
 				color: #FFFFFF;
 				font-weight: bold;
 			}
 
 			image {
-				width: 98rpx;
-				height: 34rpx;
+				width: 133rpx;
+				height: 46rpx;
 				margin-left: 6px;
 			}
 		}

+ 540 - 0
pages/user/authInfo.vue

@@ -0,0 +1,540 @@
+<template>
+	<view class="page">
+		<view class="headers ">
+			<view class="header">
+				<view class="dis a-c j-start ">
+					<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+					<text style="margin: auto;">我的认证</text>
+				</view>
+			</view>
+		</view>
+
+		<view :style="{padding:desc?'12px 15px 74px':'108px 15px 74px'}">
+			<view class="reviewResult dis f-c mb-3" v-if="desc">
+				<view class="dis a-c">
+					<image src="../../static/image/user/error.png" mode=""
+						style="width: 28rpx;height: 35rpx;margin-right: 4px;"></image>
+					<text style="color: #F44149;font-size: 13px;">尊敬的{{this.userInfo.sysUser.name}}:</text>
+				</view>
+				<text>{{desc}}</text>
+			</view>
+			<view class="ImgInfo">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>请上传身份证的正反面</text>
+				</view>
+				<view class="content">
+					<view class="avatar dis j-s">
+						<view class="infoText dis f-c ">
+							<text>头像面</text>
+							<text>上传您的证件头像面</text>
+						</view>
+						<view class="avatar-img">
+							<image :src="userfrontImg?userfrontImg:'../../static/image/user/asset2.png'" mode=""
+								@click="userfrontChange"></image>
+							<image v-if="userfrontImg" src="../../static/image/user/del.png" mode="" class="imgdel"
+								@click="imgDel('userfrontImg')">
+							</image>
+						</view>
+					</view>
+					<view class="avatar dis j-s mt-2">
+						<view class="infoText dis f-c ">
+							<text>国徽面</text>
+							<text>上传您的证件国徽面</text>
+						</view>
+						<view class="avatar-img">
+							<image :src="userbackImg?userbackImg:'../../static/image/user/asset1.png'" mode=""
+								@click="userbackChange"></image>
+							<image v-if="userbackImg" src="../../static/image/user/del.png" mode="" class="imgdel"
+								@click="imgDel('userbackImg')">
+							</image>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="ImgInfo" style="margin-top: 12px;">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>请完善您的个人信息</text>
+				</view>
+				<view class="infoForm">
+					<uni-forms :value="authInfo" ref="authForm" validate-trigger="bind" style="padding: 0 10px;"
+						err-show-type="toast" label-width="70">
+						<uni-forms-item label="姓名: " required name="name">
+							<input class="uni-input-input textColor" placeholder="待自动录入" v-model="authInfo.name"
+								placeholder-style="font-size:28upx" disabled />
+						</uni-forms-item>
+						<uni-forms-item label="身份证号: " required name="identifyNumber">
+							<input class="uni-input-input textColor" placeholder="待自动录入" v-model="authInfo.identity"
+								placeholder-style="font-size:28upx" disabled />
+						</uni-forms-item>
+						<uni-forms-item label="有效期限: " required>
+							<input class="uni-input-input textColor" placeholder="待自动录入" v-if="!authInfo.identityTime"
+								v-model="authInfo.identityTime" placeholder-style="font-size:28upx" disabled />
+							<text v-else>{{authInfo.identityTime}}</text>
+						</uni-forms-item>
+						<uni-forms-item label="手机号: " required>
+							<input class="uni-input-input textColor" placeholder="请输入手机号" v-model="authInfo.mobile"
+								placeholder-style="font-size:28upx" />
+						</uni-forms-item>
+						<uni-forms-item label="开户行: " required>
+							<input class="uni-input-input textColor" placeholder="请输入开户行" v-model="authInfo.accountno"
+								placeholder-style="font-size:28upx" />
+						</uni-forms-item>
+						<uni-forms-item label="开户账号: " required>
+							<input class="uni-input-input textColor" placeholder="请输入开户账号" v-model="authInfo.bankName"
+								placeholder-style="font-size:28upx" />
+						</uni-forms-item>
+					</uni-forms>
+				</view>
+			</view>
+		</view>
+		<view class="footer">
+			<view class="btn dis j-c a-c"
+				:style="{background:disabled?'linear-gradient(90deg, #499DFF 0%, #0052FF 100%)':'linear-gradient(90deg, rgba(73, 157, 255, 0.4) 0%, rgba(0, 82, 255, 0.4) 100%)',pointerEvents:disabled?'auto':'none'}"
+				@click="authSubmit">提交认证</view>
+		</view>
+		<auth-Modal :authShow="authShow" @btnClick="authShow=false" @maskClick="authShow=false"></auth-Modal>
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from "vuex"
+	import authModal from '@/components/modules/user/authModal.vue'; //实名认证弹窗
+	export default {
+		components: {
+			authModal,
+		},
+		data() {
+			return {
+				disabled: true,
+				userfrontImg: "",
+				userbackImg: "",
+				authShow: false,
+				authInfo: {
+					name: "",
+					mobile: "",
+					identityTime: "", //有效期
+					identity: "", //证件号
+					accountno: "", //开户行
+					bankName: "", //开户账号
+					userId: "",
+					esmUserImageVo: [] //img
+				},
+				desc: "",
+			}
+		},
+		watch: {
+			"authInfo.name": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+			"authInfo.identityTime": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+			"authInfo.identity": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+			"authInfo.accountno": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+			"authInfo.bankName": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+			"authInfo.mobile": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+		},
+		computed: {
+			...mapState(['userInfo', 'token']),
+		},
+		onShow() {
+
+		},
+		async onLoad(params) {
+			if (!!params.desc) {
+				this.desc = params.desc;
+			}
+			this.authInfo.userId = this.userInfo.sysUser.id;
+			let res = await this.$http.post('/userAgent/getAuthResult', {
+				userId: this.authInfo.userId,
+			});
+			if (res.code == '200') {
+				this.desc = res.data.desc;
+				this.authInfo.name = res.data.sysUser.name;
+				this.authInfo.identity = res.data.sysUser.identity;
+				this.authInfo.identityTime = res.data.sysUser.identityTime;
+				this.authInfo.mobile = res.data.sysUser.mobile;
+				this.authInfo.accountno = res.data.sysUserInfo?.accountno;
+				this.authInfo.bankName = res.data.sysUserInfo?.bankName;
+				if (res.data.esmUserImageVo) this.authInfo.esmUserImageVo = res.data.esmUserImageVo;
+				res.data.esmUserImageVo?.map(val => {
+					if (val.type == 'SFZ_01') {
+						this.userfrontImg = this.$base.baseUrl + val.path;
+					} else {
+						this.userbackImg = this.$base.baseUrl + val.path;
+					}
+					return val;
+				})
+			}
+		},
+		methods: {
+			async authSubmit() {
+				let res = await this.$http.post('/userAgent/agentAuth', this.authInfo);
+				if (res.code == '200' && res.data.status) {
+					uni.navigateTo({
+						url: "/pages/user/authResult?status=" + res.data.status + '&desc=' + res.data.desc
+					})
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: 'none',
+					});
+				}
+
+			},
+			// 改变按钮状态
+			OnBtnChange() {
+				if (this.authInfo.name && this.authInfo.identity && this.authInfo.identityTime && this.authInfo
+					.accountno && this.authInfo.bankName && this.authInfo.mobile) {
+					this.disabled = true;
+					return;
+				}
+				this.disabled = false;
+			},
+			async userfrontChange() {
+				let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+					count: 1,
+					sizeType: ['compressed']
+				});
+
+				let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+				if (!size) {
+					this.$refs.uToast.show({
+						title: '上传图片大小不能超过 5MB!',
+						type: 'error',
+					})
+					return false
+				}
+				if (chooseImageRes) {
+					this.userfrontImg = chooseImageRes.tempFilePaths[0];
+					uni.uploadFile({
+						url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+						filePath: chooseImageRes.tempFilePaths[0],
+						name: "multipartFile",
+						formData: {
+							'type': 'image',
+						},
+						header: {
+							Authorization: this.token,
+						},
+						success: (imgRes) => {
+							let data = JSON.parse(imgRes.data);
+							if (data.code == '200') {
+								console.log(this.authInfo);
+								if (this.authInfo.esmUserImageVo.some(v => v.type == 'SFZ_01')) {
+									this.authInfo.esmUserImageVo.map(val => {
+										if (val.type == 'SFZ_01') {
+											val.imageId = data.data.id;
+										}
+									})
+								} else {
+									this.authInfo.esmUserImageVo.push({
+										imageId: data.data.id,
+										type: "SFZ_01",
+									})
+								}
+								uni.uploadFile({
+									url: this.$base.baseUrl + '/order/identify/idCard',
+									filePath: chooseImageRes.tempFilePaths[0],
+									name: "image1",
+									header: {
+										Authorization: this.token,
+									},
+									success: (uploadFileRes) => {
+										let data = JSON.parse(uploadFileRes.data).data;
+										this.authInfo.name = data.customerInfo.name;
+										this.authInfo.identity = data.customerInfo
+											.identifyNumber;
+									}
+								});
+							}
+						}
+					})
+				}
+			},
+			async userbackChange() {
+				let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+					count: 1,
+					sizeType: ['compressed']
+				});
+
+				let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+				if (!size) {
+					this.$refs.uToast.show({
+						title: '上传图片大小不能超过 5MB!',
+						type: 'error',
+					})
+					return false
+				}
+				if (chooseImageRes) {
+					this.userbackImg = chooseImageRes.tempFilePaths[0];
+					uni.uploadFile({
+						url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+						filePath: chooseImageRes.tempFilePaths[0],
+						name: "multipartFile",
+						formData: {
+							'type': 'image',
+						},
+						header: {
+							Authorization: this.token,
+						},
+						success: (imgRes) => {
+							let data = JSON.parse(imgRes.data);
+							if (data.code == '200') {
+								if (this.authInfo.esmUserImageVo.some(v => v.type == 'SFZ_02')) {
+									this.authInfo.esmUserImageVo.map(val => {
+										if (val.type == 'SFZ_02') {
+											val.imageId = data.data.id;
+										}
+									})
+								} else {
+									this.authInfo.esmUserImageVo.push({
+										imageId: data.data.id,
+										type: "SFZ_02",
+									})
+								}
+								uni.uploadFile({
+									url: this.$base.baseUrl + '/order/identify/idCard',
+									filePath: chooseImageRes.tempFilePaths[0],
+									name: "image2",
+									header: {
+										Authorization: this.token,
+									},
+									success: (uploadFileRes) => {
+										let data1 = JSON.parse(uploadFileRes.data).data;
+										let identifyValidDate = '';
+										if (!!data1.customerInfo
+											.identifyValidDate) {
+											identifyValidDate = data1
+												.customerInfo
+												.identifyValidDate
+												.substr(0, 4) +
+												'-' + data1
+												.customerInfo
+												.identifyValidDate
+												.substr(4, 2) + '-' +
+												data1
+												.customerInfo
+												.identifyValidDate
+												.substr(6,
+													2)
+										}
+										let identifyValidEndDate = '';
+										if (!!data1.customerInfo
+											.identifyValidEndDate) {
+											identifyValidEndDate =
+												data1.customerInfo
+												.identifyValidEndDate
+												.substr(0,
+													4) + '-' + data1
+												.customerInfo
+												.identifyValidEndDate
+												.substr(4, 2) + '-' +
+												data1
+												.customerInfo
+												.identifyValidEndDate
+												.substr(6, 2)
+										}
+										this.authInfo.identityTime = identifyValidDate + "," +
+											identifyValidEndDate;
+									}
+								});
+							}
+						}
+					})
+				}
+			},
+			imgDel(name) {
+				this[name] = "";
+			},
+
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	::v-deep .uni-forms-item {
+		border-bottom: 1px solid #f2f2f2;
+	}
+
+	::v-deep .uni-forms-item:last-child {
+		border: none;
+	}
+
+	::v-deep .uni-forms-item__content {
+		display: flex;
+		align-items: center;
+	}
+
+
+	page {
+		background: #F7F7F7;
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999999;
+		width: 100%;
+		border-bottom: 1px solid #EEEEEE;
+
+		.header {
+			width: 100%;
+			height: auto;
+			padding: 50px 16px 14px;
+			background: linear-gradient(180deg, #D1E3FE 0%, #FFFFFF 100%);
+
+			text {
+				font-size: 18px;
+				font-weight: bold;
+				color: #000;
+			}
+		}
+
+	}
+
+	.reviewResult {
+		width: 100%;
+		background: linear-gradient(90deg, #FFE2E0 0%, #FBF3F3 100%);
+		border-radius: 0px 0px 0px 0px;
+		border: 1px solid #FF535B;
+		border-radius: 4px;
+		padding: 8px 15px;
+		margin-top: 96px;
+
+
+
+		text:last-child {
+			color: #333;
+			font-size: 12px;
+		}
+	}
+
+	.ImgInfo {
+		background: #FFFFFF;
+		border-radius: 5px;
+		border-bottom: 1px solid #EEEEEE;
+
+		.title {
+			padding: 10px 0;
+
+			.tag {
+				width: 4px;
+				height: 16px;
+				background: linear-gradient(132deg, #83B4FC 0%, #3D74FE 100%);
+				border-radius: 5px;
+			}
+
+			text {
+				font-size: 16px;
+				color: #333;
+				font-weight: bold;
+				margin-left: 6px;
+			}
+		}
+
+		.content {
+			padding: 0 10px 10px;
+
+			.avatar {
+				background: #FBFBFB;
+				border-radius: 4px;
+				padding: 7px 8px;
+
+				.infoText {
+					text:first-child {
+						font-size: 14px;
+						color: #333;
+						font-weight: bold;
+					}
+
+					text:last-child {
+						font-size: 12px;
+						color: #999;
+					}
+				}
+
+				.avatar-img {
+					width: 180px;
+					height: 109px;
+					position: relative;
+					padding: 7px;
+					margin-top: 21px;
+					background-image: url("/static/image/user/asset3.png");
+					background-size: 100% 100%;
+
+					image {
+						width: 100%;
+						height: 100%;
+						border-radius: 4px;
+					}
+
+					.imgdel {
+						width: 14px;
+						height: 14px;
+						position: absolute;
+						right: 9px;
+						bottom: 9px;
+						border-radius: 0px;
+					}
+				}
+			}
+		}
+
+		.infoForm {
+			padding: 0 0 0;
+		}
+
+
+	}
+
+	.footer {
+		position: fixed;
+		bottom: 0;
+		height: 62px;
+		background: #FFFFFF;
+		box-shadow: 0px -4px 10px 0px rgba(1, 83, 255, 0.05);
+		padding: 12px 16px;
+		width: 100%;
+
+		.btn {
+			background: linear-gradient(90deg, rgba(73, 157, 255, 0.4) 0%, rgba(0, 82, 255, 0.4) 100%);
+			background: linear-gradient(90deg, #499DFF 0%, #0052FF 100%);
+			border-radius: 4px;
+			padding: 7px;
+			color: #FFFFFF;
+			font-size: 16px;
+		}
+	}
+</style>

+ 149 - 0
pages/user/authResult.vue

@@ -0,0 +1,149 @@
+<template>
+	<view class="page">
+		<view class="headers ">
+			<view class="header">
+				<view class="dis a-c j-start ">
+					<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+					<text style="margin: auto;">认证结果</text>
+				</view>
+			</view>
+		</view>
+		<view class="authresult dis f-c a-c ">
+			<image :src="status==2?'../../static/image/user/deny.png':'../../static/image/user/success.png' " mode="">
+			</image>
+			<text class="mt-1">{{status==2?'审核驳回':'审核通过'}}</text>
+			<text class="mt-2">{{status==2?'请核对并修改以下信息后,再重新提交。':'已成功通过晋掌柜系统实名认证申请,可登录系统使用完整功能'}}</text>
+			<view v-if="status==2" class="denyReason mt-3">
+				<text>{{desc}}</text>
+			</view>
+		</view>
+		<view class="footer">
+			<u-button v-if="status==2" type="primary"
+				style="background:linear-gradient( 90deg, #499DFF 0%, #0052FF 100%);"
+				@tap="reSubmitRequest">重新提交</u-button>
+			<u-button v-if="status==1" type="primary"
+				style="background:linear-gradient( 90deg, #499DFF 0%, #0052FF 100%);"
+				@tap="submitPractitionerInfo">提交执业资料</u-button>
+			<u-button v-if="status==1" type="default" style="background:#fff;margin-top: 20px;"
+				@tap="returnHome">返回主页</u-button>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		data() {
+			return {
+				status: "",
+				desc: "",
+			}
+		},
+		onShow() {
+
+		},
+		onLoad(params) {
+			if (!!params.status) {
+				this.status = params.status;
+				this.desc = params.desc;
+			}
+		},
+		methods: {
+			reSubmitRequest() {
+				uni.navigateTo({
+					url: "/pages/user/authInfo?desc=" + this.desc
+				})
+			},
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+			submitPractitionerInfo() {
+				uni.navigateTo({
+					url: "/pages/user/practitionerInfo"
+				})
+			},
+			returnHome() {
+				uni.switchTab({
+					url: "/pages/index/index"
+				})
+			}
+
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background: #fff;
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999999;
+		width: 100%;
+		border-bottom: 1px solid #EEEEEE;
+
+		.header {
+			width: 100%;
+			height: auto;
+			padding: 50px 16px 14px;
+			background: linear-gradient(180deg, #D1E3FE 0%, #FFFFFF 100%);
+
+			text {
+				font-size: 18px;
+				font-weight: bold;
+				color: #000;
+			}
+		}
+
+	}
+
+	.denyReason {
+		width: 100%;
+		background: #F9F9F9;
+		border-radius: 5px;
+		padding: 15px;
+		color: #666;
+		font-size: 14px;
+	}
+
+	.authresult {
+		position: fixed;
+		top: 200px;
+		left: 0;
+		right: 0;
+		width: 100%;
+		text-align: center;
+		padding: 25px;
+
+		image {
+			width: 50px;
+			height: 50px;
+		}
+
+		text:nth-child(2) {
+			font-size: 15px;
+			color: #333;
+			font-weight: bold;
+		}
+
+		text:nth-child(3) {
+			font-size: 14px;
+			color: #666;
+		}
+	}
+
+	.footer {
+		position: fixed;
+		bottom: 50px;
+		left: 0;
+		right: 0;
+		width: 100%;
+		text-align: center;
+		padding: 25px;
+	}
+</style>

+ 125 - 0
pages/user/authResult1.vue

@@ -0,0 +1,125 @@
+<template>
+	<view class="page">
+		<view class="headers ">
+			<view class="header">
+				<view class="dis a-c j-start ">
+					<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+					<text style="margin: auto;">认证结果</text>
+				</view>
+			</view>
+		</view>
+		<view class="authresult dis f-c a-c ">
+			<image src="../../static/image/user/wawit.png" mode=""></image>
+			<text class="mt-1">等待审核</text>
+			<text class="mt-2">已提交资料,请耐心等待后台人员审核</text>
+		</view>
+		<view class="footer">
+			<u-button type="primary" style="background:linear-gradient( 90deg, #499DFF 0%, #0052FF 100%);"
+				@tap="returnHome">返回主页</u-button>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		data() {
+			return {
+
+			}
+		},
+		onShow() {
+
+		},
+		onLoad() {
+
+		},
+		methods: {
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+			returnHome() {
+				uni.switchTab({
+					url: "/pages/index/index"
+				})
+			}
+
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background: #fff;
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999999;
+		width: 100%;
+		border-bottom: 1px solid #EEEEEE;
+
+		.header {
+			width: 100%;
+			height: auto;
+			padding: 50px 16px 14px;
+			background: linear-gradient(180deg, #D1E3FE 0%, #FFFFFF 100%);
+
+			text {
+				font-size: 18px;
+				font-weight: bold;
+				color: #000;
+			}
+		}
+
+	}
+
+	.denyReason {
+		width: 100%;
+		background: #F9F9F9;
+		border-radius: 5px;
+		padding: 15px;
+		color: #666;
+		font-size: 14px;
+	}
+
+	.authresult {
+		position: fixed;
+		top: 200px;
+		left: 0;
+		right: 0;
+		width: 100%;
+		text-align: center;
+		padding: 25px;
+
+		image {
+			width: 50px;
+			height: 50px;
+		}
+
+		text:nth-child(2) {
+			font-size: 15px;
+			color: #333;
+			font-weight: bold;
+		}
+
+		text:nth-child(3) {
+			font-size: 14px;
+			color: #666;
+		}
+	}
+
+	.footer {
+		background: #FFFFFF;
+		box-shadow: 0px -2px 5px 0px rgba(1, 83, 255, 0.05);
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		padding: 12px 16px;
+	}
+</style>

+ 0 - 697
pages/user/certification.vue

@@ -1,697 +0,0 @@
-<template>
-	<view class="page">
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="posi p-3 d-flex j-center">
-			<view class="posi2">推荐关系</view>
-			<view class="posi2 on">实名认证</view>
-		</view>
-
-		<view class="IDcardInfo p-3 mb-3" style="background-color: #FFFFFF;">
-			<view class="cardImages d-flex j-sb">
-				<view :class="(IdCardBefore=='')?'idCardBefore':'imageBorder'" @click="chooseImage('IdCardBefore')">
-					<template v-if="IdCardBefore!=''">
-						<image :src="IdCardBefore" mode="aspectFill"></image>
-					</template>
-				</view>
-				<view :class="(IdCardAfter=='')?'idCardAfter':'imageBorder'" @click="chooseImage('IdCardAfter')">
-					<template v-if="IdCardAfter!=''">
-						<image :src="IdCardAfter" mode="aspectFill"></image>
-					</template>
-				</view>
-			</view>
-			<view class="d-flex a-center j-center"><text class="IDcardNotice main-text-color"
-					@tap="showPopup(1)">点击查看证件上传实例</text></view>
-
-
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">姓名</view>
-				<view class="d-flex a-center"><input placeholder="请输入姓名" v-model="staffInfo.name" /></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">性别</view>
-				<view class="d-flex a-center" style="width: 100%;">
-					<picker style="width: 100%;" @change="bindPickerChange($event,'sex')" :value="sexList[sexIndex]"
-						:range="sexList">
-						<view style="color: #999;font-size: 30upx;">{{sexList[sexIndex]}}</view>
-					</picker>
-				</view>
-				<view style="color: #999;font-size: 28upx;padding-right: 20upx;flex-shrink: 0;"
-					class="icon iconfont icon-youjiantou d-flex a-center"></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">出生日期</view>
-				<view class="d-flex a-center"><input placeholder="请输入出生日期" v-model="staffInfo.birthday" /></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">户口所在地</view>
-				<view class="d-flex a-center"><input placeholder="请输入户口所在地" type="Textarea"
-						v-model="staffInfo.addressresident" /></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">证件号码</view>
-				<view class="d-flex a-center"><input placeholder="请输入证件号码" @blur="validateIdCard"
-						v-model="staffInfo.identity" /> </view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">民族</view>
-				<view class="d-flex a-center" style="width: 100%;">
-					<picker style="width: 100%;" @change="bindPickerChange($event,'nations')"
-						:value="nationsList[nationsIndex]" :range="nationsList">
-						<view style="color: #999;font-size: 30upx;">{{nationsList[nationsIndex]}}</view>
-					</picker>
-				</view>
-				<view style="color: #999;font-size: 28upx;padding-right: 20upx;flex-shrink: 0;"
-					class="icon iconfont icon-youjiantou d-flex a-center"></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">学历</view>
-				<view class="d-flex a-center" style="width: 100%;">
-					<picker style="width: 100%;" @change="bindPickerChange($event,'education')"
-						:value="educationList[educationIndex]" :range="educationList">
-						<view style="color: #999;font-size: 30upx;">{{educationList[educationIndex]}}</view>
-					</picker>
-				</view>
-				<view style="color: #999;font-size: 28upx;padding-right: 20upx;flex-shrink: 0;"
-					class="icon iconfont icon-youjiantou d-flex a-center"></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">居住地址</view>
-				<view class="d-flex a-center"><input placeholder="请输入通讯地址" v-model="staffInfo.addressnow" /> </view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">毕业院校</view>
-				<view class="d-flex a-center"><input placeholder="请输入毕业院校" v-model="staffInfo.college" /> </view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">邮箱号</view>
-				<view class="d-flex a-center"><input placeholder="请输入邮箱号" v-model="staffInfo.email" /> </view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">婚姻状况</view>
-				<view class="d-flex a-center" style="width: 100%;">
-					<picker style="width: 100%;" @change="bindPickerChange($event,'marrycode')"
-						:value="marrycodeList[marrycodeIndex]" :range="marrycodeList">
-						<view style="color: #999;font-size: 30upx;">{{marrycodeList[marrycodeIndex]}}</view>
-					</picker>
-				</view>
-				<view style="color: #999;font-size: 28upx;padding-right: 20upx;flex-shrink: 0;"
-					class="icon iconfont icon-youjiantou d-flex a-center"></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">血型</view>
-				<view class="d-flex a-center" style="width: 100%;">
-					<picker style="width: 100%;" @change="bindPickerChange($event,'blood')"
-						:value="bloodList[bloodIndex]" :range="bloodList">
-						<view style="color: #999;font-size: 30upx;">{{bloodList[bloodIndex]}}</view>
-					</picker>
-				</view>
-				<view style="color: #999;font-size: 28upx;padding-right: 20upx;flex-shrink: 0;"
-					class="icon iconfont icon-youjiantou d-flex a-center"></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">政治面貌</view>
-				<view class="d-flex a-center" style="width: 100%;">
-					<picker style="width: 100%;" @change="bindPickerChange($event,'politicalstatus')"
-						:value="politicalstatusList[politicalstatusIndex]" :range="politicalstatusList">
-						<view style="color: #999;font-size: 30upx;">{{politicalstatusList[politicalstatusIndex]}}</view>
-					</picker>
-				</view>
-				<view style="color: #999;font-size: 28upx;padding-right: 20upx;flex-shrink: 0;"
-					class="icon iconfont icon-youjiantou d-flex a-center"></view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">紧急联系人姓名</view>
-				<view class="d-flex a-center"><input placeholder="请输入紧急联系人姓名" v-model="staffInfo.namespecial" /> </view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">紧急联系人电话</view>
-				<view class="d-flex a-center"><input placeholder="请输入紧急联系人电话" v-model="staffInfo.phonespecial" />
-				</view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">开户行</view>
-				<view class="d-flex a-center"><input disabled placeholder="系统自动识别" v-model="staffInfo.bankname" />
-				</view>
-			</view>
-			<view class="inputView d-flex">
-				<view class="d-flex a-center">银行卡号</view>
-				<view class="d-flex a-center"><input placeholder="请输入银行卡号" @blur="validateBankCard"
-						v-model="staffInfo.accountno" /> </view>
-			</view>
-		</view>
-		<z-popup v-model="popupShow" :hideOnBlur="false" type="center" width="600upx" radius="12upx">
-			<view class="popup_title">
-				<text @click="popupShow = false">取消</text>
-				<view>{{(popupType=='1')?'证件上传实例':'指定开户行'}}</view>
-				<text @click="popupShow = false">确定</text>
-			</view>
-			<view class="popup_content">
-				<view class="body d-flex a-center j-center">
-					<template v-if="popupType=='1'">
-						<image src="/static/image/certification/certification.jpg" mode="widthFix"></image>
-					</template>
-					<template v-if="popupType=='2'">
-						<view>中国建设银行(储蓄卡)</view>
-					</template>
-				</view>
-			</view>
-		</z-popup>
-
-		<button class="mx-3 my-5 d-flex a-center j-center  main-bg-color" type="primary" @tap="submit">提 交</button>
-
-	</view>
-</template>
-
-<script>
-	import {
-		mapState,
-		mapMutations
-	} from "vuex"
-	import bankBin from "@/common/bankcardinfo.js"
-	import {
-		pathToBase64,
-		base64ToPath
-	} from '@/common/image-tools-base64.js';
-	import zPopup from "@/components/common/z-popup.vue"
-	export default {
-		components: {
-			zPopup
-		},
-		data() {
-			return {
-				popupShow: false, //弹窗开启关闭
-				popupType: 1, //表示证件上传,2表示银行卡指定开户行
-				IdCardBefore: "", //身份证正影像
-				IdCardAfter: "", //身份证反影像
-				bankCard: "", //银行卡影像
-				validateBankCardStatus: false, //银行卡验证状态
-				//民族
-				nationsList: ['汉族', '壮族', '满族', '回族', '苗族', '维吾尔族', '土家族', '彝族', '蒙古族', '藏族', '布依族', '侗族', '瑶族', '朝鲜族',
-					'白族', '哈尼族', '哈萨克族', '黎族', '傣族', '畲族', '傈僳族', '仡佬族', '东乡族', '高山族', '拉祜族', '水族', '佤族', '纳西族', '羌族',
-					'土族', '仫佬族', '锡伯族', '柯尔克孜族', '达斡尔族', '景颇族', '毛南族', '撒拉族', '布朗族', '塔吉克族', '阿昌族', '普米族', '鄂温克族',
-					'怒族', '京族', '基诺族', '德昂族', '保安族', '俄罗斯族', '裕固族', '乌兹别克族', '门巴族', '鄂伦春族', '独龙族', '塔塔尔族', '赫哲族', '珞巴族'
-				],
-				nationsIndex: 0,
-				userLoginId: "",
-				//学历
-				educationList: ["小学", "初中", "高中", "专科", "本科", "硕士", "博士"],
-				educationIndex: 0,
-				// 婚姻状况
-				marrycodeList: ["未婚", "已婚", "离异", "再婚"],
-				marrycodeIndex: 0,
-
-				//政治面貌
-				politicalstatusList: ["群众", "共青团员", "中共党员"],
-				politicalstatusIndex: 0,
-				//血型
-				bloodList: ["A型", "B型", "O型", "AB型"],
-				bloodIndex: 0,
-				sexList: ["男", "女"],
-				sexIndex: 0,
-				staffInfo: {
-					id: "",
-					name: "", //姓名
-					sex: "", //性别
-					birthday: "", //出生日期
-					addressresident: "", //户口地址
-					email: "", //邮箱
-					identity: '', //身份证号
-					college: "", //毕业院校
-					accountno: '', //开户账号
-					bankname: '', //开户行
-					namespecial: '', //紧急联系人姓名
-					phonespecial: '', //紧急联系人电话
-					marrycode: '未婚', //婚姻状况
-					blood: 'A型', //血型
-					education: '小学', //学历
-					addressnow: '', //居住地址
-					nations: '汉族', //民族
-					politicalstatus: '群众', //政治面貌
-
-				}
-
-			}
-		},
-		async onLoad() {
-			this.staffInfo.id = this.userInfo.sysUser.id;
-			let res = await this.$http.get('/apps/getApplicationInfo?jobNumber=' + this.staffInfo.id);
-			if (res.code == 200) {
-				console.log(res)
-				this.staffInfo = res.data;
-			}
-
-		},
-		computed: {
-			...mapState(["userInfo", "userCheckInfo"]),
-		},
-		methods: {
-			...mapMutations(['setUserModules']),
-			btn_click() {
-				uni.navigateTo({
-					url: '/pages/chat/chat'
-				})
-			},
-			// 下拉选择
-			bindPickerChange(e, type) {
-				this[type + 'Index'] = e.detail.value;
-				this.staffInfo[type] = this[type + 'List'][this[type + 'Index']];
-			},
-
-			// 验证身份证号
-			validateIdCard() {
-				var that = this;
-				that.staffInfo.birthday = "";
-				that.staffInfo.sex = "";
-				let mPattern = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/;
-				let validateResult = mPattern.test(this.staffInfo.identity);
-				if (validateResult) {
-					let upperCaseValue = this.staffInfo.identity.toUpperCase();
-					var such = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
-					var sum = 0;
-					for (var i = 0; i < upperCaseValue.length - 1; i++) {
-						var product = upperCaseValue[i] * such[i];
-						sum += product;
-					}
-					var result = sum % 11;
-					var example = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
-					if (upperCaseValue[17] == example[result]) {
-						that.staffInfo.identity = upperCaseValue;
-						that.staffInfo.birthday = upperCaseValue.substr(6, 4) + '-' + upperCaseValue.substr(10, 2) + '-' +
-							upperCaseValue.substr(12, 2);
-						that.staffInfo.sex = (upperCaseValue.substr(16, 1) % 2 == 0) ? '女' : '男';
-						return true;
-					} else {
-						return false;
-					}
-				} else {
-					return false;
-				}
-			},
-
-			// 验证银行卡号
-			validateBankCard() {
-				var that = this;
-				that.staffInfo.bankname = "";
-				bankBin.getBankBin(this.staffInfo.accountno)
-					.then((data) => {
-						that.staffInfo.bankname = data.bankName;
-						if (data.bankCode == "CCB" && data.cardType == "DC") {
-							that.validateBankCardStatus = true;
-						} else {
-							that.validateBankCardStatus = false;
-							uni.showToast({
-								title: '请选择中国建设银行储蓄卡',
-								icon: "none",
-								duration: 2000
-							});
-
-						}
-					})
-					.catch((err) => {
-						that.validateBankCardStatus = false;
-						uni.showToast({
-							title: err.split(":")[1],
-							icon: "none"
-						});
-					})
-			},
-
-			async chooseImage(type) {
-				let [err, chooseImageRes] = await uni.chooseImage({
-					count: 1,
-					sizeType: ['compressed']
-				});
-				if (!chooseImageRes) return;
-				// 上传
-				const isLt2M = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 2;
-				if (!isLt2M) {
-					return uni.showToast({
-						title: '上传图片大小不能超过 2M!',
-						icon: "none"
-					});
-				}
-
-				pathToBase64(chooseImageRes.tempFilePaths[0])
-					.then(async base64 => {
-						this[type] = base64;
-
-						if (type == 'IdCardBefore') {
-							var paramImg = {
-								"image": base64, //图片base64
-								"imgType": "1" //1身份证 2表示行驶证
-							}
-							let imgRes = await this.$http.post('/api/huanong/imgAI', paramImg, {
-								timeout: 30000
-							});
-							if (!!imgRes.data.customerInfo && !!imgRes.data.customerInfo.identifyNumber) {
-								this.staffInfo.name = imgRes.data.customerInfo.name; //姓名
-								this.staffInfo.identity = imgRes.data.customerInfo.identifyNumber; //身份证号
-								this.staffInfo.sex = imgRes.data.customerInfo.identifyIssuedCom; //性别
-								this.staffInfo.birthday = imgRes.data.customerInfo.identifyValidDate; //出生日期
-								this.staffInfo.addressresident = imgRes.data.customerInfo.addr; //户口所在地
-							} else {
-								return uni.showToast({
-									title: '请上传正确的证件',
-									icon: "none"
-								});
-							}
-						}
-					})
-			},
-
-			showPopup(type) {
-				this.popupShow = true;
-				this.popupType = type;
-			},
-
-			// 验证手机号码
-			isPhone() {
-				let mPattern = /^1[3456789]\d{9}$/;
-				return mPattern.test(this.staffInfo.phonespecial);
-			},
-			// 验证邮箱
-			isEmail() {
-				let mPattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
-				return mPattern.test(this.staffInfo.email);
-			},
-			// 验证名字
-			isName() {
-				let mPattern = /^([\u4e00-\u9fa5]{1,6}|[a-zA-Z\.\s]{1,6})$/;
-				return mPattern.test(this.staffInfo.name);
-			},
-			isNamespecial() {
-				let mPattern = /^([\u4e00-\u9fa5]{1,6}|[a-zA-Z\.\s]{1,6})$/;
-				return mPattern.test(this.staffInfo.namespecial);
-			},
-
-			async submit() {
-				if (this.IdCardBefore == "") {
-					return uni.showToast({
-						title: '请上传身份证正面影像',
-						icon: "none"
-					});
-				}
-				if (!this.isName()) {
-					return uni.showToast({
-						title: '请输入正确的姓名',
-						icon: "none"
-					});
-				}
-				if (!this.validateIdCard()) {
-					return uni.showToast({
-						title: '请输入正确的身份证号',
-						icon: "none"
-					});
-				}
-				if (this.staffInfo.addressnow == "") {
-					return uni.showToast({
-						title: '请输入居住地址',
-						icon: "none"
-					});
-				}
-				if (!this.isNamespecial()) {
-					return uni.showToast({
-						title: '请输入正确的紧急联系人姓名',
-						icon: "none"
-					});
-				}
-				if (!this.isPhone()) {
-					return uni.showToast({
-						title: '请输入紧急联系人电话',
-						icon: "none"
-					});
-				}
-				//验证银行卡号
-				await this.validateBankCard();
-				if (!this.validateBankCardStatus) {
-					uni.showToast({
-						title: '请输入正确的银行卡号',
-						icon: "none"
-					});
-					return;
-				}
-				var info = {
-					sysUser: {},
-					esmUserInternal: {},
-					esmUserAgent: {}
-				};
-				Object.assign(info.sysUser, this.userCheckInfo.sysUser)
-				Object.assign(info.esmUserInternal, this.userCheckInfo.esmUserInternal)
-				Object.assign(info.esmUserAgent, this.userCheckInfo.esmUserAgent)
-				info.sysUser.name = this.staffInfo.name; //姓名
-				info.sysUser.email = this.staffInfo.email; //邮箱
-				info.sysUser.sex = this.staffInfo.sex; //性别
-				info.sysUser.jobCode = "17";
-				info.esmUserInternal.birthday = this.staffInfo.birthday; //出生日期
-				info.esmUserInternal.isteamleader = '0';
-				info.esmUserInternal.addressnow = this.staffInfo.addressnow; //
-				info.esmUserInternal.addressresident = this.staffInfo.addressresident; //户口地址
-				info.esmUserInternal.college = this.staffInfo.college; //毕业院校
-				info.esmUserInternal.identity = this.staffInfo.identity; //
-				info.esmUserInternal.accountno = this.staffInfo.accountno; //
-				info.esmUserInternal.bankname = this.staffInfo.bankname; //
-				info.esmUserInternal.namespecial = this.staffInfo.namespecial; //
-				info.esmUserInternal.phonespecial = this.staffInfo.phonespecial; //
-				info.esmUserInternal.marrycode = this.staffInfo.marrycode; //
-				info.esmUserInternal.blood = this.staffInfo.blood; //
-				info.esmUserInternal.education = this.staffInfo.education; //
-				info.esmUserInternal.nations = this.staffInfo.nations; //
-				info.esmUserInternal.politicalstatus = this.staffInfo.politicalstatus; //
-				// 修改并保存人员信息
-				let res = await this.$http.post('/apps/certification', this.staffInfo);
-				if (res.code == 200) {
-					//保存临时数据到本地
-					this.setUserModules({
-						title: 'sysUser',
-						data: info
-					})
-					var params1 = {
-						taskid: this.userInfo.sysUser.id,
-						imgtype: "T1",
-						imgList: [this.IdCardBefore]
-					}
-					await this.$http.post('/insTaskImage/save', params1);
-					var params2 = {
-						taskid: this.userInfo.sysUser.id,
-						imgtype: "T2",
-						imgList: [this.IdCardAfter]
-					}
-					await this.$http.post('/insTaskImage/save', params2);
-
-					uni.showToast({
-						title: '提交成功',
-						icon: "none",
-						duration: 1000
-					});
-					this.setUserModules({
-						title: 'userStatus',
-						data: '2'
-					})
-					setTimeout(() => {
-						return uni.reLaunch({
-							url: "/pages/index/index"
-						})
-					}, 500);
-				} else if (res.code == 500) {
-					uni.showToast({
-						title: '已提交过实名认证',
-						icon: "none",
-						duration: 2000
-					});
-				} else {
-					uni.showToast({
-						title: '系统错误',
-						icon: "none",
-						duration: 2000
-					});
-				}
-			}
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import '@/style/mixin.scss';
-
-	.idCardBefore {
-		background: rgba($themeColor, 0.1) url('/static/image/user/identy2.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-	}
-
-	.idCardAfter {
-		background: rgba($themeColor, 0.1) url('/static/image/user/identy1.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-	}
-
-	.bankCardImage {
-		background: rgba($themeColor, 0.1) url('/static/image/user/card.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-	}
-
-	.imageBorder {
-		border: 2px solid #ddd;
-		padding: 10upx;
-	}
-
-
-	.posi {
-		counter-reset: num;
-	}
-
-	.posi2 {
-		position: relative;
-		display: inline-block;
-		height: 40rpx;
-		line-height: 40rpx;
-		text-align: right;
-		padding-right: 15rpx;
-		width: 140rpx;
-		border-radius: 30rpx;
-		border: 1px solid #F0F0F0;
-		background: #F0F0F0;
-		margin-left: 30rpx;
-		color: #999;
-		font-size: 24rpx;
-	}
-
-	.posi2.on {
-		border: 1px solid $themeColor;
-		background: #FFFFFF;
-		color: $themeColor;
-	}
-
-	.posi2:before {
-		position: absolute;
-		display: block;
-		left: 2rpx;
-		top: 6rpx;
-		width: 28rpx;
-		height: 28rpx;
-		border-radius: 100%;
-		background: #fff;
-		color: #999;
-		counter-increment: num;
-		content: counter(num);
-		text-align: center;
-		line-height: 28rpx;
-	}
-
-	.posi2.on:before {
-		background: $themeColor;
-		color: #FFF;
-	}
-
-	.posi>view:nth-of-type(1):after {
-		position: absolute;
-		display: block;
-		content: "";
-		right: -20rpx;
-		top: 12rpx;
-		width: 16rpx;
-		height: 16rpx;
-		border-top: 1px solid #eee;
-		border-right: 1px solid #eee;
-		transform: rotate(45deg);
-	}
-
-	.posi>.posi2:nth-of-type(1) {
-		margin-left: 0;
-	}
-
-
-	.cardImages>view {
-		width: 310rpx;
-		height: 260rpx;
-	}
-
-	.cardImages>view>image {
-		width: 100%;
-		height: 100%;
-	}
-
-	.IDcardInfo .IDcardNotice,
-	.BankCardInfo .BankCardNotice {
-		text-align: center;
-		height: 110rpx;
-		line-height: 110rpx;
-	}
-
-	.inputView {
-		border-bottom: 1px solid #ddd;
-		height: 90upx;
-	}
-
-	.inputView>view:nth-of-type(1) {
-		flex-shrink: 0;
-		font-size: 32upx;
-		width: 135px;
-		padding-left: 12px;
-		color: #333;
-	}
-
-	.inputView>view:nth-of-type(2)>input {
-		font-size: 30upx;
-		color: #999;
-	}
-
-	.BankCardInfo {
-		background-color: #FFFFFF;
-		padding: 30upx;
-	}
-
-	.popup_box {
-		width: 100%;
-		// border-radius: 12upx;
-	}
-
-	.popup_title {
-		display: flex;
-		justify-content: space-between;
-		height: 88upx;
-		line-height: 88upx;
-		border-bottom: 2upx solid #ebebeb;
-		padding: 0 20upx;
-		background-color: #FFF;
-	}
-
-	.popup_title view {
-		font-size: 32upx;
-		display: flex;
-		align-items: center;
-	}
-
-	.popup_title text {
-		width: 80upx;
-		flex-shrink: 0;
-		text-align: center;
-	}
-
-	.popup_title text {
-		font-size: 28upx;
-		color: #999;
-	}
-
-	.popup_title text:last-child {
-		color: $themeColor;
-	}
-
-	.popup_content {
-		padding: 40rpx 30rpx;
-		background-color: #FFFFFF;
-		text-align: center;
-	}
-
-	.popup_content .body {
-		padding: 20upx 30upx;
-	}
-
-	.popup_content .body image {
-		width: 540upx;
-	}
-</style>

+ 0 - 90
pages/user/infoExamine.vue

@@ -1,90 +0,0 @@
-<template>
-	<view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="d-flex a-center j-center m-5">
-			<image src="/static/bigLogo.png" mode="widthFix" style="width: 180rpx;height: 180rpx;"></image>
-		</view>
-		<view class="status">认证状态:<text class="main-text-color">{{statusstage}}</text></view>
-		<view class="status" v-if="userStatus=='2'">您的认证信息正在审核中,请耐心等待</view>
-		<view class="status" v-if="(userStatus=='3')|| (userStatus=='4')">{{(userStatus=='4')?'退回原因':'驳回原因'}}:</view>
-		<view class="remark" v-if="(userStatus=='3')|| (userStatus=='4')">
-			{{remark}}
-		</view>
-
-		<template v-if="userStatus=='4'">
-			<view class="d-flex flex-column">
-				<button class="d-flex a-center j-center main-bg-color mt-4 mx-3" type="primary"
-					@tap="toNext">重新认证</button>
-				<button class="d-flex a-center j-center main-bf-hover-color mt-4 mx-3" type="primary"
-					@tap="toLogin">下次再说</button>
-			</view>
-		</template>
-	</view>
-</template>
-
-<script>
-	import {
-		mapState
-	} from "vuex"
-	export default {
-		data() {
-			return {
-				remark: "",
-				statusstage: ""
-			}
-		},
-		onLoad() {
-			if (this.userStatus == '2') {
-				this.statusstage = "正在审核中";
-			} else if (this.userStatus == '3') {
-				this.statusstage = "审核驳回";
-			} else if (this.userStatus == '4') {
-				this.statusstage = "退回修改";
-			}
-			this.getRemark();
-		},
-		computed: {
-			...mapState(['userStatus', "userInfo", "userCheckInfo"])
-		},
-		methods: {
-			btn_click() {
-				uni.navigateTo({
-					url: '/pages/chat/chat'
-				})
-			},
-			getRemark() {
-				this.remark = this.userCheckInfo.esmUserInternal.remark;
-			},
-			toNext() {
-				uni.navigateTo({
-					url: "/pages/user/infoInput"
-				})
-			},
-			toLogin() {
-				uni.switchTab({
-					url: "/pages/index/index"
-				})
-			}
-
-		}
-	}
-</script>
-
-<style scoped>
-	.status {
-		font-size: 36rpx;
-		font-weight: bold;
-		margin-top: 20rpx;
-		padding: 0 40rpx;
-	}
-
-	.remark {
-		min-height: 160rpx;
-		margin-top: 20rpx;
-		margin: 10rpx 30rpx;
-		padding: 20rpx;
-		border: 1px solid #ddd;
-	}
-</style>

+ 0 - 262
pages/user/infoInput.vue

@@ -1,262 +0,0 @@
-<template>
-	<view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<service-widget @btnClick="btn_click"></service-widget>
-		<view class="posi p-3 mb-3 d-flex j-center">
-			<view class="posi2 on">推荐关系</view>
-			<view class="posi2">实名认证</view>
-		</view>
-		<view class="inputView px-3 mb-2" v-if="recommenderId">
-			<view class="d-flex">
-				<view class="d-flex a-center">推荐人会员号</view>
-				<view class="d-flex a-center">{{recommenderId}}</view>
-			</view>
-			<view class="d-flex">
-				<view class="d-flex a-center">所属机构</view>
-				<view class="d-flex a-center">{{recommendDept}}</view>
-			</view>
-		</view>
-		<view class="notice px-3 font-weight">
-			<view class="title">从业告知</view>
-			<view>
-				<view class="btns d-flex j-sb">
-					<view :class="(noticeBtn1 == '1')?'active':''" @tap="adjustNoticeBtn('noticeBtn1',1)">有相关经验</view>
-					<view :class="(noticeBtn2 == '1')?'active':''" @tap="adjustNoticeBtn('noticeBtn2',1)">有犯罪记录</view>
-					<view :class="(noticeBtn3 == '1')?'active':''" @tap="adjustNoticeBtn('noticeBtn3',1)">有接受过保监会处罚
-					</view>
-				</view>
-				<view class="btns  d-flex j-sb">
-					<view :class="(noticeBtn1 == '2')?'active':''" @tap="adjustNoticeBtn('noticeBtn1',2)">无相关经验</view>
-					<view :class="(noticeBtn2 == '2')?'active':''" @tap="adjustNoticeBtn('noticeBtn2',2)">无犯罪记录</view>
-					<view :class="(noticeBtn3 == '2')?'active':''" @tap="adjustNoticeBtn('noticeBtn3',2)">无接受过保监会处罚
-					</view>
-				</view>
-
-			</view>
-		</view>
-		<view class="p-3">
-			<checkbox-group @change="changeAgree">
-				<label>
-					<checkbox value="true" :checked="agree" style="transform:scale(0.6)"></checkbox>
-					本人已如实告知相关信息,如因不实信息产生的一切后果,本人愿承担一切法律责任。
-				</label>
-			</checkbox-group>
-
-		</view>
-		<button class="mx-3 mt-4 d-flex a-center j-center  main-bg-color" :class="{'main-bf-hover-color':disabled}"
-			type="primary" @tap="toNext" :disabled="disabled">下一步</button>
-
-
-
-	</view>
-</template>
-
-<script>
-	import {
-		mapState
-	} from "vuex"
-	export default {
-		data() {
-			return {
-				noticeBtn1: "", //按钮1
-				noticeBtn2: "", //按钮2
-				noticeBtn3: "", //按钮3
-
-				agree: false, //是否同意协议
-				disabled: true, //按钮是否可用
-
-				recommenderId: "", //推荐人会员号
-				recommendDept: "", //推荐机构
-
-			}
-		},
-		async onLoad() {
-			this.recommenderId = this.userCheckInfo.esmUserAgent.recommenderid;
-			// 查询推荐人信息
-			let res = await this.$http.get('/user/findById?id=' + this.recommenderId);
-			if ((res.code == '200') && (res.data != null)) {
-				this.recommendDept = res.data.comname;
-			}
-		},
-		computed: {
-			...mapState(['userCheckInfo'])
-		},
-		watch: {
-			noticeBtn1(val) {
-				this.OnBtnChange();
-			},
-			noticeBtn2(val) {
-				this.OnBtnChange();
-			},
-			noticeBtn3(val) {
-				this.OnBtnChange();
-			},
-			agree(val) {
-				this.OnBtnChange();
-			}
-		},
-		methods: {
-			btn_click() {
-				uni.navigateTo({
-					url: '/pages/chat/chat'
-				})
-			},
-			changeAgree(e) {
-				this.agree = e.detail.value[0];
-			},
-
-			// 改变按钮状态value
-			OnBtnChange() {
-				if ((!!this.noticeBtn1) && (!!this.noticeBtn2) && (!!this.noticeBtn3) && (!!this.agree)) {
-					this.disabled = false;
-					return;
-				}
-				this.disabled = true;
-			},
-
-			toNext() {
-				if ((this.noticeBtn2 == '1') || (this.noticeBtn3 == '1')) {
-					return uni.showToast({
-						title: '您不符合我司的入司要求,感谢关注',
-						icon: "none"
-					});
-				}
-				uni.showModal({
-					title: '重要提示',
-					content: '您即将成为掌柜车险代理人,请问您是否已充分了解监管部门对展业地区的限制和要求,并承诺在监管部门指定的合规的地区开展业务?',
-					cancelText: '不了解',
-					confirmText: '我已了解',
-					success: (res) => {
-						if (res.confirm) {
-							this.navigate({
-								url: "/pages/user/certification"
-							}, 'navigateTo')
-						}
-					}
-				});
-			},
-			adjustNoticeBtn(btnLabel, status) {
-				this[btnLabel] = status;
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import '@/style/mixin.scss';
-
-	.posi {
-		counter-reset: num;
-	}
-
-	.posi2 {
-		position: relative;
-		display: inline-block;
-		height: 40rpx;
-		line-height: 40rpx;
-		text-align: right;
-		padding-right: 15rpx;
-		width: 140rpx;
-		border-radius: 30rpx;
-		border: 1px solid #F0F0F0;
-		background: #F0F0F0;
-		margin-left: 30rpx;
-		color: #999;
-		font-size: 24rpx;
-	}
-
-	.posi2.on {
-		border: 1px solid $themeColor;
-		background: #FFFFFF;
-		color: $themeColor;
-	}
-
-	.posi2:before {
-		position: absolute;
-		display: block;
-		left: 2rpx;
-		top: 6rpx;
-		width: 28rpx;
-		height: 28rpx;
-		border-radius: 100%;
-		background: #fff;
-		color: #999;
-		counter-increment: num;
-		content: counter(num);
-		text-align: center;
-		line-height: 28rpx;
-	}
-
-	.posi2.on:before {
-		background: $themeColor;
-		color: #FFF;
-	}
-
-	.posi>view:nth-of-type(1):after {
-		position: absolute;
-		display: block;
-		content: "";
-		right: -20rpx;
-		top: 12rpx;
-		width: 16rpx;
-		height: 16rpx;
-		border-top: 1px solid $themeColor;
-		border-right: 1px solid $themeColor;
-		transform: rotate(45deg);
-	}
-
-	.posi>.posi2:nth-of-type(1) {
-		margin-left: 0;
-	}
-
-	.inputView {
-		background: #FFFFFF;
-	}
-
-	.inputView>view {
-		height: 90rpx;
-		border-bottom: 1px solid #ddd;
-	}
-
-	.inputView>view>view:nth-of-type(1) {
-		flex-shrink: 0;
-		width: 190upx;
-		padding-left: 15upx;
-		color: #999;
-	}
-
-	.notice {
-		background-color: #FFFFFF;
-	}
-
-	.notice .title {
-		height: 80upx;
-		line-height: 80upx;
-		font-size: 32upx;
-		border-bottom: 1px solid #ddd;
-	}
-
-	.notice .btns {
-		padding-top: 20upx;
-		padding-bottom: 20upx;
-	}
-
-	.notice .btns>view {
-		display: block;
-		padding: 0 16rpx;
-		color: #999;
-		line-height: 52rpx;
-		font-size: 24rpx;
-		border-radius: 30rpx;
-		border: 1px solid #f0f0f0;
-		background-color: #f0f0f0;
-		height: 56rpx;
-	}
-
-	.notice .btns>view.active {
-		color: #fff;
-		border: 1px solid $themeColor;
-		background-color: $themeColor;
-	}
-</style>

+ 453 - 0
pages/user/practitionerInfo.vue

@@ -0,0 +1,453 @@
+<template>
+	<view class="page">
+		<view class="headers ">
+			<view class="header">
+				<view class="dis a-c j-start ">
+					<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+					<text style="margin: auto;">提交资料</text>
+				</view>
+			</view>
+		</view>
+		<view class="reviewResult dis f-c"
+			:style="{background:desc?'linear-gradient( 90deg, #FFE2E0 0%, #FBF3F3 100%)':'linear-gradient( 90deg, #FFF4E0 0%, #FBF8F3 100%)',borderTop:desc?'1px solid #FF535B':'1px solid #FFB053',borderBottom:desc?'1px solid #FF535B':'1px solid #FFB053'}">
+			<view class="dis a-c">
+				<image v-if="desc" src="../../static/image/user/error.png" mode="" style="width: 28rpx;height: 35rpx;">
+				</image>
+				<text v-if="desc" style="color:#F44149;font-size: 13px;">审核不通过:</text>
+				<text v-else style="color: #E79E11;font-size: 13px;">尊敬的{{this.userInfo.sysUser.name}}:</text>
+			</view>
+			<text>{{desc?desc:'为了顺利开展您的车险业务,请您提交以下资料的照片,提交后,我们将在第一时间进行审核请您耐心等待,我们会尽快完成审核并通知您结果。'}}</text>
+		</view>
+		<view style="padding: 12px 15px 74px;">
+			<view class="ImgInfo">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>身份证件照</text>
+				</view>
+				<view class="content">
+					<view class="avatar dis j-s">
+						<view class="dis f-c a-c">
+							<view class="avatar-img">
+								<image :src="userfrontImg" mode=""></image>
+							</view>
+							<text style="font-size: 14px;color: #333;font-weight: bold;">头像面</text>
+						</view>
+						<view class="dis f-c a-c">
+							<view class="avatar-img">
+								<image :src="userbackImg" mode=""></image>
+							</view>
+							<text style="font-size: 14px;color: #333;font-weight: bold;">国徽面</text>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="ImgInfo mt-3">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>银行卡信息</text>
+					<text>请确保照片清晰,信息完整可见</text>
+				</view>
+				<view class="content">
+					<view class="bankimg dis j-c">
+						<view class="dis f-c a-c">
+							<view class="avatar-img">
+								<image :src="bankImg?bankImg:'../../static/image/user/bank.png'" mode=""
+									@click="bankchange"></image>
+							</view>
+							<text style="font-size: 14px;color: #333;font-weight: bold;">银行卡正面</text>
+						</view>
+					</view>
+
+				</view>
+				<uni-forms :value="bankInfo" ref="bankForm" validate-trigger="bind" err-show-type="toast"
+					label-width="70" style="padding: 0 10px;">
+					<uni-forms-item label="开户行: " required name="caryear">
+						<input class="uni-input-input textColor" placeholder="输入开户行信息" v-model="bankInfo.accountno"
+							placeholder-style="font-size:28upx" />
+					</uni-forms-item>
+					<uni-forms-item label="开户账号: " required>
+						<input class="uni-input-input textColor" placeholder="输入开户账号信息" v-model="bankInfo.bankName"
+							placeholder-style="font-size:28upx" />
+					</uni-forms-item>
+
+				</uni-forms>
+			</view>
+			<view class="ImgInfo mt-3">
+				<view class="title dis a-c ">
+					<view class="tag"></view>
+					<text>展业资格证</text>
+					<text>请确保照片清晰,信息完整可见</text>
+				</view>
+				<view class="content">
+					<view class="bankimg dis j-c">
+						<view class="dis f-c a-c">
+							<view class="avatar-img">
+								<image :src="certificationImg?certificationImg:'../../static/image/user/zigezheng.png'"
+									mode="" @click="certificationChange">
+								</image>
+							</view>
+							<text style="font-size: 14px;color: #333;font-weight: bold;">展业资格证</text>
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</view>
+		<view class="footer">
+			<view class="btn dis j-c a-c"
+				:style="{background:disabled?'linear-gradient(90deg, #499DFF 0%, #0052FF 100%)':'linear-gradient(90deg, rgba(73, 157, 255, 0.4) 0%, rgba(0, 82, 255, 0.4) 100%)',pointerEvents:disabled?'auto':'none'}"
+				@click="authSubmit">提交申请</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from "vuex"
+	export default {
+		data() {
+			return {
+				disabled: false,
+				userfrontImg: "",
+				userbackImg: "",
+				bankImg: "",
+				certificationImg: "",
+				bankInfo: {
+					accountno: "",
+					bankName: "",
+					esmUserImageVo: [
+
+					],
+					userId: "",
+				},
+				desc: ""
+			}
+		},
+		watch: {
+			"bankInfo.accountno": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+			"bankInfo.bankName": {
+				handler(val) {
+					this.OnBtnChange();
+				},
+			},
+
+		},
+		computed: {
+			...mapState(['userInfo', 'token']),
+		},
+		onShow() {
+
+		},
+		async onLoad() {
+			this.bankInfo.userId = this.userInfo.sysUser.id;
+			let res = await this.$http.post('/userAgent/getAuthResult', {
+				userId: this.bankInfo.userId,
+			});
+			if (await res.code == '200') {
+				this.desc = res.data.desc;
+				this.bankInfo.accountno = res.data.sysUserInfo.accountno;
+				this.bankInfo.bankName = res.data.sysUserInfo.bankName;
+				this.bankInfo.esmUserImageVo = res.data.esmUserImageVo;
+				res.data.esmUserImageVo.map(val => {
+					switch (val.type) {
+						case 'SFZ_01':
+							this.userfrontImg = this.$base.baseUrl + val.path;
+							break;
+						case 'SFZ_02':
+							this.userbackImg = this.$base.baseUrl + val.path;
+							break;
+						case 'YHK_01':
+							this.bankImg = this.$base.baseUrl + val.path;
+							break;
+						case 'ZGZ_00':
+							this.certificationImg = this.$base.baseUrl + val.path;
+							break;
+					}
+					return val;
+				})
+			}
+		},
+		methods: {
+			async authSubmit() {
+				let res = await this.$http.post('/userAgent/agentSubmit', this.bankInfo);
+				if (res.code == '200') {
+					uni.navigateTo({
+						url: "/pages/user/authResult1"
+					})
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: 'none',
+					});
+				}
+
+			},
+			// 改变按钮状态
+			OnBtnChange() {
+				if (this.bankInfo.accountno && this.bankInfo.bankName) {
+					this.disabled = true;
+					return;
+				}
+				this.disabled = false;
+			},
+			async bankchange() {
+				let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+					count: 1,
+					sizeType: ['compressed']
+				});
+
+				let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+				if (!size) {
+					this.$refs.uToast.show({
+						title: '上传图片大小不能超过 5MB!',
+						type: 'error',
+					})
+					return false
+				}
+				if (chooseImageRes) {
+					this.bankImg = chooseImageRes.tempFilePaths[0];
+					uni.uploadFile({
+						url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+						filePath: chooseImageRes.tempFilePaths[0],
+						name: "multipartFile",
+						formData: {
+							'type': 'image',
+						},
+						header: {
+							Authorization: this.token,
+						},
+						success: (imgRes) => {
+							let data = JSON.parse(imgRes.data);
+							if (data.code == '200') {
+								if (this.bankInfo.esmUserImageVo.some(v => v.type == 'YHK_01')) {
+									this.bankInfo.esmUserImageVo.map(val => {
+										if (val.type == 'YHK_01') {
+											val.imageId = data.data.id;
+										}
+									})
+								} else {
+									this.bankInfo.esmUserImageVo.push({
+										imageId: data.data.id,
+										type: "YHK_01",
+									})
+								}
+							}
+						}
+					})
+				}
+			},
+			async certificationChange() {
+				let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+					count: 1,
+					sizeType: ['compressed']
+				});
+
+				let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+				if (!size) {
+					this.$refs.uToast.show({
+						title: '上传图片大小不能超过 5MB!',
+						type: 'error',
+					})
+					return false
+				}
+				if (chooseImageRes) {
+					this.certificationImg = chooseImageRes.tempFilePaths[0];
+					uni.uploadFile({
+						url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+						filePath: chooseImageRes.tempFilePaths[0],
+						name: "multipartFile",
+						formData: {
+							'type': 'image',
+						},
+						header: {
+							Authorization: this.token,
+						},
+						success: (imgRes) => {
+							let data = JSON.parse(imgRes.data);
+							if (data.code == '200') {
+								if (this.bankInfo.esmUserImageVo.some(v => v.type == 'ZGZ_00')) {
+									this.bankInfo.esmUserImageVo.map(val => {
+										if (val.type == 'ZGZ_00') {
+											val.imageId = data.data.id;
+										}
+									})
+								} else {
+									this.bankInfo.esmUserImageVo.push({
+										imageId: data.data.id,
+										type: "ZGZ_00",
+									})
+								}
+							}
+						}
+					})
+				}
+			},
+			//页面返回按钮
+			back() {
+				uni.navigateBack({
+					delta: 1, // 返回的页面数,如果是1表示返回上一页
+					success: function() {}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	::v-deep .uni-forms-item {
+		border-bottom: 1px solid #f2f2f2;
+	}
+
+	::v-deep .uni-forms-item:last-child {
+		border: none;
+	}
+
+	::v-deep .uni-forms-item__content {
+		display: flex;
+		align-items: center;
+	}
+
+	page {
+		background: #F7F7F7;
+	}
+
+	.headers {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999999;
+		width: 100%;
+
+		.header {
+			width: 100%;
+			height: auto;
+			padding: 50px 16px 14px;
+			background: linear-gradient(180deg, #D1E3FE 0%, #FFFFFF 100%);
+
+			text {
+				font-size: 18px;
+				font-weight: bold;
+				color: #000;
+			}
+		}
+
+	}
+
+	.reviewResult {
+		width: 100%;
+		background: linear-gradient(90deg, #FFF4E0 0%, #FBF8F3 100%);
+		border-radius: 0px 0px 0px 0px;
+		padding: 8px 15px;
+		margin-top: 96px;
+
+
+
+		text:last-child {
+			color: #333;
+			font-size: 12px;
+		}
+	}
+
+	.ImgInfo {
+		background: #FFFFFF;
+		border-radius: 5px;
+		border-bottom: 1px solid #EEEEEE;
+
+		.title {
+			padding: 10px 0;
+
+			.tag {
+				width: 4px;
+				height: 16px;
+				background: linear-gradient(132deg, #83B4FC 0%, #3D74FE 100%);
+				border-radius: 5px;
+			}
+
+			text:nth-child(2) {
+				font-size: 16px;
+				color: #333;
+				font-weight: bold;
+				margin-left: 6px;
+			}
+
+			text:nth-child(3) {
+				font-size: 12px;
+				color: #999;
+				margin-left: 10px;
+			}
+		}
+
+		.content {
+			padding: 0 10px 10px;
+
+			.avatar {
+				background: #FBFBFB;
+				border-radius: 4px;
+				padding: 7px 8px;
+
+				.avatar-img {
+					width: 130px;
+					height: 78px;
+					position: relative;
+					padding: 7px;
+					background-image: url("/static/image/user/asset3.png");
+					background-size: 100% 100%;
+					margin-top: 10px;
+
+					image {
+						width: 100%;
+						height: 100%;
+						border-radius: 4px;
+					}
+				}
+			}
+
+			.bankimg {
+				background: #FBFBFB;
+				border-radius: 4px;
+				padding: 7px 8px;
+
+				.avatar-img {
+					width: 180px;
+					height: 109px;
+					position: relative;
+					padding: 7px;
+					background-image: url("/static/image/user/asset3.png");
+					background-size: 100% 100%;
+
+					image {
+						width: 100%;
+						height: 100%;
+						border-radius: 4px;
+					}
+				}
+			}
+		}
+
+
+
+
+	}
+
+	.footer {
+		position: fixed;
+		bottom: 0;
+		height: 62px;
+		background: #FFFFFF;
+		box-shadow: 0px -4px 10px 0px rgba(1, 83, 255, 0.05);
+		padding: 12px 16px;
+		width: 100%;
+
+		.btn {
+			border-radius: 4px;
+			padding: 7px;
+			color: #FFFFFF;
+			font-size: 16px;
+		}
+	}
+</style>

+ 0 - 13
pages/user/userInfoImage.vue

@@ -74,19 +74,6 @@
 <style lang="scss" scoped>
 	@import '@/style/mixin.scss';
 
-	.idCardBefore {
-		background: rgba($themeColor, 0.1) url('/static/image/user/identy2.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-		box-sizing: border-box;
-	}
-
-	.idCardAfter {
-		background: rgba($themeColor, 0.1) url('/static/image/user/identy1.png') center center no-repeat;
-		background-size: auto 70%;
-		padding: 10upx;
-		box-sizing: border-box;
-	}
 
 	.imageBorder {
 		border: 2px solid #ddd;

BIN
static/image/addStaff/add.png


BIN
static/image/addStaff/banner.png


BIN
static/image/addStaff/bq1.png


BIN
static/image/addStaff/bq2.png


BIN
static/image/addStaff/kefu.png


BIN
static/image/addStaff/saveimg.png


BIN
static/image/addStaff/search.png


BIN
static/image/addStaff/share.png


BIN
static/image/addStaff/smsshare.png


BIN
static/image/addStaff/urlshare.png


BIN
static/image/addStaff/user.png


BIN
static/image/addStaff/zgcx.png


BIN
static/image/my/Frame1.png


BIN
static/image/my/Frame2.png


BIN
static/image/my/Frame3.png


BIN
static/image/my/Frame4.png


BIN
static/image/my/Frame5.png


BIN
static/image/my/Frame6.png


BIN
static/image/my/Frame7.png


BIN
static/image/my/Frame8.png


BIN
static/image/my/banner.png


BIN
static/image/my/chongzhi-icon.png


BIN
static/image/my/chongzhi-shape.png


BIN
static/image/my/chongzhi.png


BIN
static/image/my/decor1.png


BIN
static/image/my/icon1.png


BIN
static/image/my/icon10.png


BIN
static/image/my/icon11.png


BIN
static/image/my/icon12.png


BIN
static/image/my/icon13.png


BIN
static/image/my/icon2.png


BIN
static/image/my/icon3.png


BIN
static/image/my/icon4.png


BIN
static/image/my/icon5.png


BIN
static/image/my/icon6.png


BIN
static/image/my/icon7.png


BIN
static/image/my/icon8.png


BIN
static/image/my/icon9.png


BIN
static/image/my/ka-icon.png


BIN
static/image/my/ka-shape.png


BIN
static/image/my/ka.png


BIN
static/image/my/qianbao-icon.png


BIN
static/image/my/qianbao-shape.png


BIN
static/image/my/qianbao.png


BIN
static/image/my/qrcode.png


BIN
static/image/my/renzheng.png


BIN
static/image/my/right-jiantou.png


BIN
static/image/team/proxy2.png


BIN
static/image/team/proxy3.png


BIN
static/image/user/asset1.png


BIN
static/image/user/asset2.png


BIN
static/image/user/asset3.png


BIN
static/image/user/auth.png


BIN
static/image/user/bank.png


BIN
static/image/user/card.png


BIN
static/image/user/del.png


BIN
static/image/user/deny.png


BIN
static/image/user/error.png


BIN
static/image/user/identy1.png


BIN
static/image/user/identy2.png


BIN
static/image/user/pic1.jpg


BIN
static/image/user/success.png


BIN
static/image/user/wawit.png


BIN
static/image/user/zigezheng.png