react_hsbc_teller 2.0.24 → 2.0.25

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.
Files changed (26) hide show
  1. package/lib/hsbc.js +1 -1
  2. package/package.json +1 -1
  3. package/packages/api/api.js +91 -0
  4. package/packages/assets/mp3/ipad_leave_error.mp3 +0 -0
  5. package/packages/assets/mp3/ipad_low_power.mp3 +0 -0
  6. package/packages/demo/demo.js +2 -0
  7. package/packages/pages/foot/foot.jsx +2 -2
  8. package/packages/pages/multiModule/components/copy/agree.jsx +115 -0
  9. package/packages/pages/multiModule/components/copy/agree.less +105 -0
  10. package/packages/pages/multiModule/components/copy/copyTwo.jsx +663 -0
  11. package/packages/pages/multiModule/components/copy/copyTwo.less +180 -0
  12. package/packages/pages/multiModule/components/copy/copy_en.jsx +365 -0
  13. package/packages/pages/multiModule/components/copy/copy_en.less +145 -0
  14. package/packages/pages/multiModule/components/copy/copylist.jsx +291 -0
  15. package/packages/pages/multiModule/components/copy/copylist.less +83 -0
  16. package/packages/pages/multiModule/components/copy/risk.jsx +294 -0
  17. package/packages/pages/multiModule/components/copy/risk.less +123 -0
  18. package/packages/pages/multiModule/components/sign/signMy.jsx +306 -0
  19. package/packages/pages/multiModule/components/sign/signMy.less +128 -0
  20. package/packages/pages/multiModule/components/subscribe/subscribe.jsx +113 -0
  21. package/packages/pages/multiModule/components/subscribe/subscribe.less +82 -0
  22. package/packages/pages/multiModule/multiModule.jsx +26 -0
  23. package/packages/pages/multiModule/multiModule.less +20 -0
  24. package/packages/pages/video/video.jsx +388 -148
  25. package/packages/utils/asrController.js +242 -0
  26. package/packages/utils/recorder.js +289 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react_hsbc_teller",
3
- "version": "2.0.24",
3
+ "version": "2.0.25",
4
4
  "description": "React",
5
5
  "private": false,
6
6
  "main": "lib/hsbc.js",
@@ -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);
@@ -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
+ }