react_hsbc_teller 0.3.6 → 0.4.0

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 = '';
@@ -145,8 +159,8 @@ class Video extends Component {
145
159
  config_param.workspaceId = this.state.workSpaceId;
146
160
  config_param.uid = this.props.tellerAccount;
147
161
  config_param.biz_name = this.state.bizName; // 'demo'
148
- config_param.appId = this.state.appId;
149
-
162
+ config_param.sub_biz = this.state.appId;
163
+ config_param.sign = window.sessionStorage.getItem('alimpassSig')
150
164
  config_param.room_server_url = this.props.roomServerUrl;
151
165
  // 允许最大断网时间 (超过未重连, 直接关闭)
152
166
  config_param.network_check_timeout = 10000;
@@ -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
@@ -796,12 +987,111 @@ class Video extends Component {
796
987
  let newArray = [...array];
797
988
  newArray.push({
798
989
  feedId: feed.feedId,
799
- uid: feed.uid
990
+ uid: feed.uid,
991
+ tag: feed.tag
800
992
  });
801
993
  console.log(array, newArray, this.state.roomCustomerList);
802
994
  this.setState({
803
995
  roomCustomerList: newArray
804
996
  })
997
+ let config_param
998
+ if(feed.uid != this.state.tellerAccount) {
999
+ if(feed.tag == 'VIDEO_SOURCE_SCREEN') {
1000
+ config_param = {
1001
+ subscribe_video_id: 'video11',
1002
+ subscribe_audio_id: 'audio11',
1003
+ subscribe_streamId_id: 'subscribe_streamId11',
1004
+ feedId_id: 'feedId11',
1005
+ feedId: feed.feedId
1006
+ }
1007
+
1008
+ this.tabTitlesClick(
1009
+ {
1010
+ value: 'customerScreen',
1011
+ name: '客户投屏'
1012
+ },'add'
1013
+ )
1014
+ } else {
1015
+ // let data_param = {
1016
+ // isVideo: true,
1017
+ // videoIndex: this.state.videoList.length + 1,
1018
+ // videoTwoName: ''
1019
+ // }
1020
+ // let videoList = []
1021
+ // console.log(data_param)
1022
+ // videoList.push(data_param)
1023
+ // this.setState({
1024
+ // videoList
1025
+ // })
1026
+ // config_param = {
1027
+ // subscribe_video_id: 'video' + this.state.videoList.length,
1028
+ // subscribe_audio_id: 'audio' + this.state.videoList.length,
1029
+ // subscribe_streamId_id: 'subscribe_streamId' + this.state.videoList.length,
1030
+ // feedId_id: 'feedId' + this.state.videoList.length,
1031
+ // feedId: feed.feedId
1032
+ // }
1033
+ if(!document.getElementById('video1').name) {
1034
+ config_param = {
1035
+ subscribe_video_id: 'video1',
1036
+ subscribe_audio_id: 'audio1',
1037
+ subscribe_streamId_id: 'subscribe_streamId1',
1038
+ feedId_id: 'feedId1',
1039
+ feedId: feed.feedId
1040
+ }
1041
+ }
1042
+ else if(!document.getElementById('video2').name) {
1043
+ config_param = {
1044
+ subscribe_video_id: 'video2',
1045
+ subscribe_audio_id: 'audio2',
1046
+ subscribe_streamId_id: 'subscribe_streamId2',
1047
+ feedId_id: 'feedId2',
1048
+ feedId: feed.feedId
1049
+ }
1050
+ }
1051
+ else if(!document.getElementById('video3').name) {
1052
+ config_param = {
1053
+ subscribe_video_id: 'video3',
1054
+ subscribe_audio_id: 'audio3',
1055
+ subscribe_streamId_id: 'subscribe_streamId3',
1056
+ feedId_id: 'feedId3',
1057
+ feedId: feed.feedId
1058
+ }
1059
+ }
1060
+ else if(!document.getElementById('video4').name) {
1061
+ config_param = {
1062
+ subscribe_video_id: 'video4',
1063
+ subscribe_audio_id: 'audio4',
1064
+ subscribe_streamId_id: 'subscribe_streamId4',
1065
+ feedId_id: 'feedId4',
1066
+ feedId: feed.feedId
1067
+ }
1068
+ }
1069
+ else if(!document.getElementById('video5').name) {
1070
+ config_param = {
1071
+ subscribe_video_id: 'video5',
1072
+ subscribe_audio_id: 'audio5',
1073
+ subscribe_streamId_id: 'subscribe_streamId5',
1074
+ feedId_id: 'feedId5',
1075
+ feedId: feed.feedId
1076
+ }
1077
+ }
1078
+ else if(!document.getElementById('video6').name) {
1079
+ config_param = {
1080
+ subscribe_video_id: 'video6',
1081
+ subscribe_audio_id: 'audio6',
1082
+ subscribe_streamId_id: 'subscribe_streamId6',
1083
+ feedId_id: 'feedId6',
1084
+ feedId: feed.feedId
1085
+ }
1086
+ }
1087
+ }
1088
+
1089
+ }
1090
+ if (config_param !== undefined) {
1091
+ config_param.need_volume_analyser = true
1092
+ console.log(config_param)
1093
+ this.test_controller.Subscribe(config_param)
1094
+ }
805
1095
  };
806
1096
  // 推送“有新订阅”给与会者
807
1097
  this.test_controller.OnNewSubscribe = (subscriber, feed) => {
@@ -820,15 +1110,73 @@ class Video extends Component {
820
1110
  'tellerId': this.props.tellerAccount
821
1111
  })
822
1112
  })
1113
+ this.setState({
1114
+ publishDevic: 1,
1115
+ isSharedScreen: false,
1116
+ screenName: '投屏'
1117
+ });
1118
+ this.tabTitlesClick('RMScreen','delect')
1119
+ if(this.state.isPictureInPicture) {
1120
+ document.exitPictureInPicture()
1121
+ }
823
1122
  }
824
1123
  };
825
1124
  // 取消订阅媒体流成功
826
1125
  this.test_controller.OnUnSubscribeSucc = (sid) => {
827
1126
  console.log('取消订阅媒体流成功', sid)
1127
+ this.state.tabTitles.map((item) => {
1128
+ if(item.value == 'customerScreen') {
1129
+ if(!document.getElementById("video11").name) {
1130
+ this.tabTitlesClick('customerScreen','delect')
1131
+ }
1132
+ }
1133
+ })
1134
+ if(!document.getElementById("video1").name) {
1135
+ this.setState({
1136
+ videoOneName: ''
1137
+ })
1138
+ }
1139
+ if(!document.getElementById("video2").name) {
1140
+ this.setState({
1141
+ videoTwoName: ''
1142
+ })
1143
+ }
1144
+ if(!document.getElementById("video3").name) {
1145
+ this.setState({
1146
+ videoThreeName: ''
1147
+ })
1148
+ }
1149
+ if(!document.getElementById("video4").name) {
1150
+ this.setState({
1151
+ videoFourName: ''
1152
+ })
1153
+ }
1154
+ if(!document.getElementById("video5").name) {
1155
+ this.setState({
1156
+ videoFiveName: ''
1157
+ })
1158
+ }
1159
+ if(!document.getElementById("video6").name) {
1160
+ this.setState({
1161
+ videoSixName: ''
1162
+ })
1163
+ }
828
1164
  };
829
1165
  // 推送“取消发布”给与会者
830
1166
  this.test_controller.OnUnPublish = (feed) => {
831
1167
  console.log('取消发布者', feed)
1168
+ for(let i=0;i<this.state.roomCustomerList.length;i++) {
1169
+ if(this.state.roomCustomerList[i].uid == feed.uid) {
1170
+ this.state.roomCustomerList.splice(i, 1)
1171
+ }
1172
+ }
1173
+
1174
+ if(this.state.roomCustomerList.length == 0) {
1175
+ // this.test_controller.ChangeStreamSize(document.getElementById('publish_video1').name, 3)
1176
+ this.setState({
1177
+ isCustomer: false
1178
+ })
1179
+ }
832
1180
  };
833
1181
  // 推送“取消订阅”给与会者 OnUnSubscribe(unsubscriber,feed)
834
1182
  this.test_controller.OnUnSubscribe = (unsubscriber, feed) => {
@@ -1063,15 +1411,7 @@ class Video extends Component {
1063
1411
  canvas.width = this.props.microphoneSize
1064
1412
  canvas.height = this.props.microphoneSize
1065
1413
  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
1414
  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
1415
  let dataArray = new Uint8Array(analyser.frequencyBinCount);
1076
1416
  analyser.getByteFrequencyData(dataArray);
1077
1417
  let step = Math.round(dataArray.length / 60); //采样步长
@@ -1096,69 +1436,14 @@ class Video extends Component {
1096
1436
  let startY = y1 - height // 绘制起始点y
1097
1437
  ctx.fillRect(startX, startY, width, height )
1098
1438
  }
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
1439
  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
1440
  }
1161
-
1441
+ // 停止共享
1442
+ this.test_controller.OnDesktopDisplayClosed = () => {
1443
+ if (this.state.isSharedScreen) {
1444
+ this.sharedScreen()
1445
+ }
1446
+ }
1162
1447
  }
1163
1448
  contrastFaceVerify = async data => {
1164
1449
  console.log(data);
@@ -1233,6 +1518,9 @@ class Video extends Component {
1233
1518
  })
1234
1519
  const _dependScripts = [
1235
1520
  // https://counter-web.leimondata.cn:7199
1521
+ this.props.resourcePath + "/beauty/beauty.js",
1522
+ this.props.resourcePath + "/beauty/meeting_beautify_stream.js",
1523
+ this.props.resourcePath + "/beauty/backgroundBlur.js",
1236
1524
  this.props.resourcePath + "/adapter.js",
1237
1525
  this.props.resourcePath + "/getMediaInfo.js",
1238
1526
  this.props.resourcePath + "/pdf.js",
@@ -1300,12 +1588,6 @@ class Video extends Component {
1300
1588
  sessionId: this.props.sessionId
1301
1589
  })
1302
1590
  } else {
1303
- setTimeout(() => {
1304
- this.setState({
1305
- screenName: this.props.intl.formatMessage({ id: 'shareScreen' }),
1306
- suspendName: this.props.intl.formatMessage({ id: 'suspend' }),
1307
- })
1308
- }, 50);
1309
1591
  this.addToScript()
1310
1592
  }
1311
1593
  }
@@ -1333,6 +1615,7 @@ class Video extends Component {
1333
1615
  }, function (code, message, data) {
1334
1616
  console.log(data)
1335
1617
  })
1618
+
1336
1619
  } else if (this.state.voiceStatue) {
1337
1620
  // 打开本地
1338
1621
  this.setState({
@@ -1358,7 +1641,7 @@ class Video extends Component {
1358
1641
  }
1359
1642
  };
1360
1643
  isFileSuccuse = () => {
1361
- if (!this.state.sessionId || this.state.isSuspend || !this.state.isCustomer) {
1644
+ if (!this.state.sessionId || this.state.isSuspend) {
1362
1645
  message.success(this.props.prohibitPrompt)
1363
1646
  return false
1364
1647
  } else {
@@ -1427,22 +1710,17 @@ class Video extends Component {
1427
1710
  this.test_controller.ChangeMediaStream(publish_config);
1428
1711
  this.setState({
1429
1712
  isPDF: true,
1430
- isSelect: 'noVideo',
1431
1713
  })
1432
1714
  } else {
1433
1715
  this.test_controller.UnPublish(document.getElementById('video10').name)
1434
- this.setState({
1435
- isPDF: false,
1436
- isSelect: 'video',
1437
- })
1438
1716
  }
1439
1717
  this.setState({
1440
1718
  publishDevic: 1,
1441
1719
  isSharedScreen: false,
1442
-
1443
1720
  screenName: '投屏'
1444
1721
  });
1445
1722
  console.log(pictureInPictureVideo)
1723
+ this.tabTitlesClick('RMScreen','delect')
1446
1724
  if(this.state.isPictureInPicture) {
1447
1725
  document.exitPictureInPicture()
1448
1726
  }
@@ -1463,20 +1741,18 @@ class Video extends Component {
1463
1741
  publish_config.publish_tag = 'projectionWhiteboard'
1464
1742
  this.test_controller.Publish(publish_config)
1465
1743
  }
1466
-
1467
-
1468
- // publish_config.media_type = 1;
1469
- // publish_config.publish_device = 2;
1470
- // publish_config.video_profile_type = 5;
1471
- // publish_config.sid = document.getElementById('publish_video1').name;
1472
- // this.test_controller.ChangeMediaStream(publish_config);
1473
1744
  this.setState({
1474
1745
  publishDevic: 2,
1475
- isSelect: 'noVideo',
1476
1746
  isSharedScreen: true,
1477
1747
  screenName: '取消共享',
1478
1748
  isPDF: false
1479
1749
  })
1750
+ this.tabTitlesClick(
1751
+ {
1752
+ value: 'RMScreen',
1753
+ name: '坐席投屏'
1754
+ },'add'
1755
+ )
1480
1756
  if(!this.state.isPictureInPicture) {
1481
1757
  this.pictureInPicture()
1482
1758
  }
@@ -1676,6 +1952,86 @@ class Video extends Component {
1676
1952
  imRoomId: props.imRoomId
1677
1953
  });
1678
1954
  }
1955
+ appGetUsername = async (sid) => {
1956
+ console.log(sid)
1957
+ let userId = ''
1958
+ let index
1959
+ // this.state.videoList.map((item,index)=>{
1960
+ // let name = 'video' + item.videoIndex
1961
+ // if(document.getElementById(name).name == sid){
1962
+ // userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById(("feedId" + item.videoIndex)).innerText).uid
1963
+ // index = index
1964
+ // }
1965
+ // })
1966
+ // try {
1967
+ // let result = await API.appGetUsername({
1968
+ // userId: userId
1969
+ // });
1970
+ // console.log(result)
1971
+ // if (result.code == 200) {
1972
+ // let data = result.data.userInfo ? result.data.userInfo.userName ? result.data.userInfo.userName : '' : ''
1973
+ // 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
1974
+ // } else {
1975
+ // message.success('查询失败')
1976
+ // }
1977
+ // } catch (err) {
1978
+
1979
+ // }
1980
+ if(document.getElementById('video1').name == sid){
1981
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).uid
1982
+ }
1983
+ if(document.getElementById('video2').name == sid){
1984
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).uid
1985
+ }if(document.getElementById('video3').name == sid){
1986
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).uid
1987
+ }if(document.getElementById('video4').name == sid){
1988
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).uid
1989
+ }if(document.getElementById('video5').name == sid){
1990
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).uid
1991
+ }if(document.getElementById('video6').name == sid){
1992
+ userId = this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).uid
1993
+ }
1994
+ try {
1995
+ let result = await API.appGetUsername({
1996
+ userId: userId
1997
+ });
1998
+ console.log(result)
1999
+ if (result.code == 200) {
2000
+ let data = result.data.userInfo ? result.data.userInfo.userName ? result.data.userInfo.userName : '' : ''
2001
+ if(document.getElementById('video1').name == sid){
2002
+
2003
+ this.setState({
2004
+ videoOneName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId1").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' : data ? data : '客户1'
2005
+ })
2006
+ }
2007
+ if(document.getElementById('video2').name == sid){
2008
+ this.setState({
2009
+ videoTwoName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId2").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data? data : '客户2'
2010
+ })
2011
+ }if(document.getElementById('video3').name == sid){
2012
+ this.setState({
2013
+ videoThreeName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId3").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data ? data : '客户3'
2014
+ })
2015
+ }if(document.getElementById('video4').name == sid){
2016
+ this.setState({
2017
+ videoFourName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId4").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data ? data : '客户4'
2018
+ })
2019
+ }if(document.getElementById('video5').name == sid){
2020
+ this.setState({
2021
+ videoFiveName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId5").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data? data : '客户5'
2022
+ })
2023
+ }if(document.getElementById('video6').name == sid){
2024
+ this.setState({
2025
+ videoSixName: this.seeList(this.state.roomCustomerList, 'feedId', document.getElementById("feedId6").innerText).tag == 'VIDEO_SOURCE_SCREEN' ? '共享屏幕' :data ? data: '客户6'
2026
+ })
2027
+ }
2028
+ } else {
2029
+ message.success('查询失败')
2030
+ }
2031
+ } catch (err) {
2032
+
2033
+ }
2034
+ }
1679
2035
  queryStaff = async () => {
1680
2036
  try {
1681
2037
  let result = await API.getUsername({
@@ -1721,10 +2077,12 @@ class Video extends Component {
1721
2077
  if(!this.state.isWhiteboard) {
1722
2078
  const publish_config = {};
1723
2079
  this.setState({
1724
- isPDF: true,
1725
2080
  isWhiteboard: true,
1726
- isSelect: 'noVideo',
1727
2081
  })
2082
+ this.tabTitlesClick({
2083
+ value: 'RMWhiteboard',
2084
+ name: 'RM白板'
2085
+ },'add')
1728
2086
  if (document.getElementById('video10').name) {
1729
2087
  // 代表已经有了进行切流
1730
2088
  publish_config.publish_device = 4
@@ -1751,21 +2109,24 @@ class Video extends Component {
1751
2109
 
1752
2110
 
1753
2111
  }
1754
- switchSelect = () => {
1755
- if (this.state.isSelect == 'video') {
1756
- if (document.getElementById('video10').name) {
1757
- this.setState({
1758
- isSelect: 'noVideo',
2112
+ switchSelect = (value) => {
2113
+ this.setState({
2114
+ isSelect: value,
1759
2115
  })
1760
- } else {
1761
- message.success('当前无签字白板')
1762
- }
2116
+ // if (this.state.isSelect == 'video') {
2117
+ // if (document.getElementById('video10').name) {
2118
+ // this.setState({
2119
+ // isSelect: 'noVideo',
2120
+ // })
2121
+ // } else {
2122
+ // message.success('当前无签字白板')
2123
+ // }
1763
2124
 
1764
- } else {
1765
- this.setState({
1766
- isSelect: 'video',
1767
- })
1768
- }
2125
+ // } else {
2126
+ // this.setState({
2127
+ // isSelect: 'video',
2128
+ // })
2129
+ // }
1769
2130
  }
1770
2131
  facialHandleVisibleChange=(value)=>{
1771
2132
  if(!value) {
@@ -1782,25 +2143,66 @@ class Video extends Component {
1782
2143
  }
1783
2144
  }
1784
2145
  render() {
2146
+ const {meetingInfo} = this.props
1785
2147
  var pdfChildren
1786
2148
  if (this.props.children) {
1787
2149
  pdfChildren = React.cloneElement(this.props.children, { width: 100, height: 100, id: 12 })
1788
2150
  }
2151
+ const customerNameList = (
2152
+ <span>
2153
+ {
2154
+ meetingInfo.customers.map((item,index)=>{
2155
+ return <label>
2156
+ {item}
2157
+ {
2158
+ meetingInfo.customers.length > 0 && index != meetingInfo.customers.length-1 &&<span>,</span>
2159
+ }
2160
+
2161
+ </label>
2162
+ })
2163
+ }
2164
+ </span>
2165
+ )
2166
+ const tabTitleList = (
2167
+ <div className="button">
2168
+ {
2169
+ this.state.tabTitles.map((item)=>{
2170
+ return <div className={`${this.state.isSelect == item.value ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this,item.value)}>
2171
+ {item.name}
2172
+ </div>
2173
+ })
2174
+ }
2175
+ </div>
2176
+ )
2177
+ // const videoCustomer =
2178
+ // this.state.videoList.map((item,index)=>{
2179
+ // return <div className={`itemed`} style={{ display: (item.isVideo) ? '' : 'none', }}>
2180
+ // <video
2181
+ // id={'video' + item.videoIndex}
2182
+ // autoPlay
2183
+ // muted={true}
2184
+ // className="video"
2185
+ // />
2186
+ // <audio id={'audio' + item.videoIndex} autoPlay />
2187
+ // <label style={{ display: 'none' }} id={'feedId' + item.videoIndex} type="text" />
2188
+ // <div className={`customerTitle titleSamlle`}>
2189
+ // <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2190
+ // {this.state.videoTwoName}
2191
+ // </div>
2192
+ // </div>
2193
+ // <canvas className="canvasClassOne" id={'subscribe_volumeView' + item.videoIndex} width="40" height="70"></canvas>
2194
+ // </div>
2195
+ // })
2196
+
1789
2197
  return (
1790
2198
  <div className="all">
1791
2199
  <Spin spinning={this.state.loading} tip="视频初始化中...">
1792
2200
  <Header></Header>
1793
- <div className="health">
1794
- <div className="projection" style={{ display: (this.state.isCustomer) ? '' : 'none', }}>
1795
- <div className="button">
1796
- <div className={`${this.state.isSelect == 'video' ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this)}>视频画面</div>
1797
- <div className={`${this.state.isSelect == 'noVideo' ? 'selectSee' : "noSelest"}`} onClick={this.switchSelect.bind(this)}>投屏白板</div>
1798
- </div>
1799
- <div className="videoDiv" style={{ display: (this.state.isSelect == 'noVideo') ? '' : 'none', }}>
1800
- <div style={{ display: (this.state.isPDF) ? '' : 'none', }} id="touBoxItem">
1801
- {pdfChildren}
1802
- </div>
1803
- <div className="videoDiv" style={this.state.isPDF ? { display: 'none' } : {}}>
2201
+ {tabTitleList}
2202
+ <div className="health" style={{'margin-top': (this.state.tabTitles.length > 0) ? '0px' : '20px' }}>
2203
+ <div className="projection">
2204
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMScreen') ? '' : 'none', }}>
2205
+ <div className="videoDiv">
1804
2206
  <video
1805
2207
  id="video10"
1806
2208
  autoPlay
@@ -1809,18 +2211,88 @@ class Video extends Component {
1809
2211
  />
1810
2212
  <audio id="audio10" autoPlay />
1811
2213
  <label style={{ display: 'none' }} id="feedId10" type="text" />
1812
- {/* <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView10" width="70" height="70"></canvas> */}
2214
+ </div>
1813
2215
 
2216
+ </div>
2217
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMWhiteboard') ? '' : 'none', }}>
2218
+ <div id="touBoxItem">
2219
+ {pdfChildren}
2220
+ </div>
2221
+ </div>
2222
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'customerScreen') ? '' : 'none', }}>
2223
+ <div className="videoDiv">
2224
+ <video
2225
+ id="video11"
2226
+ autoPlay
2227
+ muted={true}
2228
+ className="video"
2229
+ />
2230
+ <audio id="audio11" autoPlay />
2231
+ <label style={{ display: 'none' }} id="feedId11" type="text" />
2232
+ {/* <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="subscribe_volumeView10" width="70" height="70"></canvas> */}
1814
2233
  </div>
1815
2234
 
1816
2235
  </div>
2236
+ {
2237
+ this.state.tabTitles.length == 0 &&
2238
+ <div className='themeClass'>
2239
+ <div>
2240
+ <ul>
2241
+ <li>
2242
+ <span>会议主题:</span>
2243
+ <label>{meetingInfo.title}</label>
2244
+ </li>
2245
+ <li>
2246
+ <span>支持人:</span>
2247
+ <label>{meetingInfo.host}</label>
2248
+ </li>
2249
+ <li>
2250
+ <span>参会客户:</span>
2251
+ {customerNameList}
2252
+ </li>
2253
+ </ul>
2254
+ </div>
2255
+ </div>
2256
+ }
2257
+
2258
+
1817
2259
  </div>
1818
- <div className="wrapper">
2260
+ <div className="wrapper" style={{ width: '20%' , }}>
1819
2261
  <div
1820
- className={`itemed ${this.state.isBigVideo == 'video1' ? 'item1' : ""}`}
1821
- // className="itemed item1"
1822
- style={{ position: "relative",'margin-right': '5px', }}
1823
- onClick={this.enlargeClick.bind(this, 'isLangVideo1')}
2262
+ className={`itemed ${this.state.publishDevic == 4 ? '' : 'isBack'} `}
2263
+ >
2264
+ <div className="publishVideoDiv">
2265
+
2266
+ <video
2267
+ id="publish_video1"
2268
+ className={`publishVideoClass`}
2269
+ autoPlay
2270
+ muted={true}
2271
+ webkit-playsinline={true}
2272
+ playsinline={true}
2273
+ />
2274
+ <label style={{ display: 'none' }} id="publish_streamId1" type="text" />
2275
+ {
2276
+ this.state.voiceStatue && <img
2277
+ alt=""
2278
+ src={require("../../assets/img/jingyin.png").default}
2279
+ className="imgClassVoice voiceClass"
2280
+ />
2281
+ }
2282
+ <div id="publish_video_div" className={`tellerTitle titleSamlle`}>
2283
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>坐席</div>
2284
+ </div>
2285
+ <canvas style={{ display: (!this.state.voiceStatue) ? '' : 'none', }} className="canvasClass" id="publish_volumeView" width="40" height="70"></canvas>
2286
+ </div>
2287
+
2288
+ </div>
2289
+ {/* {
2290
+ videoCustomer
2291
+ } */}
2292
+ <div style={{ display: (this.state.isCustomer) ? '' : 'none', }}>
2293
+ <div
2294
+ className={`itemed`}
2295
+ style={{ position: "relative"}}
1824
2296
  >
1825
2297
  {
1826
2298
  this.state.customAudioed && <img
@@ -1838,52 +2310,24 @@ class Video extends Component {
1838
2310
  />
1839
2311
  <audio id="audio1" autoPlay />
1840
2312
  <label style={{ display: 'none' }} id="feedId1" type="text" />
1841
- <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'>客户</div>
1842
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView1" width="40" height="70"></canvas>
1843
- </div>
1844
- </div>
1845
- <div
1846
- className={`itemed ${this.state.publishDevic == 4 ? '' : (this.state.isBigVideo == 'publish_video1' ? 'item1 isBack' : (this.state.isCustomer ? 'isBack' : 'itemPublic'))}`}
1847
- onClick={this.enlargeClick.bind(this, 'isLangPublishVideo1')}
1848
- >
1849
- <div className="publishVideoDiv">
1850
- {
1851
- this.state.audioed && <img
1852
- alt=""
1853
- src={require("../../assets/img/yingpin.png").default}
1854
- className="imgClass"
1855
- />
1856
- }
1857
2313
  {
1858
- this.state.isSuspend && <img
2314
+ this.state.voiceVideoOne && <img
1859
2315
  alt=""
1860
- src={require("../../assets/img/zanTing.png").default}
1861
- className="imgClass"
2316
+ src={require("../../assets/img/jingyin.png").default}
2317
+ className="imgClassVoice voiceVideoClass"
1862
2318
  />
1863
2319
  }
1864
- {/* {
1865
- this.state.isSharedScreen && <span
1866
- className="sharedScreen"
1867
- >
1868
- 屏幕共享中
1869
- </span>
1870
- } */}
1871
- <video
1872
- style={{ display: (!this.state.audioed && !this.state.isSuspend) ? '' : 'none', }}
1873
- id="publish_video1"
1874
- className={`publishVideoClass ${this.state.isCustomer ? '' : "videoFit"}`}
1875
- onClick={this.enlargeClick.bind(this, 'isLangVideo2')}
1876
- autoPlay
1877
- muted={true}
1878
- />
1879
- <audio id="audio1" autoPlay />
1880
- <label style={{ display: 'none' }} id="publish_streamId1" type="text" />
1881
- <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'>坐席</div>
1882
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClass" id="publish_volumeView" width="40" height="70"></canvas>
1883
- </div>
2320
+ <div style={{ display: (this.state.videoOneName) ? '' : 'none'}} className={`customerTitle titleSamlle`}>
2321
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2322
+ {this.state.videoOneName}
2323
+ </div>
1884
2324
 
2325
+
2326
+ </div>
2327
+ <canvas style={{ display: (!this.state.voiceVideoOne) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView1" width="40" height="70"></canvas>
2328
+ </div>
1885
2329
  </div>
1886
- <div className={`itemed ${this.state.isBigVideo == 'video2' ? 'item1' : ""}`} style={{'margin-top': '5px', }} onClick={this.enlargeClick.bind(this, 'isLangVideo2')}>
2330
+ <div className={`itemed`}>
1887
2331
  <video
1888
2332
  id="video2"
1889
2333
  autoPlay
@@ -1892,12 +2336,22 @@ class Video extends Component {
1892
2336
  />
1893
2337
  <audio id="audio2" autoPlay />
1894
2338
  <label style={{ display: 'none' }} id="feedId2" type="text" />
1895
- {/* <div className='customerTitle'>客户</div> */}
1896
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView2" width="40" height="70"></canvas>
2339
+ {
2340
+ this.state.voiceVideoTwo && <img
2341
+ alt=""
2342
+ src={require("../../assets/img/jingyin.png").default}
2343
+ className="imgClassVoice voiceVideoClass"
2344
+ />
2345
+ }
2346
+ <div style={{ display: (this.state.videoTwoName) ? '' : 'none'}} className={`customerTitle titleSamlle`}>
2347
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2348
+ {this.state.videoTwoName}
2349
+ </div>
2350
+ </div>
2351
+ <canvas style={{ display: (!this.state.voiceVideoTwo) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView2" width="40" height="70"></canvas>
1897
2352
  </div>
1898
- <div className={`itemed ${this.state.isBigVideo == 'video3' ? 'item1' : ""}`}
1899
- style={{'margin-top': '5px', }}
1900
- onClick={this.enlargeClick.bind(this, 'isLangVideo3')}>
2353
+ <div className={`itemed`}
2354
+ style={{'margin-top': '5px' }}>
1901
2355
  <video
1902
2356
  id="video3"
1903
2357
  autoPlay
@@ -1906,12 +2360,21 @@ class Video extends Component {
1906
2360
  />
1907
2361
  <audio id="audio3" autoPlay />
1908
2362
  <label style={{ display: 'none' }} id="feedId3" type="text" />
1909
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1910
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView3" width="40" height="70"></canvas>
2363
+ {
2364
+ this.state.voiceVideoThree && <img
2365
+ alt=""
2366
+ src={require("../../assets/img/jingyin.png").default}
2367
+ className="imgClassVoice voiceVideoClass"
2368
+ />
2369
+ }
2370
+ <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`}>
2371
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2372
+ {this.state.videoThreeName}
2373
+ </div>
2374
+ </div>
2375
+ <canvas style={{ display: (!this.state.voiceVideoThree) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView3" width="40" height="70"></canvas>
1911
2376
  </div>
1912
- <div className={`itemed ${this.state.isBigVideo == 'video4' ? 'item1' : ""}`}
1913
- style={{'margin-right': '5px', }}
1914
- onClick={this.enlargeClick.bind(this, 'isLangVideo4')}>
2377
+ <div className={`itemed`}>
1915
2378
  <video
1916
2379
  id="video4"
1917
2380
  autoPlay
@@ -1920,12 +2383,22 @@ class Video extends Component {
1920
2383
  />
1921
2384
  <audio id="audio4" autoPlay />
1922
2385
  <label style={{ display: 'none' }} id="feedId4" type="text" />
1923
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1924
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView4" width="40" height="70"></canvas>
2386
+ {
2387
+ this.state.voiceVideoFour && <img
2388
+ alt=""
2389
+ src={require("../../assets/img/jingyin.png").default}
2390
+ className="imgClassVoice voiceVideoClass"
2391
+ />
2392
+ }
2393
+ <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`}>
2394
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2395
+ {this.state.videoFourName}
2396
+ </div>
2397
+ </div>
2398
+ <canvas style={{ display: (!this.state.voiceVideoFour) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView4" width="40" height="70"></canvas>
1925
2399
  </div>
1926
- <div className={`itemed ${this.state.isBigVideo == 'video5' ? 'item1' : ""}`}
1927
- style={{'margin-top': '5px', }}
1928
- onClick={this.enlargeClick.bind(this, 'isLangVideo5')}>
2400
+ <div className={`itemed`}
2401
+ style={{'margin-top': '5px' }}>
1929
2402
  <video
1930
2403
  id="video5"
1931
2404
  autoPlay
@@ -1934,10 +2407,21 @@ class Video extends Component {
1934
2407
  />
1935
2408
  <audio id="audio5" autoPlay />
1936
2409
  <label style={{ display: 'none' }} id="feedId5" type="text" />
1937
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1938
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView5" width="40" height="70"></canvas>
2410
+ {
2411
+ this.state.voiceVideoFive && <img
2412
+ alt=""
2413
+ src={require("../../assets/img/jingyin.png").default}
2414
+ className="imgClassVoice voiceVideoClass"
2415
+ />
2416
+ }
2417
+ <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`}>
2418
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2419
+ {this.state.videoFiveName}
2420
+ </div>
2421
+ </div>
2422
+ <canvas style={{ display: (!this.state.voiceVideoFive) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView5" width="40" height="70"></canvas>
1939
2423
  </div>
1940
- <div onClick={this.enlargeClick.bind(this, 'isLangVideo6')} style={{'margin-top': '5px', }} className={`${this.state.isBigVideo == 'video6' ? 'item1' : "itemed"}`}>
2424
+ <div className={`itemed`}>
1941
2425
  <video
1942
2426
  id="video6"
1943
2427
  autoPlay
@@ -1946,10 +2430,22 @@ class Video extends Component {
1946
2430
  />
1947
2431
  <audio id="audio6" autoPlay />
1948
2432
  <label style={{ display: 'none' }} id="feedId6" type="text" />
1949
- {/* <div style={{ display: (this.state.isCustomer) ? '' : 'none', }} className='customerTitle'>客户</div> */}
1950
- <canvas style={{ display: (this.state.isCustomer) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView6" width="40" height="70"></canvas>
2433
+ {
2434
+ this.state.voiceVideoSix && <img
2435
+ alt=""
2436
+ src={require("../../assets/img/jingyin.png").default}
2437
+ className="imgClassVoice voiceVideoClass"
2438
+ />
2439
+ }
2440
+ <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`}>
2441
+ <div className='titleName' style={{ background: this.props.titleBackground,color: this.props.titleColor,'font-size': this.props.fontSize + 'px','font-family' : this.props.fontFamily}}>
2442
+ {this.state.videoSixName}
2443
+ </div>
2444
+ </div>
2445
+ <canvas style={{ display: (!this.state.voiceVideoSix) ? '' : 'none', }} className="canvasClassOne" id="subscribe_volumeView6" width="40" height="70"></canvas>
1951
2446
 
1952
2447
  </div>
2448
+ </div>
1953
2449
  </div>
1954
2450
  <img id="icon_huatong" style={{display:'none'}} src={require("../../assets/img/icon_huatong.png").default}></img>
1955
2451
  </div>
@@ -1961,6 +2457,7 @@ class Video extends Component {
1961
2457
  customerList={this.state.customerList}
1962
2458
  clickedOcr={this.state.clickedOcr}
1963
2459
  clickedFacial={this.state.clickedFacial}
2460
+ {...this.props}
1964
2461
  suspend={this.suspend}
1965
2462
  facialHandleVisibleChange={this.facialHandleVisibleChange}
1966
2463
  ocrHandleVisibleChange={this.ocrHandleVisibleChange}
@@ -2043,10 +2540,16 @@ Video.defaultProps = {
2043
2540
  resourcePath: 'https://counter-web.leimondata.cn:7199',
2044
2541
  prohibitPrompt: '当前无客户',
2045
2542
  voiceColor: '#0AE544',
2046
- titleBackground: 'rgba(219, 0, 17, 0.1)',
2047
- titleColor: '#DB0011',
2543
+ titleBackground: 'rgba(0,0,0,0.65)',
2544
+ titleColor: '#fff',
2048
2545
  microphoneSize: '50',
2049
2546
  fontSize: '14',
2050
- fontFamily: 'auto'
2547
+ fontFamily: 'auto',
2548
+ menus: ['SHARE', 'FRIES', 'OCR', 'INVITE', 'PIP'],
2549
+ meetingInfo: {
2550
+ title: '测试',
2551
+ host: 'wmz',
2552
+ customers: ['王三','张思']
2553
+ }
2051
2554
  }
2052
2555
  export default Video