react_hsbc_teller 2.0.24 → 2.0.26
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/lib/hsbc.js.LICENSE.txt +11 -0
- package/package.json +2 -1
- package/packages/api/api.js +91 -0
- package/packages/assets/mp3/ipad_leave_error.mp3 +0 -0
- package/packages/assets/mp3/ipad_low_power.mp3 +0 -0
- package/packages/demo/demo.js +3 -1
- package/packages/pages/foot/foot.jsx +2 -2
- package/packages/pages/multiModule/components/copy/agree.jsx +115 -0
- package/packages/pages/multiModule/components/copy/agree.less +105 -0
- package/packages/pages/multiModule/components/copy/copyTwo.jsx +663 -0
- package/packages/pages/multiModule/components/copy/copyTwo.less +180 -0
- package/packages/pages/multiModule/components/copy/copy_en.jsx +365 -0
- package/packages/pages/multiModule/components/copy/copy_en.less +145 -0
- package/packages/pages/multiModule/components/copy/copylist.jsx +291 -0
- package/packages/pages/multiModule/components/copy/copylist.less +83 -0
- package/packages/pages/multiModule/components/copy/risk.jsx +294 -0
- package/packages/pages/multiModule/components/copy/risk.less +123 -0
- package/packages/pages/multiModule/components/sign/signMy.jsx +306 -0
- package/packages/pages/multiModule/components/sign/signMy.less +128 -0
- package/packages/pages/multiModule/components/subscribe/subscribe.jsx +113 -0
- package/packages/pages/multiModule/components/subscribe/subscribe.less +82 -0
- package/packages/pages/multiModule/multiModule.jsx +26 -0
- package/packages/pages/multiModule/multiModule.less +20 -0
- package/packages/pages/video/video.jsx +473 -162
- package/packages/utils/asrController.js +241 -0
- package/packages/utils/utils.js +10 -2
package/lib/hsbc.js.LICENSE.txt
CHANGED
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
http://jedwatson.github.io/classnames
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
/*!
|
|
8
|
+
*
|
|
9
|
+
* js-audio-recorder - js audio recorder plugin
|
|
10
|
+
*
|
|
11
|
+
* @version v0.5.7
|
|
12
|
+
* @homepage https://github.com/2fps/recorder
|
|
13
|
+
* @author 2fps <echoweb@126.com> (https://www.zhuyuntao.cn)
|
|
14
|
+
* @license MIT
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
7
18
|
/*!
|
|
8
19
|
* Determine if an object is a Buffer
|
|
9
20
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react_hsbc_teller",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.26",
|
|
4
4
|
"description": "React",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "lib/hsbc.js",
|
|
@@ -89,6 +89,7 @@
|
|
|
89
89
|
"axios": "0.19.0",
|
|
90
90
|
"crypto-js": "^4.1.1",
|
|
91
91
|
"html2canvas": "^1.4.0",
|
|
92
|
+
"js-audio-recorder": "^0.5.7",
|
|
92
93
|
"qrcode.react": "^3.1.0",
|
|
93
94
|
"react": "^17.0.1",
|
|
94
95
|
"react-canvas-draw": "^1.1.1",
|
package/packages/api/api.js
CHANGED
|
@@ -81,6 +81,30 @@ class API extends Server{
|
|
|
81
81
|
throw err;
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* 用途:敏感词检测
|
|
86
|
+
* @url https://api.cangdu.org/shopro/data/products
|
|
87
|
+
* 返回http_code为200表示成功
|
|
88
|
+
* @method post
|
|
89
|
+
* @return {promise}
|
|
90
|
+
*/
|
|
91
|
+
async keywordMatch(params = {}){
|
|
92
|
+
try{
|
|
93
|
+
let result = await this.axios('post', '/hsbc/keywordMatch', params);
|
|
94
|
+
if(result && result.code === 200){
|
|
95
|
+
return result.data||[];
|
|
96
|
+
}else{
|
|
97
|
+
let err = {
|
|
98
|
+
tip: '敏感词检测服务错误',
|
|
99
|
+
response: result,
|
|
100
|
+
data: params,
|
|
101
|
+
}
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}catch(err){
|
|
105
|
+
throw err;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
84
108
|
/**
|
|
85
109
|
* 用途:人脸检测
|
|
86
110
|
* @url https://api.cangdu.org/shopro/data/products
|
|
@@ -248,6 +272,58 @@ class API extends Server{
|
|
|
248
272
|
throw err;
|
|
249
273
|
}
|
|
250
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* 用途:抄录结果回调后台
|
|
277
|
+
* @url https://api.cangdu.org/shopro/data/products
|
|
278
|
+
* 返回http_code为200表示成功
|
|
279
|
+
* @method post
|
|
280
|
+
* @return {promise}
|
|
281
|
+
*/
|
|
282
|
+
async previewCopyCallback(params = {}){
|
|
283
|
+
try{
|
|
284
|
+
let result = await this.axios('post', '/hsbc/previewCopy/callback', params);
|
|
285
|
+
return result
|
|
286
|
+
// if(result && (result.data instanceof Object) && result.code === 200){
|
|
287
|
+
// return result.data||[];
|
|
288
|
+
// }else{
|
|
289
|
+
// let err = {
|
|
290
|
+
// tip: '服务异常',
|
|
291
|
+
// response: result,
|
|
292
|
+
// data: params,
|
|
293
|
+
// // url: 'https://api.cangdu.org/shopro/data/products',
|
|
294
|
+
// }
|
|
295
|
+
// throw err;
|
|
296
|
+
// }
|
|
297
|
+
}catch(err){
|
|
298
|
+
throw err;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* 用途:签署结果回调后台
|
|
303
|
+
* @url https://api.cangdu.org/shopro/data/products
|
|
304
|
+
* 返回http_code为200表示成功
|
|
305
|
+
* @method post
|
|
306
|
+
* @return {promise}
|
|
307
|
+
*/
|
|
308
|
+
async signFileCallback(params = {}){
|
|
309
|
+
try{
|
|
310
|
+
let result = await this.axios('post', '/hsbc/signFile/callback', params);
|
|
311
|
+
return result
|
|
312
|
+
// if(result && (result.data instanceof Object) && result.code === 200){
|
|
313
|
+
// return result.data||[];
|
|
314
|
+
// }else{
|
|
315
|
+
// let err = {
|
|
316
|
+
// tip: '服务异常',
|
|
317
|
+
// response: result,
|
|
318
|
+
// data: params,
|
|
319
|
+
// // url: 'https://api.cangdu.org/shopro/data/products',
|
|
320
|
+
// }
|
|
321
|
+
// throw err;
|
|
322
|
+
// }
|
|
323
|
+
}catch(err){
|
|
324
|
+
throw err;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
251
327
|
async retrieveCustomerInfoByActivityId(params = {}){
|
|
252
328
|
// return this.axios('get', '/lang/select/2', params);
|
|
253
329
|
try{
|
|
@@ -589,6 +665,21 @@ class API extends Server{
|
|
|
589
665
|
throw err;
|
|
590
666
|
}
|
|
591
667
|
}
|
|
668
|
+
/**
|
|
669
|
+
* 用途:上传oss
|
|
670
|
+
* @url https://elm.cangdu.org/v1/addimg/shop
|
|
671
|
+
* 返回status为200表示成功
|
|
672
|
+
* @method post
|
|
673
|
+
* @return {promise}
|
|
674
|
+
*/
|
|
675
|
+
async uploadOss(params = {}){
|
|
676
|
+
try{
|
|
677
|
+
let result = await this.axios('post', '/hsbc/imageUpload', params);
|
|
678
|
+
return result
|
|
679
|
+
}catch(err){
|
|
680
|
+
throw err;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
592
683
|
async addSensitiveRecord(params = {}){
|
|
593
684
|
try{
|
|
594
685
|
let result = await this.axios('post', '/sensitive/add', params);
|
|
Binary file
|
|
Binary file
|
package/packages/demo/demo.js
CHANGED
|
@@ -33,7 +33,7 @@ roomId
|
|
|
33
33
|
// resourcePath: 'https://counter-web.leimondata.cn:7199',
|
|
34
34
|
// resourcePath:'http://121.196.19.70:8027/',
|
|
35
35
|
roomServerUrl: 'wss://app.uat.dsp.hsbcfts.com.cn/mpaas/mrtc/ws',
|
|
36
|
-
baseURL:'https://zuul.uat.dsp.hsbcfts.com.cn/wealth/
|
|
36
|
+
baseURL:'https://zuul.uat.dsp.hsbcfts.com.cn/wealth/zuulsit/api/leimon-counter-api',
|
|
37
37
|
resourcePath:'https://zuul.uat.dsp.hsbcfts.com.cn/wealth/js/',
|
|
38
38
|
prohibitPrompt: '无客户',
|
|
39
39
|
titleBackground: '#40a9ff',
|
|
@@ -208,6 +208,7 @@ userExit =(val)=>{
|
|
|
208
208
|
userSide={this.state.userSide}
|
|
209
209
|
whetherDetectFace={true}
|
|
210
210
|
whetherDetectLight={true}
|
|
211
|
+
whetherNeedAsr={true}
|
|
211
212
|
prohibitPrompt={this.state.prohibitPrompt}
|
|
212
213
|
voiceColor={this.state.voiceColor}
|
|
213
214
|
titleBackground={this.state.titleBackground}
|
|
@@ -235,6 +236,7 @@ userExit =(val)=>{
|
|
|
235
236
|
joinRoomCallback={this.joinRoomCallback}
|
|
236
237
|
imgCallback={this.imgCallback}
|
|
237
238
|
sfpCallback={()=>{console.log('sfpCallback success')}}
|
|
239
|
+
signatureCallback={(msg)=>{console.log('signatureCallback', msg)}}
|
|
238
240
|
OnNetworkWeak={(a, b, c)=>{console.log('OnNetworkWeak', a,b,c)}}
|
|
239
241
|
userExit={this.userExit}
|
|
240
242
|
staffPermission={this.staffPermission}
|
|
@@ -188,7 +188,7 @@ export default class foot extends Component {
|
|
|
188
188
|
return (
|
|
189
189
|
<div className="foot">
|
|
190
190
|
<div className="total">
|
|
191
|
-
<div className='footHover' onClick={this.voice.bind(this)}>
|
|
191
|
+
<div className='footHover' style={{ display: (this.props.recordMode == 2) ? 'none' : ''}} onClick={this.voice.bind(this)}>
|
|
192
192
|
<div className="one">
|
|
193
193
|
<img className="imgClass" src={img} alt="" />
|
|
194
194
|
<div className="text">
|
|
@@ -197,7 +197,7 @@ export default class foot extends Component {
|
|
|
197
197
|
</div>
|
|
198
198
|
|
|
199
199
|
</div>
|
|
200
|
-
<div className='footHover' onClick={this.inspection.bind(this)}>
|
|
200
|
+
<div className='footHover' style={{ display: (this.props.recordMode == 2) ? 'none' : ''}} onClick={this.inspection.bind(this)}>
|
|
201
201
|
<div className="one">
|
|
202
202
|
<img className="imgClass" src={require("../../assets/img/inspection.png").default} alt="" />
|
|
203
203
|
<div className="text">
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { Checkbox, message } from 'antd';
|
|
3
|
+
import { FormattedMessage, injectIntl } from 'react-intl';
|
|
4
|
+
import './agree.less'
|
|
5
|
+
import Modal from "antd/lib/modal";
|
|
6
|
+
import 'antd/lib/modal/style'
|
|
7
|
+
import { Button } from '../../../../../node_modules/antd/lib/index';
|
|
8
|
+
@injectIntl
|
|
9
|
+
class Agree extends Component {
|
|
10
|
+
state = {
|
|
11
|
+
isModalVisibleEnd: false,
|
|
12
|
+
// item: {
|
|
13
|
+
// "type":"1",
|
|
14
|
+
// "sequence":"2",
|
|
15
|
+
// "subContent":[
|
|
16
|
+
// {
|
|
17
|
+
// "desc":"描述1",
|
|
18
|
+
// "option":false
|
|
19
|
+
// },
|
|
20
|
+
// {
|
|
21
|
+
// "desc":"描述2",
|
|
22
|
+
// "option":false
|
|
23
|
+
// }
|
|
24
|
+
// ]
|
|
25
|
+
// },
|
|
26
|
+
list: []
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
componentDidMount() {
|
|
30
|
+
this.setState({
|
|
31
|
+
list: this.props.item.subContent
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
onChange = (e) => {
|
|
36
|
+
this.state.list[e.target.index].option = e.target.checked;
|
|
37
|
+
this.setState({
|
|
38
|
+
list: this.state.list
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
commit = () => {
|
|
43
|
+
if(!this.state.list.every((item)=> item.option)) {
|
|
44
|
+
message.warning(this.props.intl.formatMessage({id: 'plzCheckAgree'})); // 请先勾选同意
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.props.next({
|
|
48
|
+
...this.props.item,
|
|
49
|
+
subContent: this.state.list
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
exit = () => {
|
|
53
|
+
this.setState({
|
|
54
|
+
isModalVisibleEnd: true
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
handleCancelEnd = () => {
|
|
59
|
+
this.setState({
|
|
60
|
+
isModalVisibleEnd: false
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
handleOkEnd = () => {
|
|
64
|
+
this.setState({
|
|
65
|
+
isModalVisibleEnd: false
|
|
66
|
+
})
|
|
67
|
+
this.props.exit()
|
|
68
|
+
}
|
|
69
|
+
render() {
|
|
70
|
+
const { item } = this.props;
|
|
71
|
+
return (
|
|
72
|
+
<div className="agree">
|
|
73
|
+
<div className="thehead">
|
|
74
|
+
<div className="title">
|
|
75
|
+
<div className="title-color"></div>
|
|
76
|
+
<div className="title-text">{this.props.title}</div>
|
|
77
|
+
</div>
|
|
78
|
+
<div className='thehead'>
|
|
79
|
+
<div className="reset" onClick={this.exit}><FormattedMessage id="exit" /></div>
|
|
80
|
+
<div className="qianshu" onClick={this.commit}><FormattedMessage id="commit" /></div>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
<div className="contents">
|
|
84
|
+
{
|
|
85
|
+
this.state.list.map((obj, index) => {
|
|
86
|
+
return (
|
|
87
|
+
<div key={index} className={`item-panel ${obj.option?'checked':''}`}>
|
|
88
|
+
<div>{obj.desc}</div>
|
|
89
|
+
<div><Checkbox index={index} checked={obj.option} onChange={this.onChange}> <FormattedMessage id="agree" /></Checkbox></div>
|
|
90
|
+
</div>
|
|
91
|
+
)
|
|
92
|
+
})
|
|
93
|
+
}
|
|
94
|
+
</div>
|
|
95
|
+
<Modal transitionName="" maskTransitionName="" getContainer={document.getElementById('multiModule')} destroyOnClose={true} closable={false} centered={true} visible={this.state.isModalVisibleEnd} footer={[<div key='end'>
|
|
96
|
+
<Button className="modelButtonCancel" onClick={this.handleCancelEnd}><FormattedMessage id="cancel" /></Button>
|
|
97
|
+
<Button className="modelButtonOk" type="primary" danger onClick={this.handleOkEnd}><FormattedMessage id="ok" /></Button>
|
|
98
|
+
</div>
|
|
99
|
+
]}>
|
|
100
|
+
<div className='endModal'>
|
|
101
|
+
<div className='modalEndTitle'>
|
|
102
|
+
<FormattedMessage id="whether" />
|
|
103
|
+
</div>
|
|
104
|
+
<div className='modalEnd'>
|
|
105
|
+
<FormattedMessage id="progress" />
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</Modal>
|
|
109
|
+
</div>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export default Agree;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
.agree{
|
|
2
|
+
height: 100%;
|
|
3
|
+
background: #fff;
|
|
4
|
+
padding: 14px 24px;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
.thehead{
|
|
7
|
+
display: flex;
|
|
8
|
+
justify-content: space-between;
|
|
9
|
+
.title{
|
|
10
|
+
display: flex;
|
|
11
|
+
.title-color{
|
|
12
|
+
width: 2px;
|
|
13
|
+
height: 1.5rem;
|
|
14
|
+
background: #00847F;
|
|
15
|
+
margin-top: 0.25rem;
|
|
16
|
+
}
|
|
17
|
+
.title-text{
|
|
18
|
+
font-size: 1.5rem;
|
|
19
|
+
color: #323232;
|
|
20
|
+
margin-left: 8px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
.qianshu{
|
|
25
|
+
width: 96px;
|
|
26
|
+
height: 2rem;
|
|
27
|
+
background: #F9F2F3;
|
|
28
|
+
border-radius: 2px;
|
|
29
|
+
border: 1px solid #E5B2B5;
|
|
30
|
+
font-size: 14px;
|
|
31
|
+
color: #DB0011;
|
|
32
|
+
line-height: 32px;
|
|
33
|
+
text-align: center;
|
|
34
|
+
}
|
|
35
|
+
.reset{
|
|
36
|
+
width: 96px;
|
|
37
|
+
height: 2rem;
|
|
38
|
+
background: white;
|
|
39
|
+
border-radius: 2px;
|
|
40
|
+
border: 1px solid #DCDCDC;
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
color: #646464;
|
|
43
|
+
line-height: 32px;
|
|
44
|
+
text-align: center;
|
|
45
|
+
margin-right: 8px;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.contents{
|
|
50
|
+
display: flex;
|
|
51
|
+
flex-direction: column;
|
|
52
|
+
height: 100%;
|
|
53
|
+
overflow: overlay;
|
|
54
|
+
padding-bottom: 2.5rem;
|
|
55
|
+
.item-panel{
|
|
56
|
+
width: 100%;
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: row;
|
|
59
|
+
flex-wrap: nowrap;
|
|
60
|
+
align-items: center;
|
|
61
|
+
font-size: 16px;
|
|
62
|
+
font-family: PingFangSC-Regular, PingFang SC;
|
|
63
|
+
font-weight: 400;
|
|
64
|
+
color: #666;
|
|
65
|
+
line-height: 24px;
|
|
66
|
+
margin-top: 20px;
|
|
67
|
+
// height: 80px;
|
|
68
|
+
|
|
69
|
+
>div:first-child{
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
background: #F8F8F8;
|
|
73
|
+
border-radius: 8px 0px 0px 8px;
|
|
74
|
+
padding: 20px;
|
|
75
|
+
margin-right: 2px;
|
|
76
|
+
flex: 1;
|
|
77
|
+
height: 100%;
|
|
78
|
+
}
|
|
79
|
+
>div:last-child{
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
background: #F8F8F8;
|
|
84
|
+
border-radius: 0px 8px 8px 0px;
|
|
85
|
+
color: #999 ;
|
|
86
|
+
padding: 14px;
|
|
87
|
+
width: 140px;
|
|
88
|
+
height: 100%;
|
|
89
|
+
}
|
|
90
|
+
&.checked{
|
|
91
|
+
>div:first-child{
|
|
92
|
+
color: #999;
|
|
93
|
+
}
|
|
94
|
+
>div:last-child{
|
|
95
|
+
color: #333;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
.ant-checkbox-checked .ant-checkbox-inner {
|
|
99
|
+
background-color: #DE2228;
|
|
100
|
+
border-color: #DE2228;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
}
|