react_hsbc_teller 1.0.7 → 1.1.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.
@@ -27,7 +27,9 @@ const LEAVE_TYPE = {
27
27
  TELLER_EXIT: 1, // 坐席退出
28
28
  ROOM_DESTROYED: -1, // 房间异常
29
29
  }
30
- let pictureInPictureVideo = ''
30
+ let pictureInPictureVideo
31
+ let mix_stream
32
+ let worker
31
33
  message.config({
32
34
  getContainer: ()=>document.getElementById('allHSBC')
33
35
  })
@@ -41,6 +43,7 @@ class Video extends Component {
41
43
  cancel = axios.CancelToken.source()
42
44
  signCanvas = React.createRef();
43
45
  state = {
46
+ listVideoPicture: [],
44
47
  isScreenSwitching: false,
45
48
  whiteboardWidth: '',
46
49
  whiteboardHeight: '',
@@ -63,7 +66,7 @@ class Video extends Component {
63
66
  isModalVisibleFacial: false,
64
67
  isModalVisibleEnd: false,
65
68
  isModalVisible: false,
66
- screenName: '投屏',
69
+ screenName: '共享模式',
67
70
  suspendName: '暂停',
68
71
  cameraImg: cameraImgOpen,
69
72
  voiceStatue: false,
@@ -592,16 +595,16 @@ class Video extends Component {
592
595
  if(!val) {
593
596
  document.exitPictureInPicture()
594
597
  } else {
595
- this.pictureInPictureClick()
598
+ this.pictureInPictureClick('update')
596
599
  }
597
600
  } else {
598
601
  if(!val) {
599
- this.pictureInPictureClick()
602
+ this.pictureInPictureClick('add')
600
603
  }
601
604
  }
602
605
  }
603
606
  };
604
- pictureInPictureClick=()=>{
607
+ pictureInPictureClick=(val)=>{
605
608
  let interval
606
609
  const list = []
607
610
  if (document.getElementById('video1').name) {
@@ -710,18 +713,42 @@ class Video extends Component {
710
713
  })
711
714
  }
712
715
  console.log(list)
713
- const width = 640;
714
- const height = 360 * list.length;
716
+ this.state.listVideoPicture = list
717
+ // const width = 640;
718
+ // const height = 360 * this.state.listVideoPicture.length;
719
+ if(val == 'add') {
720
+ pictureInPictureVideo.srcObject = mix_stream;
721
+ let flag1 = true;
722
+ worker.postMessage(flag1);
723
+ }
724
+ }
725
+ workerClick=()=>{
715
726
  const canvas = document.createElement('canvas');
716
727
  const cobj = canvas.getContext('2d'); // 获取绘图环境
717
- canvas.width = width;
718
- canvas.height = height;
728
+ let blob = new Blob([
729
+ `
730
+ let timer;
731
+ onmessage = ({data:flag})=>{
732
+ if(!flag){
733
+ clearInterval(timer);
734
+ }else{
735
+ timer = setInterval(function() { postMessage(''); }, 100);
736
+ }
737
+ }
738
+ `,
739
+ ]);
740
+ let url = window.URL.createObjectURL(blob);
741
+ worker = new Worker(url);
742
+ window.URL.revokeObjectURL(blob);
743
+
719
744
 
720
- interval = setInterval(() => {
721
- cobj.clearRect(0, 0, width, height);
722
- for (let i = 0; i < list.length; i++) {
745
+ worker.onmessage =() => {
746
+ cobj.clearRect(0, 0, 640, 360 * this.state.listVideoPicture.length);
747
+ canvas.width = 640;
748
+ canvas.height = 360 * this.state.listVideoPicture.length;
749
+ for (let i = 0; i < this.state.listVideoPicture.length; i++) {
723
750
 
724
- let videoId = list[i].name;
751
+ let videoId = this.state.listVideoPicture[i].name;
725
752
  let videoDiv = document.getElementById(videoId);
726
753
  let videoWidth = videoDiv.videoWidth;
727
754
  let videoHeight = videoDiv.videoHeight;
@@ -732,7 +759,7 @@ class Video extends Component {
732
759
  } else {
733
760
  newVideoHeight = videoHeight * 640 / videoWidth;
734
761
  }
735
- if(list[i].noVideo){
762
+ if(this.state.listVideoPicture[i].noVideo){
736
763
  cobj.fillStyle = '#333';
737
764
  cobj.fillRect((640 - newVideoWidth) / 2, 360 * i, newVideoWidth, newVideoHeight)
738
765
  } else {
@@ -746,11 +773,11 @@ class Video extends Component {
746
773
  cobj.fill();
747
774
  cobj.stroke();
748
775
  cobj.beginPath();
749
- cobj.font = "28px auto";
776
+ cobj.font = "28px serif";
750
777
  cobj.textAlign = 'left';
751
778
  cobj.lineWidth = 1;
752
779
  // 文字
753
- let str = list[i].title
780
+ let str = this.state.listVideoPicture[i].title
754
781
  for (let k = 0; k < str.length; k++){
755
782
  // console.log(str.substring(0,k+1))
756
783
  // console.log(cobj.measureText(str.substring(0,k+1)).width)
@@ -765,7 +792,7 @@ class Video extends Component {
765
792
  //左边框
766
793
  cobj.beginPath();
767
794
  cobj.moveTo(0, 0);
768
- cobj.lineTo(0, 360 * list.length);
795
+ cobj.lineTo(0, 360 * this.state.listVideoPicture.length);
769
796
  cobj.closePath(); //闭合路径
770
797
  cobj.lineWidth = 5; //线的边框为10像素
771
798
  cobj.strokeStyle = '#d9363e';
@@ -782,7 +809,7 @@ class Video extends Component {
782
809
 
783
810
  //右边框
784
811
  cobj.beginPath();
785
- cobj.moveTo(640, 360 * list.length);
812
+ cobj.moveTo(640, 360 * this.state.listVideoPicture.length);
786
813
  cobj.lineTo(640, 0);
787
814
  cobj.closePath(); //闭合路径
788
815
  cobj.lineWidth = 5; //线的边框为10像素
@@ -792,8 +819,8 @@ class Video extends Component {
792
819
 
793
820
  //上边框
794
821
  cobj.beginPath();
795
- cobj.moveTo(0, 360 * list.length);
796
- cobj.lineTo(640, 360 * list.length);
822
+ cobj.moveTo(0, 360 * this.state.listVideoPicture.length);
823
+ cobj.lineTo(640, 360 * this.state.listVideoPicture.length);
797
824
  cobj.closePath(); //闭合路径
798
825
  cobj.lineWidth = 5; //线的边框为10像素
799
826
  cobj.strokeStyle = '#d9363e';
@@ -803,26 +830,15 @@ class Video extends Component {
803
830
  let microphoneSize = 50
804
831
  var img = document.getElementById("icon_huatong");
805
832
  var img1 = document.getElementById("icon_huatong_close");
806
- if(this.state[list[i].voice]) {
833
+ if(this.state[this.state.listVideoPicture[i].voice]) {
807
834
  cobj.drawImage(img1, 10, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
808
835
  } else {
809
836
  cobj.drawImage(img, 10, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
810
837
 
811
838
  // 绘制实时音量
812
- let sid = document.getElementById(list[i].name).name
839
+ let sid = document.getElementById(this.state.listVideoPicture[i].name).name
813
840
  let analyser = this.state.analyserData.get(sid)
814
841
  aou(analyser)
815
- // let sid = document.getElementById(list[i].name).name
816
- // let stream = this.test_controller.GetMediaInfo(sid).audio_
817
- // let acc = new AudioContext()
818
- // let mic = acc.createMediaStreamSource(stream)
819
- // let analyser = acc.createAnalyser()
820
- // analyser.fftSize = 256
821
- // mic.connect(analyser)
822
- // aou(analyser)
823
- // let microphoneSize = 50
824
- // var img = document.getElementById("icon_huatong");
825
- // cobj.drawImage(img, 600, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
826
842
  function aou(analyser){
827
843
  if(analyser) {
828
844
  let dataArray = new Uint8Array(analyser.frequencyBinCount);
@@ -856,11 +872,12 @@ class Video extends Component {
856
872
  }
857
873
 
858
874
  }
859
- }, 100);
875
+ };
876
+
860
877
  const captureStream = canvas.captureStream();
861
- const mix_stream = new MediaStream(captureStream);
878
+ mix_stream = new MediaStream(captureStream);
862
879
  pictureInPictureVideo = document.getElementById('mixedvideo');
863
- pictureInPictureVideo.srcObject = mix_stream;
880
+
864
881
  pictureInPictureVideo.onloadedmetadata = () => {
865
882
  pictureInPictureVideo.requestPictureInPicture();
866
883
  };
@@ -875,9 +892,11 @@ class Video extends Component {
875
892
  pictureInPictureVideo.addEventListener('leavepictureinpicture', (event) => {
876
893
  pictureInPictureVideo.srcObject = null;
877
894
  pictureInPictureVideo.style.display = "none";
878
- clearInterval(interval);
895
+ this.state.listVideoPicture = []
896
+ worker.postMessage(false);
879
897
  this.state.isPictureInPicture = false
880
898
  });
899
+
881
900
  }
882
901
  roomCallBack = (type, manege,code) => {
883
902
  this.setState({
@@ -1118,7 +1137,10 @@ class Video extends Component {
1118
1137
  else if (Mival.typeId == 1220) {
1119
1138
  // 一炒多的图片
1120
1139
  if (Mival.sessionId == this.state.sessionId) {
1121
- this.props.imgCallback(Mival.data.type, Mival.data.file) // 文字抄录和风险抄录,3--风险,,2--文字
1140
+ this.props.imgCallback({
1141
+ type: Mival.data.type,
1142
+ file: Mival.data.file}
1143
+ ) // 文字抄录和风险抄录,3--风险,,2--文字
1122
1144
  }
1123
1145
  } else if (Mival.typeId == 1216) {
1124
1146
  // 签字回调
@@ -1338,7 +1360,7 @@ class Video extends Component {
1338
1360
  type: '2',
1339
1361
  sigType: 1
1340
1362
  };
1341
-
1363
+ this.workerClick()
1342
1364
  this.test_controller.GetDevices();
1343
1365
  // 获取设备成功
1344
1366
  this.test_controller.OnGetDevicesSuccess = (devicesInfo) => {
@@ -1505,6 +1527,9 @@ class Video extends Component {
1505
1527
  // 音视频关闭通知
1506
1528
  this.test_controller.OnMediaClose = (code, sid) => {
1507
1529
  console.log(code, sid)
1530
+ if((code == 5004 || code == 5007) && document.getElementById('publish_video1').name == sid) {
1531
+ this.roomCallBack(2, '媒体链路连接异常/超时',8)
1532
+ }
1508
1533
  };
1509
1534
  // 加入房间成功
1510
1535
  this.test_controller.OnJoinRoomSucc = () => {
@@ -1781,7 +1806,8 @@ class Video extends Component {
1781
1806
  'meetingInfo': {
1782
1807
  'title': this.props.meetingInfo.title,
1783
1808
  'host': this.props.meetingInfo.host,
1784
- 'customers': this.props.meetingInfo.customers
1809
+ 'customers': this.props.meetingInfo.customers,
1810
+ 'otherAttendees': this.props.meetingInfo.otherAttendees
1785
1811
  }
1786
1812
 
1787
1813
  })
@@ -1996,11 +2022,10 @@ class Video extends Component {
1996
2022
  'tellerId': this.props.tellerAccount
1997
2023
  })
1998
2024
  })
1999
- this.state.sessionType = false
2000
2025
  this.state.isSharedScreen = false
2001
2026
  this.setState({
2002
2027
 
2003
- screenName: '投屏'
2028
+ screenName: '共享模式'
2004
2029
  });
2005
2030
  this.tabTitlesClick('RMScreen', 'delect')
2006
2031
  if (this.state.isPictureInPicture) {
@@ -2286,10 +2311,10 @@ class Video extends Component {
2286
2311
  // 切流成功通知
2287
2312
  this.test_controller.OnChangeMediaStreamSuccess = (sid) => {
2288
2313
  console.log('切流成功通知', sid);
2289
- if(this.state.isModalVisibleInspection) {
2290
- this.messageClick('切换摄像头或麦克风成功','success')
2314
+ if(this.state.loading) {
2315
+ this.messageClick('摄像头或麦克风切换成功','success')
2291
2316
  this.setState({
2292
- isModalVisibleInspection: false
2317
+ loading: false
2293
2318
  })
2294
2319
  }
2295
2320
 
@@ -2301,7 +2326,12 @@ class Video extends Component {
2301
2326
  msg
2302
2327
  ) => {
2303
2328
  console.log('切流失败通知', sid, code, msg)
2329
+ if(this.state.loading) {
2330
+ this.setState({
2331
+ loading: false
2332
+ })
2304
2333
  this.messageClick('切换摄像头或麦克风失败,请先检查设备','error')
2334
+ }
2305
2335
  };
2306
2336
  // 服务端录制初始化成功
2307
2337
  this.test_controller.OnInitRemoteRecordSucc = (
@@ -2502,7 +2532,7 @@ class Video extends Component {
2502
2532
  this.timer && clearInterval(this.timer);
2503
2533
  if(this.state.isSharedScreen) {
2504
2534
  this.setState({
2505
- screenName: '投屏',
2535
+ screenName: '共享模式',
2506
2536
  })
2507
2537
  this.state.isSharedScreen = false
2508
2538
  this.state.laveRoomSharedScreen = true
@@ -2517,7 +2547,7 @@ class Video extends Component {
2517
2547
  })
2518
2548
  } else {
2519
2549
  this.setState({
2520
- screenName: '投屏',
2550
+ screenName: '共享模式',
2521
2551
  });
2522
2552
  this.state.isSharedScreen = false
2523
2553
  this.state.laveRoomSharedScreen = true
@@ -2592,6 +2622,7 @@ class Video extends Component {
2592
2622
  this.props.resourcePath + "/beauty/beauty.js",
2593
2623
  this.props.resourcePath + "/beauty/meeting_beautify_stream.js",
2594
2624
  this.props.resourcePath + "/beauty/backgroundBlur.js",
2625
+
2595
2626
  this.props.resourcePath + "/adapter.js",
2596
2627
  this.props.resourcePath + "/getMediaInfo.js",
2597
2628
  // this.props.resourcePath + "/pdf.js",
@@ -2603,10 +2634,17 @@ class Video extends Component {
2603
2634
  this.props.resourcePath + "/meeting_im.js",
2604
2635
  this.props.resourcePath + "/meeting_vod.js",
2605
2636
  this.props.resourcePath + "/meeting_invite.js",
2606
- this.props.resourcePath + "/client_record.js",
2637
+ this.props.resourcePath + "/client_record.js",
2607
2638
  this.props.resourcePath + "/remote_record.js",
2608
2639
  this.props.resourcePath + "/meeting_camera_stream.js",
2609
2640
  this.props.resourcePath + "/meeting_api.js",
2641
+
2642
+ this.props.resourcePath + "/eruda.js",
2643
+ this.props.resourcePath + "/iconfont.js",
2644
+ this.props.resourcePath + "/dialogue.css",
2645
+
2646
+
2647
+
2610
2648
  ]
2611
2649
  const that = this
2612
2650
  let i = 0
@@ -2782,6 +2820,8 @@ class Video extends Component {
2782
2820
  publish_config.media_type = 1
2783
2821
  publish_config.publish_device = 2
2784
2822
  publish_config.video_profile_type = 1
2823
+ publish_config.enableDesktopAudio=true
2824
+ publish_config.degradationType=2
2785
2825
  publish_config.sid = document.getElementById('video20').name
2786
2826
  this.test_controller.ChangeMediaStream(publish_config)
2787
2827
  this.state.isScreenSwitching = true
@@ -2809,7 +2849,7 @@ class Video extends Component {
2809
2849
  this.state.isSharedScreen = false
2810
2850
  this.state.isScreenSwitching = false
2811
2851
  this.setState({
2812
- screenName: '投屏'
2852
+ screenName: '共享模式'
2813
2853
  });
2814
2854
  console.log(pictureInPictureVideo)
2815
2855
  this.tabTitlesClick('RMScreen', 'delect')
@@ -2821,6 +2861,8 @@ class Video extends Component {
2821
2861
  publish_config.media_type = 1;
2822
2862
  publish_config.publish_device = 2;
2823
2863
  publish_config.video_profile_type = 1;
2864
+ publish_config.enableDesktopAudio=true
2865
+ publish_config.degradationType=2
2824
2866
  publish_config.sid = document.getElementById('video20').name;
2825
2867
  this.test_controller.ChangeMediaStream(publish_config);
2826
2868
  } else {
@@ -2828,6 +2870,8 @@ class Video extends Component {
2828
2870
  publish_config.publish_device = 2
2829
2871
  publish_config.need_volume_analyser = true
2830
2872
  publish_config.video_profile_type = 1
2873
+ publish_config.enableDesktopAudio=true
2874
+ publish_config.degradationType=2
2831
2875
  publish_config.publish_video_id = 'video20'
2832
2876
  publish_config.publish_streamId_id = 'subscribe_streamId20'
2833
2877
  publish_config.publish_tag = 'projectionWhiteboard'
@@ -2842,7 +2886,7 @@ class Video extends Component {
2842
2886
  this.tabTitlesClick(
2843
2887
  {
2844
2888
  value: 'RMScreen',
2845
- name: '坐席投屏'
2889
+ name: '共享内容'
2846
2890
  }, 'add'
2847
2891
  )
2848
2892
  if (!this.state.isPictureInPicture) {
@@ -3189,6 +3233,7 @@ class Video extends Component {
3189
3233
  console.log(inp.value, '复制到的内容')
3190
3234
  document.execCommand('Copy') // 执行浏览器复制命令
3191
3235
  inp.remove()
3236
+ this.messageClick('复制成功','success')
3192
3237
  }
3193
3238
  queryStaff = async () => {
3194
3239
  if(!this.state.employeeNumber) return
@@ -3229,26 +3274,75 @@ class Video extends Component {
3229
3274
  value: 'RMWhiteboard',
3230
3275
  name: 'RM白板'
3231
3276
  }, 'add')
3232
- if (document.getElementById('video20').name) {
3233
- // 代表已经有了进行切流
3234
- publish_config.publish_device = 4
3235
- publish_config.media_type = 1
3236
- publish_config.sid = document.getElementById('video20').name
3237
- publish_config.part_of_screen_id = 'touBoxItem'
3238
- publish_config.video_profile_type = 5
3239
- this.test_controller.ChangeMediaStream(publish_config);
3240
- } else {
3241
-
3242
- publish_config.media_type = 1
3243
- publish_config.publish_device = 4
3244
- publish_config.need_volume_analyser = true
3245
- publish_config.video_profile_type = 5
3246
- publish_config.part_of_screen_id = 'touBoxItem';
3247
- publish_config.publish_video_id = 'video20'
3248
- publish_config.publish_streamId_id = 'subscribe_streamId10'
3249
- publish_config.publish_tag = 'projectionWhiteboard'
3250
- this.test_controller.Publish(publish_config)
3251
- }
3277
+ const width = this.state.whiteboardWidth;
3278
+ const height = this.state.whiteboardHeight;
3279
+ const canvas = document.createElement('canvas');
3280
+ const videoMedia = document.getElementById('manedvideo');
3281
+ const cobj = canvas.getContext('2d'); // 获取绘图环境
3282
+ const w = window.screen.width;
3283
+ const h = window.screen.height;
3284
+ canvas.width = width;
3285
+ canvas.height = height;
3286
+ videoMedia.addEventListener('play', (event) =>{
3287
+ var $this = this; //cache
3288
+ console.log('333111',!$this.paused,!$this.ended)
3289
+ loop()
3290
+ function loop() {
3291
+ if (!$this.paused && !$this.ended) {
3292
+ cobj.drawImage(videoMedia, 0, 0, width, height, 0, 0,width, height,);
3293
+ setTimeout(loop, 1000 / 10); // drawing at 30fps
3294
+ }
3295
+ }
3296
+
3297
+ if (document.getElementById('video20').name) {
3298
+ // 代表已经有了进行切流
3299
+ publish_config.publish_device = 5
3300
+ publish_config.media_type = 1
3301
+ publish_config.sid = document.getElementById('video20').name
3302
+ publish_config.stream = canvas.captureStream(10)
3303
+ publish_config.video_profile_type = 5
3304
+ this.test_controller.ChangeMediaStream(publish_config);
3305
+ } else {
3306
+
3307
+ publish_config.media_type = 1
3308
+ publish_config.publish_device = 5
3309
+ publish_config.need_volume_analyser = true
3310
+ publish_config.video_profile_type = 5
3311
+ publish_config.stream = canvas.captureStream(10)
3312
+ publish_config.publish_video_id = 'video20'
3313
+ publish_config.publish_streamId_id = 'subscribe_streamId10'
3314
+ publish_config.publish_tag = 'projectionWhiteboard'
3315
+ this.test_controller.Publish(publish_config)
3316
+ }
3317
+ }, 0);
3318
+ navigator.mediaDevices.getDisplayMedia({
3319
+ video: true
3320
+ })
3321
+ .then((stream) => {
3322
+ videoMedia.srcObject = stream;
3323
+ }, error => {
3324
+ console.log("Unable to acquire screen capture", error);
3325
+ });
3326
+ // if (document.getElementById('video20').name) {
3327
+ // // 代表已经有了进行切流
3328
+ // publish_config.publish_device = 4
3329
+ // publish_config.media_type = 1
3330
+ // publish_config.sid = document.getElementById('video20').name
3331
+ // publish_config.part_of_screen_id = 'touBoxItem'
3332
+ // publish_config.video_profile_type = 5
3333
+ // this.test_controller.ChangeMediaStream(publish_config);
3334
+ // } else {
3335
+
3336
+ // publish_config.media_type = 1
3337
+ // publish_config.publish_device = 4
3338
+ // publish_config.need_volume_analyser = true
3339
+ // publish_config.video_profile_type = 5
3340
+ // publish_config.part_of_screen_id = 'touBoxItem';
3341
+ // publish_config.publish_video_id = 'video20'
3342
+ // publish_config.publish_streamId_id = 'subscribe_streamId10'
3343
+ // publish_config.publish_tag = 'projectionWhiteboard'
3344
+ // this.test_controller.Publish(publish_config)
3345
+ // }
3252
3346
  } else {
3253
3347
  this.messageClick('当前已经切换RM白板','success')
3254
3348
 
@@ -3279,11 +3373,16 @@ class Video extends Component {
3279
3373
  this.test_controller.GetDevices()
3280
3374
  }
3281
3375
  handleOkInspection = () => {
3376
+ this.setState({
3377
+ isModalVisibleInspection: false,
3378
+ loading: true
3379
+ })
3282
3380
  const config = {}
3283
3381
  config.sid = document.getElementById('publish_video1').name
3284
3382
  config.videoSource = this.state.cameraValue
3285
3383
  config.audioSource = this.state.microphoneValue
3286
3384
  this.test_controller.ChangeProfile(config)
3385
+
3287
3386
  }
3288
3387
  handleCancelInspection = () => {
3289
3388
  this.setState({
@@ -3316,6 +3415,21 @@ class Video extends Component {
3316
3415
  if (this.props.children) {
3317
3416
  pdfChildren = React.cloneElement(this.props.children, { width: this.state.whiteboardWidth, height: this.state.whiteboardHeight, show: this.state.isSelect == 'RMWhiteboard'})
3318
3417
  }
3418
+ const otherAttendeesList = (
3419
+ <span className='labelClass'>
3420
+ {(meetingInfo.otherAttendees ? meetingInfo.otherAttendees.length>0 ? true : false : false) &&
3421
+ meetingInfo.otherAttendees.map((item, index) => {
3422
+ return <label key={index}>
3423
+ {item}
3424
+ {
3425
+ meetingInfo.otherAttendees.length > 0 && index != meetingInfo.otherAttendees.length - 1 && <label>,</label>
3426
+ }
3427
+
3428
+ </label>
3429
+ })
3430
+ }
3431
+ </span>
3432
+ )
3319
3433
  const customerNameList = (
3320
3434
  <span className='labelClass'>
3321
3435
  {
@@ -3413,9 +3527,9 @@ class Video extends Component {
3413
3527
  <Header></Header>
3414
3528
  <div className="health">
3415
3529
  <div className="healthVideo">
3416
- <div className="projection">
3530
+ <div className="projection" style={{background: this.state.tabTitles.length > 0 ? '#f0f0f0' : '#ffffff'}}>
3417
3531
  {tabTitleList}
3418
- <img style={sectionStyle} src={require("../../assets/img/placeholder_bg.png").default} alt="" />
3532
+ {/* <img style={sectionStyle} src={require("../../assets/img/placeholder_bg.png").default} alt="" /> */}
3419
3533
  <div id="whiteboardDIV" style={{height: this.state.tabTitles.length > 0 ? 'calc(100% - 33px)' : '100%'}}>
3420
3534
 
3421
3535
  <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMScreen') ? '' : 'none', }}>
@@ -3432,6 +3546,7 @@ class Video extends Component {
3432
3546
 
3433
3547
  </div>
3434
3548
  <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMWhiteboard') ? '' : 'none', }}>
3549
+ {/* <div className="videoDiv"> */}
3435
3550
  <div id="touBoxItem">
3436
3551
  {pdfChildren}
3437
3552
  </div>
@@ -3463,9 +3578,17 @@ class Video extends Component {
3463
3578
  <label className='labelClass'>{meetingInfo.host}</label>
3464
3579
  </li>
3465
3580
  <li>
3466
- <span>参会者:</span>
3581
+ <span>客户:</span>
3467
3582
  {customerNameList}
3468
3583
  </li>
3584
+ {
3585
+ (meetingInfo.otherAttendees ? meetingInfo.otherAttendees.length>0 ? true : false : false) && <li>
3586
+ <span>其他参会者:</span>
3587
+ {otherAttendeesList}
3588
+ </li>
3589
+ }
3590
+
3591
+
3469
3592
  </ul>
3470
3593
  </div>
3471
3594
  </div>
@@ -3885,7 +4008,7 @@ class Video extends Component {
3885
4008
  <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkEnd}>确定</Button>
3886
4009
  </div>
3887
4010
  ]}>
3888
- <div className='endModal'>确定是否结束会话?</div>
4011
+ <div className='endModal'>是否要结束并退出会议?</div>
3889
4012
  </Modal>
3890
4013
  <Modal title={this.state.titleModal} closable={false} centered={true} visible={this.state.isModalVisibleFacial} footer={[
3891
4014
  <div key='facial'>
@@ -3904,7 +4027,7 @@ class Video extends Component {
3904
4027
  </div>
3905
4028
 
3906
4029
  </Modal> */}
3907
- <Modal className="modelClass" title="新增预约" closable={false} centered={true} visible={this.state.isModalVisibleInvitation} footer={[
4030
+ <Modal className="modelClass" title="邀请参会人员" closable={false} centered={true} visible={this.state.isModalVisibleInvitation} footer={[
3908
4031
  <div key='invitation'>
3909
4032
  <Button className="modelButtonCancel" onClick={this.handleCancelInvitation}>取消</Button>
3910
4033
  {
@@ -3924,19 +4047,19 @@ class Video extends Component {
3924
4047
  <div className="invitationDiv">
3925
4048
  <span className="modalSpan">&nbsp;&nbsp;&nbsp;姓名:</span><span>{this.state.employeeName}</span>
3926
4049
  </div>
3927
- {
3928
- this.state.employeeName &&<div className='invitationDiv'>
3929
- <span className="modalSpan">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><Button className="invitationButton" onClick={this.linkClick}> <img className='invitationImg' src={require("../../assets/img/link.png").default} alt="" />复制会议链接</Button>
3930
- </div>
3931
- }
3932
4050
 
4051
+ <div className='invitationDiv'>
4052
+ <span className="modalSpan">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
4053
+ <Button style={{ display: this.state.employeeName? '' : 'none'}} className="invitationButton" onClick={this.linkClick}> <img className='invitationImg' src={require("../../assets/img/link.png").default} alt="" />复制会议链接</Button>
4054
+ </div>
4055
+
3933
4056
  </div>
3934
- {
3935
- this.state.employeeError && <div className='errorClassInvitation'>
3936
- <img alt="" src={require("../../assets/img/tooltips2_fail.png").default} />
3937
- <span>{this.state.employeeError}</span>
4057
+
4058
+ <div className={`errorClassInvitation ${this.state.employeeError ? 'errorClassInvitationColor' : ''}`}>
4059
+ <img style={{ display: this.state.employeeError? '' : 'none'}} alt="" src={require("../../assets/img/tooltips2_fail.png").default} />
4060
+ <span style={{ display: this.state.employeeError? '' : 'none'}}>{this.state.employeeError}</span>
3938
4061
  </div>
3939
- }
4062
+
3940
4063
 
3941
4064
  </Modal>
3942
4065
  <Modal title="签字白板" width={600} destroyOnClose={true} closable={false} centered={true} visible={isTranscribing} footer={
@@ -3958,21 +4081,21 @@ class Video extends Component {
3958
4081
  ></CanvasDraw>
3959
4082
  </div>
3960
4083
  </Modal>
3961
- <Modal title="设备检测" closable={false} centered={true} visible={this.state.isModalVisibleInspection} footer={[
4084
+ <Modal title="设置视频设备" closable={false} centered={true} visible={this.state.isModalVisibleInspection} footer={[
3962
4085
  <div key='inspection'>
3963
4086
  <Button className="modelButtonCancel" onClick={this.handleCancelInspection}>取消</Button>
3964
4087
  <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkInspection}>确定</Button>
3965
4088
  </div>
3966
4089
  ]}>
3967
4090
  <div className="inspection">
3968
- <div>摄像头设备:</div>
4091
+ <div>摄像头:</div>
3969
4092
  {camera}
3970
- <div>麦克风设备:</div>
4093
+ <div>麦克风:</div>
3971
4094
  {microphone}
3972
4095
  {
3973
4096
  this.state.speakerList.length > 0 &&
3974
4097
  <span>
3975
- <div>扬声器设备:</div>
4098
+ <div>扬声器:</div>
3976
4099
  {speaker}
3977
4100
  </span>
3978
4101
  }
@@ -3980,6 +4103,8 @@ class Video extends Component {
3980
4103
  </div>
3981
4104
  </Modal>
3982
4105
  <video className="mixedvideo" id="mixedvideo" autoPlay muted={true} width="0" height="0"></video>
4106
+ <video className="mixedvideo" id="manedvideo" autoPlay width="0" height="0"></video>
4107
+
3983
4108
  </Spin>
3984
4109
  </div>);
3985
4110
  }
@@ -3991,7 +4116,7 @@ imRoomId: "Fwua8kGB6@conference.openfire2.leimondata.cn",
3991
4116
  sessionId: "Fwua8kGB6",
3992
4117
  tellerAccount: 't001',
3993
4118
  businessNumber: '123',
3994
- callbackUrl: 'http://47.102.126.132:8720/hsbc/callback',
4119
+ callbackUrl: 'http://182.92.184.31:8720/hsbc/callback',
3995
4120
  // roomServerUrl: 'wss://app.uat.dsp.hsbcfts.com.cn/mpaas/mrtc/ws',
3996
4121
  roomServerUrl: 'wss://mrtc.mpaas.cn-hangzhou.aliyuncs.com/ws',
3997
4122
 
@@ -4009,7 +4134,8 @@ sessionId: "Fwua8kGB6",
4009
4134
  meetingInfo: {
4010
4135
  title: '--',
4011
4136
  host: '--',
4012
- customers: ['--']
4137
+ customers: ['--'],
4138
+ otherAttendees: undefined
4013
4139
  },
4014
4140
  isTranscribing: false,
4015
4141
  }