react_hsbc_teller 0.0.1
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/.babelrc +4 -0
- package/README.en.md +36 -0
- package/README.md +57 -0
- package/config/webpack.config.js +114 -0
- package/config/webpack.dev.js +108 -0
- package/config/webpack.prod.js +113 -0
- package/package.json +94 -0
- package/packages/api/api.js +135 -0
- package/packages/api/server.js +48 -0
- package/packages/assets/img/Face_recognition.png +0 -0
- package/packages/assets/img/Projection_screen.png +0 -0
- package/packages/assets/img/huazhonghua.png +0 -0
- package/packages/assets/img/icon_Graffiti.png +0 -0
- package/packages/assets/img/icon_Mute.png +0 -0
- package/packages/assets/img/icon_MuteOne.png +0 -0
- package/packages/assets/img/icon_camera.png +0 -0
- package/packages/assets/img/icon_cameraOne.png +0 -0
- package/packages/assets/img/icon_copy.png +0 -0
- package/packages/assets/img/icon_invitation.png +0 -0
- package/packages/assets/img/icon_ocr.png +0 -0
- package/packages/assets/img/icon_suspend.png +0 -0
- package/packages/assets/img/sign_out.png +0 -0
- package/packages/assets/img/yingpin.png +0 -0
- package/packages/assets/img/zanTing.png +0 -0
- package/packages/assets/pdf/1.png +0 -0
- package/packages/assets/pdf/2.png +0 -0
- package/packages/assets/pdf/3.png +0 -0
- package/packages/assets/pdf/4.png +0 -0
- package/packages/assets/pdf/5.png +0 -0
- package/packages/assets/pdf/6.png +0 -0
- package/packages/common/JKL.js +61 -0
- package/packages/common/XML.js +271 -0
- package/packages/common/websocket.js +246 -0
- package/packages/demo/demo.js +27 -0
- package/packages/demo/index.js +3 -0
- package/packages/envconfig/envconfig.js +13 -0
- package/packages/index.js +2 -0
- package/packages/pages/foot/foot.jsx +101 -0
- package/packages/pages/foot/foot.less +49 -0
- package/packages/pages/header/header.jsx +25 -0
- package/packages/pages/header/header.less +52 -0
- package/packages/pages/pdf/pdf.jsx +72 -0
- package/packages/pages/pdf/pdf.less +18 -0
- package/packages/pages/video/video.jsx +1317 -0
- package/packages/pages/video/video.less +97 -0
- package/packages/style/index.less +1 -0
- package/packages/style/reset.less +345 -0
- package/packages/utils/asyncComponent.jsx +27 -0
- package/packages/utils/cell.js +64 -0
- package/packages/utils/mixin.js +27 -0
- package/packages/utils/setRem.js +11 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +40 -0
- package/public/snowman.svg +1 -0
- package/script.js +0 -0
- package/src/index.js +10 -0
- package/src/index.less +1 -0
- package/tsconfig.json +11 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
|
|
4
|
+
class Demo extends Component {
|
|
5
|
+
constructor(props) {
|
|
6
|
+
super(props);
|
|
7
|
+
}
|
|
8
|
+
render() {
|
|
9
|
+
return (
|
|
10
|
+
<div>
|
|
11
|
+
演示文件1
|
|
12
|
+
</div>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// 指定 props 的默认值:
|
|
18
|
+
Demo.defaultProps = {
|
|
19
|
+
type: "default",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
Demo.propTypes = {
|
|
23
|
+
type: PropTypes.string,
|
|
24
|
+
onClick: PropTypes.func,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default Demo;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 全局配置文件
|
|
3
|
+
*/
|
|
4
|
+
let baseURL;
|
|
5
|
+
// let imgUrl = '//elm.cangdu.org/img/';
|
|
6
|
+
if(process.env.NODE_ENV === 'development'){
|
|
7
|
+
baseURL = 'http://47.102.126.132:8082/api/leimon-counter-api';
|
|
8
|
+
}else{
|
|
9
|
+
baseURL = 'http://47.102.126.132:8082/api/leimon-counter-api';
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export default {baseURL}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import './foot.less'
|
|
3
|
+
export default class foot extends Component {
|
|
4
|
+
voice = () => {
|
|
5
|
+
this.props.voice()
|
|
6
|
+
}
|
|
7
|
+
cameraClick = () => {
|
|
8
|
+
this.props.cameraClick()
|
|
9
|
+
}
|
|
10
|
+
graffiti=()=>{
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
sharedScreen=()=>{
|
|
14
|
+
this.props.sharedScreen()
|
|
15
|
+
}
|
|
16
|
+
suspend=()=>{
|
|
17
|
+
this.props.suspend()
|
|
18
|
+
}
|
|
19
|
+
endSession=()=>{
|
|
20
|
+
this.props.endSession()
|
|
21
|
+
}
|
|
22
|
+
facialRecognition=()=>{
|
|
23
|
+
this.props.facialRecognition()
|
|
24
|
+
}
|
|
25
|
+
pictureInPicture=()=>{
|
|
26
|
+
this.props.pictureInPicture()
|
|
27
|
+
}
|
|
28
|
+
render() {
|
|
29
|
+
const {img,cameraImg,screenName,suspendName} = this.props
|
|
30
|
+
return (
|
|
31
|
+
<div className="foot">
|
|
32
|
+
<div className="total">
|
|
33
|
+
<div className="one" onClick={this.voice.bind(this)}>
|
|
34
|
+
<img src={img} alt="" />
|
|
35
|
+
{/* <img src={require("../../assets/img/icon_Mute.png")} alt="" /> */}
|
|
36
|
+
<div className="text">
|
|
37
|
+
静音
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div className="one" onClick={this.cameraClick.bind(this)}>
|
|
41
|
+
{/* <img src={require("../../assets/img/icon_camera.png")} alt="" /> */}
|
|
42
|
+
<img src={cameraImg} alt="" />
|
|
43
|
+
<div className="text">
|
|
44
|
+
摄像头
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<div className="total totalTwo">
|
|
49
|
+
<div className="one" onClick={this.graffiti.bind(this)}>
|
|
50
|
+
<img src={require("../../assets/img/icon_copy.png").default} alt="" />
|
|
51
|
+
<div className="text">
|
|
52
|
+
抄录
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
<div className="one" onClick={this.sharedScreen.bind(this)}>
|
|
56
|
+
<img src={require("../../assets/img/Projection_screen.png").default} alt="" />
|
|
57
|
+
<div className="text">
|
|
58
|
+
{screenName}
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
<div className="one" onClick={this.suspend.bind(this)}>
|
|
62
|
+
<img src={require("../../assets/img/icon_suspend.png").default} alt="" />
|
|
63
|
+
<div className="text">
|
|
64
|
+
{suspendName}
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div className="one" onClick={this.facialRecognition.bind(this)}>
|
|
69
|
+
<img src={require("../../assets/img/Face_recognition.png").default} alt="" />
|
|
70
|
+
<div className="text">
|
|
71
|
+
人脸识别
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
<div className="one">
|
|
75
|
+
<img src={require("../../assets/img/icon_invitation.png").default} alt="" />
|
|
76
|
+
<div className="text">
|
|
77
|
+
邀请
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div className="one">
|
|
81
|
+
<img src={require("../../assets/img/icon_ocr.png").default} alt="" />
|
|
82
|
+
<div className="text">
|
|
83
|
+
OCR识别
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
<div className="one" onClick={this.pictureInPicture.bind(this)}>
|
|
87
|
+
<img src={require("../../assets/img/huazhonghua.png").default} alt="" />
|
|
88
|
+
<div className="text">
|
|
89
|
+
画中画
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
<div className="total totalThree">
|
|
94
|
+
<button className="buttonClass" onClick={this.endSession.bind(this)}>
|
|
95
|
+
<span className="spanClass">结束</span>
|
|
96
|
+
</button>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.foot{
|
|
2
|
+
background: #fff;
|
|
3
|
+
height: 44px;
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
width: 100%;
|
|
6
|
+
position: absolute;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
}
|
|
9
|
+
.total{
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
width: 33%;
|
|
12
|
+
|
|
13
|
+
align-items: center;
|
|
14
|
+
.one{
|
|
15
|
+
display: flex;
|
|
16
|
+
height: 32px;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
align-items: center;
|
|
19
|
+
flex-wrap: nowrap;
|
|
20
|
+
}
|
|
21
|
+
.text{
|
|
22
|
+
margin-top: 2px;
|
|
23
|
+
text-align: center;
|
|
24
|
+
width: 50px;
|
|
25
|
+
height: 11px;
|
|
26
|
+
font-size: 8px;
|
|
27
|
+
font-family: PingFangSC-Regular, PingFang SC;
|
|
28
|
+
font-weight: 400;
|
|
29
|
+
color: #666666;
|
|
30
|
+
line-height: 11px;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
.totalTwo{
|
|
34
|
+
justify-content: center;
|
|
35
|
+
}
|
|
36
|
+
.totalThree{
|
|
37
|
+
justify-content: flex-end;
|
|
38
|
+
}
|
|
39
|
+
.buttonClass{
|
|
40
|
+
width: 103px;
|
|
41
|
+
height: 36px;
|
|
42
|
+
background: #DB0011;
|
|
43
|
+
border-radius: 4px;
|
|
44
|
+
border: 1px #DB0011 solid;
|
|
45
|
+
}
|
|
46
|
+
.spanClass{
|
|
47
|
+
font-size: 16px;
|
|
48
|
+
color: #FFFFFF;
|
|
49
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import './header.less'
|
|
3
|
+
export default class header extends Component {
|
|
4
|
+
goOut=()=>{
|
|
5
|
+
|
|
6
|
+
}
|
|
7
|
+
render(){
|
|
8
|
+
return(
|
|
9
|
+
<div className="Hamburger">
|
|
10
|
+
<div className="left-header">
|
|
11
|
+
<div className="title">汇丰银行营业厅</div>
|
|
12
|
+
</div>
|
|
13
|
+
<div className="right-header">
|
|
14
|
+
{/* <div className="one" onClick={this.goOut.bind(this)}>
|
|
15
|
+
<img alt="" src={require("../../assets/img/sign_out.png")}></img>
|
|
16
|
+
<div className="text">
|
|
17
|
+
退出
|
|
18
|
+
</div>
|
|
19
|
+
</div> */}
|
|
20
|
+
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
.Hamburger {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 32px;
|
|
4
|
+
background: #FFFFFF;
|
|
5
|
+
box-shadow: 0px -1px 4px 0px #E6F0FF;
|
|
6
|
+
border-radius: 0px 0px 4px 4px;
|
|
7
|
+
display: flex;
|
|
8
|
+
justify-content: space-between;
|
|
9
|
+
align-items: center;
|
|
10
|
+
color: #185e75;
|
|
11
|
+
.left-header {
|
|
12
|
+
width: 100%;
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
.title{
|
|
15
|
+
margin-left: 20px;
|
|
16
|
+
font-size: 12px;
|
|
17
|
+
font-family: PingFangSC-Regular, PingFang SC;
|
|
18
|
+
font-weight: 400;
|
|
19
|
+
color: #666666;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
.right-header {
|
|
23
|
+
height: 32px;
|
|
24
|
+
margin-right:3px;
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
text-align: end;
|
|
27
|
+
.one{
|
|
28
|
+
display: flex;
|
|
29
|
+
height: 32px;
|
|
30
|
+
flex-direction: column;
|
|
31
|
+
align-items: center;
|
|
32
|
+
flex-wrap: nowrap;
|
|
33
|
+
-webkit-app-region: no-drag;
|
|
34
|
+
}
|
|
35
|
+
.text{
|
|
36
|
+
margin-top: 2px;
|
|
37
|
+
text-align: center;
|
|
38
|
+
width: 32px;
|
|
39
|
+
height: 11px;
|
|
40
|
+
font-size: 8px;
|
|
41
|
+
font-family: PingFangSC-Regular, PingFang SC;
|
|
42
|
+
font-weight: 400;
|
|
43
|
+
color: #666666;
|
|
44
|
+
line-height: 11px;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
img {
|
|
49
|
+
pointer-events: none;
|
|
50
|
+
width: 17px;
|
|
51
|
+
margin-top: 2px;
|
|
52
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import './pdf.less'
|
|
3
|
+
import imgUrl1 from '../../assets/pdf/1.png'
|
|
4
|
+
import imgUrl2 from '../../assets/pdf/2.png'
|
|
5
|
+
import imgUrl3 from '../../assets/pdf/3.png'
|
|
6
|
+
import imgUrl4 from '../../assets/pdf/4.png'
|
|
7
|
+
import imgUrl5 from '../../assets/pdf/5.png'
|
|
8
|
+
import imgUrl6 from '../../assets/pdf/6.png'
|
|
9
|
+
// import { Document, Page, pdfjs } from 'react-pdf'
|
|
10
|
+
export default class pdf extends Component {
|
|
11
|
+
state = {
|
|
12
|
+
imgUrlIndex: 0,
|
|
13
|
+
imgUrlList:[
|
|
14
|
+
{
|
|
15
|
+
url: imgUrl1
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
url: imgUrl2
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
url: imgUrl3
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
url: imgUrl4
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
url: imgUrl5
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
url: imgUrl6
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
imgUrl: ''
|
|
34
|
+
}
|
|
35
|
+
pdfNext =()=> {
|
|
36
|
+
if(this.state.imgUrlIndex == 5){
|
|
37
|
+
this.setState({
|
|
38
|
+
imgUrl: this.state.imgUrlList[0].url
|
|
39
|
+
})
|
|
40
|
+
this.setState({
|
|
41
|
+
imgUrlIndex: 0
|
|
42
|
+
})
|
|
43
|
+
} else {
|
|
44
|
+
this.setState({
|
|
45
|
+
imgUrlIndex: this.state.imgUrlIndex + 1
|
|
46
|
+
})
|
|
47
|
+
this.setState({
|
|
48
|
+
imgUrl: this.state.imgUrlList[this.state.imgUrlIndex].url
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
componentWillMount(){
|
|
54
|
+
this.setState({
|
|
55
|
+
imgUrl: this.state.imgUrlList[0].url
|
|
56
|
+
})
|
|
57
|
+
this.setState({
|
|
58
|
+
imgUrlIndex: 0
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
render() {
|
|
62
|
+
return (
|
|
63
|
+
<div className="test">
|
|
64
|
+
<img className="imgClass" src={this.state.imgUrl} alt=""></img>
|
|
65
|
+
<div><img className="imgClass" src={this.state.imgUrl} alt=""></img></div>
|
|
66
|
+
<div className="pdfNext" onClick={this.pdfNext.bind(this)}>下一页
|
|
67
|
+
{/* <div onClick={this.pdfNo.bind(this)}>下一页</div> */}
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.imgClass{
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 100%;
|
|
4
|
+
|
|
5
|
+
}
|
|
6
|
+
.pdfNext{
|
|
7
|
+
position: absolute;
|
|
8
|
+
top: 72px;
|
|
9
|
+
border: 0;
|
|
10
|
+
z-index: 2;
|
|
11
|
+
color: #666;
|
|
12
|
+
border: 1px#d9363e solid;
|
|
13
|
+
height: 30px;
|
|
14
|
+
line-height: 30px;
|
|
15
|
+
}
|
|
16
|
+
.test{
|
|
17
|
+
overflow: auto;
|
|
18
|
+
}
|