瀏覽代碼

页面搭建

zouling 4 月之前
父節點
當前提交
46d18d0262
共有 100 個文件被更改,包括 4299 次插入0 次删除
  1. 148 0
      staff_ui/api/mine/card.js
  2. 297 0
      staff_ui/components/home/list.vue
  3. 95 0
      staff_ui/components/home/picker.vue
  4. 314 0
      staff_ui/components/home/popup.vue
  5. 235 0
      staff_ui/components/loading/loading.vue
  6. 39 0
      staff_ui/components/nodata/nodata.vue
  7. 101 0
      staff_ui/hybrid/html/face.html
  8. 1 0
      staff_ui/hybrid/html/js/jquery.min.js
  9. 5 0
      staff_ui/hybrid/html/js/vue.min.js
  10. 0 0
      staff_ui/hybrid/html/js/web-office-sdk-solution-v2.0.6.umd.js
  11. 53 0
      staff_ui/hybrid/html/web-office.html
  12. 18 0
      staff_ui/main.js
  13. 16 0
      staff_ui/manifest.json
  14. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/APSecuritySDK-DeepSec-7.0.1.20220813.jiagu.aar
  15. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/Android-AliyunFaceGuard-10038.aar
  16. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-base-2.2.8.1-20230721163000.aar
  17. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-facade-2.2.8.1-20230721163000.aar
  18. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-face-2.2.8.1-20230721163000.aar
  19. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-faceaudio-2.2.8.1-20230721163000.aar
  20. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-facelanguage-2.2.8.1-20230721163000.aar
  21. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-nfc-2.2.8.1-20230721163000.aar
  22. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-ocr-2.2.8.1-20230721163000.aar
  23. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-photinus-2.2.8.1-20230721163000.aar
  24. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-wishverify-2.2.8.1-20230721163000.aar
  25. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/android/uniplugin_module-release.aar
  26. 68 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/en.strings
  27. 59 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/id.strings
  28. 59 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/ja.strings
  29. 59 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/ko.strings
  30. 68 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/zh-HK.strings
  31. 68 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/zh-Hans.strings
  32. 68 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/zh-Hant.strings
  33. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/APBToygerFacade
  34. 76 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerBaseTask.h
  35. 19 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerCherryDetectTask.h
  36. 26 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerCherryUploadTask.h
  37. 36 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerFacade.h
  38. 130 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerFacadeDefine.h
  39. 25 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerPresentTask.h
  40. 27 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerUploadTask.h
  41. 61 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerUtils.h
  42. 34 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerViewController.h
  43. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Info.plist
  44. 6 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Modules/module.modulemap
  45. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_angle.mp3
  46. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_away.mp3
  47. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_blink.mp3
  48. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_closer.mp3
  49. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_integrity.mp3
  50. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_left_yaw.mp3
  51. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_light.mp3
  52. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_right_yaw.mp3
  53. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_stay.mp3
  54. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/APPSecuritySDK
  55. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/APPSecuritySDKCore-Info.plist
  56. 122 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APDID.h
  57. 41 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APDeviceColor.h
  58. 32 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APDynamic.h
  59. 21 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskConfigReportRequest.h
  60. 19 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskConfigReportResponse.h
  61. 20 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskConfigServiceProtocol.h
  62. 14 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskFileUploadProtocol.h
  63. 21 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskLoggerProtocol.h
  64. 30 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskRPCProtocol.h
  65. 29 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskRemoteLoggerProtocol.h
  66. 68 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskReportRequest.h
  67. 65 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskReportResponse.h
  68. 20 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskRpcConfiguration.h
  69. 21 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskSyncHandlerProtocol.h
  70. 28 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskSyncServiceProtocol.h
  71. 41 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSecRDS.h
  72. 48 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSecStore.h
  73. 113 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSecureSdk.h
  74. 56 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSign.h
  75. 234 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSCommon.h
  76. 37 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSDynamicManager.h
  77. 39 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSLogger.h
  78. 28 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSSecureInfo.h
  79. 77 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSSecureOpenSdk.h
  80. 29 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSSgomInfoOpen.h
  81. 40 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSTokenResult.h
  82. 101 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/AntSecurityManager.h
  83. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Info.plist
  84. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeDirectory
  85. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeRequirements
  86. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeRequirements-1
  87. 559 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeResources
  88. 0 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeSignature
  89. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/en.lproj/InfoPlist.strings
  90. 9 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/module.map
  91. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/AliyunFaceAuthFacade
  92. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/AliyunFaceAuthFacade-Info.plist
  93. 44 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/Headers/AliyunFaceAuthFacade.h
  94. 28 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/Headers/PoPGatewayNetwork.h
  95. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/Info.plist
  96. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/en.lproj/InfoPlist.strings
  97. 二進制
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/AliyunOSSiOS
  98. 20 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/Headers/AliyunOSSiOS.h
  99. 19 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/Headers/NSDate+OSS.h
  100. 15 0
      staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/Headers/NSMutableData+OSS_CRC.h

+ 148 - 0
staff_ui/api/mine/card.js

@@ -0,0 +1,148 @@
+import request from '@/utils/request'
+//身份证识别
+export function getOcrIdCard(data) {
+  return request({
+    'url': '/ocr/ocrIdCard',
+    'method': 'post',
+	'data':data
+  })
+}
+//营业执照识别
+export function getOcrBusinessLicense(data) {
+  return request({
+    'url': '/ocr/ocrBusinessLicense',
+    'method': 'post',
+	'data':data
+  })
+}
+//人脸识别(注册接口)
+export function getOcrSample(data) {
+  return request({
+    'url': '/ocr/ocrSample',
+    'method': 'post',
+	'data':data
+  })
+}
+
+
+//营业执照信息-列表 enterprise:enterprise:list
+export function getEnterpriseList(data) {
+  return request({
+    'url': '/enterprise/list',
+    'method': 'get',
+	'data':data
+  })
+}
+//营业执照信息-列表不分页 enterprise:enterprise:listNoPage
+export function getQyListNoPage(data) {
+  return request({
+    'url': '/enterprise/listNoPage',
+    'method': 'get',
+	'data':data,
+  })
+}
+//营业执照信息-新增 enterprise:enterprise:add
+export function getEnterpriseAdd(data) {
+  return request({
+    'url': '/enterprise',
+    'method': 'post',
+	'data':data
+  })
+}
+//营业执照信息-修改	 enterprise:enterprise:edit
+export function getEnterpriseEdit(data) {
+  return request({
+    'url': '/enterprise/put',
+    'method': 'post',
+	'data':data
+  })
+}
+//营业执照信息-删除 enterprise:enterprise:remove
+export function getEnterpriseDel(data) {
+  return request({
+    'url': '/enterprise/delete/'+data,
+    'method': 'get',
+  })
+}
+//营业执照信息-详情 enterprise:enterprise:query
+export function getEnterpriseDet(data) {
+  return request({
+    'url': '/enterprise/'+data,
+    'method': 'get',
+  })
+}
+//用户身份证信息列表-新增idcard:idcard:add
+export function getIdCardAdd(data) {
+  return request({
+    'url': '/idCard',
+    'method': 'post',
+	'data':data
+  })
+}
+//用户身份证信息列表-列表idcard:idcard:list
+export function getIdCardList(data) {
+  return request({
+    'url': '/idCard/list',
+    'method': 'get',
+	'data':data
+  })
+}
+//登录用户身份证信息列表-修改idcard:idcard:edit
+export function getIdCardPut(data) {
+  return request({
+    'url': '/idCard/put',
+    'method': 'post',
+	'data':data
+  })
+}
+//用户身份证信息列表-详情idcard:idcard:query
+export function getIdCardDet(data) {
+  return request({
+    'url': '/idCard/'+data,
+    'method': 'get',
+  })
+}
+//用户身份证信息列表-删除idcard:idcard:remove
+export function getIdCardDel(data) {
+  return request({
+    'url': '/idCard/delete/'+data,
+    'method': 'get',
+  })
+}
+
+//人脸识别阿里云金融级实人认证
+export function getOcrFn(data) {
+  return request({
+    'url': '/ocr/ocrSampleAliYun',
+    'method': 'post',
+	'data':data
+  })
+}
+//人脸识别百度V4版本H5
+export function getOcrH5Fn(data) {
+  return request({
+    'url': '/idCard/h',
+    'method': 'post',
+	'data':data
+  })
+}
+
+//修改人脸识别状态
+export function getChangeFace(data) {
+  return request({
+    'url': '/system/user/changeFace',
+    'method': 'post',
+	'data':data
+  })
+}
+
+// word文档签名
+export function getWordFilePath(data) {
+  return request({
+    'url': '/word/wordFilePath',
+    'method': 'post',
+	'data':data
+  })
+}
+
+

+ 297 - 0
staff_ui/components/home/list.vue

@@ -0,0 +1,297 @@
+<template>
+<view>
+	<!-- 第一种样式  人员管理-->
+	<block v-if="datainfo.length>0">
+		<!-- 订单 -->
+		<block v-if="type=='order'">
+			<view class="odlist" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail">
+				<view class="odtop flexcj">
+					<view class="tit">2024-11-26 10:00</view>
+					<view class="txt">本单收入<text class="t">¥</text><text class="num">60</text></view>
+				</view>
+				<view class="odbox">
+					<view class="lists flexcj">
+						<view class="llists flex1">
+							<view class="flext mb10">
+								<view class="imgs"><image :src="hlista" class="imga"></image></view>
+								<view class="oltit">单次深度清洁</view>
+							</view>
+							<view class="flext mb10">
+								<view class="imgs"><image :src="hlistb" class="imgb"></image></view>
+								<view class="oltit">安徽省合肥市蜀山区高新技术开发区幸福 大街88号幸福小区12#1403室 </view>
+								<image :src="adrimg" class="adrimg"></image>
+							</view>
+							<view class="flext mb10">
+								<view class="imgs"><image :src="hlistc" class="imga"></image></view>
+								<view class="oltit">80m²以内</view>
+							</view>
+							<view class="flext mb10">
+								<view class="imgs"><image :src="hlistd" class="imgc"></image></view>
+								<view class="oltit">刘熙媛</view>
+							</view>
+							<block v-if="ite.zhanflag">
+								<view class="flext mb10">
+									<view class="imgs"><image :src="hliste" class="imgd"></image></view>
+									<view class="oltit">18000185568</view>
+								</view>
+								<view class="flext mb10">
+									<view class="imgs"><image :src="hlistf" class="imge"></image></view>
+									<view class="oltit flexc">412588653126854369
+										<view class="olbtn">复制</view>
+									</view>
+								</view>
+								<view class="flext mb10">
+									<view class="imgs"><image :src="hlistg" class="imge"></image></view>
+									<view class="oltit">2024-11-25 18:23:56 <text class="coa">(接单时间)</text></view>
+								</view>
+								<view class="flext mb10">
+									<view class="imgs"><image :src="hlisth" class="imgf"></image></view>
+									<view class="oltit">2024-11-25 18:23:56 <text class="coa"> (上门时间)</text></view>
+								</view>
+								<view class="flext mb6">
+									<view class="imgs"><image :src="hlisti" class="imga"></image></view>
+									<view class="phos">
+										<image :src="hlista"></image>
+									</view>
+								</view>
+								<view class="flext mb10">
+									<view class="imgs"><image :src="hlistj" class="imgg"></image></view>
+									<view class="oltit">2024-11-25 18:23:56 <text class="coa"> (完成时间)</text></view>
+								</view>
+								<view class="flext mb6">
+									<view class="imgs"><image :src="hlisti" class="imga"></image></view>
+									<view class="phos">
+										<image :src="hlista"></image>
+									</view>
+								</view>
+								<view class="flext mb10">
+									<view class="imgs"><image :src="hlistk" class="imgc"></image></view>
+									<view class="oltit">个人原因:与已接单时间重叠</view>
+								</view>
+							</block>
+						</view>
+						<view class="rlist">接单</view>
+						<view class="rlist btna">
+							<view>我已</view>
+							<view>完成</view>
+						</view>
+					</view>
+					<view class="upbox flexcc" :class="ite.zhanflag?'':'act'" @click.stop="getZhan(idx)">
+						{{ite.zhanflag?'折叠':'展开'}}<image :src="upimg"></image>
+					</view>
+					<!-- 接单 -->
+					<view class="ohbtn" @click.stop="getBtnFn('tips')">接单</view>
+					<!-- 接单后 -->
+					<view class="flexcj">
+						<view class="ohbtn btna" @click.stop="getBtnFn('cancel')">取消订单</view>
+						<view class="ohbtn btnb" @click.stop="getBtnFn('addpho')">我已上门</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<view class="shax">{{wtdt}}</view>
+	</block>
+	
+	<!-- 无数据 -->
+	<view class="nodata" v-else>
+		<image :src="noiconpimg"></image>
+		<view>暂无数据</view>
+	</view>
+</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import config from '@/config'
+	export default{
+		props:{
+			datainfo: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			wtdt:{
+				type:String,
+				default () {
+					return ''
+				}
+			},
+			type:{
+				type:String,
+				default () {
+					return 0
+				}
+			},
+			topval:{
+				type:String,
+				default () {
+					return ''
+				}
+			}
+		},
+		data(){
+			return{
+				noiconpimg:require("@/static/images/nodata.png"),
+				hlista:require("@/static/images/home/hlista.png"),
+				hlistb:require("@/static/images/home/hlistb.png"),
+				hlistc:require("@/static/images/home/hlistc.png"),
+				hlistd:require("@/static/images/home/hlistd.png"),
+				hliste:require("@/static/images/home/hliste.png"),
+				hlistf:require("@/static/images/home/hlistf.png"),
+				hlistg:require("@/static/images/home/hlistg.png"),
+				hlisth:require("@/static/images/home/hlisth.png"),
+				hlisti:require("@/static/images/home/hlisti.png"),
+				hlistj:require("@/static/images/home/hlistj.png"),
+				hlistk:require("@/static/images/home/hlistk.png"),
+				// hicob:require("@/health/static/health/hicob.png"),
+				// man:require("@/work/static/people/man.png"),
+				// woman:require("@/work/static/people/woman.png"),
+				upimg:require("@/static/images/home/ups.png"),
+				adrimg:require("@/static/images/home/adrimg.png"),
+				baseUrl:config.baseUrl,
+				delBtnWidth:66,//左滑默认宽度
+			}
+		},
+		mounted() {
+			
+		},
+		methods:{
+			checkPermi, checkRole,
+			getDetail(e){
+				this.$emit('getDetail',e)
+			},
+			getAddFn(e){
+				this.$emit('getAddFn',e)
+			},
+			getReadlist(e){
+				this.$emit('getReadlist',e)
+			},
+			getBtnFn(e){
+				this.$emit('getBtnFn',e)
+			},
+			getZhan(idx){
+				console.log(idx,1)
+				// var obj=JSON.parse(JSON.stringify(this.datainfo))[idx]
+				// obj.zhanflag=!obj.zhanflag;
+				// this.datainfo.splice(idx,1,obj);
+				this.datainfo[idx].zhanflag=!this.datainfo[idx].zhanflag
+			},
+			getPreview(idx,arr) {
+				var newArr=[];
+				arr.forEach(ite=>{
+					var ds=this.baseUrl+ite
+					newArr.push(ds)
+				})
+				uni.previewImage({
+					urls: newArr,
+					current:idx,
+					success: function(data) {},
+					fail: function(err) {}
+				});
+			},
+			//开始触摸滑动
+			drawStart(e) {
+				// console.log("开始触发");
+				var touch = e.touches[0];
+				this.startX = touch.clientX;
+			},
+			//触摸滑动
+			drawMove(e) {
+				// console.log("滑动");
+				for (var index in this.datainfo) {
+					// this.csListArrl[index].right=0
+					this.$set(this.datainfo[index],'right',0);
+				}
+				var idx=e.currentTarget.dataset.idx
+				var touch = e.touches[0];
+				var item = this.datainfo[idx];
+				var disX = this.startX - touch.clientX;
+				if (disX >= 20) {
+				        if (disX > this.delBtnWidth) {
+					    disX = this.delBtnWidth;
+				        }
+						// this.csListArrl[idx].right=disX
+				        this.$set(this.datainfo[idx],'right',disX);
+				} else {
+					// this.csListArrl[idx].right=0
+					this.$set(this.datainfo[idx],'right',0);
+				}
+			},
+			//触摸滑动结束
+			drawEnd(e) {
+				// console.log("滑动结束");
+				var idx=e.currentTarget.dataset.idx
+				var item = this.datainfo[idx];
+				if (item.right >= this.delBtnWidth / 2) {
+					// this.datainfo[idx].right=this.delBtnWidth
+					this.$set(this.datainfo[idx],'right',this.delBtnWidth);
+				} else {
+					this.datainfo[idx].right=0
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.flex{display: flex;}
+.flexc{display: flex;align-items: center;}
+.mb10{margin-bottom: 20rpx;}
+.odlist{background: #FFFFFF;border-radius: 20rpx;margin-bottom: 24rpx;
+	.odtop{border-bottom: 2rpx solid #E5E5E5;min-height: 78rpx;box-sizing: border-box;padding:8rpx  24rpx;
+		.tit{font-weight: bold;font-size: 32rpx;color: #272727;}
+		.txt{font-weight: 500;font-size: 24rpx;color: #AAAAAA;
+			.t{font-size:22rpx;color: #FF8213;}
+			.num{font-size:30rpx;color: #FF8213;}
+		}
+	}
+	.odbox{padding:28rpx 12rpx 28rpx;}
+	.lists{padding:0rpx 16rpx 0rpx 24rpx;align-items: stretch;
+		.llists{
+			.imgs{width: 28rpx;height: 28rpx;display: flex;align-items: center;justify-content: center;margin-right: 12rpx;flex: 0 0 auto;margin-top: 4rpx;
+				.imga{width: 26rpx;height: 24rpx;}
+				.imgb{width: 20rpx;height: 24rpx;}
+				.imgc{width: 24rpx;height: 24rpx;}
+				.imgd{width: 20rpx;height: 28rpx;}
+				.imge{width: 26rpx;height: 26rpx;}
+				.imgf{width: 26rpx;height: 28rpx;}
+				.imgg{width: 28rpx;height: 30rpx;}
+			}
+			.oltit{font-weight: bold;font-size: 26rpx;color: #272727;line-height: 36rpx;}
+			.olbtn{font-size: 26rpx;color: #0156FE;padding: 0 12rpx;border-left: 2rpx solid #AAAAAA;margin-left: 12rpx;line-height: 1;}
+			.adrimg{width: 54rpx;height: 54rpx;flex: 0 0 auto;margin-left: 40rpx;}
+			.phos{
+				image{width: 80rpx;height: 80rpx;margin: 0 24rpx 8rpx 0;}
+			}
+		}
+		
+		.rlist{border-radius: 20rpx;border: 2rpx solid #E6E6E6;flex: 0 0 auto;margin-left: 40rpx;width: 88rpx;display: flex;align-items: center;justify-content: center;margin-bottom: 20rpx;font-weight: bold;
+font-size: 26rpx;color: #272727;
+			&.btna{background: #1BDD95;color: #FFFFFF;flex-direction: column;}
+		}
+	}
+	.upbox{font-weight: 500;font-size: 22rpx;color: #AAAAAA;padding: 2rpx 0;margin-bottom: 24rpx;
+		image{width: 26rpx;height: 22rpx;margin-left: 14rpx;transition: all 0.3;}
+		&.act{
+			image{
+				transform: rotate(-180deg);
+			}
+		}
+	}
+	.ohbtn{height: 88rpx;display: flex;align-items: center;justify-content: center;
+background: #1BDD95;font-weight: bold;font-size: 26rpx;color: #FFFFFF;border-radius: 20rpx;
+		&.btna{border: 2rpx solid #DADADA;background-color: #FFFFFF;width: 340rpx;color: #666666;}
+		&.btnb{width: 340rpx;}
+	}
+}
+
+
+
+// 无数据
+.nodata{display: flex;flex-direction: column;align-items: center;
+	image{width: 440rpx;height: 440rpx;}
+	view{font-size: 30rpx;color: #666666;font-weight: bold;}
+	
+}
+</style>

+ 95 - 0
staff_ui/components/home/picker.vue

@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<view class="topbtns mr12" @click="getShowFn">
+			<block v-if="pickval==0">
+				<image :src="online"  class="limg"></image>上线中
+			</block>
+			<block v-if="pickval==1">
+				<image :src="noline" v-if="pickval==1" class="limg"></image>离线中
+			</block>
+			
+			<image :src="upimg" class="upimg"></image>
+			<view class="pickbg" v-if="pickflag" @click.stop="getHideFn"></view>
+			<view class="absbox" v-if="pickflag">
+				<view class="uni-popper__arrow"></view>
+				<view class="lists">
+					<view class="list" v-for="(ite,idx) in list" :key="idx" @click.stop="getTabFn(ite.val)">{{ite.tit}}</view>
+					<!-- <view class="list">离线</view> -->
+				</view>
+
+			</view>
+		</view>
+		<loading></loading>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
+	export default {
+		components: {},
+		props:{
+			localdata:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			// value: {
+			// 	type: [String, Number],
+			// 	default: ''
+			// },
+		},
+		data() {
+			return {
+				noline: require("@/static/images/home/noline.png"),
+				online: require("@/static/images/home/online.png"),
+				upimg: require("@/static/images/home/up.png"),
+				pickflag: false,
+				pickval:0,
+				list:[{tit:"在线",val:0},{tit:"离线",val:1}]
+			}
+		},
+		onLoad: function() {
+
+		},
+		methods: {
+			getTabFn(val){
+				this.pickval=val;
+				this.pickflag=false;
+				this.$emit("getChange",val)
+			},
+			getHideFn(){
+				this.pickflag=false;
+			},
+			getShowFn(){
+				this.pickflag=true;
+			}
+		}
+	}
+</script>
+<style>
+	page {
+		background: #F3F3F0;
+	}
+</style>
+<style lang="scss" scoped>
+.pickbg{position: fixed;left: 0;right: 0;top: 0;bottom: 0;z-index: 2;}
+.topbtns{font-weight: bold;background: rgba(93, 147, 255, 0.5);font-size: 24rpx;min-width: 174rpx;height: 52rpx;display: flex;align-items: center;padding: 0 20rpx;border-radius: 26rpx;color: #FFFFFF;box-sizing: border-box;position: relative;
+		.upimg{width: 12rpx;height: 6rpx;flex: 0 0 auto;margin-left: 16rpx;}
+		.limg{width: 24rpx;height: 24rpx;margin-right: 16rpx;flex: 0 0 auto;}
+}
+			// 自定义选择框
+.absbox{position: absolute;box-sizing: border-box;position: absolute;top: calc(100% + 24rpx);left: 0;width: 100%;background-color: #FFFFFF;border: 2rpx solid #EBEEF5;border-radius:12rpx;box-shadow: 0 4rpx 24rpx 0 rgba(0, 0, 0, 0.1);z-index: 3;padding: 8rpx 0;
+	.uni-popper__arrow{position: absolute;display: block;width: 0;height: 0;border-color: transparent;border-style: solid;border-width: 12rpx;filter: drop-shadow(0 4rpx 24rpx rgba(0, 0, 0, 0.03));top: -12rpx;left: 10%;margin-right: 6rpx;border-top-width: 0;border-bottom-color: #EBEEF5;
+		&:after{position: absolute;display: block;width: 0;height: 0;border-color: transparent;border-style: solid;border-width: 12rpx;content: " ";top: 2rpx;margin-left: -12rpx;border-top-width: 0;border-bottom-color: #fff;}
+	}
+	.lists{width: 100%;height: 100%;overflow: auto;}
+	.list{line-height: 70rpx;font-size: 28rpx;color: #272727;padding: 0 10rpx;
+		&:hover {
+			background-color: #f9f9f9;
+		}
+	}
+}
+</style>

+ 314 - 0
staff_ui/components/home/popup.vue

@@ -0,0 +1,314 @@
+<template>
+	<view>
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="type"></view>
+		<!-- 实名认证 -->
+		<view v-if="type=='tips'" class="assignbox atips">
+			<image :src="tiprz" class="tiprz"></image>
+			<view class="assbox">
+				<view class="asstips">
+					<view class="tit">温馨提示</view>
+					<view class="txt">您还未进行实名认证,认证即可接单</view>
+				</view>
+				<view class="rhbtn mlr4"  @click="getSure">去实名认证</view>
+			</view>
+			<image :src="closeimg" class="closeimg"  @click="getClose"></image>
+		</view>
+		<!-- 取消订单 -->
+		<view v-if="type=='cancel'" class="assignbox cancel">
+			<view class="assbox">
+				<view class="asstit mb18">取消订单</view>
+				<view class="pb16">
+					<view class="canceltxt">您确定取消该订单吗?</view>
+					<view class="canceltxt">如若取消,则需缴纳罚单<text class="cofe">¥20</text></view>
+					<view class="cantips mt18 mb13">
+						<text class="cof4">*</text> 取消原因
+					</view>
+					<view class="canlists" v-for="(ite,idx) in canres" :key="idx" @click="getTabFn(ite.val)">
+						<image :src="chose" v-if="tabval==ite.val"></image>
+						<image :src="nchose" v-else></image>
+						{{ite.tit}}
+					</view>
+				</view>
+				<view class="rhbtn"  @click="getSure">确认取消</view>
+			</view>
+			<image :src="closeimg" class="closeimg"  @click="getClose"></image>
+		</view>
+		
+		<!-- 拍照 -->
+		<view v-if="type=='addpho'" class="assignbox pra">
+			<view class="assbox">
+				<view class="asstit">{{finshtype==2?'完成打卡':'上门打卡'}}</view>
+				<view class="assadd">
+					<image :src="addpho"></image>
+					<view>去拍照</view>
+				</view>
+				<view class="assimgs">
+					<view class="assimg">
+						<image :src="headbg" class="img"></image>
+						<image :src="rdelimg" class="delimg" @click="getDelFn"></image>
+					</view>
+					<view class="assimg">
+						<image :src="headbg" class="img"></image>
+						<image :src="rdelimg" class="delimg" @click="getDelFn"></image>
+					</view>
+					<view class="assimg">
+						<image :src="headbg" class="img"></image>
+						<image :src="rdelimg" class="delimg" @click="getDelFn"></image>
+					</view>
+				</view>
+				<view class="rhbtn"  @click="getSure">确定</view>
+			</view>
+			<image :src="closeimg" class="closeimg"  @click="getClose"></image>
+		</view>
+		<!-- 二维码 -->
+		<view v-if="type=='minecode'" class="mcode">
+			<view class="asstop flex1">
+				<view class="flexe">
+					<image :src="closeimg" class="closes"  @click="getClose"></image>
+				</view>
+				<view class="codetit">我的二维码</view>
+				<view class="assbox">
+					<view class="mtop flexc">
+						<image :src="headimg" class="head flex0"></image>袁明朗
+						<image :src="rzico" class="rzimg flex0"></image>
+					</view>
+					<view class="codes">
+						<image :src="headimg" class="codes"></image>
+					</view>
+				</view>
+			</view>
+			<view class="sharebox flexcc">
+				<view class="shbox">
+					<image :src="sharea"></image>
+					<view>微信好友</view>
+				</view>
+				<view class="shbox">
+					<image :src="shareb"></image>
+					<view>微信朋友圈</view>
+				</view>
+				<view class="shbox">
+					<image :src="down"></image>
+					<view>保存图片</view>
+				</view>
+			</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	import {uploadmore} from '@/utils/common.js'
+	export default{
+		components:{},
+		props:{
+			type: {
+				type: String,
+				default () {
+					return ''
+				}
+			},
+			canres:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			finshtype:{
+				type: [String,Number],
+				default () {
+					return ''
+				}
+			}
+		},
+		data(){
+			return{
+				baseUrl:config.baseUrl,
+				closeimg:require("@/static/images/close.png"),
+				// rimg: require('@/work/static/people/rimg.png'),
+				// headbg: require('@/work/static/service/headbg.png'),
+				addpho: require('@/static/images/addpho.png'),
+				rdelimg: require('@/static/images/rdel.png'),
+				tiprz: require('@/static/images/home/tiprz.png'),
+				chose: require('@/static/images/home/chose.png'),
+				nchose: require('@/static/images/home/nchose.png'),
+				headimg:require("@/static/images/mine/profile.png"),
+				rzico:require("@/static/images/mine/rzico.png"),
+				down:require("@/static/images/mine/down.png"),
+				sharea:require("@/static/images/mine/sharea.png"),
+				shareb:require("@/static/images/mine/shareb.png"),
+				datainfo:{
+					iszc:""
+				},
+				sexs: [{
+					text: '男',
+					value: 0
+				}, {
+					text: '女',
+					value: 1
+				}],
+				tabval:0,
+
+			}
+		},
+		mounted() {
+			this.baseUrl=baseUrl
+		},
+		watch:{
+			type(val){
+				// this.filelist=[];
+				// this.shtext='';
+				// this.isty='2';
+				// this.phofile=[];
+			}
+		},
+		methods:{
+			bindDateChange(){
+				var val=e.detail.value;
+			},
+			getClose(){
+				this.$emit('getClose')
+			},
+			getSure(){
+				this.$emit('getSure')
+			},
+			getTabFn(val){
+				this.tabval=val
+			},
+			getChose(val){
+				this.peoval=val
+			},
+			getPreviewImage(arr,idx){
+				var newArr=[];
+				arr.forEach(ite=>{
+					var ds=this.baseUrl+ite
+					newArr.push(ds)
+				})
+				uni.previewImage({
+					urls: newArr,
+					current:idx,
+					success: function(data) {
+						
+					},
+					fail: function(err) {
+						
+					}
+				});
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							// that.filelist.splice(idx,1)
+						} else if (res.cancel) {
+						}
+					}
+				});
+			},
+			getaddImage(e){
+				let that = this;
+				let file =[],count=9
+				uni.chooseImage({
+					count: 1,
+					success:function(res){
+						let img= res.tempFilePaths;
+						if(img.length + file.length > count){
+							uni.showToast({
+								title: '最多上传'+count+'张图片',
+								icon: 'none',
+								duration: 2000
+							})
+						}else{
+							let imglen = res.tempFilePaths.length;
+							var fuwufile = [];
+							uploadmore('/common/upload',img,0,0,0,imglen,fuwufile,function(rs){
+								var resurl=rs[0];
+								// if(e=='front'){
+								// 	that.datainfo.front=resurl.fileName;
+								// }else{
+								// 	that.datainfo.back=resurl.fileName;
+								// }
+							})	
+						}
+					}
+				});
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>	
+.assignbox{background: #FFFFFF;border-radius: 20rpx;position: fixed;left:140rpx;right:140rpx;z-index: 10;top: 50%;transform: translateY(-50%);padding:32rpx 36rpx 36rpx;
+	.assbox{max-height: calc(100vh - 300rpx);overflow: auto;}
+	.asstit{font-weight: bold;font-size: 30rpx;color: #272727;text-align: center;padding-left: 16rpx;margin-bottom: 28rpx;}
+	// 取消订单
+	&.cancel{padding-bottom: 40rpx;
+		.canceltxt{font-weight: 500;text-align: center;
+font-size: 30rpx;
+color: #272727;}
+		.cantips{font-weight: bold;font-size: 26rpx;color: #272727;
+			text{margin-right: 6rpx;}
+		}
+		.canlists{font-weight: 500;font-size: 26rpx;color: #666666;padding-left: 18px;margin-bottom: 20rpx;
+			image{width: 20rpx;height: 20rpx;margin-right: 16rpx;flex: 0 0 auto;margin-top: 7rpx;}
+		}
+	}
+	
+	// 温馨提示
+	&.atips{min-height: 348rpx;background: linear-gradient(180deg, #E8F2FF 0%, #FFFFFF 65%);padding: 32rpx 28rpx 36rpx;
+border-radius: 10px;}
+	.tiprz{width: 112rpx;height: 130rpx;position: absolute;left: 50%;top: -42rpx;margin-left: -56rpx;}
+	.asstips{padding-top: 40rpx;
+		.tit{font-weight: bold;font-size: 30rpx;color: #272727;margin-bottom: 24rpx;}
+		.txt{font-weight: 500;font-size: 26rpx;color: #272727;margin-bottom: 20rpx;min-height: 72rpx;}
+	}
+	
+	// 上传图片
+	&.pra{}
+	.assadd{display: flex;flex-direction: column;align-items: center;justify-content: center;border-radius: 10rpx;height: 192rpx;
+border: 2rpx dashed #A7A7A7;box-sizing: border-box;margin-bottom: 32rpx;
+		image{width:48rpx;height: 40rpx;margin-bottom: 16rpx;}
+		view{font-weight: bold;font-size: 26rpx;color: #272727;}
+	}
+	.assimgs{display: flex;align-items: center;flex-wrap: wrap;margin-bottom: 8rpx;
+		.assimg{width: 140rpx;height: 140rpx;position: relative;overflow: hidden;margin: 0 24rpx 24rpx 0;
+			&:nth-of-type(3n){margin-right: 0;}
+			.img{width: 100%;height: 100%;}
+			.delimg{width: 24rpx;height: 24rpx;position: absolute;right: 0;top: 0;}
+		}
+	}
+	
+}
+// 二维码
+	.mcode{background-color: transparent;left: 0rpx;right: 0;top: 0;bottom: 0;position: fixed;z-index: 10;box-sizing: border-box;display: flex;flex-direction: column;padding-bottom: 100rpx;align-items: center;overflow: auto;
+		.asstop{margin-bottom: 40rpx;display: flex;flex-direction: column;justify-content: center;
+			width: 566rpx;position: relative;
+			.closes{width: 30rpx;height: 30rpx;margin-bottom: 100rpx;}
+			.codetit{font-weight: bold;font-size: 26rpx;color: #FFFFFF;margin-bottom: 76rpx;text-align: center;}
+			.assbox{background: #FFFFFF;border-radius: 20rpx;padding: 56rpx 88rpx 88rpx;
+				.codes{width: 384rpx;height: 384rpx;}
+			}
+			.mtop{font-weight: bold;font-size: 30rpx;color: #272727;margin-bottom: 68rpx;
+				.head{width: 56rpx;height: 56rpx;margin-right: 32rpx;border-radius: 50%;}
+				.rzimg{width: 64rpx;height: 22rpx;margin-left: 18rpx;}
+			}
+		}
+		
+		.sharebox{flex: 0 0 auto;
+			.shbox{display: flex;flex-direction: column;align-items: center;padding: 0 22rpx;margin: 0 26rpx;
+				image{width: 90rpx;height: 90rpx;}
+				view{font-weight: 500;font-size: 24rpx;color: #DFDFDF;}
+			}
+		}
+	}
+.closeimg{width: 32rpx;height: 32rpx;position: absolute;bottom: -62rpx;left: 50%;margin-left: -16rpx;}
+</style>

+ 235 - 0
staff_ui/components/loading/loading.vue

@@ -0,0 +1,235 @@
+<!-- <template>
+	<view>
+		
+		<view class="loading" v-if="is_loading">
+			
+			<image class="load_img" :src="waimai ? '../../../static/loading/loading2.gif' : '../../static/loading/loading2.gif'" mode=""></image>
+			
+		</view>
+		
+	</view>
+</template> -->
+
+<template>
+	<view class="" v-if="is_loading">
+		<view class="loader">
+				
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: ["waimai"],
+		data() {
+			return {
+				
+			}
+		},
+		methods:{
+			switch_loading(){
+				this.$store.commit("switch_loading")
+			}
+		},
+		//实测直接在标签属性里写  $store.state.XX  拿不到数据  所以这里通过 计算属性去监听一下
+		computed:{
+			is_loading(){
+				return this.$store.state.user.loading
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.loading{position: fixed;top: 0;left: 0;bottom: 0;right: 0;display: flex;align-items: center;justify-content: space-around;z-index: 1001;background: transparent;}
+	.load_img{width: 640rpx;height: 490rpx;}
+	
+	.loader,
+	.loader:before,
+	.loader:after {
+	  -webkit-animation: load1 1s infinite ease-in-out;
+	  animation: load1 1s infinite ease-in-out;
+	  width: 1em;
+	  height: 3em;
+	}
+	.loader {
+	  color: #FF8080;
+	  background: #FF8080;
+	  text-indent: -9999em;
+	  margin: 88px auto;
+	  position: fixed;
+	  font-size: 16upx;
+	  -webkit-transform: translateZ(0);
+	  -ms-transform: translateZ(0);
+	  transform: translateZ(0);
+	  -webkit-animation-delay: -0.16s;
+	  animation-delay: -0.16s;
+	  top: 30%;left: 0;bottom: 0;right: 0;
+	}
+	.loader:before,
+	.loader:after {
+	  position: absolute;
+	  top: 0;
+	  content: '';
+	}
+	.loader:before {
+	  left: -1.5em;
+	  -webkit-animation-delay: -0.32s;
+	  animation-delay: -0.32s;
+	  background: #FF9999;
+	  color: #FF9999;
+	}
+	.loader:after {
+	  left: 1.5em;
+	  background: #FE6666;
+	  color: #FE6666;
+	}
+	@-webkit-keyframes load1 {
+	  0%,
+	  80%,
+	  100% {
+		box-shadow: 0 0;
+		height: 2em;
+	  }
+	  40% {
+		box-shadow: 0 -2em;
+		height: 3em;
+	  }
+	}
+	@keyframes load1 {
+	  0%,
+	  80%,
+	  100% {
+		box-shadow: 0 0;
+		height: 2em;
+	  }
+	  40% {
+		box-shadow: 0 -2em;
+		height: 3em;
+	  }
+	}
+	
+	/* .loader,
+	.loader:before,
+	.loader:after {
+	  border-radius: 50%;
+	  width: 2.5em;
+	  height: 2.5em;
+	  -webkit-animation-fill-mode: both;
+	  animation-fill-mode: both;
+	  -webkit-animation: load7 1.8s infinite ease-in-out;
+	  animation: load7 1.8s infinite ease-in-out;
+	}
+	.loader {
+	  color: #000;
+	  font-size: 10px;
+	  margin: 80px auto;
+	  position: fixed;
+	  text-indent: -9999em;
+	  -webkit-transform: translateZ(0);
+	  -ms-transform: translateZ(0);
+	  transform: translateZ(0);
+	  -webkit-animation-delay: -0.16s;
+	  animation-delay: -0.16s;
+	  top: 30%;left: 0;bottom: 0;right: 0;
+	}
+	.loader:before,
+	.loader:after {
+	  content: '';
+	  position: absolute;
+	  top: 0;
+	}
+	.loader:before {
+	  left: -3.5em;
+	  -webkit-animation-delay: -0.32s;
+	  animation-delay: -0.32s;
+	}
+	.loader:after {
+	  left: 3.5em;
+	}
+	@-webkit-keyframes load7 {
+	  0%,
+	  80%,
+	  100% {
+		box-shadow: 0 2.5em 0 -1.3em;
+	  }
+	  40% {
+		box-shadow: 0 2.5em 0 0;
+	  }
+	}
+	@keyframes load7 {
+	  0%,
+	  80%,
+	  100% {
+		box-shadow: 0 2.5em 0 -1.3em;
+	  }
+	  40% {
+		box-shadow: 0 2.5em 0 0;
+	  }
+	} */
+	
+	/* .loader {
+	  font-size: 10px;
+	  margin: 50px auto;
+	  text-indent: -9999em;
+	  width: 8em;
+	  height: 8em;
+	  border-radius: 50%;
+	  background: transparent ;
+	  background: -moz-linear-gradient(left, #CCCCCC 10%, rgba(255, 255, 255, 0) 42%);
+	  background: -webkit-linear-gradient(left, #CCCCCC 10%, rgba(255, 255, 255, 0) 42%);
+	  background: -o-linear-gradient(left, #CCCCCC 10%, rgba(255, 255, 255, 0) 42%);
+	  background: -ms-linear-gradient(left, #CCCCCC 10%, rgba(255, 255, 255, 0) 42%);
+	  background: linear-gradient(to right, #CCCCCC 10%, rgba(255, 255, 255, 0) 42%);
+	  position: fixed;
+	  top: 30%;left: 0;bottom: 0;right: 0;
+	  -webkit-animation: load3 1.4s infinite linear;
+	  animation: load3 1.4s infinite linear;
+	  -webkit-transform: translateZ(0);
+	  -ms-transform: translateZ(0);
+	  transform: translateZ(0);
+	}
+	.loader:before {
+	  width: 50%;
+	  height: 50%;
+	  background: transparent ;
+	  border-radius: 100% 0 0 0;
+	  position: absolute;
+	  top: 0;
+	  left: 0;
+	  content: '';
+	}
+	.loader:after {
+	  background: #FFFFFF ;
+	  width: 75%;
+	  height: 75%;
+	  border-radius: 50%;
+	  content: '';
+	  margin: auto;
+	  position: absolute;
+	  top: 0;
+	  left: 0;
+	  bottom: 0;
+	  right: 0;
+	}
+	@-webkit-keyframes load3 {
+	  0% {
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+	  }
+	  100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	  }
+	}
+	@keyframes load3 {
+	  0% {
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+	  }
+	  100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	  }
+	} */
+</style>

+ 39 - 0
staff_ui/components/nodata/nodata.vue

@@ -0,0 +1,39 @@
+<template>
+	<view class="nodata" :style="'padding-top:'+padtop+'rpx'">
+		<image :src="noiconpimg"></image>
+		<view>{{notxt}}</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			notxt:{
+				type: String,
+				default () {
+					return '暂无数据'
+				}
+			},
+			padtop:{
+				type: Number,
+				default () {
+					return 100
+				}
+			}
+		},
+		data(){
+			return{
+				noiconpimg:require("@/static/images/noiconp.png"),
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+// 无数据
+.nodata{
+	display: flex;flex-direction: column;align-items: center;box-sizing: border-box;padding-bottom: 100rpx;
+	image{width: 456rpx;height: 178rpx;margin-bottom: 28rpx;}
+	view{font-size: 30rpx;color: #AAAAAA;font-weight: bold;}
+}	
+</style>

+ 101 - 0
staff_ui/hybrid/html/face.html

@@ -0,0 +1,101 @@
+<!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>
+	<style>
+		body{background-color: #ffffff;}
+		.tit{font-size: 14px;text-align: center;padding-top: 100px;}
+	</style>
+	<body>
+		<div id="content">
+			<div class="tit">正在跳转,请稍后~ </div>
+		</div>
+	</body>
+	<script>
+		let _this;
+		var vm = new Vue({
+			el: '#content',
+			data: {
+				metaInfo: '',
+				baseUrl: 'https://rzdbh.qs163.cn/prod-api'
+				// baseUrl: 'http://47.99.82.249:5017/prod-api'
+				// baseUrl: 'http://192.168.101.245:8056'
+			},
+			mounted() {
+				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,
+						expirationDate: item.expirationDate,
+						phonenumber: item.phonenumber,
+						address: item.address,
+						front: item.front,
+						back: item.back,
+						userId: item.userId,
+						metaInfo: this.metaInfo,
+						returnUrl:item.returnUrl,
+					}
+					var baseUrl = this.baseUrl;
+					$.ajax({
+						url: baseUrl + '/ocr/ocrSampleAliYunH',
+						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;
+								var time=setTimeout(function(){
+									window.location.href = certifyUrl
+								},10)
+								
+								// location.href=certifyUrl
+							} else {
+								// that.$message({
+								// 	message: res.msg,
+								// 	type: 'error'
+								// });
+							}
+						}
+					})
+				},
+			}
+		});
+	</script>
+</html>

文件差異過大導致無法顯示
+ 1 - 0
staff_ui/hybrid/html/js/jquery.min.js


文件差異過大導致無法顯示
+ 5 - 0
staff_ui/hybrid/html/js/vue.min.js


文件差異過大導致無法顯示
+ 0 - 0
staff_ui/hybrid/html/js/web-office-sdk-solution-v2.0.6.umd.js


+ 53 - 0
staff_ui/hybrid/html/web-office.html

@@ -0,0 +1,53 @@
+<!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>
+</head>
+<body>
+	<div></div>
+</body>
+<script charset="utf-8" src="js/web-office-sdk-solution-v2.0.6.umd.js"></script>
+<script type="text/javascript">
+	window.onload = function() {
+		let query = getQuery('data')
+		if(!query) {
+			alert('参数不存在')
+			return
+		}
+		query = JSON.parse(query)
+		let wps = WebOfficeSDK.init({
+			appId: 'AK20240724JZQZVF',
+			// appId: 'SX20240516EYFBUA',
+			officeType: query.type,
+			fileId: query.file_id,
+			token: query.token,
+			// customArgs:{
+			// 	handel_type: query.handel_type
+			// }
+		})
+		wps.ApiEvent.AddApiEventListener("fileOpen", (data) => {
+			if (!data.success) {
+				alert('文件打开失败');
+			}
+		});
+		// wps.ApiEvent.AddApiEventListener('DocumentSaveStatus', data => {
+		//   console.log('DocumentSaveStatus: ', data)
+		// })
+		
+		function 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;
+		}
+	}
+</script>
+</html>

+ 18 - 0
staff_ui/main.js

@@ -5,6 +5,23 @@ import plugins from './plugins' // plugins
 import './permission' // permission
 Vue.use(plugins)
 import {toast} from "@/utils/common.js"
+/** 
+ * 引用全局加载 loading
+ * */
+import loading from "./components/loading/loading.vue"
+Vue.component('loading',loading);
+//是否显示加载中 的方法 调用store中的mutations方法
+function loadings(tf){
+    /* if(tf){
+        store.commit("switch_loading",tf)
+    }else{
+        store.commit("switch_loading")
+    } */
+	store.commit("switch_loading",tf);
+}
+//也挂在到原型链上 方便在每个页面中  使用 this.$loading()  去显示加载中
+Vue.prototype.$loading = loadings;
+
 
 Vue.config.productionTip = false
 Vue.prototype.$store = store
@@ -16,3 +33,4 @@ const app = new Vue({
 })
 
 app.$mount()
+export default app

+ 16 - 0
staff_ui/manifest.json

@@ -37,6 +37,22 @@
             },
             "ios" : {},
             "sdkConfigs" : {}
+        },
+        "nativePlugins" : {
+            "AP-FaceDetectModule" : {
+                "__plugin_info__" : {
+                    "name" : "APFaceDetectPlugin",
+                    "description" : "阿里云金融级实人认证SDK",
+                    "platforms" : "Android,iOS",
+                    "url" : "",
+                    "android_package_name" : "",
+                    "ios_bundle_id" : "",
+                    "isCloud" : false,
+                    "bought" : -1,
+                    "pid" : "",
+                    "parameters" : {}
+                }
+            }
         }
     },
     "quickapp" : {},

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/APSecuritySDK-DeepSec-7.0.1.20220813.jiagu.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/Android-AliyunFaceGuard-10038.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-base-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-facade-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-face-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-faceaudio-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-facelanguage-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-nfc-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-ocr-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-photinus-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/aliyun-wishverify-2.2.8.1-20230721163000.aar


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/android/uniplugin_module-release.aar


+ 68 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/en.strings

@@ -0,0 +1,68 @@
+/* 
+  en.strings
+  APBToygerFacade
+
+  Created by shouyi.www on 2017/6/1.
+  Copyright © 2017年 DTF. All rights reserved.
+*/
+
+"APBToygerFacade:取消"="Cancel";
+"APBToygerFacade:再试一次"="Try Again";
+"APBToygerFacade:退出"="Quit";
+"APBToygerFacade:确定"="OK";
+"APBToygerFacade:继续"="Continue";
+"APBToygerFacade:我知道了"="Got it";
+"APBToygerFacade:其他登录方式"="Another login method";
+"APBToygerFacade:刷脸失败"="Face scan failed";
+"APBToygerFacade:当前设备不支持刷脸"="Face scan not supported on your device";
+"APBToygerFacade:当前系统不支持刷脸"="Face scan not supported on your device system";
+"APBToygerFacade:无法启动相机"="No camera permission";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="Please allow to access your camera in \"Settings\"-\"Privacy\"-\"Camera\"";
+"APBToygerFacade:立即开启"="OK";
+"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Face scan is only available on iOS8 or above";
+"APBToygerFacade:系统错误"="System error";
+"APBToygerFacade:确定退出吗?"="Are you sure to quit face scan?";
+"APBToygerFacade:露个脸就能通过"="You can succeed by simply showing your face";
+"APBToygerFacade:操作超时"="Time out";
+"APBToygerFacade:正对手机,更容易成功"="Face straight at the phone and ensure you have enough light";
+"APBToygerFacade:提示:正对手机,更容易成功"="Face straight at the phone and ensure you have enough light";
+"APBToygerFacade:本次操作失败"="Sorry, face scan failed";
+"APBToygerFacade:网络不给力"="Network connection failed";
+"APBToygerFacade:登录中断"="Login interrupted";
+"APBToygerFacade:验证中断"="Face scan interrupted";
+
+
+"APBToygerFacade:刷脸验证"="Face Scan";
+"APBToygerFacade:请把脸放入框内保持不动"="Put your face into the frame";
+"APBToygerFacade:靠近一点"="Move closer";
+"APBToygerFacade:没有检测到脸"="No face";
+"APBToygerFacade:再清晰一点"="Face not clear";
+"APBToygerFacade:脸部亮一点"="More light";
+"APBToygerFacade:请正对手机"="No face";
+"APBToygerFacade:把脸移入圈内"="No face";
+"APBToygerFacade:离远一点"="Move farther";
+"APBToygerFacade:请保持不动"="Stay still";
+"APBToygerFacade:请注视屏幕"="Open your eyes";
+"APBToygerFacade:眨眨眼"="Blink";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="Use a different verification method";
+"APBToygerFacade:拿起手机眨眨眼"="Blink";
+"APBToygerFacade:拿起手机向左摇头"="Turn Head Left";
+"APBToygerFacade:拿起手机向右摇头"="Turn Head Right";
+"APBToygerFacade:向左摇头"="Turn Head Left";
+"APBToygerFacade:向右摇头"="Turn Head Right";
+
+
+"APBToygerFacade:正在处理"="Processing";
+"APBToygerFacade:首次使用,请开通刷脸"="For the first time use, please enable Face Scan";
+"APBToygerFacade:立即开通"="Enable";
+"APBToygerFacade:下次再说"="Later";
+
+"APBToygerFacade:请把手机正对面部"="Face straight at the phone";
+"APBToygerFacade:即将开始人脸检测"="Get ready for face recognition";
+
+"APBToygerFacade:没有认出你"="Face scan failed";
+"APBToygerFacade:未能识别人脸"="Face not detected";
+"APBToygerFacade:人脸检测中"="Face Scan";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="Too many failed attempts, please try again later";

+ 59 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/id.strings

@@ -0,0 +1,59 @@
+"APBToygerFacade:取消"="Batalkan";
+"APBToygerFacade:再试一次"="Harap coba lagi";
+"APBToygerFacade:退出"="Keluar";
+"APBToygerFacade:确定"="OK";
+"APBToygerFacade:继续"="Lanjutkan";
+"APBToygerFacade:我知道了"="OK";
+"APBToygerFacade:其他登录方式"="Ubah Metode Logon";
+"APBToygerFacade:刷脸失败"="Pengenalan wajah gagal";
+"APBToygerFacade:当前设备不支持刷脸"="Perangkat Anda tidak mendukung pengenalan wajah";
+"APBToygerFacade:当前系统不支持刷脸"="Sistem saat ini tidak mendukung pengenalan wajah";
+"APBToygerFacade:无法启动相机"="Tidak Memiliki Izin Akses Kamera";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="Buka Pengaturan > Privasi > Kamera dan izinkan akses";
+"APBToygerFacade:立即开启"="OK";
+"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Hanya iOS 7 dan setelahnya yang mendukung pengenalan wajah";
+"APBToygerFacade:系统错误"="Terjadi Kesalahan Sistem";
+"APBToygerFacade:确定退出吗?"="Apakah Anda yakin ingin keluar?";
+"APBToygerFacade:露个脸就能通过"="Anda hanya perlu memperlihatkan wajah Anda";
+"APBToygerFacade:操作超时"="Waktu operasi habis";
+"APBToygerFacade:正对手机,更容易成功"="Arahkan wajah lurus menghadap ponsel untuk membuat wajah Anda lebih mudah dipindai";
+"APBToygerFacade:本次操作失败"="Operasi gagal";
+"APBToygerFacade:网络不给力"="Kondisi jaringan tidak memenuhi persyaratan";
+"APBToygerFacade:登录中断"="Logon Terganggu";
+"APBToygerFacade:验证中断"="Verifikasi terputus";
+
+
+"APBToygerFacade:刷脸验证"="Verifikasi dengan Pengenalan Wajah";
+"APBToygerFacade:请把脸放入框内保持不动"="Posisikan wajah Anda di dalam bingkai dan jangan bergerak";
+"APBToygerFacade:靠近一点"="Harap dekatkan wajah";
+"APBToygerFacade:没有检测到脸"="Tidak ada wajah terdeteksi";
+"APBToygerFacade:再清晰一点"="Perjelas wajah Anda";
+"APBToygerFacade:脸部亮一点"="Terangi wajah Anda";
+"APBToygerFacade:请正对手机"="Arahkan wajah lurus menghadap ponsel";
+"APBToygerFacade:请露出正脸"="Tunjukkan bagian depan wajah Anda";
+"APBToygerFacade:把脸移入圈内"="Posisikan wajah pada lingkaran";
+"APBToygerFacade:离远一点"="Harap jauhkan wajah";
+"APBToygerFacade:请保持不动"="Tetap tenang";
+"APBToygerFacade:请注视屏幕"="Lihat layar";
+"APBToygerFacade:眨眨眼"="Harap kedipkan mata";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="Ubah Metode Verifikasi";
+"APBToygerFacade:拿起手机眨眨眼"="Harap kedipkan mata";
+"APBToygerFacade:拿起手机向左摇头"="Harap menoleh ke kiri";
+"APBToygerFacade:拿起手机向右摇头"="Harap menoleh ke kanan";
+"APBToygerFacade:向左摇头"="Harap menoleh ke kiri";
+"APBToygerFacade:向右摇头"="Harap menoleh ke kanan";
+
+"APBToygerFacade:正在处理"="Memproses";
+"APBToygerFacade:首次使用,请开通刷脸"="Aktifkan pengenalan wajah untuk melanjutkan";
+"APBToygerFacade:立即开通"="Aktifkan";
+"APBToygerFacade:下次再说"="Lain Kali";
+
+"APBToygerFacade:请把手机正对面部"="Arahkan wajah lurus menghadap ponsel";
+"APBToygerFacade:即将开始人脸检测"="Memulai pengenalan wajah";
+
+"APBToygerFacade:没有认出你"="Pengenalan wajah gagal";
+"APBToygerFacade:未能识别人脸"="Tidak ada wajah terdeteksi";
+"APBToygerFacade:人脸检测中"="Pengenalan wajah dalam proses";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="Pengenalan wajah terlalu sering dilakukan. Harap coba lagi nanti";

+ 59 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/ja.strings

@@ -0,0 +1,59 @@
+"APBToygerFacade:取消"="キャンセル";
+"APBToygerFacade:再试一次"="もう一度お試しください";
+"APBToygerFacade:退出"="終了";
+"APBToygerFacade:确定"="OK";
+"APBToygerFacade:继续"="続行";
+"APBToygerFacade:我知道了"="OK";
+"APBToygerFacade:其他登录方式"="ログイン方法を切り替え";
+"APBToygerFacade:刷脸失败"="顔を認識できませんでした";
+"APBToygerFacade:当前设备不支持刷脸"="お使いのデバイスは顔認識をサポートしていません";
+"APBToygerFacade:当前系统不支持刷脸"="顔認識をサポートしていないシステムです";
+"APBToygerFacade:无法启动相机"="カメラにアクセスできません";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="[設定] > [プライバシー] > [カメラ] に移動し、アクセスを許可してください";
+"APBToygerFacade:立即开启"="OK";
+"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="顔認識は iOS 7 以降でサポートされています";
+"APBToygerFacade:系统错误"="システムエラー";
+"APBToygerFacade:确定退出吗?"="終了してもよろしいですか";
+"APBToygerFacade:露个脸就能通过"="顔を見せるだけです";
+"APBToygerFacade:操作超时"="操作がタイムアウトしました";
+"APBToygerFacade:正对手机,更容易成功"="顔をスキャンしやすいように、電話の方を向いてください";
+"APBToygerFacade:本次操作失败"="操作に失敗しました";
+"APBToygerFacade:网络不给力"="ネットワークの状態が要件を満たしていません";
+"APBToygerFacade:登录中断"="ログインが中断されました";
+"APBToygerFacade:验证中断"="検証が中断されました";
+
+
+"APBToygerFacade:刷脸验证"="顔認識による検証";
+"APBToygerFacade:请把脸放入框内保持不动"="フレームの内側に顔が入るようにして、動かないでください";
+"APBToygerFacade:靠近一点"="近づいてください";
+"APBToygerFacade:没有检测到脸"="顔が検出されません";
+"APBToygerFacade:再清晰一点"="顔をはっきりさせてください";
+"APBToygerFacade:脸部亮一点"="顔を明るくしてください";
+"APBToygerFacade:请正对手机"="電話の方を向いてください";
+"APBToygerFacade:请露出正脸"="顔の正面を見せてください";
+"APBToygerFacade:把脸移入圈内"="顔を円の中に入れてください";
+"APBToygerFacade:离远一点"="離れてください";
+"APBToygerFacade:请保持不动"="動かないでください";
+"APBToygerFacade:请注视屏幕"="画面を見てください";
+"APBToygerFacade:眨眨眼"="まばたきしてください";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="検証方法を変更";
+"APBToygerFacade:拿起手机眨眨眼"="まばたきしてください";
+"APBToygerFacade:拿起手机向左摇头"="頭を左に";
+"APBToygerFacade:拿起手机向右摇头"="頭を右に";
+"APBToygerFacade:向左摇头"="頭を左に";
+"APBToygerFacade:向右摇头"="頭を右に";
+
+"APBToygerFacade:正在处理"="処理中";
+"APBToygerFacade:首次使用,请开通刷脸"="顔認識を有効化して続行します";
+"APBToygerFacade:立即开通"="有効化";
+"APBToygerFacade:下次再说"="後で";
+
+"APBToygerFacade:请把手机正对面部"="電話の方を向いてください";
+"APBToygerFacade:即将开始人脸检测"="顔認識を開始";
+
+"APBToygerFacade:没有认出你"="顔を認識できませんでした";
+"APBToygerFacade:未能识别人脸"="顔が検出されません";
+"APBToygerFacade:人脸检测中"="顔を認識中です";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="顔認識が頻繁に実行されています。後でもう一度やり直してください";

+ 59 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/ko.strings

@@ -0,0 +1,59 @@
+"APBToygerFacade:取消"="취소";
+"APBToygerFacade:再试一次"="다시 시도하세요";
+"APBToygerFacade:退出"="종료";
+"APBToygerFacade:确定"="확인";
+"APBToygerFacade:继续"="계속";
+"APBToygerFacade:我知道了"="확인";
+"APBToygerFacade:其他登录方式"="로그온 방법 전환";
+"APBToygerFacade:刷脸失败"="안면 인식에 실패했습니다";
+"APBToygerFacade:当前设备不支持刷脸"="귀하의 디바이스는 안면 인식을 지원하지 않습니다";
+"APBToygerFacade:当前系统不支持刷脸"="현재 시스템은 안면 인식을 지원하지 않습니다";
+"APBToygerFacade:无法启动相机"="카메라 권한이 없습니다";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="설정 > 개인 > 카메라에서 접근 권한을 부여하십시오";
+"APBToygerFacade:立即开启"="OK";
+"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="iOS 7 및 그 이상의 버전에서만 안면 인식이 지원됩니다";
+"APBToygerFacade:系统错误"="시스템 오류";
+"APBToygerFacade:确定退出吗?"="정말로 종료하시겠습니까?";
+"APBToygerFacade:露个脸就能通过"="얼굴만 보여주시면 됩니다";
+"APBToygerFacade:操作超时"="작업 시간이 초과되었습니다";
+"APBToygerFacade:正对手机,更容易成功"="얼굴을 더 쉽게 스캔할 수 있도록 휴대전화를 정면으로 바라보세요";
+"APBToygerFacade:本次操作失败"="작동에 실패했습니다";
+"APBToygerFacade:网络不给力"="네트워크 상태가 요구 사항을 충족하지 않습니다";
+"APBToygerFacade:登录中断"="로그온이 중단되었습니다";
+"APBToygerFacade:验证中断"="확인이 중단되었습니다";
+
+
+"APBToygerFacade:刷脸验证"="안면 인식을 통한 인증";
+"APBToygerFacade:请把脸放入框内保持不动"="얼굴이 프레임 안으로 들어오도록 위치한 다음 움직이지 말고 가만히 계십시오";
+"APBToygerFacade:靠近一点"="더 가까이 움직이세요";
+"APBToygerFacade:没有检测到脸"="감지된 얼굴이 없습니다";
+"APBToygerFacade:再清晰一点"="얼굴을 좀더 선명하게 만드세요";
+"APBToygerFacade:脸部亮一点"="얼굴을 밝게 만드세요";
+"APBToygerFacade:请正对手机"="휴대전화를 정면으로 바라보세요";
+"APBToygerFacade:请露出正脸"="얼굴의 정면을 보여주세요";
+"APBToygerFacade:把脸移入圈内"="얼굴이 원 안에 들어오도록 움직이세요";
+"APBToygerFacade:离远一点"="더 멀리 움직이세요";
+"APBToygerFacade:请保持不动"="가만히 계십시오";
+"APBToygerFacade:请注视屏幕"="화면을 바라보세요";
+"APBToygerFacade:眨眨眼"="눈을 깜빡이세요";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="인증 방법을 변경합니다";
+"APBToygerFacade:拿起手机眨眨眼"="눈을 깜빡이세요";
+"APBToygerFacade:拿起手机向左摇头"="좌측으로 고개를 돌립니다";
+"APBToygerFacade:拿起手机向右摇头"="우측으로 고개를 돌립니다";
+"APBToygerFacade:向左摇头"="좌측으로 고개를 돌립니다";
+"APBToygerFacade:向右摇头"="우측으로 고개를 돌립니다";
+
+"APBToygerFacade:正在处理"="처리 중";
+"APBToygerFacade:首次使用,请开通刷脸"="안면 인식을 활성화하여 계속 진행합니다";
+"APBToygerFacade:立即开通"="활성화하기";
+"APBToygerFacade:下次再说"="나중에 하기";
+
+"APBToygerFacade:请把手机正对面部"="휴대전화를 정면으로 바라보세요";
+"APBToygerFacade:即将开始人脸检测"="안면 인식 시작";
+
+"APBToygerFacade:没有认出你"="안면 인식에 실패했습니다";
+"APBToygerFacade:未能识别人脸"="감지된 얼굴이 없습니다";
+"APBToygerFacade:人脸检测中"="얼굴 인식 중";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="안면 인식이 연속으로 실행되었습니다. 나중에 다시 시도하세요";

+ 68 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/zh-HK.strings

@@ -0,0 +1,68 @@
+/* 
+  zh-HK.strings
+  APBToygerFacade
+
+  Created by shouyi.www on 2017/6/1.
+  Copyright © 2017年 DTF. All rights reserved.
+*/
+
+
+"APBToygerFacade:取消"="取消";
+"APBToygerFacade:再试一次"="再試一次";
+"APBToygerFacade:退出"="退出";
+"APBToygerFacade:确定"="確定";
+"APBToygerFacade:继续"="继续";
+"APBToygerFacade:我知道了"="我知道了";
+"APBToygerFacade:其他登录方式"="其他登录方式";
+"APBToygerFacade:刷脸失败"="刷臉失敗";
+"APBToygerFacade:当前设备不支持刷脸"="目前系統不支援刷臉";
+"APBToygerFacade:当前系统不支持刷脸"="目前設備不支援刷臉";
+"APBToygerFacade:无法启动相机"="無法啟動相機";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="請到“設置-隱私-相機”開啓權限";
+"APBToygerFacade:立即开启"="開通權限";
+"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="刷脸仅在iOS7及以上系统可用";
+"APBToygerFacade:系统错误"="系統錯誤";
+"APBToygerFacade:确定退出吗?"="確定退出嗎?";
+"APBToygerFacade:露个脸就能通过"="露個臉就能通過";
+"APBToygerFacade:操作超时"="操作超時";
+"APBToygerFacade:正对手机,更容易成功"="對準手機,更容易成功";
+"APBToygerFacade:本次操作失败"="本次操作失敗";
+"APBToygerFacade:网络不给力"="網絡異常,請稍後再試";
+"APBToygerFacade:登录中断"="登入中斷";
+"APBToygerFacade:验证中断"="驗證中斷";
+
+
+"APBToygerFacade:刷脸验证"="刷臉驗證";
+"APBToygerFacade:请把脸放入框内保持不动"="請把臉移入圈內保持不動";
+"APBToygerFacade:靠近一点"="靠近一點";
+"APBToygerFacade:没有检测到脸"="沒有檢測到臉";
+"APBToygerFacade:再清晰一点"="再清晰一點";
+"APBToygerFacade:脸部亮一点"="光線再亮點";
+"APBToygerFacade:请正对手机"="請正視手機";
+"APBToygerFacade:请露出正脸"="請露出正臉";
+"APBToygerFacade:把脸移入圈内"="把臉移入框內";
+"APBToygerFacade:离远一点"="離遠一點";
+"APBToygerFacade:请保持不动"="請保持不動";
+"APBToygerFacade:请注视屏幕"="請注視屏幕";
+"APBToygerFacade:眨眨眼"="眨眨眼";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="選擇其他驗證方式";
+"APBToygerFacade:拿起手机眨眨眼"="拿起手機,眨眨眼";
+"APBToygerFacade:拿起手机向左摇头"="拿著手機,向左搖頭";
+"APBToygerFacade:拿起手机向右摇头"="拿著手機,向右搖頭";
+"APBToygerFacade:向左摇头"="向左搖頭";
+"APBToygerFacade:向右摇头"="向右搖頭";
+
+"APBToygerFacade:正在处理"="正在處理";
+"APBToygerFacade:首次使用,请开通刷脸"="首次使用,請開通刷臉";
+"APBToygerFacade:立即开通"="立即開通";
+"APBToygerFacade:下次再说"="下次再說";
+
+"APBToygerFacade:请把手机正对面部"="請把手機正對面部";
+"APBToygerFacade:即将开始人脸检测"="即將開始人臉檢測";
+
+"APBToygerFacade:没有认出你"="沒有認出你";
+"APBToygerFacade:未能识别人脸"="未能識別人臉";
+"APBToygerFacade:人脸检测中"="人臉檢測中";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="刷臉失敗次數過多,請稍後再試";

+ 68 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/zh-Hans.strings

@@ -0,0 +1,68 @@
+/* 
+  zh-Hans.strings
+  APBToygerFacade
+
+  Created by shouyi.www on 2017/6/1.
+  Copyright © 2017年 DTF. All rights reserved.
+*/
+
+
+"APBToygerFacade:取消"="取消";
+"APBToygerFacade:再试一次"="再试一次";
+"APBToygerFacade:退出"="退出";
+"APBToygerFacade:确定"="确定";
+"APBToygerFacade:继续"="继续";
+"APBToygerFacade:我知道了"="我知道了";
+"APBToygerFacade:其他登录方式"="其他登录方式";
+"APBToygerFacade:刷脸失败"="刷脸失败";
+"APBToygerFacade:当前设备不支持刷脸"="当前设备不支持刷脸";
+"APBToygerFacade:当前系统不支持刷脸"="当前系统不支持刷脸";
+"APBToygerFacade:无法启动相机"="无法启动相机";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="请到“设置-隐私-相机”开启权限";
+"APBToygerFacade:立即开启"="立即开启";
+"APBToygerFacade:刷脸仅在iOS8及以上版本可用"="刷脸仅在iOS8及以上版本可用";
+"APBToygerFacade:系统错误"="系统错误";
+"APBToygerFacade:确定退出吗?"="确定退出吗?";
+"APBToygerFacade:露个脸就能通过"="露个脸就能通过";
+"APBToygerFacade:操作超时"="操作超时";
+"APBToygerFacade:正对手机,更容易成功"="正对手机,更容易成功";
+"APBToygerFacade:本次操作失败"="本次操作失败";
+"APBToygerFacade:网络不给力"="网络不给力";
+"APBToygerFacade:登录中断"="登录中断";
+"APBToygerFacade:验证中断"="验证中断";
+
+
+"APBToygerFacade:刷脸验证"="刷脸验证";
+"APBToygerFacade:请把脸放入框内保持不动"="请把脸移入圈内保持不动";
+"APBToygerFacade:靠近一点"="靠近一点";
+"APBToygerFacade:没有检测到脸"="没有检测到脸";
+"APBToygerFacade:再清晰一点"="再清晰一点";
+"APBToygerFacade:脸部亮一点"="脸部亮一点";
+"APBToygerFacade:请正对手机"="请正对手机";
+"APBToygerFacade:请露出正脸"="请露出正脸";
+"APBToygerFacade:把脸移入圈内"="把脸移入圈内";
+"APBToygerFacade:离远一点"="离远一点";
+"APBToygerFacade:请保持不动"="请保持不动";
+"APBToygerFacade:请注视屏幕"="请注视屏幕";
+"APBToygerFacade:眨眨眼"="眨眨眼";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="选择其他验证方式";
+"APBToygerFacade:拿起手机眨眨眼"="拿起手机,眨眨眼";
+"APBToygerFacade:拿起手机向左摇头"="拿起手机,向左摇头";
+"APBToygerFacade:拿起手机向右摇头"="拿起手机,向右摇头";
+"APBToygerFacade:向左摇头"="向左摇头";
+"APBToygerFacade:向右摇头"="向右摇头";
+
+"APBToygerFacade:正在处理"="正在处理";
+"APBToygerFacade:首次使用,请开通刷脸"="首次使用,请开通刷脸";
+"APBToygerFacade:立即开通"="立即开通";
+"APBToygerFacade:下次再说"="下次再说";
+
+"APBToygerFacade:请把手机正对面部"="请把手机正对面部";
+"APBToygerFacade:即将开始人脸检测"="即将开始人脸检测";
+
+"APBToygerFacade:没有认出你"="没有认出你";
+"APBToygerFacade:未能识别人脸"="未能识别人脸";
+"APBToygerFacade:人脸检测中"="人脸检测中";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="刷脸失败次数过多,请稍后再试";

+ 68 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.bundle/zh-Hant.strings

@@ -0,0 +1,68 @@
+/* 
+  zh-Hant.strings
+  APBToygerFacade
+
+  Created by shouyi.www on 2017/6/1.
+  Copyright © 2017年 DTF. All rights reserved.
+*/
+
+
+"APBToygerFacade:取消"="取消";
+"APBToygerFacade:再试一次"="再試一次";
+"APBToygerFacade:退出"="退出";
+"APBToygerFacade:确定"="確定";
+"APBToygerFacade:继续"="繼續";
+"APBToygerFacade:我知道了"="我知道了";
+"APBToygerFacade:其他登录方式"="其他登入方式";
+"APBToygerFacade:刷脸失败"="刷臉失敗";
+"APBToygerFacade:当前设备不支持刷脸"="目前設備不支援刷臉服務";
+"APBToygerFacade:当前系统不支持刷脸"="当前系统不支持刷脸";
+"APBToygerFacade:无法启动相机"="無法啟動相機";
+"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="請到“設置-隱私-相機”開啓權限";
+"APBToygerFacade:立即开启"="開通權限";
+"APBToygerFacade:刷脸仅在iOS8及以上系统可用"="刷脸仅在iOS8及以上系统可用";
+"APBToygerFacade:系统错误"="系統錯誤";
+"APBToygerFacade:确定退出吗?"="確定退出嗎?";
+"APBToygerFacade:露个脸就能通过"="露個臉就能通過";
+"APBToygerFacade:操作超时"="操作超時";
+"APBToygerFacade:正对手机,更容易成功"="對準手機,更容易成功";
+"APBToygerFacade:本次操作失败"="本次操作失敗";
+"APBToygerFacade:网络不给力"="網絡異常,請稍後再試";
+"APBToygerFacade:登录中断"="登入中斷";
+"APBToygerFacade:验证中断"="驗證中斷";
+
+
+"APBToygerFacade:刷脸验证"="刷臉驗證";
+"APBToygerFacade:请把脸放入框内保持不动"="請把臉移入圈內保持不動";
+"APBToygerFacade:靠近一点"="靠近一點";
+"APBToygerFacade:没有检测到脸"="沒有檢測到臉";
+"APBToygerFacade:再清晰一点"="再清晰一點";
+"APBToygerFacade:脸部亮一点"="光線再亮點";
+"APBToygerFacade:请正对手机"="請正視手機";
+"APBToygerFacade:请露出正脸"="請露出正臉";
+"APBToygerFacade:把脸移入圈内"="把臉移入框內";
+"APBToygerFacade:离远一点"="離遠一點";
+"APBToygerFacade:请保持不动"="請保持不動";
+"APBToygerFacade:请注视屏幕"="請注視屏幕";
+"APBToygerFacade:眨眨眼"="眨眨眼";
+"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
+
+"APBToygerFacade:选择其他验证方式"="選擇其他驗證方式";
+"APBToygerFacade:拿起手机眨眨眼"="拿起手機,眨眨眼";
+"APBToygerFacade:拿起手机向左摇头"="拿起手機,向左搖頭";
+"APBToygerFacade:拿起手机向右摇头"="拿起手機,向右搖頭";
+"APBToygerFacade:向左摇头"="向左搖頭";
+"APBToygerFacade:向右摇头"="向右搖頭";
+
+"APBToygerFacade:正在处理"="正在處理";
+"APBToygerFacade:首次使用,请开通刷脸"="首次使用,請開通刷臉";
+"APBToygerFacade:立即开通"="立即開通";
+"APBToygerFacade:下次再说"="下次再說";
+
+"APBToygerFacade:请把手机正对面部"="請把手機正對面部";
+"APBToygerFacade:即将开始人脸检测"="即將開始人臉檢測";
+
+"APBToygerFacade:没有认出你"="沒有認出你";
+"APBToygerFacade:未能识别人脸"="未能識別人臉";
+"APBToygerFacade:人脸检测中"="人臉檢測中";
+"APBToygerFacade:刷脸失败次数过多,请稍后再试"="刷臉失敗次數過多,請稍後再試";

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/APBToygerFacade


+ 76 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerBaseTask.h

@@ -0,0 +1,76 @@
+//
+//  APFBaseTask.h
+//  APFaceDetectBiz
+//
+//  Created by 晗羽 on 8/25/16.
+//  Copyright © 2016 DTF. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <Foundation/Foundation.h>
+#import <BioAuthEngine/IBioAuthTask.h>
+#import <BioAuthEngine/APBTaskContext.h>
+#import <BioAuthEngine/APBLogger.h>
+#import <BioAuthEngine/AFEAlertView.h>
+#import <APBToygerFacade/APBToygerUtils.h>
+#import <BioAuthEngine/APBToygerRemoteConfig.h>
+#import <BioAuthEngine/APBToygerBehavlogManager.h>
+//#import "APBToygerDataCenter.h"
+#import <BioAuthEngine/BioAuthCommonSetting.h>
+#import <APBToygerFacade/APBToygerViewController.h>
+
+@class DTFLogMonitor,APBToygerDataCenter;
+
+typedef void (^APFAlertExtraAction)();
+
+@interface APBToygerBaseTask : NSObject <IBioAuthTask>
+
+//协议定义的属性
+@property(nonatomic, copy)NSString *taskName;                           //任务名
+@property(nonatomic, strong)APBTaskContext *context;                    //任务数据
+@property(nonatomic, weak)NSMutableDictionary *pipeInfo;              //共享数据
+//公用属性
+@property(nonatomic, weak)UIViewController *parentViewController;       //父viewController
+@property(nonatomic, weak)APBToygerViewController *currentViewController;      //当前viewController
+@property(nonatomic, weak)UIView *currentView;                          //当前显示的界面
+@property(nonatomic, copy)commandBlock bioCommandBlock;                 //对框架进行操作的block
+@property(nonatomic, strong)APBToygerRemoteConfig * bisConfig;                //bis下放的配置参数
+@property(nonatomic, strong)APBToygerDataCenter * dataCenter;                 //行为日志
+@property(nonatomic, copy)NSString *bisToken;                         //bisToken
+@property(nonatomic, assign)NSInteger currentRetryCnt;                  //当前重试次数
+@property(nonatomic, assign)BOOL soundStatus;                           //当前声音状态
+//@property(nonatomic, assign)BOOL isLoginMode;                           //当前场景是否为登录场景
+@property(nonatomic, assign)BOOL isMYBank;                              //是否是网商银行
+@property(nonatomic, strong)DTFLogMonitor *monitor;                        //埋点
+
+- (void)exitWithResult:(APBResultType)result failReason:(NSString *)failReason retCodeSub:(NSString *)retCodeSub retMessageSub:(NSString *)retMessageSub;
+
+- (void)eventQuitWithCompletionCallback:(BioAuthExecCallback)callback;
+/**
+ *  用户选择重试
+ */
+- (void)handleRetryActionWithScene:(NSString *)scene
+                       buttonTitle:(NSString *)title
+                         extAction:(APFAlertExtraAction)action;
+
+/**
+ *  用户选择退出
+ */
+- (void)handleExitActionWithScene:(NSString *)scene
+                      buttonTitle:(NSString *)title
+                       exitReason:(APBResultType)reason
+                        extAction:(APFAlertExtraAction)action;
+
+/**
+ *  用户选择继续
+ */
+- (void)handleContinueActionWithScene:(NSString *)scene
+                          buttonTitle:(NSString *)title
+                            extaction:(APFAlertExtraAction)action;
+
+/**
+ *  消除VC的方式,加菲和樱桃不同
+ */
+- (void)dismissViewControllerAnimated: (BOOL)flag completion:(void (^ __nullable)(void))completion;
+
+@end

+ 19 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerCherryDetectTask.h

@@ -0,0 +1,19 @@
+//
+//  APFCherryDetectTask.h
+//  APBToygerFacade
+//
+//  Created by richard on 01/02/2018.
+//  Copyright © 2018 DTF. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <BioAuthEngine/AFEStatusBar.h>
+#import <APBToygerFacade/APBToygerBaseTask.h>
+#import <BioAuthEngine/BioAuthEngine.h>
+#import <DTFUtility/CameraService.h>
+
+@interface APBToygerCherryDetectTask : APBToygerBaseTask <DTFCameraServiceDelegate, DTFFaceViewDelegate>
+
+@property(nonatomic, assign)BOOL photinusFlags;
+
+@end

+ 26 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerCherryUploadTask.h

@@ -0,0 +1,26 @@
+//
+//  APFCherryUploadTask.h
+//  APFaceDetectBiz
+//
+//  Created by yukun.tyk on 28/11/2016.
+//  Copyright © 2016 DTF. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <APBToygerFacade/APBToygerUploadTask.h>
+#import <BioAuthEngine/APBToygerDataCenter.h>
+
+typedef NS_ENUM(NSInteger, APBToygerRemoteCommand)
+{
+    APBToyger_REMOTE_COMMAND_PASS =           1001,   //比对通过
+    APBToyger_REMOTE_COMMAND_CONTINUE =       1002,   //需要继续采集
+    APBToyger_REMOTE_COMMAND_FAIL =           2001,   //比对失败
+    APBToyger_REMOTE_COMMAND_RETRY =          2002,   //需要重试
+};
+
+
+@interface APBToygerCherryUploadTask : APBToygerUploadTask <APBToygerDataCenterDelegate>
+
+- (APBToygerRemoteCommand)remoteCommandFromString:(NSString *)code;
+
+@end

+ 36 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerFacade.h

@@ -0,0 +1,36 @@
+//
+//  APFaceFacade.h
+//  APFaceDetectBiz
+//
+//  Created by 晗羽 on 8/25/16.
+//  Copyright © 2016 DTF. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <BioAuthEngine/IBioAuthFactor.h>
+
+@interface APBToygerFacade : NSObject <IBioAuthFactor>
+
++(void)setTokenid:(NSString*)info;
++(NSString*)getTokenid;
+
+@end
+
+#import <APBToygerFacade/APBToygerCherryDetectTask.h>
+#import <APBToygerFacade/APBToygerBaseTask.h>
+#import <APBToygerFacade/APBToygerPresentTask.h>
+#import <APBToygerFacade/APBToygerCherryUploadTask.h>
+#import <APBToygerFacade/APBToygerUtils.h>
+#import <APBToygerFacade/APBToygerUploadTask.h>
+#import <APBToygerFacade/APBToygerFacadeDefine.h>
+#import <BioAuthEngine/APBToygerRemoteConfig.h>
+#import <BioAuthEngine/APBToygerBehavlogManager.h>
+#import <BioAuthEngine/APBToygerDataCenter.h>
+#import <APBToygerFacade/APBToygerViewController.h>
+#import <UIKit/UIKit.h>
+
+//! Project version number for APBToygerFacade.
+FOUNDATION_EXPORT double APBToygerFacadeVersionNumber;
+
+//! Project version string for APBToygerFacade.
+FOUNDATION_EXPORT const unsigned char APBToygerFacadeVersionString[];

+ 130 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerFacadeDefine.h

@@ -0,0 +1,130 @@
+//
+//  APFCherryDefine.h
+//  APBToygerFacade
+//
+//  Created by shouyi.www on 27/02/2017.
+//  Copyright © 2017 DTF. All rights reserved.
+//
+
+#ifndef APBToygerFacadeDefine_h
+#define APBToygerFacadeDefine_h
+
+
+static float normalized_distance(float current_value, float best_value, float range) {
+    return fabsf((current_value - best_value) / range);
+}
+
+//typedef struct toyger_status_evaluator_t {
+//    float pitch;
+//    float yaw;
+//    float width;
+//
+//    float best_pitch;
+//    float best_yaw;
+//    float best_width;
+//    float pitch_range;
+//    float yaw_range;
+//    float width_range;
+//    float pitch_weight;
+//    float yaw_weight;
+//    float width_weight;
+//
+//    toyger_status_evaluator_t(float pitch_ = -0.3, float pitch_range_ = 0.7, float best_pitch_ = 0, float pitch_weight_ = 1,
+//                              float yaw_ = -0.6, float yaw_range_ = 0.6, float best_yaw_ = 0, float yaw_weight_ = 1,
+//                              float width_ = 0.2, float width_range_ = 1.2, float best_width_ = 0.7, float width_weight_ = 1){
+//        pitch = pitch_;
+//        yaw = yaw_;
+//        width = width_;
+//        pitch_range = pitch_range_;
+//        yaw_range = yaw_range_;
+//        width_range = width_range_;
+//        best_pitch = best_pitch_;
+//        best_yaw = best_yaw_;
+//        best_width = best_width_;
+//        pitch_weight = pitch_weight_;
+//        yaw_weight = yaw_weight_;
+//        width_weight = width_weight_;
+//    }
+//
+//    void reset(){
+//        pitch = -0.3;
+//        yaw = -0.6;
+//        width = 0.2;
+//    }
+//
+//    void update(float pitch_, float yaw_, float width_) {
+//        pitch = pitch_;
+//        yaw = yaw_;
+//        width = width_;
+//    }
+//
+//    float evaluateProgress(float pitch_, float yaw_, float width_){
+//        return
+//        (normalized_distance(pitch_, best_pitch, pitch_range) * pitch_weight +
+//         normalized_distance(yaw_, best_yaw, yaw_range) * yaw_weight +
+//         normalized_distance(width_, best_width, width_range) * width_weight) /
+//        (pitch_weight + yaw_weight + width_weight);
+//    }
+//
+//    float evaluate(){
+//        return 1 -
+//        (normalized_distance(pitch, best_pitch, pitch_range) * pitch_weight +
+//         normalized_distance(yaw, best_yaw, yaw_range) * yaw_weight +
+//         normalized_distance(width, best_width, width_range) * width_weight) /
+//        (pitch_weight + yaw_weight + width_weight);
+//    }
+//
+//}ToygerStatusEvaluator;
+
+
+typedef struct apbtoyger_tip_evaluator_t {
+    bool pose_end;
+    bool has_face;
+    bool did_blink;
+    bool pos_okay;
+    bool quality_okay;
+    bool under_exposure;
+    bool face_width_too_small;
+    bool face_width_too_big;
+    bool integrity_fail;
+    bool yaw_fail;
+    bool pitch_fail;
+    bool tremble_fail;
+    bool did_checkSeven;
+    int tip_timer_wait_cnt;
+    bool tip_show_switch;
+    int tip_message;
+
+    apbtoyger_tip_evaluator_t(){
+        reset();
+    }
+
+    void reset(){
+        has_face = false;
+        did_blink = false;
+        pos_okay = false;
+        under_exposure = false;
+        face_width_too_small = false;
+        integrity_fail = false;
+        pitch_fail = false;
+        face_width_too_big = false;
+        yaw_fail = false;
+        tremble_fail = false;
+        tip_timer_wait_cnt = 0;
+        tip_show_switch = true;
+        did_checkSeven = false;
+        quality_okay = false;
+        pose_end = false;
+        tip_message =0;
+    }
+}APBToygerTipEvaluator;
+
+
+//UI样式
+typedef enum : NSUInteger {
+    APBToygerUIStyleFPPCherry = 991,       //991 FPP樱桃(废弃)
+    APBToygerUIStyleCherry,                //992 zFace樱桃
+    APBToygerUIStyleGarfield,              //993 加菲
+} APBToygerUIStyle;
+
+#endif

+ 25 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerPresentTask.h

@@ -0,0 +1,25 @@
+//
+//  APFPresentTask.h
+//  APFaceDetectBiz
+//
+//  Created by 晗羽 on 8/26/16.
+//  Copyright © 2016 DTF. All rights reserved.
+//
+
+#import <APBToygerFacade/APBToygerBaseTask.h>
+#import <DTFUtility/CameraService.h>
+#import <BioAuthEngine/DTFFaceViewProtocol.h>
+/**
+ *  @author Skye Ying, 16-08-26 13:08:04
+ *
+ *  新建VC,启动整个view
+ */
+@interface APBToygerPresentTask : APBToygerBaseTask
+
+@property(nonatomic, strong) id<DTFFaceViewProtocol> faceView;
+
+-(void) postCameraPresentwithCamera:(DTFCameraService *) cameraService;
+
+-(void) presentAnimated: (BOOL)flag completion:(void (^ __nullable)(void))completion;
+
+@end

+ 27 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerUploadTask.h

@@ -0,0 +1,27 @@
+//
+//  APBToygerUploadTask.h
+//  APBToygerFacade
+//
+//  Created by Dan Cong on 29/1/2018.
+//  Copyright © 2018 DTF. All rights reserved.
+//
+
+#import <APBToygerFacade/APBToygerBaseTask.h>
+
+/**
+ 上传基类,用于下沉多种UI(樱桃和加菲)下通用的逻辑
+ */
+@interface APBToygerUploadTask : APBToygerBaseTask
+
+- (void)uploadImage;
+
+- (void)didFinishUploadWithSuccess:(BOOL)success
+                           retCode:(NSString *)retCode
+                        retMessage:(NSString *)msg
+                           extInfo:(NSString *)ext;
+
+- (void)handleFailWithRetCodeSub:(NSString *)retCodeSub retMessageSub:(NSString *)retMessageSub;
+
+- (void)requestAgain;
+
+@end

+ 61 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerUtils.h

@@ -0,0 +1,61 @@
+//
+//  APFUtils.h
+//  APFaceDetectBiz
+//
+//  Created by 晗羽 on 8/25/16.
+//  Copyright © 2016 DTF. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <APBToygerFacade/APBToygerFacadeDefine.h>
+
+//#import "APFaceDetectBizFacade.h"
+
+//主线程同步操作
+#define SYNC_MAINTHREAD_BEGIN_APBT           [APBToygerUtils APBToygerMainThread:^{
+#define SYNC_MAINTHREAD_END_APBT             }];
+
+#define LOCK(locker, ...) dispatch_semaphore_wait(locker, DISPATCH_TIME_FOREVER); \
+__VA_ARGS__; \
+dispatch_semaphore_signal(locker);
+
+@class MGLivenessDetectionFrameEncodedData;
+
+@interface APBToygerUtils : NSObject
+
++ (void)APBToygerMainThread:(dispatch_block_t)block;
+
++ (NSString *)getTextContentforKey:(NSString*)keyName;
++ (NSString *)localizedTextForKey:(NSString *)key;
++ (NSBundle *)getBundle;
+
++ (int)getCodefrom:(NSString *)bisToken withLength:(int)codeLen;
+//+ (NSString *)getActionNoticeByActionType:(APFLiveActionType) actionType;
+
+//检查文件是否存在
++ (BOOL) checkFileunderPath:(NSString *) filePath;
+
+//写入文件
+//如果文件存在,不重写,返回失败。
+//如果文件不再在,写入,返回写入结果
++ (BOOL) writeFileunderPath:(NSString *) filePath;
+
+//删除文件
++ (BOOL) removeFileunderPath:(NSString *) filePath;
+
+//随机文件名
++ (NSString *)randomString:(NSInteger)len;
+
++ (NSString *)localizedStringForKey:(NSString *)key;
+
++ (UIImage *)loadImageFromBundleNamed:(NSString *)imageName;
+
++ (UIWindow *)lastWindow;
+
++ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize;
+
+@end
+
+
+
+

+ 34 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Headers/APBToygerViewController.h

@@ -0,0 +1,34 @@
+//
+//  APFViewController.h
+//  APFaceDetectBiz
+//
+//  Created by 晗羽 on 8/25/16.
+//  Copyright © 2016 DTF. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <ToygerService/ToygerService.h>
+#import <BioAuthEngine/DTFFaceViewProtocol.h>
+
+NSString *const kAbnormalClose = @"abnormalclose";
+@class APBToygerBaseTask;
+@interface APBToygerViewController : UIViewController
+
+@property(nonatomic, strong) DTFLogMonitor *monitor;
+@property(nonatomic, strong) id<DTFFaceViewProtocol> faceView;
+@property(nonatomic, assign) BOOL isClose;
+@property(nonatomic, strong) NSString *platformInfo;
+@property(nonatomic, weak) APBToygerBaseTask *baseTask;
+
+- (void)startFaceRecognition:(AVCaptureVideoPreviewLayer *)layer;
+- (void)addWebGuideView:(UIView *)guideView;
+- (void)handleFaceStateChange:(ToygerMessage)state
+                    stateTips:(NSString *)tips
+                  actionGuide:(NSString *)guide
+                     progress:(CGFloat)progress;
+- (void)showLoadingView;
+- (void)dismissLoadingView;
+- (void)setPhotinusColor:(UIColor *)color;
+- (void)showBlur:(UIImage *)image;
+
+@end

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Info.plist


+ 6 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacade.framework/Modules/module.modulemap

@@ -0,0 +1,6 @@
+framework module APBToygerFacade {
+  umbrella header "APBToygerFacade.h"
+
+  export *
+  module * { export * }
+}

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_angle.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_away.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_blink.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_closer.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_integrity.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_left_yaw.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_light.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_right_yaw.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APBToygerFacadeSuitable.bundle/voiceUrl_stay.mp3


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/APPSecuritySDK


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/APPSecuritySDKCore-Info.plist


+ 122 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APDID.h

@@ -0,0 +1,122 @@
+//
+//  APDID.h
+//  APPSecuritySDK
+//
+//  Created by eric on 2021/2/7.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "ASSTokenResult.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^ASSSecureSdkCallback)(ASSTokenResult* result, NSString* error);
+
+typedef void(^ASSSecureSdkOpenCallback)(NSString* token, int errorCode);
+
+@interface APDID : NSObject
+
+/*
+ 异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
+ @param params      初始化的字典参数,包含三项内容:tid、userid、environment;
+                    tid与userid选传,传入可以保证vkeyid与其正确关联,取不到传入空字符串;
+                    环境变量请与app设置中的环境相关联,字典中的value包括线上,预发,测试,日常;
+ @param callback 初始化完成后的结果回调
+ 
+ Asynchronously initialize vkeyid(apdid), recommend to invoke this API when app launches, and cashier view presents.
+ Inside SDK we will decide whether to launch network request or not based on timestamp and device info.
+ No thread requirement.
+ @param params:     Initialized parameters, includes 3 key-value pairs: tid, userid,environment;
+ Tid and userid are optional, they can be associated with vkeyid(apdid) if passed in.
+ If the values for tid and userid are not available, pass in empty NSString(@"").
+ @param callback:   Callback block when token is available
+ */
++ (void) initToken:(NSDictionary*)params callback:(ASSSecureSdkCallback)callback;
+
+/*
+ 同步获取vkeyid完整信息,包括vkeyid,token,clientkey,无网络请求;
+ 如果首次安装app,且首次网络请求未完成或失败,将会返回降级措施:vkeyid会返回客户端随机串clientkey,token将会返回空。
+ 
+ Synchronously get full info of vkeyid(apdid), token and clientkey, no network requests.
+ If the app is installed for the first time and first network request failed, it would return degradation result: vkeyid would be clientkey which is a client-side generated random string, token would be empty NSString @""
+ */
++ (ASSTokenResult*)getToken DEPRECATED_MSG_ATTRIBUTE("use getTokenResult instead");
+
+/*
+ 同步获取vkeyid完整信息,包括vkeyid,token,clientkey,无网络请求;
+ 如果首次安装app,且首次网络请求未完成或失败,将会返回降级措施:vkeyid会返回客户端随机串clientkey,token将会返回空。
+ 
+ Synchronously get full info of vkeyid(apdid), token and clientkey, no network requests.
+ If the app is installed for the first time and first network request failed, it would return degradation result: vkeyid would be clientkey which is a client-side generated random string, token would be empty NSString @""
+ */
++ (ASSTokenResult*)getTokenResult;
+
+
++ (ASSTokenResult *)getTokenResult:(NSString*)appName appKeyClient:(NSString*)appKeyClient;
+
+
+//===================lazada api====================//
+
+/*
+ 异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
+ @param appName      应用名称
+ 
+ @param appKeyClient 应用客户端密钥
+ 
+ @param callback     初始化完成后的结果回调,以Token作为参数
+ 
+ */
++ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient callback:(ASSSecureSdkOpenCallback)callback;
+
+/*
+ 同步接口返回token
+ 
+ @param appName      应用名称
+ 
+ @param appKeyClient 应用客户端密钥
+ 
+ */
++ (NSString *)getResultToken;
+
+/*
+ 同步接口返回token
+ 
+ @param appName      应用名称
+ 
+ @param appKeyClient 应用客户端密钥
+ 
+ */
++ (NSString *)getResultToken:(NSString*)appName appKeyClient:(NSString*)appKeyClient;
+
+//===================TMN api====================//
+/*
+ 异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
+ @param appName      应用名称
+ 
+ @param appKeyClient 应用客户端密钥
+ 
+ @param sessionId    业务方传入自己的id
+ 
+ @param callback     初始化完成后的结果回调,以Token作为参数
+ 
+ */
+
++ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient sessionId:(NSString *)sessionId callback:(ASSSecureSdkOpenCallback)callback;
+
+
+//===================ae api====================//
+
+/*
+ 强制上报接口
+ @param params      初始化的字典参数,包含四项内容:umid、tid、userid、environment;
+ umid必传,tid与userid选传,传入可以保证vkeyid与其正确关联,取不到传入空字符串;
+ 环境变量请与app设置中的环境相关联,字典中的value包括线上,预发,测试,日常;
+ @param callback 初始化完成后的结果回调
+ 
+ */
++ (void) updateToken:(NSDictionary*)params callback:(ASSSecureSdkCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 41 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APDeviceColor.h

@@ -0,0 +1,41 @@
+//
+//  APDeviceColor.h
+//  APPSecuritySDK
+//
+//  Created by eric on 2021/2/25.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface APDeviceColor : NSObject
+
+/*
+*  getColorLabel 设备染色接口
+*
+*  @param bizToken 业务场景
+*  @param extParams 扩展参数
+*  @param errInfo 错误信息
+*
+*  @return 设备染色数据
+*/
++ (NSString*) getColorLabel: (NSString*) bizToken
+                        ext: (NSDictionary *) extParams
+                      error: (NSError **) errInfo;
+
+/*
+*  getColorLabel 设备染色接口
+*
+*  @param extParams 扩展参数
+*  @param errInfo 错误信息
+*
+*  @return 设备染色数据
+*/
++ (NSString*) getColorLabel: (NSDictionary *) extParams
+                      error: (NSError **) errInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 32 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APDynamic.h

@@ -0,0 +1,32 @@
+//
+//  APDynamic.h
+//  APPSecuritySDK-Sign
+//
+//  Created by eric on 2021/2/25.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface APDynamic : NSObject
+
+/*
+*  dynamicCheckDispatch 动态攻防脚本运行
+*
+*  @param dict 动态攻防脚本
+*/
++ (void)dynamicCheckDispatch:(NSDictionary *)dict;
+
+/*
+*  dynamicCheckDispatch 动态攻防脚本运行,动态攻防脚本运行后会自动上传, 无特殊需求不建议
+*
+*  @param dict 动态攻防脚本
+*  @param callback 运行结果回调
+*/
++ (void)dynamicCheckDispatch:(NSDictionary *)dict withCallBack: (void(^)(Boolean, NSString *))callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 21 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskConfigReportRequest.h

@@ -0,0 +1,21 @@
+//
+//  APRiskConfigReportRequest.h
+//  APPSecuritySDK-Common
+//
+//  Created by eric on 2021/8/16.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface APRiskConfigReportRequest : NSObject
+
+@property(nonatomic, strong) NSString* os;
+@property(nonatomic, strong) NSString* apdid;
+@property(nonatomic, strong) NSDictionary* deviceDataMap;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 19 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskConfigReportResponse.h

@@ -0,0 +1,19 @@
+//
+//  APRiskConfigReportResponse.h
+//  APPSecuritySDK-Common
+//
+//  Created by eric on 2021/8/16.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface APRiskConfigReportResponse : NSObject
+
+@property(nonatomic, strong) NSDictionary* resultData;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskConfigServiceProtocol.h

@@ -0,0 +1,20 @@
+//
+//  APRiskConfigServiceProtocol.h
+//  APPSecuritySDKAdapter
+//
+//  Created by hongren on 2020/9/7.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+#import "APRiskSyncHandlerProtocol.h"
+
+@protocol APRiskConfigServiceProtocol <NSObject>
+
+@required
+- (NSString *)stringValueForKey:(NSString *)key;
+
+- (void)addConfigChangeListener:(id<APRiskSyncHandlerProtocol>)handler forKey:(NSString *)key;
+
+- (void)refreshConfig:(NSDictionary *)tConfigMap from:(NSString *)sourceType;
+
+@end
+

+ 14 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskFileUploadProtocol.h

@@ -0,0 +1,14 @@
+//
+//  APRiskFileUploadProtocol.h
+//  APPSecuritySDKAdapter
+//
+//  Created by hongren on 2020/9/7.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+@protocol APRiskFileUploadProtocol <NSObject>
+
+@required
+- (NSString *)uploadCustomFile:(NSString *)path;
+
+@end

+ 21 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskLoggerProtocol.h

@@ -0,0 +1,21 @@
+//
+//  APRiskLoggerProtocol.h
+//  APPSecuritySDK-Common
+//
+//  Created by eric on 2021/6/25.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol APRiskLoggerProtocol <NSObject>
+
+@required
+
+-(void)print:(NSString *)format, ...NS_REQUIRES_NIL_TERMINATION;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 30 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskRPCProtocol.h

@@ -0,0 +1,30 @@
+//
+//  APRiskRPCProtocol.h
+//  APPSecuritySDKAdapter
+//
+//  Created by hongren on 2020/9/7.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+#import "APRiskReportRequest.h"
+#import "APRiskReportResponse.h"
+#import "APRiskRpcConfiguration.h"
+#import "APRiskConfigReportRequest.h"
+#import "APRiskConfigReportResponse.h"
+
+@protocol APRiskRPCProtocol <NSObject>
+//gateway
+
+@required
+- (APRiskReportResponse *)sendStaticRequest:(APRiskReportRequest *)data
+                               config:(APRiskRpcConfiguration*)cfg;
+
+@required
+- (APRiskConfigReportResponse *)sendConfigReportRequest:(APRiskConfigReportRequest *)data
+                               config:(APRiskRpcConfiguration*)cfg;
+
+@required
+- (BOOL)updateLog:(NSString*)log
+           config:(APRiskRpcConfiguration*)cfg;
+
+@end

+ 29 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskRemoteLoggerProtocol.h

@@ -0,0 +1,29 @@
+//
+//  APRiskRemoteLoggerProtocol.h
+//  APPSecuritySDKAdapter
+//
+//  Created by hongren on 2020/9/7.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+@protocol APRiskRemoteLoggerProtocol <NSObject>
+
+@required
+- (void)writeLogWithActionId:(NSString *)event
+                   extParams:(NSArray *)args
+                       appId:(NSString *)appId
+                        seed:(NSString *)seed
+                        ucId:(NSString *)ucId;
+
+@required
+- (void)writeLogWithActionId:(NSString *)event
+                   extParams:(NSArray *)args
+                       appId:(NSString *)appId
+                        seed:(NSString *)seed
+                        ucId:(NSString *)ucId
+                     bizType:(NSString *)bizType;
+
+@required
+- (void)writeEventLog:(NSDictionary *)dict;
+
+@end

+ 68 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskReportRequest.h

@@ -0,0 +1,68 @@
+//
+//  APRiskReportRequest.h
+//  APPSecuritySDK
+//
+//  Created by hongren on 2020/9/7.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface APRiskReportRequest : NSObject
+
+/**
+* os type: android|ios"
+*/
+
+       @property(nonatomic, strong) NSString *os;
+           /**
+* device id for ios for static report, or device id for dynamic report both for ios and android
+*/
+
+       @property(nonatomic, strong) NSString *apdid;
+           /**
+* public region device id for android for static report
+*/
+
+       @property(nonatomic, strong) NSString *pubApdid;
+           /**
+* private region device id for android for static report
+*/
+
+       @property(nonatomic, strong) NSString *priApdid;
+           /**
+* apdid token
+*/
+
+       @property(nonatomic, strong) NSString *token;
+           /**
+* umid token
+*/
+
+       @property(nonatomic, strong) NSString *umidToken;
+           /**
+* rpc version
+*/
+
+       @property(nonatomic, strong) NSString *version;
+           /**
+* last apdid time (create time)
+*/
+
+       @property(nonatomic, strong) NSString *lastTime;
+
+       /**
+        * dynamicKey
+        */
+       @property(nonatomic,strong) NSString* dynamicKey;
+           /**
+* device info map
+*/
+
+       @property(nonatomic, strong) NSDictionary *dataMap;
+               + (Class)dataMapElementClass;
+
+       @property(nonatomic,strong) NSDictionary *bizData;
+               + (Class)bizDataElementClass;
+
+@end

+ 65 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskReportResponse.h

@@ -0,0 +1,65 @@
+//
+//  APRiskReportResponse.h
+//  APPSecuritySDK
+//
+//  Created by hongren on 2020/9/7.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface APRiskReportResponse : NSObject
+
+/**
+ * success or not
+ */
+
+        @property(nonatomic, assign) BOOL success;
+    /**
+ * result code
+ */
+
+        @property(nonatomic, strong) NSString *resultCode;
+
+/**
+* device id
+*/
+
+       @property(nonatomic, strong) NSString *apdid;
+           /**
+* apdid token
+*/
+
+       @property(nonatomic, strong) NSString *token;
+           /**
+* current apdid time (create time)
+*/
+
+       @property(nonatomic, strong) NSString *currentTime;
+           /**
+* rpc version
+*/
+
+       @property(nonatomic, strong) NSString *version;
+           /**
+* switch for vkey
+*/
+
+       @property(nonatomic, strong) NSString *vkeySwitch;
+           /**
+* switch for BugTrack
+*/
+
+       @property(nonatomic, strong) NSString *bugTrackSwitch;
+           /**
+* version for applist cmd
+*/
+
+       @property(nonatomic, strong) NSString *appListVer;
+
+       @property(nonatomic, strong) NSString *dynamicKey;
+
+       @property(nonatomic, strong) NSDictionary *resultData;
+                + (Class)resultDataElementClass;
+           
+@end

+ 20 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskRpcConfiguration.h

@@ -0,0 +1,20 @@
+//
+//  APRiskRpcConfiguration.h
+//  APPSecuritySDKAdapter
+//
+//  Created by hongren on 2020/9/8.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+#import <Foundation/Foundation.h>
+
+@interface APRiskRpcConfiguration : NSObject
+// 超时时间
+@property(nonatomic, assign) int timeout;
+
+// 网关地址
+@property(nonatomic, strong) NSString* gatewayURL;
+
+// workspaceid和appid
+@property(nonatomic, strong) NSDictionary *headers;
+
+@end

+ 21 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskSyncHandlerProtocol.h

@@ -0,0 +1,21 @@
+//
+//  APRiskSyncHandlerProtocol.h
+//  APPSecuritySDK
+//
+//  Created by eric on 2020/10/15.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol APRiskSyncHandlerProtocol <NSObject>
+
+@required
+
+-(void) handleWithBizType: (NSString *) bizType andData: (NSString *) data;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APRiskSyncServiceProtocol.h

@@ -0,0 +1,28 @@
+//
+//  APRiskSyncServiceProtocol.h
+//  APPSecuritySDK
+//
+//  Created by eric on 2020/10/15.
+//  Copyright © 2020 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "APRiskSyncHandlerProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+static NSString* const kEdgeBizTypeGlobal = @"EDGE-GLOBAL";
+static NSString* const kEdgeBizTypeSingle = @"EDGE-SINGLE";
+static NSString* const kEdgeBizTypeUid = @"EDGE-SINGLE-USER";
+static NSString* const kEdgeBizTypeSyncDegradeToConfig = @"EDGE-SYNC-DEGRADE-TO-CONFIG";
+
+@protocol APRiskSyncServiceProtocol <NSObject>
+
+@required
+
+-(void) registerHandler:(id<APRiskSyncHandlerProtocol>)handler;
+-(void) registerSyncBiz;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 41 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSecRDS.h

@@ -0,0 +1,41 @@
+//
+//  APSecRDS.h
+//  APSecRDS
+//
+//  Created by xingchen on 15/4/8.
+//  Copyright (c) 2015年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+@interface APSecRDS : NSObject
+
+/*
+ appname	当前app的名称
+ appver     当前app的版本
+ sdkname	当前sdk的名称
+ sdkver     当前sdk的版本
+ user       淘宝/支付宝身份
+ pagesrc	淘宝/支付宝
+ page       当前页面标识
+ 
+ */
+-(void) onPageWithView:(NSString*)pageName args:(NSDictionary*) inArgs;
+-(NSString*) onPageEndWithView:(NSString*) pageName user:(NSString*) userName;
+-(NSString*) onPageEndZipDataWithView:(NSString*)pageName user:(NSString*)userName;
+
+-(void) onControlClickWithView:(NSString*) pageName ctrl: (NSString*)ctrlName;
+
+//按键信息
+-(void) onKeyDownWithView:(NSString*) pageName ctrl:(NSString*) ctrlName keyCode:(NSString*)keyValue;
+
+//焦点信息
+-(void) onGetFocusWithView:(NSString*)pageName ctrl:(NSString*) ctrlName;
+-(void) onLostFocusWithView:(NSString*) pageName ctrl:(NSString*) ctrlName;
+
+//触屏信息
+-(void) onTouchScreenWithView:(NSString*)pageName ctrl:(NSString*) ctrlName point:(CGPoint) pt;
+
+
+@end

+ 48 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSecStore.h

@@ -0,0 +1,48 @@
+//
+//  APSecStore.h
+//  APPSecuritySDK
+//
+//  Created by eric on 2021/3/10.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface APSecStore : NSObject
+
+/*
+ *功能:     从keychain中载入字符串
+ *线程安全: 是
+ *可重入:   是
+ *@return: 成功返回key对应字符串,失败返回nil
+ *@param key:不能为nil
+ *@param error:失败时保存错误信息
+ */
++(NSString*) loadKey:(NSString*) key error:(NSError **)error;
+
+/*
+ *功能:     将字符串(键-值对)存入keychain
+ *线程安全: 是
+ *可重入:   是
+ *@return: 成功返回yes,失败返回no
+ *@param key:不能为nil
+ *@param value:不能为nil
+ *@param error:失败时保存错误信息
+ */
++(BOOL) saveKey:(NSString*) key Value:(NSString*)value error:(NSError **)error;
+
+/*
+ *功能:     从keychain中删除字符串(键-值对)
+ *线程安全: 是
+ *可重入:   是
+ *@return: 成功返回yes,失败返回no
+ *@param key:不能为nil
+ *@param error:失败时保存错误信息
+ */
++(BOOL) deleteKey:(NSString*) key error:(NSError **)error;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 113 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSecureSdk.h

@@ -0,0 +1,113 @@
+//
+//  ASSSecureSdk.h
+//  APSecSecuritySDK
+//
+//  Created by xingchen on 15/2/26.
+//  Copyright (c) 2015年 Alipay. All rights reserved.
+//
+#import <Foundation/Foundation.h>
+
+//初始化API的字典参数中,TID的key
+//key for TID in the NSDictionary parameter for initToken:callback: API
+extern NSString * const ASS_TID;
+
+//初始化API的字典参数中,userid的key
+//key for USERID in the NSDictionary parameter for initToken:callback: API
+extern NSString * const ASS_USERID;
+
+//初始化API的字典参数中,环境变量的key
+//key for server environment configuration in the NSDictionary parameter for initToken:callback: API
+extern NSString * const ASS_ENVIRONMENT;
+
+//初始化API的字典参数中,环境变量的value,代表线上环境
+//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for online environment
+extern NSString * const ASS_ENVIRONMENT_ONLINE;
+
+//初始化API的字典参数中,环境变量的value,代表测试环境
+//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for test environment
+extern NSString * const ASS_ENVIRONMENT_SIT;
+
+//初始化API的字典参数中,环境变量的value,代表开发环境
+//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for daily environment
+extern NSString * const ASS_ENVIRONMENT_DAILY;
+
+//初始化API的字典参数中,环境变量的value,代表预发环境
+//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for pre online environment
+extern NSString * const ASS_ENVIRONMENT_PRE;
+
+//初始化API的字典参数中,设置RPC网关地址的key。
+//key for RPC server gateway address in the NSDictionary parameter for initToken:callback: API.
+//If value for this key is specified, the value for ASS_ENVIRONMENT will be ignored.
+extern NSString* const ASS_RPC_GATEWAY_ADDR;
+
+//rpc header workspaceid key
+extern NSString* const ASS_RPC_WORKSPACEID;
+
+//rpc header appid key
+extern NSString* const ASS_RPC_APPID;
+
+//初始化API的字典参数中,设置UMID网关host地址的key。
+//host 要设置的线上地址,如ynuf.alipay.com,不要带协议头,不要带后面的参数,只能传纯host地址
+//key for UMID server host in the NSDictionary parameter for initToken:callback: API.
+//host should only contain online address such as ynuf.alipay.com, without protocol or parameters.
+extern NSString* const ASS_UMID_HOST;
+
+//初始化API的字典参数中,设置加密的umid。
+extern NSString * const ASS_ENCODE_UMID;
+
+/*!
+ @typedef ASSStatusCode
+ 
+ Possible return codes
+ @constant ASSStatusCodeOk                       Completed, No errors
+ @constant ASSStatusCodeInvalidParam             input param invalid
+ @constant ASSStatusCodeAppNameNil               appName is nil
+ @constant ASSStatusCodeAppKeyNil                appKeyClient is nil
+ @constant ASSStatusCodeConnectionError          network connection failure
+ */
+typedef NS_ENUM(NSInteger, ASSStatusCode)
+{
+    ASSStatusCodeOk = 0,
+    ASSStatusCodeInvalidParam,
+    ASSStatusCodeAppNameNil,
+    ASSStatusCodeAppKeyNil,
+    ASSStatusCodeConnectionError,
+    
+};
+
+typedef NS_ENUM(NSInteger, ASSAddressFlag)
+{
+    ASSAddressFlagIndonesia = 1,
+    ASSAddressFlagMalaysia  = 2,
+    ASSAddressFlagPilipinas = 3,
+    ASSAddressFlagSingapore = 4,
+    ASSAddressFlagIpayVn    = 11,
+    ASSAddressFlagIpayId    = 12,
+    ASSAddressFlagIpayMy    = 13,
+    ASSAddressFlagIpaySg    = 14,
+    ASSAddressFlagIpayTh    = 15,
+    ASSAddressFlagIpayPh    = 16,
+    ASSAddressFlagIpayDefault = 17,
+};
+
+@interface APSecureSdk : NSObject
+
+/**
+ 获取单例
+ */
++ (id)sharedInstance;
+
+/*
+ *网关设置
+ */
+- (void)setSecuritySDKConfig:(ASSAddressFlag)address;
+
+/**
+ 初始化
+ */
+- (void)initWithRpcConfiguration:(NSDictionary *) config;
+
+//===================测试联调 api====================//
+- (void)setRpcConfiguration:(NSDictionary *) config;
+
+@end

+ 56 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/APSign.h

@@ -0,0 +1,56 @@
+//
+//  APSign.h
+//  APPSecuritySDK-Sign
+//
+//  Created by eric on 2021/2/25.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface APSign : NSObject
+
+/*
+*  getColorInfo 请求可信接口,获取数字签名
+*
+*  @param bizToken 业务场景
+*  @param bizParam 业务参数
+*  @param extParams 扩展参数
+*  @param errInfo 错误信息
+*
+*  @return 数字签名数据
+*/
++ (NSString*) getColorInfo: (NSString*) bizToken
+                     param: (NSString*) bizParam
+                       ext: (NSDictionary*) extParams
+                     error: (NSError **) errInfo;
+
+/*
+*  preColorInfo 签名数据预处理接口,用于不同业务定制签名携带数据
+*
+*  @param userAction 当前动作,由业务定制的行为事件
+*  @param extParams 业务参数,格式需要与内部对齐
+*
+*  @return 预处理数据
+*/
++ (NSString*) preColorInfo: (int) userAction
+                       ext: (NSDictionary*) extParams
+                     error: (NSError **) errInfo;
+
+/*
+*  preColorInfo 签名数据预处理接口,用于不同业务定制签名携带数据
+*
+*  @param userAction 当前动作,由业务定制的行为事件
+*  @param extParams 业务参数,格式需要与内部对齐
+*
+*  @return 预处理数据
+*/
++ (NSString*) preColorInfoForString: (int) userAction
+                                ext: (NSString*) extParams
+                              error: (NSError **) errInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 234 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSCommon.h

@@ -0,0 +1,234 @@
+//
+//  ASSCommon.h
+//  ae-security-sdk
+//
+//  Created by xingchen on 14/12/30.
+//  Copyright (c) 2014年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "ASSLogger.h"
+
+//#define IN_DEBUG
+#define USED_BY_ALIPAY
+
+static NSErrorDomain APSECURITYSDK_ERROR_DOMAIN  = @"APSecuritySDKErrorDomain";
+
+static NSString* const PRIVATE_KEY_XXXX = @"qqAIhzy)H)ip53<>ugx,sI{#}CE$37L|z5G=IScgO^=aQHaN[b|NM.RWdZpcy.r$";
+
+static NSString* const PRIVATE_KEY_CLIENTKEY = @"EQopzyui)H)ipQW983<ll>uitx,sgI{#}##20110kl==^^woQG,msq.xinjun.$$";
+
+static NSString* const LOG_SWITCH_SETTING_INITIALIZED = @"开关设置从keychain初始化成功";
+
+static NSString* const LOG_LOAD_SETTING_EXCEPTION = @"开关设置在keychain中无存储,读取失败";
+
+static NSString* const LOG_DECRYPT_SETTING_EXCEPTION = @"开关设置从keychain中读取成功,解密失败";
+
+static NSString* const LOG_SWITCH_APPLIST_INITIALIZED = @"applist从keychain初始化成功";
+
+static NSString* const LOG_LOAD_APPLIST_EXCEPTION = @"applist相关信息在keychain中无存储,读取失败";
+
+static NSString* const LOG_DECRYPT_APPLIST_EXCEPTION = @"applist信息从keychain中读取成功,解密失败";
+
+static NSString* const LOG_UMID_TOKEN_REQUEST_BACK = @"UMID TOKEN返回结果为:";
+
+static NSString* const LOG_VKEYINFO_GENERATED = @"本地VKEY开关打开,将生成VKEY信息";
+
+static NSString* const LOG_VKEYINFO_ABORT = @"本地VKEY开关关闭,将放弃生成VKEY信息";
+
+static NSString* const LOG_VKEY_NO_KEYCHAIN_CACHE = @"VKEY缓存信息在keychain中无存储,读取失败";
+
+static NSString* const LOG_VKEY_FOUND_KEYCHAIN_CACHE = @"VKEY缓存信息在keychain中获取缓存值";
+
+static NSString* const LOG_VKEY_INFO_DETAIL = @"KEY信息为:";
+
+static NSString* const LOG_VKEY_GENERATION_EXCEPTION = @"VEr:";
+
+static NSString* const LOG_GID_GENERATED = @"本地GID开关打开,将生成GID信息";
+
+static NSString* const LOG_GID_ABORT = @"本地GID开关关闭,将放弃生成GID信息";
+
+static NSString* const LOG_GID_NO_KEYCHAIN_CACHE = @"GID缓存信息在keychain中无存储,读取失败";
+
+static NSString* const LOG_GID_FOUND_KEYCHAIN_CACHE = @"GID缓存信息在keychain中获取缓存值";
+
+static NSString* const LOG_GID_INFO_DETAIL = @"GID信息为:";
+
+static NSString* const LOG_VOS_RUNNING = @"VKEY任务启动";
+
+static NSString* const LOG_VOS_ASYNC_ABORT = @"放弃异步VOS任务";
+
+static NSString* const LOG_VOS_VKEY_GENERATION = @"VOS VKEY采集中";
+
+static NSString* const LOG_VOS_GID_GENERATION = @"VOS GID采集中";
+
+static NSString* const LOG_GID_GENERATION_EXCEPTION = @"GEr:";
+
+static NSString* const LOG_JB_ERROR_DETECTED = @"JEr";
+
+static NSString* const LOG_STATIC_INFO_DETAIL = @"采集静态信息列表如下:";
+
+static NSString* const LOG_APP_LIST_INFO_COLLECTED = @"APPLIST信息扫描获取中";
+
+static NSString* const LOG_APP_LIST_INFO_ABORT = @"APPLIST信息放弃扫描获取";
+
+static NSString* const LOG_LOAD_MODEL_KEYCHAIN_EXCEPTION = @"VKEYID在keychain无存储,读取失败";
+
+static NSString* const LOG_LOAD_MODEL_FROM_KEYCHAIN = @"VKEYID从keychain中成功读取";
+
+static NSString *const LOG_LOCALMODEL_ABSENT = @"本地未找到VKEYID存储";
+
+static NSString *const LOG_LOCALMODEL_LOADSUCCESS = @"本地成功找到VKEYID存储";
+
+static NSString *const LOG_LOAD_PREAPDID_SUCCESS = @"本地成功在keychain中读取旧版apdid的值:";
+
+static NSString *const LOG_LOAD_PREAPDID_FAILED = @"旧版apdid在keychain中无存储,读取失败";
+
+static NSString* const LOG_STATIC_INFO_CHANGED = @"所采集的静态信息发生改变或者存储中没有记录";
+
+static NSString* const LOG_STATIC_INFO_SAME = @"所采集的静态信息与存储中相同";
+
+static NSString* const LOG_TODAY_FIRST = @"检测为24小时内首次请求";
+
+static NSString* const LOG_NOT_TODAY_FIRST = @"检测24小时内已经发起过请求";
+
+static NSString *const LOG_GETAPDIDTOKEN_RET_LOCAL = @"不发起网络请求,直接返回本地存储";
+
+static NSString* const LOG_CONNECT_TO_SERVER = @"需要访问服务器请求TOKEN";
+
+static NSString* const LOG_REQUEST_INFO_INCLUDED = @"静态请求上传需要携带静态信息";
+
+static NSString* const LOG_REQUEST_INFO_EXCLUDED = @"静态请求上传不需要携带静态信息";
+
+static NSString* const LOG_STATIC_REQUEST_EXCEPTION = @"静态数据请求发送出现异常";
+
+static NSString* const LOG_STATIC_REQUEST_FAILED = @"静态数据请求返回出现错误";
+
+static NSString* const LOG_STATIC_REQUEST_SUCCESS = @"静态数据请求请求返回";
+
+static NSString* const LOG_SERVER_RESPONSE_SUCCESS = @"服务端返回结果通过验证,证明有效:";
+
+static NSString* const LOG_SERVER_RESPONSE_FAILED = @"服务端获取TOKEN失败";
+
+static NSString* const LOG_LOG_REQUEST_RESPONSE = @"日志上传成功返回";
+
+static NSString *const LOG_LOCALMODEL_SAVED_KEYCHAIN = @"成功将VKEY ID保存至keychain";
+
+static NSString *const LOG_UPDATE_SETTING = @"已更新keychain中开关的设置值";
+
+static NSString* const LOG_APP_LIST_NEED_UPDATE = @"经过检测,app list列表需要从服务器更新";
+
+static NSString *const LOG_UPDATE_APPLIST = @"app list列表成功从服务器更新";
+
+static NSString* const LOG_APPLIST_SETTING_SAVED_KEYCHAIN = @"app list列表信息成功更新至keychain保存";
+
+static NSString* const LOG_APP_LIST_REQUEST_EXCEPTION = @"app list请求出现异常";
+
+static NSString* const LOG_APP_LIST_RESPONSE_FAILED = @"app list请求结果失败";
+
+static NSString* const LOG_LOG_UPDATE_EXCEPTION = @"日志信息请求发送出现异常";
+
+static NSString* const LOG_LOG_UPLOAD_ERROR = @"日志信息发送出现错误";
+
+static NSString* const LOG_LOG_UPLOAD_SUCCESS = @"日志信息发送返回成功";
+
+static NSString *const LOG_SETTINGMODEL_SAVEFAILED = @"开关信息保存错误";
+
+static NSString *const LOG_SETTINGMODEL_SUCCESS = @"开关信息成功保存到keychain";
+
+static NSString* const LOG_LOG_UPLOAD_PROCESS = @"上报日志开关打开,开始上报错误日志流程";
+
+static NSString* const LOG_LOG_UPLOAD_ABORT = @"上报日志开关关闭,放弃上报错误日志";
+
+static NSString* const LOG_LOG_FILE_DETAIL = @"检测到错误日志文件:";
+
+static NSString* const LOG_LOG_FILE_REMOVAL = @"已经删除错误日志文件:";
+
+static NSString* const LOG_LOG_UPLOAD_START = @"开始日志上报网络请求";
+
+static NSString* const LOG_LOG_UPLOAD_DETAIL = @"日志上报网络请求具体内容:";
+
+
+
+static NSString* const LOG_JSON_PARSE_EXCEPTION = @"JSON解析失败";
+
+static NSString* const ASS_STORAGE_KEY_SUCCESS = @"success";
+static NSString* const ASS_STORAGE_KEY_APDID = @"apdid";
+static NSString* const ASS_STORAGE_KEY_TOKEN = @"token";
+static NSString* const ASS_STORAGE_KEY_TIME = @"time";
+static NSString* const ASS_STORAGE_KEY_VKEYSWITCH = @"vkeyon";
+static NSString* const ASS_STORAGE_KEY_LOGSWITCH = @"logon";
+static NSString* const ASS_STORAGE_KEY_APPLISTVERSION = @"appver";
+static NSString* const ASS_STORAGE_KEY_STATICHASH = @"statichash";
+static NSString* const ASS_STORAGE_KEY_ERROR = @"error";
+static NSString* const ASS_APPKEY_INVALID = @"APPKEY_ERROR";
+static NSString* const ASS_STORAGE_KEY_WEBRTCURL = @"webrtcurl";
+static NSString* const ASS_STORAGE_KEY_DYNAMICKEY = @"dynamickey";
+static NSString* const ASS_STORAGE_KEY_AGENTURL = @"agentcurl";
+static NSString* const ASS_STORAGE_KEY_APSE_DEGRADE = @"apse_degrade";
+static NSString* const ASS_STORAGE_KEY_TIMEINTERVAL = @"timeInterval";
+
+static NSString* const SECURE_SDK_KEYCHAIN_KEY = @"com.alipay.securesdk.storage";
+static NSString* const LAST_LOGIN_TIME_KEY = @"com.alipay.asssecuritySDK.lastlogintime";
+static NSString* const SECURE_SDK_RANDOM_STRING = @"com.alipay.securesdk.ranstr";
+static NSString* const SECURE_SDK_RANDOM_TOKEN = @"com.alipay.securesdk.tokenid";
+static NSString* const ASS_KEYCHAIN_KEY_SETTING = @"com.alipay.asssecuresdk.config";
+static NSString* const SECURE_SDK_RANDOM_CLIENTKEY_STRING = @"com.alipay.securesdk.clientkey";
+static NSString* const SECURE_SDK_KEYCHAIN_TOKEN = @"maintoken";
+
+static NSString* const ASS_KEYCHAIN_KEY_APPLIST = @"com.alipay.asssecuresdk.list";
+static NSString* const ASS_KEYCHAIN_KEY_DFP = @"com.alipay.asssecuresdk.dfp";
+static NSString* const ASS_KEYCHAIN_KEY_GID = @"com.alipay.asssecuresdk.gid";
+static NSString* const ASS_KEYCHAIN_KEY_JBER = @"com.alipay.asssecuresdk.jber";
+static NSString* const ASS_KEYCHAIN_KEY_APDIDC = @"com.alipay.asssecuresdk.apdidc";
+static NSString* const ASS_KEYCHAIN_KEY_TMXTIME = @"com.alipay.asssecuresdk.tmxtime";
+static NSString* const ASS_KEYCHAIN_KEY_TMXSESSOINID = @"com.alipay.asssecuresdk.tmxsessionid";
+static NSString* const ASS_KEYCHAIN_KEY_ARPMAC = @"com.alipay.asssecuresdk.arpmac";
+static NSString* const ASS_KEYCHAIN_KEY_DYNAMICKEY = @"com.alipay.asssecuresdk.dynamickey";
+
+static NSString* const ASS_USER_DEFAULT_KEY_DEGRADE_TIME = @"asssecuritysdkdegrade";
+
+static const int overtime = 9;
+
+//CRASHGUARD
+static NSString* const CRASH_GUARD_GET_COLOR_INFO = @"05f445";
+static NSString* const CRASH_GUARD_PRE_COLOR_INFO = @"f379d2";
+static NSString* const CRASH_GUARD_INIT_COLOR_INFO = @"25f523";
+static NSString* const CRASH_GUARD_UPDATE_COLOR_CODE = @"8e81ac";
+static NSString* const CRASH_GUARD_GET_COLOR_LABEL = @"d785d8";
+static NSString* const CRASH_GUARD_UPDATE_COLOR_LABEL = @"dccf1d";
+static NSString* const CRASH_GUARD_INIT_TOKEN = @"0780aa";
+static NSString* const CRASH_GUARD_INIT = @"e37f013";
+
+
+@interface ASSCommon : NSObject
+
++ (int)getCurrentMode;
+
++ (NSString*)getRPCURL;
+
++ (NSString*)getServerHost;
+
++ (void) setRPCHeader:(NSDictionary*)header;
+
++ (NSDictionary*)getRPCHeader;
+
++ (void)setupEnvironmentMode:(int)mode;
+
++ (void)setupRPCAddress:(NSString*)address;
+
++ (BOOL)useURLWhitelist;
+
++ (BOOL)checkDeviceSystemVersion;
+
++ (void)setSecuritySDKConfig:(int)address;
+
++ (void)setRpcHeaderAppid:(NSString*)apid;
+
++ (NSString*)getRpcHeaderAppid;
+
++ (void)setRpcHeaderWorkspaceid:(NSString*)spaceid;
+
++ (NSString*)getRpcHeaderWorkspaceid;
+
+@end

+ 37 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSDynamicManager.h

@@ -0,0 +1,37 @@
+//
+//  ASSDynamicManager.h
+//  APSecSecuritySDK
+//
+//  Created by msq on 2019/1/5.
+//  Copyright © 2019 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "APDynamicProtocol.h"
+
+@interface ASSDynamicManager : NSObject<APDynamicProtocol>
+
++ (instancetype)sharedInstance;
+
+- (void)dynamicCheckDispatch:(NSDictionary *)dict;
+
+- (void)dynamicCheckDispatch:(NSDictionary *)dict withCallBack: (void(^)(Boolean, NSString *))callback;
+
+- (void)dynamicCheckCustomLocal:(int)delay;
+
++ (NSData *)sendDynamicSynchronousRequest:(NSString *)url;
+
++ (void)uploadTimerCheckResult:(NSString *)data
+                  dynamicTrace:(NSString*)trace
+                    dynamicCmd:(int)cmd
+                    dynamicNum:(int)num;
+
++ (NSString *)uploadCustomFile:(NSString *)path;
+
++ (void)recordError:(const char *)pos
+         withAction:(const char *)action
+            errCode:(int)code;
+
+//+ (NSString *)processFeature;
+
+@end

+ 39 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSLogger.h

@@ -0,0 +1,39 @@
+//
+//  ASSLogger.h
+//  ae-security-sdk
+//
+//  Created by xingchen on 14/12/22.
+//  Copyright (c) 2014年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "ASSProtocolCenter.h"
+
+#define ASSLog(...)    do { \
+    if ([ASSProtocolCenter sharedCenter].logDelegate) { \
+        [[ASSProtocolCenter sharedCenter].logDelegate print:__VA_ARGS__, nil]; \
+    }} while(0)
+#define ASSDtl(params, detail)    [[ASSProtocolCenter sharedCenter].logDelegate print:[NSString stringWithFormat:@"%@%@",params,detail], nil]
+#define ASSLogError(erroInfo)    do { [[ASSLogger sharedInstance] addLogWithMessage: erroInfo]; } while(0)
+
+@interface ASSLogger : NSObject
+
+@property (nonatomic, strong) NSString* loggerInfo;
+
++(id)sharedInstance;
+
+-(void)initializeWithArgs:(NSDictionary*)inArgs;
+
+-(void)addLogWithMessage:(NSString*)message;
+
+-(void)uploadLog;
+
+//---------for test
+-(NSData*)generateMessage:(NSString*)msg;
+-(void)addLogWithMessage:(NSString *)message withFileName:(NSString*)fileName;
+-(NSString*)getCurrentFileName:(NSDate*)date;
+-(void)internal_addLog:(NSString*)message;
+-(void)uploadLogCertified;
+
+
+@end

+ 28 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSSecureInfo.h

@@ -0,0 +1,28 @@
+//
+//  ASSSecureInfo.h
+//  APPSecuritySDK
+//
+//  Created by msq on 2018/7/9.
+//  Copyright © 2018年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#define  ASSSecureInfo      ASSSecureInfoCore
+
+@interface ASSSecureInfo : NSObject
+/**
+ *  重打包检测
+ *  返回值:YES表示个人签名;NO表示企业签名
+ *
+ */
++ (BOOL)hasPersonSign;
+
+/**
+ *  越狱检测
+ *  返回值:0表示非越狱;大于0其他值表示越狱
+ *
+ */
++ (uint32_t)checkJB;
+
+@end

+ 77 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSSecureOpenSdk.h

@@ -0,0 +1,77 @@
+//
+//  ASSSecureOpenSdk.h
+//  APPSecuritySDK
+//
+//  Created by msq on 16/6/1.
+//  Copyright © 2016年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "APSecureSdk.h"
+#import "ASSTokenResult.h"
+
+typedef void(^ASSSecureSdkCallbackOpen)(NSString* token, int errorCode);
+
+@interface ASSSecureOpenSdk : NSObject
+
+/*
+ 异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
+ @param appName      应用名称
+ @param appKeyClient 应用客户端密钥
+ @param callback     初始化完成后的结果回调,以Token作为参数
+ */
++ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient callback:(ASSSecureSdkCallbackOpen)callback;
+
+
+/*
+ 异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
+ @param appName         应用名称
+ @param appKeyClient    应用客户端密钥
+ @param parameters      业务方按约定的自定义参数
+ @param callback        初始化完成后的结果回调,以Token作为参数
+ */
++ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient parameters:(NSDictionary*)inArgs callback:(ASSSecureSdkCallbackOpen)callback;
+
+/*
+ 异步强制更新vkeyid,推荐在app启动时和收银台页面加载时调用,无线程要求
+ @param appName         应用名称
+ @param appKeyClient    应用客户端密钥
+ @param parameters      业务方按约定的自定义参数
+ @param callback        初始化完成后的结果回调,以Token作为参数
+ */
++ (void)updateToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient parameters:(NSDictionary*)inArgs callback:(ASSSecureSdkCallbackOpen)callback;
+
+/*
+ VKEYID和VKEYID token的接口,无网络请求。
+ 同步调用前应当先调用过异步初始化接口
+ 
+ 如果异步初始化由于网络等原因失败,同步接口将返回降级方案:
+ 1)VKEYID将在旧版apdid存在的情况下返回旧版apdid,否则返回随机串
+ 2)VKEYID token将返回空字符串:@""
+ */
++ (ASSTokenResultOpen*)getTokenResult;
+
+/*
+ *获取exactID
+ */
++ (NSString*)getExactID;
+
+/*
+ *设置自定义的网关地址
+ */
++ (void)setGatewayAddress:(NSString*)addr;
+
++ (void)setRpcConfiguration:(NSDictionary *) config;
+
+
+/**
+* 感知埋点。
+* appName - 应用名 (智科人脸:“zorro”)
+* appKeyClient - 应用key (智科人脸:“elBwppCSr9nB1LIQ”)
+* action - 感知行为编号
+* extParams - 可选扩展参数,以map方式传参
+*/
+//+(APRiskResult*)APPerceptRisk:(NSString*)appName appKeyClient:(NSString*)appKeyClient userAction:(NSInteger)action extParams:(NSDictionary *)args;
+
+
+@end

+ 29 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSSgomInfoOpen.h

@@ -0,0 +1,29 @@
+//
+//  ASSSgomInfoOpen.h
+//  APPSecuritySDK
+//
+//  Created by hongren on 2021/8/16.
+//  Copyright © 2021 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/**
+* 感知结果类。
+*/
+@interface ASSSgomResult: NSObject
+
+@property (nonatomic) NSInteger resCode;
+@property (nonatomic, strong) NSString* resInfo;
+
+@end
+
+
+@interface ASSSgomInfoOpen : NSObject
+
++ (instancetype)sharedInstance;
+
+- (ASSSgomResult*)updateSgomInfo:(int) userAction
+                            ext:(NSDictionary*) extParams;
+
+@end

+ 40 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/ASSTokenResult.h

@@ -0,0 +1,40 @@
+//
+//  ASSTokenResult.h
+//  APPSecuritySDK
+//
+//  Created by xingchen on 15/7/31.
+//  Copyright (c) 2015年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#define  ASSTokenResult      ASSTokenResultCore
+
+
+@interface ASSTokenResult : NSObject
+
+@property (nonatomic, strong) NSString* vkeyidToken;
+@property (nonatomic, strong) NSString* clientKey;
+@property (nonatomic, strong) NSString* umidToken;
+@property (nonatomic, strong) NSString* vkeyid;
+
+@end
+
+
+@interface ASSTokenResultOpen: NSObject
+
+@property (nonatomic, strong) NSString* vkeyidToken;
+@property (nonatomic, strong) NSString* clientKey;
+@property (nonatomic, strong) NSString* vkeyid;
+
+@end
+
+/**
+* 感知结果类。
+*/
+@interface APRiskResult: NSObject
+
+@property (nonatomic) int resCode;
+@property (nonatomic, strong) NSString* resInfo;
+
+@end

+ 101 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Headers/AntSecurityManager.h

@@ -0,0 +1,101 @@
+//
+//  AntSecurityManager.h
+//  APPSecuritySDK
+//
+//  Created by msq on 2018/8/20.
+//  Copyright © 2018年 Alipay. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef enum: NSInteger {
+    //正常
+    SEC_STORE_OK = 0,
+    //未找到
+    SEC_STORE_NOT_FOUND = 10001,
+    //拷贝
+    SEC_STORE_CP = 10002,
+    //内部错误
+    SEC_STORE_ERR = 10003,
+    
+    SEC_STORE_PARAM_ERR = 10004,
+    
+    SEC_STORE_DEGRADE_ERR = 10005,
+    
+} SEC_STORE_ERR_CODE;
+
+@interface APSecStoreResult : NSObject
+
+@property (nonatomic, strong) NSString* value;
+
+@property (nonatomic, assign) SEC_STORE_ERR_CODE errCode;
+
+@property (nonatomic, assign) int errCodeDetail;
+
+@end
+
+@interface AntSecurityManager : NSObject
+
+/**
+ * brief aes_encrypt
+ * ase 加密
+ * param data        原始数据
+ *
+ * return
+ * 返回加密后数据
+ * nil 表示异常
+ */
++ (NSString*)securityEncrypt:(NSString*)data;
+
+/**
+ * brief aes_decrypt
+ * ase 解密
+ * param data        加密原始数据
+ *
+ * return
+ * 返回解密后数据
+ * nil 表示异常
+ */
++ (NSString*)securityDecrypt:(NSString*)data;
+
+/**
+ * brief wbSign
+ *
+ * param data 签名数据
+ *
+ * return
+ * 签名数据 44B base64文本
+ */
++ (NSString*)wbSign:(NSString*)data;
+
+/**
+ *防拷贝存储保存数据接口
+ *@param key
+ *@param value 需要加密的数据
+ *@param bizType 业务场景
+ *@return 返回错误码,0表示正常,其他非0值都表示异常
+ */
+
++ (int) setSafeStore:(NSString*)key value:(NSString*)value bizType:(NSString*)bizType;
+
+/**
+ *防拷贝存储读取数据接口
+ *@param key
+ *@param bizType 业务场景
+ *@return 返回APSecStoreResult对象
+ *   SEC_STORE_OK                 0       正常
+ *   SEC_STORE_NOT_FOUND        10001     未找到
+ *   SEC_STORE_CP               10002     拷贝
+ *   SEC_STORE_ERR              10003     内部错误
+ */
++ (APSecStoreResult*)getSafeStore:(NSString*)key bizType:(NSString*)bizType;
+
+/**
+ *删除保存数据接口
+ *@param key
+ *@param bizType 业务场景
+ *@return 返回错误码,0表示正常,其他非0值都表示异常
+ */
++ (int) deleteSafeStore:(NSString*)key bizType:(NSString*)bizType;
+
+@end

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/Info.plist


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeDirectory


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeRequirements


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeRequirements-1


+ 559 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeResources

@@ -0,0 +1,559 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>APPSecuritySDK-Info.plist</key>
+		<data>
+		Po//BA5tM1BE58borc33LNpqXyw=
+		</data>
+		<key>Headers/APDID.h</key>
+		<data>
+		YaNffM20hdQMiNpnIoEPIHF8o+A=
+		</data>
+		<key>Headers/APDeviceColor.h</key>
+		<data>
+		sqZwHJLZ8j2L+9pkCmTqWHaRPoo=
+		</data>
+		<key>Headers/APDynamic.h</key>
+		<data>
+		TBp9H7ZpcLh5hWGFJbObSnR3sSQ=
+		</data>
+		<key>Headers/APRiskConfigReportRequest.h</key>
+		<data>
+		5vPyFFL4v0DrNrSc35DrU0204M4=
+		</data>
+		<key>Headers/APRiskConfigReportResponse.h</key>
+		<data>
+		WODwFqptygg++OMfRxg5nJhV1tM=
+		</data>
+		<key>Headers/APRiskConfigServiceProtocol.h</key>
+		<data>
+		SJJczKTD81Beaeutnk5eh5yYk6s=
+		</data>
+		<key>Headers/APRiskFileUploadProtocol.h</key>
+		<data>
+		LLqKfgEm/gVHeBO+chBoA32ce6w=
+		</data>
+		<key>Headers/APRiskLoggerProtocol.h</key>
+		<data>
+		KaoFaIX0tcWToF7p3GQSPdm1fNI=
+		</data>
+		<key>Headers/APRiskRPCProtocol.h</key>
+		<data>
+		/OdHTVHBuEGxpO5dJbde5mXoV3Q=
+		</data>
+		<key>Headers/APRiskRemoteLoggerProtocol.h</key>
+		<data>
+		L9Ca3T+cAEzjRZxJTwHTaKytgQs=
+		</data>
+		<key>Headers/APRiskReportRequest.h</key>
+		<data>
+		p0bXoJMwS+46ZRrgLqdvbEFjAmI=
+		</data>
+		<key>Headers/APRiskReportResponse.h</key>
+		<data>
+		3pzJU3RgAQBnPg/R2tEjuGJLfvc=
+		</data>
+		<key>Headers/APRiskRpcConfiguration.h</key>
+		<data>
+		ypma2woz2iRq5pghoIkfFTGVm+8=
+		</data>
+		<key>Headers/APRiskSyncHandlerProtocol.h</key>
+		<data>
+		Vum7s9ObS3JRBHwQBG4BUdk6SN8=
+		</data>
+		<key>Headers/APRiskSyncServiceProtocol.h</key>
+		<data>
+		V0kCGcKZFd1gG+a2uuDzVkzj218=
+		</data>
+		<key>Headers/APSecRDS.h</key>
+		<data>
+		ZKM/B2Jcl/et+wyK8FepeewKCi8=
+		</data>
+		<key>Headers/APSecStore.h</key>
+		<data>
+		rEuJJetfP9Aj7GLQd5R3IgSZw/c=
+		</data>
+		<key>Headers/APSecureSdk.h</key>
+		<data>
+		ywtAfrae7i2g9jT6cXJt775tdng=
+		</data>
+		<key>Headers/APSign.h</key>
+		<data>
+		r5sKoLYWS4dLLlNO9xAcWNGi6Cw=
+		</data>
+		<key>Headers/ASSCommon.h</key>
+		<data>
+		lrrlG7ZqNaz4ciXX/i5kj/NnG3A=
+		</data>
+		<key>Headers/ASSDynamicManager.h</key>
+		<data>
+		4Vk+CxCMPtR9isbOl7FqtE5jZuo=
+		</data>
+		<key>Headers/ASSLogger.h</key>
+		<data>
+		WvM9Fp3B5ZaI8D+rnHiUcBTxsdk=
+		</data>
+		<key>Headers/ASSSecureInfo.h</key>
+		<data>
+		C7uQ4VE5uwtF5ws1blMIKLKpfmI=
+		</data>
+		<key>Headers/ASSSecureOpenSdk.h</key>
+		<data>
+		KmdnMxfQN0cqG23Vuu092URfYCs=
+		</data>
+		<key>Headers/ASSSgomInfoOpen.h</key>
+		<data>
+		/AhECuNKFdWPVi1Q6oH8rMN66XM=
+		</data>
+		<key>Headers/ASSTokenResult.h</key>
+		<data>
+		X5xdpK/2lE52tWoVFEg/ZivE9UQ=
+		</data>
+		<key>Headers/AntSecurityManager.h</key>
+		<data>
+		w5tB5gEPNoVoucc6rkAlUnUhzV4=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		w68x5O87CK8wNmDyUsqdFJZmyIM=
+		</data>
+		<key>en.lproj/InfoPlist.strings</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zmV6UqBSo6r1NOz798vd5O4zTBA=
+			</data>
+			<key>optional</key>
+			<true/>
+		</dict>
+		<key>module.map</key>
+		<data>
+		nJxa72k41Z2wyhSJqqJgUyYvSgA=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>APPSecuritySDK-Info.plist</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Po//BA5tM1BE58borc33LNpqXyw=
+			</data>
+			<key>hash2</key>
+			<data>
+			B2XyqSNoreUIQ8uDojzpys2o9qi8XuLbypPrkCR+l8w=
+			</data>
+		</dict>
+		<key>Headers/APDID.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			YaNffM20hdQMiNpnIoEPIHF8o+A=
+			</data>
+			<key>hash2</key>
+			<data>
+			0nNHe4UB7qz6XFIk/QzRt79MyXYVEOukTfqa3YBJYbY=
+			</data>
+		</dict>
+		<key>Headers/APDeviceColor.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			sqZwHJLZ8j2L+9pkCmTqWHaRPoo=
+			</data>
+			<key>hash2</key>
+			<data>
+			c/mo/+N/KECjwx+fLMepqE+OqRtyfnn2hHshYhmO9IU=
+			</data>
+		</dict>
+		<key>Headers/APDynamic.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			TBp9H7ZpcLh5hWGFJbObSnR3sSQ=
+			</data>
+			<key>hash2</key>
+			<data>
+			tUrg2Z43qGA67I0mIGCqRWU6Gc2I9Yx9mn5e2mu9XQU=
+			</data>
+		</dict>
+		<key>Headers/APRiskConfigReportRequest.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			5vPyFFL4v0DrNrSc35DrU0204M4=
+			</data>
+			<key>hash2</key>
+			<data>
+			OMGRtuphIpujn+dr+tCsCMIUw+KV8WQ2zE+bsdDUVCw=
+			</data>
+		</dict>
+		<key>Headers/APRiskConfigReportResponse.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			WODwFqptygg++OMfRxg5nJhV1tM=
+			</data>
+			<key>hash2</key>
+			<data>
+			NvTd6RhL7dbwHKHDPiqBqkIc9aWUQLV5SwFFsEorcqg=
+			</data>
+		</dict>
+		<key>Headers/APRiskConfigServiceProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			SJJczKTD81Beaeutnk5eh5yYk6s=
+			</data>
+			<key>hash2</key>
+			<data>
+			RyMjAfHvdfRW5n+MDPHVlPZ6VM0Kr/T2A133j9ytwDQ=
+			</data>
+		</dict>
+		<key>Headers/APRiskFileUploadProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			LLqKfgEm/gVHeBO+chBoA32ce6w=
+			</data>
+			<key>hash2</key>
+			<data>
+			b2wnReDRJkaR7JxbLjLQXdNsfQbd29tkXtSh/5sjuGo=
+			</data>
+		</dict>
+		<key>Headers/APRiskLoggerProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			KaoFaIX0tcWToF7p3GQSPdm1fNI=
+			</data>
+			<key>hash2</key>
+			<data>
+			k2gnCevVtGYZ1cgzxh9FrAlnVnnDzD/3l8lIuDPVuDc=
+			</data>
+		</dict>
+		<key>Headers/APRiskRPCProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			/OdHTVHBuEGxpO5dJbde5mXoV3Q=
+			</data>
+			<key>hash2</key>
+			<data>
+			1v7HTHTTRf+k61+lf5L1URwSh/MFv72gdnHxTodGrJA=
+			</data>
+		</dict>
+		<key>Headers/APRiskRemoteLoggerProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			L9Ca3T+cAEzjRZxJTwHTaKytgQs=
+			</data>
+			<key>hash2</key>
+			<data>
+			BmYD66C5squNiQNaLya1JrWDDCJ9V8w6C+AVGpr8QF4=
+			</data>
+		</dict>
+		<key>Headers/APRiskReportRequest.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			p0bXoJMwS+46ZRrgLqdvbEFjAmI=
+			</data>
+			<key>hash2</key>
+			<data>
+			XH1Y2gtlfBaBoOANsxALY7w6fBn81SMhxHKHNVbEFcQ=
+			</data>
+		</dict>
+		<key>Headers/APRiskReportResponse.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			3pzJU3RgAQBnPg/R2tEjuGJLfvc=
+			</data>
+			<key>hash2</key>
+			<data>
+			PAxPqKwwsKVZNGSWI01WquBx9DZcg0tTsnYe8/UwlAM=
+			</data>
+		</dict>
+		<key>Headers/APRiskRpcConfiguration.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ypma2woz2iRq5pghoIkfFTGVm+8=
+			</data>
+			<key>hash2</key>
+			<data>
+			xucoo82E5P13oVpu65VVAqbLK11kcVmtbwRCVlEQI5E=
+			</data>
+		</dict>
+		<key>Headers/APRiskSyncHandlerProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Vum7s9ObS3JRBHwQBG4BUdk6SN8=
+			</data>
+			<key>hash2</key>
+			<data>
+			4wA6oLvZ4U8u4Ff5SSuprJISDBd1X+Zx5MqlV0aGoik=
+			</data>
+		</dict>
+		<key>Headers/APRiskSyncServiceProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			V0kCGcKZFd1gG+a2uuDzVkzj218=
+			</data>
+			<key>hash2</key>
+			<data>
+			oSMsgkxXfg8rdX0ZWmUqRmlTF1fgLfINWgGqYcBeMfI=
+			</data>
+		</dict>
+		<key>Headers/APSecRDS.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ZKM/B2Jcl/et+wyK8FepeewKCi8=
+			</data>
+			<key>hash2</key>
+			<data>
+			N3/Ych+ScRXiaFWFlsCWXqyGbWdqHhBCHpyp0sQFYPc=
+			</data>
+		</dict>
+		<key>Headers/APSecStore.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			rEuJJetfP9Aj7GLQd5R3IgSZw/c=
+			</data>
+			<key>hash2</key>
+			<data>
+			R7UHcZTpvTV6HWYJm1bEji6L2ry1wSoCprSTRHEqP0M=
+			</data>
+		</dict>
+		<key>Headers/APSecureSdk.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ywtAfrae7i2g9jT6cXJt775tdng=
+			</data>
+			<key>hash2</key>
+			<data>
+			S8aripi9OWRTxz5CBuWeYoSqMhcgLX2GUUT5Ihnwd8o=
+			</data>
+		</dict>
+		<key>Headers/APSign.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			r5sKoLYWS4dLLlNO9xAcWNGi6Cw=
+			</data>
+			<key>hash2</key>
+			<data>
+			b7PZT7wIWrHy7znjbbaE/GJMi8zaIla0fduXvyeUNHE=
+			</data>
+		</dict>
+		<key>Headers/ASSCommon.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			lrrlG7ZqNaz4ciXX/i5kj/NnG3A=
+			</data>
+			<key>hash2</key>
+			<data>
+			adc/BhjRDcEbnGdNnfGBsTu2jTNZbT2Csi+oHGqx2oY=
+			</data>
+		</dict>
+		<key>Headers/ASSDynamicManager.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			4Vk+CxCMPtR9isbOl7FqtE5jZuo=
+			</data>
+			<key>hash2</key>
+			<data>
+			lMtcIcfdivy04/miLJ4swfqpcY6/+5XYbnQMhMiToRw=
+			</data>
+		</dict>
+		<key>Headers/ASSLogger.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			WvM9Fp3B5ZaI8D+rnHiUcBTxsdk=
+			</data>
+			<key>hash2</key>
+			<data>
+			JNJIdG9385MDYXjB+F1Mj1NXHTx8faIKEft1KjkceeI=
+			</data>
+		</dict>
+		<key>Headers/ASSSecureInfo.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			C7uQ4VE5uwtF5ws1blMIKLKpfmI=
+			</data>
+			<key>hash2</key>
+			<data>
+			VS1+TQV7GpG7Z2dfhSkfmGi3KjE6cGBUxof1/s+bLPo=
+			</data>
+		</dict>
+		<key>Headers/ASSSecureOpenSdk.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			KmdnMxfQN0cqG23Vuu092URfYCs=
+			</data>
+			<key>hash2</key>
+			<data>
+			Xq/bbsjzFy4rMCr4osH17Nif1NZQqxmWKvgRHq4THr0=
+			</data>
+		</dict>
+		<key>Headers/ASSSgomInfoOpen.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			/AhECuNKFdWPVi1Q6oH8rMN66XM=
+			</data>
+			<key>hash2</key>
+			<data>
+			j8Lnl+QqgD+rwdHhl7yEh7Op76XuicUYflL4/LNrFXE=
+			</data>
+		</dict>
+		<key>Headers/ASSTokenResult.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			X5xdpK/2lE52tWoVFEg/ZivE9UQ=
+			</data>
+			<key>hash2</key>
+			<data>
+			7O9oGJk95fMdxJyn2mOlI1Iqe1vPcmPRvP5Rgj8J9zk=
+			</data>
+		</dict>
+		<key>Headers/AntSecurityManager.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			w5tB5gEPNoVoucc6rkAlUnUhzV4=
+			</data>
+			<key>hash2</key>
+			<data>
+			5QS2NUN5NsRJ5dYsLrHlgLY/GLXNwZDSsR5gN4lin6k=
+			</data>
+		</dict>
+		<key>en.lproj/InfoPlist.strings</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zmV6UqBSo6r1NOz798vd5O4zTBA=
+			</data>
+			<key>hash2</key>
+			<data>
+			kmHsztpgjvF0JW5f3HdMHm49z1M0CcG8OT1JDQHHE/E=
+			</data>
+			<key>optional</key>
+			<true/>
+		</dict>
+		<key>module.map</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			nJxa72k41Z2wyhSJqqJgUyYvSgA=
+			</data>
+			<key>hash2</key>
+			<data>
+			XRW9liRaYf8O2c1bSPVShfimQ3Yfcd1SbIKvIE+sv7c=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>

+ 0 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/_CodeSignature/CodeSignature


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/en.lproj/InfoPlist.strings


+ 9 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/APPSecuritySDK.framework/module.map

@@ -0,0 +1,9 @@
+module APPSecuritySDK {
+    header "Headers/APSecureSdk.h"
+    header "Headers/APDID.h"
+    header "Headers/APDeviceColor.h"
+    header "Headers/APSign.h"
+    header "Headers/APDynamic.h"
+    header "Headers/ASSTokenResult.h"
+    export *
+}

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/AliyunFaceAuthFacade


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/AliyunFaceAuthFacade-Info.plist


+ 44 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/Headers/AliyunFaceAuthFacade.h

@@ -0,0 +1,44 @@
+//
+//  AliyunFaaceAuthFacade.h
+//  AliyunFaceAuthFacade
+//
+//  Created by 汪澌哲 on 2022/11/21.
+//  Copyright © 2022 DTF. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <DTFUtility/ZIMResponse.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AliyunFaceAuthFacade : NSObject
+
++ (void)init;
+
++ (void)initSDK;
+
+/* IPV6的初始化接口 只有你的网络环境强制要求是IPV6的时候,才调用initIPv6。
+ */
++ (void)initIPv6;
+
++ (NSString *)getVersion;
+
++ (NSString *)getNFCVersion;
+
++ (void)preload:(NSDictionary *)param completion:(void (^)(BOOL success))completion;
+
++ (NSDictionary *)getMetaInfo;
+
++ (NSDictionary *)getNFCMetaInfo;
+
++ (void)verifyWith:(NSString *)zimId
+         extParams:(NSDictionary *)params
+      onCompletion:(void (^)(ZIMResponse *response))callback;
+
++ (void)nfcVerifyWith:(NSString *)zimId
+         extParams:(NSDictionary *)params
+      onCompletion:(void (^)(ZIMResponse *response))callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/Headers/PoPGatewayNetwork.h

@@ -0,0 +1,28 @@
+//
+//  PoPGatewayNetwork.h
+//  ZimDemo
+//
+//  Created by sanyuan.he on 2020/1/20.
+//  Copyright © 2020 com.. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface PoPGatewayNetwork : NSObject
+
+-(void)bizSendContent:(NSDictionary*)serviceParameters completionBlock:(void (^) (BOOL success,NSURLResponse *response, NSData *data))completionBlock;
+
+-(void)verifySendContent:(NSDictionary*)serviceParameters completionBlock:(void (^) (BOOL success,NSURLResponse *response, NSData *data))completionBlock;
+
+
+-(void)sendInitFaceVerifyContent:(NSDictionary*)serviceParameters keyName:(NSString*)name initKey:(NSString *)initKey initSimpleValue:(NSString *)initSimpleValue completionBlock:(void (^) (BOOL success,NSURLResponse *response, NSData *data))completionBlock;
+
+-(void)sendOCRContent:(NSDictionary*)serviceParameters completionBlock:(void (^) (BOOL success,NSURLResponse *response, NSData *data))completionBlock;
+
+-(void)sendLogContent:(NSDictionary*)serviceParameters extraHeader:(NSDictionary *)header completionBlock:(void (^) (BOOL success,NSURLResponse *response, NSData *data))completionBlock;
+
+@end
+
+NS_ASSUME_NONNULL_END

二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/Info.plist


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunFaceAuthFacade.framework/en.lproj/InfoPlist.strings


二進制
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/AliyunOSSiOS


+ 20 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/Headers/AliyunOSSiOS.h

@@ -0,0 +1,20 @@
+//
+//  AliyunOSSiOS.h
+//  AliyunOSSiOS
+//
+//  Created by xuyecan on 28/11/2016.
+//  Copyright © 2016 xuyecan. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//! Project version number for AliyunOSSiOS.
+FOUNDATION_EXPORT double AliyunOSSiOSVersionNumber;
+
+//! Project version string for AliyunOSSiOS.
+FOUNDATION_EXPORT const unsigned char AliyunOSSiOSVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <AliyunOSSiOS/PublicHeader.h>
+
+#import "OSSService.h"
+#import "OSSXMLDictionary.h"

+ 19 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/Headers/NSDate+OSS.h

@@ -0,0 +1,19 @@
+//
+//  NSDate+OSS.h
+//  AliyunOSSSDK
+//
+//  Created by huaixu on 2018/7/31.
+//  Copyright © 2018年 aliyun. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/**
+ Categories NSDate
+ */
+@interface NSDate (OSS)
++ (void)oss_setClockSkew:(NSTimeInterval)clockSkew;
++ (NSDate *)oss_dateFromString:(NSString *)string;
++ (NSDate *)oss_clockSkewFixedDate;
+- (NSString *)oss_asStringValue;
+@end

+ 15 - 0
staff_ui/nativeplugins/AP-FaceDetectModule/ios/AliyunOSSiOS.framework/Headers/NSMutableData+OSS_CRC.h

@@ -0,0 +1,15 @@
+//
+//  NSMutableData+OSS_CRC.h
+//  AliyunOSSSDK
+//
+//  Created by 怀叙 on 2017/11/29.
+//  Copyright © 2017年 阿里云. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NSMutableData (OSS_CRC)
+
+- (uint64_t)oss_crc64;
+
+@end

部分文件因文件數量過多而無法顯示