张涛 před 1 rokem
rodič
revize
35b38cfbe5

+ 44
- 0
src/components/QCarousel/index.jsx Zobrazit soubor

@@ -0,0 +1,44 @@
1
+import React, { useEffect } from "react";
2
+import { Carousel } from 'antd';
3
+import "./style.less";
4
+
5
+export default (props) => {
6
+  const list = [
7
+    {
8
+      id: '1', url: 'https://qbitnetwork.com/_nuxt/img/001.cf2fdf6.png', title: '量子虚拟卡,一卡畅享全球支付体验',
9
+      text1: '高效覆盖VISA和Mastercard线上线下国际支付场景', text2: '卡段丰富,批量开卡无限制,支付成功率与稳定性高,满足多样支付需求'
10
+    },
11
+    {
12
+      id: '2', url: 'https://qbitnetwork.com/_nuxt/img/002.663300e.png', title: '全球收款,本地化收款优化全球资金链路',
13
+      text1: '更低费率,0元线上开户,入金封顶千三,结汇无限额', text2: '全球覆盖,支持40+主流货币,覆盖180+国家/地区'
14
+    },
15
+    {
16
+      id: '3', url: 'https://qbitnetwork.com/_nuxt/img/003.5d6dea0.png', title: '国际付款,强大支付网络优化付款链路',
17
+      text1: '与全球支付网络无缝直连,实现高效、低成本国际付款', text2: '可通过网页客户端批量向收款人支付,或通过API实现全方位支付自动化'
18
+    },
19
+    {
20
+      id: '4', url: 'https://qbitnetwork.com/_nuxt/img/004.f8be4da.png', title: '奇点融,减少账期压力提升经营效益',
21
+      text1: '纯线上申请流程,快至24小时内完成风控,48小时放款', text2: '纯信用贷款一次授信、循环使用,流程操作简单,省心省事'
22
+    }
23
+  ]
24
+  return (
25
+    <Carousel autoplay style={{ height: '40vw' }}>
26
+      {
27
+        list?.map((item) => {
28
+          return (
29
+            <div key={item?.id}>
30
+              <img src={item?.url} className="qlogin-carousel-img" />
31
+              <div className="qlogin-carousel-title">{item?.title}</div>
32
+              <div className="qlogin-carousel-text">
33
+                {item?.text1}
34
+              </div>
35
+              <div className="qlogin-carousel-text">
36
+                {item?.text2}
37
+              </div>
38
+            </div>
39
+          )
40
+        })
41
+      }
42
+    </Carousel>
43
+  )
44
+}

+ 15
- 0
src/components/QCarousel/style.less Zobrazit soubor

@@ -0,0 +1,15 @@
1
+.qlogin-carousel-img {
2
+  width: 38vw;
3
+  margin: auto;
4
+}
5
+.qlogin-carousel-title {
6
+  font-size: 18px;
7
+  font-weight: 600;
8
+  text-align: center;
9
+  padding-bottom: 1em;
10
+}
11
+.qlogin-carousel-text {
12
+  width: 20vw;
13
+  text-align: center;
14
+  margin: auto;
15
+}

+ 66
- 0
src/pages/qLogin/QLogin.jsx Zobrazit soubor

@@ -0,0 +1,66 @@
1
+import React, { useEffect } from "react";
2
+import { useNavigate } from "react-router-dom";
3
+import { Button, Form, Input, Radio, Select, Row, Col } from "antd";
4
+import "./style.less";
5
+
6
+export default (props) => {
7
+  const navigate = useNavigate();
8
+
9
+  const [form] = Form.useForm();
10
+  const onFinish = () => {
11
+
12
+  }
13
+
14
+  return (
15
+    <div className="qlogin-right-box">
16
+      <div className="qlogin-right-title">登录你的Qbit账户</div>
17
+      <Form
18
+        form={form}
19
+        layout="vertical"
20
+        size="large"
21
+        onFinish={onFinish}
22
+      >
23
+        <Form.Item
24
+          label="手机号"
25
+          name="loginName"
26
+          rules={[{ required: true }]}
27
+        >
28
+          <Input.Group>
29
+            <Row>
30
+              <Col span={8}>
31
+                <Select defaultValue="+86">
32
+                  <Option value="+86" style={{ backgroundColor: '#f5f5f5' }}>+86</Option>
33
+                  <Option value="+852" style={{ backgroundColor: '#f5f5f5' }}>+852</Option>
34
+                </Select>
35
+              </Col>
36
+              <Col span={16}><Input placeholder="请输入手机号" /></Col>
37
+            </Row>
38
+          </Input.Group>
39
+        </Form.Item>
40
+        <Form.Item
41
+          label="密 码"
42
+          name="password"
43
+          rules={[{ required: true }]}
44
+        >
45
+          <Input.Password
46
+            placeholder="请输入密码"
47
+            style={{ borderRadius: "4px" }}
48
+          />
49
+        </Form.Item>
50
+        <Form.Item>
51
+          <Button
52
+            type="primary"
53
+            size="large"
54
+            style={{ width: "100%", marginTop: "24px", borderRadius: "4px", height: '3em' }}
55
+            htmlType="submit"
56
+          >
57
+            登录
58
+          </Button>
59
+        </Form.Item>
60
+      </Form>
61
+      <div style={{ display: 'flex', alignItems: 'center' }}>
62
+        <div>还没有Qbit账户?</div><Button type="link" onClick={() => navigate('/qRegister')}>立即注册</Button>
63
+      </div>
64
+    </div>
65
+  )
66
+}

+ 18
- 0
src/pages/qLogin/index.jsx Zobrazit soubor

@@ -0,0 +1,18 @@
1
+import React, { useEffect } from "react";
2
+import QLogin from "./QLogin";
3
+import QCarousel from "@/components/QCarousel";
4
+import "./style.less";
5
+
6
+export default (props) => {
7
+
8
+  return (
9
+    <div className="qlogin">
10
+      <div className="qlogin-left">
11
+        <QCarousel />
12
+      </div>
13
+      <div style={{ flex: 1 }}>
14
+        <QLogin />
15
+      </div>
16
+    </div>
17
+  )
18
+}

+ 25
- 0
src/pages/qLogin/style.less Zobrazit soubor

@@ -0,0 +1,25 @@
1
+.qlogin {
2
+  display: flex;
3
+  align-items: stretch;
4
+  height: 100%;
5
+  .qlogin-left {
6
+    width: 46%;
7
+    flex: 1;
8
+    display: flex;
9
+    flex-direction: column;
10
+    justify-content: center;
11
+    background-image: url(https://qbitnetwork.com/_nuxt/img/000.b39e58b.svg);
12
+    background-repeat: no-repeat;
13
+    background-color: #f7fafa;
14
+  }
15
+}
16
+.qlogin-right-box {
17
+  width: 400px;
18
+  padding-left: 90px;
19
+  padding-top: 70px;
20
+  .qlogin-right-title {
21
+    font-weight: 600;
22
+    font-size: 30px;
23
+    margin-bottom: 40px;
24
+  }
25
+}

+ 114
- 0
src/pages/qRegister/QRegister.jsx Zobrazit soubor

@@ -0,0 +1,114 @@
1
+import React, { useEffect } from "react";
2
+import { useNavigate } from "react-router-dom";
3
+import { Button, Form, Input, Radio, Select, Row, Col, Checkbox } from "antd";
4
+import "./style.less";
5
+
6
+export default (props) => {
7
+  const navigate = useNavigate();
8
+
9
+  const { Search } = Input;
10
+  const [form] = Form.useForm();
11
+  const onFinish = () => {
12
+
13
+  }
14
+
15
+  return (
16
+    <div className="qregister-right-box">
17
+      <div className="qregister-right-title">开通Qbit账户</div>
18
+      <div style={{ display: 'flex', alignItems: 'center', marginBottom: '40px' }}>
19
+        <div>已有账户?</div><Button type="link" onClick={() => navigate('/qLogin')}>去登陆</Button>
20
+      </div>
21
+      <Form
22
+        form={form}
23
+        layout="vertical"
24
+        size="large"
25
+        onFinish={onFinish}
26
+      >
27
+        <Form.Item
28
+          label="手机号"
29
+          name="loginName"
30
+          rules={[{ required: true }]}
31
+        >
32
+          <Input.Group>
33
+            <Row>
34
+              <Col span={8}>
35
+                <Select defaultValue="+86">
36
+                  <Option value="+86" style={{ backgroundColor: '#f5f5f5' }}>+86</Option>
37
+                  <Option value="+852" style={{ backgroundColor: '#f5f5f5' }}>+852</Option>
38
+                </Select>
39
+              </Col>
40
+              <Col span={16}><Input placeholder="请输入手机号" /></Col>
41
+            </Row>
42
+          </Input.Group>
43
+        </Form.Item>
44
+
45
+        <Form.Item
46
+          label="验证码"
47
+          name="loginName"
48
+          rules={[{ required: true }]}
49
+        >
50
+          <Input.Group>
51
+            <Row>
52
+              <Col span={15}>
53
+                <Input placeholder="请输入手机验证码" />
54
+              </Col>
55
+              <Col span={9}><Button type="primary">获取验证码</Button></Col>
56
+            </Row>
57
+          </Input.Group>
58
+        </Form.Item>
59
+        <Form.Item
60
+          label="设置密码"
61
+          name="password"
62
+          rules={[{ required: true }]}
63
+        >
64
+          <Input.Password
65
+            placeholder="请设置密码"
66
+            style={{ borderRadius: "4px" }}
67
+          />
68
+        </Form.Item>
69
+        <Form.Item
70
+          label="确认密码"
71
+          name="password"
72
+          rules={[{ required: true }]}
73
+        >
74
+          <Input.Password
75
+            placeholder="请再次输入密码"
76
+            style={{ borderRadius: "4px" }}
77
+          />
78
+        </Form.Item>
79
+        <Form.Item
80
+          label="微信号(选填)"
81
+          name="loginName"
82
+        >
83
+          <Input placeholder="请输入微信号/手机号" style={{ borderRadius: "4px" }} />
84
+        </Form.Item>
85
+        <Form.Item
86
+          label="邀请码(选填)"
87
+          name="loginName"
88
+        >
89
+          <Input placeholder="若有,请输入邀请码" style={{ borderRadius: "4px" }} />
90
+        </Form.Item>
91
+        <Checkbox>
92
+          <div>
93
+            <span>我已阅读并同意</span>
94
+            <a>Qbit General Terms and Conditions</a>和
95
+            <a>Privacy Policies</a>
96
+            {/*<Button type="link">Qbit General Terms and Conditions</Button>
97
+            和<Button type="link">Privacy Policies</Button> */}
98
+          </div>
99
+
100
+        </Checkbox>
101
+        <Form.Item>
102
+          <Button
103
+            type="primary"
104
+            size="large"
105
+            style={{ width: "100%", marginTop: "24px", borderRadius: "4px", height: '3em' }}
106
+            htmlType="submit"
107
+          >
108
+            确认开通
109
+          </Button>
110
+        </Form.Item>
111
+      </Form>
112
+    </div>
113
+  )
114
+}

+ 17
- 0
src/pages/qRegister/index.jsx Zobrazit soubor

@@ -0,0 +1,17 @@
1
+import React, { useEffect } from "react";
2
+import QRegister from "./QRegister";
3
+import QCarousel from "@/components/QCarousel";
4
+import "./style.less";
5
+
6
+export default (props) => {
7
+  return (
8
+    <div className="qregister">
9
+      <div className="qregister-left">
10
+        <QCarousel />
11
+      </div>
12
+      <div style={{ flex: 1 }}>
13
+        <QRegister />
14
+      </div>
15
+    </div>
16
+  )
17
+}

+ 24
- 0
src/pages/qRegister/style.less Zobrazit soubor

@@ -0,0 +1,24 @@
1
+.qregister-right-box {
2
+  width: 400px;
3
+  padding-left: 90px;
4
+  padding-top: 70px;
5
+  .qregister-right-title {
6
+    font-weight: 600;
7
+    font-size: 30px;
8
+  }
9
+}
10
+.qregister {
11
+  display: flex;
12
+  align-items: stretch;
13
+  .qregister-left {
14
+    width: 46%;
15
+    flex: 1;
16
+    display: flex;
17
+    flex-direction: column;
18
+    justify-content: center;
19
+    background-image: url(https://qbitnetwork.com/_nuxt/img/000.b39e58b.svg);
20
+    background-repeat: no-repeat;
21
+    background-color: #f7fafa;
22
+    min-height: 100vh;
23
+  }
24
+}

+ 14
- 0
src/routes/routes.jsx Zobrazit soubor

@@ -16,6 +16,10 @@ import EcologicalPartner from "@/pages/ecologicalpartner";
16 16
 import AccountSettings from "@/pages/accountsettings";
17 17
 import FirstPage from "@/pages/firstPage/index";
18 18
 
19
+
20
+import QLogin from '@/pages/qLogin/index';
21
+import QRegister from '@/pages/qRegister/index';
22
+
19 23
 /**
20 24
  * meta 用来扩展自定义数据数据
21 25
  * {
@@ -118,6 +122,16 @@ export const defaultRoutes = [
118 122
     path: "/firstPage",
119 123
     element: <FirstPage />,
120 124
   },
125
+  // q登录页
126
+  {
127
+    path: "/qLogin",
128
+    element: <QLogin />,
129
+  },
130
+  // q注册页
131
+  {
132
+    path: "/qRegister",
133
+    element: <QRegister />,
134
+  },
121 135
   {
122 136
     path: "/login",
123 137
     element: <Login />,

+ 1856
- 1856
yarn.lock
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor