feat: 用户设置页面
This commit is contained in:
1
src/assets/icons/bucket.svg
Normal file
1
src/assets/icons/bucket.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1719936338007" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21681" width="200" height="200"><path d="M512 803.84c-225.28 0-409.6-61.44-409.6-138.24v220.16c5.12 76.8 184.32 138.24 409.6 138.24 220.16 0 404.48-61.44 409.6-138.24V665.6c0 76.8-184.32 138.24-409.6 138.24z" fill="#5F6190" p-id="21682"></path><path d="M512 542.72c-225.28 0-409.6-61.44-409.6-138.24v220.16c5.12 76.8 184.32 138.24 409.6 138.24 220.16 0 404.48-61.44 409.6-138.24V404.48c0 76.8-184.32 138.24-409.6 138.24z" fill="#5F6190" p-id="21683"></path><path d="M921.6 138.24C921.6 61.44 737.28 0 512 0S102.4 61.44 102.4 138.24V358.4c5.12 76.8 184.32 138.24 409.6 138.24 220.16 0 404.48-61.44 409.6-138.24V138.24z m-409.6 97.28c-168.96 0-307.2-46.08-307.2-102.4s138.24-102.4 307.2-102.4 307.2 46.08 307.2 102.4-138.24 102.4-307.2 102.4z" fill="#1BC4DB" p-id="21684"></path></svg>
|
After Width: | Height: | Size: 899 B |
1
src/assets/icons/dashboard.svg
Normal file
1
src/assets/icons/dashboard.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1719935834179" class="icon" viewBox="0 0 1058 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18524" width="200" height="200"><path d="M524.713318 55.476298C269.808975 55.476298 62.410835 262.874438 62.410835 517.778781S269.808975 980.081264 524.713318 980.081264s462.302483-207.39814 462.302483-462.302483S779.617661 55.476298 524.713318 55.476298z" fill="#3E6CDE" p-id="18525"></path><path d="M524.713318 922.293454c-223.060948 0-404.514673-181.453725-404.514672-404.514673S301.65237 113.264108 524.713318 113.264108s404.514673 181.453725 404.514673 404.514673-181.453725 404.514673-404.514673 404.514673z" fill="#FFFFFF" p-id="18526"></path><path d="M487.72912 122.510158c-199.894971 0-360.595937 160.700966-360.595937 360.595937 0 199.890348 160.700966 360.595937 360.595937 360.595937 199.890348 0 360.595937-160.705589 360.595936-360.595937 0-199.894971-160.705589-360.595937-360.595936-360.595937z" fill="#F4D44B" p-id="18527"></path><path d="M524.713318 402.20316c-21.38149 0-41.144921 6.213345-58.33795 16.384L324.503982 276.715774a28.893905 28.893905 0 0 0-40.85367 40.853671l141.871386 141.871386A113.994546 113.994546 0 0 0 409.137698 517.778781c0 63.737643 51.837977 115.575621 115.57562 115.575621s115.575621-51.837977 115.575621-115.575621-51.837977-115.575621-115.575621-115.575621z" fill="#3E6CDE" p-id="18528"></path><path d="M524.713318 575.566591c-31.871133 0-57.78781-25.916677-57.78781-57.78781S492.842185 459.990971 524.713318 459.990971s57.78781 25.916677 57.787811 57.78781-25.916677 57.78781-57.787811 57.78781z" fill="#FFFFFF" p-id="18529"></path><path d="M524.713318 194.684822c-44.034312 0-86.769553 8.700533-126.962131 25.893562a28.889282 28.889282 0 0 0-16.106618 37.55283 28.893905 28.893905 0 0 0 38.847278 15.551856 263.350609 263.350609 0 0 1 104.193733-21.238176c146.258637 0 265.301526 119.010528 265.301526 265.306149a28.898528 28.898528 0 0 0 57.78781 0c0.032361-178.12977-144.90409-323.066221-323.061598-323.066221zM265.449463 375.648506a28.893905 28.893905 0 0 0-37.908804 15.200505A320.671494 320.671494 0 0 0 201.623982 517.778781a28.893905 28.893905 0 0 0 57.78781 0c0-36.202907 7.13795-71.28242 21.210438-104.189111a28.838429 28.838429 0 0 0-15.071061-37.894934l-0.101706-0.04623z" fill="#3E6CDE" p-id="18530"></path></svg>
|
After Width: | Height: | Size: 2.2 KiB |
1
src/assets/icons/file.svg
Normal file
1
src/assets/icons/file.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1719936396719" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22777" width="200" height="200"><path d="M748.353488 430.31814V284.465612H371.323039v115.712H290.498481c-32.942636 0-53.025736 15.042481-53.025737 45.905365v372.259721c0 30.862884 26.751008 55.923101 59.693644 55.9231h553.912558c32.942636 0 59.693643-25.060217 59.693643-55.9231V474.215194c0-30.870822-20.797519-43.897054-44.214573-43.897054h-118.19659z" fill="#FFCB01" p-id="22778"></path><path d="M262.18369 290.212713a27.306667 27.306667 0 0 0 27.338419-27.346356V181.827473h392.834976a31.990078 31.990078 0 0 1 31.950388 31.958325v200.402357a27.306667 27.306667 0 0 0 27.346356 27.338419 27.306667 27.306667 0 0 0 27.346357-27.338419V213.785798c0-47.746977-38.904062-86.651039-86.643101-86.651038H262.18369a27.306667 27.306667 0 0 0-27.354295 27.346356v108.385241a27.370171 27.370171 0 0 0 27.354295 27.346356z" fill="#333333" p-id="22779"></path><path d="M427.857364 398.566202c-1.000186-1.825736-4.651659-8.707969-6.715535-14.907535l-0.762046-2.063876-32.148837-78.093892c-16.249054-39.824868-39.880434-56.312062-72.442047-56.312062H181.105116c-28.497364 0-51.017426 8.255504-66.829891 22.321613-16.765023 14.923411-27.298729 36.864-27.298729 67.075969v467.467907c0 56.28031 45.698977 101.971349 101.979287 101.971348h651.589457c56.28031 0 101.979287-45.691039 101.979287-101.979286V485.860217c0-30.275473-10.811535-51.327008-25.750822-65.289922-15.32031-14.336-35.935256-21.591318-58.026666-21.591318H432.858295a43.976434 43.976434 0 0 1-4.992993-0.412775z m451.163287 87.294015v318.186171a38.499225 38.499225 0 0 1-38.475411 38.483348H188.955783a38.499225 38.499225 0 0 1-38.475411-38.483348V336.594357c0-8.573023 1.270078-15.415566 6.009054-19.646512 5.699473-5.064434 14.343938-6.255132 24.61569-6.255132h134.683783c7.699845 0 9.827225 7.437891 13.66921 16.860279l31.799565 77.252465c8.946109 26.354109 20.305364 40.309085 33.736435 48.350264 10.16062 6.10431 22.226357 9.327132 37.864186 9.327132h425.888744c5.477209 0 10.875039 0.928744 14.661457 4.477023 4.207132 3.921364 5.612155 10.39876 5.612155 18.900341z" p-id="22780"></path></svg>
|
After Width: | Height: | Size: 2.1 KiB |
1
src/assets/icons/share.svg
Normal file
1
src/assets/icons/share.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1719936556739" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="27654" width="200" height="200"><path d="M576.27264 832a256 256 0 0 1 366.72-229.76c5.12-24.96 9.6-48.64 12.8-69.12s7.68-39.68 8.96-46.08a138.24 138.24 0 0 0 0-64 111.36 111.36 0 0 0-25.6-39.04 115.84 115.84 0 0 0-36.48-26.24 148.48 148.48 0 0 0-42.24-11.52H283.15264l-58.88 224c-8.32 30.08-23.68 45.44-46.72 45.44a42.24 42.24 0 0 1-32-13.44 46.72 46.72 0 0 1-12.8-33.28 54.4 54.4 0 0 1 0-15.36c7.04-23.68 14.72-48.64 21.76-74.24s12.8-45.44 20.48-71.04 14.08-48.64 19.84-71.68a128 128 0 0 1 24.96-50.56 56.96 56.96 0 0 1 45.44-19.2H832.27264V256a99.84 99.84 0 0 0-13.44-50.56 161.28 161.28 0 0 0-34.56-40.96 183.68 183.68 0 0 0-47.36-27.52 147.2 147.2 0 0 0-48-8.96H140.43264a134.4 134.4 0 0 0-103.68 40.32A160 160 0 0 0 0.27264 279.68v500.48a139.52 139.52 0 0 0 13.44 64 158.72 158.72 0 0 0 34.56 46.72 161.28 161.28 0 0 0 46.08 29.44 122.88 122.88 0 0 0 48.64 10.24H595.47264A252.16 252.16 0 0 1 576.27264 832z" fill="#5197FF" p-id="27655"></path><path d="M832.27264 640a192 192 0 1 0 192 192 192 192 0 0 0-192-192z m-64 184.96a23.04 23.04 0 0 1 0 7.04l76.16 44.8a31.36 31.36 0 1 1-10.24 23.04A23.04 23.04 0 0 1 832.27264 896l-76.16-44.8a30.72 30.72 0 0 1-21.76 8.96 32 32 0 0 1-32-32 32 32 0 0 1 32-32 32.64 32.64 0 0 1 21.76 8.32l76.16-47.36a27.52 27.52 0 0 1 0-7.04 32 32 0 1 1 32 32 30.72 30.72 0 0 1-21.76-8.96l-74.24 44.16a32 32 0 0 1 0 7.68z" fill="#96C3FF" p-id="27656"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
src/assets/icons/user.svg
Normal file
1
src/assets/icons/user.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1719936630588" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="30504" width="200" height="200"><path d="M332.100265 328.251268m-38.063325 34.890835a51.635134 51.635134 0 1 0 76.12665-69.78167 51.635134 51.635134 0 1 0-76.12665 69.78167Z" fill="#1AC3B6" p-id="30505"></path><path d="M556.783712 328.252893m-38.063325 34.890835a51.635134 51.635134 0 1 0 76.126651-69.78167 51.635134 51.635134 0 1 0-76.126651 69.78167Z" fill="#1AC3B6" p-id="30506"></path><path d="M511.987638 1024C229.669419 1024 0 794.293496 0 512S229.669419 0 511.987638 0s512.012362 229.694143 512.012362 512-229.681781 512-512.012362 512z m0-921.286011c-225.664204 0-409.273649 183.609445-409.273649 409.286011s183.609445 409.286011 409.273649 409.286011 409.298373-183.609445 409.298373-409.286011S737.664204 102.713989 511.987638 102.713989z" fill="#06E4D3" p-id="30507"></path><path d="M511.987638 846.892849V744.178859c128.018543 0 232.178859-104.160317 232.17886-232.178859h102.713989c0 184.635472-150.232652 334.892849-334.892849 334.892849z" fill="#1AC3B6" p-id="30508"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
src/assets/icons/userInfo.svg
Normal file
1
src/assets/icons/userInfo.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1719936741171" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33995" width="200" height="200"><path d="M896 448H768a31.963429 31.963429 0 1 0 0 64h128a31.963429 31.963429 0 1 0 0-64m0-128H768a31.963429 31.963429 0 1 0 0 64h128a31.963429 31.963429 0 1 0 0-64M768 256h128a31.963429 31.963429 0 1 0 0-64H768a31.963429 31.963429 0 1 0 0 64m13.750857 384c-5.12-2.267429-97.206857-42.569143-198.729143-62.756571 11.849143-9.654857 22.162286-20.918857 31.085715-33.28 21.942857-29.915429 33.792-66.048 33.792-103.131429V336.018286a176.274286 176.274286 0 0 0-175.689143-176.054857 176.128 176.128 0 0 0-175.762286 176.054857v104.813714c0 56.539429 26.843429 106.788571 68.315429 138.971429-96.475429 20.918857-181.321143 57.929143-185.490286 59.757714-29.257143 11.702857-51.273143 44.617143-51.273143 76.434286v131.657142l1.755429 5.12c9.508571 27.867429 35.108571 46.592 63.780571 46.592h572.928c33.28 0 60.854857-24.868571 65.024-56.978285l0.512-126.390857c0-15.213714-5.12-30.72-13.677714-43.958858a81.481143 81.481143 0 0 0-36.571429-32.036571" fill="#00C998" p-id="33996"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
@@ -28,6 +28,6 @@
|
||||
}
|
||||
|
||||
body {
|
||||
background-image: url("@/assets/images/background.png") ;
|
||||
background-image: url("@/assets/images/background.png");
|
||||
background-size: cover;
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/** @format */
|
||||
import { FunctionComponent } from "react";
|
||||
import { Avatar, Card, Empty, List } from "antd";
|
||||
import { FunctionComponent, useEffect, useState } from "react";
|
||||
import { Avatar, Card, Empty, List, Skeleton } from "antd";
|
||||
import {
|
||||
AntDesignOutlined,
|
||||
BankOutlined,
|
||||
@@ -14,6 +14,7 @@ import gitee from "@/assets/icons/gitee.svg";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
const UserInfo: FunctionComponent = () => {
|
||||
const [loading, setLoading] = useState(true);
|
||||
const data = [
|
||||
{
|
||||
title: "Ant Design Title 1",
|
||||
@@ -28,6 +29,11 @@ const UserInfo: FunctionComponent = () => {
|
||||
title: "Ant Design Title 4",
|
||||
},
|
||||
];
|
||||
useEffect(() => {
|
||||
setTimeout(() => {
|
||||
setLoading(false);
|
||||
}, 2000);
|
||||
}, []);
|
||||
return (
|
||||
<>
|
||||
<div className={styles.user_info_header}>
|
||||
@@ -57,6 +63,7 @@ const UserInfo: FunctionComponent = () => {
|
||||
title="我的存储商"
|
||||
boxShadow
|
||||
extra={<Link to={"#"}>查看更多</Link>}>
|
||||
<Skeleton loading={loading} active>
|
||||
<Card style={{ width: 300, marginTop: 16 }} hoverable={true}>
|
||||
<Meta
|
||||
avatar={<Avatar src={gitee} />}
|
||||
@@ -64,8 +71,11 @@ const UserInfo: FunctionComponent = () => {
|
||||
description="This is the description"
|
||||
/>
|
||||
</Card>
|
||||
</Skeleton>
|
||||
</ProCard>
|
||||
|
||||
<ProCard bordered style={{ maxWidth: "34%" }} title="我的存储桶" boxShadow>
|
||||
<Skeleton loading={loading} active>
|
||||
<Card style={{ width: 300, marginTop: 16 }} hoverable={true}>
|
||||
<Meta
|
||||
avatar={
|
||||
@@ -75,6 +85,7 @@ const UserInfo: FunctionComponent = () => {
|
||||
description="This is the description"
|
||||
/>
|
||||
</Card>
|
||||
</Skeleton>
|
||||
</ProCard>
|
||||
</div>
|
||||
<div className={styles.user_info_bottom_content}>
|
||||
@@ -84,6 +95,7 @@ const UserInfo: FunctionComponent = () => {
|
||||
title="最近动态"
|
||||
boxShadow
|
||||
extra={<Link to={"#"}>查看更多</Link>}>
|
||||
<Skeleton loading={loading} active avatar>
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
dataSource={data}
|
||||
@@ -101,6 +113,7 @@ const UserInfo: FunctionComponent = () => {
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</Skeleton>
|
||||
</ProCard>
|
||||
<ProCard bordered style={{ maxWidth: "34%" }} title="站内通知" boxShadow>
|
||||
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE}></Empty>
|
||||
|
@@ -11,3 +11,4 @@
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
@@ -1,11 +1,27 @@
|
||||
/** @format */
|
||||
import { FunctionComponent } from "react";
|
||||
import { ProCard } from "@ant-design/pro-components";
|
||||
import { FunctionComponent, useEffect, useState } from "react";
|
||||
import { ProCard, ProFormCascader } from "@ant-design/pro-components";
|
||||
import { AntDesignOutlined } from "@ant-design/icons";
|
||||
import { Avatar, Descriptions, DescriptionsProps, Tabs } from "antd";
|
||||
import {
|
||||
Avatar,
|
||||
Button,
|
||||
Descriptions,
|
||||
DescriptionsProps,
|
||||
Form,
|
||||
FormProps,
|
||||
Input,
|
||||
Select,
|
||||
Skeleton,
|
||||
Space,
|
||||
Tabs,
|
||||
} from "antd";
|
||||
import styles from "./index.module.less";
|
||||
import TextArea from "antd/es/input/TextArea";
|
||||
import { city } from "@/context/five-level-address.ts";
|
||||
|
||||
const UserSetting: FunctionComponent = () => {
|
||||
const [disable, setDisable] = useState(true);
|
||||
const [loading, setLoading] = useState(true);
|
||||
const items: DescriptionsProps["items"] = [
|
||||
{
|
||||
key: "1",
|
||||
@@ -33,29 +49,175 @@ const UserSetting: FunctionComponent = () => {
|
||||
children: "13333333333333",
|
||||
},
|
||||
];
|
||||
type FieldType = {
|
||||
email?: string;
|
||||
nickname?: string;
|
||||
location?: string;
|
||||
introduce?: string;
|
||||
gender?: string;
|
||||
company?: string;
|
||||
blog?: string;
|
||||
};
|
||||
const onFinish: FormProps<FieldType>["onFinish"] = (values) => {
|
||||
console.log("Success:", values);
|
||||
};
|
||||
|
||||
const onFinishFailed: FormProps<FieldType>["onFinishFailed"] = (errorInfo) => {
|
||||
console.log("Failed:", errorInfo);
|
||||
};
|
||||
|
||||
const prefixSelector = (
|
||||
<Form.Item name="prefix" noStyle>
|
||||
<Select style={{ width: 90 }} defaultValue={"https://"}>
|
||||
<Select.Option value="https://">https://</Select.Option>
|
||||
<Select.Option value="http://">http://</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
);
|
||||
useEffect(() => {
|
||||
setTimeout(() => {
|
||||
setLoading(false);
|
||||
}, 2000);
|
||||
}, []);
|
||||
const TabItems = [
|
||||
{
|
||||
label: <span>基础信息</span>,
|
||||
key: "baseInfo",
|
||||
children: (
|
||||
<>
|
||||
<Skeleton loading={loading} active>
|
||||
<div>
|
||||
11111111111111111111111111111111111111111111111111111111111111111111111111111111
|
||||
<Form
|
||||
name="basic"
|
||||
labelCol={{ span: 3 }}
|
||||
wrapperCol={{ span: 16 }}
|
||||
style={{ maxWidth: 600 }}
|
||||
onFinish={onFinish}
|
||||
onFinishFailed={onFinishFailed}
|
||||
autoComplete="off">
|
||||
<Form.Item<FieldType>
|
||||
label="邮箱"
|
||||
name="email"
|
||||
rules={[
|
||||
{
|
||||
type: "email",
|
||||
message: "请输入正确的邮箱!",
|
||||
},
|
||||
{ required: true, message: "请输入邮箱!" },
|
||||
]}>
|
||||
<Input allowClear disabled={disable} />
|
||||
</Form.Item>
|
||||
<Form.Item<FieldType>
|
||||
label="昵称"
|
||||
name="nickname"
|
||||
rules={[
|
||||
{
|
||||
type: "string",
|
||||
message:
|
||||
"用户名只能是3到16位(字母,数字,下划线,减号)!",
|
||||
pattern: /^[a-zA-Z0-9_-]{3,16}$/,
|
||||
},
|
||||
{
|
||||
required: true,
|
||||
message: "请输入昵称!",
|
||||
},
|
||||
]}>
|
||||
<Input allowClear disabled={disable} />
|
||||
</Form.Item>
|
||||
<Form.Item<FieldType>
|
||||
label="性别"
|
||||
name="gender"
|
||||
rules={[{ required: true, message: "请输入性别!" }]}>
|
||||
<Select disabled={disable}>
|
||||
<Select.Option value="男">男</Select.Option>
|
||||
<Select.Option value="女">女</Select.Option>
|
||||
<Select.Option value="UNKNOWN">隐私</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
<Form.Item<FieldType>
|
||||
label="地区"
|
||||
name="location"
|
||||
rules={[{ required: true, message: "请输入地区!" }]}>
|
||||
<ProFormCascader
|
||||
request={async () => city}
|
||||
width="md"
|
||||
name="location"
|
||||
disabled={disable}></ProFormCascader>
|
||||
</Form.Item>
|
||||
<Form.Item<FieldType> label="公司" name="company">
|
||||
<Input allowClear disabled={disable} />
|
||||
</Form.Item>
|
||||
<Form.Item<FieldType> label="博客" name="blog">
|
||||
<Input
|
||||
addonBefore={prefixSelector}
|
||||
allowClear
|
||||
disabled={disable}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item<FieldType> label="个人简介" name="introduce">
|
||||
<TextArea
|
||||
rows={4}
|
||||
allowClear
|
||||
maxLength={200}
|
||||
showCount
|
||||
placeholder="请输入您的个人简介,最多不超过200字。"
|
||||
disabled={disable}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item wrapperCol={{ offset: 3, span: 16 }}>
|
||||
<Space
|
||||
style={{
|
||||
display: "flex",
|
||||
flexDirection: "row",
|
||||
justifyContent: "space-between",
|
||||
width: "400px",
|
||||
}}>
|
||||
<Button
|
||||
htmlType="button"
|
||||
onClick={() => {
|
||||
setDisable(!disable);
|
||||
}}>
|
||||
修改
|
||||
</Button>
|
||||
<Button type="primary" htmlType="submit" disabled={disable}>
|
||||
保存
|
||||
</Button>
|
||||
</Space>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</div>
|
||||
</Skeleton>
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <span>安全设置</span>,
|
||||
key: "security",
|
||||
children: (
|
||||
<>
|
||||
<Skeleton loading={loading} active>
|
||||
<Space direction={"vertical"} style={{ width: "100%" }}>
|
||||
<ProCard hoverable bordered>
|
||||
登录密码:
|
||||
</ProCard>
|
||||
<ProCard hoverable bordered>
|
||||
安全手机:
|
||||
</ProCard>
|
||||
<ProCard hoverable bordered>
|
||||
安全邮箱:
|
||||
</ProCard>
|
||||
</Space>
|
||||
</Skeleton>
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
const onChange = (key: string) => {
|
||||
console.log(key);
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className={styles.user_setting_main}>
|
||||
<ProCard boxShadow>
|
||||
<Skeleton loading={loading} active avatar>
|
||||
<div className={styles.user_setting_header}>
|
||||
<Avatar
|
||||
size={{ xs: 24, sm: 32, md: 40, lg: 64, xl: 80, xxl: 100 }}
|
||||
@@ -68,10 +230,12 @@ const UserSetting: FunctionComponent = () => {
|
||||
column={3}
|
||||
size={"small"}></Descriptions>
|
||||
</div>
|
||||
</Skeleton>
|
||||
</ProCard>
|
||||
|
||||
<div className={styles.user_setting_content}>
|
||||
<ProCard boxShadow>
|
||||
<Tabs onChange={onChange} type="card" items={TabItems}></Tabs>
|
||||
<Tabs type="card" items={TabItems}></Tabs>
|
||||
</ProCard>
|
||||
</div>
|
||||
</div>
|
||||
|
194528
src/context/five-level-address.ts
Normal file
194528
src/context/five-level-address.ts
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,41 +1,48 @@
|
||||
/** @format */
|
||||
|
||||
import { SmileFilled } from "@ant-design/icons";
|
||||
import dashboard from "@/assets/icons/dashboard.svg";
|
||||
import bucket from "@/assets/icons/bucket.svg";
|
||||
import file from "@/assets/icons/file.svg";
|
||||
import share from "@/assets/icons/share.svg";
|
||||
import user from "@/assets/icons/user.svg";
|
||||
import userInfo from "@/assets/icons/userInfo.svg";
|
||||
|
||||
export default {
|
||||
route: {
|
||||
path: "/",
|
||||
routes: [
|
||||
{
|
||||
index: true,
|
||||
path: "main/home",
|
||||
name: "仪表盘",
|
||||
icon: <SmileFilled />,
|
||||
icon: dashboard,
|
||||
},
|
||||
{
|
||||
path: "main/bucket",
|
||||
name: "存储桶",
|
||||
icon: <SmileFilled />,
|
||||
icon: bucket,
|
||||
},
|
||||
{
|
||||
path: "main/file",
|
||||
name: "文件管理",
|
||||
icon: <SmileFilled />,
|
||||
name: "我的文件",
|
||||
icon: file,
|
||||
},
|
||||
{
|
||||
path: "main/share",
|
||||
name: "分享圈",
|
||||
icon: <SmileFilled />,
|
||||
icon: share,
|
||||
},
|
||||
{
|
||||
path: "/",
|
||||
name: "个人中心",
|
||||
icon: <SmileFilled />,
|
||||
icon: user,
|
||||
routes: [
|
||||
{
|
||||
index: true,
|
||||
path: "main/user/info",
|
||||
name: "用户信息",
|
||||
icon: <SmileFilled />,
|
||||
icon: userInfo,
|
||||
},
|
||||
{
|
||||
path: "main/user/setting",
|
||||
|
@@ -19,7 +19,7 @@ export default function Layout() {
|
||||
logo={logo}
|
||||
layout={"mix"}
|
||||
// contentWidth={"Fluid"}
|
||||
menu={{ defaultOpenAll: true, hideMenuWhenCollapsed: false }}
|
||||
menu={{ defaultOpenAll: false, hideMenuWhenCollapsed: false }}
|
||||
title={"五味子云存储"}
|
||||
siderWidth={216}
|
||||
menuItemRender={(menuItemProps, defaultDom) => {
|
||||
@@ -29,7 +29,9 @@ export default function Layout() {
|
||||
return <Link to={menuItemProps.path}>{defaultDom}</Link>;
|
||||
}}
|
||||
{...defaultProps}
|
||||
location={location}
|
||||
location={{
|
||||
pathname: location.pathname,
|
||||
}}
|
||||
avatarProps={{
|
||||
src: "https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg",
|
||||
title: "七妮妮",
|
||||
|
@@ -249,7 +249,7 @@ export default observer(() => {
|
||||
{
|
||||
pattern: /^[a-zA-Z0-9_-]{3,16}$/,
|
||||
message:
|
||||
"用户名只能是4到16位(字母,数字,下划线,减号)",
|
||||
"用户名只能是3到16位(字母,数字,下划线,减号)",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
|
Reference in New Issue
Block a user