feat: update
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
"@types/crypto-js": "^4.2.2",
|
"@types/crypto-js": "^4.2.2",
|
||||||
"@types/react-calendar-heatmap": "^1.6.7",
|
"@types/react-calendar-heatmap": "^1.6.7",
|
||||||
"@vitejs/plugin-legacy": "^5.4.0",
|
"@vitejs/plugin-legacy": "^5.4.0",
|
||||||
|
"aieditor": "^1.0.12",
|
||||||
"antd": "^5.17.4",
|
"antd": "^5.17.4",
|
||||||
"autoprefixer": "^10.4.19",
|
"autoprefixer": "^10.4.19",
|
||||||
"axios": "^1.7.2",
|
"axios": "^1.7.2",
|
||||||
@@ -31,6 +32,7 @@
|
|||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-calendar-heatmap": "^1.9.0",
|
"react-calendar-heatmap": "^1.9.0",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
|
"react-infinite-scroll-component": "^6.1.0",
|
||||||
"react-rotate-captcha": "^1.0.26",
|
"react-rotate-captcha": "^1.0.26",
|
||||||
"react-router-dom": "^6.23.1",
|
"react-router-dom": "^6.23.1",
|
||||||
"regenerator-runtime": "^0.14.1",
|
"regenerator-runtime": "^0.14.1",
|
||||||
|
830
pnpm-lock.yaml
generated
830
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 376 KiB |
@@ -1,12 +1,7 @@
|
|||||||
/** @format */
|
/** @format */
|
||||||
|
|
||||||
import { Avatar, Button, message } from "antd";
|
import { Avatar, Button, message } from "antd";
|
||||||
import {
|
import { DrawerForm, ProCard, ProForm, ProFormText } from "@ant-design/pro-components";
|
||||||
DrawerForm,
|
|
||||||
ProCard,
|
|
||||||
ProForm,
|
|
||||||
ProFormText,
|
|
||||||
} from "@ant-design/pro-components";
|
|
||||||
import React, { createContext, useContext, useState } from "react";
|
import React, { createContext, useContext, useState } from "react";
|
||||||
import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons";
|
import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons";
|
||||||
import bucket from "../../../../assets/icons/bucket.svg";
|
import bucket from "../../../../assets/icons/bucket.svg";
|
||||||
|
@@ -1,13 +1,9 @@
|
|||||||
.proCard{
|
.proCard{
|
||||||
max-width: 30%;
|
max-width: 30%;
|
||||||
height: 75vh;
|
|
||||||
max-height: 75vh;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.proCardBucket{
|
.proCardBucket{
|
||||||
height: 75vh;
|
|
||||||
max-height: 75vh;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,6 +19,3 @@
|
|||||||
overflow-y:scroll;
|
overflow-y:scroll;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
//.div_checkCardArea::-webkit-scrollbar {
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
|
@@ -14,23 +14,14 @@ const Bucket: FunctionComponent = () => {
|
|||||||
return (
|
return (
|
||||||
<div className={styles.div_proCard}>
|
<div className={styles.div_proCard}>
|
||||||
<ProCard
|
<ProCard
|
||||||
extra={
|
extra={<Button type="primary" shape={"circle"} icon={<ReloadOutlined />}></Button>}
|
||||||
<Button
|
|
||||||
type="primary"
|
|
||||||
shape={"circle"}
|
|
||||||
icon={<ReloadOutlined />}
|
|
||||||
onClick={() => navigate("/main/bucket/add")}></Button>
|
|
||||||
}
|
|
||||||
title="存储商"
|
title="存储商"
|
||||||
headerBordered
|
headerBordered
|
||||||
className={styles.proCard}
|
className={styles.proCard}
|
||||||
boxShadow={true}
|
boxShadow={true}
|
||||||
colSpan={"100%"}
|
colSpan={"100%"}
|
||||||
bordered>
|
bordered>
|
||||||
<CheckCard.Group
|
<CheckCard.Group>
|
||||||
onChange={(value) => {
|
|
||||||
console.log("value", value);
|
|
||||||
}}>
|
|
||||||
<div className={styles.div_checkCardArea}>
|
<div className={styles.div_checkCardArea}>
|
||||||
{checkList.map((item) => {
|
{checkList.map((item) => {
|
||||||
return (
|
return (
|
||||||
@@ -42,7 +33,6 @@ const Bucket: FunctionComponent = () => {
|
|||||||
description="点击查看"
|
description="点击查看"
|
||||||
value={item}
|
value={item}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
console.log(`/main/bucket/${item}`);
|
|
||||||
navigate(`/main/bucket/${item}`);
|
navigate(`/main/bucket/${item}`);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
@@ -5,7 +5,7 @@ import { Avatar, Card, Empty, Select } from "antd";
|
|||||||
import styles from "./index.module.less";
|
import styles from "./index.module.less";
|
||||||
import { Outlet, useLocation, useNavigate } from "react-router-dom";
|
import { Outlet, useLocation, useNavigate } from "react-router-dom";
|
||||||
import { Suspense } from "react";
|
import { Suspense } from "react";
|
||||||
import selectOptions from "@/components/Main/Settings/defaultSettings.ts";
|
import selectOptions from "@/components/Main/Settings/settings.ts";
|
||||||
import StorageIcon from "@/context/stroage-icon.ts";
|
import StorageIcon from "@/context/stroage-icon.ts";
|
||||||
export default () => {
|
export default () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
@@ -1,7 +0,0 @@
|
|||||||
/** @format */
|
|
||||||
import React from "react";
|
|
||||||
|
|
||||||
const ShareList: React.FunctionComponent = () => {
|
|
||||||
return <></>;
|
|
||||||
};
|
|
||||||
export default ShareList;
|
|
@@ -0,0 +1,46 @@
|
|||||||
|
/** @format */
|
||||||
|
import React, { useEffect, useRef } from "react";
|
||||||
|
import { Button } from "antd";
|
||||||
|
import { LeftOutlined } from "@ant-design/icons";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
import {AiEditor} from "aieditor";
|
||||||
|
import "aieditor/dist/style.css"
|
||||||
|
|
||||||
|
const ShareDetail: React.FunctionComponent = () => {
|
||||||
|
const navigate = useNavigate();
|
||||||
|
//定义 ref
|
||||||
|
const divRef = useRef(null);
|
||||||
|
//初始化 AiEditor
|
||||||
|
useEffect(() => {
|
||||||
|
if (divRef.current) {
|
||||||
|
const aiEditor = new AiEditor({
|
||||||
|
editable:false,
|
||||||
|
element: divRef.current,
|
||||||
|
placeholder: "点击输入内容...",
|
||||||
|
content: 'AiEditor 是一个面向 AI 的开源富文本编辑器。 ',
|
||||||
|
})
|
||||||
|
return ()=>{
|
||||||
|
aiEditor.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
shape="circle"
|
||||||
|
icon={<LeftOutlined />}
|
||||||
|
onClick={() => {
|
||||||
|
navigate("/main/share/list/1");
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<div ref={divRef} style={{ height: 550}}>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
555
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default ShareDetail;
|
@@ -1,86 +0,0 @@
|
|||||||
/** @format */
|
|
||||||
|
|
||||||
import { LikeOutlined, MessageOutlined, StarOutlined } from "@ant-design/icons";
|
|
||||||
import { ProList } from "@ant-design/pro-components";
|
|
||||||
import { Button, Tag } from "antd";
|
|
||||||
import React from "react";
|
|
||||||
|
|
||||||
const IconText = ({ icon, text }: { icon: any; text: string }) => (
|
|
||||||
<span>
|
|
||||||
{React.createElement(icon, { style: { marginInlineEnd: 8 } })}
|
|
||||||
{text}
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
|
|
||||||
const dataSource = [
|
|
||||||
{
|
|
||||||
title: "语雀的天空",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Ant Design",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "蚂蚁金服体验科技",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "TechUI",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const ShareList = () => {
|
|
||||||
return (
|
|
||||||
<ProList<{ title: string }>
|
|
||||||
toolBarRender={() => {
|
|
||||||
return [
|
|
||||||
<Button key="3" type="primary">
|
|
||||||
新建
|
|
||||||
</Button>,
|
|
||||||
];
|
|
||||||
}}
|
|
||||||
itemLayout="vertical"
|
|
||||||
rowKey="id"
|
|
||||||
// headerTitle="竖排样式"
|
|
||||||
dataSource={dataSource}
|
|
||||||
metas={{
|
|
||||||
title: {},
|
|
||||||
description: {
|
|
||||||
render: () => (
|
|
||||||
<>
|
|
||||||
<Tag>语雀专栏</Tag>
|
|
||||||
<Tag>设计语言</Tag>
|
|
||||||
<Tag>蚂蚁金服</Tag>
|
|
||||||
</>
|
|
||||||
),
|
|
||||||
},
|
|
||||||
actions: {
|
|
||||||
render: () => [
|
|
||||||
<IconText icon={StarOutlined} text="156" key="list-vertical-star-o" />,
|
|
||||||
<IconText icon={LikeOutlined} text="156" key="list-vertical-like-o" />,
|
|
||||||
<IconText icon={MessageOutlined} text="2" key="list-vertical-message" />,
|
|
||||||
],
|
|
||||||
},
|
|
||||||
extra: {
|
|
||||||
render: () => (
|
|
||||||
<img
|
|
||||||
width={272}
|
|
||||||
alt="logo"
|
|
||||||
src="https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png"
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
},
|
|
||||||
content: {
|
|
||||||
render: () => {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
段落示意:蚂蚁金服设计平台
|
|
||||||
design.alipay.com,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台
|
|
||||||
design.alipay.com,用最小的工作量,无缝接入蚂蚁金服生态提供跨越设计与开发的体验解决方案。
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
export default ShareList;
|
|
102
src/components/Main/Share/components/ShareList/ShareList.tsx
Normal file
102
src/components/Main/Share/components/ShareList/ShareList.tsx
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
/** @format */
|
||||||
|
|
||||||
|
import { ProCard } from "@ant-design/pro-components";
|
||||||
|
import { Avatar, Button, Divider, List, Skeleton } from "antd";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import styles from "./index.module.less";
|
||||||
|
import Search from "antd/es/input/Search";
|
||||||
|
import InfiniteScroll from "react-infinite-scroll-component";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
import { LeftOutlined } from "@ant-design/icons";
|
||||||
|
interface DataType {
|
||||||
|
gender: string;
|
||||||
|
name: {
|
||||||
|
title: string;
|
||||||
|
first: string;
|
||||||
|
last: string;
|
||||||
|
};
|
||||||
|
email: string;
|
||||||
|
picture: {
|
||||||
|
large: string;
|
||||||
|
medium: string;
|
||||||
|
thumbnail: string;
|
||||||
|
};
|
||||||
|
nat: string;
|
||||||
|
}
|
||||||
|
export default () => {
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
|
const [data, setData] = useState<DataType[]>([]);
|
||||||
|
|
||||||
|
const loadMoreData = () => {
|
||||||
|
if (loading) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setLoading(true);
|
||||||
|
fetch("https://randomuser.me/api/?results=10&inc=name,gender,email,nat,picture&noinfo")
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((body) => {
|
||||||
|
setData([...data, ...body.results]);
|
||||||
|
setLoading(false);
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
setLoading(false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
loadMoreData();
|
||||||
|
}, []);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className={styles.share_list_main}>
|
||||||
|
<ProCard bordered={true} boxShadow={true}>
|
||||||
|
<div className={styles.share_list_header}>
|
||||||
|
<div>
|
||||||
|
<Button
|
||||||
|
shape="circle"
|
||||||
|
icon={<LeftOutlined />}
|
||||||
|
onClick={() => {
|
||||||
|
navigate("/main/share");
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Search placeholder="搜索" style={{ width: 500, marginLeft: 20 }} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Button>分享</Button>
|
||||||
|
</div>
|
||||||
|
</ProCard>
|
||||||
|
<ProCard bordered={true} boxShadow={true} style={{ marginTop: 20 }}>
|
||||||
|
<InfiniteScroll
|
||||||
|
dataLength={data.length}
|
||||||
|
next={loadMoreData}
|
||||||
|
hasMore={data.length < 50}
|
||||||
|
loader={<Skeleton avatar paragraph={{ rows: 1 }} active />}
|
||||||
|
endMessage={<Divider plain>It is all, nothing more 🤐</Divider>}
|
||||||
|
scrollableTarget="scrollableDiv">
|
||||||
|
<List
|
||||||
|
dataSource={data}
|
||||||
|
renderItem={(item) => (
|
||||||
|
<List.Item key={item.email}>
|
||||||
|
<List.Item.Meta
|
||||||
|
avatar={<Avatar src={item.picture.large} />}
|
||||||
|
title={
|
||||||
|
<a
|
||||||
|
onClick={() => {
|
||||||
|
navigate("/main/share/detail/1");
|
||||||
|
}}>
|
||||||
|
{item.name.last}
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
description={item.email}
|
||||||
|
/>
|
||||||
|
<div>Content</div>
|
||||||
|
</List.Item>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</InfiniteScroll>
|
||||||
|
</ProCard>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
@@ -0,0 +1,9 @@
|
|||||||
|
.share_list_main{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
.share_list_header{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,39 +1,46 @@
|
|||||||
/** @format */
|
/** @format */
|
||||||
import { FunctionComponent } from "react";
|
import { FunctionComponent } from "react";
|
||||||
import { ProCard } from "@ant-design/pro-components";
|
import { ProCard } from "@ant-design/pro-components";
|
||||||
import styles from "./index.module.less";
|
import styles from "./index.module.less";
|
||||||
import { Avatar, Button, Card } from "antd";
|
import { Button, Card, Image } from "antd";
|
||||||
import setting from "@/assets/icons/setting.svg";
|
|
||||||
import Search from "antd/es/input/Search";
|
import Search from "antd/es/input/Search";
|
||||||
import Meta from "antd/es/card/Meta";
|
import Meta from "antd/es/card/Meta";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
const MainShare: FunctionComponent = () => {
|
import background from "@/assets/images/background.png";
|
||||||
const navigate = useNavigate();
|
const MainShare: FunctionComponent = () => {
|
||||||
return (
|
const navigate = useNavigate();
|
||||||
<>
|
return (
|
||||||
<div className={styles.share_main}>
|
<>
|
||||||
<ProCard bordered={true} boxShadow={true}>
|
<div className={styles.share_main}>
|
||||||
<div className={styles.share_header}>
|
<ProCard bordered={true} boxShadow={false}>
|
||||||
<Search placeholder="搜索圈子" style={{ width: 500 }} />
|
<div className={styles.share_header}>
|
||||||
<Button>创建圈子</Button>
|
<Search placeholder="搜索圈子" style={{ width: 500 }} />
|
||||||
</div>
|
<Button>创建圈子</Button>
|
||||||
</ProCard>
|
</div>
|
||||||
<ProCard bordered={true} boxShadow={true} style={{ marginTop: 20 }}>
|
</ProCard>
|
||||||
<Card
|
<ProCard bordered={true} boxShadow={false} style={{ marginTop: 20 }}>
|
||||||
style={{ width: 250, marginTop: 16 }}
|
<Card
|
||||||
hoverable
|
hoverable
|
||||||
onClick={() => {
|
style={{ width: 240 }}
|
||||||
navigate("/main/share/list/1");
|
onClick={() => {
|
||||||
}}>
|
navigate("/main/share/list/1");
|
||||||
<Meta
|
}}
|
||||||
avatar={<Avatar src={setting} />}
|
cover={
|
||||||
title="Card title"
|
<Image
|
||||||
description="This is the description"
|
alt="example"
|
||||||
/>
|
src={background}
|
||||||
</Card>
|
style={{ height: 200 }}
|
||||||
</ProCard>
|
preview={false}
|
||||||
</div>
|
width={"100%"}
|
||||||
</>
|
fallback="data:image/png;base64,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"
|
||||||
);
|
/>
|
||||||
};
|
}>
|
||||||
export default MainShare;
|
<Meta title="Europe Street beat" description="www.instagram.com" />
|
||||||
|
</Card>
|
||||||
|
</ProCard>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default MainShare;
|
||||||
|
11
src/router/modules/main/share/modules/shareDetail.tsx
Normal file
11
src/router/modules/main/share/modules/shareDetail.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/** @format */
|
||||||
|
|
||||||
|
import { lazy } from "react";
|
||||||
|
|
||||||
|
const ShareDetail = lazy(
|
||||||
|
() =>
|
||||||
|
new Promise((resolve: any) => {
|
||||||
|
resolve(import("@/components/Main/Share/components/ShareDetail/ShareDetail.tsx"));
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
export default ShareDetail;
|
@@ -5,7 +5,7 @@ import { lazy } from "react";
|
|||||||
const ShareList = lazy(
|
const ShareList = lazy(
|
||||||
() =>
|
() =>
|
||||||
new Promise((resolve: any) => {
|
new Promise((resolve: any) => {
|
||||||
resolve(import("@/components/Main/Share/components/ShareList"));
|
resolve(import("@/components/Main/Share/components/ShareList/ShareList.tsx"));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
export default ShareList;
|
export default ShareList;
|
||||||
|
@@ -32,6 +32,7 @@ import Wangyi from "@/router/modules/main/settings/wangyi/wangyi.ts";
|
|||||||
import Jinshan from "@/router/modules/main/settings/jinshan/jinshan.ts";
|
import Jinshan from "@/router/modules/main/settings/jinshan/jinshan.ts";
|
||||||
import Qiniu from "@/router/modules/main/settings/qiniu/qiniu.ts";
|
import Qiniu from "@/router/modules/main/settings/qiniu/qiniu.ts";
|
||||||
import ShareList from "@/router/modules/main/share/modules/shareList.tsx";
|
import ShareList from "@/router/modules/main/share/modules/shareList.tsx";
|
||||||
|
import ShareDetail from "@/router/modules/main/share/modules/shareDetail.tsx";
|
||||||
import minioBucket from "@/router/modules/main/bucket/createBuckets/minio.ts";
|
import minioBucket from "@/router/modules/main/bucket/createBuckets/minio.ts";
|
||||||
import tencentBucket from "@/router/modules/main/bucket/createBuckets/tencent.ts";
|
import tencentBucket from "@/router/modules/main/bucket/createBuckets/tencent.ts";
|
||||||
import aliBucket from "@/router/modules/main/bucket/createBuckets/ali.ts";
|
import aliBucket from "@/router/modules/main/bucket/createBuckets/ali.ts";
|
||||||
@@ -158,6 +159,10 @@ const routes: RouteObject[] = [
|
|||||||
path: "/main/share/list/:id",
|
path: "/main/share/list/:id",
|
||||||
Component: ShareList,
|
Component: ShareList,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/main/share/detail/:id",
|
||||||
|
Component: ShareDetail,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/main/setting",
|
path: "/main/setting",
|
||||||
Component: MainSetting,
|
Component: MainSetting,
|
||||||
|
32
src/types/user.d.ts
vendored
Normal file
32
src/types/user.d.ts
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/** @format */
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
|
declare namespace API {
|
||||||
|
type PhoneRegisterRequest = {
|
||||||
|
phone?: string;
|
||||||
|
userName?: string;
|
||||||
|
password?: string;
|
||||||
|
confirmPassword?: string;
|
||||||
|
activeCode?: string;
|
||||||
|
};
|
||||||
|
type LoginRequest = {
|
||||||
|
userName?: string;
|
||||||
|
password?: string;
|
||||||
|
token: string;
|
||||||
|
deg: number;
|
||||||
|
};
|
||||||
|
type LoginByPhoneRequest = {
|
||||||
|
phone?: string;
|
||||||
|
activeCode?: string;
|
||||||
|
token: string;
|
||||||
|
deg: number;
|
||||||
|
};
|
||||||
|
type findPasswordRequest = {
|
||||||
|
phone?: string;
|
||||||
|
password?: string;
|
||||||
|
confirmPassword?: string;
|
||||||
|
activeCode?: string;
|
||||||
|
token: string;
|
||||||
|
deg: number;
|
||||||
|
};
|
||||||
|
}
|
261
src/types/user/user.d.ts
vendored
261
src/types/user/user.d.ts
vendored
@@ -1,261 +0,0 @@
|
|||||||
/** @format */
|
|
||||||
/* eslint-disable */
|
|
||||||
|
|
||||||
declare namespace API {
|
|
||||||
type PhoneRegisterRequest = {
|
|
||||||
phone?: string;
|
|
||||||
userName?: string;
|
|
||||||
password?: string;
|
|
||||||
confirmPassword?: string;
|
|
||||||
activeCode?: string;
|
|
||||||
};
|
|
||||||
type LoginRequest = {
|
|
||||||
userName?: string;
|
|
||||||
password?: string;
|
|
||||||
token: string;
|
|
||||||
deg: number;
|
|
||||||
};
|
|
||||||
type LoginByPhoneRequest = {
|
|
||||||
phone?: string;
|
|
||||||
activeCode?: string;
|
|
||||||
token: string;
|
|
||||||
deg: number;
|
|
||||||
};
|
|
||||||
type findPasswordRequest = {
|
|
||||||
phone?: string;
|
|
||||||
password?: string;
|
|
||||||
confirmPassword?: string;
|
|
||||||
activeCode?: string;
|
|
||||||
token: string;
|
|
||||||
deg: number;
|
|
||||||
};
|
|
||||||
// type ApiResponse<T> = {
|
|
||||||
// success?: boolean;
|
|
||||||
// code?: number;
|
|
||||||
// codeMessage?: string;
|
|
||||||
// errorMessage?: Map<string, string>;
|
|
||||||
// showType?: ErrorShowType;
|
|
||||||
// data: T
|
|
||||||
// }
|
|
||||||
// type CurrentUser = {
|
|
||||||
// name?: string;
|
|
||||||
// avatar?: string;
|
|
||||||
// userid?: string;
|
|
||||||
// email?: string;
|
|
||||||
// signature?: string;
|
|
||||||
// title?: string;
|
|
||||||
// group?: string;
|
|
||||||
// tags?: { key?: string; label?: string }[];
|
|
||||||
// notifyCount?: number;
|
|
||||||
// unreadCount?: number;
|
|
||||||
// country?: string;
|
|
||||||
// access?: string;
|
|
||||||
// geographic?: {
|
|
||||||
// province?: { label?: string; key?: string };
|
|
||||||
// city?: { label?: string; key?: string };
|
|
||||||
// };
|
|
||||||
// address?: string;
|
|
||||||
// phone?: string;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type LoginResult = ResponseStructure & {
|
|
||||||
// data?: {
|
|
||||||
// token?: string;
|
|
||||||
// expireDateTime?: number;
|
|
||||||
// expire?: number;
|
|
||||||
// timeUnit?: any;
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type PageParams = {
|
|
||||||
// pageNum?: number;
|
|
||||||
// pageSize?: number;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// type RuleListItem = {
|
|
||||||
// key?: number;
|
|
||||||
// disabled?: boolean;
|
|
||||||
// href?: string;
|
|
||||||
// avatar?: string;
|
|
||||||
// name?: string;
|
|
||||||
// owner?: string;
|
|
||||||
// desc?: string;
|
|
||||||
// callNo?: number;
|
|
||||||
// status?: number;
|
|
||||||
// updatedAt?: string;
|
|
||||||
// createdAt?: string;
|
|
||||||
// progress?: number;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// type RuleList = {
|
|
||||||
// data?: RuleListItem[];
|
|
||||||
// /** 列表的内容总数 */
|
|
||||||
// total?: number;
|
|
||||||
// success?: boolean;
|
|
||||||
// };
|
|
||||||
// interface ResponseStructure {
|
|
||||||
// success?: boolean;
|
|
||||||
// code?: number;
|
|
||||||
// codeMessage?: string;
|
|
||||||
// errorMessage?: Map<string, string>;
|
|
||||||
// showType?: ErrorShowType;
|
|
||||||
// }
|
|
||||||
// type
|
|
||||||
// FakeCaptcha = ResponseStructure & {
|
|
||||||
// data?: boolean,
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type PhonePasswordLoginParams = {
|
|
||||||
// clientId?: string;
|
|
||||||
// phone?: string;
|
|
||||||
// password?: string;
|
|
||||||
// code?: string;
|
|
||||||
// autoLogin?: boolean;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type PhoneSmsCodeLoginParams = {
|
|
||||||
// clientId?: string;
|
|
||||||
// phone?: string;
|
|
||||||
// smsCode?: string;
|
|
||||||
// autoLogin?: boolean;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type ErrorResponse = {
|
|
||||||
// /** 业务约定的错误码 */
|
|
||||||
// errorCode: string;
|
|
||||||
// /** 业务上的错误信息 */
|
|
||||||
// errorMessage?: Map<string, string>;
|
|
||||||
// /** 业务上的请求是否成功 */
|
|
||||||
// success?: boolean;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type NoticeIconList = {
|
|
||||||
// data?: NoticeIconItem[];
|
|
||||||
// /** 列表的内容总数 */
|
|
||||||
// total?: number;
|
|
||||||
// success?: boolean;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// type NoticeIconItemType = 'notification' | 'message' | 'event';
|
|
||||||
|
|
||||||
// type NoticeIconItem = {
|
|
||||||
// id?: string;
|
|
||||||
// extra?: string;
|
|
||||||
// key?: string;
|
|
||||||
// read?: boolean;
|
|
||||||
// avatar?: string;
|
|
||||||
// title?: string;
|
|
||||||
// status?: string;
|
|
||||||
// datetime?: string;
|
|
||||||
// description?: string;
|
|
||||||
// type?: NoticeIconItemType;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// type GenerateMpRegCode = {
|
|
||||||
// data?: {
|
|
||||||
// regCode?: string;
|
|
||||||
// qrCodeUrl?: string;
|
|
||||||
// expireSeconds?: number;
|
|
||||||
// ticket?: string;
|
|
||||||
// url?: string;
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
|
|
||||||
// type GetClientId = {
|
|
||||||
// data?: string;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// type GenerateBase64Code = {
|
|
||||||
// data?: string;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// type GetClientToken = {
|
|
||||||
// data?: {
|
|
||||||
// token?: string;
|
|
||||||
// expireDateTime?: number;
|
|
||||||
// expire?: number;
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
|
|
||||||
// type PhoneRegisterResponse = ResponseStructure & {
|
|
||||||
// data?: number;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// type CustomValidate = {
|
|
||||||
// validateStatus?: boolean;
|
|
||||||
// msg?: string;
|
|
||||||
// formValue?: any;
|
|
||||||
// code?: number;
|
|
||||||
// codeMessage?: string;
|
|
||||||
// errors?: Map<string, string>;
|
|
||||||
// validateFields: ValidateFields<Values>;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// type ListAccountBookVo = ResponseStructure & {
|
|
||||||
// data?: {
|
|
||||||
// total?: number;
|
|
||||||
// list?: ListAccountBookVoItem[]
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// type ListAccountBookVoItem = {
|
|
||||||
// id: number;
|
|
||||||
// companyName?: string;
|
|
||||||
// valueAddedTaxCate?: string;
|
|
||||||
// accountingStandard?: string;
|
|
||||||
// startTime?: Date;
|
|
||||||
// createTime?: Date;
|
|
||||||
// enableVoucherVerify?: boolean;
|
|
||||||
// disable?: boolean;
|
|
||||||
// }
|
|
||||||
// type GetAccountBookVo = {
|
|
||||||
// id?: number;
|
|
||||||
// companyName?: string;
|
|
||||||
// unifiedSocialCreditCode?: string;
|
|
||||||
// industryId?: number;
|
|
||||||
// valueAddedTaxCate?: number;
|
|
||||||
// enableVoucherVerify?: boolean;
|
|
||||||
// startTime?: Date;
|
|
||||||
// accountingStandard?: number;
|
|
||||||
// enableFixedAssets?: boolean;
|
|
||||||
// enableCapital?: boolean;
|
|
||||||
// enablePsi?: boolean;
|
|
||||||
// }
|
|
||||||
// type DataDictionaryVo = {
|
|
||||||
// dataCode?: string;
|
|
||||||
// dataValue?: string;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// type ListTreeMenuVo = {
|
|
||||||
// id?: number;
|
|
||||||
// key?: string;
|
|
||||||
// title?: any;
|
|
||||||
// icon?: string;
|
|
||||||
// checked?: boolean;
|
|
||||||
// children?: ListTreeMenuVo[];
|
|
||||||
// level?: number;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// type ListTreeSelectMenuVo = {
|
|
||||||
// id?: number;
|
|
||||||
// value?: string;
|
|
||||||
// title?: any;
|
|
||||||
// children?: ListTreeMenuVo[];
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// type ListRoleVo = {
|
|
||||||
// id: number;
|
|
||||||
// roleName?: string;
|
|
||||||
// disable?: boolean;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// type ListSubject = {
|
|
||||||
// id: number;
|
|
||||||
// pid?: number;
|
|
||||||
// valueAddedTaxCate?: string;
|
|
||||||
// accountingStandard?: string;
|
|
||||||
// startTime?: Date;
|
|
||||||
// createTime?: Date;
|
|
||||||
// enableVoucherVerify?: boolean;
|
|
||||||
// disable?: boolean;
|
|
||||||
// }
|
|
||||||
}
|
|
Reference in New Issue
Block a user