react_hsbc_teller 2.0.78 → 2.0.80

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react_hsbc_teller",
3
- "version": "2.0.78",
3
+ "version": "2.0.80",
4
4
  "description": "React",
5
5
  "private": false,
6
6
  "main": "lib/hsbc.js",
@@ -25,7 +25,7 @@ import { Button } from '../../../node_modules/antd/lib/index';
25
25
  import Slider from 'antd/lib/slider';
26
26
  import 'antd/lib/slider/style'
27
27
  import './video.less'
28
- import { compressImage, isLight, saveBase64Image, combineBase64Images } from '../../utils/utils'
28
+ import { compressImage, isLight, saveBase64Image, combineBase64Images, dateTime } from '../../utils/utils'
29
29
  import Recorder from "js-audio-recorder";
30
30
  import MyAsrController from '../../utils/asrController'
31
31
  import Header from '../header/header.jsx'
@@ -64,7 +64,8 @@ import MultiModule from '../multiModule/multiModule'//签字、抄录
64
64
  import axios from 'axios';
65
65
  import CryptoJS from "crypto-js";
66
66
 
67
- const SDK_VERISON = '2.0.78'
67
+
68
+ const SDK_VERISON = '2.0.80'
68
69
  const IDtypeFront = '请客户在其设备后置摄像头下展示证件正面(如:身份证照片页面)'
69
70
  const IDtypeBack = '请在后置摄像头下展示证件反面(如:身份证国徽页)'
70
71
  const { Option } = Select;
@@ -724,7 +725,7 @@ class Video extends Component {
724
725
  height: (420 * SCALE)
725
726
  })
726
727
  // 开启业务录制的时候type传值,在后面加标识,全局的不加
727
- const filePath = 'recordId_' + new Date().valueOf() + type;
728
+ const filePath = 'recordId_' + this.props.tellerAccount + new Date().valueOf() + type;
728
729
  const recordParam = {};
729
730
  recordParam.width = 1280 * SCALE;
730
731
  recordParam.height = 720 * SCALE;
@@ -872,7 +873,7 @@ class Video extends Component {
872
873
  height: (420 * SCALE)
873
874
  })
874
875
  // 开启业务录制的时候type传值,在后面加标识,全局的不加
875
- const filePath = type ? ('recordId_' + new Date().valueOf() + '_business') : ('recordId_' + new Date().valueOf());
876
+ const filePath = type ? ('recordId_' + this.props.tellerAccount + new Date().valueOf() + '_business') : ('recordId_' + this.props.tellerAccount + new Date().valueOf());
876
877
  const recordParam = {};
877
878
  recordParam.width = 1280 * SCALE;
878
879
  recordParam.height = 720 * SCALE;
@@ -915,7 +916,7 @@ class Video extends Component {
915
916
  // 开启ipad录制
916
917
  enableIpadRecording = (record_business_id) => {
917
918
  const that = this
918
- const filePath = 'recordId_' + new Date().valueOf() + '_ipad';
919
+ const filePath = 'recordId_' + this.props.tellerAccount + new Date().valueOf() + '_ipad';
919
920
  const recordParam = {};
920
921
  recordParam.width = 1280;
921
922
  recordParam.height = 720;
@@ -2636,6 +2637,26 @@ class Video extends Component {
2636
2637
  }
2637
2638
  }
2638
2639
  };
2640
+ this.test_controller.OnSignalDisconnected = () => {
2641
+ // 30001每次⽹络请求都会打印log,但是30001断开期间此回调只会执⾏⼀次
2642
+ let time = 1000 * (this.props.signalDisconnectedTime ? this.props.signalDisconnectedTime : 20)
2643
+ console.log('OnSignalDisconnected', this.props.signalDisconnectedTime, dateTime(), time)
2644
+ this.saveLog('OnSignalDisconnected, signalDisconnectedTime' + this.props.signalDisconnectedTime + 's, date=' + dateTime())
2645
+ this.signalDisconnectedSetTimeout = setTimeout(signalDisconnectedMethod, time);
2646
+ }
2647
+ this.test_controller.OnSignalConnected = () => {
2648
+ // 重连成功
2649
+ console.log('OnSignalConnected')
2650
+ this.saveLog('OnSignalConnected, signalDisconnectedTime' + this.props.signalDisconnectedTime + 's, date=' + dateTime())
2651
+ clearTimeout(this.signalDisconnectedSetTimeout)
2652
+ }
2653
+ const signalDisconnectedMethod = () => {
2654
+ console.log('OnSignalDisconnected', this.props.signalDisconnectedTime, dateTime())
2655
+ this.setState({
2656
+ transcribeErrorCode: 30001,
2657
+ transcribeErrorModalVisible: true
2658
+ })
2659
+ }
2639
2660
  // 加入房间成功
2640
2661
  this.test_controller.OnJoinRoomSucc = () => {
2641
2662
  console.log('加入房间成功')
@@ -8193,6 +8214,7 @@ Video.defaultProps = {
8193
8214
  echoCancellation: true,
8194
8215
  noiseSuppression: true,
8195
8216
  needPreSale: true, // 是否开启音频录制 默认true--只控制售前full
8217
+ signalDisconnectedTime: 20, // 网络异常断开多久后异常弹窗提示
8196
8218
  logUrl: 'http://hsbc.cn-shanghai.log.aliyuncs.com/logstores/hsbc/track?APIVersion=0.6.0&app=meeting-ui',
8197
8219
  internalUrl: 'https://wp-staff-gateway.wealth-platform.uat.ali.cloud.cn.hsbc/meeting-ui/OHB/CN/HSBC?chnlID=OHB&locale=zh_CN&chnlCC=CN&chnlGMC=HSBC&targetFunc=supervisorMeeting&sourceFunc=rmMeeting'
8198
8220
  }
@@ -1,81 +1,78 @@
1
1
  function compressImage(base64, callback) {
2
2
  var targSize = 1024 * 1024 * 1.45 //1024KB
3
3
  if (base64.length <= targSize) {
4
- callback(base64);
5
- // console.log("直接返回")
6
- return
4
+ callback(base64);
5
+ // console.log("直接返回")
6
+ return
7
7
  }
8
8
  var newImage = new Image();
9
9
  newImage.src = base64;
10
- console.log('压缩前'+base64.length)
10
+ console.log('压缩前' + base64.length)
11
11
  newImage.setAttribute("crossOrigin", 'Anonymous'); //url为外域时需要
12
12
  newImage.onload = function () {
13
- var quality = 0.95; //压缩系数0-1之间
14
- var canvas = document.createElement("canvas");
15
- var ctx = canvas.getContext("2d");
16
- canvas.width = 720
17
- canvas.height = 405
18
- ctx.clearRect(0, 0, canvas.width, canvas.height);
19
- ctx.drawImage(newImage, 0, 0, canvas.width, canvas.height);
20
- var base64 = canvas.toDataURL("image/png", quality); //压缩语句
21
- // 如想确保图片压缩到自己想要的尺寸,如要求在5-10kb之间,请加以下语句,quality初始值根据情况自定
22
- // console.log(base64.length + "循环1压缩" + (base64.length / 1024 > 512))
23
-
24
- // while (base64.length > targSize) {
25
- // quality -= 0.03;
26
- // // console.log(base64.length + "循环压缩" + quality)
27
- // base64 = canvas.toDataURL("image/png", quality);
28
- // }
29
- console.log('压缩后'+base64.length)
30
- callback(base64); //必须通过回调函数返回,否则无法及时拿到该值
13
+ var quality = 0.95; //压缩系数0-1之间
14
+ var canvas = document.createElement("canvas");
15
+ var ctx = canvas.getContext("2d");
16
+ canvas.width = 720
17
+ canvas.height = 405
18
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
19
+ ctx.drawImage(newImage, 0, 0, canvas.width, canvas.height);
20
+ var base64 = canvas.toDataURL("image/png", quality); //压缩语句
21
+ // 如想确保图片压缩到自己想要的尺寸,如要求在5-10kb之间,请加以下语句,quality初始值根据情况自定
22
+ // console.log(base64.length + "循环1压缩" + (base64.length / 1024 > 512))
23
+
24
+ // while (base64.length > targSize) {
25
+ // quality -= 0.03;
26
+ // // console.log(base64.length + "循环压缩" + quality)
27
+ // base64 = canvas.toDataURL("image/png", quality);
28
+ // }
29
+ console.log('压缩后' + base64.length)
30
+ callback(base64); //必须通过回调函数返回,否则无法及时拿到该值
31
31
  }
32
32
  }
33
33
  function debounce(fn, delay = 500) {
34
34
  // 是闭包中的
35
35
  let timer
36
-
36
+
37
37
  // input事件调用的函数,相当于obj调用函数 this指向Input
38
- return function() {
39
- // 这个if 判断不做也没关系,判断了(除第一次非空的情况)也就是执行从第二次开始,在延迟时间内多次触发才会走该判断
40
- if(timer) {clearTimeout(timer)}
41
- // 此时的箭头函数的this 和 arguments 都是从外部函数继承而来
42
- // 如果用普通函数就要用词法作用域 var tshat = this var arg = arguments
43
- timer = setTimeout(() =>{
44
- // 使得传入的回调函数的this 指向Input这个元素对象
45
- // arguments是该事件的详情,可以获得该函数被调用时的所有参数,是一个event 对象(所有Dom事件都会传event对象进入)
46
- // 直接使用 fn() 问题也不大
47
- fn.apply(this,arguments)
48
- timer = null
49
- },delay)
50
- }
38
+ return function () {
39
+ // 这个if 判断不做也没关系,判断了(除第一次非空的情况)也就是执行从第二次开始,在延迟时间内多次触发才会走该判断
40
+ if (timer) { clearTimeout(timer) }
41
+ // 此时的箭头函数的this 和 arguments 都是从外部函数继承而来
42
+ // 如果用普通函数就要用词法作用域 var tshat = this var arg = arguments
43
+ timer = setTimeout(() => {
44
+ // 使得传入的回调函数的this 指向Input这个元素对象
45
+ // arguments是该事件的详情,可以获得该函数被调用时的所有参数,是一个event 对象(所有Dom事件都会传event对象进入)
46
+ // 直接使用 fn() 问题也不大
47
+ fn.apply(this, arguments)
48
+ timer = null
49
+ }, delay)
50
+ }
51
51
  }
52
52
  function isLight(src, sensitivity = 1) {
53
- let gray = new cv.Mat()
53
+ let gray = new cv.Mat()
54
54
  cv.cvtColor(src, gray, cv.COLOR_BGR2GRAY)
55
55
  let sum = 0;
56
56
  let avg = 0;
57
- let scalar = new cv.Scalar()
57
+ let scalar = new cv.Scalar()
58
58
  let ls = new Array();
59
59
  let size = gray.rows * gray.cols;
60
60
  for (let i = 0; i < 256; i++)
61
- ls[i] = 0;
62
-
63
- for (let i = 0; i < gray.rows; i++)
64
- {
65
- for (let j = 0; j < gray.cols; j++)
66
- {
67
- scalar = gray.ucharPtr(i, j);
68
- sum += (scalar[0] - 128);
69
- let x = scalar[0];
70
- ls[x]++;
71
- }
61
+ ls[i] = 0;
62
+
63
+ for (let i = 0; i < gray.rows; i++) {
64
+ for (let j = 0; j < gray.cols; j++) {
65
+ scalar = gray.ucharPtr(i, j);
66
+ sum += (scalar[0] - 128);
67
+ let x = scalar[0];
68
+ ls[x]++;
69
+ }
72
70
  }
73
71
  avg = sum / size;
74
72
  let total = 0;
75
73
  let mean = 0;
76
- for (let i = 0; i < 256; i++)
77
- {
78
- total += Math.abs((i - 128) - avg) * ls[i];
74
+ for (let i = 0; i < 256; i++) {
75
+ total += Math.abs((i - 128) - avg) * ls[i];
79
76
  }
80
77
  mean = total / size;
81
78
  let cast = Math.abs(avg / mean);
@@ -93,27 +90,24 @@ function isLight(src, sensitivity = 1) {
93
90
  }
94
91
 
95
92
  //std::cout << "亮度异常值:" << cast << std::endl;
96
- if (cast * sensitivity > 1)
97
- {
98
- if (avg > 0)
99
- {
100
- console.log('亮度异常 过亮:')
101
- //std::cout << "亮度异常 过亮" << avg << std::endl;
102
- return 1;
103
- }
104
- else {
105
- console.log('亮度异常 过暗')
106
- //std::cout << "亮度异常 过暗" << avg << std::endl;
107
- return -1;
108
- }
93
+ if (cast * sensitivity > 1) {
94
+ if (avg > 0) {
95
+ console.log('亮度异常 过亮:')
96
+ //std::cout << "亮度异常 过亮" << avg << std::endl;
97
+ return 1;
98
+ }
99
+ else {
100
+ console.log('亮度异常 过暗')
101
+ //std::cout << "亮度异常 过暗" << avg << std::endl;
102
+ return -1;
103
+ }
109
104
  }
110
- else
111
- {
105
+ else {
112
106
  console.log('亮度正常')
113
- //std::cout << "normal" << std::endl;
114
- return 0;
107
+ //std::cout << "normal" << std::endl;
108
+ return 0;
115
109
  }
116
-
110
+
117
111
  }
118
112
 
119
113
  function combineBase64Images(image1, image2, callback) {
@@ -121,33 +115,33 @@ function combineBase64Images(image1, image2, callback) {
121
115
  // 创建Canvas元素
122
116
  var canvas = document.createElement('canvas');
123
117
  var ctx = canvas.getContext('2d');
124
-
118
+
125
119
  // 加载第一张图片
126
120
  var img1 = new Image();
127
- img1.onload = function() {
128
-
121
+ img1.onload = function () {
122
+
129
123
  // 加载第二张图片
130
124
  var img2 = new Image();
131
- img2.onload = function() {
125
+ img2.onload = function () {
132
126
 
133
127
  // 设置Canvas的宽度和高度
134
128
  const imageWidth = 1280;
135
129
  const imageHeight = 720;
136
- canvas.width = imageWidth ; // 不压缩的话是 1280 x 720
130
+ canvas.width = imageWidth; // 不压缩的话是 1280 x 720
137
131
  canvas.height = imageHeight * 2;
138
132
 
139
133
  console.log(img1.width, img1.height)
140
134
  console.log(img2.width, img2.height)
141
-
135
+
142
136
  // 绘制第一张图片
143
137
  ctx.drawImage(img1, 0, 0, imageWidth, imageHeight);
144
138
  // 绘制第二张图片在第一张图片下方
145
139
  ctx.drawImage(img2, 0, imageHeight, imageWidth, imageHeight);
146
140
 
147
-
141
+
148
142
  // 导出拼接后的图片为base64
149
143
  var combinedImageData = canvas.toDataURL('image/png');
150
-
144
+
151
145
  // 执行回调函数,返回base64字符串
152
146
  callback(combinedImageData);
153
147
  console.log(combinedImageData)
@@ -156,7 +150,7 @@ function combineBase64Images(image1, image2, callback) {
156
150
  img2.src = image2;
157
151
  };
158
152
  img1.src = image1;
159
-
153
+
160
154
  }
161
155
 
162
156
  function saveBase64Image(base64Data, fileName) {
@@ -168,7 +162,7 @@ function saveBase64Image(base64Data, fileName) {
168
162
  let u8arr = new Uint8Array(n);
169
163
 
170
164
  while (n--) {
171
- u8arr[n] = bstr.charCodeAt(n);
165
+ u8arr[n] = bstr.charCodeAt(n);
172
166
  }
173
167
 
174
168
  let blob = new Blob([u8arr], { type: mime });
@@ -189,11 +183,28 @@ function saveBase64Image(base64Data, fileName) {
189
183
  document.body.removeChild(link);
190
184
  URL.revokeObjectURL(url);
191
185
  }
192
-
186
+ function dateTime() {
187
+ // 创建一个Date对象
188
+ const now = new Date();
189
+
190
+ // 获取年月日时分秒
191
+ const year = now.getFullYear();
192
+ const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的,所以要加1,并且可能需要补0
193
+ const day = String(now.getDate()).padStart(2, '0'); // 日期补0
194
+ const hours = String(now.getHours()).padStart(2, '0'); // 小时补0
195
+ const minutes = String(now.getMinutes()).padStart(2, '0'); // 分钟补0
196
+ const seconds = String(now.getSeconds()).padStart(2, '0'); // 秒数补0
197
+
198
+ // 格式化输出
199
+ const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
200
+ console.log(formattedDate);
201
+ return formattedDate;
202
+ }
193
203
  export {
194
204
  compressImage,
195
205
  debounce,
196
206
  isLight,
197
207
  combineBase64Images,
198
- saveBase64Image
208
+ saveBase64Image,
209
+ dateTime
199
210
  }