Browse Source

chore: update pnpm lock file

pull/10914/head
期贤 3 years ago
parent
commit
8f9d4768f1
  1. 5
      .prettierrc.js
  2. 2
      config/routes.ts
  3. 2
      mock/analysis.mock.ts
  4. 2
      mock/listTableList.ts
  5. 2
      mock/monitor.mock.ts
  6. 65
      package.json
  7. 12910
      pnpm-lock.yaml
  8. 2
      src/app.tsx
  9. 4
      src/components/HeaderDropdown/index.tsx
  10. 1
      src/components/RightContent/index.tsx
  11. 4
      src/pages/User/Login/index.tsx
  12. 4
      src/pages/User/Login/login.test.tsx
  13. 38
      src/pages/account/center/components/Applications/index.tsx
  14. 2
      src/pages/account/center/components/ArticleListContent/index.tsx
  15. 6
      src/pages/account/center/components/Articles/index.tsx
  16. 2
      src/pages/account/center/components/AvatarList/index.tsx
  17. 8
      src/pages/account/center/components/Projects/index.tsx
  18. 14
      src/pages/account/center/index.tsx
  19. 2
      src/pages/account/settings/components/PhoneView.tsx
  20. 7
      src/pages/account/settings/components/base.tsx
  21. 2
      src/pages/account/settings/components/security.tsx
  22. 2
      src/pages/account/settings/index.tsx
  23. 2
      src/pages/dashboard/analysis/_mock.ts
  24. 2
      src/pages/dashboard/analysis/components/Charts/Bar/index.tsx
  25. 2
      src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx
  26. 2
      src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx
  27. 9
      src/pages/dashboard/analysis/components/Charts/Pie/index.tsx
  28. 7
      src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx
  29. 4
      src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx
  30. 1
      src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx
  31. 8
      src/pages/dashboard/analysis/components/IntroduceRow.tsx
  32. 4
      src/pages/dashboard/analysis/components/NumberInfo/index.tsx
  33. 24
      src/pages/dashboard/analysis/components/OfflineData.tsx
  34. 6
      src/pages/dashboard/analysis/components/ProportionSales.tsx
  35. 264
      src/pages/dashboard/analysis/components/SalesCard.tsx
  36. 6
      src/pages/dashboard/analysis/components/TopSearch.tsx
  37. 4
      src/pages/dashboard/analysis/components/Trend/index.tsx
  38. 45
      src/pages/dashboard/analysis/index.tsx
  39. 2
      src/pages/dashboard/analysis/utils/utils.ts
  40. 2
      src/pages/dashboard/monitor/_mock.ts
  41. 2
      src/pages/dashboard/monitor/components/ActiveChart/index.tsx
  42. 9
      src/pages/dashboard/monitor/components/Charts/Pie/index.tsx
  43. 7
      src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx
  44. 1
      src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx
  45. 4
      src/pages/dashboard/monitor/components/Map/index.tsx
  46. 12
      src/pages/dashboard/monitor/index.tsx
  47. 2
      src/pages/dashboard/workplace/_mock.ts
  48. 2
      src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx
  49. 2
      src/pages/dashboard/workplace/components/Radar/index.tsx
  50. 12
      src/pages/dashboard/workplace/index.tsx
  51. 2
      src/pages/dashboard/workplace/service.ts
  52. 2
      src/pages/exception/403/index.tsx
  53. 2
      src/pages/exception/404/index.tsx
  54. 2
      src/pages/exception/500/index.tsx
  55. 2
      src/pages/form/advanced-form/components/TableForm.tsx
  56. 13
      src/pages/form/advanced-form/index.tsx
  57. 4
      src/pages/form/basic-form/index.tsx
  58. 8
      src/pages/form/step-form/index.tsx
  59. 6
      src/pages/list/basic-list/components/OperationModal.tsx
  60. 30
      src/pages/list/basic-list/index.tsx
  61. 4
      src/pages/list/card-list/index.tsx
  62. 2
      src/pages/list/search/applications/components/StandardFormRow/index.tsx
  63. 41
      src/pages/list/search/applications/index.tsx
  64. 2
      src/pages/list/search/applications/service.ts
  65. 2
      src/pages/list/search/articles/components/ArticleListContent/index.tsx
  66. 2
      src/pages/list/search/articles/components/StandardFormRow/index.tsx
  67. 2
      src/pages/list/search/articles/service.ts
  68. 6
      src/pages/list/search/index.tsx
  69. 2
      src/pages/list/search/projects/components/AvatarList/index.tsx
  70. 2
      src/pages/list/search/projects/components/StandardFormRow/index.tsx
  71. 6
      src/pages/list/search/projects/index.tsx
  72. 2
      src/pages/list/search/projects/service.ts
  73. 50
      src/pages/list/search/projects/utils/utils.less
  74. 6
      src/pages/list/search/projects/utils/utils.style.ts
  75. 2
      src/pages/list/table-list/components/CreateForm.tsx
  76. 8
      src/pages/list/table-list/components/UpdateForm.tsx
  77. 22
      src/pages/list/table-list/index.tsx
  78. 66
      src/pages/profile/advanced/index.tsx
  79. 5
      src/pages/profile/basic/index.tsx
  80. 2
      src/pages/result/fail/index.tsx
  81. 4
      src/pages/result/success/index.tsx
  82. 2
      src/pages/user/register-result/index.tsx
  83. 8
      src/pages/user/register/index.tsx

5
.prettierrc.js

@ -18,4 +18,9 @@ module.exports = {
}, },
}, },
], ],
plugins: [
'prettier-plugin-organize-imports',
'prettier-plugin-packagejson',
'prettier-plugin-two-style-order',
],
}; };

2
config/routes.ts

@ -19,7 +19,7 @@ export default [
path: '/user/login', path: '/user/login',
layout: false, layout: false,
name: 'login', name: 'login',
component: './user/Login', component: './user/login',
}, },
{ {
path: '/user', path: '/user',

2
mock/analysis.mock.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
import type { AnalysisData, RadarData, DataItem } from './data'; import type { AnalysisData, DataItem, RadarData } from './data';
// mock data // mock data
const visitData: DataItem[] = []; const visitData: DataItem[] = [];

2
mock/listTableList.ts

@ -1,5 +1,5 @@
import { Request, Response } from 'express';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { Request, Response } from 'express';
import { parse } from 'url'; import { parse } from 'url';
// mock tableListDataSource // mock tableListDataSource

2
mock/monitor.mock.ts

@ -1,5 +1,5 @@
import mockjs from 'mockjs';
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
import mockjs from 'mockjs';
const getTags = (_: Request, res: Response) => { const getTags = (_: Request, res: Response) => {
return res.json({ return res.json({

65
package.json

@ -37,33 +37,33 @@
"not ie <= 10" "not ie <= 10"
], ],
"dependencies": { "dependencies": {
"@ant-design/charts": "^0.9.4", "@ant-design/charts": "^0.9.13",
"@ant-design/icons": "^4.8.0", "@ant-design/icons": "^4.8.1",
"@ant-design/pro-components": "^2.3.57", "@ant-design/pro-components": "^2.6.13",
"@ant-design/use-emotion-css": "1.0.4", "@ant-design/use-emotion-css": "1.0.4",
"@antv/data-set": "^0.11.0", "@antv/data-set": "^0.11.8",
"@antv/l7": "^2.3.7", "@antv/l7": "^2.17.11",
"@antv/l7-maps": "^2.3.7", "@antv/l7-maps": "^2.17.11",
"@antv/l7-react": "^2.1.9", "@antv/l7-react": "^2.4.3",
"@types/lodash.debounce": "^4.0.7", "@types/lodash.debounce": "^4.0.7",
"@umijs/route-utils": "^2.2.2", "@umijs/route-utils": "^2.2.2",
"ahooks": "^2.0.0", "ahooks": "^2.10.14",
"antd": "^5.2.2", "antd": "^5.8.4",
"antd-style": "^2.0.2", "antd-style": "^2.0.2",
"bizcharts": "^3.5.3-beta.0", "bizcharts": "^3.5.10",
"bizcharts-plugin-slider": "^2.1.1-beta.1", "bizcharts-plugin-slider": "^2.1.1",
"classnames": "^2.3.2", "classnames": "^2.3.2",
"dayjs": "^1.11.7", "dayjs": "^1.11.9",
"gg-editor": "^2.0.2", "gg-editor": "^2.0.4",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lodash-decorators": "^6.0.0", "lodash-decorators": "^6.0.1",
"numeral": "^2.0.6", "numeral": "^2.0.6",
"nzh": "^1.0.3", "nzh": "^1.0.11",
"omit.js": "^2.0.2", "omit.js": "^2.0.2",
"rc-menu": "^9.8.2", "rc-menu": "^9.11.1",
"rc-util": "^5.27.2", "rc-util": "^5.37.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dev-inspector": "^1.8.4", "react-dev-inspector": "^1.9.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-fittext": "^1.0.0", "react-fittext": "^1.0.0",
"react-helmet-async": "^1.3.0", "react-helmet-async": "^1.3.0",
@ -72,31 +72,34 @@
"devDependencies": { "devDependencies": {
"@ant-design/pro-cli": "^2.1.5", "@ant-design/pro-cli": "^2.1.5",
"@testing-library/react": "^13.4.0", "@testing-library/react": "^13.4.0",
"@trivago/prettier-plugin-sort-imports": "^4.1.1", "@trivago/prettier-plugin-sort-imports": "^4.2.0",
"@types/classnames": "^2.3.1", "@types/classnames": "^2.3.1",
"@types/express": "^4.17.17", "@types/express": "^4.17.17",
"@types/history": "^4.7.11", "@types/history": "^4.7.11",
"@types/jest": "^29.4.0", "@types/jest": "^29.5.4",
"@types/lodash": "^4.14.191", "@types/lodash": "^4.14.197",
"@types/react": "^18.0.28", "@types/react": "^18.2.21",
"@types/react-dom": "^18.0.11", "@types/react-dom": "^18.2.7",
"@types/react-helmet": "^6.1.6", "@types/react-helmet": "^6.1.6",
"@umijs/fabric": "^2.14.1", "@umijs/fabric": "^2.14.1",
"@umijs/lint": "^4.0.52", "@umijs/lint": "^4.0.78",
"@umijs/max": "^4.0.52", "@umijs/max": "^4.0.78",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^8.34.0", "eslint": "^8.48.0",
"express": "^4.18.2", "express": "^4.18.2",
"gh-pages": "^3.2.3", "gh-pages": "^3.2.3",
"husky": "^7.0.4", "husky": "^7.0.4",
"jest": "^29.4.3", "jest": "^29.6.4",
"jest-environment-jsdom": "^29.4.3", "jest-environment-jsdom": "^29.6.4",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"prettier": "^2.8.4", "prettier": "^3.0.2",
"swagger-ui-dist": "^4.15.5", "prettier-plugin-organize-imports": "^3.2.3",
"prettier-plugin-packagejson": "^2.4.5",
"prettier-plugin-two-style-order": "^1.0.1",
"swagger-ui-dist": "^4.19.1",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^4.9.5", "typescript": "^4.9.5",
"umi-presets-pro": "^2.0.2" "umi-presets-pro": "^2.0.3"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"

12910
pnpm-lock.yaml

File diff suppressed because it is too large

2
src/app.tsx

@ -6,9 +6,9 @@ import { SettingDrawer } from '@ant-design/pro-components';
import type { RunTimeLayoutConfig } from '@umijs/max'; import type { RunTimeLayoutConfig } from '@umijs/max';
import { history, Link } from '@umijs/max'; import { history, Link } from '@umijs/max';
import defaultSettings from '../config/defaultSettings'; import defaultSettings from '../config/defaultSettings';
import { AvatarDropdown, AvatarName } from './components/RightContent/AvatarDropdown';
import { errorConfig } from './requestErrorConfig'; import { errorConfig } from './requestErrorConfig';
import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; import { currentUser as queryCurrentUser } from './services/ant-design-pro/api';
import { AvatarDropdown, AvatarName } from './components/RightContent/AvatarDropdown';
const isDev = process.env.NODE_ENV === 'development'; const isDev = process.env.NODE_ENV === 'development';
const loginPath = '/user/login'; const loginPath = '/user/login';

4
src/components/HeaderDropdown/index.tsx

@ -1,8 +1,8 @@
import { useEmotionCss } from '@ant-design/use-emotion-css';
import { Dropdown } from 'antd'; import { Dropdown } from 'antd';
import type { DropDownProps } from 'antd/es/dropdown'; import type { DropDownProps } from 'antd/es/dropdown';
import React from 'react';
import { useEmotionCss } from '@ant-design/use-emotion-css';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
export type HeaderDropdownProps = { export type HeaderDropdownProps = {
overlayClassName?: string; overlayClassName?: string;

1
src/components/RightContent/index.tsx

@ -1,6 +1,5 @@
import { QuestionCircleOutlined } from '@ant-design/icons'; import { QuestionCircleOutlined } from '@ant-design/icons';
import { SelectLang as UmiSelectLang } from '@umijs/max'; import { SelectLang as UmiSelectLang } from '@umijs/max';
import React from 'react';
export type SiderTheme = 'light' | 'dark'; export type SiderTheme = 'light' | 'dark';

4
src/pages/User/Login/index.tsx

@ -16,11 +16,11 @@ import {
ProFormText, ProFormText,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import { useEmotionCss } from '@ant-design/use-emotion-css'; import { useEmotionCss } from '@ant-design/use-emotion-css';
import { FormattedMessage, history, SelectLang, useIntl, useModel, Helmet } from '@umijs/max'; import { FormattedMessage, Helmet, history, SelectLang, useIntl, useModel } from '@umijs/max';
import { Alert, message, Tabs } from 'antd'; import { Alert, message, Tabs } from 'antd';
import Settings from '../../../../config/defaultSettings';
import React, { useState } from 'react'; import React, { useState } from 'react';
import { flushSync } from 'react-dom'; import { flushSync } from 'react-dom';
import Settings from '../../../../config/defaultSettings';
const ActionIcons = () => { const ActionIcons = () => {
const langClassName = useEmotionCss(({ token }) => { const langClassName = useEmotionCss(({ token }) => {

4
src/pages/User/Login/login.test.tsx

@ -1,6 +1,6 @@
import { render, fireEvent, act } from '@testing-library/react'; import { TestBrowser } from '@@/testBrowser';
import { act, fireEvent, render } from '@testing-library/react';
import React from 'react'; import React from 'react';
import { TestBrowser } from '@@/testBrowser';
// @ts-ignore // @ts-ignore
import { startMock } from '@@/requestRecordMock'; import { startMock } from '@@/requestRecordMock';

38
src/pages/account/center/components/Applications/index.tsx

@ -5,9 +5,9 @@ import {
ShareAltOutlined, ShareAltOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { useRequest } from '@umijs/max'; import { useRequest } from '@umijs/max';
import { Avatar, Card, Dropdown, List, Menu, Tooltip } from 'antd'; import { Avatar, Card, Dropdown, List, Tooltip } from 'antd';
import React from 'react';
import numeral from 'numeral'; import numeral from 'numeral';
import React from 'react';
import type { ListItemDataType } from '../../data.d'; import type { ListItemDataType } from '../../data.d';
import { queryFakeList } from '../../service'; import { queryFakeList } from '../../service';
import useStyles from './index.style'; import useStyles from './index.style';
@ -43,25 +43,7 @@ const Applications: React.FC = () => {
count: 30, count: 30,
}); });
}); });
const itemMenu = (
<Menu>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="https://www.alipay.com/">
1st menu item
</a>
</Menu.Item>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="https://www.taobao.com/">
2nd menu item
</a>
</Menu.Item>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="https://www.tmall.com/">
3d menu item
</a>
</Menu.Item>
</Menu>
);
const CardInfo: React.FC<{ const CardInfo: React.FC<{
activeUser: React.ReactNode; activeUser: React.ReactNode;
newUser: React.ReactNode; newUser: React.ReactNode;
@ -108,7 +90,19 @@ const Applications: React.FC = () => {
<Tooltip title="分享" key="share"> <Tooltip title="分享" key="share">
<ShareAltOutlined /> <ShareAltOutlined />
</Tooltip>, </Tooltip>,
<Dropdown overlay={itemMenu} key="ellipsis"> <Dropdown
items={[
{
key: '1',
title: '1st menu item',
},
{
key: '2',
title: '2nd menu item',
},
]}
key="ellipsis"
>
<EllipsisOutlined /> <EllipsisOutlined />
</Dropdown>, </Dropdown>,
]} ]}

2
src/pages/account/center/components/ArticleListContent/index.tsx

@ -1,6 +1,6 @@
import { Avatar } from 'antd'; import { Avatar } from 'antd';
import React from 'react';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export type ApplicationsProps = { export type ApplicationsProps = {
data: { data: {

6
src/pages/account/center/components/Articles/index.tsx

@ -1,10 +1,10 @@
import React from 'react'; import { LikeOutlined, MessageFilled, StarTwoTone } from '@ant-design/icons';
import { StarTwoTone, LikeOutlined, MessageFilled } from '@ant-design/icons';
import { useRequest } from '@umijs/max'; import { useRequest } from '@umijs/max';
import { List, Tag } from 'antd'; import { List, Tag } from 'antd';
import ArticleListContent from '../ArticleListContent'; import React from 'react';
import type { ListItemDataType } from '../../data.d'; import type { ListItemDataType } from '../../data.d';
import { queryFakeList } from '../../service'; import { queryFakeList } from '../../service';
import ArticleListContent from '../ArticleListContent';
import useStyles from './index.style'; import useStyles from './index.style';
const Articles: React.FC = () => { const Articles: React.FC = () => {
const { styles } = useStyles(); const { styles } = useStyles();

2
src/pages/account/center/components/AvatarList/index.tsx

@ -1,6 +1,6 @@
import { Avatar, Tooltip } from 'antd'; import { Avatar, Tooltip } from 'antd';
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export declare type SizeType = number | 'small' | 'default' | 'large'; export declare type SizeType = number | 'small' | 'default' | 'large';
export type AvatarItemProps = { export type AvatarItemProps = {

8
src/pages/account/center/components/Projects/index.tsx

@ -1,12 +1,12 @@
import { Card, List } from 'antd';
import { useRequest } from '@umijs/max'; import { useRequest } from '@umijs/max';
import React from 'react'; import { Card, List } from 'antd';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import React from 'react';
import type { ListItemDataType } from '../../data.d';
import { queryFakeList } from '../../service'; import { queryFakeList } from '../../service';
import AvatarList from '../AvatarList'; import AvatarList from '../AvatarList';
import type { ListItemDataType } from '../../data.d';
import useStyles from './index.style'; import useStyles from './index.style';
import relativeTime from 'dayjs/plugin/relativeTime';
dayjs.extend(relativeTime); dayjs.extend(relativeTime);
const Projects: React.FC = () => { const Projects: React.FC = () => {
const { styles } = useStyles(); const { styles } = useStyles();

14
src/pages/account/center/index.tsx

@ -1,14 +1,14 @@
import { PlusOutlined, HomeOutlined, ContactsOutlined, ClusterOutlined } from '@ant-design/icons'; import { ClusterOutlined, ContactsOutlined, HomeOutlined, PlusOutlined } from '@ant-design/icons';
import { Avatar, Card, Col, Divider, Input, InputRef, Row, Tag } from 'antd';
import React, { useState, useRef } from 'react';
import { GridContent } from '@ant-design/pro-components'; import { GridContent } from '@ant-design/pro-components';
import { Link, useRequest } from '@umijs/max'; import { Link, useRequest } from '@umijs/max';
import Projects from './components/Projects'; import { Avatar, Card, Col, Divider, Input, InputRef, Row, Tag } from 'antd';
import Articles from './components/Articles'; import React, { useRef, useState } from 'react';
import useStyles from './Center.style';
import Applications from './components/Applications'; import Applications from './components/Applications';
import type { CurrentUser, TagType, tabKeyType } from './data.d'; import Articles from './components/Articles';
import Projects from './components/Projects';
import type { CurrentUser, tabKeyType, TagType } from './data.d';
import { queryCurrent } from './service'; import { queryCurrent } from './service';
import useStyles from './Center.style';
const operationTabList = [ const operationTabList = [
{ {
key: 'articles', key: 'articles',

2
src/pages/account/settings/components/PhoneView.tsx

@ -1,5 +1,5 @@
import React from 'react';
import { Input } from 'antd'; import { Input } from 'antd';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
type PhoneViewProps = { type PhoneViewProps = {

7
src/pages/account/settings/components/base.tsx

@ -1,6 +1,4 @@
import React from 'react';
import { UploadOutlined } from '@ant-design/icons'; import { UploadOutlined } from '@ant-design/icons';
import { Button, Input, Upload, message } from 'antd';
import { import {
ProForm, ProForm,
ProFormDependency, ProFormDependency,
@ -10,8 +8,9 @@ import {
ProFormTextArea, ProFormTextArea,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max'; import { useRequest } from '@umijs/max';
import { queryCurrent } from '../service'; import { Button, Input, message, Upload } from 'antd';
import { queryProvince, queryCity } from '../service'; import React from 'react';
import { queryCity, queryCurrent, queryProvince } from '../service';
import useStyles from './index.style'; import useStyles from './index.style';
const validatorPhone = (rule: any, value: string[], callback: (message?: string) => void) => { const validatorPhone = (rule: any, value: string[], callback: (message?: string) => void) => {

2
src/pages/account/settings/components/security.tsx

@ -1,5 +1,5 @@
import React from 'react';
import { List } from 'antd'; import { List } from 'antd';
import React from 'react';
type Unpacked<T> = T extends (infer U)[] ? U : T; type Unpacked<T> = T extends (infer U)[] ? U : T;

2
src/pages/account/settings/index.tsx

@ -1,6 +1,6 @@
import React, { useState, useRef, useLayoutEffect } from 'react';
import { GridContent } from '@ant-design/pro-components'; import { GridContent } from '@ant-design/pro-components';
import { Menu } from 'antd'; import { Menu } from 'antd';
import React, { useLayoutEffect, useRef, useState } from 'react';
import BaseView from './components/base'; import BaseView from './components/base';
import BindingView from './components/binding'; import BindingView from './components/binding';
import NotificationView from './components/notification'; import NotificationView from './components/notification';

2
src/pages/dashboard/analysis/_mock.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
import type { AnalysisData, RadarData, DataItem } from './data.d'; import type { AnalysisData, DataItem, RadarData } from './data.d';
// mock data // mock data
const visitData: DataItem[] = []; const visitData: DataItem[] = [];

2
src/pages/dashboard/analysis/components/Charts/Bar/index.tsx

@ -1,6 +1,6 @@
import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; import { Axis, Chart, Geom, Tooltip } from 'bizcharts';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import Debounce from 'lodash.debounce'; import Debounce from 'lodash.debounce';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import useStyles from '../index.style'; import useStyles from '../index.style';
export type BarProps = { export type BarProps = {

2
src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx

@ -1,7 +1,7 @@
import { Card } from 'antd'; import { Card } from 'antd';
import type { CardProps } from 'antd/es/card'; import type { CardProps } from 'antd/es/card';
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
type totalType = () => React.ReactNode; type totalType = () => React.ReactNode;

2
src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx

@ -1,5 +1,5 @@
import React from 'react';
import { Tooltip } from 'antd'; import { Tooltip } from 'antd';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export type MiniProgressProps = { export type MiniProgressProps = {
target: number; target: number;

9
src/pages/dashboard/analysis/components/Charts/Pie/index.tsx

@ -1,12 +1,11 @@
import { Chart, Coord, Geom, Tooltip } from 'bizcharts';
import React, { Component } from 'react';
import { DataView } from '@antv/data-set'; import { DataView } from '@antv/data-set';
import Debounce from 'lodash.debounce';
import { Divider } from 'antd'; import { Divider } from 'antd';
import ReactFitText from 'react-fittext'; import { Chart, Coord, Geom, Tooltip } from 'bizcharts';
import classNames from 'classnames'; import classNames from 'classnames';
import Debounce from 'lodash.debounce';
import React, { Component } from 'react';
import ReactFitText from 'react-fittext';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style';
export type PieProps = { export type PieProps = {
animate?: boolean; animate?: boolean;

7
src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx

@ -1,10 +1,9 @@
import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts';
import React, { Component } from 'react';
import DataSet from '@antv/data-set'; import DataSet from '@antv/data-set';
import Debounce from 'lodash.debounce'; import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts';
import classNames from 'classnames'; import classNames from 'classnames';
import Debounce from 'lodash.debounce';
import React, { Component } from 'react';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style';
/* eslint no-underscore-dangle: 0 */ /* eslint no-underscore-dangle: 0 */
/* eslint no-param-reassign: 0 */ /* eslint no-param-reassign: 0 */

4
src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx

@ -1,7 +1,7 @@
import { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts';
import DataSet from '@antv/data-set'; import DataSet from '@antv/data-set';
import React from 'react'; import { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts';
import Slider from 'bizcharts-plugin-slider'; import Slider from 'bizcharts-plugin-slider';
import React from 'react';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style'; import useStyles from './index.style';
export type TimelineChartProps = { export type TimelineChartProps = {

1
src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx

@ -1,6 +1,5 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style';
/* eslint no-return-assign: 0 */ /* eslint no-return-assign: 0 */
/* eslint no-mixed-operators: 0 */ /* eslint no-mixed-operators: 0 */

8
src/pages/dashboard/analysis/components/IntroduceRow.tsx

@ -1,12 +1,12 @@
import { Progress, TinyArea, TinyColumn } from '@ant-design/charts';
import { InfoCircleOutlined } from '@ant-design/icons'; import { InfoCircleOutlined } from '@ant-design/icons';
import { TinyArea, TinyColumn, Progress } from '@ant-design/charts';
import { Col, Row, Tooltip } from 'antd'; import { Col, Row, Tooltip } from 'antd';
import numeral from 'numeral'; import numeral from 'numeral';
import { ChartCard, Field } from './Charts';
import type { DataItem } from '../data.d'; import type { DataItem } from '../data.d';
import Trend from './Trend';
import Yuan from '../utils/Yuan';
import useStyles from '../style.style'; import useStyles from '../style.style';
import Yuan from '../utils/Yuan';
import { ChartCard, Field } from './Charts';
import Trend from './Trend';
const topColResponsiveProps = { const topColResponsiveProps = {
xs: 24, xs: 24,
sm: 12, sm: 12,

4
src/pages/dashboard/analysis/components/NumberInfo/index.tsx

@ -1,6 +1,6 @@
import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons';
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export type NumberInfoProps = { export type NumberInfoProps = {
title?: React.ReactNode | string; title?: React.ReactNode | string;

24
src/pages/dashboard/analysis/components/OfflineData.tsx

@ -1,8 +1,8 @@
import { Line, RingProgress } from '@ant-design/charts';
import { Card, Col, Row, Tabs } from 'antd'; import { Card, Col, Row, Tabs } from 'antd';
import { RingProgress, Line } from '@ant-design/charts'; import type { DataItem, OfflineDataType } from '../data.d';
import type { OfflineDataType, DataItem } from '../data.d';
import NumberInfo from './NumberInfo';
import useStyles from '../style.style'; import useStyles from '../style.style';
import NumberInfo from './NumberInfo';
const CustomTab = ({ const CustomTab = ({
data, data,
currentTabKey: currentKey, currentTabKey: currentKey,
@ -36,7 +36,7 @@ const CustomTab = ({
</Col> </Col>
</Row> </Row>
); );
const { TabPane } = Tabs;
const OfflineData = ({ const OfflineData = ({
activeKey, activeKey,
loading, loading,
@ -60,9 +60,13 @@ const OfflineData = ({
marginTop: 32, marginTop: 32,
}} }}
> >
<Tabs activeKey={activeKey} onChange={handleTabChange}> <Tabs
{offlineData.map((shop) => ( activeKey={activeKey}
<TabPane tab={<CustomTab data={shop} currentTabKey={activeKey} />} key={shop.name}> onChange={handleTabChange}
items={offlineData.map((shop) => ({
key: shop.name,
label: <CustomTab data={shop} currentTabKey={activeKey} />,
children: (
<div <div
style={{ style={{
padding: '0 24px', padding: '0 24px',
@ -87,9 +91,9 @@ const OfflineData = ({
}} }}
/> />
</div> </div>
</TabPane> ),
))} }))}
</Tabs> />
</Card> </Card>
); );
}; };

6
src/pages/dashboard/analysis/components/ProportionSales.tsx

@ -1,8 +1,8 @@
import { Card, Radio, Typography } from 'antd';
import numeral from 'numeral';
import type { RadioChangeEvent } from 'antd/es/radio';
import { Donut } from '@ant-design/charts'; import { Donut } from '@ant-design/charts';
import type { DonutConfig } from '@ant-design/charts/es/donut'; import type { DonutConfig } from '@ant-design/charts/es/donut';
import { Card, Radio, Typography } from 'antd';
import type { RadioChangeEvent } from 'antd/es/radio';
import numeral from 'numeral';
import React from 'react'; import React from 'react';
import type { DataItem } from '../data.d'; import type { DataItem } from '../data.d';
import useStyles from '../style.style'; import useStyles from '../style.style';

264
src/pages/dashboard/analysis/components/SalesCard.tsx

@ -1,23 +1,26 @@
import { Column } from '@ant-design/charts';
import { Card, Col, DatePicker, Row, Tabs } from 'antd'; import { Card, Col, DatePicker, Row, Tabs } from 'antd';
import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; import type { RangePickerProps } from 'antd/es/date-picker/generatePicker';
import type dayjs from 'dayjs'; import type dayjs from 'dayjs';
import { Column } from '@ant-design/charts';
import numeral from 'numeral'; import numeral from 'numeral';
import type { DataItem } from '../data.d'; import type { DataItem } from '../data.d';
import useStyles from '../style.style'; import useStyles from '../style.style';
export type TimeType = 'today' | 'week' | 'month' | 'year'; export type TimeType = 'today' | 'week' | 'month' | 'year';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const { TabPane } = Tabs;
const rankingListData: { const rankingListData: {
title: string; title: string;
total: number; total: number;
}[] = []; }[] = [];
for (let i = 0; i < 7; i += 1) { for (let i = 0; i < 7; i += 1) {
rankingListData.push({ rankingListData.push({
title: `工专路 ${i} 号店`, title: `工专路 ${i} 号店`,
total: 323234, total: 323234,
}); });
} }
const SalesCard = ({ const SalesCard = ({
rangePickerValue, rangePickerValue,
salesData, salesData,
@ -73,128 +76,141 @@ const SalesCard = ({
tabBarStyle={{ tabBarStyle={{
marginBottom: 24, marginBottom: 24,
}} }}
> items={[
<TabPane tab="销售额" key="sales"> {
<Row> key: 'sales',
<Col xl={16} lg={12} md={12} sm={24} xs={24}> label: '销售额',
<div className={styles.salesBar}> children: (
<Column <Row>
height={300} <Col xl={16} lg={12} md={12} sm={24} xs={24}>
forceFit <div className={styles.salesBar}>
data={salesData as any} <Column
xField="x" height={300}
yField="y" forceFit
xAxis={{ data={salesData as any}
visible: true, xField="x"
title: { yField="y"
visible: false, xAxis={{
}, visible: true,
}} title: {
yAxis={{ visible: false,
visible: true, },
title: { }}
visible: false, yAxis={{
}, visible: true,
}} title: {
title={{ visible: false,
visible: true, },
text: '销售趋势', }}
style: { title={{
fontSize: 14, visible: true,
}, text: '销售趋势',
}} style: {
meta={{ fontSize: 14,
y: { },
alias: '销售量', }}
}, meta={{
}} y: {
/> alias: '销售量',
</div> },
</Col> }}
<Col xl={8} lg={12} md={12} sm={24} xs={24}> />
<div className={styles.salesRank}> </div>
<h4 className={styles.rankingTitle}>门店销售额排名</h4> </Col>
<ul className={styles.rankingList}> <Col xl={8} lg={12} md={12} sm={24} xs={24}>
{rankingListData.map((item, i) => ( <div className={styles.salesRank}>
<li key={item.title}> <h4 className={styles.rankingTitle}>门店销售额排名</h4>
<span <ul className={styles.rankingList}>
className={`${styles.rankingItemNumber} ${i < 3 ? styles.active : ''}`} {rankingListData.map((item, i) => (
> <li key={item.title}>
{i + 1} <span
</span> className={`${styles.rankingItemNumber} ${
<span className={styles.rankingItemTitle} title={item.title}> i < 3 ? styles.active : ''
{item.title} }`}
</span> >
<span className={styles.rankingItemValue}> {i + 1}
{numeral(item.total).format('0,0')} </span>
</span> <span className={styles.rankingItemTitle} title={item.title}>
</li> {item.title}
))} </span>
</ul> <span className={styles.rankingItemValue}>
</div> {numeral(item.total).format('0,0')}
</Col> </span>
</Row> </li>
</TabPane> ))}
<TabPane tab="访问量" key="views"> </ul>
<Row> </div>
<Col xl={16} lg={12} md={12} sm={24} xs={24}> </Col>
<div className={styles.salesBar}> </Row>
<Column ),
height={300} },
forceFit {
data={salesData as any} key: 'views',
xField="x" label: '访问量',
yField="y" children: (
xAxis={{ <Row>
visible: true, <Col xl={16} lg={12} md={12} sm={24} xs={24}>
title: { <div className={styles.salesBar}>
visible: false, <Column
}, height={300}
}} forceFit
yAxis={{ data={salesData as any}
visible: true, xField="x"
title: { yField="y"
visible: false, xAxis={{
}, visible: true,
}} title: {
title={{ visible: false,
visible: true, },
text: '访问量趋势', }}
style: { yAxis={{
fontSize: 14, visible: true,
}, title: {
}} visible: false,
meta={{ },
y: { }}
alias: '访问量', title={{
}, visible: true,
}} text: '访问量趋势',
/> style: {
</div> fontSize: 14,
</Col> },
<Col xl={8} lg={12} md={12} sm={24} xs={24}> }}
<div className={styles.salesRank}> meta={{
<h4 className={styles.rankingTitle}>门店访问量排名</h4> y: {
<ul className={styles.rankingList}> alias: '访问量',
{rankingListData.map((item, i) => ( },
<li key={item.title}> }}
<span />
className={`${styles.rankingItemNumber} ${i < 3 ? styles.active : ''}`} </div>
> </Col>
{i + 1} <Col xl={8} lg={12} md={12} sm={24} xs={24}>
</span> <div className={styles.salesRank}>
<span className={styles.rankingItemTitle} title={item.title}> <h4 className={styles.rankingTitle}>门店访问量排名</h4>
{item.title} <ul className={styles.rankingList}>
</span> {rankingListData.map((item, i) => (
<span>{numeral(item.total).format('0,0')}</span> <li key={item.title}>
</li> <span
))} className={`${styles.rankingItemNumber} ${
</ul> i < 3 ? styles.active : ''
</div> }`}
</Col> >
</Row> {i + 1}
</TabPane> </span>
</Tabs> <span className={styles.rankingItemTitle} title={item.title}>
{item.title}
</span>
<span>{numeral(item.total).format('0,0')}</span>
</li>
))}
</ul>
</div>
</Col>
</Row>
),
},
]}
/>
</div> </div>
</Card> </Card>
); );

6
src/pages/dashboard/analysis/components/TopSearch.tsx

@ -1,12 +1,12 @@
import { TinyArea } from '@ant-design/charts';
import { InfoCircleOutlined } from '@ant-design/icons'; import { InfoCircleOutlined } from '@ant-design/icons';
import { Card, Col, Row, Table, Tooltip } from 'antd'; import { Card, Col, Row, Table, Tooltip } from 'antd';
import { TinyArea } from '@ant-design/charts';
import React from 'react';
import numeral from 'numeral'; import numeral from 'numeral';
import React from 'react';
import type { DataItem } from '../data.d'; import type { DataItem } from '../data.d';
import useStyles from '../style.style';
import NumberInfo from './NumberInfo'; import NumberInfo from './NumberInfo';
import Trend from './Trend'; import Trend from './Trend';
import useStyles from '../style.style';
const TopSearch = ({ const TopSearch = ({
loading, loading,

4
src/pages/dashboard/analysis/components/Trend/index.tsx

@ -1,6 +1,6 @@
import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons';
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export type TrendProps = { export type TrendProps = {
colorful?: boolean; colorful?: boolean;

45
src/pages/dashboard/analysis/index.tsx

@ -1,23 +1,23 @@
import type { FC } from 'react';
import { Suspense, useState } from 'react';
import { EllipsisOutlined } from '@ant-design/icons'; import { EllipsisOutlined } from '@ant-design/icons';
import { Col, Dropdown, Menu, Row } from 'antd';
import { GridContent } from '@ant-design/pro-components'; import { GridContent } from '@ant-design/pro-components';
import type { RadioChangeEvent } from 'antd/es/radio'; import { useRequest } from '@umijs/max';
import { Col, Dropdown, Row } from 'antd';
import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; import type { RangePickerProps } from 'antd/es/date-picker/generatePicker';
import type { RadioChangeEvent } from 'antd/es/radio';
import type dayjs from 'dayjs'; import type dayjs from 'dayjs';
import type { FC } from 'react';
import { Suspense, useState } from 'react';
import IntroduceRow from './components/IntroduceRow'; import IntroduceRow from './components/IntroduceRow';
import SalesCard from './components/SalesCard';
import TopSearch from './components/TopSearch';
import ProportionSales from './components/ProportionSales';
import OfflineData from './components/OfflineData'; import OfflineData from './components/OfflineData';
import { useRequest } from '@umijs/max';
import { fakeChartData } from './service';
import PageLoading from './components/PageLoading'; import PageLoading from './components/PageLoading';
import ProportionSales from './components/ProportionSales';
import type { TimeType } from './components/SalesCard'; import type { TimeType } from './components/SalesCard';
import { getTimeDistance } from './utils/utils'; import SalesCard from './components/SalesCard';
import TopSearch from './components/TopSearch';
import type { AnalysisData } from './data.d'; import type { AnalysisData } from './data.d';
import { fakeChartData } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
import { getTimeDistance } from './utils/utils';
type RangePickerValue = RangePickerProps<dayjs.Dayjs>['value']; type RangePickerValue = RangePickerProps<dayjs.Dayjs>['value'];
type AnalysisProps = { type AnalysisProps = {
dashboardAndanalysis: AnalysisData; dashboardAndanalysis: AnalysisData;
@ -57,21 +57,32 @@ const Analysis: FC<AnalysisProps> = () => {
} }
return ''; return '';
}; };
let salesPieData; let salesPieData;
if (salesType === 'all') { if (salesType === 'all') {
salesPieData = data?.salesTypeData; salesPieData = data?.salesTypeData;
} else { } else {
salesPieData = salesType === 'online' ? data?.salesTypeDataOnline : data?.salesTypeDataOffline; salesPieData = salesType === 'online' ? data?.salesTypeDataOnline : data?.salesTypeDataOffline;
} }
const menu = (
<Menu>
<Menu.Item>操作一</Menu.Item>
<Menu.Item>操作二</Menu.Item>
</Menu>
);
const dropdownGroup = ( const dropdownGroup = (
<span className={styles.iconGroup}> <span className={styles.iconGroup}>
<Dropdown overlay={menu} placement="bottomRight"> <Dropdown
menu={{
items: [
{
key: '1',
label: '操作一',
},
{
key: '2',
label: '操作二',
},
],
}}
placement="bottomRight"
>
<EllipsisOutlined /> <EllipsisOutlined />
</Dropdown> </Dropdown>
</span> </span>

2
src/pages/dashboard/analysis/utils/utils.ts

@ -1,5 +1,5 @@
import dayjs from 'dayjs';
import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; import type { RangePickerProps } from 'antd/es/date-picker/generatePicker';
import dayjs from 'dayjs';
type RangePickerValue = RangePickerProps<dayjs.Dayjs>['value']; type RangePickerValue = RangePickerProps<dayjs.Dayjs>['value'];

2
src/pages/dashboard/monitor/_mock.ts

@ -1,5 +1,5 @@
import mockjs from 'mockjs';
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
import mockjs from 'mockjs';
const getTags = (_: Request, res: Response) => { const getTags = (_: Request, res: Response) => {
return res.json({ return res.json({

2
src/pages/dashboard/monitor/components/ActiveChart/index.tsx

@ -1,6 +1,6 @@
import { useEffect, useRef, useState } from 'react';
import { TinyArea } from '@ant-design/charts'; import { TinyArea } from '@ant-design/charts';
import { Statistic } from 'antd'; import { Statistic } from 'antd';
import { useEffect, useRef, useState } from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
function fixedZero(val: number) { function fixedZero(val: number) {
return val * 1 < 10 ? `0${val}` : val; return val * 1 < 10 ? `0${val}` : val;

9
src/pages/dashboard/monitor/components/Charts/Pie/index.tsx

@ -1,12 +1,11 @@
import { Chart, Coord, Geom, Tooltip } from 'bizcharts';
import React, { Component } from 'react';
import { DataView } from '@antv/data-set'; import { DataView } from '@antv/data-set';
import Debounce from 'lodash.debounce';
import { Divider } from 'antd'; import { Divider } from 'antd';
import ReactFitText from 'react-fittext'; import { Chart, Coord, Geom, Tooltip } from 'bizcharts';
import classNames from 'classnames'; import classNames from 'classnames';
import Debounce from 'lodash.debounce';
import React, { Component } from 'react';
import ReactFitText from 'react-fittext';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style';
export type PieProps = { export type PieProps = {
animate?: boolean; animate?: boolean;
color?: string; color?: string;

7
src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx

@ -1,10 +1,9 @@
import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts';
import React, { Component } from 'react';
import DataSet from '@antv/data-set'; import DataSet from '@antv/data-set';
import Debounce from 'lodash.debounce'; import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts';
import classNames from 'classnames'; import classNames from 'classnames';
import Debounce from 'lodash.debounce';
import React, { Component } from 'react';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style';
/* eslint no-underscore-dangle: 0 */ /* eslint no-underscore-dangle: 0 */
/* eslint no-param-reassign: 0 */ /* eslint no-param-reassign: 0 */

1
src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx

@ -1,6 +1,5 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import autoHeight from '../autoHeight'; import autoHeight from '../autoHeight';
import useStyles from './index.style';
/* eslint no-return-assign: 0 */ /* eslint no-return-assign: 0 */
/* eslint no-mixed-operators: 0 */ /* eslint no-mixed-operators: 0 */

4
src/pages/dashboard/monitor/components/Map/index.tsx

@ -1,6 +1,6 @@
import * as React from 'react';
import { HeatmapLayer, MapboxScene, PointLayer } from '@antv/l7-react';
import { PageLoading } from '@ant-design/pro-components'; import { PageLoading } from '@ant-design/pro-components';
import { HeatmapLayer, MapboxScene, PointLayer } from '@antv/l7-react';
import * as React from 'react';
const colors = ['#eff3ff', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#084594']; const colors = ['#eff3ff', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#084594'];
export default class Map extends React.Component { export default class Map extends React.Component {

12
src/pages/dashboard/monitor/index.tsx

@ -1,12 +1,12 @@
import { Card, Col, Row, Statistic } from 'antd'; import { Gauge, Liquid, RingProgress, WordCloud } from '@ant-design/charts';
import { useRequest } from '@umijs/max';
import type { FC } from 'react';
import { Gauge, WordCloud, Liquid, RingProgress } from '@ant-design/charts';
import type { WordCloudData } from '@antv/g2plot/esm/plots/word-cloud/layer';
import { GridContent } from '@ant-design/pro-components'; import { GridContent } from '@ant-design/pro-components';
import type { WordCloudData } from '@antv/g2plot/esm/plots/word-cloud/layer';
import { useRequest } from '@umijs/max';
import { Card, Col, Row, Statistic } from 'antd';
import numeral from 'numeral'; import numeral from 'numeral';
import Map from './components/Map'; import type { FC } from 'react';
import ActiveChart from './components/ActiveChart'; import ActiveChart from './components/ActiveChart';
import Map from './components/Map';
import { queryTags } from './service'; import { queryTags } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
const { Countdown } = Statistic; const { Countdown } = Statistic;

2
src/pages/dashboard/workplace/_mock.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
import type { SearchDataType, OfflineDataType, DataItem } from './data.d'; import type { DataItem, OfflineDataType, SearchDataType } from './data.d';
// mock data // mock data
const visitData: DataItem[] = []; const visitData: DataItem[] = [];

2
src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx

@ -1,6 +1,6 @@
import React, { createElement } from 'react';
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { Button } from 'antd'; import { Button } from 'antd';
import React, { createElement } from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export type EditableLink = { export type EditableLink = {
title: string; title: string;

2
src/pages/dashboard/workplace/components/Radar/index.tsx

@ -1,5 +1,5 @@
import { Axis, Chart, Coord, Geom, Tooltip } from 'bizcharts';
import { Col, Row } from 'antd'; import { Col, Row } from 'antd';
import { Axis, Chart, Coord, Geom, Tooltip } from 'bizcharts';
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef, useState } from 'react';
export type RadarProps = { export type RadarProps = {

12
src/pages/dashboard/workplace/index.tsx

@ -1,14 +1,14 @@
import type { FC } from 'react';
import { Avatar, Card, Col, List, Skeleton, Row, Statistic } from 'antd';
import { Radar } from '@ant-design/charts'; import { Radar } from '@ant-design/charts';
import { Link, useRequest } from '@umijs/max';
import { PageContainer } from '@ant-design/pro-components'; import { PageContainer } from '@ant-design/pro-components';
import { Link, useRequest } from '@umijs/max';
import { Avatar, Card, Col, List, Row, Skeleton, Statistic } from 'antd';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import type { FC } from 'react';
import EditableLinkGroup from './components/EditableLinkGroup'; import EditableLinkGroup from './components/EditableLinkGroup';
import useStyles from './style.style';
import type { ActivitiesType, CurrentUser } from './data.d'; import type { ActivitiesType, CurrentUser } from './data.d';
import { queryProjectNotice, queryActivities, fakeChartData } from './service'; import { fakeChartData, queryActivities, queryProjectNotice } from './service';
import relativeTime from 'dayjs/plugin/relativeTime'; import useStyles from './style.style';
dayjs.extend(relativeTime); dayjs.extend(relativeTime);
const links = [ const links = [

2
src/pages/dashboard/workplace/service.ts

@ -1,5 +1,5 @@
import { request } from '@umijs/max'; import { request } from '@umijs/max';
import type { NoticeType, ActivitiesType, AnalysisData } from './data'; import type { ActivitiesType, AnalysisData, NoticeType } from './data';
export async function queryProjectNotice(): Promise<{ data: NoticeType[] }> { export async function queryProjectNotice(): Promise<{ data: NoticeType[] }> {
return request('/api/project/notice'); return request('/api/project/notice');

2
src/pages/exception/403/index.tsx

@ -1,5 +1,5 @@
import { Link } from '@umijs/max'; import { Link } from '@umijs/max';
import { Result, Button } from 'antd'; import { Button, Result } from 'antd';
export default () => ( export default () => (
<Result <Result

2
src/pages/exception/404/index.tsx

@ -1,5 +1,5 @@
import { Link } from '@umijs/max'; import { Link } from '@umijs/max';
import { Result, Button } from 'antd'; import { Button, Result } from 'antd';
export default () => ( export default () => (
<Result <Result

2
src/pages/exception/500/index.tsx

@ -1,5 +1,5 @@
import { Link } from '@umijs/max'; import { Link } from '@umijs/max';
import { Result, Button } from 'antd'; import { Button, Result } from 'antd';
export default () => ( export default () => (
<Result <Result

2
src/pages/form/advanced-form/components/TableForm.tsx

@ -1,5 +1,5 @@
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { Button, Divider, Input, Popconfirm, Table, message } from 'antd'; import { Button, Divider, Input, message, Popconfirm, Table } from 'antd';
import type { FC } from 'react'; import type { FC } from 'react';
import React, { useState } from 'react'; import React, { useState } from 'react';
import useStyles from '../style.style'; import useStyles from '../style.style';

13
src/pages/form/advanced-form/index.tsx

@ -1,17 +1,18 @@
import { CloseCircleOutlined } from '@ant-design/icons'; import { CloseCircleOutlined } from '@ant-design/icons';
import { Card, Col, Popover, Row, message } from 'antd'; import type { ProColumnType } from '@ant-design/pro-components';
import type { FC } from 'react';
import { useState } from 'react';
import { import {
EditableProTable,
FooterToolbar,
PageContainer,
ProForm, ProForm,
ProFormDateRangePicker, ProFormDateRangePicker,
ProFormSelect, ProFormSelect,
ProFormText, ProFormText,
ProFormTimePicker, ProFormTimePicker,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import type { ProColumnType } from '@ant-design/pro-components'; import { Card, Col, message, Popover, Row } from 'antd';
import { EditableProTable } from '@ant-design/pro-components'; import type { FC } from 'react';
import { PageContainer, FooterToolbar } from '@ant-design/pro-components'; import { useState } from 'react';
import { fakeSubmitForm } from './service'; import { fakeSubmitForm } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
interface TableFormDateType { interface TableFormDateType {

4
src/pages/form/basic-form/index.tsx

@ -1,5 +1,5 @@
import { Card, message } from 'antd';
import { import {
PageContainer,
ProForm, ProForm,
ProFormDateRangePicker, ProFormDateRangePicker,
ProFormDependency, ProFormDependency,
@ -10,8 +10,8 @@ import {
ProFormTextArea, ProFormTextArea,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max'; import { useRequest } from '@umijs/max';
import { Card, message } from 'antd';
import type { FC } from 'react'; import type { FC } from 'react';
import { PageContainer } from '@ant-design/pro-components';
import { fakeSubmitForm } from './service'; import { fakeSubmitForm } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
const BasicForm: FC<Record<string, any>> = () => { const BasicForm: FC<Record<string, any>> = () => {

8
src/pages/form/step-form/index.tsx

@ -1,14 +1,14 @@
import React, { useRef, useState } from 'react';
import type { FormInstance } from 'antd';
import { Card, Result, Button, Descriptions, Divider, Alert, Statistic } from 'antd';
import { PageContainer } from '@ant-design/pro-components';
import { import {
PageContainer,
ProForm, ProForm,
ProFormDigit, ProFormDigit,
ProFormSelect, ProFormSelect,
ProFormText, ProFormText,
StepsForm, StepsForm,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import type { FormInstance } from 'antd';
import { Alert, Button, Card, Descriptions, Divider, Result, Statistic } from 'antd';
import React, { useRef, useState } from 'react';
import type { StepDataType } from './data.d'; import type { StepDataType } from './data.d';
import useStyles from './style.style'; import useStyles from './style.style';
const StepDescriptions: React.FC<{ const StepDescriptions: React.FC<{

6
src/pages/list/basic-list/components/OperationModal.tsx

@ -1,14 +1,14 @@
import type { FC } from 'react';
import { import {
ModalForm, ModalForm,
ProFormSelect,
ProFormDateTimePicker, ProFormDateTimePicker,
ProFormSelect,
ProFormText, ProFormText,
ProFormTextArea, ProFormTextArea,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import { Button, Result } from 'antd';
import type { FC } from 'react';
import type { BasicListItemDataType } from '../data.d'; import type { BasicListItemDataType } from '../data.d';
import useStyles from '../style.style'; import useStyles from '../style.style';
import { Button, Result } from 'antd';
type OperationModalProps = { type OperationModalProps = {
done: boolean; done: boolean;
visible: boolean; visible: boolean;

30
src/pages/list/basic-list/index.tsx

@ -1,6 +1,6 @@
import type { FC } from 'react';
import React, { useState } from 'react';
import { DownOutlined, PlusOutlined } from '@ant-design/icons'; import { DownOutlined, PlusOutlined } from '@ant-design/icons';
import { PageContainer } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max';
import { import {
Avatar, Avatar,
Button, Button,
@ -9,18 +9,17 @@ import {
Dropdown, Dropdown,
Input, Input,
List, List,
Menu,
Modal, Modal,
Progress, Progress,
Radio, Radio,
Row, Row,
} from 'antd'; } from 'antd';
import { PageContainer } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type { FC } from 'react';
import React, { useState } from 'react';
import OperationModal from './components/OperationModal'; import OperationModal from './components/OperationModal';
import { addFakeList, queryFakeList, removeFakeList, updateFakeList } from './service';
import type { BasicListItemDataType } from './data.d'; import type { BasicListItemDataType } from './data.d';
import { addFakeList, queryFakeList, removeFakeList, updateFakeList } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
const RadioButton = Radio.Button; const RadioButton = Radio.Button;
const RadioGroup = Radio.Group; const RadioGroup = Radio.Group;
@ -141,12 +140,19 @@ export const BasicList: FC = () => {
item: BasicListItemDataType; item: BasicListItemDataType;
}> = ({ item }) => ( }> = ({ item }) => (
<Dropdown <Dropdown
overlay={ menu={{
<Menu onClick={({ key }) => editAndDelete(key, item)}> onClick: ({ key }) => editAndDelete(key, item),
<Menu.Item key="edit">编辑</Menu.Item> items: [
<Menu.Item key="delete">删除</Menu.Item> {
</Menu> key: 'edit',
} name: '编辑',
},
{
key: 'delete',
name: '删除',
},
],
}}
> >
<a> <a>
更多 <DownOutlined /> 更多 <DownOutlined />

4
src/pages/list/card-list/index.tsx

@ -1,9 +1,9 @@
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { Button, Card, List, Typography } from 'antd';
import { PageContainer } from '@ant-design/pro-components'; import { PageContainer } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max'; import { useRequest } from '@umijs/max';
import { queryFakeList } from './service'; import { Button, Card, List, Typography } from 'antd';
import type { CardListItemDataType } from './data.d'; import type { CardListItemDataType } from './data.d';
import { queryFakeList } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
const { Paragraph } = Typography; const { Paragraph } = Typography;
const CardList = () => { const CardList = () => {

2
src/pages/list/search/applications/components/StandardFormRow/index.tsx

@ -1,5 +1,5 @@
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
type StandardFormRowProps = { type StandardFormRowProps = {
title?: string; title?: string;

41
src/pages/list/search/applications/index.tsx

@ -4,11 +4,11 @@ import {
EllipsisOutlined, EllipsisOutlined,
ShareAltOutlined, ShareAltOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { Avatar, Card, Col, Dropdown, Form, List, Menu, Row, Select, Tooltip } from 'antd'; import { useRequest } from '@umijs/max';
import { Avatar, Card, Col, Dropdown, Form, List, Row, Select, Tooltip } from 'antd';
import numeral from 'numeral'; import numeral from 'numeral';
import type { FC } from 'react'; import type { FC } from 'react';
import React from 'react'; import React from 'react';
import { useRequest } from '@umijs/max';
import StandardFormRow from './components/StandardFormRow'; import StandardFormRow from './components/StandardFormRow';
import TagSelect from './components/TagSelect'; import TagSelect from './components/TagSelect';
import type { ListItemDataType } from './data.d'; import type { ListItemDataType } from './data.d';
@ -75,26 +75,9 @@ export const Applications: FC<Record<string, any>> = () => {
count: 8, count: 8,
}); });
}); });
const list = data?.list || []; const list = data?.list || [];
const itemMenu = (
<Menu>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="https://www.alipay.com/">
1st menu item
</a>
</Menu.Item>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="https://www.taobao.com/">
2nd menu item
</a>
</Menu.Item>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="https://www.tmall.com/">
3d menu item
</a>
</Menu.Item>
</Menu>
);
return ( return (
<div className={styles.filterCardList}> <div className={styles.filterCardList}>
<Card bordered={false}> <Card bordered={false}>
@ -191,7 +174,21 @@ export const Applications: FC<Record<string, any>> = () => {
<Tooltip title="分享" key="share"> <Tooltip title="分享" key="share">
<ShareAltOutlined /> <ShareAltOutlined />
</Tooltip>, </Tooltip>,
<Dropdown key="ellipsis" overlay={itemMenu}> <Dropdown
key="ellipsis"
menu={{
items: [
{
key: '1',
title: '1st menu item',
},
{
key: '2',
title: '2st menu item',
},
],
}}
>
<EllipsisOutlined /> <EllipsisOutlined />
</Dropdown>, </Dropdown>,
]} ]}

2
src/pages/list/search/applications/service.ts

@ -1,5 +1,5 @@
import { request } from '@umijs/max'; import { request } from '@umijs/max';
import type { Params, ListItemDataType } from './data.d'; import type { ListItemDataType, Params } from './data.d';
export async function queryFakeList( export async function queryFakeList(
params: Params, params: Params,

2
src/pages/list/search/articles/components/ArticleListContent/index.tsx

@ -1,6 +1,6 @@
import { Avatar } from 'antd'; import { Avatar } from 'antd';
import React from 'react';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
type ArticleListContentProps = { type ArticleListContentProps = {
data: { data: {

2
src/pages/list/search/articles/components/StandardFormRow/index.tsx

@ -1,5 +1,5 @@
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
type StandardFormRowProps = { type StandardFormRowProps = {
title?: string; title?: string;

2
src/pages/list/search/articles/service.ts

@ -1,5 +1,5 @@
import { request } from '@umijs/max'; import { request } from '@umijs/max';
import type { Params, ListItemDataType } from './data.d'; import type { ListItemDataType, Params } from './data.d';
export async function queryFakeList( export async function queryFakeList(
params: Params, params: Params,

6
src/pages/list/search/index.tsx

@ -1,7 +1,7 @@
import { PageContainer } from '@ant-design/pro-components'; import { PageContainer } from '@ant-design/pro-components';
import { history, Outlet, useLocation, useMatch } from '@umijs/max';
import { Input } from 'antd'; import { Input } from 'antd';
import type { FC } from 'react'; import type { FC } from 'react';
import { history, useMatch, useLocation } from '@umijs/max';
type SearchProps = { type SearchProps = {
children?: React.ReactNode; children?: React.ReactNode;
@ -22,7 +22,7 @@ const tabList = [
}, },
]; ];
const Search: FC<SearchProps> = (props) => { const Search: FC<SearchProps> = () => {
const location = useLocation(); const location = useLocation();
let match = useMatch(location.pathname); let match = useMatch(location.pathname);
const handleTabChange = (key: string) => { const handleTabChange = (key: string) => {
@ -73,7 +73,7 @@ const Search: FC<SearchProps> = (props) => {
tabActiveKey={getTabKey()} tabActiveKey={getTabKey()}
onTabChange={handleTabChange} onTabChange={handleTabChange}
> >
{props.children} <Outlet />
</PageContainer> </PageContainer>
); );
}; };

2
src/pages/list/search/projects/components/AvatarList/index.tsx

@ -1,6 +1,6 @@
import { Avatar, Tooltip } from 'antd'; import { Avatar, Tooltip } from 'antd';
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
export declare type SizeType = number | 'small' | 'default' | 'large'; export declare type SizeType = number | 'small' | 'default' | 'large';
export type AvatarItemProps = { export type AvatarItemProps = {

2
src/pages/list/search/projects/components/StandardFormRow/index.tsx

@ -1,5 +1,5 @@
import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import React from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
type StandardFormRowProps = { type StandardFormRowProps = {
title?: string; title?: string;

6
src/pages/list/search/projects/index.tsx

@ -1,14 +1,14 @@
import { useRequest } from '@umijs/max';
import { Card, Col, Form, List, Row, Select, Typography } from 'antd'; import { Card, Col, Form, List, Row, Select, Typography } from 'antd';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import type { FC } from 'react'; import type { FC } from 'react';
import { useRequest } from '@umijs/max';
import AvatarList from './components/AvatarList'; import AvatarList from './components/AvatarList';
import StandardFormRow from './components/StandardFormRow'; import StandardFormRow from './components/StandardFormRow';
import TagSelect from './components/TagSelect'; import TagSelect from './components/TagSelect';
import type { ListItemDataType } from './data.d'; import type { ListItemDataType } from './data.d';
import { queryFakeList } from './service'; import { queryFakeList } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
dayjs.extend(relativeTime); dayjs.extend(relativeTime);
const { Option } = Select; const { Option } = Select;
const FormItem = Form.Item; const FormItem = Form.Item;

2
src/pages/list/search/projects/service.ts

@ -1,5 +1,5 @@
import { request } from '@umijs/max'; import { request } from '@umijs/max';
import type { Params, ListItemDataType } from './data'; import type { ListItemDataType, Params } from './data';
export async function queryFakeList( export async function queryFakeList(
params: Params, params: Params,

50
src/pages/list/search/projects/utils/utils.less

@ -1,50 +0,0 @@
.textOverflow() {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
}
.textOverflowMulti(@line: 3, @bg: #fff) {
position: relative;
max-height: @line * 1.5em;
margin-right: -1em;
padding-right: 1em;
overflow: hidden;
line-height: 1.5em;
text-align: justify;
&::before {
position: absolute;
right: 14px;
bottom: 0;
padding: 0 1px;
background: @bg;
content: '...';
}
&::after {
position: absolute;
right: 14px;
width: 1em;
height: 1em;
margin-top: 0.2em;
background: white;
content: '';
}
}
// mixins for clearfix
// ------------------------
.clearfix() {
zoom: 1;
&::before,
&::after {
display: table;
content: ' ';
}
&::after {
clear: both;
height: 0;
font-size: 0;
visibility: hidden;
}
}

6
src/pages/list/search/projects/utils/utils.style.ts

@ -1,6 +0,0 @@
import { createStyles } from 'antd-style';
const useStyles = createStyles(() => {
return {};
});
export default useStyles;

2
src/pages/list/table-list/components/CreateForm.tsx

@ -1,5 +1,5 @@
import React from 'react';
import { Modal } from 'antd'; import { Modal } from 'antd';
import React from 'react';
type CreateFormProps = { type CreateFormProps = {
modalVisible: boolean; modalVisible: boolean;

8
src/pages/list/table-list/components/UpdateForm.tsx

@ -1,13 +1,13 @@
import React from 'react';
import { Modal } from 'antd';
import { import {
ProFormDateTimePicker,
ProFormRadio,
ProFormSelect, ProFormSelect,
ProFormText, ProFormText,
ProFormTextArea, ProFormTextArea,
StepsForm, StepsForm,
ProFormRadio,
ProFormDateTimePicker,
} from '@ant-design/pro-components'; } from '@ant-design/pro-components';
import { Modal } from 'antd';
import React from 'react';
import type { TableListItem } from '../data'; import type { TableListItem } from '../data';
export type FormValueType = { export type FormValueType = {

22
src/pages/list/table-list/index.tsx

@ -1,16 +1,20 @@
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { Button, message, Input, Drawer } from 'antd'; import type { ActionType, ProColumns, ProDescriptionsItemProps } from '@ant-design/pro-components';
import React, { useState, useRef } from 'react'; import {
import { PageContainer, FooterToolbar } from '@ant-design/pro-components'; FooterToolbar,
import type { ProColumns, ActionType } from '@ant-design/pro-components'; ModalForm,
import { ProTable } from '@ant-design/pro-components'; PageContainer,
import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-components'; ProDescriptions,
import type { ProDescriptionsItemProps } from '@ant-design/pro-components'; ProFormText,
import { ProDescriptions } from '@ant-design/pro-components'; ProFormTextArea,
ProTable,
} from '@ant-design/pro-components';
import { Button, Drawer, Input, message } from 'antd';
import React, { useRef, useState } from 'react';
import type { FormValueType } from './components/UpdateForm'; import type { FormValueType } from './components/UpdateForm';
import UpdateForm from './components/UpdateForm'; import UpdateForm from './components/UpdateForm';
import { rule, addRule, updateRule, removeRule } from './service';
import type { TableListItem, TableListPagination } from './data'; import type { TableListItem, TableListPagination } from './data';
import { addRule, removeRule, rule, updateRule } from './service';
/** /**
* 添加节点 * 添加节点
* *

66
src/pages/profile/advanced/index.tsx

@ -4,47 +4,32 @@ import {
EllipsisOutlined, EllipsisOutlined,
InfoCircleOutlined, InfoCircleOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { GridContent, PageContainer, RouteContext } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max';
import { import {
Badge, Badge,
Button, Button,
Card, Card,
Statistic,
Descriptions, Descriptions,
Divider, Divider,
Dropdown, Dropdown,
Menu, Empty,
Popover, Popover,
Statistic,
Steps, Steps,
Table, Table,
Tooltip, Tooltip,
Empty,
} from 'antd'; } from 'antd';
import { GridContent, PageContainer, RouteContext } from '@ant-design/pro-components'; import classNames from 'classnames';
import type { FC } from 'react'; import type { FC } from 'react';
import React, { Fragment, useState } from 'react'; import React, { Fragment, useState } from 'react';
import classNames from 'classnames';
import { useRequest } from '@umijs/max';
import type { AdvancedProfileData } from './data.d'; import type { AdvancedProfileData } from './data.d';
import { queryAdvancedProfile } from './service'; import { queryAdvancedProfile } from './service';
import useStyles from './style.style'; import useStyles from './style.style';
const { Step } = Steps; const { Step } = Steps;
const ButtonGroup = Button.Group; const ButtonGroup = Button.Group;
const menu = (
<Menu>
<Menu.Item key="1">选项一</Menu.Item>
<Menu.Item key="2">选项二</Menu.Item>
<Menu.Item key="3">选项三</Menu.Item>
</Menu>
);
const mobileMenu = (
<Menu>
<Menu.Item key="1">操作一</Menu.Item>
<Menu.Item key="2">操作二</Menu.Item>
<Menu.Item key="3">选项一</Menu.Item>
<Menu.Item key="4">选项二</Menu.Item>
<Menu.Item key="">选项三</Menu.Item>
</Menu>
);
const action = ( const action = (
<RouteContext.Consumer> <RouteContext.Consumer>
{({ isMobile }) => { {({ isMobile }) => {
@ -53,7 +38,22 @@ const action = (
<Dropdown.Button <Dropdown.Button
type="primary" type="primary"
icon={<DownOutlined />} icon={<DownOutlined />}
overlay={mobileMenu} menu={{
items: [
{
key: '1',
label: '操作一',
},
{
key: '2',
label: '操作二',
},
{
key: '3',
label: '操作三',
},
],
}}
placement="bottomRight" placement="bottomRight"
> >
主操作 主操作
@ -65,7 +65,25 @@ const action = (
<ButtonGroup> <ButtonGroup>
<Button>操作一</Button> <Button>操作一</Button>
<Button>操作二</Button> <Button>操作二</Button>
<Dropdown overlay={menu} placement="bottomRight"> <Dropdown
menu={{
items: [
{
key: '1',
label: '选项一',
},
{
key: '2',
label: '选项二',
},
{
key: '3',
label: '选项三',
},
],
}}
placement="bottomRight"
>
<Button> <Button>
<EllipsisOutlined /> <EllipsisOutlined />
</Button> </Button>

5
src/pages/profile/basic/index.tsx

@ -1,10 +1,9 @@
import { PageContainer } from '@ant-design/pro-components';
import type { ProColumns } from '@ant-design/pro-components'; import type { ProColumns } from '@ant-design/pro-components';
import { ProTable } from '@ant-design/pro-components'; import { PageContainer, ProTable } from '@ant-design/pro-components';
import { useRequest } from '@umijs/max';
import { Badge, Card, Descriptions, Divider } from 'antd'; import { Badge, Card, Descriptions, Divider } from 'antd';
import type { FC } from 'react'; import type { FC } from 'react';
import React from 'react'; import React from 'react';
import { useRequest } from '@umijs/max';
import type { BasicGood, BasicProgress } from './data.d'; import type { BasicGood, BasicProgress } from './data.d';
import { queryBasicProfile } from './service'; import { queryBasicProfile } from './service';
import useStyles from './style.style'; import useStyles from './style.style';

2
src/pages/result/fail/index.tsx

@ -1,7 +1,7 @@
import { CloseCircleOutlined, RightOutlined } from '@ant-design/icons'; import { CloseCircleOutlined, RightOutlined } from '@ant-design/icons';
import { GridContent } from '@ant-design/pro-components';
import { Button, Card, Result } from 'antd'; import { Button, Card, Result } from 'antd';
import { Fragment } from 'react'; import { Fragment } from 'react';
import { GridContent } from '@ant-design/pro-components';
import useStyles from './index.style'; import useStyles from './index.style';
export default () => { export default () => {

4
src/pages/result/success/index.tsx

@ -1,7 +1,7 @@
import { DingdingOutlined } from '@ant-design/icons'; import { DingdingOutlined } from '@ant-design/icons';
import { Button, Card, Steps, Result, Descriptions } from 'antd';
import { Fragment } from 'react';
import { GridContent } from '@ant-design/pro-components'; import { GridContent } from '@ant-design/pro-components';
import { Button, Card, Descriptions, Result, Steps } from 'antd';
import { Fragment } from 'react';
import useStyles from './index.style'; import useStyles from './index.style';
const { Step } = Steps; const { Step } = Steps;

2
src/pages/user/register-result/index.tsx

@ -1,5 +1,5 @@
import { Button, Result } from 'antd';
import { Link, useSearchParams } from '@umijs/max'; import { Link, useSearchParams } from '@umijs/max';
import { Button, Result } from 'antd';
import React from 'react'; import React from 'react';
import useStyles from './style.style'; import useStyles from './style.style';

8
src/pages/user/register/index.tsx

@ -1,8 +1,8 @@
import type { FC } from 'react'; import { history, Link, useRequest } from '@umijs/max';
import { useState, useEffect } from 'react'; import { Button, Col, Form, Input, message, Popover, Progress, Row, Select } from 'antd';
import { Form, Button, Col, Input, Popover, Progress, Row, Select, message } from 'antd';
import type { Store } from 'antd/es/form/interface'; import type { Store } from 'antd/es/form/interface';
import { Link, useRequest, history } from '@umijs/max'; import type { FC } from 'react';
import { useEffect, useState } from 'react';
import type { StateType } from './service'; import type { StateType } from './service';
import { fakeRegister } from './service'; import { fakeRegister } from './service';
import useStyles from './style.style'; import useStyles from './style.style';

Loading…
Cancel
Save