react_hsbc_teller 0.2.3 → 0.2.7

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.
@@ -20,7 +20,7 @@ import Spin from "antd/lib/spin";
20
20
  import 'antd/lib/spin/style'
21
21
  import { Button } from '../../../node_modules/antd/lib/index';
22
22
  import CanvasDraw from "react-canvas-draw";
23
- import { FormattedMessage, injectIntl } from 'react-intl';
23
+ import { FormattedMessage, injectIntl } from 'react-intl';
24
24
  const LEAVE_TYPE = {
25
25
  TELLER_EXIT: '1', // 坐席退出
26
26
  ROOM_DESTROYED: '-1', // 房间异常
@@ -29,6 +29,8 @@ const LEAVE_TYPE = {
29
29
  class Video extends Component {
30
30
  signCanvas = React.createRef();
31
31
  state = {
32
+ isWhiteboard: false,
33
+ isSelect: 'video',
32
34
  isPDF: false,
33
35
  loading: false,
34
36
  isModalVisibleSign: false,
@@ -50,7 +52,7 @@ class Video extends Component {
50
52
  voiceStatue: false,
51
53
  voiceImg: voiceImgOpen,
52
54
  isBigVideo: 'video1',
53
- isCustomer: false,
55
+ isCustomer: true,
54
56
  publishDevic: 1,
55
57
  isSharedScreen: false,
56
58
  isSuspend: false,
@@ -75,8 +77,8 @@ class Video extends Component {
75
77
  createRoom = async () => {
76
78
  try {
77
79
  let result = await API.createRoom({
78
- tellerAccount: this.props.tellerAccount,
79
- businessNumber: this.props.businessNumber,
80
+ staffId: this.props.tellerAccount,
81
+ activityId: this.props.businessNumber,
80
82
  callbackUrl: this.props.callbackUrl,
81
83
  roomId: this.state.channelId,
82
84
  mtoken: this.state.rtoken
@@ -88,8 +90,16 @@ class Video extends Component {
88
90
  });
89
91
  // eslint-disable-next-line no-undef
90
92
  joinRoom((this.props.tellerAccount + '@' + JSON.parse(window.sessionStorage.getItem('sigData')).hostname), this.state.imRoomId)
93
+ this.props.createRoomCallback({
94
+ type: 1,
95
+ errorManage: ''
96
+ })
91
97
  } catch (err) {
92
98
  console.error(err);
99
+ this.props.createRoomCallback({
100
+ type: 2,
101
+ errorManage: '保存房间信息失败'
102
+ })
93
103
  }
94
104
  };
95
105
  /**
@@ -113,6 +123,7 @@ class Video extends Component {
113
123
  }
114
124
  } catch (err) {
115
125
  console.error(err);
126
+ this.roomCallBack(2,'签名失败')
116
127
  }
117
128
  };
118
129
  handleEdit = () => {
@@ -416,27 +427,53 @@ class Video extends Component {
416
427
  };
417
428
  // 画中画
418
429
  pictureInPicture = () => {
419
- const publish_config = {};
420
- publish_config.media_type = 1;
421
- publish_config.publish_device = 4;
422
- publish_config.need_volume_analyser = true;
423
- publish_config.video_profile_type = 3;
424
- publish_config.part_of_screen_id = 'touBoxItem';
425
- publish_config.publish_video_id = 'video3';
426
- publish_config.publish_streamId_id = 'subscribe_streamId3';
427
- // publish_config.publish_tag = 'sharedScreen'
428
- this.test_controller.Publish(publish_config);
429
- callNimIM('sendCustomCmdMsg', {
430
- customId: this.state.imRoomId,
431
- content: JSON.stringify({
432
- 'typeId': 2030,
433
- 'sessionId': this.state.sessionId,
434
- 'sharedScreen': 1,
435
- 'tellerId': this.props.tellerAccount
436
- })
437
- });
430
+ // const publish_config = {};
431
+ // publish_config.media_type = 1;
432
+ // publish_config.publish_device = 4;
433
+ // publish_config.need_volume_analyser = true;
434
+ // publish_config.video_profile_type = 3;
435
+ // publish_config.part_of_screen_id = 'touBoxItem';
436
+ // publish_config.publish_video_id = 'video3';
437
+ // publish_config.publish_streamId_id = 'subscribe_streamId3';
438
+ // // publish_config.publish_tag = 'sharedScreen'
439
+ // this.test_controller.Publish(publish_config);
440
+ // callNimIM('sendCustomCmdMsg', {
441
+ // customId: this.state.imRoomId,
442
+ // content: JSON.stringify({
443
+ // 'typeId': 2030,
444
+ // 'sessionId': this.state.sessionId,
445
+ // 'sharedScreen': 1,
446
+ // 'tellerId': this.props.tellerAccount
447
+ // })
448
+ // });
438
449
  if (this.isFileSuccuse()) {
439
- const width = 640;
450
+ const list = []
451
+ if(document.getElementById('video1').name) {
452
+ list.push('video1')
453
+ }
454
+ if(document.getElementById('publish_video1').name) {
455
+ list.push('publish_video1')
456
+ }
457
+ if(document.getElementById('video2').name) {
458
+ list.push('video2')
459
+ }
460
+ if(document.getElementById('video3').name) {
461
+ list.push('video3')
462
+ }
463
+ if(document.getElementById('video4').name) {
464
+ list.push('video4')
465
+ }
466
+ if(document.getElementById('video5').name) {
467
+ list.push('video5')
468
+ }
469
+ if(document.getElementById('video6').name) {
470
+ list.push('video6')
471
+ }
472
+ if(document.getElementById('video10').name) {
473
+ list.push('video10')
474
+ }
475
+ console.log(list)
476
+ const width = 320 * list.length;
440
477
  const height = 480;
441
478
  const canvas = document.createElement('canvas');
442
479
  const cobj = canvas.getContext('2d'); // 获取绘图环境
@@ -444,7 +481,9 @@ class Video extends Component {
444
481
  canvas.height = height;
445
482
  let interval = setInterval(() => {
446
483
  cobj.clearRect(0, 0, width, height);
447
- let videoId = 'publish_video1';
484
+ for(let i=0;i<list.length;i++){
485
+
486
+ let videoId = list[i];
448
487
  let videoDiv = document.getElementById(videoId);
449
488
  let videoWidth = videoDiv.videoWidth;
450
489
  let videoHeight = videoDiv.videoHeight;
@@ -455,20 +494,34 @@ class Video extends Component {
455
494
  } else {
456
495
  newVideoHeight = videoHeight * 320 / videoWidth;
457
496
  }
458
- cobj.drawImage(videoDiv, 0, 480 - newVideoHeight, newVideoWidth, newVideoHeight);
459
-
460
- let subscribeVideo = 'video1';
461
- let subscribeVideoDiv = document.getElementById(subscribeVideo);
462
- let subscribeVideoDivWidth = subscribeVideoDiv.videoWidth;
463
- let subscribeVideoDivHeight = subscribeVideoDiv.videoHeight;
464
- let newVideoWidth1 = 320;
465
- let newVideoHeight1 = 480;
466
- if (subscribeVideoDivHeight * 320 / subscribeVideoDivWidth > 480) {
467
- newVideoWidth1 = subscribeVideoDivWidth * 480 / subscribeVideoDivHeight;
468
- } else {
469
- newVideoHeight1 = subscribeVideoDivHeight * 320 / subscribeVideoDivWidth;
497
+ cobj.drawImage(videoDiv, 320 * i, 480 - newVideoHeight, 320, newVideoHeight);
470
498
  }
471
- cobj.drawImage(subscribeVideoDiv, 320, 480 - newVideoHeight1, newVideoWidth1, 80);
499
+ // cobj.clearRect(0, 0, width, height);
500
+ // let videoId = 'publish_video1';
501
+ // let videoDiv = document.getElementById(videoId);
502
+ // let videoWidth = videoDiv.videoWidth;
503
+ // let videoHeight = videoDiv.videoHeight;
504
+ // let newVideoWidth = 320;
505
+ // let newVideoHeight = 480;
506
+ // if (videoHeight * 320 / videoWidth > 480) {
507
+ // newVideoWidth = videoWidth * 480 / videoHeight;
508
+ // } else {
509
+ // newVideoHeight = videoHeight * 320 / videoWidth;
510
+ // }
511
+ // cobj.drawImage(videoDiv, 0, 480 - newVideoHeight, newVideoWidth, newVideoHeight);
512
+
513
+ // let subscribeVideo = 'video1';
514
+ // let subscribeVideoDiv = document.getElementById(subscribeVideo);
515
+ // let subscribeVideoDivWidth = subscribeVideoDiv.videoWidth;
516
+ // let subscribeVideoDivHeight = subscribeVideoDiv.videoHeight;
517
+ // let newVideoWidth1 = 320;
518
+ // let newVideoHeight1 = 480;
519
+ // if (subscribeVideoDivHeight * 320 / subscribeVideoDivWidth > 480) {
520
+ // newVideoWidth1 = subscribeVideoDivWidth * 480 / subscribeVideoDivHeight;
521
+ // } else {
522
+ // newVideoHeight1 = subscribeVideoDivHeight * 320 / subscribeVideoDivWidth;
523
+ // }
524
+ // cobj.drawImage(subscribeVideoDiv, 320, 480 - newVideoHeight1, newVideoWidth1, newVideoHeight1);
472
525
 
473
526
  }, 100);
474
527
  const captureStream = canvas.captureStream();
@@ -492,6 +545,19 @@ class Video extends Component {
492
545
  });
493
546
  }
494
547
  };
548
+ roomCallBack=(type,manege) =>{
549
+ if (this.state.sessionId) {
550
+ this.props.joinRoomCallback({
551
+ type: type,
552
+ errorManage: manege
553
+ })
554
+ }else {
555
+ this.props.createRoomCallback({
556
+ type: type,
557
+ errorManage: manege
558
+ })
559
+ }
560
+ }
495
561
  mountClick = () => {
496
562
  window.IMEvt = msg => {
497
563
  console.log(JSON.parse(msg));
@@ -511,6 +577,38 @@ class Video extends Component {
511
577
  if (Mival.sessionId == this.state.sessionId) {
512
578
  this.endSession('customerHangUp')
513
579
  }
580
+ } else if (Mival.typeId == 1215) {
581
+ // 一炒多的图片
582
+ if (Mival.sessionId == this.state.sessionId) {
583
+ this.props.imgCallback(Mival.data.type, Mival.data.file) // 文字抄录和风险抄录,3--风险,,2--文字
584
+ }
585
+ } else if (Mival.typeId == 1216) {
586
+ // 签字回调
587
+ if (Mival.sessionId == this.state.sessionId) {
588
+ this.props.signatureCallback()
589
+ }
590
+ } else if (Mival.typeId == 1218) {
591
+ if (Mival.sessionId == this.state.sessionId) {
592
+ // 1-开启,2-关闭
593
+ if(Mival.type == 1) {
594
+ this.switchExternal()
595
+ } else if(Mival.type == 2) {
596
+ if(this.state.isSharedScreen) {
597
+ this.setState({
598
+ isWhiteboard: false,
599
+ })
600
+ }else {
601
+ this.test_controller.UnPublish(document.getElementById('video10').name)
602
+ this.setState({
603
+ isPDF: false,
604
+ isSelect: 'video',
605
+ isWhiteboard: false,
606
+ })
607
+ }
608
+ }
609
+
610
+ }
611
+
514
612
  }
515
613
  };
516
614
 
@@ -585,6 +683,7 @@ class Video extends Component {
585
683
  };
586
684
  this.test_controller.OnConnectFailed = (code, msg) => {
587
685
  console.log('建立连接失败', code, msg)
686
+ this.roomCallBack(2,'连接失败')
588
687
  };
589
688
  // 断开连接回调
590
689
  this.test_controller.OnConnectClose = (code, msg) => {
@@ -598,6 +697,7 @@ class Video extends Component {
598
697
  // 初始化房间失败
599
698
  this.test_controller.OnInitRoomConfigFail = (err_code, err_msg) => {
600
699
  console.log('初始化房间失败', err_code, err_msg)
700
+ this.roomCallBack(2,'初始化失败')
601
701
  };
602
702
  // 初始化成功回调
603
703
  this.test_controller.OnInitRoomConfigOK = () => {
@@ -614,7 +714,7 @@ class Video extends Component {
614
714
 
615
715
  this.test_controller.OnCreateRoomSucc = (room_id, rtoken) => {
616
716
  console.log('创建房间成功', room_id, rtoken);
617
- this.setState({
717
+ this.setState({
618
718
  channelId: room_id,
619
719
  rtoken: rtoken
620
720
  });
@@ -623,6 +723,7 @@ class Video extends Component {
623
723
  // 创建房间失败
624
724
  this.test_controller.OnCreateRoomFailed = (err_code, err_msg) => {
625
725
  console.log('创建房间失败', err_code, err_msg)
726
+ this.roomCallBack(2,'创建失败')
626
727
  };
627
728
  // 初始化⾳视频成功
628
729
  this.test_controller.OnMediaCallSucc = (sid) => {
@@ -639,10 +740,12 @@ class Video extends Component {
639
740
  // 加入房间成功
640
741
  this.test_controller.OnJoinRoomSucc = () => {
641
742
  console.log('加入房间成功')
743
+ this.roomCallBack(1,'')
642
744
  };
643
745
  // 加入房间失败
644
746
  this.test_controller.OnJoinRoomFailed = (err_code, err_msg) => {
645
747
  console.log('加入房间失败', err_code, err_msg)
748
+ this.roomCallBack(2,'加入失败')
646
749
  };
647
750
  // 发布媒体流成功
648
751
  this.test_controller.OnPublishSucc = (sid) => {
@@ -1045,7 +1148,8 @@ class Video extends Component {
1045
1148
  tellerId: this.props.tellerAccount
1046
1149
  });
1047
1150
  this.setState({
1048
- isCustomer: false
1151
+ isCustomer: false,
1152
+ isWhiteboard: false,
1049
1153
  });
1050
1154
  this.props.onLeaveRoom({
1051
1155
  code: LEAVE_TYPE.TELLER_EXIT,
@@ -1084,37 +1188,23 @@ class Video extends Component {
1084
1188
  this.setState({
1085
1189
  loading: true,
1086
1190
  })
1087
- console.log( this.props.resourcePath + "/log4b.js")
1088
1191
  const _dependScripts = [
1089
1192
  // https://counter-web.leimondata.cn:7199
1090
- this.props.resourcePath + "/log4b.js",
1091
- this.props.resourcePath + "/meeting_api_util.js",
1193
+ this.props.resourcePath + "/adapter.js",
1194
+ this.props.resourcePath + "/getMediaInfo.js",
1195
+ this.props.resourcePath + "/pdf.js",
1196
+ this.props.resourcePath + "/EBML.js",
1092
1197
  this.props.resourcePath + "/mcu.js",
1093
- this.props.resourcePath + "/client_record.js",
1198
+ this.props.resourcePath + "/meeting_desk_stream.js",
1199
+ this.props.resourcePath + "/meeting_html_stream.js",
1200
+ this.props.resourcePath + "/meeting_file_stream.js",
1201
+ this.props.resourcePath + "/meeting_im.js",
1094
1202
  this.props.resourcePath + "/meeting_vod.js",
1095
- this.props.resourcePath + "/remote_record.js",
1096
1203
  this.props.resourcePath + "/meeting_invite.js",
1097
- this.props.resourcePath + "/meeting_im.js",
1204
+ this.props.resourcePath + "/client_record.js",
1205
+ this.props.resourcePath + "/remote_record.js",
1098
1206
  this.props.resourcePath + "/meeting_camera_stream.js",
1099
- this.props.resourcePath + "/meeting_file_stream.js",
1100
- this.props.resourcePath + "/meeting_desk_stream.js",
1101
- this.props.resourcePath + "/meeting_html_stream.js",
1102
- this.props.resourcePath + "/meeting_beautify_stream.js",
1103
- this.props.resourcePath + "/stream.js",
1104
- this.props.resourcePath + "/room.js",
1105
- this.props.resourcePath + "/backgroundBlur.js",
1106
1207
  this.props.resourcePath + "/meeting_api.js",
1107
- this.props.resourcePath + "/html2image.js",
1108
- this.props.resourcePath + "/reconnecting-websocket.min.js",
1109
- this.props.resourcePath + "/mtc_api.js",
1110
- this.props.resourcePath + "/BandwidthHandler.js",
1111
- this.props.resourcePath + "/RecordRTC.min.js",
1112
- // "https://gw.alipayobjects.com/os/lib/recordrtc/5.5.9/RecordRTC.min.js",
1113
- this.props.resourcePath + "/pdf.js",
1114
- this.props.resourcePath + "/EBML.js",
1115
- this.props.resourcePath + "/adapter.js",
1116
- this.props.resourcePath + "/beauty.js",
1117
- this.props.resourcePath + "/getMediaInfo.js",
1118
1208
  ]
1119
1209
  const that = this
1120
1210
  let i = 0
@@ -1169,8 +1259,8 @@ class Video extends Component {
1169
1259
  } else {
1170
1260
  setTimeout(() => {
1171
1261
  this.setState({
1172
- screenName: this.props.intl.formatMessage({id: 'shareScreen'}),
1173
- suspendName: this.props.intl.formatMessage({id: 'suspend'}),
1262
+ screenName: this.props.intl.formatMessage({ id: 'shareScreen' }),
1263
+ suspendName: this.props.intl.formatMessage({ id: 'suspend' }),
1174
1264
  })
1175
1265
  }, 50);
1176
1266
  this.addToScript()
@@ -1288,24 +1378,60 @@ class Video extends Component {
1288
1378
  if (this.isFileSuccuse()) {
1289
1379
  const publish_config = {};
1290
1380
  if (this.state.isSharedScreen) {
1291
- publish_config.publish_device = 1;
1292
- publish_config.media_type = 1;
1293
- publish_config.sid = document.getElementById('publish_video1').name;
1294
- publish_config.video_profile_type = 5;
1295
- this.test_controller.ChangeMediaStream(publish_config);
1381
+ if (this.state.isWhiteboard) {
1382
+ publish_config.publish_device = 4
1383
+ publish_config.media_type = 1
1384
+ publish_config.sid = document.getElementById('video10').name
1385
+ publish_config.part_of_screen_id = 'touBoxItem'
1386
+ publish_config.video_profile_type = 5
1387
+ this.test_controller.ChangeMediaStream(publish_config);
1388
+ this.setState({
1389
+ isPDF: true,
1390
+ isSelect: 'noVideo',
1391
+ })
1392
+ } else {
1393
+ this.test_controller.UnPublish(document.getElementById('video10').name)
1394
+ this.setState({
1395
+ isPDF: false,
1396
+ isSelect: 'video',
1397
+ })
1398
+ }
1296
1399
  this.setState({
1297
1400
  publishDevic: 1,
1298
1401
  isSharedScreen: false,
1402
+
1299
1403
  screenName: '投屏'
1300
1404
  });
1301
1405
  } else {
1302
- publish_config.media_type = 1;
1303
- publish_config.publish_device = 2;
1304
- publish_config.video_profile_type = 5;
1305
- publish_config.sid = document.getElementById('publish_video1').name;
1306
- this.test_controller.ChangeMediaStream(publish_config);
1406
+ if (document.getElementById('video10').name) {
1407
+ publish_config.media_type = 1;
1408
+ publish_config.publish_device = 2;
1409
+ publish_config.video_profile_type = 5;
1410
+ publish_config.sid = document.getElementById('video10').name;
1411
+ this.test_controller.ChangeMediaStream(publish_config);
1412
+ } else {
1413
+ publish_config.media_type = 1
1414
+ publish_config.publish_device = 2
1415
+ publish_config.need_volume_analyser = true
1416
+ publish_config.video_profile_type = 5
1417
+ publish_config.publish_video_id = 'video10'
1418
+ publish_config.publish_streamId_id = 'subscribe_streamId10'
1419
+ publish_config.publish_tag = ''
1420
+ this.test_controller.Publish(publish_config)
1421
+ }
1422
+
1423
+
1424
+ // publish_config.media_type = 1;
1425
+ // publish_config.publish_device = 2;
1426
+ // publish_config.video_profile_type = 5;
1427
+ // publish_config.sid = document.getElementById('publish_video1').name;
1428
+ // this.test_controller.ChangeMediaStream(publish_config);
1307
1429
  this.setState({
1308
- publishDevic: 2
1430
+ publishDevic: 2,
1431
+ isSelect: 'noVideo',
1432
+ isSharedScreen: true,
1433
+ screenName: '取消共享',
1434
+ isPDF: false
1309
1435
  })
1310
1436
  }
1311
1437
  }
@@ -1493,7 +1619,7 @@ class Video extends Component {
1493
1619
  })
1494
1620
  }
1495
1621
  componentWillReceiveProps(props) {
1496
- this.setState({
1622
+ this.setState({
1497
1623
  channelId: props.roomId,
1498
1624
  rtoken: props.mtoken,
1499
1625
  sessionId: props.sessionId,
@@ -1541,96 +1667,158 @@ class Video extends Component {
1541
1667
  file: this.signCanvas.current.canvas.drawing.toDataURL('image/png')
1542
1668
  })
1543
1669
  }
1544
- switchExternal=()=>{
1545
- if(this.state.isPDF){
1670
+ switchExternal = () => {
1671
+ if(!this.state.isWhiteboard) {
1672
+ const publish_config = {};
1546
1673
  this.setState({
1547
- isPDF: false,
1548
- isBigVideo: 'video1'
1674
+ isPDF: true,
1675
+ isWhiteboard: true,
1676
+ isSelect: 'noVideo',
1549
1677
  })
1678
+ if (document.getElementById('video10').name) {
1679
+ // 代表已经有了进行切流
1680
+ publish_config.publish_device = 4
1681
+ publish_config.media_type = 1
1682
+ publish_config.sid = document.getElementById('video10').name
1683
+ publish_config.part_of_screen_id = 'touBoxItem'
1684
+ publish_config.video_profile_type = 5
1685
+ this.test_controller.ChangeMediaStream(publish_config);
1686
+ } else {
1687
+
1688
+ publish_config.media_type = 1
1689
+ publish_config.publish_device = 4
1690
+ publish_config.need_volume_analyser = true
1691
+ publish_config.video_profile_type = 5
1692
+ publish_config.part_of_screen_id = 'touBoxItem';
1693
+ publish_config.publish_video_id = 'video10'
1694
+ publish_config.publish_streamId_id = 'subscribe_streamId10'
1695
+ publish_config.publish_tag = ''
1696
+ this.test_controller.Publish(publish_config)
1697
+ }
1550
1698
  } else{
1699
+ message.success('当前已经切换RM白板')
1700
+ }
1701
+
1702
+
1703
+ }
1704
+ switchSelect = () => {
1705
+ if (this.state.isSelect == 'video') {
1706
+ if (document.getElementById('video10').name) {
1707
+ this.setState({
1708
+ isSelect: 'noVideo',
1709
+ })
1710
+ } else {
1711
+ message.success('当前无签字白板')
1712
+ }
1713
+
1714
+ } else {
1551
1715
  this.setState({
1552
- isPDF: true,
1553
- isBigVideo: 'video6'
1716
+ isSelect: 'video',
1554
1717
  })
1555
1718
  }
1556
-
1557
1719
  }
1558
1720
  render() {
1559
- const pdfChildren = React.cloneElement(this.props.children,{width: 100, height: 100, id: 12})
1721
+ var pdfChildren
1722
+ if (this.props.children) {
1723
+ pdfChildren = React.cloneElement(this.props.children, { width: 100, height: 100, id: 12 })
1724
+ }
1560
1725
  return (
1561
-
1562
1726
  <div className="all">
1563
1727
  <Spin spinning={this.state.loading} tip="视频初始化中...">
1564
- <Header></Header>
1565
- <div className="health">
1566
- <div className="wrapper">
1567
- <div
1568
- className={`itemed ${this.state.isBigVideo == 'video1' ? 'item1' : ""}`}
1569
- // className="itemed item1"
1570
- style={{ position: "relative" }}
1571
- onClick={this.enlargeClick.bind(this, 'isLangVideo1')}
1572
- >
1573
- {
1574
- this.state.customAudioed && <img
1575
- alt=""
1576
- src={require("../../assets/img/yingpin.png").default}
1577
- style={{ width: "100%", height: "100%" }}
1578
- ></img>
1579
- }
1580
- <div className="video1Div" style={{ display: (!this.state.customAudioed) ? '' : 'none', }}>
1581
- <video
1582
- id="video1"
1583
- autoPlay
1584
- muted={true}
1585
- className="video1"
1586
- />
1587
- <audio id="audio1" autoPlay />
1588
- <label style={{ display: 'none' }} id="feedId1" type="text" />
1589
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView1" width="70" height="70"></canvas>
1728
+ <Header></Header>
1729
+ <div className="health">
1730
+ <div className="projection">
1731
+ <div className="button">
1732
+ <div className={`${this.state.isSelect == 'video' ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this)}>视频画面</div>
1733
+ <div className={`${this.state.isSelect == 'noVideo' ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this)}>投屏白板</div>
1734
+ </div>
1735
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'noVideo') ? '' : 'none', }}>
1736
+ <div style={{ display: (this.state.isPDF) ? '' : 'none', }} id="touBoxItem">
1737
+ {pdfChildren}
1738
+ </div>
1739
+ <div className="videoDiv" style={this.state.isPDF ? { display: 'none' } : {}}>
1740
+ <video
1741
+ id="video10"
1742
+ autoPlay
1743
+ muted={true}
1744
+ className="video"
1745
+ />
1746
+ <audio id="audio10" autoPlay />
1747
+ <label style={{ display: 'none' }} id="feedId10" type="text" />
1748
+ {/* <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView10" width="70" height="70"></canvas> */}
1749
+
1750
+ </div>
1751
+
1590
1752
  </div>
1591
1753
  </div>
1592
- <div
1593
- className={`itemed ${this.state.isSharedScreen || this.state.publishDevic == 4 ? '' : (this.state.isBigVideo == 'publish_video1' ? 'item1 isBack' : (this.state.isCustomer ? 'isBack' : 'itemPublic'))}`}
1594
- onClick={this.enlargeClick.bind(this, 'isLangPublishVideo1')}
1595
- >
1596
- <div className="publishVideoDiv">
1754
+ <div className="wrapper">
1755
+ <div
1756
+ className={`itemed ${this.state.isBigVideo == 'video1' ? 'item1' : ""}`}
1757
+ // className="itemed item1"
1758
+ style={{ position: "relative" }}
1759
+ onClick={this.enlargeClick.bind(this, 'isLangVideo1')}
1760
+ >
1597
1761
  {
1598
- this.state.audioed && <img
1762
+ this.state.customAudioed && <img
1599
1763
  alt=""
1600
1764
  src={require("../../assets/img/yingpin.png").default}
1601
- className="imgClass"
1602
- />
1765
+ style={{ width: "100%", height: "100%" }}
1766
+ ></img>
1603
1767
  }
1604
- {
1605
- this.state.isSuspend && <img
1606
- alt=""
1607
- src={require("../../assets/img/zanTing.png").default}
1608
- className="imgClass"
1768
+ <div className="video1Div" style={{ display: (!this.state.customAudioed) ? '' : 'none', }}>
1769
+ <video
1770
+ id="video1"
1771
+ autoPlay
1772
+ muted={true}
1773
+ className="video1"
1609
1774
  />
1610
- }
1611
- {
1775
+ <audio id="audio1" autoPlay />
1776
+ <label style={{ display: 'none' }} id="feedId1" type="text" />
1777
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView1" width="20" height="50"></canvas>
1778
+ </div>
1779
+ </div>
1780
+ <div
1781
+ className={`itemed ${this.state.publishDevic == 4 ? '' : (this.state.isBigVideo == 'publish_video1' ? 'item1 isBack' : (this.state.isCustomer ? 'isBack' : 'itemPublic'))}`}
1782
+ onClick={this.enlargeClick.bind(this, 'isLangPublishVideo1')}
1783
+ >
1784
+ <div className="publishVideoDiv">
1785
+ {
1786
+ this.state.audioed && <img
1787
+ alt=""
1788
+ src={require("../../assets/img/yingpin.png").default}
1789
+ className="imgClass"
1790
+ />
1791
+ }
1792
+ {
1793
+ this.state.isSuspend && <img
1794
+ alt=""
1795
+ src={require("../../assets/img/zanTing.png").default}
1796
+ className="imgClass"
1797
+ />
1798
+ }
1799
+ {/* {
1612
1800
  this.state.isSharedScreen && <span
1613
1801
  className="sharedScreen"
1614
1802
  >
1615
1803
  屏幕共享中
1616
1804
  </span>
1617
- }
1618
- <video
1619
- style={{ display: (!this.state.audioed && !this.state.isSuspend) ? '' : 'none', }}
1620
- id="publish_video1"
1621
- className={`publishVideoClass ${this.state.isCustomer ? '' : "videoFit"}`}
1622
- onClick={this.enlargeClick.bind(this, 'isLangVideo2')}
1623
- autoPlay
1624
- muted={true}
1625
- />
1626
- <audio id="audio1" autoPlay />
1627
- <label style={{ display: 'none' }} id="publish_streamId1" type="text" />
1628
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="publish_volumeView" width="70" height="70"></canvas>
1805
+ } */}
1806
+ <video
1807
+ style={{ display: (!this.state.audioed && !this.state.isSuspend) ? '' : 'none', }}
1808
+ id="publish_video1"
1809
+ className={`publishVideoClass ${this.state.isCustomer ? '' : "videoFit"}`}
1810
+ onClick={this.enlargeClick.bind(this, 'isLangVideo2')}
1811
+ autoPlay
1812
+ muted={true}
1813
+ />
1814
+ <audio id="audio1" autoPlay />
1815
+ <label style={{ display: 'none' }} id="publish_streamId1" type="text" />
1816
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="publish_volumeView" width="20" height="50"></canvas>
1817
+ </div>
1818
+
1629
1819
  </div>
1820
+ <div className={`itemed ${this.state.isBigVideo == 'video2' ? 'item1' : ""}`}>
1630
1821
 
1631
- </div>
1632
- <div className={`itemed ${this.state.isBigVideo == 'video2' ? 'item1' : ""}`}>
1633
-
1634
1822
  <div onClick={this.enlargeClick.bind(this, 'isLangVideo2')}>
1635
1823
  <video
1636
1824
  id="video2"
@@ -1640,143 +1828,141 @@ class Video extends Component {
1640
1828
  />
1641
1829
  <audio id="audio2" autoPlay />
1642
1830
  <label style={{ display: 'none' }} id="feedId2" type="text" />
1643
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView2" width="70" height="70"></canvas>
1831
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView2" width="20" height="50"></canvas>
1644
1832
  </div>
1645
- </div>
1646
- <div className={`itemed ${this.state.isBigVideo == 'video3' ? 'item1' : ""}`}
1647
- onClick={this.enlargeClick.bind(this, 'isLangVideo3')}>
1648
- <video
1649
- id="video3"
1650
- autoPlay
1651
- muted={true}
1652
- className="video"
1653
- />
1654
- <audio id="audio3" autoPlay />
1655
- <label style={{ display: 'none' }} id="feedId3" type="text" />
1656
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView3" width="70" height="70"></canvas>
1657
- </div>
1658
- <div className={`itemed ${this.state.isBigVideo == 'video4' ? 'item1' : ""}`}
1659
- onClick={this.enlargeClick.bind(this, 'isLangVideo4')}>
1660
- <video
1661
- id="video4"
1662
- autoPlay
1663
- muted={true}
1664
- className="video"
1665
- />
1666
- <audio id="audio4" autoPlay />
1667
- <label style={{ display: 'none' }} id="feedId4" type="text" />
1668
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView4" width="70" height="70"></canvas>
1669
- </div>
1670
- <div className={`itemed ${this.state.isBigVideo == 'video5' ? 'item1' : ""}`}
1671
- onClick={this.enlargeClick.bind(this, 'isLangVideo5')}>
1672
- <video
1673
- id="video5"
1674
- autoPlay
1675
- muted={true}
1676
- className="video"
1677
- />
1678
- <audio id="audio5" autoPlay />
1679
- <label style={{ display: 'none' }} id="feedId5" type="text" />
1680
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView5" width="70" height="70"></canvas>
1681
- </div>
1682
- <div onClick={this.enlargeClick.bind(this, 'isLangVideo6')} className={`${this.state.isBigVideo == 'video6' ? (this.state.isPDF ? 'item1' : 'item1 itemed') : "itemed"}`}>
1683
- <div style={{ display: (this.state.isPDF) ? '' : 'none', }} id="touBoxItem">
1833
+ </div>
1834
+ <div className={`itemed ${this.state.isBigVideo == 'video3' ? 'item1' : ""}`}
1835
+ onClick={this.enlargeClick.bind(this, 'isLangVideo3')}>
1836
+ <video
1837
+ id="video3"
1838
+ autoPlay
1839
+ muted={true}
1840
+ className="video"
1841
+ />
1842
+ <audio id="audio3" autoPlay />
1843
+ <label style={{ display: 'none' }} id="feedId3" type="text" />
1844
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView3" width="20" height="50"></canvas>
1845
+ </div>
1846
+ <div className={`itemed ${this.state.isBigVideo == 'video4' ? 'item1' : ""}`}
1847
+ onClick={this.enlargeClick.bind(this, 'isLangVideo4')}>
1848
+ <video
1849
+ id="video4"
1850
+ autoPlay
1851
+ muted={true}
1852
+ className="video"
1853
+ />
1854
+ <audio id="audio4" autoPlay />
1855
+ <label style={{ display: 'none' }} id="feedId4" type="text" />
1856
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView4" width="20" height="50"></canvas>
1857
+ </div>
1858
+ <div className={`itemed ${this.state.isBigVideo == 'video5' ? 'item1' : ""}`}
1859
+ onClick={this.enlargeClick.bind(this, 'isLangVideo5')}>
1860
+ <video
1861
+ id="video5"
1862
+ autoPlay
1863
+ muted={true}
1864
+ className="video"
1865
+ />
1866
+ <audio id="audio5" autoPlay />
1867
+ <label style={{ display: 'none' }} id="feedId5" type="text" />
1868
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView5" width="20" height="50"></canvas>
1869
+ </div>
1870
+ <div onClick={this.enlargeClick.bind(this, 'isLangVideo6')} className={`${this.state.isBigVideo == 'video6' ? 'item1' : "itemed"}`}>
1871
+ {/* <div style={{ display: (this.state.isPDF) ? '' : 'none', }} id="touBoxItem">
1684
1872
  {pdfChildren}
1685
- </div>
1686
- <div style={this.state.isPDF ? {display: 'none'}: {}}>
1687
- <video
1688
- id="video6"
1689
- autoPlay
1690
- muted={true}
1691
- className="video"
1692
- />
1693
- <audio id="audio6" autoPlay/>
1694
- <label style={{display: 'none'}} id="feedId6" type="text"/>
1695
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView6" width="70" height="70"></canvas>
1696
- </div>
1697
-
1873
+ </div> */}
1874
+ {/* <div style={this.state.isPDF ? {display: 'none'}: {}}> */}
1875
+ <video
1876
+ id="video6"
1877
+ autoPlay
1878
+ muted={true}
1879
+ className="video"
1880
+ />
1881
+ <audio id="audio6" autoPlay />
1882
+ <label style={{ display: 'none' }} id="feedId6" type="text" />
1883
+ <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView6" width="20" height="50"></canvas>
1884
+ {/* </div> */}
1885
+
1698
1886
  </div>
1699
- </div>
1887
+ </div>
1700
1888
 
1701
- </div>
1702
- <Foot
1703
- img={this.state.voiceImg}
1704
- screenName={this.state.screenName}
1705
- suspendName={this.state.suspendName}
1706
- cameraImg={this.state.cameraImg}
1707
- customerList={this.state.customerList}
1708
- suspend={this.suspend}
1709
- voice={this.voice}
1710
- cameraClick={this.cameraClick}
1711
- sharedScreen={this.sharedScreen}
1712
- endSession={this.endSession}
1713
- facialRecognition={this.facialRecognition}
1714
- pictureInPicture={this.pictureInPicture}
1715
- transcribingClick={this.transcribingClick}
1716
- invitationClick={this.invitationClick}
1717
- customerFaceClick={this.customerFaceClick}
1718
- ocrClick={this.ocrClick}
1719
- switchExternal={this.switchExternal}
1720
- ></Foot>
1721
- <Modal cancelText="取消" okText="确定" visible={this.state.isModalVisible} onOk={this.handleOk}
1722
- onCancel={this.handleCancel}>
1723
- {
1724
- this.state.isSuspend && <span>确定是否恢复会话?</span>
1725
- }
1726
- {
1727
- !this.state.isSuspend && <span>确定是否暂停会话?</span>
1728
- }
1729
- </Modal>
1730
- <Modal cancelText="取消" okText="确定" visible={this.state.isModalVisibleEnd} onOk={this.handleOkEnd}
1731
- onCancel={this.handleCancelEnd}>
1732
- <span>确定是否结束会话?</span>
1733
- </Modal>
1734
- <Modal title={this.state.titleModal} cancelText="取消" okText="确定" visible={this.state.isModalVisibleFacial}
1735
- onOk={this.handleOkFacial} onCancel={this.handleCancelFacial}>
1736
- <div className="faceBody">
1737
- <img className="faceImg" src={this.state.facialImg} alt=""></img>
1738
1889
  </div>
1890
+ <Foot
1891
+ img={this.state.voiceImg}
1892
+ screenName={this.state.screenName}
1893
+ suspendName={this.state.suspendName}
1894
+ cameraImg={this.state.cameraImg}
1895
+ customerList={this.state.customerList}
1896
+ suspend={this.suspend}
1897
+ voice={this.voice}
1898
+ cameraClick={this.cameraClick}
1899
+ sharedScreen={this.sharedScreen}
1900
+ endSession={this.endSession}
1901
+ facialRecognition={this.facialRecognition}
1902
+ pictureInPicture={this.pictureInPicture}
1903
+ transcribingClick={this.transcribingClick}
1904
+ invitationClick={this.invitationClick}
1905
+ customerFaceClick={this.customerFaceClick}
1906
+ ocrClick={this.ocrClick}
1907
+ switchExternal={this.switchExternal}
1908
+ ></Foot>
1909
+ <Modal cancelText="取消" okText="确定" visible={this.state.isModalVisible} onOk={this.handleOk}
1910
+ onCancel={this.handleCancel}>
1911
+ {
1912
+ this.state.isSuspend && <span>确定是否恢复会话?</span>
1913
+ }
1914
+ {
1915
+ !this.state.isSuspend && <span>确定是否暂停会话?</span>
1916
+ }
1917
+ </Modal>
1918
+ <Modal cancelText="取消" okText="确定" visible={this.state.isModalVisibleEnd} onOk={this.handleOkEnd}
1919
+ onCancel={this.handleCancelEnd}>
1920
+ <span>确定是否结束会话?</span>
1921
+ </Modal>
1922
+ <Modal title={this.state.titleModal} cancelText="取消" okText="确定" visible={this.state.isModalVisibleFacial}
1923
+ onOk={this.handleOkFacial} onCancel={this.handleCancelFacial}>
1924
+ <div className="faceBody">
1925
+ <img className="faceImg" src={this.state.facialImg} alt=""></img>
1926
+ </div>
1739
1927
 
1740
- </Modal>
1741
- <Modal title="新增预约" visible={this.state.isModalVisibleInvitation} footer={[
1742
- <Button type="primary" danger onClick={this.handleOkInvitation}>发送</Button>,
1743
- <Button onClick={this.handleCancelInvitation}>取消</Button>
1744
- ]}>
1745
- <div>
1746
- <div>输入员工号:</div>
1747
- <div className="invitationDiv">
1748
- <input className="inputClick" placeholder="请输入员工号" value={this.state.employeeNumber} onChange={e => this.handleChange(e)}></input>
1749
- <span className="invitationSpan" onClick={this.queryStaff}>查 询</span>
1928
+ </Modal>
1929
+ <Modal title="新增预约" visible={this.state.isModalVisibleInvitation} footer={[
1930
+ <Button type="primary" danger onClick={this.handleOkInvitation}>发送</Button>,
1931
+ <Button onClick={this.handleCancelInvitation}>取消</Button>
1932
+ ]}>
1933
+ <div>
1934
+ <div>输入员工号:</div>
1935
+ <div className="invitationDiv">
1936
+ <input className="inputClick" placeholder="请输入员工号" value={this.state.employeeNumber} onChange={e => this.handleChange(e)}></input>
1937
+ <span className="invitationSpan" onClick={this.queryStaff}>查 询</span>
1938
+ </div>
1939
+ <div className="invitationDiv">
1940
+ <input className="inputClick" readonly value={this.state.employeeName}></input>
1941
+ </div>
1750
1942
  </div>
1751
- <div className="invitationDiv">
1752
- <input className="inputClick" readonly value={this.state.employeeName}></input>
1943
+ </Modal>
1944
+ <Modal title="签字白板" closable={false} visible={this.state.isModalVisibleSign} footer={
1945
+ [
1946
+ <Button type="primary" danger onClick={this.handleOkSign}>确定</Button>
1947
+ ]
1948
+ }>
1949
+ <div className="content">
1950
+ <CanvasDraw
1951
+ ref={this.signCanvas}
1952
+ brushColor="#000"
1953
+ brushRadius={3}
1954
+ lazyRadius={2}
1955
+ canvasWidth="100%"
1956
+ canvasHeight="100%"
1957
+ hideGrid={true}
1958
+ ></CanvasDraw>
1753
1959
  </div>
1754
- </div>
1755
- </Modal>
1756
- <Modal title="签字白板" closable={false} visible={this.state.isModalVisibleSign} footer={
1757
- [
1758
- <Button type="primary" danger onClick={this.handleOkSign}>确定</Button>
1759
- ]
1760
- }>
1761
- <div className="content">
1762
- <CanvasDraw
1763
- ref={this.signCanvas}
1764
- brushColor="#000"
1765
- brushRadius={3}
1766
- lazyRadius={2}
1767
- canvasWidth="100%"
1768
- canvasHeight="100%"
1769
- hideGrid={true}
1770
- ></CanvasDraw>
1771
- </div>
1772
- </Modal>
1773
- <video className="mixedvideo" id="mixedvideo" autoPlay muted={true} width="0" height="0"
1774
- webkit-playsinline="true" playsInline={true} x5-playsinline="x5-playsinline"
1775
- x-webkit-airplay="true"></video>
1776
- </Spin>
1777
- </div>
1778
-
1779
- );
1960
+ </Modal>
1961
+ <video className="mixedvideo" id="mixedvideo" autoPlay muted={true} width="400" height="400"
1962
+ webkit-playsinline="true" playsInline={true} x5-playsinline="x5-playsinline"
1963
+ x-webkit-airplay="true"></video>
1964
+ </Spin>
1965
+ </div>);
1780
1966
  }
1781
1967
  }
1782
1968
  Video.defaultProps = {
@@ -1784,6 +1970,6 @@ Video.defaultProps = {
1784
1970
  businessNumber: '123',
1785
1971
  callbackUrl: 'http://47.102.126.132:8720/hsbc/callback',
1786
1972
  roomServerUrl: 'wss://mrtc.mpaas.cn-hangzhou.aliyuncs.com/ws',
1787
- resourcePath:'https://counter-web.leimondata.cn:7199',
1973
+ resourcePath: 'https://counter-web.leimondata.cn:7199',
1788
1974
  }
1789
1975
  export default Video