feat: settle in step 2

main
fadeaway 4 months ago
parent 8201e187e1
commit 2ca7c99096

@ -3,6 +3,9 @@
.header {
.center();
padding-left: 20px;
padding-right: 20px;
box-sizing: border-box;
&.light {
background-color: #fff;
@ -56,10 +59,10 @@
}
&.light .avatar .loginText {
color: #000;
color: #1d2129;
}
&.light .avatar:hover .loginText {
color: rgba(0, 0, 0, 0.8);
color: rgba(#1d2129, 0.8);
}
&.dark .avatar .loginText {
color: #fff;

@ -0,0 +1,128 @@
import React, { useState } from 'react';
import {
Typography,
Radio,
Message,
Form,
Input,
Button,
Select,
} from '@arco-design/web-react';
import styles from './style/index.module.less';
const { Title } = Typography;
const FormItem = Form.Item;
function StepArtistInfo() {
const [form] = Form.useForm();
const [agree, setAgree] = useState(false);
return (
<Form
form={form}
className={styles.formWrap}
autoComplete="off"
labelCol={{ flex: '103px' }}
wrapperCol={{ span: 16 }}
onValuesChange={(v, vs) => {
console.log(v, vs);
}}
onSubmit={(v) => {
console.log(v);
}}
>
<FormItem
field="artistName"
rules={[{ required: true, message: '歌手名是必填项' }]}
wrapperCol={{ flex: 1 }}
>
<div className={styles.artistName}>
<div className={styles.hi}>Hi</div>
<Input
className={styles.artistNameInp}
placeholder="请输入您的歌手名"
/>
</div>
</FormItem>
<div className={styles.heightHolder} />
<FormItem
label="艺人头像"
field="avatar"
rules={[{ required: true, message: '艺人头像是必填项' }]}
>
<Input placeholder="please enter your age" />
</FormItem>
<FormItem label="主页背景" field="mainBg">
<Input placeholder="please enter your age" />
</FormItem>
<FormItem
label="后台截图"
field="clipPic"
rules={[{ required: true, message: '后台截图是必填项' }]}
>
<Input placeholder="please enter your age" />
</FormItem>
<FormItem
label="所在地区"
field="clipPic"
rules={[{ required: true, message: '所在地区是必填项' }]}
>
<Select placeholder="please enter your age" />
</FormItem>
<FormItem
label="流派/风格"
field="style"
rules={[{ required: true, message: '流派/风格是必填项' }]}
>
<Select placeholder="please enter your age" />
</FormItem>
<FormItem
label="类型"
field="style2"
rules={[{ required: true, message: '类型是必填项' }]}
>
<Select placeholder="please enter your age" />
</FormItem>
<FormItem
label="艺人简介"
field="artistIntro"
rules={[{ required: true, message: '艺人简介是必填项' }]}
>
<Input placeholder="please enter your age" />
</FormItem>
<FormItem
label="后台登录名"
field="loginName"
rules={[{ required: true, message: '后台登录名是必填项' }]}
>
<Input placeholder="please enter your age" />
</FormItem>
<FormItem
label="登录密码"
field="loginPwd"
rules={[{ required: true, message: '登录密码是必填项' }]}
>
<Input placeholder="please enter your age" />
</FormItem>
<FormItem
wrapperCol={{ offset: 3 }}
field="agree"
rules={[
{ required: true, message: '请先同意《雀乐音乐用户服务协议》' },
]}
>
<Radio>
<span className={styles.policyName}></span>
<span className={styles.policyName}></span>
</Radio>
</FormItem>
<FormItem wrapperCol={{ span: 24 }} className={styles.submitWrap}>
<Button type="primary" htmlType="submit">
</Button>
</FormItem>
</Form>
);
}
export default StepArtistInfo;

@ -0,0 +1,55 @@
.formWrap {
width: 800px;
background-color: #fff;
border-radius: 16px;
padding-top: 39px;
padding-bottom: 38px;
padding-left: 30px;
padding-right: 47px;
margin-bottom: 54px;
.artistName {
width: 100%;
display: flex;
align-items: center;
border-bottom: 1px solid #ededed;
font-family: PingFang SC;
font-size: 24px;
font-weight: 600;
line-height: 20px;
padding: 17px 22px;
box-sizing: border-box;
color: #4e5969;
.hi {
margin-right: 24px;
height: 32px;
line-height: 32px;
}
.artistNameInp {
padding: 0;
border: none;
font-size: 20px;
font-weight: 600;
color: #4e5969;
background-color: transparent;
&:placeholder-shown {
color: #c9cdd4;
font-family: PingFang SC;
font-size: 20px;
font-weight: 400;
}
}
}
.heightHolder {
height: 33px;
}
.submitWrap {
text-align: center;
margin-top: 20px;
}
}

@ -0,0 +1,64 @@
import React, { memo, useState } from 'react';
import { Typography, Button, Radio, Message } from '@arco-design/web-react';
import styles from './style/index.module.less';
interface StepPolicyProps {
onNext: () => void;
}
const { Title } = Typography;
function StepPolicy({ onNext }: StepPolicyProps) {
const [agree, setAgree] = useState(false);
const handleNext = () => {
if (!agree) {
Message.info('请阅读并同意《用户服务协议》');
} else {
onNext?.();
}
};
return (
<>
<article className={styles.policy}>
<Title className={styles.policyTitle} heading={3}>
</Title>
<div className={styles.policyCont}>
使线使
<br />
<br />
<br />
/使
<br />
<br />
使
<br />
1
<br />
2使
<br />
3使
<br />
4使
</div>
</article>
<div className={styles.nextStep}>
<Radio
checked={agree}
onChange={(checked: boolean) => setAgree(checked)}
>
<span className={styles.policyName}></span>
</Radio>
<Button type="primary" onClick={handleNext}>
</Button>
</div>
</>
);
}
export default memo(StepPolicy);

@ -0,0 +1,38 @@
.policy {
width: 800px;
background-color: #fff;
border-radius: 16px;
padding-top: 39px;
padding-bottom: 38px;
.policyTitle {
font-family: PingFang SC;
font-size: 17px;
font-weight: 600;
line-height: 20px;
padding-left: 34px;
flex-shrink: 0;
}
.policyCont {
padding-left: 34px;
padding-right: 68px;
color: #4e5969;
font-family: PingFang SC;
font-size: 12px;
font-weight: 400;
line-height: 20px;
}
}
.nextStep {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 30px;
.policyName {
font-weight: 500;
}
}

@ -1,4 +1,5 @@
import React from 'react';
import React, { useCallback, useState } from 'react';
import { useHistory } from 'react-router-dom';
import {
Layout,
Typography,
@ -6,56 +7,32 @@ import {
Link,
Space,
Radio,
Message,
} from '@arco-design/web-react';
import Header from '@/components/Header';
import Footer from '@/components/Footer';
import StepPolicy from './components/StepPolicy';
import StepArtistInfo from './components/StepArtistInfo';
import styles from './style/index.module.less';
const Content = Layout.Content;
const Footer = Layout.Footer;
const { Title, Paragraph, Text } = Typography;
function SettleIn() {
const history = useHistory();
const [step, setStep] = useState('1');
const handle2Step2 = useCallback(() => setStep('2'), []);
return (
<Layout className={styles.wrap}>
<Header />
<Content className={styles.cont}>
<section className={styles.contBox}>
<Title className={styles.welcome}></Title>
<article className={styles.policy}></article>
<div className={styles.nextStep}>
<Radio></Radio>
<Button type="primary"></Button>
</div>
{step === '1' && <StepPolicy onNext={handle2Step2} />}
{step === '2' && <StepArtistInfo />}
</section>
</Content>
<Footer className={styles.foot}>
<Paragraph>
<Link hoverable={false} href="https://www.indie.cn/" target="_blank">
</Link>
&nbsp;&nbsp;|&nbsp;&nbsp;<Link hoverable={false}></Link>
&nbsp;&nbsp;|&nbsp;&nbsp;
<Link hoverable={false}></Link>
</Paragraph>
<Space>
<Link
hoverable={false}
href="https://beian.miit.gov.cn/#/Integrated/index"
target="_blank"
>
ICP2024190175-1
</Link>
<Link
hoverable={false}
href="https://beian.mps.gov.cn/#/query/webSearch"
target="_blank"
>
44030002002777
</Link>
<Text></Text>
<Text>Shenzhen QueYue Culture Technology Co., Ltd.</Text>
</Space>
</Footer>
<Footer />
</Layout>
);
}

@ -3,49 +3,28 @@
.wrap {
min-height: 100vh;
color: #1d2129;
}
.cont {
.verticalCenter();
background-color: #efefef;
background-color: #f2f3f7;
.contBox {
.verticalCenter();
width: 900px;
display: flex;
flex-direction: column;
width: 800px;
flex: 1;
padding-top: 20px;
padding-bottom: 20px;
padding-top: 33px;
padding-bottom: 40px;
.welcome {
width: 100%;
font-family: Alibaba PuHuiTi 2;
font-size: 24px;
font-weight: 700;
line-height: 33.6px;
margin-bottom: 20px;
}
.policy {
width: 100%;
flex: 1;
background-color: #fff;
border-radius: 16px;
}
.nextStep {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
}
}
.foot {
.verticalCenter();
padding-top: 32px;
padding-bottom: 40px;
background-color: #000;
color: #666;
:global(.arco-typography),
:global(.arco-link) {
color: #666;
}
}

Loading…
Cancel
Save