parent
72c4fa2c77
commit
6c9b39f5c7
After Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,51 @@
|
||||
import React from 'react';
|
||||
import { Image, Space, Button } from '@arco-design/web-react';
|
||||
import {
|
||||
IconHeart,
|
||||
IconThumbUp,
|
||||
IconMessage,
|
||||
} from '@arco-design/web-react/icon';
|
||||
|
||||
import styles from './style/index.module.less';
|
||||
|
||||
export interface AlbumItemProps {
|
||||
data: any;
|
||||
}
|
||||
|
||||
function AlbumItem(props?: AlbumItemProps) {
|
||||
const { data } = props || {};
|
||||
|
||||
return (
|
||||
<div className={styles.wrap}>
|
||||
<div className={styles.contWrap}>
|
||||
<Image className={styles.img} src={data?.pic} alt="专辑封面" />
|
||||
<h5 className={styles.name}>{data.name}</h5>
|
||||
<p className={styles.desc}>{data.desc}</p>
|
||||
<p className={styles.income}>
|
||||
收益 <span className={styles.incomeMoney}>¥{data.income}</span>
|
||||
</p>
|
||||
<div className={styles.other}>
|
||||
<Space className={styles.otherItem} size={3}>
|
||||
<IconHeart />
|
||||
<span>{data.collection}</span>
|
||||
</Space>
|
||||
<Space className={styles.otherItem} size={3}>
|
||||
<IconThumbUp />
|
||||
<span>{data.like}</span>
|
||||
</Space>
|
||||
<Space className={styles.otherItem} size={3}>
|
||||
<IconMessage />
|
||||
<span>{data.comment}</span>
|
||||
</Space>
|
||||
</div>
|
||||
</div>
|
||||
<Space className={styles.status}>
|
||||
<Button type="text" size="small">
|
||||
下架
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AlbumItem;
|
@ -0,0 +1,108 @@
|
||||
.wrap {
|
||||
width: 175px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
border-radius: 2px;
|
||||
|
||||
&:hover .contWrap {
|
||||
border-color: #165dff;
|
||||
}
|
||||
}
|
||||
|
||||
.contWrap {
|
||||
width: 100%;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #f7f8fa;
|
||||
transition: border-color 0.3s;
|
||||
border: 1px solid #f7f8fa;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.img {
|
||||
width: 145px;
|
||||
height: 145px;
|
||||
}
|
||||
|
||||
.name {
|
||||
width: 100%;
|
||||
font-family: PingFang SC;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
line-height: 19.6px;
|
||||
text-align: left;
|
||||
color: #1d2129;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.desc {
|
||||
width: 100%;
|
||||
font-family: PingFang SC;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
line-height: 16.8px;
|
||||
text-align: left;
|
||||
color: #4e5969;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.income {
|
||||
width: 100%;
|
||||
font-family: PingFang SC;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
line-height: 16.8px;
|
||||
text-align: left;
|
||||
color: #86909c;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 0;
|
||||
|
||||
.incomeMoney {
|
||||
font-family: PingFang SC;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
line-height: 16.8px;
|
||||
text-align: left;
|
||||
color: #1d2129;
|
||||
}
|
||||
}
|
||||
|
||||
.other {
|
||||
width: 100%;
|
||||
color: #86909c;
|
||||
font-size: 12px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.otherItem {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.status {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
// padding-left: 15px;
|
||||
// padding-right: 15px;
|
||||
text-align: left;
|
||||
margin-top: 9px;
|
||||
|
||||
:global(.arco-btn) {
|
||||
font-family: PingFang SC;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #4e5969;
|
||||
}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
import React, { useMemo, useState } from 'react';
|
||||
import { Breadcrumb, Steps } from '@arco-design/web-react';
|
||||
import Step1 from './step1';
|
||||
import Step2 from './step2';
|
||||
import Step3, { AgreeStep3 } from './step3';
|
||||
|
||||
import styles from './style/index.module.less';
|
||||
|
||||
const Step = Steps.Step;
|
||||
const AllSteps = [
|
||||
{ title: '专辑信息', desc: '请填写专辑基本信息' },
|
||||
{ title: '上传歌曲', desc: '上传歌曲并填写信息' },
|
||||
{ title: '签约授权', desc: '对专辑进行签约授权' },
|
||||
];
|
||||
|
||||
function CreateAlbum() {
|
||||
const [curStep, setCurStep] = useState(1);
|
||||
const steps = useMemo(() => AllSteps.slice(0, curStep), [curStep]);
|
||||
|
||||
const handleStep1Next = (step1Values) => {
|
||||
console.log(step1Values);
|
||||
setCurStep(2);
|
||||
};
|
||||
|
||||
const handleStep2Pre = () => {
|
||||
setCurStep(1);
|
||||
};
|
||||
|
||||
const handleStep2Next = () => {
|
||||
setCurStep(3);
|
||||
};
|
||||
|
||||
const handleStep3Next = () => {
|
||||
// TOOD:
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={styles.warp}>
|
||||
<Breadcrumb className={styles.breadcrumbWrap}>
|
||||
{steps.map((node, index) => (
|
||||
<Breadcrumb.Item key={index}>{node.title}</Breadcrumb.Item>
|
||||
))}
|
||||
</Breadcrumb>
|
||||
<section className={styles.contWrap}>
|
||||
<Steps
|
||||
className={styles.stepsWrap}
|
||||
current={curStep}
|
||||
style={{ maxWidth: 780, marginBottom: 40 }}
|
||||
>
|
||||
{AllSteps.map(({ title, desc }) => (
|
||||
<Step title={title} description={desc} key={title} />
|
||||
))}
|
||||
</Steps>
|
||||
{curStep === 1 && <Step1 onNext={handleStep1Next} />}
|
||||
{curStep === 2 && (
|
||||
<Step2 onPre={handleStep2Pre} onNext={handleStep2Next} />
|
||||
)}
|
||||
{curStep === 3 && <Step3 />}
|
||||
</section>
|
||||
{curStep === 3 && <AgreeStep3 onNext={handleStep3Next} />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default CreateAlbum;
|
@ -0,0 +1,41 @@
|
||||
.warp {
|
||||
width: 800px;
|
||||
min-height: 100%;
|
||||
margin: auto;
|
||||
padding-top: 40px;
|
||||
padding-bottom: 67px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.breadcrumbWrap {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.contWrap {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 16px;
|
||||
padding: 50px 40px 80px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.stepsWrap {
|
||||
:global(.arco-steps-item) {
|
||||
width: 232px;
|
||||
}
|
||||
}
|
||||
|
||||
.submitWrap {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
}
|
@ -0,0 +1 @@
|
||||
|
@ -0,0 +1,20 @@
|
||||
.uploadArea {
|
||||
width: 494px;
|
||||
height: 224px;
|
||||
margin: auto;
|
||||
|
||||
:global(.arco-upload-trigger),
|
||||
:global(.arco-upload-trigger .arco-upload-trigger-drag) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.uploadAreaTip {
|
||||
width: 462px;
|
||||
white-space: pre-wrap;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
.title {
|
||||
font-family: PingFang SC;
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
color: #1d2129;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.contTitle {
|
||||
font-family: PingFang SC;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.article {
|
||||
font-family: PingFang SC;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
color: #4e5969;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.agreeWrap {
|
||||
margin-top: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
Loading…
Reference in new issue