react_hsbc_teller 0.3.7 → 0.4.1

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.
@@ -21,6 +21,7 @@ import 'antd/lib/spin/style'
21
21
  import { Button } from '../../../node_modules/antd/lib/index';
22
22
  import CanvasDraw from "react-canvas-draw";
23
23
  import { FormattedMessage, injectIntl } from 'react-intl';
24
+ import html2canvas from 'html2canvas';
24
25
  const LEAVE_TYPE = {
25
26
  TELLER_EXIT: '1', // 坐席退出
26
27
  ROOM_DESTROYED: '-1', // 房间异常
@@ -31,8 +32,7 @@ class Video extends Component {
31
32
  signCanvas = React.createRef();
32
33
  state = {
33
34
  isWhiteboard: false,
34
- isSelect: 'video',
35
- isPDF: false,
35
+ isSelect: '',
36
36
  loading: false,
37
37
  isModalVisibleSign: false,
38
38
  titleModal: '人脸识别',
@@ -52,7 +52,6 @@ class Video extends Component {
52
52
  cameraImg: cameraImgOpen,
53
53
  voiceStatue: false,
54
54
  voiceImg: voiceImgOpen,
55
- isBigVideo: 'video1',
56
55
  isCustomer: false,
57
56
  publishDevic: 1,
58
57
  isSharedScreen: false,
@@ -70,7 +69,22 @@ class Video extends Component {
70
69
  imRoomId: this.props.imRoomId,
71
70
  isPictureInPicture: false,
72
71
  clickedFacial: false,
73
- clickedOcr: false
72
+ clickedOcr: false,
73
+ videoOneName: '',
74
+ videoTwoName: '',
75
+ videoThreeName: '',
76
+ videoFourName: '',
77
+ videoFiveName: '',
78
+ videoSixName: '',
79
+ tabTitles: [
80
+ ],
81
+ videoList: [],
82
+ voiceVideoOne: false,
83
+ voiceVideoTwo: false,
84
+ voiceVideoThree: false,
85
+ voiceVideoFour: false,
86
+ voiceVideoFive: false,
87
+ voiceVideoSix: false,
74
88
  };
75
89
  // eslint-disable-next-line no-undef
76
90
  test_controller = '';
@@ -155,14 +169,11 @@ class Video extends Component {
155
169
  // 初始化视频
156
170
  ConnectMRTC = () => {
157
171
  const config_param = {};
158
- config_param.auto_publish_subscribe = 3;
172
+ config_param.auto_publish_subscribe = 2;
159
173
  config_param.media_type = 1;
160
174
  config_param.publish_device = 1;
161
175
  config_param.video_profile_type = '3';
162
176
  config_param.need_volume_analyser = true;
163
- // config_param.audioSource = that.microphone[0].actionid
164
- // config_param.videoSource = that.checkOne[0]
165
- // config_param.transport_ = 'relay'
166
177
  config_param.initPublish = [
167
178
  {
168
179
  publish_video_id: 'publish_video1',
@@ -334,7 +345,7 @@ class Video extends Component {
334
345
  list.push({
335
346
  feedId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).feedId,
336
347
  customId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).uid,
337
- name: '客户1',
348
+ name: this.state.videoOneName,
338
349
  })
339
350
  }
340
351
  if (document.getElementById('video2').name) {
@@ -343,7 +354,7 @@ class Video extends Component {
343
354
  list.push({
344
355
  feedId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).feedId,
345
356
  customId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).uid,
346
- name: '客户2'
357
+ name: this.state.videoTwoName
347
358
  })
348
359
  }
349
360
  if (document.getElementById('video3').name) {
@@ -352,7 +363,7 @@ class Video extends Component {
352
363
  list.push({
353
364
  feedId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).feedId,
354
365
  customId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).uid,
355
- name: '客户3'
366
+ name: this.state.videoThreeName
356
367
  })
357
368
  }
358
369
  if (document.getElementById('video4').name) {
@@ -361,7 +372,7 @@ class Video extends Component {
361
372
  list.push({
362
373
  feedId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).feedId,
363
374
  customId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).uid,
364
- name: '客户4'
375
+ name: this.state.videoFourName
365
376
  })
366
377
  }
367
378
  if (document.getElementById('video5').name) {
@@ -370,7 +381,7 @@ class Video extends Component {
370
381
  list.push({
371
382
  feedId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).feedId,
372
383
  customId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).uid,
373
- name: '客户5'
384
+ name: this.state.videoFiveName
374
385
  })
375
386
  }
376
387
  if (document.getElementById('video6').name) {
@@ -379,7 +390,7 @@ class Video extends Component {
379
390
  list.push({
380
391
  feedId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).feedId,
381
392
  customId: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).uid,
382
- name: '客户6'
393
+ name: this.state.videoSixName
383
394
  })
384
395
  }
385
396
  if(list.length > 0) {
@@ -421,38 +432,6 @@ class Video extends Component {
421
432
  endSessionValue = () => {
422
433
  this.test_controller.LeaveRoom()
423
434
  };
424
- // 放大对应的视频
425
- enlargeClick = (val) => {
426
- if (val == 'isLangVideo1') {
427
- if (document.getElementById('video1').name) {
428
- this.setState({ isBigVideo: 'video1' })
429
- }
430
- } else if (val == 'isLangPublishVideo1') {
431
- if (document.getElementById('publish_video1').name && this.state.isCustomer) {
432
- this.setState({ isBigVideo: 'publish_video1' })
433
- }
434
- } else if (val == 'isLangVideo2') {
435
- if (document.getElementById('video2').name) {
436
- this.setState({ isBigVideo: 'video2' })
437
- }
438
- } else if (val == 'isLangVideo3') {
439
- if (document.getElementById('video3').name) {
440
- this.setState({ isBigVideo: 'video3' })
441
- }
442
- } else if (val == 'isLangVideo4') {
443
- if (document.getElementById('video4').name) {
444
- this.setState({ isBigVideo: 'video4' })
445
- }
446
- } else if (val == 'isLangVideo5') {
447
- if (document.getElementById('video5').name) {
448
- this.setState({ isBigVideo: 'video5' })
449
- }
450
- } else if (val == 'isLangVideo6') {
451
- if (document.getElementById('video6').name) {
452
- this.setState({ isBigVideo: 'video6' })
453
- }
454
- }
455
- };
456
435
  // 画中画
457
436
  pictureInPicture = () => {
458
437
  let interval
@@ -462,52 +441,164 @@ class Video extends Component {
462
441
  } else {
463
442
  const list = []
464
443
  if(document.getElementById('video1').name) {
465
- list.push('video1')
444
+ list.push({
445
+ name: 'video1',
446
+ title: this.state.videoOneName
447
+ })
466
448
  }
467
449
  if(document.getElementById('publish_video1').name) {
468
- list.push('publish_video1')
450
+ list.push({
451
+ name: 'publish_video1',
452
+ title: '坐席'
453
+ })
469
454
  }
470
455
  if(document.getElementById('video2').name) {
471
- list.push('video2')
456
+ list.push({
457
+ name: 'video2',
458
+ title: this.state.videoTwoName
459
+ })
472
460
  }
473
461
  if(document.getElementById('video3').name) {
474
- list.push('video3')
462
+ list.push({
463
+ name: 'video3',
464
+ title: this.state.videoThreeName
465
+ })
475
466
  }
476
467
  if(document.getElementById('video4').name) {
477
- list.push('video4')
468
+ list.push({
469
+ name: 'video4',
470
+ title: this.state.videoFourName
471
+ })
478
472
  }
479
473
  if(document.getElementById('video5').name) {
480
- list.push('video5')
474
+ list.push({
475
+ name: 'video5',
476
+ title: this.state.videoFiveName
477
+ })
481
478
  }
482
479
  if(document.getElementById('video6').name) {
483
- list.push('video6')
484
- }
485
- if(document.getElementById('video10').name) {
486
- list.push('video10')
480
+ list.push({
481
+ name: 'video6',
482
+ title: this.state.videoSixName
483
+ })
487
484
  }
485
+ // if(document.getElementById('video10').name) {
486
+ // list.push({
487
+ // name: 'video10',
488
+ // title: '互动白板'
489
+ // })
490
+ // }
488
491
  console.log(list)
489
- const width = 320 * list.length;
490
- const height = 480;
492
+ const width = 640;
493
+ const height = 360 * list.length;
491
494
  const canvas = document.createElement('canvas');
492
495
  const cobj = canvas.getContext('2d'); // 获取绘图环境
493
496
  canvas.width = width;
494
497
  canvas.height = height;
498
+
495
499
  interval = setInterval(() => {
496
500
  cobj.clearRect(0, 0, width, height);
497
501
  for(let i=0;i<list.length;i++){
498
-
499
- let videoId = list[i];
502
+
503
+ let videoId = list[i].name;
500
504
  let videoDiv = document.getElementById(videoId);
501
505
  let videoWidth = videoDiv.videoWidth;
502
506
  let videoHeight = videoDiv.videoHeight;
503
- let newVideoWidth = 320;
504
- let newVideoHeight = 480;
505
- if (videoHeight * 320 / videoWidth > 480) {
506
- newVideoWidth = videoWidth * 480 / videoHeight;
507
+ let newVideoWidth = 640;
508
+ let newVideoHeight = 360;
509
+ if (videoHeight * 640 / videoWidth > 360) {
510
+ newVideoWidth = videoWidth * 360 / videoHeight;
507
511
  } else {
508
- newVideoHeight = videoHeight * 320 / videoWidth;
512
+ newVideoHeight = videoHeight * 640 / videoWidth;
509
513
  }
510
- cobj.drawImage(videoDiv, 320 * i, (480 - newVideoHeight)/2, 320, newVideoHeight);
514
+
515
+ cobj.drawImage(videoDiv, (640 - newVideoWidth)/2, 360 * i, newVideoWidth, newVideoHeight);
516
+ cobj.beginPath();
517
+ cobj.strokeStyle = this.props.titleColor;
518
+ cobj.fillStyle = this.props.titleBackground;
519
+ cobj.fillRect(0, 360 * (i + 1) - 60, 300, 60 )
520
+ cobj.fill();
521
+ cobj.stroke();
522
+ cobj.beginPath();
523
+ cobj.font = "28px auto";
524
+ cobj.textAlign = 'center';
525
+ cobj.lineWidth = 1;
526
+ cobj.strokeText(list[i].title, 150, 360 * (i + 1) - 20);
527
+ cobj.stroke();
528
+ //左边框
529
+ cobj.beginPath();
530
+ cobj.moveTo( 0, 0);
531
+ cobj.lineTo( 0, 360 * list.length);
532
+ cobj.closePath(); //闭合路径
533
+ cobj.lineWidth = 5; //线的边框为10像素
534
+ cobj.strokeStyle = '#d9363e';
535
+ cobj.stroke(); //绘制定义的图形
536
+
537
+ //下边框
538
+ cobj.beginPath();
539
+ cobj.moveTo( 0, 0);
540
+ cobj.lineTo( 640, 0);
541
+ cobj.closePath(); //闭合路径
542
+ cobj.lineWidth = 5; //线的边框为10像素
543
+ cobj.strokeStyle = '#d9363e';
544
+ cobj.stroke(); //绘制定义的图形
545
+
546
+ //右边框
547
+ cobj.beginPath();
548
+ cobj.moveTo( 640, 360 * list.length);
549
+ cobj.lineTo( 640, 0);
550
+ cobj.closePath(); //闭合路径
551
+ cobj.lineWidth = 5; //线的边框为10像素
552
+ cobj.strokeStyle = '#d9363e';
553
+ cobj.stroke(); //绘制定义的图形
554
+
555
+
556
+ //上边框
557
+ cobj.beginPath();
558
+ cobj.moveTo( 0, 360 * list.length);
559
+ cobj.lineTo( 640, 360 * list.length);
560
+ cobj.closePath(); //闭合路径
561
+ cobj.lineWidth = 5; //线的边框为10像素
562
+ cobj.strokeStyle = '#d9363e';
563
+ cobj.stroke(); //绘制定义的图形
564
+
565
+ // let sid = document.getElementById(list[i].name).name
566
+ // let stream = this.test_controller.GetMediaInfo(sid).audio_
567
+ // let acc = new AudioContext()
568
+ // let mic = acc.createMediaStreamSource(stream)
569
+ // let analyser = acc.createAnalyser()
570
+ // analyser.fftSize = 256
571
+ // mic.connect(analyser)
572
+ // aou(analyser)
573
+ // let microphoneSize = this.props.microphoneSize
574
+ // var img = document.getElementById("icon_huatong");
575
+ // cobj.drawImage(img, 600, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
576
+ // function aou(analyser){
577
+ // let dataArray = new Uint8Array(analyser.frequencyBinCount);
578
+ // analyser.getByteFrequencyData(dataArray);
579
+ // let step = Math.round(dataArray.length / 60); //采样步长
580
+ // // 以画布左上角为坐标原点
581
+ // let drawArea = {
582
+ // x1: 28/50 * microphoneSize + 600, // 波动范围右下角的点坐标
583
+ // y1: 25/50 * microphoneSize + 360 * (i + 1) - 60,
584
+ // x2: 22/50 * microphoneSize + 600, // 波动范围左上角的点坐标
585
+ // y2: 10/50 * microphoneSize + 360 * (i + 1) - 60,
586
+ // }
587
+
588
+ // for (var j = 0; j < 40; j++) {
589
+ // let energy = (dataArray[step * j] / 256.0) * 80;
590
+ // cobj.beginPath();
591
+ // cobj.fillStyle = "#0AE544";
592
+ // const { x1,y1,x2,y2} = drawArea
593
+ // let width = x1-x2;
594
+ // let height = (energy>20?(energy-20):0) * (y1 - y2 ) / 70
595
+ // let startX = x2 // 绘制起始点x
596
+ // let startY = y1 - height // 绘制起始点y
597
+ // cobj.fillRect(startX, startY, width, height )
598
+ // }
599
+ // requestAnimationFrame(aou.bind(this, analyser));
600
+
601
+ // }
511
602
  }
512
603
  }, 100);
513
604
  const captureStream = canvas.captureStream();
@@ -554,6 +645,30 @@ class Video extends Component {
554
645
  })
555
646
  }
556
647
  }
648
+ tabTitlesClick = (value,type) =>{
649
+ const { tabTitles } = this.state;
650
+ if(type == 'add') {
651
+ tabTitles.unshift(value)
652
+ }else {
653
+ this.state.tabTitles.map((item,index)=>{
654
+ if(item.value == value) {
655
+ tabTitles.splice(index, 1)
656
+ this.setState({
657
+ tabTitles
658
+ })
659
+ }
660
+ })
661
+ }
662
+ if(this.state.tabTitles.length >0) {
663
+ this.setState({
664
+ isSelect: this.state.tabTitles[0].value
665
+ })
666
+ } else {
667
+ this.setState({
668
+ isSelect: 0
669
+ })
670
+ }
671
+ }
557
672
  mountClick = () => {
558
673
  window.IMEvt = msg => {
559
674
  console.log(JSON.parse(msg));
@@ -589,6 +704,7 @@ class Video extends Component {
589
704
  if(Mival.type == 1) {
590
705
  this.switchExternal()
591
706
  } else if(Mival.type == 2) {
707
+ this.tabTitlesClick('RMWhiteboard','delect')
592
708
  if(this.state.isSharedScreen) {
593
709
  this.setState({
594
710
  isWhiteboard: false,
@@ -596,8 +712,6 @@ class Video extends Component {
596
712
  }else {
597
713
  this.test_controller.UnPublish(document.getElementById('video10').name)
598
714
  this.setState({
599
- isPDF: false,
600
- isSelect: 'video',
601
715
  isWhiteboard: false,
602
716
  })
603
717
  }
@@ -605,6 +719,81 @@ class Video extends Component {
605
719
 
606
720
  }
607
721
 
722
+ } else if (Mival.typeId == 3100) {
723
+ if(Mival.data.sessionId == this.state.sessionId) {
724
+ if(Mival.data.userId == this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).uid) {
725
+ if(Mival.muteStatus == 0) {
726
+ this.setState({
727
+ voiceVideoOne: false
728
+ })
729
+ } else if(Mival.muteStatus == 1) {
730
+ this.setState({
731
+ voiceVideoOne: true
732
+ })
733
+ }
734
+
735
+ }
736
+ if(Mival.data.userId == (document.getElementById("feedId2").innerText ? this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).uid : '')) {
737
+ if(Mival.muteStatus == 0) {
738
+ this.setState({
739
+ voiceVideoTwo: false
740
+ })
741
+ } else if(Mival.muteStatus == 1) {
742
+ this.setState({
743
+ voiceVideoTwo: true
744
+ })
745
+ }
746
+
747
+ }
748
+ if(Mival.data.userId == (document.getElementById("feedId3").innerText ? this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).uid : '')) {
749
+ if(Mival.muteStatus == 0) {
750
+ this.setState({
751
+ voiceVideoThree: false
752
+ })
753
+ } else if(Mival.muteStatus == 1) {
754
+ this.setState({
755
+ voiceVideoThree: true
756
+ })
757
+ }
758
+
759
+ }
760
+ if(Mival.data.userId == (document.getElementById("feedId4").innerText ? this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).uid : '')) {
761
+ if(Mival.muteStatus == 0) {
762
+ this.setState({
763
+ voiceVideoFour: false
764
+ })
765
+ } else if(Mival.muteStatus == 1) {
766
+ this.setState({
767
+ voiceVideoFour: true
768
+ })
769
+ }
770
+
771
+ }
772
+ if(Mival.data.userId == (document.getElementById("feedId5").innerText ? this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).uid : '')) {
773
+ if(Mival.muteStatus == 0) {
774
+ this.setState({
775
+ voiceVideoFive: false
776
+ })
777
+ } else if(Mival.muteStatus == 1) {
778
+ this.setState({
779
+ voiceVideoFive: true
780
+ })
781
+ }
782
+
783
+ }
784
+ if(Mival.data.userId == (document.getElementById("feedId6").innerText ? this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).uid : '')) {
785
+ if(Mival.muteStatus == 0) {
786
+ this.setState({
787
+ voiceVideoSix: false
788
+ })
789
+ } else if(Mival.muteStatus == 1) {
790
+ this.setState({
791
+ voiceVideoSix: true
792
+ })
793
+ }
794
+
795
+ }
796
+ }
608
797
  }
609
798
  };
610
799
 
@@ -613,7 +802,7 @@ class Video extends Component {
613
802
  type: '2',
614
803
  sigType: 1
615
804
  };
616
- this.mpaasSig(data);
805
+
617
806
  this.test_controller.GetDevices();
618
807
  // 获取设备成功
619
808
  this.test_controller.OnGetDevicesSuccess = (devicesInfo) => {
@@ -666,11 +855,13 @@ class Video extends Component {
666
855
  obj2.push(b)
667
856
  }
668
857
  }
669
- console.log(obj, obj1)
858
+ this.mpaasSig(data);
670
859
  };
671
860
  // 获取设备失败
672
861
  this.test_controller.OnGetDevicesFailed = (code, msg) => {
673
862
  console.log('获取设备失败', code, msg)
863
+ message.success('获取设备失败,请检查摄像头设备是否可用或是否禁用摄像头')
864
+ this.roomCallBack(2,'获取失败失败')
674
865
  };
675
866
  // 建立连接成功
676
867
  this.test_controller.OnConnectOK = () => {
@@ -765,7 +956,7 @@ class Video extends Component {
765
956
  // 订阅媒体流成功
766
957
  this.test_controller.OnSubscribeSucc = (feed, sid) => {
767
958
  console.log('订阅媒体流成功', feed, sid);
768
- console.log(document.getElementById("feedId1").innerText)
959
+ this.appGetUsername(sid)
769
960
  };
770
961
  // 订阅媒体流失败
771
962
  this.test_controller.OnSubscribeFailed = (
@@ -782,7 +973,7 @@ class Video extends Component {
782
973
  // 推送“新加⼊房间者”给与会者
783
974
  this.test_controller.OnNewJoinerIn = (participant) => {
784
975
  console.log('新加⼊房间者', participant);
785
- this.test_controller.ChangeStreamSize(document.getElementById('publish_video1').name, 5)
976
+ // this.test_controller.ChangeStreamSize(document.getElementById('publish_video1').name, 5)
786
977
  this.setState(
787
978
  {
788
979
  isCustomer: true
@@ -792,16 +983,129 @@ class Video extends Component {
792
983
  // 推送“有新发布”给与会者
793
984
  this.test_controller.OnNewPublish = (feed) => {
794
985
  console.log('有新发布者', feed);
986
+ callNimIM('sendCustomCmdMsg', {
987
+ customId: this.state.imRoomId,
988
+ content: JSON.stringify({
989
+ 'typeId': 1014,
990
+ 'sessionId': this.state.sessionId,
991
+ 'meetingInfo': {
992
+ 'title': this.props.meetingInfo.title,
993
+ 'host': this.props.meetingInfo.host,
994
+ 'customers': this.props.meetingInfo.customers
995
+ }
996
+
997
+ })
998
+ }, function (code, message, data) {
999
+ })
795
1000
  let array = this.state.roomCustomerList;
796
1001
  let newArray = [...array];
797
1002
  newArray.push({
798
1003
  feedId: feed.feedId,
799
- uid: feed.uid
1004
+ uid: feed.uid,
1005
+ tag: feed.tag
800
1006
  });
801
1007
  console.log(array, newArray, this.state.roomCustomerList);
802
1008
  this.setState({
803
1009
  roomCustomerList: newArray
804
1010
  })
1011
+ let config_param
1012
+ if(feed.uid != this.state.tellerAccount) {
1013
+ if(feed.tag == 'VIDEO_SOURCE_SCREEN') {
1014
+ config_param = {
1015
+ subscribe_video_id: 'video11',
1016
+ subscribe_audio_id: 'audio11',
1017
+ subscribe_streamId_id: 'subscribe_streamId11',
1018
+ feedId_id: 'feedId11',
1019
+ feedId: feed.feedId
1020
+ }
1021
+
1022
+ this.tabTitlesClick(
1023
+ {
1024
+ value: 'customerScreen',
1025
+ name: '客户投屏'
1026
+ },'add'
1027
+ )
1028
+ } else {
1029
+ // let data_param = {
1030
+ // isVideo: true,
1031
+ // videoIndex: this.state.videoList.length + 1,
1032
+ // videoTwoName: ''
1033
+ // }
1034
+ // let videoList = []
1035
+ // console.log(data_param)
1036
+ // videoList.push(data_param)
1037
+ // this.setState({
1038
+ // videoList
1039
+ // })
1040
+ // config_param = {
1041
+ // subscribe_video_id: 'video' + this.state.videoList.length,
1042
+ // subscribe_audio_id: 'audio' + this.state.videoList.length,
1043
+ // subscribe_streamId_id: 'subscribe_streamId' + this.state.videoList.length,
1044
+ // feedId_id: 'feedId' + this.state.videoList.length,
1045
+ // feedId: feed.feedId
1046
+ // }
1047
+ if(!document.getElementById('video1').name) {
1048
+ config_param = {
1049
+ subscribe_video_id: 'video1',
1050
+ subscribe_audio_id: 'audio1',
1051
+ subscribe_streamId_id: 'subscribe_streamId1',
1052
+ feedId_id: 'feedId1',
1053
+ feedId: feed.feedId
1054
+ }
1055
+ }
1056
+ else if(!document.getElementById('video2').name) {
1057
+ config_param = {
1058
+ subscribe_video_id: 'video2',
1059
+ subscribe_audio_id: 'audio2',
1060
+ subscribe_streamId_id: 'subscribe_streamId2',
1061
+ feedId_id: 'feedId2',
1062
+ feedId: feed.feedId
1063
+ }
1064
+ }
1065
+ else if(!document.getElementById('video3').name) {
1066
+ config_param = {
1067
+ subscribe_video_id: 'video3',
1068
+ subscribe_audio_id: 'audio3',
1069
+ subscribe_streamId_id: 'subscribe_streamId3',
1070
+ feedId_id: 'feedId3',
1071
+ feedId: feed.feedId
1072
+ }
1073
+ }
1074
+ else if(!document.getElementById('video4').name) {
1075
+ config_param = {
1076
+ subscribe_video_id: 'video4',
1077
+ subscribe_audio_id: 'audio4',
1078
+ subscribe_streamId_id: 'subscribe_streamId4',
1079
+ feedId_id: 'feedId4',
1080
+ feedId: feed.feedId
1081
+ }
1082
+ }
1083
+ else if(!document.getElementById('video5').name) {
1084
+ config_param = {
1085
+ subscribe_video_id: 'video5',
1086
+ subscribe_audio_id: 'audio5',
1087
+ subscribe_streamId_id: 'subscribe_streamId5',
1088
+ feedId_id: 'feedId5',
1089
+ feedId: feed.feedId
1090
+ }
1091
+ }
1092
+ else if(!document.getElementById('video6').name) {
1093
+ config_param = {
1094
+ subscribe_video_id: 'video6',
1095
+ subscribe_audio_id: 'audio6',
1096
+ subscribe_streamId_id: 'subscribe_streamId6',
1097
+ feedId_id: 'feedId6',
1098
+ feedId: feed.feedId
1099
+ }
1100
+ }
1101
+ }
1102
+
1103
+ }
1104
+ if (config_param !== undefined) {
1105
+ config_param.need_volume_analyser = true
1106
+ console.log(config_param)
1107
+ this.test_controller.Subscribe(config_param)
1108
+ }
805
1109
  };
806
1110
  // 推送“有新订阅”给与会者
807
1111
  this.test_controller.OnNewSubscribe = (subscriber, feed) => {
@@ -820,15 +1124,73 @@ class Video extends Component {
820
1124
  'tellerId': this.props.tellerAccount
821
1125
  })
822
1126
  })
1127
+ this.setState({
1128
+ publishDevic: 1,
1129
+ isSharedScreen: false,
1130
+ screenName: '投屏'
1131
+ });
1132
+ this.tabTitlesClick('RMScreen','delect')
1133
+ if(this.state.isPictureInPicture) {
1134
+ document.exitPictureInPicture()
1135
+ }
823
1136
  }
824
1137
  };
825
1138
  // 取消订阅媒体流成功
826
1139
  this.test_controller.OnUnSubscribeSucc = (sid) => {
827
1140
  console.log('取消订阅媒体流成功', sid)
1141
+ this.state.tabTitles.map((item) => {
1142
+ if(item.value == 'customerScreen') {
1143
+ if(!document.getElementById("video11").name) {
1144
+ this.tabTitlesClick('customerScreen','delect')
1145
+ }
1146
+ }
1147
+ })
1148
+ if(!document.getElementById("video1").name) {
1149
+ this.setState({
1150
+ videoOneName: ''
1151
+ })
1152
+ }
1153
+ if(!document.getElementById("video2").name) {
1154
+ this.setState({
1155
+ videoTwoName: ''
1156
+ })
1157
+ }
1158
+ if(!document.getElementById("video3").name) {
1159
+ this.setState({
1160
+ videoThreeName: ''
1161
+ })
1162
+ }
1163
+ if(!document.getElementById("video4").name) {
1164
+ this.setState({
1165
+ videoFourName: ''
1166
+ })
1167
+ }
1168
+ if(!document.getElementById("video5").name) {
1169
+ this.setState({
1170
+ videoFiveName: ''
1171
+ })
1172
+ }
1173
+ if(!document.getElementById("video6").name) {
1174
+ this.setState({
1175
+ videoSixName: ''
1176
+ })
1177
+ }
828
1178
  };
829
1179
  // 推送“取消发布”给与会者
830
1180
  this.test_controller.OnUnPublish = (feed) => {
831
1181
  console.log('取消发布者', feed)
1182
+ for(let i=0;i<this.state.roomCustomerList.length;i++) {
1183
+ if(this.state.roomCustomerList[i].uid == feed.uid) {
1184
+ this.state.roomCustomerList.splice(i, 1)
1185
+ }
1186
+ }
1187
+
1188
+ if(this.state.roomCustomerList.length == 0) {
1189
+ // this.test_controller.ChangeStreamSize(document.getElementById('publish_video1').name, 3)
1190
+ this.setState({
1191
+ isCustomer: false
1192
+ })
1193
+ }
832
1194
  };
833
1195
  // 推送“取消订阅”给与会者 OnUnSubscribe(unsubscriber,feed)
834
1196
  this.test_controller.OnUnSubscribe = (unsubscriber, feed) => {
@@ -1063,15 +1425,7 @@ class Video extends Component {
1063
1425
  canvas.width = this.props.microphoneSize
1064
1426
  canvas.height = this.props.microphoneSize
1065
1427
  let ctx = canvas.getContext("2d");
1066
-
1067
- let outcanvas = document.createElement("canvas");
1068
- outcanvas.width = canvas.width;
1069
- outcanvas.height = canvas.height;
1070
- ctx.strokeStyle = "#db0011";
1071
- ctx.lineWidth = 2;
1072
1428
  ctx.clearRect(0, 0, canvas.width, canvas.height); //清理画布
1073
- // ctx.fillStyle ='rgba(0, 0, 0, 0.2)';
1074
- // ctx.fillRect(0, 0, canvas.width, canvas.height, )
1075
1429
  let dataArray = new Uint8Array(analyser.frequencyBinCount);
1076
1430
  analyser.getByteFrequencyData(dataArray);
1077
1431
  let step = Math.round(dataArray.length / 60); //采样步长
@@ -1096,67 +1450,7 @@ class Video extends Component {
1096
1450
  let startY = y1 - height // 绘制起始点y
1097
1451
  ctx.fillRect(startX, startY, width, height )
1098
1452
  }
1099
-
1100
- //制造半透明投影
1101
- function draw() {
1102
- ctx.drawImage(outcanvas, 0, 0);
1103
- ctx.save();
1104
- ctx.translate(canvas.width / 2, canvas.height / 2);
1105
- ctx.rotate(Math.PI);
1106
- ctx.scale(-1, 1);
1107
- ctx.drawImage(outcanvas, -canvas.width / 2, -canvas.height / 2);
1108
- ctx.restore();
1109
- ctx.fillStyle = 'rgba(192,192,192, .0)';
1110
- ctx.fillRect(0, 0, canvas.width, canvas.height);
1111
- }
1112
-
1113
- draw();
1114
1453
  requestAnimationFrame(this.test_controller.OnVolumeAnalyser.bind(this, sid, analyser));
1115
- // let canvas = document.getElementById(volumeView);
1116
- // let ctx = canvas.getContext("2d");
1117
-
1118
- // let outcanvas = document.createElement("canvas");
1119
- // outcanvas.width = canvas.width;
1120
- // outcanvas.height = canvas.height;
1121
- // ctx.strokeStyle = this.props.voiceColor;
1122
- // ctx.lineWidth = 2;
1123
- // ctx.clearRect(0, 0, canvas.width, canvas.height); //清理画布
1124
- // let dataArray = new Uint8Array(analyser.frequencyBinCount);
1125
- // analyser.getByteFrequencyData(dataArray);
1126
- // let step = Math.round(dataArray.length / 60); //采样步长
1127
- // for (var i = 0; i < 40; i++) {
1128
- // let energy = (dataArray[step * i] / 256.0) * 50;
1129
- // for (var j = 0; j < energy; j++) {
1130
- // ctx.beginPath();
1131
- // ctx.moveTo(20 * i + 2, 200 + 4 * j);
1132
- // ctx.lineTo(20 * (i + 1) - 2, 200 + 4 * j);
1133
- // ctx.stroke();
1134
- // ctx.beginPath();
1135
- // ctx.moveTo(20 * i + 2, 200 - 4 * j);
1136
- // ctx.lineTo(20 * (i + 1) - 2, 200 - 4 * j);
1137
- // ctx.stroke();
1138
- // }
1139
- // ctx.beginPath();
1140
- // ctx.moveTo(20 * i + 2, 200);
1141
- // ctx.lineTo(20 * (i + 1) - 2, 200);
1142
- // ctx.stroke();
1143
- // }
1144
-
1145
- // //制造半透明投影
1146
- // function draw() {
1147
- // ctx.drawImage(outcanvas, 0, 0);
1148
- // ctx.save();
1149
- // ctx.translate(canvas.width / 4, canvas.height / 2);
1150
- // ctx.rotate(Math.PI);
1151
- // ctx.scale(-1, 1);
1152
- // ctx.drawImage(outcanvas, -canvas.width / 2, -canvas.height / 2);
1153
- // ctx.restore();
1154
- // ctx.fillStyle = 'rgba(192,192,192, .0)';
1155
- // ctx.fillRect(0, 0, canvas.width, canvas.height);
1156
- // }
1157
-
1158
- // draw();
1159
- // requestAnimationFrame(this.test_controller.OnVolumeAnalyser.bind(this, sid, analyser));
1160
1454
  }
1161
1455
  // 停止共享
1162
1456
  this.test_controller.OnDesktopDisplayClosed = () => {
@@ -1308,12 +1602,6 @@ class Video extends Component {
1308
1602
  sessionId: this.props.sessionId
1309
1603
  })
1310
1604
  } else {
1311
- setTimeout(() => {
1312
- this.setState({
1313
- screenName: this.props.intl.formatMessage({ id: 'shareScreen' }),
1314
- suspendName: this.props.intl.formatMessage({ id: 'suspend' }),
1315
- })
1316
- }, 50);
1317
1605
  this.addToScript()
1318
1606
  }
1319
1607
  }
@@ -1335,12 +1623,16 @@ class Video extends Component {
1335
1623
  customId: this.state.imRoomId,
1336
1624
  content: JSON.stringify({
1337
1625
  'typeId': 1013,
1338
- 'state': 0,
1339
- 'sessionId': this.state.sessionId,
1626
+ 'muteStatus': 1,
1627
+ 'data': {
1628
+ 'sessionId': this.state.sessionId,
1629
+ 'userId': this.props.tellerAccount
1630
+ }
1340
1631
  })
1341
1632
  }, function (code, message, data) {
1342
1633
  console.log(data)
1343
1634
  })
1635
+
1344
1636
  } else if (this.state.voiceStatue) {
1345
1637
  // 打开本地
1346
1638
  this.setState({
@@ -1357,8 +1649,11 @@ class Video extends Component {
1357
1649
  customId: this.state.imRoomId,
1358
1650
  content: JSON.stringify({
1359
1651
  'typeId': 1013,
1360
- 'state': 1,
1361
- 'sessionId': this.state.sessionId,
1652
+ 'muteStatus': 0,
1653
+ 'data': {
1654
+ 'sessionId': this.state.sessionId,
1655
+ 'userId': this.props.tellerAccount
1656
+ }
1362
1657
  })
1363
1658
  }, function (code, message, data) {
1364
1659
  console.log(data)
@@ -1366,7 +1661,7 @@ class Video extends Component {
1366
1661
  }
1367
1662
  };
1368
1663
  isFileSuccuse = () => {
1369
- if (!this.state.sessionId || this.state.isSuspend || !this.state.isCustomer) {
1664
+ if (!this.state.sessionId || this.state.isSuspend) {
1370
1665
  message.success(this.props.prohibitPrompt)
1371
1666
  return false
1372
1667
  } else {
@@ -1435,22 +1730,17 @@ class Video extends Component {
1435
1730
  this.test_controller.ChangeMediaStream(publish_config);
1436
1731
  this.setState({
1437
1732
  isPDF: true,
1438
- isSelect: 'noVideo',
1439
1733
  })
1440
1734
  } else {
1441
1735
  this.test_controller.UnPublish(document.getElementById('video10').name)
1442
- this.setState({
1443
- isPDF: false,
1444
- isSelect: 'video',
1445
- })
1446
1736
  }
1447
1737
  this.setState({
1448
1738
  publishDevic: 1,
1449
1739
  isSharedScreen: false,
1450
-
1451
1740
  screenName: '投屏'
1452
1741
  });
1453
1742
  console.log(pictureInPictureVideo)
1743
+ this.tabTitlesClick('RMScreen','delect')
1454
1744
  if(this.state.isPictureInPicture) {
1455
1745
  document.exitPictureInPicture()
1456
1746
  }
@@ -1471,20 +1761,18 @@ class Video extends Component {
1471
1761
  publish_config.publish_tag = 'projectionWhiteboard'
1472
1762
  this.test_controller.Publish(publish_config)
1473
1763
  }
1474
-
1475
-
1476
- // publish_config.media_type = 1;
1477
- // publish_config.publish_device = 2;
1478
- // publish_config.video_profile_type = 5;
1479
- // publish_config.sid = document.getElementById('publish_video1').name;
1480
- // this.test_controller.ChangeMediaStream(publish_config);
1481
1764
  this.setState({
1482
1765
  publishDevic: 2,
1483
- isSelect: 'noVideo',
1484
1766
  isSharedScreen: true,
1485
1767
  screenName: '取消共享',
1486
1768
  isPDF: false
1487
1769
  })
1770
+ this.tabTitlesClick(
1771
+ {
1772
+ value: 'RMScreen',
1773
+ name: '坐席投屏'
1774
+ },'add'
1775
+ )
1488
1776
  if(!this.state.isPictureInPicture) {
1489
1777
  this.pictureInPicture()
1490
1778
  }
@@ -1684,6 +1972,86 @@ class Video extends Component {
1684
1972
  imRoomId: props.imRoomId
1685
1973
  });
1686
1974
  }
1975
+ appGetUsername = async (sid) => {
1976
+ console.log(sid)
1977
+ let userId = ''
1978
+ let index
1979
+ // this.state.videoList.map((item,index)=>{
1980
+ // let name = 'video' + item.videoIndex
1981
+ // if(document.getElementById(name).name == sid){
1982
+ // userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById(("feedId" + item.videoIndex)).innerText).uid
1983
+ // index = index
1984
+ // }
1985
+ // })
1986
+ // try {
1987
+ // let result = await API.appGetUsername({
1988
+ // userId: userId
1989
+ // });
1990
+ // console.log(result)
1991
+ // if (result.code == 200) {
1992
+ // let data = result.data.userInfo ? result.data.userInfo.userName ? result.data.userInfo.userName : '' : ''
1993
+ // this.state.videoList[index].videoOneName = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById(("feedId" + item.videoIndex)).innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' : data ? data : '客户' + item.videoIndex
1994
+ // } else {
1995
+ // message.success('查询失败')
1996
+ // }
1997
+ // } catch (err) {
1998
+
1999
+ // }
2000
+ if(document.getElementById('video1').name == sid){
2001
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).uid
2002
+ }
2003
+ if(document.getElementById('video2').name == sid){
2004
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).uid
2005
+ }if(document.getElementById('video3').name == sid){
2006
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).uid
2007
+ }if(document.getElementById('video4').name == sid){
2008
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).uid
2009
+ }if(document.getElementById('video5').name == sid){
2010
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).uid
2011
+ }if(document.getElementById('video6').name == sid){
2012
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).uid
2013
+ }
2014
+ try {
2015
+ let result = await API.appGetUsername({
2016
+ userId: userId
2017
+ });
2018
+ console.log(result)
2019
+ if (result.code == 200) {
2020
+ let data = result.data.userInfo ? result.data.userInfo.userName ? result.data.userInfo.userName : '' : ''
2021
+ if(document.getElementById('video1').name == sid){
2022
+
2023
+ this.setState({
2024
+ videoOneName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' : data ? data : '客户1'
2025
+ })
2026
+ }
2027
+ if(document.getElementById('video2').name == sid){
2028
+ this.setState({
2029
+ videoTwoName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data? data : '客户2'
2030
+ })
2031
+ }if(document.getElementById('video3').name == sid){
2032
+ this.setState({
2033
+ videoThreeName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data ? data : '客户3'
2034
+ })
2035
+ }if(document.getElementById('video4').name == sid){
2036
+ this.setState({
2037
+ videoFourName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data ? data : '客户4'
2038
+ })
2039
+ }if(document.getElementById('video5').name == sid){
2040
+ this.setState({
2041
+ videoFiveName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data? data : '客户5'
2042
+ })
2043
+ }if(document.getElementById('video6').name == sid){
2044
+ this.setState({
2045
+ videoSixName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data ? data: '客户6'
2046
+ })
2047
+ }
2048
+ } else {
2049
+ message.success('查询失败')
2050
+ }
2051
+ } catch (err) {
2052
+
2053
+ }
2054
+ }
1687
2055
  queryStaff = async () => {
1688
2056
  try {
1689
2057
  let result = await API.getUsername({
@@ -1729,10 +2097,12 @@ class Video extends Component {
1729
2097
  if(!this.state.isWhiteboard) {
1730
2098
  const publish_config = {};
1731
2099
  this.setState({
1732
- isPDF: true,
1733
2100
  isWhiteboard: true,
1734
- isSelect: 'noVideo',
1735
2101
  })
2102
+ this.tabTitlesClick({
2103
+ value: 'RMWhiteboard',
2104
+ name: 'RM白板'
2105
+ },'add')
1736
2106
  if (document.getElementById('video10').name) {
1737
2107
  // 代表已经有了进行切流
1738
2108
  publish_config.publish_device = 4
@@ -1759,21 +2129,24 @@ class Video extends Component {
1759
2129
 
1760
2130
 
1761
2131
  }
1762
- switchSelect = () => {
1763
- if (this.state.isSelect == 'video') {
1764
- if (document.getElementById('video10').name) {
1765
- this.setState({
1766
- isSelect: 'noVideo',
2132
+ switchSelect = (value) => {
2133
+ this.setState({
2134
+ isSelect: value,
1767
2135
  })
1768
- } else {
1769
- message.success('当前无签字白板')
1770
- }
2136
+ // if (this.state.isSelect == 'video') {
2137
+ // if (document.getElementById('video10').name) {
2138
+ // this.setState({
2139
+ // isSelect: 'noVideo',
2140
+ // })
2141
+ // } else {
2142
+ // message.success('当前无签字白板')
2143
+ // }
1771
2144
 
1772
- } else {
1773
- this.setState({
1774
- isSelect: 'video',
1775
- })
1776
- }
2145
+ // } else {
2146
+ // this.setState({
2147
+ // isSelect: 'video',
2148
+ // })
2149
+ // }
1777
2150
  }
1778
2151
  facialHandleVisibleChange=(value)=>{
1779
2152
  if(!value) {
@@ -1790,25 +2163,66 @@ class Video extends Component {
1790
2163
  }
1791
2164
  }
1792
2165
  render() {
2166
+ const {meetingInfo} = this.props
1793
2167
  var pdfChildren
1794
2168
  if (this.props.children) {
1795
2169
  pdfChildren = React.cloneElement(this.props.children, { width: 100, height: 100, id: 12 })
1796
2170
  }
2171
+ const customerNameList = (
2172
+ <span>
2173
+ {
2174
+ meetingInfo.customers.map((item,index)=>{
2175
+ return <label>
2176
+ {item}
2177
+ {
2178
+ meetingInfo.customers.length > 0 && index != meetingInfo.customers.length-1 &&<span>,</span>
2179
+ }
2180
+
2181
+ </label>
2182
+ })
2183
+ }
2184
+ </span>
2185
+ )
2186
+ const tabTitleList = (
2187
+ <div className="button">
2188
+ {
2189
+ this.state.tabTitles.map((item)=>{
2190
+ return <div className={`${this.state.isSelect == item.value ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this,item.value)}>
2191
+ {item.name}
2192
+ </div>
2193
+ })
2194
+ }
2195
+ </div>
2196
+ )
2197
+ // const videoCustomer =
2198
+ // this.state.videoList.map((item,index)=>{
2199
+ // return <div className={`itemed`} style={{ display: (item.isVideo) ? '' : 'none', }}>
2200
+ // <video
2201
+ // id={'video' + item.videoIndex}
2202
+ // autoPlay
2203
+ // muted={true}
2204
+ // className="video"
2205
+ // />
2206
+ // <audio id={'audio' + item.videoIndex} autoPlay />
2207
+ // <label style={{ display: 'none' }} id={'feedId' + item.videoIndex} type="text" />
2208
+ // <div className={`customerTitle titleSamlle`}>
2209
+ // <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2210
+ // {this.state.videoTwoName}
2211
+ // </div>
2212
+ // </div>
2213
+ // <canvas className="canvasClassOne" id={'subscribe_volumeView' + item.videoIndex} width="40" height="70"></canvas>
2214
+ // </div>
2215
+ // })
2216
+
1797
2217
  return (
1798
2218
  <div className="all">
1799
2219
  <Spin spinning={this.state.loading} tip="视频初始化中...">
1800
2220
  <Header></Header>
1801
- <div className="health">
1802
- <div className="projection" style={{ display: (this.state.isCustomer) ? '' : 'none', }}>
1803
- <div className="button">
1804
- <div className={`${this.state.isSelect == 'video' ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this)}>视频画面</div>
1805
- <div className={`${this.state.isSelect == 'noVideo' ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this)}>投屏白板</div>
1806
- </div>
1807
- <div className="videoDiv" style={{ display: (this.state.isSelect == 'noVideo') ? '' : 'none', }}>
1808
- <div style={{ display: (this.state.isPDF) ? '' : 'none', }} id="touBoxItem">
1809
- {pdfChildren}
1810
- </div>
1811
- <div className="videoDiv" style={this.state.isPDF ? { display: 'none' } : {}}>
2221
+ {tabTitleList}
2222
+ <div className="health" style={{'margin-top': (this.state.tabTitles.length > 0) ? '0px' : '20px' }}>
2223
+ <div className="projection">
2224
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMScreen') ? '' : 'none', }}>
2225
+ <div className="videoDiv">
1812
2226
  <video
1813
2227
  id="video10"
1814
2228
  autoPlay
@@ -1817,18 +2231,88 @@ class Video extends Component {
1817
2231
  />
1818
2232
  <audio id="audio10" autoPlay />
1819
2233
  <label style={{ display: 'none' }} id="feedId10" type="text" />
1820
- {/* <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView10" width="70" height="70"></canvas> */}
2234
+ </div>
1821
2235
 
2236
+ </div>
2237
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMWhiteboard') ? '' : 'none', }}>
2238
+ <div id="touBoxItem">
2239
+ {pdfChildren}
2240
+ </div>
2241
+ </div>
2242
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'customerScreen') ? '' : 'none', }}>
2243
+ <div className="videoDiv">
2244
+ <video
2245
+ id="video11"
2246
+ autoPlay
2247
+ muted={true}
2248
+ className="video"
2249
+ />
2250
+ <audio id="audio11" autoPlay />
2251
+ <label style={{ display: 'none' }} id="feedId11" type="text" />
2252
+ {/* <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView10" width="70" height="70"></canvas> */}
1822
2253
  </div>
1823
2254
 
1824
2255
  </div>
2256
+ {
2257
+ this.state.tabTitles.length == 0 &&
2258
+ <div className='themeClass'>
2259
+ <div>
2260
+ <ul>
2261
+ <li>
2262
+ <span>会议主题:</span>
2263
+ <label>{meetingInfo.title}</label>
2264
+ </li>
2265
+ <li>
2266
+ <span>支持人:</span>
2267
+ <label>{meetingInfo.host}</label>
2268
+ </li>
2269
+ <li>
2270
+ <span>参会客户:</span>
2271
+ {customerNameList}
2272
+ </li>
2273
+ </ul>
2274
+ </div>
2275
+ </div>
2276
+ }
2277
+
2278
+
1825
2279
  </div>
1826
- <div className="wrapper">
2280
+ <div className="wrapper" style={{ width: '20%' , }}>
1827
2281
  <div
1828
- className={`itemed ${this.state.isBigVideo == 'video1' ? 'item1' : ""}`}
1829
- // className="itemed item1"
1830
- style={{ position: "relative",'margin-right': '5px', }}
1831
- onClick={this.enlargeClick.bind(this, 'isLangVideo1')}
2282
+ className={`itemed ${this.state.publishDevic == 4 ? '' : 'isBack'} `}
2283
+ >
2284
+ <div className="publishVideoDiv">
2285
+
2286
+ <video
2287
+ id="publish_video1"
2288
+ className={`publishVideoClass`}
2289
+ autoPlay
2290
+ muted={true}
2291
+ webkit-playsinline={true}
2292
+ playsinline={true}
2293
+ />
2294
+ <label style={{ display: 'none' }} id="publish_streamId1" type="text" />
2295
+ {
2296
+ this.state.voiceStatue && <img
2297
+ alt=""
2298
+ src={require("../../assets/img/jingyin.png").default}
2299
+ className="imgClassVoice voiceClass"
2300
+ />
2301
+ }
2302
+ <div id="publish_video_div" className={`tellerTitle titleSamlle`}>
2303
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>坐席</div>
2304
+ </div>
2305
+ <canvas style={{ display: (!this.state.voiceStatue) ? '' : 'none', }} className="canvasClass" id="publish_volumeView" width="40" height="70"></canvas>
2306
+ </div>
2307
+
2308
+ </div>
2309
+ {/* {
2310
+ videoCustomer
2311
+ } */}
2312
+ <div style={{ display: (this.state.isCustomer) ? '' : 'none', }}>
2313
+ <div
2314
+ className={`itemed`}
2315
+ style={{ position: "relative"}}
1832
2316
  >
1833
2317
  {
1834
2318
  this.state.customAudioed && <img
@@ -1846,52 +2330,24 @@ class Video extends Component {
1846
2330
  />
1847
2331
  <audio id="audio1" autoPlay />
1848
2332
  <label style={{ display: 'none' }} id="feedId1" type="text" />
1849
- <div style={{ display: (this.state.isCustomer) ? '' : 'none', background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily }} className={`customerTitle ${this.state.isBigVideo == 'video1' ? 'titleBig' : "titleSamlle"}`}>客户</div>
1850
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView1" width="40" height="70"></canvas>
1851
- </div>
1852
- </div>
1853
- <div
1854
- className={`itemed ${this.state.publishDevic == 4 ? '' : (this.state.isBigVideo == 'publish_video1' ? 'item1 isBack' : (this.state.isCustomer ? 'isBack' : 'itemPublic'))}`}
1855
- onClick={this.enlargeClick.bind(this, 'isLangPublishVideo1')}
1856
- >
1857
- <div className="publishVideoDiv">
1858
2333
  {
1859
- this.state.audioed && <img
2334
+ this.state.voiceVideoOne && <img
1860
2335
  alt=""
1861
- src={require("../../assets/img/yingpin.png").default}
1862
- className="imgClass"
2336
+ src={require("../../assets/img/jingyin.png").default}
2337
+ className="imgClassVoice voiceVideoClass"
1863
2338
  />
1864
2339
  }
1865
- {
1866
- this.state.isSuspend && <img
1867
- alt=""
1868
- src={require("../../assets/img/zanTing.png").default}
1869
- className="imgClass"
1870
- />
1871
- }
1872
- {/* {
1873
- this.state.isSharedScreen && <span
1874
- className="sharedScreen"
1875
- >
1876
- 屏幕共享中
1877
- </span>
1878
- } */}
1879
- <video
1880
- style={{ display: (!this.state.audioed && !this.state.isSuspend) ? '' : 'none', }}
1881
- id="publish_video1"
1882
- className={`publishVideoClass ${this.state.isCustomer ? '' : "videoFit"}`}
1883
- onClick={this.enlargeClick.bind(this, 'isLangVideo2')}
1884
- autoPlay
1885
- muted={true}
1886
- />
1887
- <audio id="audio1" autoPlay />
1888
- <label style={{ display: 'none' }} id="publish_streamId1" type="text" />
1889
- <div style={{ display: (this.state.isCustomer) ? '' : 'none', background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}} className={`tellerTitle ${this.state.isBigVideo == 'publish_video1' ? 'titleBig' : "titleSamlle"}`}>坐席</div>
1890
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="publish_volumeView" width="40" height="70"></canvas>
1891
- </div>
2340
+ <div style={{ display: (this.state.videoOneName) ? '' : 'none'}} className={`customerTitle titleSamlle`}>
2341
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2342
+ {this.state.videoOneName}
2343
+ </div>
1892
2344
 
2345
+
2346
+ </div>
2347
+ <canvas style={{ display: (!this.state.voiceVideoOne) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView1" width="40" height="70"></canvas>
2348
+ </div>
1893
2349
  </div>
1894
- <div className={`itemed ${this.state.isBigVideo == 'video2' ? 'item1' : ""}`} style={{'margin-top': '5px', }} onClick={this.enlargeClick.bind(this, 'isLangVideo2')}>
2350
+ <div className={`itemed`}>
1895
2351
  <video
1896
2352
  id="video2"
1897
2353
  autoPlay
@@ -1900,12 +2356,22 @@ class Video extends Component {
1900
2356
  />
1901
2357
  <audio id="audio2" autoPlay />
1902
2358
  <label style={{ display: 'none' }} id="feedId2" type="text" />
1903
- {/* <div className='customerTitle'>客户</div> */}
1904
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView2" width="40" height="70"></canvas>
2359
+ {
2360
+ this.state.voiceVideoTwo && <img
2361
+ alt=""
2362
+ src={require("../../assets/img/jingyin.png").default}
2363
+ className="imgClassVoice voiceVideoClass"
2364
+ />
2365
+ }
2366
+ <div style={{ display: (this.state.videoTwoName) ? '' : 'none'}} className={`customerTitle titleSamlle`}>
2367
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2368
+ {this.state.videoTwoName}
2369
+ </div>
2370
+ </div>
2371
+ <canvas style={{ display: (!this.state.voiceVideoTwo) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView2" width="40" height="70"></canvas>
1905
2372
  </div>
1906
- <div className={`itemed ${this.state.isBigVideo == 'video3' ? 'item1' : ""}`}
1907
- style={{'margin-top': '5px', }}
1908
- onClick={this.enlargeClick.bind(this, 'isLangVideo3')}>
2373
+ <div className={`itemed`}
2374
+ style={{'margin-top': '5px' }}>
1909
2375
  <video
1910
2376
  id="video3"
1911
2377
  autoPlay
@@ -1914,12 +2380,21 @@ class Video extends Component {
1914
2380
  />
1915
2381
  <audio id="audio3" autoPlay />
1916
2382
  <label style={{ display: 'none' }} id="feedId3" type="text" />
1917
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1918
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView3" width="40" height="70"></canvas>
2383
+ {
2384
+ this.state.voiceVideoThree && <img
2385
+ alt=""
2386
+ src={require("../../assets/img/jingyin.png").default}
2387
+ className="imgClassVoice voiceVideoClass"
2388
+ />
2389
+ }
2390
+ <div style={{ display: (this.state.videoThreeName) ? '' : 'none', background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily }} className={`customerTitle titleSamlle`}>
2391
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2392
+ {this.state.videoThreeName}
2393
+ </div>
2394
+ </div>
2395
+ <canvas style={{ display: (!this.state.voiceVideoThree) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView3" width="40" height="70"></canvas>
1919
2396
  </div>
1920
- <div className={`itemed ${this.state.isBigVideo == 'video4' ? 'item1' : ""}`}
1921
- style={{'margin-right': '5px', }}
1922
- onClick={this.enlargeClick.bind(this, 'isLangVideo4')}>
2397
+ <div className={`itemed`}>
1923
2398
  <video
1924
2399
  id="video4"
1925
2400
  autoPlay
@@ -1928,12 +2403,22 @@ class Video extends Component {
1928
2403
  />
1929
2404
  <audio id="audio4" autoPlay />
1930
2405
  <label style={{ display: 'none' }} id="feedId4" type="text" />
1931
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1932
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView4" width="40" height="70"></canvas>
2406
+ {
2407
+ this.state.voiceVideoFour && <img
2408
+ alt=""
2409
+ src={require("../../assets/img/jingyin.png").default}
2410
+ className="imgClassVoice voiceVideoClass"
2411
+ />
2412
+ }
2413
+ <div style={{ display: (this.state.videoFourName) ? '' : 'none', background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily }} className={`customerTitle titleSamlle`}>
2414
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2415
+ {this.state.videoFourName}
2416
+ </div>
2417
+ </div>
2418
+ <canvas style={{ display: (!this.state.voiceVideoFour) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView4" width="40" height="70"></canvas>
1933
2419
  </div>
1934
- <div className={`itemed ${this.state.isBigVideo == 'video5' ? 'item1' : ""}`}
1935
- style={{'margin-top': '5px', }}
1936
- onClick={this.enlargeClick.bind(this, 'isLangVideo5')}>
2420
+ <div className={`itemed`}
2421
+ style={{'margin-top': '5px' }}>
1937
2422
  <video
1938
2423
  id="video5"
1939
2424
  autoPlay
@@ -1942,10 +2427,21 @@ class Video extends Component {
1942
2427
  />
1943
2428
  <audio id="audio5" autoPlay />
1944
2429
  <label style={{ display: 'none' }} id="feedId5" type="text" />
1945
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1946
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView5" width="40" height="70"></canvas>
2430
+ {
2431
+ this.state.voiceVideoFive && <img
2432
+ alt=""
2433
+ src={require("../../assets/img/jingyin.png").default}
2434
+ className="imgClassVoice voiceVideoClass"
2435
+ />
2436
+ }
2437
+ <div style={{ display: (this.state.videoFiveName) ? '' : 'none', background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily }} className={`customerTitle titleSamlle`}>
2438
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2439
+ {this.state.videoFiveName}
2440
+ </div>
2441
+ </div>
2442
+ <canvas style={{ display: (!this.state.voiceVideoFive) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView5" width="40" height="70"></canvas>
1947
2443
  </div>
1948
- <div onClick={this.enlargeClick.bind(this, 'isLangVideo6')} style={{'margin-top': '5px', }} className={`${this.state.isBigVideo == 'video6' ? 'item1' : "itemed"}`}>
2444
+ <div className={`itemed`}>
1949
2445
  <video
1950
2446
  id="video6"
1951
2447
  autoPlay
@@ -1954,10 +2450,22 @@ class Video extends Component {
1954
2450
  />
1955
2451
  <audio id="audio6" autoPlay />
1956
2452
  <label style={{ display: 'none' }} id="feedId6" type="text" />
1957
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1958
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView6" width="40" height="70"></canvas>
2453
+ {
2454
+ this.state.voiceVideoSix && <img
2455
+ alt=""
2456
+ src={require("../../assets/img/jingyin.png").default}
2457
+ className="imgClassVoice voiceVideoClass"
2458
+ />
2459
+ }
2460
+ <div style={{ display: (this.state.videoSixName) ? '' : 'none', background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily }} className={`customerTitle titleSamlle`}>
2461
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2462
+ {this.state.videoSixName}
2463
+ </div>
2464
+ </div>
2465
+ <canvas style={{ display: (!this.state.voiceVideoSix) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView6" width="40" height="70"></canvas>
1959
2466
 
1960
2467
  </div>
2468
+ </div>
1961
2469
  </div>
1962
2470
  <img id="icon_huatong" style={{display:'none'}} src={require("../../assets/img/icon_huatong.png").default}></img>
1963
2471
  </div>
@@ -1969,6 +2477,7 @@ class Video extends Component {
1969
2477
  customerList={this.state.customerList}
1970
2478
  clickedOcr={this.state.clickedOcr}
1971
2479
  clickedFacial={this.state.clickedFacial}
2480
+ {...this.props}
1972
2481
  suspend={this.suspend}
1973
2482
  facialHandleVisibleChange={this.facialHandleVisibleChange}
1974
2483
  ocrHandleVisibleChange={this.ocrHandleVisibleChange}
@@ -2051,10 +2560,16 @@ Video.defaultProps = {
2051
2560
  resourcePath: 'https://counter-web.leimondata.cn:7199',
2052
2561
  prohibitPrompt: '当前无客户',
2053
2562
  voiceColor: '#0AE544',
2054
- titleBackground: 'rgba(219, 0, 17, 0.1)',
2055
- titleColor: '#DB0011',
2056
- microphoneSize: '50',
2563
+ titleBackground: 'rgba(0,0,0,0.65)',
2564
+ titleColor: '#fff',
2565
+ microphoneSize: '40',
2057
2566
  fontSize: '14',
2058
- fontFamily: 'auto'
2567
+ fontFamily: 'auto',
2568
+ menus: ['SHARE', 'FRIES', 'OCR', 'INVITE', 'PIP'],
2569
+ meetingInfo: {
2570
+ title: '测试',
2571
+ host: 'wmz',
2572
+ customers: ['王三','张思']
2573
+ }
2059
2574
  }
2060
2575
  export default Video