diff --git a/next.config.mjs b/next.config.mjs
index 65f0e04..7e252f7 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -6,10 +6,22 @@ const nextConfig = {
source: '/queyueapi/:path*',
destination: `${process.env.NEXT_PUBLIC_HOST}/:path*`,
},
+ {
+ source: '/luoo-music/:path*',
+ destination: 'http://39.103.180.196:9012/luoo-music/:path*',
+ },
+ {
+ source: '/user/artist/:path*',
+ destination: 'http://39.103.180.196:9012/user/artist/:path*',
+ },
{
source: '/',
destination: '/music/all',
},
+ {
+ source: '/artists-settle-in',
+ destination: '/artists-settle-in/home',
+ },
];
},
reactStrictMode: false,
diff --git a/package-lock.json b/package-lock.json
index 405cf2c..1f0509f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10294,6 +10294,126 @@
"optional": true
}
}
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.3.tgz",
+ "integrity": "sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.3.tgz",
+ "integrity": "sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.3.tgz",
+ "integrity": "sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.3.tgz",
+ "integrity": "sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.3.tgz",
+ "integrity": "sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.3.tgz",
+ "integrity": "sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.3.tgz",
+ "integrity": "sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.3.tgz",
+ "integrity": "sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
}
}
}
diff --git a/public/img/artists-settle-in/avatar.png b/public/img/artists-settle-in/avatar.png
new file mode 100644
index 0000000..28fd0e0
Binary files /dev/null and b/public/img/artists-settle-in/avatar.png differ
diff --git a/public/img/artists-settle-in/home_bg.jpg b/public/img/artists-settle-in/home_bg.jpg
new file mode 100644
index 0000000..b598e44
Binary files /dev/null and b/public/img/artists-settle-in/home_bg.jpg differ
diff --git a/public/img/artists-settle-in/logo.svg b/public/img/artists-settle-in/logo.svg
new file mode 100644
index 0000000..05ef706
--- /dev/null
+++ b/public/img/artists-settle-in/logo.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/img/artists-settle-in/logo_black.svg b/public/img/artists-settle-in/logo_black.svg
new file mode 100644
index 0000000..076fa22
--- /dev/null
+++ b/public/img/artists-settle-in/logo_black.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/img/artists-settle-in/upload_default_pic.png b/public/img/artists-settle-in/upload_default_pic.png
new file mode 100644
index 0000000..f8e83cf
Binary files /dev/null and b/public/img/artists-settle-in/upload_default_pic.png differ
diff --git a/src/app/(artists-settle-in)/artists-settle-in/home/home.module.css b/src/app/(artists-settle-in)/artists-settle-in/home/home.module.css
new file mode 100644
index 0000000..4336d92
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/home/home.module.css
@@ -0,0 +1,54 @@
+.wrap {
+ min-height: 100vh;
+ background-color: #000;
+ background-image: url(/img/artists-settle-in/home_bg.jpg);
+ background-position: center;
+ background-size: auto 100%;
+ background-repeat: no-repeat;
+}
+
+.wrap .cont {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+}
+
+.wrap .cont .contBox {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ margin-top: -78px;
+}
+
+.wrap .cont .contBox .sloganTitle {
+ height: 28px;
+ line-height: 28px;
+ font-size: 20px;
+ margin-bottom: 8px;
+ color: #fff;
+ font-weight: 400;
+}
+
+.wrap .cont .contBox .slogan {
+ height: 67.2px;
+ line-height: 67.2px;
+ font-family: PingFang SC;
+ font-weight: 600;
+ font-size: 48px;
+ margin-top: 8px;
+ margin-bottom: 38px;
+ color: #fff;
+}
+
+.wrap .cont .contBox .btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 222px;
+ height: 59px;
+ border-radius: 38px;
+ font-weight: 500;
+ font-size: 18px;
+}
diff --git a/src/app/(artists-settle-in)/artists-settle-in/home/page.tsx b/src/app/(artists-settle-in)/artists-settle-in/home/page.tsx
new file mode 100644
index 0000000..c6a3726
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/home/page.tsx
@@ -0,0 +1,38 @@
+'use client';
+
+import React from 'react';
+
+import { Layout, Typography, Button } from '@arco-design/web-react';
+import { useRouter } from 'next/navigation';
+
+import Header from '@/components/ArtistsSettleIn/Header';
+
+import styles from './home.module.css';
+
+const Content = Layout.Content;
+const { Title, Paragraph } = Typography;
+
+function Home() {
+ const router = useRouter();
+
+ const handleClick = () => {
+ router.push('/artists-settle-in/sign-up');
+ };
+
+ return (
+
+
+
+
+ 雀乐音乐人
+ 一起 记录独立音乐
+
+
+
+
+ );
+}
+
+export default Home;
diff --git a/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepArtistInfo/index.module.css b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepArtistInfo/index.module.css
new file mode 100644
index 0000000..28d764f
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepArtistInfo/index.module.css
@@ -0,0 +1,16 @@
+.formWrap {
+ width: 800px;
+ background-color: #fff;
+ border-radius: 16px;
+ padding-top: 39px;
+ padding-bottom: 38px;
+ padding-left: 30px;
+ padding-right: 47px;
+ margin-bottom: 54px;
+ box-sizing: border-box;
+}
+
+.formWrap .submitWrap {
+ text-align: center;
+ margin-top: 20px;
+}
diff --git a/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepArtistInfo/index.tsx b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepArtistInfo/index.tsx
new file mode 100644
index 0000000..a1e580a
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepArtistInfo/index.tsx
@@ -0,0 +1,112 @@
+'use client';
+
+import { Radio, Message, Form, Button } from '@arco-design/web-react';
+
+import {
+ FormArtistName,
+ FormArtistAvatar,
+ FormHomepageBackground,
+ FormBackendScreenshot,
+ FormAddress,
+ FormStyle,
+ FormType,
+ FormDescription,
+ FormUserName,
+ FormPassword,
+} from '@/components/ArtistsSettleIn/FormArtistInfo';
+
+import styles from './index.module.css';
+
+import { apiArtistsSignUp } from '@/services';
+
+const { useForm, useWatch, Item: FormItem } = Form;
+
+function StepArtistInfo() {
+ const [form] = useForm();
+ const agree = useWatch('agree', form);
+
+ const handleSubmit = () => {
+ form
+ .validate()
+ .then(async (values) => {
+ if (!agree) {
+ Message.warning('请阅读并同意《雀乐音乐用户服务协议》');
+ return;
+ }
+ const { address, avatar, backgroundImage, description, nickName, password, screenshot, style, type, userName } =
+ values;
+
+ const oParam = {
+ address,
+ avatar: avatar?.[0]?.response?.data?.fullUrl,
+ backgroundImage: backgroundImage?.[0]?.response?.data?.fullUrl,
+ // bandUserId: '',
+ description,
+ nickName,
+ password,
+ screenshot: screenshot?.[0]?.response?.data?.fullUrl,
+ style,
+ type,
+ userName,
+ };
+
+ const res = await apiArtistsSignUp(oParam);
+ if (res.code === 200) {
+ // setTotal(res.data.total);
+ // setsongList(res.data.rows);
+ Message.success('申请成功');
+ }
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+ };
+
+ return (
+
+ );
+}
+
+export default StepArtistInfo;
diff --git a/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepPolicy/index.module.css b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepPolicy/index.module.css
new file mode 100644
index 0000000..67ce8d7
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepPolicy/index.module.css
@@ -0,0 +1,39 @@
+.policy {
+ width: 800px;
+ background-color: #fff;
+ border-radius: 16px;
+ padding-top: 39px;
+ padding-bottom: 38px;
+ box-sizing: border-box;
+}
+
+.policy .policyTitle {
+ font-family: PingFang SC;
+ font-size: 17px;
+ font-weight: 600;
+ line-height: 20px;
+ padding-left: 34px;
+ flex-shrink: 0;
+}
+
+.policy .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;
+}
+
+.nextStep .policyName {
+ font-weight: 500;
+}
diff --git a/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepPolicy/index.tsx b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepPolicy/index.tsx
new file mode 100644
index 0000000..fe1f0d6
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/sign-up/components/StepPolicy/index.tsx
@@ -0,0 +1,65 @@
+'use client';
+
+import React, { memo, useState } from 'react';
+
+import { Typography, Button, Radio, Message } from '@arco-design/web-react';
+
+import styles from './index.module.css';
+
+interface StepPolicyProps {
+ onNext: () => void;
+}
+
+const { Title } = Typography;
+
+function StepPolicy({ onNext }: StepPolicyProps) {
+ const [agree, setAgree] = useState(false);
+
+ const handleNext = () => {
+ if (!agree) {
+ Message.warning('请阅读并同意《用户服务协议》');
+ } else {
+ onNext?.();
+ }
+ };
+
+ return (
+ <>
+
+
+ 用户隐私和服务条款
+
+
+ 欢迎使用雀乐音乐为您提供的雀乐音乐【版权管理及运营服务】(以下可称为“本服务”)。请您(以下也可称为“贵方”)仔细阅读以下全部内容(特别是粗体下划线标注的内容)。如贵方使用雀乐音乐版权管理及运营服务,即表示贵方与雀乐公司已达成协议,自愿接受本服务条款所有内容。服务条款是雀乐公司和贵方所约定的规范双方权利和义务的具有法律效力的电子协议,下称“本服务条款”。除非贵方与雀乐公司另有其他约定,贵方与雀乐公司之间的权利和义务均适用本服务条款。贵方勾选“我同意
+ ”,即表示贵方已经仔细阅读、充分理解并完全地毫无保留地接受本服务条款的所有条款。
+
+
+ 一、总则
+
+ 贵方根据雀乐音乐要求及规则以版权公司身份申请入驻雀乐音乐版权服务平台(也可简称“本平台”),并在本平台从事音乐版权管理及/其他音乐经纪事务。本平台有权独立决定是否通过贵方的入驻申请及向贵方提供的服务内容。贵方同意本服务条款并按照页面提示完成全部的账号权限开通流程并通过雀乐公司审核后,即可使用本服务。
+
+
+ 二、账号登录及使用
+
+ 1、贵方根据本服务条款申请成为本平台入驻版权公司时,应按照本平台要求提供及完善相应主体信息资料。贵方须提供真实、及时、详尽及准确的资料,包括但不限于公司介绍、主体名称、营业执照、联系人、联系方式、运营者授权委托书、法定代表人相关信息等(以下简称“公司信息”)。如公司信息有任何变动,贵方须及时在本平台上予以更新。如本平台要求,贵方还应向本平台提交与原件核对一致并加盖贵方公章的纸质文件。贵方确认,若本平台给予贵方版权公司资格的,则贵方信息以贵方提交的公司信息为准。
+
+ 2、贵方入驻为本平台版权公司时可通过经贵方委托之运营者的雀乐音乐用户账号提出入驻申请。本平台核对贵方提供的运营者授权委托书信息与贵方运营者使用之用户账号信息等一致无误后可通过贵方运营者提交的申请,贵方运营者可以该用户账号登录本平台。
+
+ 3、贵方应维持密码及账号的机密安全,如果贵方未保管好账号和密码而对雀乐音乐用户、本平台或第三方造成损害,贵方将负全部责任。贵方同意若发现任何非法使用用户账号或安全漏洞的情况,有义务立即通告本平台。
+
+ 4、若贵方提供的公司信息不准确、不真实、含有违法或不良信息的,本平台有权不给予贵方入驻版权公司资格、暂停贵方入驻版权公司权限使用或注销贵方入驻版权公司资格等。同时,本平台对贵方信息的核实仅为形式审核,贵方仍需独立对公司信息的真实性、合法性、准确性、有效性承担全部法律责任。
+
+
+
+ setAgree(checked)}>
+ 同意《用户服务协议》
+
+
+
+ >
+ );
+}
+
+export default memo(StepPolicy);
diff --git a/src/app/(artists-settle-in)/artists-settle-in/sign-up/page.tsx b/src/app/(artists-settle-in)/artists-settle-in/sign-up/page.tsx
new file mode 100644
index 0000000..9faa62a
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/sign-up/page.tsx
@@ -0,0 +1,35 @@
+'use client';
+
+import React, { useCallback, useState } from 'react';
+
+import { Layout, Typography } from '@arco-design/web-react';
+
+import Footer from '@/components/ArtistsSettleIn/Footer';
+import Header from '@/components/ArtistsSettleIn/Header';
+
+import StepArtistInfo from './components/StepArtistInfo';
+import StepPolicy from './components/StepPolicy';
+import styles from './sign-up.module.css';
+
+const Content = Layout.Content;
+const { Title } = Typography;
+
+function SignUp() {
+ const [step, setStep] = useState('1');
+ const handle2Step2 = useCallback(() => setStep('2'), []);
+ return (
+
+
+
+
+ 欢迎入驻雀乐音乐人
+ {step === '1' && }
+ {step === '2' && }
+
+
+
+
+ );
+}
+
+export default SignUp;
diff --git a/src/app/(artists-settle-in)/artists-settle-in/sign-up/sign-up.module.css b/src/app/(artists-settle-in)/artists-settle-in/sign-up/sign-up.module.css
new file mode 100644
index 0000000..9fe976d
--- /dev/null
+++ b/src/app/(artists-settle-in)/artists-settle-in/sign-up/sign-up.module.css
@@ -0,0 +1,32 @@
+.wrap {
+ min-height: 100vh;
+ color: #1d2129;
+}
+
+.wrap .cont {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background-color: #f2f3f7;
+}
+
+.wrap .cont .contBox {
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ width: 800px;
+ box-sizing: border-box;
+ flex: 1;
+ padding-top: 33px;
+ padding-bottom: 40px;
+}
+
+.wrap .cont .contBox .welcome {
+ width: 100%;
+ font-family: Alibaba PuHuiTi 2;
+ font-size: 24px;
+ font-weight: 700;
+ line-height: 33.6px;
+ margin-bottom: 20px;
+}
diff --git a/src/app/(artists-settle-in)/favicon.ico b/src/app/(artists-settle-in)/favicon.ico
new file mode 100644
index 0000000..718d6fe
Binary files /dev/null and b/src/app/(artists-settle-in)/favicon.ico differ
diff --git a/src/app/(artists-settle-in)/globals.css b/src/app/(artists-settle-in)/globals.css
new file mode 100644
index 0000000..9c39728
--- /dev/null
+++ b/src/app/(artists-settle-in)/globals.css
@@ -0,0 +1,56 @@
+@import '@unocss/reset/tailwind.css';
+@unocss all;
+@font-face {
+ font-family: 'D-DINExp';
+ src: url('/fonts/D-DINExp.otf') format('opentype');
+}
+
+:root {
+ --body-bg-color: #fff;
+ --primary-color: #c43737;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ }
+}
+
+html,
+body {
+ min-height: 100%;
+}
+
+body {
+ background: var(--body-bg-color);
+ font-family:
+ 'D-DINExp',
+ -apple-system,
+ BlinkMacSystemFont,
+ 'PingFang SC',
+ 'Helvetica Neue',
+ STHeiti,
+ 'Microsoft Yahei',
+ Tahoma,
+ Simsun,
+ sans-serif;
+ /* padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom); */
+}
+
+input {
+ outline: none;
+}
+
+input::placeholder {
+ color: [rgba(0, 0, 0, 0.7)];
+}
+
+textarea {
+ outline: none;
+}
+
+@layer utilities {
+ .text-balance {
+ text-wrap: balance;
+ }
+}
diff --git a/src/app/(artists-settle-in)/layout.tsx b/src/app/(artists-settle-in)/layout.tsx
new file mode 100644
index 0000000..237748b
--- /dev/null
+++ b/src/app/(artists-settle-in)/layout.tsx
@@ -0,0 +1,42 @@
+import { Metadata, Viewport } from 'next';
+
+import { Toaster } from '@/components/ui/toaster';
+
+import { Mounted, Dialog } from '@/components';
+
+import '@arco-design/web-react/dist/css/arco.min.css';
+import './globals.css';
+
+export const metadata: Metadata = {
+ title: {
+ template: '%s - 雀乐音乐人',
+ default: '雀乐音乐人',
+ },
+ description:
+ '雀乐是由一群喜欢并热爱独立音乐的人共同创建的,我们致力于传播来自世界各地的独立音乐。我们秉着音乐里独立自主的精神表达内核,希望把雀乐建设成为泛华语地区最好的独立音乐传播平台。',
+ icons: {
+ icon: '/favicon.ico',
+ },
+};
+
+export const viewport: Viewport = {
+ width: 'device-width',
+ initialScale: 1,
+ maximumScale: 1,
+ minimumScale: 1,
+ userScalable: false,
+ viewportFit: 'cover',
+};
+
+export default function ArtistsSettleInLayout({ children }: Readonly<{ children: React.ReactNode }>) {
+ return (
+
+
+ {children}
+
+
+
+
+
+ );
+}
diff --git a/src/app/(artists-settle-in)/loading.tsx b/src/app/(artists-settle-in)/loading.tsx
new file mode 100644
index 0000000..bd8a251
--- /dev/null
+++ b/src/app/(artists-settle-in)/loading.tsx
@@ -0,0 +1,7 @@
+export default function Loading() {
+ return (
+
+ );
+}
diff --git a/src/components/ArtistsSettleIn/Footer/index.module.css b/src/components/ArtistsSettleIn/Footer/index.module.css
new file mode 100644
index 0000000..9935874
--- /dev/null
+++ b/src/components/ArtistsSettleIn/Footer/index.module.css
@@ -0,0 +1,58 @@
+.footer {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ padding: 28px 28px 33px;
+ background: #101011;
+ color: #ffffff99;
+
+ /* :global(.arco-typography) {
+ margin-bottom: 0;
+ }
+
+ :global(.arco-link),
+ :global(.arco-typography) {
+ color: #ffffff99;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 16.8px;
+ text-align: center;
+ }
+
+ :global(.arco-link) {
+ &:hover {
+ color: rgba(#ffffff99, 0.8);
+ }
+ } */
+}
+
+.mb0 {
+ margin-bottom: 0 !important;
+}
+
+.footerItem {
+ color: #ffffff99;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 16.8px;
+ text-align: center;
+}
+
+.footerItemLink:hover {
+ color: rgba(255, 255, 249, 0.8);
+}
+
+.nav {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.splitLine {
+ margin-top: -1px;
+}
+
+.msg {
+ margin-top: 4px;
+}
diff --git a/src/components/ArtistsSettleIn/Footer/index.tsx b/src/components/ArtistsSettleIn/Footer/index.tsx
new file mode 100644
index 0000000..088992b
--- /dev/null
+++ b/src/components/ArtistsSettleIn/Footer/index.tsx
@@ -0,0 +1,58 @@
+import React, { memo } from 'react';
+
+import { Layout, Typography, Space, Link } from '@arco-design/web-react';
+import { FooterProps } from '@arco-design/web-react/es/Layout/interface';
+import cs from 'classnames';
+
+import styles from './index.module.css';
+
+const LayoutFooter = Layout.Footer;
+const { Paragraph, Text } = Typography;
+
+function Footer(props: FooterProps = {}) {
+ const { className, ...restProps } = props;
+ return (
+
+
+
+ 雀乐
+
+ |
+
+ 音乐商城
+
+ |
+
+ 联系我们
+
+
+
+
+ 粤ICP备2024190175号-1
+
+
+ 粤公网安备44030002002777号
+
+ 深圳雀乐文化科技有限责任公司
+ Shenzhen QueYue Culture Technology Co., Ltd.
+
+
+ );
+}
+
+export default memo(Footer);
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormAddress.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormAddress.tsx
new file mode 100644
index 0000000..c989f24
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormAddress.tsx
@@ -0,0 +1,20 @@
+'use client';
+import React from 'react';
+
+import { Form, Select } from '@arco-design/web-react';
+
+// 所在地区
+const FormAddress = () => {
+ const options = [
+ { label: '大陆', value: '大陆' },
+ { label: '港澳台', value: '港澳台' },
+ { label: '海外', value: '海外' },
+ ];
+ return (
+
+
+
+ );
+};
+
+export default FormAddress;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormArtistAvatar.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormArtistAvatar.tsx
new file mode 100644
index 0000000..1ddeec2
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormArtistAvatar.tsx
@@ -0,0 +1,19 @@
+'use client';
+import React from 'react';
+
+import UploadForm from './UploadForm';
+
+// 艺人头像
+const FormArtistAvatar = () => {
+ return (
+
+ );
+};
+
+export default FormArtistAvatar;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormArtistName.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormArtistName.tsx
new file mode 100644
index 0000000..04520c2
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormArtistName.tsx
@@ -0,0 +1,24 @@
+'use client';
+import React from 'react';
+
+import { Form, Input } from '@arco-design/web-react';
+
+import styles from './style/FormArtistName.module.css';
+
+// 歌手名
+const FormArtistName = () => {
+ return (
+
+
+
+ );
+};
+
+export default FormArtistName;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormBackendScreenshot.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormBackendScreenshot.tsx
new file mode 100644
index 0000000..13a41c1
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormBackendScreenshot.tsx
@@ -0,0 +1,18 @@
+'use client';
+import React from 'react';
+
+import UploadForm from './UploadForm';
+
+// 后台截图
+const FormBackendScreenshot = () => {
+ return (
+
+ );
+};
+
+export default FormBackendScreenshot;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormDescription.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormDescription.tsx
new file mode 100644
index 0000000..feaa3a4
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormDescription.tsx
@@ -0,0 +1,22 @@
+'use client';
+import React from 'react';
+
+import { Form, Input } from '@arco-design/web-react';
+
+const TextArea = Input.TextArea;
+
+// 艺人简介
+const FormDescription = () => {
+ return (
+
+
+
+ );
+};
+
+export default FormDescription;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormHomepageBackground.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormHomepageBackground.tsx
new file mode 100644
index 0000000..7fa4ec2
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormHomepageBackground.tsx
@@ -0,0 +1,11 @@
+'use client';
+import React from 'react';
+
+import UploadForm from './UploadForm';
+
+// 主页背景
+const FormHomepageBackground = () => {
+ return ;
+};
+
+export default FormHomepageBackground;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormPassword.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormPassword.tsx
new file mode 100644
index 0000000..6ad08f9
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormPassword.tsx
@@ -0,0 +1,17 @@
+'use client';
+import React from 'react';
+
+import { Form, Input } from '@arco-design/web-react';
+
+const InputPassword = Input.Password;
+
+// 登录密码
+const FormPassword = () => {
+ return (
+
+
+
+ );
+};
+
+export default FormPassword;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormStyle.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormStyle.tsx
new file mode 100644
index 0000000..9aa07b5
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormStyle.tsx
@@ -0,0 +1,19 @@
+'use client';
+import React from 'react';
+
+import { Form, Select } from '@arco-design/web-react';
+
+// 流派/风格
+const FormStyle = () => {
+ const options = [
+ { label: '爵士 Jazz', value: 'Jazz' },
+ { label: '摇滚', value: 'Rock' },
+ ];
+ return (
+
+
+
+ );
+};
+
+export default FormStyle;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormType.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormType.tsx
new file mode 100644
index 0000000..c49e631
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormType.tsx
@@ -0,0 +1,19 @@
+'use client';
+import React from 'react';
+
+import { Form, Select } from '@arco-design/web-react';
+
+// 类型
+const FormType = () => {
+ const options = [
+ { label: '个人', value: 0 },
+ { label: '团体', value: 1 },
+ ];
+ return (
+
+
+
+ );
+};
+
+export default FormType;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/FormUserName.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/FormUserName.tsx
new file mode 100644
index 0000000..848acca
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/FormUserName.tsx
@@ -0,0 +1,15 @@
+'use client';
+import React from 'react';
+
+import { Form, Input } from '@arco-design/web-react';
+
+// 后台登录名
+const FormUserName = () => {
+ return (
+
+
+
+ );
+};
+
+export default FormUserName;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/UploadForm.tsx b/src/components/ArtistsSettleIn/FormArtistInfo/UploadForm.tsx
new file mode 100644
index 0000000..7e3a004
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/UploadForm.tsx
@@ -0,0 +1,42 @@
+'use client';
+import React from 'react';
+
+import { Form, Upload } from '@arco-design/web-react';
+import Image from 'next/image';
+
+import styles from './style/UploadForm.module.css';
+
+interface UploadFormProps {
+ label: string;
+ field: string;
+ rules?: Record[];
+ pic?: string;
+ tip: string;
+ subTip?: string;
+}
+
+// 上传图片组件
+const UploadForm = (props: UploadFormProps) => {
+ const { label, field, rules, pic, tip, subTip } = props;
+ return (
+
+
+
+
+
+
{tip || '上传'}
+
{subTip || '支持格式:.jpg .png,文件大小不能超过5MB'}
+
+
+
+
+ );
+};
+
+export default UploadForm;
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/index.ts b/src/components/ArtistsSettleIn/FormArtistInfo/index.ts
new file mode 100644
index 0000000..7ce0a33
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/index.ts
@@ -0,0 +1,23 @@
+import FormAddress from './FormAddress';
+import FormArtistAvatar from './FormArtistAvatar';
+import FormArtistName from './FormArtistName';
+import FormBackendScreenshot from './FormBackendScreenshot';
+import FormDescription from './FormDescription';
+import FormHomepageBackground from './FormHomepageBackground';
+import FormPassword from './FormPassword';
+import FormStyle from './FormStyle';
+import FormType from './FormType';
+import FormUserName from './FormUserName';
+
+export {
+ FormArtistName,
+ FormArtistAvatar,
+ FormHomepageBackground,
+ FormBackendScreenshot,
+ FormAddress,
+ FormStyle,
+ FormType,
+ FormDescription,
+ FormUserName,
+ FormPassword,
+};
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/style/FormArtistName.module.css b/src/components/ArtistsSettleIn/FormArtistInfo/style/FormArtistName.module.css
new file mode 100644
index 0000000..c9f8f2e
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/style/FormArtistName.module.css
@@ -0,0 +1,65 @@
+.artistNameWrap {
+ border-bottom: 1px solid #ededed;
+ padding-bottom: 16px;
+ box-sizing: border-box;
+
+ /* &:global(.arco-form-item-error) {
+ padding-bottom: 0;
+ }
+
+ &:global(.arco-form-item) {
+ margin-bottom: 53px;
+ } */
+
+ /* 不展示必填符号 */
+ /* :global(.arco-form-item-symbol) {
+ display: none;
+ } */
+
+ /* label样式 */
+ /* :global(.arco-form-label-item > label) {
+ font-family: PingFang SC;
+ font-size: 24px;
+ font-weight: 600;
+ color: #4e5969;
+ } */
+}
+
+/* .artistNameWrap .arco-form-item-error {
+ padding-bottom: 0 !important;
+} */
+
+/* .artistNameWrap .arco-form-item {
+ margin-bottom: 53px !important;
+} */
+
+/* 不展示必填符号 */
+/* .artistNameWrap .arco-form-item-symbol {
+ display: none !important;
+} */
+
+/* label样式 */
+/* .artistNameWrap .arco-col.arco-form-label-item > label {
+ display: inline-flex !important;
+ align-items: center !important;
+ font-family: PingFang SC !important;
+ font-size: 24px !important;
+ font-weight: 600 !important;
+ color: #4e5969 !important;
+} */
+
+.artistNameWrap .artistNameInp {
+ padding: 0;
+ border: none;
+ font-size: 20px;
+ font-weight: 600;
+ color: #4e5969;
+ background-color: transparent;
+}
+
+.artistNameWrap .artistNameInp:placeholder-shown {
+ color: #c9cdd4;
+ font-family: PingFang SC;
+ font-size: 20px;
+ font-weight: lighter;
+}
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/style/UploadForm.module.css b/src/components/ArtistsSettleIn/FormArtistInfo/style/UploadForm.module.css
new file mode 100644
index 0000000..70baa4d
--- /dev/null
+++ b/src/components/ArtistsSettleIn/FormArtistInfo/style/UploadForm.module.css
@@ -0,0 +1,43 @@
+.uploadForm .uploadEle {
+ width: 100%;
+}
+
+.uploadForm .uploadTrigger {
+ width: 100%;
+ background-color: #fff;
+ color: #1d2129;
+ border: 1px dashed var(--color-fill-4);
+ padding: 18px 24px;
+ box-sizing: border-box;
+ border-radius: 2px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.uploadForm .uploadTrigger .infoWrap {
+ flex: 1;
+ margin-left: 18px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+}
+
+.uploadForm .uploadTrigger .infoWrap .tip {
+ font-family: PingFang SC;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 22px;
+ text-align: left;
+ color: #1d2129;
+ margin-bottom: 4px;
+}
+
+.uploadForm .uploadTrigger .infoWrap .subTip {
+ font-family: PingFang SC;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 20px;
+ text-align: left;
+ color: #86909c;
+}
diff --git a/src/components/ArtistsSettleIn/FormArtistInfo/style/index.module.css b/src/components/ArtistsSettleIn/FormArtistInfo/style/index.module.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/components/ArtistsSettleIn/Header/index.module.css b/src/components/ArtistsSettleIn/Header/index.module.css
new file mode 100644
index 0000000..8a533bc
--- /dev/null
+++ b/src/components/ArtistsSettleIn/Header/index.module.css
@@ -0,0 +1,76 @@
+.header {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding-left: 20px;
+ padding-right: 20px;
+ box-sizing: border-box;
+}
+
+.header.light {
+ background-color: #fff;
+}
+.header.dark {
+ /* background-color: #000; */
+}
+
+.header .cont {
+ width: 1200px;
+ height: 72px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.header .brand {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 14px;
+}
+
+.header .brand .brandName {
+ font-size: 20px;
+ font-weight: 700;
+ margin-left: 10px;
+}
+
+.header.light .brand .brandName {
+ color: #333;
+}
+.header.dark .brand .brandName {
+ color: #fff;
+}
+
+.header .avatar {
+ height: 100%;
+ cursor: pointer;
+ padding-left: 12px;
+ padding-right: 12px;
+ margin-right: -12px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.header .avatar .loginText {
+ font-size: 14px;
+ margin-right: 9px;
+ font-size: 14px;
+ font-weight: 500;
+ transition: all ease 0.3s;
+}
+
+.header.light .avatar .loginText {
+ color: #1d2129;
+}
+.header.light .avatar:hover .loginText {
+ color: rgba(#1d2129, 0.8);
+}
+.header.dark .avatar .loginText {
+ color: #fff;
+}
+.header.dark .avatar:hover .loginText {
+ color: rgba(255, 255, 255, 0.8);
+}
diff --git a/src/components/ArtistsSettleIn/Header/index.tsx b/src/components/ArtistsSettleIn/Header/index.tsx
new file mode 100644
index 0000000..a8f54ed
--- /dev/null
+++ b/src/components/ArtistsSettleIn/Header/index.tsx
@@ -0,0 +1,42 @@
+'use client';
+
+import React, { memo } from 'react';
+
+import { Layout, Avatar } from '@arco-design/web-react';
+import { IconUser } from '@arco-design/web-react/icon';
+import cs from 'classnames';
+import Image from 'next/image';
+
+import styles from './index.module.css';
+
+interface HeaderProps {
+ mode?: 'light' | 'dark';
+}
+
+const LayoutHeader = Layout.Header;
+
+function Header({ mode }: HeaderProps) {
+ return (
+
+
+
+ );
+}
+
+export default memo(Header);
diff --git a/src/components/Footer/FooterPlatform.tsx b/src/components/Footer/FooterPlatform.tsx
index 2a0b4fe..28eb1e3 100644
--- a/src/components/Footer/FooterPlatform.tsx
+++ b/src/components/Footer/FooterPlatform.tsx
@@ -2,14 +2,21 @@
// import Link from 'next/link';
+import { useRouter } from 'next/navigation';
+
import { toast } from '../ui/use-toast';
import { platformList } from './data';
export default function FooterPlatform({ className }: { className?: string }) {
// const { toast } = useToast();
+ const router = useRouter();
- const handleClick = () => {
+ const handleClick = ({ url }: { name: string; url: string }) => {
+ if (url && url !== '#') {
+ router.push(url);
+ return;
+ }
toast({ description: '敬请期待', duration: 1500 });
};
@@ -21,7 +28,7 @@ export default function FooterPlatform({ className }: { className?: string }) {
handleClick(item)}
>
{/* {
+ const result = await clientHttp.post('/user/artist/register', params);
+ return result;
+};
diff --git a/src/services/index.ts b/src/services/index.ts
index 229c751..147b2d9 100644
--- a/src/services/index.ts
+++ b/src/services/index.ts
@@ -12,3 +12,4 @@ export * from './client/audio';
export * from './client/user';
export * from './client/operate';
export * from './client/comment';
+export * from './client/artists-settle-in';