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.
- package/lib/hsbc.js +1 -1
- package/package.json +1 -1
- package/packages/demo/demo.js +2 -1
- package/packages/demo/pdf.js +78 -0
- package/packages/pages/foot/foot.jsx +4 -4
- package/packages/pages/foot/foot.less +6 -2
- package/packages/pages/header/header.jsx +1 -1
- package/packages/pages/video/video.jsx +217 -91
- package/packages/pages/video/video.less +12 -9
|
@@ -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
|
-
|
|
714
|
-
const
|
|
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
|
-
|
|
718
|
-
|
|
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
|
-
|
|
721
|
-
cobj.clearRect(0, 0,
|
|
722
|
-
|
|
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 =
|
|
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(
|
|
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
|
|
776
|
+
cobj.font = "28px serif";
|
|
750
777
|
cobj.textAlign = 'left';
|
|
751
778
|
cobj.lineWidth = 1;
|
|
752
779
|
// 文字
|
|
753
|
-
let str =
|
|
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 *
|
|
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 *
|
|
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 *
|
|
796
|
-
cobj.lineTo(640, 360 *
|
|
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[
|
|
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(
|
|
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
|
-
}
|
|
875
|
+
};
|
|
876
|
+
|
|
860
877
|
const captureStream = canvas.captureStream();
|
|
861
|
-
|
|
878
|
+
mix_stream = new MediaStream(captureStream);
|
|
862
879
|
pictureInPictureVideo = document.getElementById('mixedvideo');
|
|
863
|
-
|
|
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
|
-
|
|
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(
|
|
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.
|
|
2290
|
-
this.messageClick('
|
|
2314
|
+
if(this.state.loading) {
|
|
2315
|
+
this.messageClick('摄像头或麦克风切换成功','success')
|
|
2291
2316
|
this.setState({
|
|
2292
|
-
|
|
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
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
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
|
|
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'
|
|
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="
|
|
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"> 姓名:</span><span>{this.state.employeeName}</span>
|
|
3926
4049
|
</div>
|
|
3927
|
-
{
|
|
3928
|
-
this.state.employeeName &&<div className='invitationDiv'>
|
|
3929
|
-
<span className="modalSpan"> </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"> </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
|
-
|
|
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="
|
|
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
|
|
4091
|
+
<div>摄像头:</div>
|
|
3969
4092
|
{camera}
|
|
3970
|
-
<div
|
|
4093
|
+
<div>麦克风:</div>
|
|
3971
4094
|
{microphone}
|
|
3972
4095
|
{
|
|
3973
4096
|
this.state.speakerList.length > 0 &&
|
|
3974
4097
|
<span>
|
|
3975
|
-
<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://
|
|
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
|
}
|