react_hsbc_teller 1.9.11 → 1.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,7 @@ import cameraImgOpen from '../../assets/img/icon_camera.png'
14
14
  import cameraImgCloe from '../../assets/img/icon_cameraOne.png'
15
15
  import beautyImg from '../../assets/img/whiteningLut.jpg'
16
16
  import ocrImage from '../../assets/img/jietu.png'
17
+ import faceImage from '../../assets/img/jietu_face.png'
17
18
  import autod from '../../assets/mp3/joinmeeting.mp3'
18
19
  import internalJoin from '../../assets/mp3/internalJoin.mp3'
19
20
  import internalLeft from '../../assets/mp3/internalLeft.mp3'
@@ -40,8 +41,11 @@ import 'antd/lib/space/style'
40
41
  import styled from 'styled-components';
41
42
  import { Button } from '../../../node_modules/antd/lib/index';
42
43
  import SignMy from '../sign/signMy.jsx'
44
+ import Step from '../components/step/step.jsx'
43
45
  import axios from 'axios';
44
46
  import CryptoJS from "crypto-js";
47
+ const IDtypeFront = '请客户在其设备后置摄像头下展示证件正面(如:身份证照片页面)'
48
+ const IDtypeBack = '请在后置摄像头下展示证件反面(如:身份证国徽页)'
45
49
  const { Option } = Select;
46
50
  const LEAVE_TYPE = {
47
51
  TELLER_EXIT: 1, // 坐席退出
@@ -179,7 +183,7 @@ class Video extends Component {
179
183
  isWhiteboard: false,
180
184
  isSelect: '',
181
185
  loading: false,
182
- titleModal: '人脸识别',
186
+ titleModal: '身份验证',
183
187
  faceCustomerType: 1, // 1无感人脸,2ocr
184
188
  faceCustomerUid: '',
185
189
  customerList: [],
@@ -188,6 +192,7 @@ class Video extends Component {
188
192
  isModalVisibleInvitation: false,
189
193
  linkData: '',
190
194
  roomCustomerList: [],
195
+ userIdCardResults: {},
191
196
  facialImg: '',
192
197
  isFaceImage: false,
193
198
  isModalVisibleFacial: false,
@@ -325,7 +330,7 @@ class Video extends Component {
325
330
  documentType: '',
326
331
  isCustomerSelect: true,
327
332
  documentError: '',
328
- customerTitleName: '客户身份识别',
333
+ customerTitleName: '客户身份验证',
329
334
  certificateType: 'ID_CARD',
330
335
  customerName: '',
331
336
  IDtypeFrontOrBack: '',
@@ -352,7 +357,7 @@ class Video extends Component {
352
357
  saveLog = (val) => {
353
358
  axios({
354
359
  method: 'get',
355
- baseURL: this.props.logUrl + '&message=' + encodeURIComponent(val) + '&react_hsbc_teller=1.9.11&logTime=' + Date.now() + '&mtoken=' + encodeURIComponent(this.state.rtoken) + '&roomId=' + encodeURIComponent(this.state.channelId) + '&sessionId=' + encodeURIComponent(this.state.sessionId) + '&appointmentID=' + this.props.businessNumber,
360
+ baseURL: this.props.logUrl + '&message=' + encodeURIComponent(val) + '&react_hsbc_teller=1.9.13&logTime=' + Date.now() + '&mtoken=' + encodeURIComponent(this.state.rtoken) + '&roomId=' + encodeURIComponent(this.state.channelId) + '&sessionId=' + encodeURIComponent(this.state.sessionId) + '&appointmentID=' + this.props.businessNumber,
356
361
 
357
362
  }).then(res => {
358
363
 
@@ -780,7 +785,7 @@ class Video extends Component {
780
785
  this.setState({
781
786
  cardFailReason: '证件图片不清晰,请重试。返回重拍时,请检查并确保身份证件图片信息完整清晰后再提交核查。[#'+value+'#]'
782
787
  })
783
- } else if(value == -1001 || value == -1002|| value == -1003||value == -1004||value == -1005||value==-1006) {
788
+ } else if(value == -1001 || value == -1002|| value == -1003||value == -1004||value == -1005||value==-100801||value==-100802) {
784
789
  this.setState({
785
790
  cardFailReason: '系统或网络连接异常,请重试。若仍有问题,请联系Support同事。[#'+value+'#]'
786
791
  })
@@ -799,7 +804,11 @@ class Video extends Component {
799
804
  this.setState({
800
805
  faceFailReason: '用户信息核查未通过。请返回重试。返回重拍时,请检查并确保客户照片完整清晰后再提交核查。[#'+ value + '#]'
801
806
  })
802
- }else if(value == 209) {
807
+ }else if(value == 206) {
808
+ this.setState({
809
+ faceFailReason: '用户信息核查无法处理,请重试。若仍有问题,请联系Support同事。[#'+ value + '#]'
810
+ })
811
+ } else if(value == 209) {
803
812
  this.setState({
804
813
  faceFailReason: '用户信息核查未通过。请确认客户与其提供的证件信息一致后,再提交核查。[#'+ value + '#]'
805
814
  })
@@ -816,9 +825,15 @@ class Video extends Component {
816
825
  }
817
826
  contrastFaceVerify = async () => {
818
827
  try {
828
+ let userInfo = this.state.userIdCardResults[this.state.faceCustomerUid]
829
+ console.log(this.state.faceCustomerUid, userInfo)
830
+ if (!userInfo || !userInfo.idCardNumber) {
831
+ console.log('没有身份证ocr信息')
832
+ return
833
+ }
819
834
  let result = await API.contrastFaceVerify({
820
- idCardNumber: this.state.idCardNumberFace,
821
- idCardName: this.state.idCardNameFace,
835
+ idCardName: userInfo.idCardName, // idCardName: this.state.idCardNameFace,
836
+ idCardNumber: userInfo.idCardNumber, // idCardNumber: this.state.idCardNumberFace,
822
837
  staffId: this.props.tellerAccount,
823
838
  activityId: this.props.businessNumber,
824
839
  appAccount: this.state.faceCustomerUid,
@@ -832,7 +847,10 @@ class Video extends Component {
832
847
  loadingFace: false,
833
848
  faceResuly: 'success',
834
849
  isFaceImage: '',
835
- faceFailReason: ''
850
+ faceFailReason: '',
851
+ idCardNameFace: userInfo.idCardName,
852
+ idCardNumberFace: userInfo.idCardNumber,
853
+ certificateValidityFace: userInfo.certificateValidity
836
854
  })
837
855
  // this.setState({
838
856
  // isModalVisibleFacial: false
@@ -1018,7 +1036,7 @@ class Video extends Component {
1018
1036
  isCustomerSelect: true,
1019
1037
  customerSelect: list.length == 1 ? 1 : '',
1020
1038
 
1021
- customerTitleName: '客户身份识别'
1039
+ customerTitleName: '客户身份验证'
1022
1040
  },()=>{
1023
1041
  console.log(this.state.customerSelect)
1024
1042
  this.setState({
@@ -1083,7 +1101,7 @@ class Video extends Component {
1083
1101
  if (this.isFileSuccuse()) {
1084
1102
  this.state.faceCustomerType = 1
1085
1103
  this.setState({
1086
- titleModal: '人脸识别'
1104
+ titleModal: '身份验证'
1087
1105
  })
1088
1106
  this.selectCustomer('facial')
1089
1107
  }
@@ -1092,7 +1110,7 @@ class Video extends Component {
1092
1110
  if (this.isFileSuccuse()) {
1093
1111
  this.state.faceCustomerType = 2
1094
1112
  this.setState({
1095
- titleModal: 'OCR识别'
1113
+ titleModal: '拍摄证件照片'
1096
1114
  })
1097
1115
  this.selectCustomer('ocr')
1098
1116
  }
@@ -3871,7 +3889,7 @@ class Video extends Component {
3871
3889
  }
3872
3890
  }
3873
3891
  componentWillMount() {
3874
- console.log('hsbc_teller_sdk', '1.9.11')
3892
+ console.log('hsbc_teller_sdk', '1.9.13')
3875
3893
  if (this.props.sessionId) {
3876
3894
  this.getRoomStatus({
3877
3895
  sessionId: this.props.sessionId
@@ -4241,6 +4259,56 @@ class Video extends Component {
4241
4259
  PasswordSFP: event.target.value
4242
4260
  })
4243
4261
  }
4262
+ handleFinishOcr = async (type) => {
4263
+ // 非身份证直接入库
4264
+ if (type == 'noFace') {
4265
+ await this.confirmCallback()
4266
+ // this.setState({
4267
+ // idCardNameFace: this.state.idCardName,
4268
+ // idCardNumberFace: this.state.idCardNumber,
4269
+ // certificateValidityFace: this.state.certificateValidity
4270
+ // },()=>{
4271
+ this.setState({
4272
+ isModalVisibleFacial: false,
4273
+ cardResuly: '',
4274
+ idCardNumber: '',
4275
+ idCardName: '',
4276
+ certificateValidity: '',
4277
+ })
4278
+ // })
4279
+ } else {
4280
+ console.log('身份证ocr')
4281
+ // 身份证,进行人脸识别后再入库
4282
+ this.state.userIdCardResults[this.state.faceCustomerUid] = {
4283
+ idCardName: this.state.idCardName,
4284
+ idCardNumber: this.state.idCardNumber,
4285
+ customerName: this.state.customerName,
4286
+ certificateValidity: this.state.certificateValidity,
4287
+ }
4288
+ console.log(this.state.userIdCardResults)
4289
+ this.setState({
4290
+ idCardNameFace: this.state.idCardName,
4291
+ idCardNumberFace: this.state.idCardNumber,
4292
+ certificateValidityFace: this.state.certificateValidity,
4293
+ userIdCardResults: this.state.userIdCardResults
4294
+ },()=>{
4295
+ this.state.faceCustomerType = 1
4296
+ this.setState({
4297
+ cardResuly: '',
4298
+ certificateValidity: '',
4299
+ idCardNumber: '',
4300
+ idCardName: '',
4301
+ titleModal: '身份验证',
4302
+ // clickedFacial: true,
4303
+ facialImg: faceImage,
4304
+ isFaceImage: false
4305
+ })
4306
+ })
4307
+ setTimeout(() => {
4308
+ this.publishVideoTwo()
4309
+ }, 0);
4310
+ }
4311
+ }
4244
4312
  // ocr结果入库
4245
4313
  confirmCallback = async (data) => {
4246
4314
  try {
@@ -4258,44 +4326,7 @@ class Video extends Component {
4258
4326
  });
4259
4327
  console.log('confirmCallback', result)
4260
4328
  if (result.code == 200) {
4261
- console.log(data)
4262
-
4263
- if (data == 'noFace') {
4264
- this.setState({
4265
- idCardNameFace: this.state.idCardName,
4266
- idCardNumberFace: this.state.idCardNumber,
4267
- certificateValidityFace: this.state.certificateValidity
4268
- },()=>{
4269
- this.setState({
4270
- isModalVisibleFacial: false,
4271
- cardResuly: '',
4272
- idCardNumber: '',
4273
- idCardName: '',
4274
- certificateValidity: '',
4275
- })
4276
- })
4277
- } else {
4278
- console.log('data')
4279
- this.setState({
4280
- idCardNameFace: this.state.idCardName,
4281
- idCardNumberFace: this.state.idCardNumber,
4282
- certificateValidityFace: this.state.certificateValidity
4283
- },()=>{
4284
- this.state.faceCustomerType = 1
4285
- this.setState({
4286
- cardResuly: '',
4287
- certificateValidity: '',
4288
- idCardNumber: '',
4289
- idCardName: '',
4290
- titleModal: '人脸识别',
4291
- // clickedFacial: true,
4292
- facialImg: ocrImage,
4293
- isFaceImage: false
4294
- })
4295
- })
4296
- this.publishVideoTwo()
4297
- }
4298
-
4329
+ // console.log(data)
4299
4330
  } else {
4300
4331
  console.log('1')
4301
4332
  this.messageClick('保持信息失败', 'error')
@@ -4485,7 +4516,7 @@ class Video extends Component {
4485
4516
  }
4486
4517
  handleOkFacial = () => {
4487
4518
  if (this.state.faceCustomerType == 2) {
4488
- if (this.state.IDtypeFrontOrBack == '请截取证件头像面') {
4519
+ if (this.state.IDtypeFrontOrBack == IDtypeFront) {
4489
4520
  if(this.state.documentType == 'PASSPORT_CARD' || this.state.documentType == 'TW_PASS_CARD' || this.state.documentType == 'HK_MO_PASS_CARD') {
4490
4521
  this.setState({
4491
4522
  loadingFace: true
@@ -4494,12 +4525,12 @@ class Video extends Component {
4494
4525
  } else {
4495
4526
  this.setState({
4496
4527
  facialImg: ocrImage,
4497
- IDtypeFrontOrBack: '请截取证件国徽面',
4528
+ IDtypeFrontOrBack: IDtypeBack,
4498
4529
  isFaceImage: false,
4499
4530
  })
4500
4531
  }
4501
4532
 
4502
- } else if (this.state.IDtypeFrontOrBack == '请截取证件国徽面') {
4533
+ } else if (this.state.IDtypeFrontOrBack == IDtypeBack) {
4503
4534
  this.setState({
4504
4535
  loadingFace: true
4505
4536
  })
@@ -4519,6 +4550,39 @@ class Video extends Component {
4519
4550
  }
4520
4551
 
4521
4552
  };
4553
+ handleFinishFacial = async () => {
4554
+ let userInfo = this.state.userIdCardResults[this.state.faceCustomerUid]
4555
+ console.log(this.state.faceCustomerUid, userInfo)
4556
+ if (!userInfo || !userInfo.idCardNumber) {
4557
+ console.log('没有身份证ocr信息')
4558
+ return
4559
+ }
4560
+ this.handleCancelFacial();
4561
+ try {
4562
+ let result = await API.confirmCallback({
4563
+ idCardName: userInfo.idCardName,
4564
+ staffId: this.props.tellerAccount,
4565
+ activityId: this.props.businessNumber,
4566
+ appAccount: this.state.faceCustomerUid,
4567
+ idCardNumber: userInfo.idCardNumber,
4568
+ sessionId: this.state.sessionId,
4569
+ certificateType: 'ID_CARD',
4570
+ customerName: userInfo.customerName,
4571
+ startDate: userInfo.certificateValidity ? userInfo.certificateValidity.split('-')[0] : '',
4572
+ endDate: userInfo.certificateValidity ? userInfo.certificateValidity.split('-')[1] : '',
4573
+ });
4574
+ console.log('confirmCallback', result)
4575
+ if (result.code == 200) {
4576
+ // console.log(data)
4577
+ } else {
4578
+ console.log('1')
4579
+ this.messageClick('保持信息失败', 'error')
4580
+ }
4581
+ } catch (err) {
4582
+ console.log('2',err)
4583
+ this.messageClick('保持信息失败', 'error')
4584
+ }
4585
+ };
4522
4586
  handleCancelFacial = () => {
4523
4587
  callNimIM('sendCustomCmdMsg', {
4524
4588
  customId: this.state.imRoomId,
@@ -4568,7 +4632,7 @@ class Video extends Component {
4568
4632
  isFaceImage: false,
4569
4633
  facialImg: ocrImage,
4570
4634
  disabledIdCard: true,
4571
- IDtypeFrontOrBack: '请截取证件头像面',
4635
+ IDtypeFrontOrBack: IDtypeFront,
4572
4636
  facialImgFront: '',
4573
4637
  facialImgBack: '',
4574
4638
  faceResuly: '',
@@ -4728,9 +4792,9 @@ class Video extends Component {
4728
4792
  clickedFacial: false,
4729
4793
  clickedOcr: false,
4730
4794
  isFaceImage: false,
4731
- facialImg: ocrImage,
4795
+ facialImg: this.state.titleModal=='身份验证'? faceImage : ocrImage,
4732
4796
  disabledIdCard: true,
4733
- IDtypeFrontOrBack: '请截取证件头像面',
4797
+ IDtypeFrontOrBack: IDtypeFront,
4734
4798
  facialImgFront: '',
4735
4799
  facialImgBack: '',
4736
4800
  faceResuly: '',
@@ -4751,13 +4815,13 @@ class Video extends Component {
4751
4815
  }
4752
4816
  }
4753
4817
  sgsinImage = () => {
4754
- if (this.state.IDtypeFrontOrBack == '请截取证件头像面') {
4818
+ if (this.state.IDtypeFrontOrBack == IDtypeFront) {
4755
4819
  this.setState({
4756
4820
  facialImg: this.test_controller.TakePicture(1, undefined, undefined, this.state.customOcrSid, 'png'),
4757
4821
  isFaceImage: true,
4758
4822
  facialImgFront: this.test_controller.TakePicture(1, undefined, undefined, this.state.customOcrSid, 'png'),
4759
4823
  })
4760
- } else if (this.state.IDtypeFrontOrBack == '请截取证件国徽面') {
4824
+ } else if (this.state.IDtypeFrontOrBack == IDtypeBack) {
4761
4825
  this.setState({
4762
4826
  facialImg: this.test_controller.TakePicture(1, undefined, undefined, this.state.customOcrSid, 'png'),
4763
4827
  isFaceImage: true,
@@ -5614,7 +5678,7 @@ class Video extends Component {
5614
5678
  documentType: '',
5615
5679
  isCustomerSelect: true,
5616
5680
  customerSelect: this.state.customerList.length == 1 ? 1 : '',
5617
- customerTitleName: '客户身份识别'
5681
+ customerTitleName: '客户身份验证'
5618
5682
  })
5619
5683
  }
5620
5684
  handleOkCustomer = () => {
@@ -5643,19 +5707,19 @@ class Video extends Component {
5643
5707
  "data": {
5644
5708
  'sessionId': this.state.sessionId,
5645
5709
  'userId': this.state.customerList[this.state.customerSelect - 1].customId,
5646
- 'title': '为了有效确认客户身份,请您配合进行我行的身份识别和核验。请您阅读以下内容,若您同意,请您之后在摄像头前出示您的身份证件,我行将对您的身份证件拍照并采集证件信息;同时,我行会对您进行脸部拍照,采集您的脸部图像。',
5710
+ 'title': '为了有效确认客户身份,请您配合汇丰银行(中国)有限公司(”我行”)进行身份识别和核验。请您阅读以下内容。若您同意,请您之后在摄像头前出示您的身份证件,我行将对您的身份证件拍照并采集证件信息;同时,我行会对您进行脸部拍照,采集您的脸部图像。',
5647
5711
  'title_en': 'In order to confirm client’s identify, please cooperate with HSBC (China) Co., Ltd. (“the bank”) for identity verification. Please read the following and provide your authorization to the bank to capture your ID image and information, take picture of your face and retain them for identification and verification purpose.',
5648
5712
  'navBarTitle': '客户授权',
5649
5713
  'navBarTitle_en': '客户授权(en)',
5650
5714
  'list': [
5651
5715
  {
5652
5716
  'id': 1,
5653
- 'content': '您是否授权汇丰中国对您的证件以及脸部进行拍照,采集并留存您的证件信息以及脸部图像以便我行进行身份识别?',
5717
+ 'content': '您是否授权我行对您的证件以及脸部进行拍照,采集并留存您的证件信息以及脸部图像以便我行进行身份识别?',
5654
5718
  'content_en': 'Do you agree the bank to photograph your ID and face image, collect and retain ID information and face image for identification?'
5655
5719
  },
5656
5720
  {
5657
5721
  'id': 2,
5658
- 'content': '为了通过人脸对比进行身份识别和核验,我行需要将您的姓名、身份证件号码和脸部图像发送给中国人民银行或全国公民身份证号码查询服务中心授权的第三方,并由第三方进一步发送至中国人民银行或全国公民身份证号码查询服务中心进行人脸对比或信息核对。',
5722
+ 'content': '为了通过人脸对比进行身份识别和核验,我行需要将您的姓名、身份证件号码和脸部图像发送给中国公安系统(包括其所属机构及代理机构)进行人脸对比及信息核对。',
5659
5723
  'content_en': 'For further identification and verification purpose, do you agree the bank to send your name, ID number and face image to the public security authority (including its affiliates or agencies) to perform the identification and information verification process?'
5660
5724
  },
5661
5725
  {
@@ -5675,19 +5739,19 @@ class Video extends Component {
5675
5739
  "data": {
5676
5740
  'sessionId': this.state.sessionId,
5677
5741
  'userId': this.state.customerList[this.state.customerSelect - 1].customId,
5678
- 'title': '为了有效确认客户身份,请您配合进行我行的身份识别。请您阅读以下内容,若您同意,请您之后在摄像头前出示您的身份证件,我行将对您的身份证件拍照并采集证件信息;',
5742
+ 'title': '为了有效确认客户身份,请您配合汇丰银行(中国)有限公司(“我行”)进行身份识别。请您阅读以下内容,若您同意,请您之后在摄像头前出示您的身份证件,我行将对您的身份证件拍照并采集证件信息;',
5679
5743
  'title_en': 'In order to confirm client’s identify, please cooperate with HSBC (China) Co., Ltd. (“the bank”) for identity verification. Please read the following and provide your authorization to the bank to capture your ID image and information and retain them for identification and verification purpose. ',
5680
5744
  'navBarTitle': '客户授权',
5681
5745
  'navBarTitle_en': '客户授权(en)',
5682
5746
  'list': [
5683
5747
  {
5684
5748
  'id': 1,
5685
- 'content': '您是否授权汇丰中国对您的证件进行拍照,采集并留存您的证件信息以便我行进行身份确认?',
5749
+ 'content': '您是否授权我行对您的证件进行拍照,采集并留存您的证件信息以便我行进行身份确认?',
5686
5750
  'content_en': 'Do you agree the bank to photograph your ID ,collect and retain ID information and for identification?'
5687
5751
  },
5688
5752
  {
5689
5753
  'id': 2,
5690
- 'content': '本人同意使用电子签名方式签署作为陪同者所需签署的文件,并授权汇丰银行(中国)有限公司(“汇丰中国”)通过电子签名服务供应商向第三方认证机构提供本人的姓名和身份证件号码,用以申请本人专属的数字证书,本人在电子设备上签署文件即表明本人指示汇丰中国使用本人专属电子证书对该等文件进行电子签名。本人知悉并同意,电子签名和手写签名具有同等法律效力。 \n说明:电子签名服务供应商和第三方认证机构的名称和联系方式如下:' +
5754
+ 'content': '对于陪同者所需签署的文件,您是否同意使用电子签名方式签署,并授权汇丰银行(中国)有限公司(“汇丰中国”)通过电子签名服务供应商向第三方认证机构提供您本人的姓名和身份证件号码,用以申请您本人专属的数字证书?您本人在电子设备上签署文件即表明您本人指示汇丰中国使用您本人专属电子证书对该等文件进行电子签名。您本人知悉并同意,电子签名和手写签名具有同等法律效力。 \n说明:电子签名服务供应商和第三方认证机构的名称和联系方式如下:' +
5691
5755
  '\n电子签名服务供应商:杭州尚尚签网络科技有限公司(联系电话:4009936665)\n第三方认证机构: \n北京天威诚信电子商务服务有限公司(联系电话:010-50947500)\n中金金融认证中心有限公司(联系电话:010-83526655)',
5692
5756
  'content_en': 'To sign in the relevant document required as companion, do you agree to adopt electronic signature in it?. And you shall authorize HSBC (China) Co., Ltd to provide your name and identity document number to the certificate authority through the electronic signature service provider to apply for your own digital certificate. By signing the document on the electronic device, you authorize HSBC (China) Co., Ltd to use your digital certificate and apply your electronic signature to the documents. You understand and agree that electronic signature has the same legal effect as handwritten signature.' +
5693
5757
  '\nPlease be noted the names and contact information of the electronic signature service provider and the certificate authority are as follows:\nElectronic signature service provider: Hangzhou BestSign Network Technology Co. Ltd. (Contact: 4009936665) \nCertificate Authority: \nChina Financial Certification Authority (Contact: 010-83526655)\niTrusChina Co., Ltd (Contact: 010-50947500)'
@@ -6409,7 +6473,7 @@ class Video extends Component {
6409
6473
  virtualization={this.virtualization}
6410
6474
  ></Foot>
6411
6475
  {/* 暂停恢复会话 */}
6412
- <Modal cancelText="取消" okText="确定" visible={this.state.isModalVisible} onOk={this.handleOk}
6476
+ <Modal cancelText="取消" okText="确定" visible={this.state.isModalVisible} maskClosable={false} onOk={this.handleOk}
6413
6477
  onCancel={this.handleCancel}>
6414
6478
  {
6415
6479
  this.state.isSuspend && <span>确定是否恢复会话?</span>
@@ -6419,7 +6483,7 @@ class Video extends Component {
6419
6483
  }
6420
6484
  </Modal>
6421
6485
  {/* 是否退出会议*/}
6422
- <Modal closable={false} centered={true} visible={this.state.isModalVisibleEnd} footer={[
6486
+ <Modal closable={false} centered={true} visible={this.state.isModalVisibleEnd} maskClosable={false} footer={[
6423
6487
  <div key='end'>
6424
6488
  <Button className="modelButtonCancel" onClick={this.handleCancelEnd}>取消</Button>
6425
6489
  <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkEnd}>确定</Button>
@@ -6428,11 +6492,11 @@ class Video extends Component {
6428
6492
  <div className='endModal'>是否要结束并退出会议?</div>
6429
6493
  </Modal>
6430
6494
  {/* ocr及人脸 */}
6431
- <Modal title={this.state.titleModal} width={650} closable={true} onCancel={this.handleCancelFacial} centered={true} visible={this.state.isModalVisibleFacial} footer={[
6495
+ <Modal title={this.state.titleModal} width={800} closable={true} maskClosable={false} onCancel={this.handleCancelFacial} centered={true} visible={this.state.isModalVisibleFacial} footer={[
6432
6496
  // ocr及人脸在截图界面的按钮
6433
6497
  this.state.cardResuly == '' && this.state.faceResuly == '' &&<div key='facial'>
6434
6498
  <Button className="modelButtonCancel" onClick={this.handleCancelFacial}>取消</Button>
6435
- <Button className="modelButtonCancel" onClick={this.sgsinImage}>截图</Button>
6499
+ <Button className="modelButtonCancel" onClick={this.sgsinImage}>拍照</Button>
6436
6500
  {/* 再截图后按钮高亮 */}
6437
6501
  {
6438
6502
  this.state.isFaceImage && <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkFacial}>下一步</Button>
@@ -6444,7 +6508,12 @@ class Video extends Component {
6444
6508
  </div>,
6445
6509
  // 人脸识别后的结果界面的按钮
6446
6510
  this.state.cardResuly == '' && this.state.faceResuly != '' &&<div key='facial'>
6447
- <Button className="modelButtonCancel" onClick={this.handleCancelFacial}>完成</Button>
6511
+ {
6512
+ this.state.faceResuly == 'success' && <Button className="modelButtonCancel" onClick={this.handleFinishFacial}>完成</Button>
6513
+ }
6514
+ {
6515
+ this.state.faceResuly == 'fail' && <Button className="modelButtonNo" type="primary" danger>完成</Button>
6516
+ }
6448
6517
  {
6449
6518
  this.state.faceResuly == 'fail' && <Button className="modelButtonOk" type="primary" danger onClick={this.ReIdentification}>重新识别</Button>
6450
6519
  }
@@ -6457,16 +6526,17 @@ class Video extends Component {
6457
6526
  // ocr成功
6458
6527
  this.state.cardResuly == 'success' && <div key='facial'>
6459
6528
  {
6460
- this.state.disabledIdCard && <Button className="modelButtonFaceOk" danger onClick={(e) => this.updateConfirm('noFace')}>修改</Button>
6529
+ this.state.disabledIdCard && <Button className="modelButtonFaceOk" danger onClick={(e) => this.updateConfirm('noFace')}>修正证件信息</Button>
6461
6530
  }
6531
+ <Button className="modelButtonCancel" danger onClick={this.newFaceClick}>返回重拍</Button>
6462
6532
  {
6463
- this.state.documentType == 'ID_CARD' && this.state.certificateValidityType && <Button className="modelButtonFaceOkColor" danger onClick={(e) => this.confirmCallback('face')}>完成并发起人脸识别</Button>
6533
+ this.state.documentType == 'ID_CARD' && this.state.certificateValidityType && <Button className="modelButtonFaceOkColor" danger onClick={(e) => this.handleFinishOcr('face')}>确认信息并发起人脸识别</Button>
6464
6534
  }
6465
6535
  {
6466
- this.state.documentType == 'ID_CARD' && !this.state.certificateValidityType && <Button className="modelButtonFaceOkColorFile" danger >完成并发起人脸识别</Button>
6536
+ this.state.documentType == 'ID_CARD' && !this.state.certificateValidityType && <Button className="modelButtonFaceOkColorFile" danger >确认信息并发起人脸识别</Button>
6467
6537
  }
6468
6538
  {
6469
- this.state.documentType != 'ID_CARD' &&this.state.certificateValidityType && <Button className="modelButtonOk" type="primary" danger onClick={(e) => this.confirmCallback('noFace')}>完成</Button>
6539
+ this.state.documentType != 'ID_CARD' &&this.state.certificateValidityType && <Button className="modelButtonOk" type="primary" danger onClick={(e) => this.handleFinishOcr('noFace')}>完成</Button>
6470
6540
  }
6471
6541
  {
6472
6542
  this.state.documentType != 'ID_CARD' && !this.state.certificateValidityType && <Button className="modelButtonFaceOkColorFile" danger >完成</Button>
@@ -6480,11 +6550,16 @@ class Video extends Component {
6480
6550
  </div>
6481
6551
  ]}>
6482
6552
  <Spin spinning={this.state.loadingFace} tip="识别中...">
6553
+ <div style={{display: 'flex', padding: '10px 20px'}}>
6554
+ <Step style={{marginTop: '10px'}} current={this.state.titleModal == '身份验证'?3:2} ></Step>
6483
6555
  <div className="faceBody">
6484
6556
  {this.state.cardResuly == '' && <div className='faceCardImg'>
6485
6557
 
6486
6558
  {
6487
- this.state.titleModal == 'OCR识别' && <div className='titleDiv'>{this.state.IDtypeFrontOrBack}</div>
6559
+ this.state.titleModal == '拍摄证件照片' && <div className='titleDiv'>{this.state.IDtypeFrontOrBack}</div>
6560
+ }
6561
+ {
6562
+ this.state.titleModal == '身份验证' && this.state.faceResuly == '' && <div className='titleDiv'>请确保陪同者头像清楚显示在前置镜头前</div>
6488
6563
  }
6489
6564
 
6490
6565
  {
@@ -6493,7 +6568,7 @@ class Video extends Component {
6493
6568
  {
6494
6569
  this.state.videoType == 'error' && <div className='errorClassFace videoErrorClass'>
6495
6570
  <img src={require("../../assets/img/tooltips2_fail.png").default} alt="" ></img>
6496
- 请点击“截图”拍摄客户人像的照片。若界面无客户头像显示,请检查网络并保持网络稳定后,点击“截图”重试
6571
+ 请点击“拍照”拍摄客户人像的照片。若界面无客户头像显示,请检查网络并保持网络稳定后,点击“拍照”重试
6497
6572
  </div>
6498
6573
  }
6499
6574
  <video disablePictureInPicture className="faceImg" id="publish_video_2" autoPlay muted={true}></video>
@@ -6514,14 +6589,14 @@ class Video extends Component {
6514
6589
  this.state.cardFailReason && <span>{this.state.cardFailReason}</span>
6515
6590
  }
6516
6591
  {
6517
- !this.state.cardFailReason && <span>识别成功</span>
6592
+ !this.state.cardFailReason && <span>识别证件信息成功</span>
6518
6593
  }
6519
6594
 
6520
6595
  </div>
6521
6596
  }
6522
6597
  {
6523
6598
  this.state.cardResuly == 'fail' && <div className='errorClassFace'>
6524
- <img src={require("../../assets/img/tooltips2_fail.png").default} alt="" ></img>识别失败--{this.state.cardFailReason}</div>
6599
+ <img src={require("../../assets/img/tooltips2_fail.png").default} alt="" ></img>识别证件信息失败--{this.state.cardFailReason}</div>
6525
6600
  }
6526
6601
  <div className='imgDIV'>
6527
6602
  <img className="faceImgCard" src={this.state.facialImgFront} alt=""></img>
@@ -6537,16 +6612,16 @@ class Video extends Component {
6537
6612
  </div>
6538
6613
  }
6539
6614
  {
6540
- this.state.titleModal == '人脸识别' && this.state.faceResuly != '' && <div className='resuleCard'>
6615
+ this.state.titleModal == '身份验证' && this.state.faceResuly != '' && <div className='resuleCard'>
6541
6616
  {
6542
6617
  this.state.faceResuly == 'success' && <div className='successClassFace'>
6543
6618
  <img src={require("../../assets/img/tooltips1_pass.png").default} alt="" ></img>
6544
6619
 
6545
- 人脸识别成功</div>
6620
+ 认证通过</div>
6546
6621
  }
6547
6622
  {
6548
6623
  this.state.faceResuly == 'fail' && <div className='errorClassFace'>
6549
- <img src={require("../../assets/img/tooltips2_fail.png").default} alt="" ></img>人脸识别失败--{this.state.faceFailReason}</div>
6624
+ <img src={require("../../assets/img/tooltips2_fail.png").default} alt="" ></img>{this.state.faceFailReason}</div>
6550
6625
  }
6551
6626
  <div><span>客户姓名</span> <input disabled type="text" value={this.state.idCardNameFace}/></div>
6552
6627
  <div><span>身份证号</span> <input disabled type="text" value={this.state.idCardNumberFace}/></div>
@@ -6555,9 +6630,10 @@ class Video extends Component {
6555
6630
  }
6556
6631
 
6557
6632
  </div>
6633
+ </div>
6558
6634
  </Spin>
6559
6635
  </Modal>
6560
- <Modal title="经理人员授权" closable={false} centered={true} visible={this.state.isModalVisibleSFP}
6636
+ <Modal title="经理人员授权" closable={false} centered={true} visible={this.state.isModalVisibleSFP} maskClosable={false}
6561
6637
  footer={[
6562
6638
  <div key='end'>
6563
6639
  <Button className="modelButtonCancel" onClick={this.handleCancelSFP}>取消</Button>
@@ -6590,7 +6666,7 @@ class Video extends Component {
6590
6666
  </div>
6591
6667
  </Spin>
6592
6668
  </Modal>
6593
- <Modal title={this.state.customerTitleName} closable={false} centered={true} visible={this.state.isModalVisibleCustomer}
6669
+ <Modal width={650} title={this.state.customerTitleName} closable={false} centered={true} visible={this.state.isModalVisibleCustomer} maskClosable={false}
6594
6670
  footer={[
6595
6671
  <div key='end'>
6596
6672
 
@@ -6622,12 +6698,13 @@ class Video extends Component {
6622
6698
 
6623
6699
  </div>
6624
6700
  ]}>
6625
- <div>
6626
- <div className='selectCustomer'>
6701
+ <div style={{display: 'flex', padding: '10px 20px'}}>
6702
+ <Step current={this.state.isCustomerSelect?0:1}></Step>
6703
+ <div>
6627
6704
  {
6628
6705
  this.state.isCustomerSelect && <div>
6629
- <div>
6630
- 请选择进行身份识别的客户
6706
+ <div className='CustomerSelectTitle'>
6707
+ 请选择进行身份识别的客户(陪同者)
6631
6708
  </div>
6632
6709
  <div>
6633
6710
  <Radio.Group onChange={this.onChangeOCRCustomer} value={this.state.customerSelect}>
@@ -6650,8 +6727,8 @@ class Video extends Component {
6650
6727
  this.state.documentError != '' && <div className='errorClassFace'>
6651
6728
  <img src={require("../../assets/img/tooltips2_fail.png").default} alt="" ></img>{this.state.documentError}</div>
6652
6729
  }
6653
- <div>
6654
- 请您确认您的身份证件类型
6730
+ <div className='CustomerSelectTitle'>
6731
+ 请选择您的身份证件类型
6655
6732
  </div>
6656
6733
  <div>
6657
6734
  <Radio.Group onChange={this.onChangeDocumentType} value={this.state.documentType}>
@@ -6673,7 +6750,7 @@ class Video extends Component {
6673
6750
 
6674
6751
  </Modal>
6675
6752
 
6676
- <Modal className="modelClass" title="邀请参会人员" closable={false} centered={true} visible={this.state.isModalVisibleInvitation} footer={[
6753
+ <Modal className="modelClass" maskClosable={false} title="邀请参会人员" closable={false} centered={true} visible={this.state.isModalVisibleInvitation} footer={[
6677
6754
  <div key='invitation'>
6678
6755
  <Button className="modelButtonCancel" onClick={this.handleCancelInvitation}>取消</Button>
6679
6756
  {
@@ -6729,7 +6806,7 @@ class Video extends Component {
6729
6806
  ></CanvasDraw> */}
6730
6807
  </div>
6731
6808
  </Modal>
6732
- <Modal title="设置视频设备" width={650} closable={false} centered={true} visible={this.state.isModalVisibleInspection} footer={[
6809
+ <Modal title="设置视频设备" maskClosable={false} width={650} closable={false} centered={true} visible={this.state.isModalVisibleInspection} footer={[
6733
6810
  <div key='inspection'>
6734
6811
  <Button className="modelButtonCancel" onClick={this.handleCancelInspection}>取消</Button>
6735
6812
  <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkInspection}>确定</Button>
@@ -157,6 +157,7 @@
157
157
  .faceBody{
158
158
  text-align: center;
159
159
  height: 100%;
160
+ width: ~"calc(100% - 150px)";
160
161
  .faceCardImg{
161
162
  // height: 100%;
162
163
  }
@@ -406,7 +407,7 @@
406
407
  border-spacing: 20px!important;
407
408
  }
408
409
  .modelButtonFaceOkColor{
409
- width: 170px!important;
410
+ min-width: 170px!important;
410
411
  height: 40px!important;
411
412
  font-size: 16px!important;
412
413
  color: #ffffff!important;
@@ -432,6 +433,9 @@
432
433
  font-size: 16px;
433
434
  margin: 20px 50px;
434
435
  }
436
+ .CustomerSelectTitle{
437
+ margin-bottom: 10px;
438
+ }
435
439
  .errorClassName{
436
440
  .ant-message-notice-content{
437
441
  min-width: 500px;
@@ -598,7 +602,8 @@ margin: 20Px 40px;
598
602
  margin-bottom: 0px !important;
599
603
  }
600
604
  .titleDiv{
601
- font-size: 1.4rem;
605
+ font-size: 1.2rem;
606
+ margin: 10px 0;
602
607
  }
603
608
  .videoListClass{
604
609
  align-content: flex-start;