Browse Source

部分适配小程序

zouling 1 year ago
parent
commit
012554eccb

+ 310 - 0
components/business/list.vue

@@ -0,0 +1,310 @@
+<template>
+  <view>
+	<view v-if="datalist.length>0">
+		<!-- 申报业务 v-if="listtype=='case'"-->
+		<block v-if="type=='work'">
+			<view class="lists" v-for="(ite,idx) in datalist" @click="getDetail(ite.loanApplicationId)">
+				<view class="listtop">
+					<view class="toptit over">{{ite.enterpriseName}}</view>
+					<view class="statbox" v-if="ite.isNew=='Y'">专精特新<image :src="start"></image></view>
+				</view>
+				<view class="listsm">
+					<view class="txt"><text class="tit">贷款编号</text><text class="line">|</text><text>{{ite.loanApplicationNumber}}</text></view>
+					<view class="txt" v-if="ite.loanApplicationType!=1&&ite.loanApplicationType!=4"><text class="tit">审核状态</text><text class="line">|</text><text class="co28">{{kaType(ite.auditSchedule,shjdlist)}}
+					</text></view>
+					<view class="txt"><text class="tit">申报时间</text><text class="line">|</text><text>{{ite.applicationTime}}</text></view>
+					<view class="txt"><text class="tit">归档时间</text><text class="line">|</text><text>{{ite.fileTime}}</text></view>
+					<view class="flexcw">
+						<view class="txt"><text class="tit">申请额度</text><text class="line">|</text><text>{{ite.applicationAmount}}万元</text></view>
+						<view class="txt"><text class="tit">使用期限</text><text class="line">|</text><text>{{ite.usagePeriod}}月</text></view>
+						<view class="txt"><text class="tit">申贷银行</text><text class="line">|</text><text>{{kaType(ite.applicationBank,sdyhlist)}}</text></view>
+						<view class="txt"><text class="tit">担保类型</text><text class="line">|</text><text>{{kaType(ite.guaranteeType,dblxlist)}}</text></view>
+						<view class="txt"><text class="tit">资金用途</text><text class="line">|</text><text>{{ite.purposeFunds}}</text></view>
+						<view class="txt"><text class="tit">还款来源</text><text class="line">|</text><text>{{ite.repaymentSource}}</text></view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<!-- 客户 -->
+		<block v-if="type=='custom'">
+			<view class="lists" v-for="(ite,idx) in datalist" @click="getDetail(ite.userId)">
+				<view class="listtop">
+					<view class="head">{{ite.realName.substring(0,1)}}</view>
+					<view class="flex1">
+						<view class="headt">{{ite.realName}}</view>
+						<view class="headx">资料更新时间 | {{ite.updateTime||ite.createTime}}</view>
+					</view>
+				</view>
+				<view class="listsm">
+					<view class="txt"><text class="tit">身份证号</text><text class="line">|</text><text>{{ite.idCard}}</text>
+						<view class="copyimg">
+							<image :src="copy" ></image>
+						</view>
+					</view>
+					<view class="txt"><text class="tit">居住地址</text><text class="line">|</text><text>{{ite.address}}</text></view>
+					<view class="txt"><text class="tit">手机号码</text><text class="line">|</text><text>{{ite.phonenumber}}</text></view>
+					<view class="flexcw">
+						<view class="txt"><text class="tit">关联企业</text><text class="line">|</text><text>{{ite.sysUserEnterpriseNum}}家</text></view>
+						<view class="txt"><text class="tit">历史申贷记录</text><text class="line">|</text><text>{{ite.loanApplicationNum}}次</text></view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<view class="shax" v-if="wtdt">{{wtdt}}</view>
+	</view>
+	<block v-else>
+		<no-data></no-data>
+	</block>
+  </view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import { selectValue } from '@/utils/common.js';
+	import noData from "@/components/nodata/nodata.vue"
+  export default {
+	props:{
+		datalist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		sdyhlist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		dblxlist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		shjdlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		wtdt:{
+			type: String,
+			default () {
+				return ''
+			}
+		},
+		type:{
+			type: [String,Number],
+			default () {
+				return ''
+			}
+		},
+	},
+	components:{
+		noData
+	},
+	data(){
+		return{
+			start:require('@/work/static/images/start.png'),
+			copy:require('@/work/static/images/copy.png'),
+			rimg:require('@/work/static/images/rimga.png'),
+			files:require('@/work/static/images/files.png'),
+			filz:require('@/work/static/images/filz.png'),
+			titimg:require('@/work/static/images/infotit.png'),
+			fup:require('@/work/static/images/fdown.png'),
+			zlist:[]
+		}
+	},
+	onLoad: function() {
+	},
+	methods:{
+		checkPermi, checkRole,
+		kaType(ite,list){
+			return selectValue(list, ite);
+		},
+		getDetail(e){
+			this.$emit('getDetail',e)
+		},
+		getXzFn(ite){
+			this.$emit('getXzFn',ite)
+		},
+		getDel(e){
+			this.$emit('getDel',e)
+		},
+		getEdit(e){
+			this.$emit('getEdit',e)
+		},
+		getZhan(id){
+			var num=this.zlist.indexOf(id);
+			if(num!=-1){
+				this.zlist.splice(num,1)
+			}else{
+				this.zlist.push(id)
+			}	
+		},
+		getTuiFn(ite,txt,sh){
+			var that=this;
+			// if(txt=='scfk'&&sh==0){
+			// 	uni.showModal({
+			// 		title: '确认立案',
+			// 		content: "是否确认立案",
+			// 		cancelText: '取消',
+			// 		confirmText: '确认',
+			// 		success: function(res) {
+			// 			if (res.confirm) {
+			// 				var obj={
+			// 					id:ite.proposalId,
+			// 					type:txt,
+			// 					sh:sh,
+			// 				}
+			// 				that.$emit('getTuiFn',obj)
+			// 			} else if (res.cancel) {
+			// 				// console.log('用户点击取消');
+			// 			}
+			// 		}
+			// 	});
+			// }else 
+			if(txt=='lmta'){
+				var str='同意'
+				if(sh==2){
+					str='反对'
+				}
+				uni.showModal({
+					title: '确认'+str+'联名',
+					content: "是否确认"+str+"联名",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							var obj={
+								id:ite.proposalId,
+								type:txt,
+								sh:sh,
+							}
+							that.$emit('getTuiFn',obj)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			}else{
+				var obj={
+					id:ite.proposalId,
+					type:txt,
+					sh:sh,
+					ite:ite
+				}
+				this.$emit('getTuiFn',obj)
+			}
+			
+		},
+		typeFn(data){
+			if(data){
+				var newArr=[]
+				var astr=data.split('-')
+				astr.forEach(ite=>{
+					var a=ite.substring(0,5);
+					newArr.push(a)
+				})
+				return newArr.join('-')
+			}else{
+				return ''
+			}
+		},
+	},
+	
+  }
+</script>
+
+<style lang="scss" scoped>
+.lists{background: #FFFFFF;box-shadow: 0px 0px 10rpx 0px rgba(216,216,216,0.4);border-radius: 20rpx;padding: 0 20rpx;margin-bottom: 24rpx;
+	&.qy{padding: 0 24rpx;
+		.listtop{display: block;
+			padding: 40rpx 14rpx 42rpx;
+		}
+		.listsm{padding: 40rpx 14rpx 2rpx 0;
+			.txt{font-size: 30rpx;margin-bottom: 44rpx;padding-left: 14rpx;
+				text{color: #666666;}
+			}
+		}
+	}
+	&.sdjl{
+		.listsm{padding: 40rpx 10rpx 2rpx 0;
+			.txt{font-size: 30rpx;margin-bottom: 44rpx;padding-left: 10rpx;align-items: flex-start;
+				text{color: #666666;}
+			}
+		}
+		.look{flex: 0 0 auto;display: inline-flex;margin-left: 16rpx;line-height: 40rpx;font-weight: 500;font-size: 26rpx;color: #28C529;
+			image{width: 14rpx;height: 20rpx;margin-left: 14rpx;}
+		}
+	}
+	.listtop{display: flex;align-items: center;overflow: hidden;border-bottom: 2rpx solid #E6E6E6;padding: 34rpx 12rpx;
+		.toptit{font-weight: bold;font-size: 30rpx;color: #222327;}
+		// .statbox{min-width: 140rpx;height: 36rpx;background-color: rgba(255,177,50,0.3);padding: 0 14rpx;box-sizing: border-box;font-weight: bold;font-size: 22rpx;color: #FF6924;display: flex;align-items: center;flex: 0 0 auto;border-radius: 10rpx;margin-left: 20rpx;
+		// 	image{width: 22rpx;height: 22rpx;margin-left: 6rpx;}
+		// }
+		.head{width: 86rpx;height: 86rpx;background: #00A9F0;border-radius: 10rpx;font-weight: bold;margin-right: 36rpx;flex: 0 0 auto;
+font-size: 40rpx;display: flex;align-items: center;justify-content: center;color: #FFFFFF;
+		}
+		.headt{font-weight: bold;font-size: 40rpx;color: #222327;margin-bottom: 10rpx;}
+		.headx{font-weight: 500;font-size: 24rpx;color: #666666;}
+	}
+	.adr{font-weight: 500;font-size: 26rpx;color: #666666;margin-top: 12rpx;}
+	.listsm{padding: 32rpx 10rpx 16rpx 0;
+		.tit{font-weight: bold;margin-right: 8rpx;flex: 0 0 auto;}
+		.line{margin-right: 8rpx;color: #aaaaaa;flex: 0 0 auto;}
+		.txt{font-size: 26rpx;color: #222327;margin-bottom: 24rpx;display: flex;padding-left: 10rpx;}
+		.copyimg{width: 30rpx;height: 30rpx;margin-left: 8rpx;display: flex;align-items: center;justify-content: center;
+			image{width: 18rpx;height: 20rpx;}
+		}
+		.flexcw{
+			display: flex;align-items: center;flex-wrap: wrap;
+			.txt{min-width: 50%;}
+		}
+	}
+	.looktxt{font-weight: 500;flex: 0 0 auto;font-size: 26rpx;margin-left: 20rpx;
+		&.bga{color: #FF6969;}
+		&.bgb{color: #00A9F0;}
+	}
+	.statbox{min-width: 140rpx;height: 36rpx;background-color: rgba(255,177,50,0.3);padding: 0 14rpx;box-sizing: border-box;font-weight: bold;font-size: 22rpx;color: #FF6924;display: flex;align-items: center;flex: 0 0 auto;border-radius: 10rpx;margin-left: 20rpx;
+		image{width: 22rpx;height: 22rpx;margin-left: 6rpx;}
+	}
+}
+// 文件
+.files{padding:40rpx 36rpx 36rpx;border-bottom: 2rpx solid #E6E6E6;
+	// .fdtit{display: flex;font-weight: bold;margin-bottom: 44rpx;
+	// 	view{font-size: 30rpx;color: #00A9F0;}
+	// 	image{width: 30rpx;height: 30rpx;margin-right: 14rpx;flex: 0 0 auto;margin-top: 5rpx;}
+	// }
+	// .fdzbox{width: 100%;padding: 24rpx 30rpx;box-sizing: border-box;display: flex;align-items: center;background: #E1F3FA;border-radius: 20rpx;
+	// 	image{width: 62rpx;height: 74rpx;margin-right: 32rpx;flex: 0 0 auto;}
+	// 	view{font-weight: bold;font-size: 26rpx;color: #00A9F0;}
+	// }
+	// .fdbtns{
+	// 	.lbtns{font-weight: 500;font-size: 26rpx;color: #28C529;
+	// 		image{width: 24rpx;height: 20rpx;margin-right: 14rpx;}
+	// 	}
+	// 	.rbtns{font-weight: 500;font-size: 26rpx;color: #00A9F0;
+	// 		image{width: 22rpx;height: 24rpx;margin-right: 12rpx;transform: rotate(180deg);}
+	// 	}
+	// }
+}
+
+.fdzbox{width: 100%;padding: 24rpx 30rpx;box-sizing: border-box;display: flex;align-items: center;background: #E1F3FA;border-radius: 20rpx;
+		image{width: 62rpx;height: 74rpx;margin-right: 32rpx;flex: 0 0 auto;}
+		view{font-weight: bold;font-size: 26rpx;color: #00A9F0;}
+	}
+	.fdtit{display: flex;font-weight: bold;margin-bottom: 44rpx;
+		view{font-size: 30rpx;color: #00A9F0;}
+		image{width: 30rpx;height: 30rpx;margin-right: 14rpx;flex: 0 0 auto;margin-top: 5rpx;}
+	}
+	.fdbtns{margin-bottom: 20rpx;
+		.lbtns{font-weight: 500;font-size: 26rpx;color: #28C529;
+			image{width: 24rpx;height: 20rpx;margin-right: 14rpx;}
+		}
+		.rbtns{font-weight: 500;font-size: 26rpx;color: #00A9F0;
+			image{width: 22rpx;height: 24rpx;margin-right: 12rpx;}
+		}
+	}
+</style>

+ 84 - 0
hybrid/html/face.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="zh">
+	<head>
+		<meta charset="UTF-8">
+		<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
+		<meta name="viewport"
+			content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
+		<title>实人认证</title>
+		<script type="text/javascript" src="https://cn-shanghai-aliyun-cloudauth.oss-cn-shanghai.aliyuncs.com/web_sdk_js/jsvm_all.js" ></script>
+		
+		<script type="text/javascript" src="js/vue.min.js"></script>
+		<script type="text/javascript" src="js/jquery.min.js"></script>
+		<script type="text/javascript" src="../../config.js"></script>
+	</head>
+	<body>
+		<div id="content"></div>
+	</body>
+	<script>
+		let _this;
+		var vm = new Vue({
+			el: '#content',
+			data: {
+				metaInfo: '',
+				baseUrl: 'http://47.99.82.249:6001/prod-api'
+			},
+			mounted() {
+				console.log(baseUrl,1)
+				let query = this.getQuery('data')
+				if (!query) {
+					alert('参数不存在')
+					return
+				}
+				query = JSON.parse(query)
+				var metaInfo = window.getMetaInfo();
+				this.metaInfo = JSON.stringify(metaInfo)
+				this.init(query)
+			},
+			methods: {
+				getQuery(name) {
+					let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+					let r = window.location.search.substr(1).match(reg);
+					if (r != null) {
+						// 对参数值进行解码
+						return decodeURIComponent(r[2]);
+					}
+					return null;
+				},
+				init(item) {
+					var that = this;
+					var header={
+					    'Authorization':  'Bearer ' + item.token,
+					}
+					var params = {
+						idCard: item.idCard,
+						realName: item.realName,
+						metaInfo: this.metaInfo,
+						returnUrl:item.returnUrl
+					}
+					var baseUrl = this.baseUrl
+					$.ajax({
+						url: baseUrl + '/ocr/ocrSampleAliYun',
+						type: 'post',
+						dataType: 'json',
+						contentType : 'application/json',
+						headers: header,
+						data: JSON.stringify(params),
+						success: function(res) {
+							if (res.code == 200) {
+								var certifyUrl = res.data.certifyUrl
+								window.location.href = certifyUrl;
+
+							} else {
+								that.$message({
+									message: res.msg,
+									type: 'error'
+								});
+							}
+						}
+					})
+				},
+			}
+		});
+	</script>
+</html>

File diff suppressed because it is too large
+ 1 - 0
hybrid/html/js/jquery.min.js


File diff suppressed because it is too large
+ 5 - 0
hybrid/html/js/vue.min.js


+ 3 - 3
manifest.json

@@ -2,8 +2,8 @@
     "name" : "皖源融资担保",
     "appid" : "__UNI__FA20DEF",
     "description" : "",
-    "versionName" : "1.0.5",
-    "versionCode" : 105,
+    "versionName" : "1.0.6",
+    "versionCode" : 106,
     "transformPx" : false,
     "app-plus" : {
         "usingComponents" : true,
@@ -85,7 +85,7 @@
     },
     "quickapp" : {},
     "mp-weixin" : {
-        "appid" : "wx694b1ba10320b8bc",
+        "appid" : "wx31ab1a585cd2cd93",
         "setting" : {
             "urlCheck" : false,
             "es6" : false,

+ 9 - 19
pages.json

@@ -131,6 +131,14 @@
 	  	"titleNView":false
 	  	}
     }
+	}, {
+	"path": "pages/common/webview/faceauth",
+	"style": {
+	  "navigationBarTitleText": "实人认证",
+	  "h5":{
+	  	"titleNView":false
+	  	}
+	}
   }, {
     "path": "pages/common/textview/index",
     "style": {
@@ -344,27 +352,9 @@
 	  	"packages": ["work"]
 	  }
   },
-  // "tabBar": {
-  //   "color": "#000000",
-  //   "selectedColor": "#000000",
-  //   "borderStyle": "white",
-  //   "backgroundColor": "#ffffff",
-  //   "list": [{
-  //       "pagePath": "pages/index/index",
-  //       "iconPath": "static/images/tabbar/home.png",
-  //       "selectedIconPath": "static/images/tabbar/home_.png",
-  //       "text": "首页"
-  //     }, {
-  //       "pagePath": "pages/mine/index",
-  //       "iconPath": "static/images/tabbar/mine.png",
-  //       "selectedIconPath": "static/images/tabbar/mine_.png",
-  //       "text": "我的"
-  //     }
-  //   ]
-  // },
   "globalStyle": {
     "navigationBarTextStyle": "black",
-    "navigationBarTitleText": "RuoYi",
+    "navigationBarTitleText": "融资担保",
     "navigationBarBackgroundColor": "#FFFFFF"
   }
 }

+ 42 - 0
pages/common/webview/faceauth.vue

@@ -0,0 +1,42 @@
+<template>
+  <view>
+    <web-view :src="src"></web-view>
+  </view>
+</template>
+
+<script>
+import { getToken } from '@/utils/auth'
+export default {
+    data() {
+      return {
+			src:'',
+        params: {},
+        webviewStyles: {
+          progress: {
+            color: "#FF3333"
+          }
+        }
+      }
+    },
+    props: {
+      // src: {
+      //   type: [String],
+      //   default: null
+      // }
+    },
+    onLoad(e) {
+		this.params = JSON.parse(decodeURIComponent(e.data))
+		
+		var token=getToken()
+		// const token = await tokenInvalidReturnInfo(3)
+		let data = {
+			idCard: this.params.idCard,
+			realName: this.params.realName,
+			returnUrl:this.params.returnUrl,
+			// handel_type: this.params.handelType,
+			token: token
+		}
+		this.src = '/hybrid/html/face.html?data='+encodeURIComponent(JSON.stringify(data))
+    }
+  }
+</script>

+ 14 - 10
pages/custom/index.vue

@@ -2,24 +2,28 @@
 	<view class="zxbox">
 		<view class="zxtop">
 			<view class="navbox">
-				<uni-nav-bar  color="#ffffff" leftWidth='110rpx' rightWidth="48rpx" :background-color="backgroundColor" :border="false" statusBar='true'>
+				<!-- #ifdef MP-WEIXIN -->
+				<uni-nav-bar  color="#ffffff" leftWidth='2rpx' rightWidth="180rpx" :background-color="backgroundColor" :border="false" statusBar='true'>
+				<!-- #endif -->
+				<!-- #ifndef MP-WEIXIN -->
+				<uni-nav-bar  color="#ffffff" leftWidth='110rpx' rightWidth="2rpx" :background-color="backgroundColor" :border="false" statusBar='true'>
 					<block slot="left">
 						<view class="topl flexc">
 							<view class="over">客户</view>
 						</view>
 					</block>
+				<!-- #endif -->
+				
 					<view class="topc flexc">
 						<image :src="secimg"></image>
 						<input  placeholder="输入关键字进行查询" confirm-type="search" v-model="usename" @confirm="getConfirm"/>
 					</view>
-					<block slot="right">
-						<view class="topr" @click='getNoticeFn'>
-							<image :src="noticeimg"></image>
-							<view class="cir"></view>
-							<!-- <block v-if="noticenum>99">99+</block>
-							<block v-else>{{noticenum}}</block> -->
-						</view>
-					</block>
+					<view class="topr" @click='getNoticeFn'>
+						<image :src="noticeimg"></image>
+						<view class="cir"></view>
+						<!-- <block v-if="noticenum>99">99+</block>
+						<block v-else>{{noticenum}}</block> -->
+					</view>
 				</uni-nav-bar>
 			</view>
 			<image :src="bgimg" class="bgimg"></image>
@@ -206,7 +210,7 @@ page{background-color: #f6f6f6;}
 		image{width: 30rpx;height: 38rpx;margin-right: 18rpx;flex: 0 0 auto;}
 		view{font-weight: bold;font-size: 30rpx;color: #FFFFFF;}	
 	}
-	.topc{border-radius: 34rpx;height:68rpx;box-sizing: border-box;padding:0 32rpx 0 32rpx ;position: relative;flex:1;background-color: #FFFFFF;
+	.topc{border-radius: 34rpx;height:68rpx;box-sizing: border-box;padding:0 32rpx 0 32rpx ;position: relative;flex:1;background-color: #FFFFFF;margin-right: 20rpx;
 	 input{font-weight: 500;font-size: 26rpx;color: #222327;}
 	 image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
 	 }

+ 32 - 15
pages/index/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="zxbox">
 		<view class="zxtop">
-			<view class="navbox">
+			<view class="navbox serbox">
 				<uni-nav-bar  color="#ffffff" leftWidth='160rpx' rightWidth="48rpx" :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
 					<block slot="left">
 						<view class="topl flexc">
@@ -9,22 +9,33 @@
 							<view class="over">{{city}}</view>
 						</view>
 					</block>
-					<view class="topc flexc" v-if="checkPermi(['idcard:idcard:list'])">
-						<image :src="secimg"></image>
-						<input  placeholder="请输入您要找的客户名称" confirm-type="search" v-model="usename" @confirm="getConfirm"/>
-					</view>
-					<block slot="right">
-						
-						<view class="topr flexcc" @click='getScanFn'>
-							<image :src="codeimg"></image>
+					<!-- #ifndef MP-WEIXIN -->
+						<view class="topc flexc" v-if="checkPermi(['idcard:idcard:list'])">
+							<image :src="secimg"></image>
+							<input  placeholder="请输入您要找的客户名称" confirm-type="search" v-model="usename" @confirm="getConfirm"/>
 						</view>
-						<!-- #ifndef H5 -->
-						<!-- #endif -->
-					</block>
+						<block slot="right">
+							<view class="topr flexcc" @click='getScanFn'>
+								<image :src="codeimg"></image>
+							</view>
+						</block>
+					<!-- #endif -->
+					
 				</uni-nav-bar>
 			</view>
 			<image :src="bgimg" class="bgimg"></image>
-			<view class="zxmain">
+			<view class="zxmain" :style="'margin-top:-'+martopHeight+'rpx;'">
+				<!-- #ifdef MP-WEIXIN -->
+				<view class="serbox plr18 mb12 flexcc">
+					<view class="topc flexc" v-if="checkPermi(['idcard:idcard:list'])">
+						<image :src="secimg"></image>
+						<input  placeholder="请输入您要找的客户名称" confirm-type="search" v-model="usename" @confirm="getConfirm"/>
+					</view>
+					<view class="topr flexcc" @click='getScanFn'>
+						<image :src="codeimg"></image>
+					</view>
+				</view>
+				<!-- #endif -->
 				<view class="banbox mb12" v-if="bannerlist.length">
 					<banner :bannerlist="bannerlist"></banner>
 				</view>
@@ -192,6 +203,7 @@
 			bannerlist:[],
 			metaInfo:'',
 			mtype:false,
+			martopHeight:270,
 			city:'',
 		}
 	},
@@ -250,6 +262,7 @@
 			success: (e) => {
 				this.nvaHeight = Number(e.statusBarHeight)+44;
 				this.minheight = e.screenHeight - Number(this.nvaHeight)- 100;
+				this.martopHeight=450-Number(this.nvaHeight*2)-16
 			}
 		})
 		 
@@ -607,7 +620,10 @@
 		image{width: 30rpx;height: 38rpx;margin-right: 18rpx;flex: 0 0 auto;}
 		view{font-weight: bold;font-size: 26rpx;color: #FFFFFF;}	
 	}
-	.topc{border-radius: 34rpx;height:68rpx;box-sizing: border-box;padding:0 32rpx 0 32rpx ;position: relative;flex:1;background-color: #FFFFFF;
+	
+}
+.serbox{
+	.topc{border-radius: 34rpx;height:68rpx;box-sizing: border-box;padding:0 32rpx 0 32rpx ;position: relative;flex:1;background-color: #FFFFFF;margin-right: 20rpx;
 	 input{font-weight: 500;font-size: 26rpx;color: #222327;}
 	 image{width: 30rpx;height: 30rpx;margin-right: 24rpx;flex: 0 0 auto;}
 	 }
@@ -622,8 +638,9 @@
 
 .zxbox{
 	.bgimg{width: 100%;height: 450rpx;}
+	//margin-top: -270rpx;
 	.zxmain{
-		margin-top: -270rpx;position: relative;
+		position: relative;
 		.banbox{width: 678rpx;height: 246rpx;margin: 0 auto;}
 		.grid{
 			display: flex;align-items: center;flex-wrap: wrap;

+ 5 - 0
pages/mine/index.vue

@@ -3,7 +3,12 @@
 		<view class="navbox">
 			<uni-nav-bar color="#ffffff"  :background-color="backgroundColor" :border="false"
 				statusBar='true' fixed="true">
+				<!-- #ifndef MP-WEIXIN -->
 				<block slot="right">
+				<!-- #endif -->
+				<!-- #ifdef MP-WEIXIN -->
+				<block slot="left">
+				<!-- #endif -->
 					<view class="topr" @click='getNoticeFn'>
 						<image :src="noticimg"></image>
 						<view class="cir"></view>

+ 17 - 10
pages/work/index.vue

@@ -2,24 +2,31 @@
 	<view class="zxbox">
 		<view class="zxtop">
 			<view class="navbox">
-				<uni-nav-bar  color="#ffffff" leftWidth='110rpx' rightWidth="48rpx" :background-color="backgroundColor" :border="false" statusBar='true'>
+				<!-- #ifdef MP-WEIXIN -->
+				<uni-nav-bar  color="#ffffff" leftWidth='2rpx' rightWidth="180rpx" :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
+				<!-- #endif -->
+				<!-- #ifndef MP-WEIXIN -->
+					<uni-nav-bar  color="#ffffff" leftWidth='110rpx' rightWidth="2rpx" :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
 					<block slot="left">
 						<view class="topl flexc">
 							<view class="over">业务</view>
 						</view>
 					</block>
+				<!-- #endif -->
+					
 					<view class="topc flexc">
 						<image :src="secimg"></image>
 						<input  placeholder="请输入企业名称进行查询" confirm-type="search" v-model="usename" @confirm="getConfirm"/>
 					</view>
-					<block slot="right">
-						<view class="topr" @click='getNoticeFn'>
-							<image :src="noticeimg"></image>
-							<view class="cir"></view>
-							<!-- <block v-if="noticenum>99">99+</block>
-							<block v-else>{{noticenum}}</block> -->
-						</view>
-					</block>
+					<view class="topr" @click='getNoticeFn'>
+						<image :src="noticeimg"></image>
+						<view class="cir"></view>
+						<!-- <block v-if="noticenum>99">99+</block>
+						<block v-else>{{noticenum}}</block> -->
+					</view>
+					<!-- <block slot="right">
+						
+					</block> -->
 				</uni-nav-bar>
 				<view class="flexc checkbox" :class="scroflag?'scbg':''">
 					<picker mode="date" fields="year"   @change='bindDateChangea'>
@@ -308,7 +315,7 @@ page{background-color: #f6f6f6;}
 		image{width: 30rpx;height: 38rpx;margin-right: 18rpx;flex: 0 0 auto;}
 		view{font-weight: bold;font-size: 30rpx;color: #FFFFFF;}	
 	}
-	.topc{border-radius: 34rpx;height:68rpx;box-sizing: border-box;padding:0 32rpx 0 32rpx ;position: relative;flex:1;background-color: #FFFFFF;
+	.topc{border-radius: 34rpx;height:68rpx;box-sizing: border-box;padding:0 32rpx 0 32rpx ;position: relative;flex:1;background-color: #FFFFFF;margin-right: 20rpx;
 	 input{font-weight: 500;font-size: 26rpx;color: #222327;}
 	 image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
 	 }

+ 1 - 0
static/style.css

@@ -80,6 +80,7 @@ font-size: 30rpx;color: #FFFFFF;background: #00A9F0;text-align: center;line-heig
 .ml33{margin-left: 66rpx;}
 .pb12{padding-bottom: 24rpx;}
 .pt17{padding-top: 34rpx;}
+.plr10{padding: 0 20rpx;}
 .plr12{padding: 0 24rpx;}
 .plr18{padding: 0 36rpx;}
 

+ 53 - 1
utils/location.js

@@ -79,7 +79,58 @@ function get_cookie(key) {
 		return '';
 	}
 };
-
+// 文件写入
+function getFilePermissions(callback) {
+	callback = typeof(callback) == 'function' ? callback : function(res) {};
+		var num=1;
+		// #ifdef MP-WEIXIN
+		
+		// #endif
+		// #ifdef APP-PLUS
+		plus.android.requestPermissions(
+			['android.permission.WRITE_EXTERNAL_STORAGE',
+			'android.permission.READ_EXTERNAL_STORAGE',], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
+			function(resultObj) {
+				var result = 0;
+				for (var i = 0; i < resultObj.granted.length; i++) {
+					var grantedPermission = resultObj.granted[i];
+					console.log('已获取的权限:' + grantedPermission);
+					result = 1
+				}
+				for (var i = 0; i < resultObj.deniedPresent.length; i++) {
+					var deniedPresentPermission = resultObj.deniedPresent[i];
+					console.log('拒绝本次申请的权限:' + deniedPresentPermission);
+					result = 0
+				}
+				for (var i = 0; i < resultObj.deniedAlways.length; i++) {
+					var deniedAlwaysPermission = resultObj.deniedAlways[i];
+					console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
+					result = -1
+				}
+				// resolve(result);
+				// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
+				if (result != 1) {
+					showConfirm('您还未开启文件权限,是否去开启文件?').then(res => {
+					  if (res.confirm) {
+					    gotoAppPermissionSetting()
+						callback(result)
+					  }
+					})
+				}else{
+					callback(result)
+				}
+			},
+			function(error) {
+				console.log('申请权限错误:' + error.code + " = " + error.message);
+				// resolve({
+				// 	code: error.code,
+				// 	message: error.message
+				// });
+			}
+		);
+			
+		// #endif
+};
 function getLocation(callback) {
 	
 	callback = typeof(callback) == 'function' ? callback : function(res) {};
@@ -345,6 +396,7 @@ function getLocationaddr(callback){
 const self = {
 	getLocation,
 	setUxLocation,
+	getFilePermissions,
 	__CFG
 }
 export default self

+ 9 - 3
work/components/popup/popup.vue

@@ -650,10 +650,16 @@
 			},
 			getfjAdd(){
 				var type=this.type;
-				var data={
-					fjUrl:this.filelist,
+				if(this.filelist&&this.filelist.length>0){
+					var data={
+						fjUrl:this.filelist,
+					}
+					this.$emit('getfjAdd',data)
+				}else{
+					this.$toast("请上传附件")
+					return
 				}
-				this.$emit('getfjAdd',data)
+				
 			},
 			bindDateChangea(e){
 				var val=e.detail.value;

+ 32 - 11
work/pages/business/add.vue

@@ -9,6 +9,7 @@
 						<image :src="backimg" ></image>
 					</view>
 				</block>
+				<!-- #ifndef MP-WEIXIN -->
 				<block slot="right">
 					<view class="edit" v-if="ftype" @click="getGiveupFn">
 						<image :src="feditimg"></image>
@@ -19,6 +20,8 @@
 						<cover-view @click.stop="getGiveupFn" class="txt">放弃编辑</cover-view>
 					</cover-view>
 				</block>
+				<!-- #endif -->
+				
 			</uni-nav-bar>
 			<!-- 头部 -->
 			<step-bar :steps="steps" :fixeda='false' :stepval="stepval"></step-bar>
@@ -1117,6 +1120,18 @@
 			<view class="bgbox" @click="lookflag=false" ></view>
 			<image :src="lookico" class="looimg" @click="getPreview(lookico)"></image>
 		</block>
+		<!-- 放弃编辑 -->
+		<!-- #ifdef MP-WEIXIN -->
+		<view class="edit editcir" v-if="ftype" @click="getGiveupFn">
+			<image :src="feditimg"></image>
+			放弃编辑
+		</view>
+		<cover-view class="edit editcir" v-else @click="getGiveupFn">
+			<cover-image :src="feditimg" @click.stop="getGiveupFn" class="img"></cover-image>
+			<cover-view @click.stop="getGiveupFn" class="txt">放弃编辑</cover-view>
+		</cover-view>
+		<!-- #endif -->
+		
 		<pop-up :type='ftype' :xwimgList="xwimgList" :content="content" @getClose='getClose'></pop-up>
 	</view>
 </template>
@@ -1126,6 +1141,7 @@
 	const baseUrl = config.baseUrl
 	const baseUrlimg=config.baseUrlimg
 	const baseName = config.baseName
+	import self from '@/utils/location.js';
 	import popUp from "@/work/components/popup/popup.vue"
 	import stepBar from "@/components/toptab/stepbar.vue"
 	import { getToken } from '@/utils/auth'
@@ -1340,6 +1356,10 @@
 			if(data.type){
 				this.ptype=data.type;
 				this.id=data.id;
+				if(Number(data.val)<4){
+					this.stepval=Number(data.val)+1
+				}
+				
 				this.getDetail()
 			}else{
 				this.datainfo.applicationAmount=data.applicationAmount;
@@ -2153,15 +2173,11 @@
 			getDownloader(path,name){
 				// console.log(path,name)
 				// #ifdef APP-PLUS
-				uni.showLoading({
-					title: '加载中'
-				});
-				plus.android.requestPermissions([
-						'android.permission.WRITE_EXTERNAL_STORAGE',
-						'android.permission.READ_EXTERNAL_STORAGE',
-						'android.permission.INTERNET',
-						'android.permission.ACCESS_WIFI_STATE'
-					], error => {
+				self.getFilePermissions(function(res){
+					if(res==1){
+						uni.showLoading({
+							title: '加载中'
+						});
 						var url = baseUrl + path;
 						let dtask = plus.downloader.createDownload(url, {
 							filename: 'file://storage/emulated/0/'+baseName+'/' + name
@@ -2193,13 +2209,14 @@
 							}
 						})
 						dtask.start();
-					}, success=> {
+					}else{
 						uni.hideLoading();
 						uni.showToast({
 							title: '无法获取权限,文件下载将出错!',
 							icon: 'none',
 						})
-					})
+					}			
+				})
 				// #endif
 			},
 			getExportMb(ite){
@@ -2289,6 +2306,10 @@
 	.img{width: 24rpx;height: 26rpx;margin-right: 10rpx;}
 	.txt{font-weight: 500;font-size: 26rpx;color: #FFFFFF;}
 }
+.editcir{box-shadow: 0px 0px 20rpx 0px rgba(0,169,240,0.6);
+	width: 120rpx;height: 120rpx;border-radius: 50%;position: fixed;right:0;bottom:140rpx;background-color: $com-cd3;flex-direction: column;align-items: center;justify-content: center;
+	.img{margin-bottom: 8rpx;margin-right: 0;}
+}
 .addbox{padding: 140rpx 0 136rpx;
 	.addtit{font-weight: bold;padding: 18rpx 34rpx;font-size: 26rpx;color: #666666;
 		text{color: #DF0303;margin-right: 8rpx;}

+ 10 - 11
work/pages/business/details.vue

@@ -253,6 +253,7 @@
 	import config from '@/config'
 	const baseUrl = config.baseUrl
 	const baseName = config.baseName
+	import self from '@/utils/location.js';
 	import { getToken } from '@/utils/auth'
 	import popUp from "@/work/components/popup/popup.vue"
 	import aqyxx from "@/work/components/business/aqyxx.vue"
@@ -438,6 +439,7 @@
 				var obj={
 					type:'edit',
 					id:this.id,
+					val:this.tabval
 				}
 				this.$tab.navigateTo('/work/pages/business/add?data='+encodeURIComponent(JSON.stringify(obj)))
 			},
@@ -735,15 +737,11 @@
 			getDownloader(path,name){
 				console.log(path,name)
 				// #ifdef APP-PLUS
-				uni.showLoading({
-					title: '加载中'
-				});
-				plus.android.requestPermissions([
-						'android.permission.WRITE_EXTERNAL_STORAGE',
-						'android.permission.READ_EXTERNAL_STORAGE',
-						'android.permission.INTERNET',
-						'android.permission.ACCESS_WIFI_STATE'
-					], error => {
+				self.getFilePermissions(function(res){
+					if(res==1){
+						uni.showLoading({
+							title: '加载中'
+						});
 						var url = baseUrl + path;
 						let dtask = plus.downloader.createDownload(url, {
 							filename: 'file://storage/emulated/0/'+baseName+'/' + name
@@ -775,13 +773,14 @@
 							}
 						})
 						dtask.start();
-					}, success=> {
+					}else{
 						uni.hideLoading();
 						uni.showToast({
 							title: '无法获取权限,文件下载将出错!',
 							icon: 'none',
 						})
-					})
+					}			
+				})
 				// #endif
 			},
 			getClose(){

+ 10 - 13
work/pages/file/list.vue

@@ -40,6 +40,7 @@
 	import config from '@/config'
 	const baseUrl = config.baseUrl
 	const baseName = config.baseName
+	import self from '@/utils/location.js';
 	import busList from "@/work/components/business/list.vue"
 	import {getListOss,getEwmList} from "@/api/common.js"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
@@ -199,17 +200,12 @@
 				this.getDataFn()
 			},
 			getDownloader(path,name){
-				// console.log(path,name)
 				// #ifdef APP-PLUS
-				uni.showLoading({
-					title: '加载中'
-				});
-				plus.android.requestPermissions([
-						'android.permission.WRITE_EXTERNAL_STORAGE',
-						'android.permission.READ_EXTERNAL_STORAGE',
-						'android.permission.INTERNET',
-						'android.permission.ACCESS_WIFI_STATE'
-					], error => {
+				self.getFilePermissions(function(res){
+					if(res==1){
+						uni.showLoading({
+							title: '加载中'
+						});
 						var url = baseUrl + path;
 						let dtask = plus.downloader.createDownload(url, {
 							filename: 'file://storage/emulated/0/'+baseName+'/' + name
@@ -225,7 +221,7 @@
 								});
 								
 								//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
-								let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
+								// let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
 								// setTimeout(() => {
 								// 	plus.runtime.openFile(d.filename); //选择软件打开文件
 								// }, 1500)
@@ -241,13 +237,14 @@
 							}
 						})
 						dtask.start();
-					}, success=> {
+					}else{
 						uni.hideLoading();
 						uni.showToast({
 							title: '无法获取权限,文件下载将出错!',
 							icon: 'none',
 						})
-					})
+					}			
+				})
 				// #endif
 			},
 			getXzFn(ite){

+ 33 - 5
work/pages/prove/index.vue

@@ -5,13 +5,13 @@
 			<view class="carbox" @click="getaddImage('front')">
 				<image :src="baseUrl+user.front" class="img" v-if="user.front"></image>
 				<image :src="cardz" class="img" v-else></image>
-				<view class="tit">拍摄面</view>
+				<view class="tit">拍摄人像面</view>
 				<!-- <view class="tit">身份证正面</view> -->
 			</view>
 			<view class="carbox" @click="getaddImage('back')">
 				<image :src="baseUrl+user.back" class="img" v-if="user.back"></image>
 				<image :src="cardf" class="img" v-else></image>
-				<view class="tit">拍摄面</view>
+				<view class="tit">拍摄国徽面</view>
 				<!-- <view class="tit">身份证反面</view> -->
 			</view>
 		</view>
@@ -49,7 +49,10 @@
 	import {uploadIdentify} from '@/utils/common.js'
 	import {getOcrIdCard,getOcrFn,getChangeFace,getIdCardAdd} from "@/api/mine/card.js"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	// #ifdef APP-PLUS
 	const aliyunVerify = uni.requireNativePlugin('AP-FaceDetectModule');
+	// #endif
+	
 	export default{
 		components:{},
 		data(){
@@ -93,11 +96,11 @@
 			getNext(){
 				// 判断信息是否完善
 				if(!this.user.front){
-					this.$toast("请上传身份证面")
+					this.$toast("请上传身份证人像面")
 					return
 				}
 				if(!this.user.back){
-					this.$toast("请上传身份证面")
+					this.$toast("请上传身份证国徽面")
 					return
 				}
 				// #ifdef APP-PLUS
@@ -105,6 +108,14 @@
 				// #endif
 				// #ifndef APP-PLUS
 				this.$toast("请在app端进行认证")
+				// 跳h5页面进行人脸认证
+				// var user=this.user;
+				// var data={
+				// 	idCard:user.idCard,
+				// 	realName:user.realName,
+				// 	returnUrl:'https://rzdb.qs163.cn'
+				// }
+				// this.$tab.navigateTo('/pages/common/webview/faceauth?data='+encodeURIComponent(JSON.stringify(data)))
 				// #endif
 			},
 			getFace(){
@@ -116,9 +127,13 @@
 					realName:user.realName,
 					metaInfo:this.metaInfo,
 				}
+				// #ifndef APP-PLUS
+				params.returnUrl='https://rzdb.qs163.cn';
+				// #endif
 				getOcrFn(params).then(res=>{
 					if(res.code==200){
-						var id=res.msg;
+						// #ifdef APP-PLUS
+						var id=res.data.certifyId;
 						aliyunVerify.verify({
 						    "certifyId":id,		// 填写从服务端获取的certifyId
 						  }, 
@@ -137,6 +152,19 @@
 							  }
 						  }
 						);
+						// #endif
+						// #ifndef APP-PLUS
+						this.$toast("请在app端进行认证")
+						// 跳h5页面进行人脸认证
+						// console.log(MetaInfo)
+						// var user=this.user;
+						// var data={
+						// 	url:res.data.certifyUrl,
+						// 	realName:user.realName,
+						// }
+						// this.$tab.navigateTo('/pages/common/webview/faceauth?data='+encodeURIComponent(JSON.stringify(data)))
+						// #endif
+						
 					}
 				}) 
 			},

Some files were not shown because too many files changed in this diff