J<3MQsNhOEYodj;5({(pE0$4P!F$)xqVIwo83~69g=48RK+49na7Q(C
zC7>Jw*DbzEje?QUe|LGt3nX|7Uz)%oP2zR&b4Op@R)(SMB<|5c3@$a63w&>G*}**C7T$?5!b=
z&nPVm(<;~Sw_*kJlio|*qhI8#F?9y#@jvQ4Y?j2~r_a^)YoQ-co4WFOwF)i5mFnrV
zp3rz^`K|nrI`guQ$X^%JuCI5qSS(}Tc|%+~o}P6dC={o1Q&<)3lnFnXE=l2Po$K4W
zYZ0|2<3Cp|&)NE>;p=Muwg#BLXuboTJ(mwtjLbtdOE_A4n^}l29p9@>4vpS+t*^qG
zb2Uo-W$@vKeR}iztf6tJTUh8=^kh_EBe^3f?1b(p_oBq&dpqW$pAyBB**bIt4BhwK
zX02JE@mc}FExq0q+5_8B#EP&@;6-lx4t~)@$HBEBXnIqX0E$mhb$(}
zt|vYUzekLn0SQ;Cd)J1
zXF3gv$u52+$>oQVvh7DxPpKeWD4yJgdWQQ`D#($Z=j%Df!iAxvR)-y7Ie5nI39+zG
z4a3_4mE;SBh@MK8p%(n|yGj>Ao>j51ETLI#vuUt#g|%FDZG}&kbEb(|*9!RyL&U?|
zvNnv+oEL_*R{Mw_;x+O`vNWUXL6>@M)sQr_lmlng7?sCaDH0YaGf%+R1ZM}9#$j$3
zi}N01^7uoRgvG74Fxi{415}={tg=gDHuqwR$1?9qlK<#~
zLG@an>_SlEY6+k8PD+S)C&NU7!~`$+Sin{JS2aLn_Jm#q|8H%OnLqt&n-f~C7KW9K
z>QxTE1D!cV+(E>-8N#r>Aw98T*8=odDM_y2&?=ag7-=Rj&p%xvU
zq=o{%T2@T(b@VqinV#`~IN4t3^z$HE=3~ZiDQ=xP6Gt)g;q1Wv2N&CBx=Ndw5
z6U*fS@;@VBF^MGsyag~+Eq&2UZ@5SG$!SM2ckBL!E1lBg>*t^{Lqn=cK^-Rhc#S(%
zuAqbI(^+PqN#)t&5xr~v&*Y$qZ$3Yz)nRe`ZZcJUU8hd=)9$7
z6n-k7p||Esq}igp(IoxtD&_5A!OwcTvM3p-HHJGcVh|>N13O;!W%RXd{Y6@BEp1Jz
zHCH!~H~lR%<3E0b>}>_dD6Ef8r_)LSp}O5L`DerkKk|Jc@n6*BmU&r@TKhG$-x=>`wv*Vj%M=6<7!P7~3+)?^D>AA~&^F+{mzBAMLh
zuTiItS}IqcPpj-t;W15ahnBV9rHnrShN-@GCY+EyXV6Gass&4cM~^;F?z{3+SXKe7
zX8rBU7Fc!Kr5M!K@lDd)Bl)VMR)yb6;AHxpH?Q1Bx14XQy~`&ggyC$4u>az;q|C7G
ziTI-A3y9BZbxP7rW4_G!ju{^(NOZstl}tvVR+j8_B`~)2cWn2~;amI9u@_9oSC+Xc
z_+DcYbc7S~MIl7Fjk6qEWXDo6>n5U0O4P_k15Z^c%P@0?*Oaj8%BIU*uy|Vgi@eqH
zPKZqrW$wXWQ9=QoQrY4VBCFzACRJhEv+U(FOmx1_uwVirtukLVbyF&%?xKU6D>Yot
zj6ZW-1$@|ASwJlAu1;!K9!5uPdov-?7RK^;L%bs%6z9abcvP!i20^{1|g}`{&O=}R+#D;J+z#Fj(x6k%xY0!5_DrzSsTCn;pu^6
zIZV~_c4b?yxFutJZTc`BT4+(N21dx%Bxx5_=*+^Gl`PCmvS7QnNZUr>RqS>smtAo7
z%1fV4h6YI+Y2X$?ZuQmeFj!XWfPJxAc1<0;;3C|?V?=BITB{AnSkYW;+Vbas9ODwo
zC?uf|l|KjLdt@iP*&!CGbh&OT1l3&s3RD|7knGOc{T%o)WLqmqSnTE5-M^OKN+8ct1C(XwQJJg%OozV)cJ^w#
zVxbg~z7OMwn+eEPaBRR0KIDX14Kb^G-Strc8r6QmoINnF;F1;|U5n3%rdT9(U0dcP
zI*}ZU>2wFp1u1KmK2cwSwk|=oZ8?l*@yIPBD3BPN(BINzFh#VAKBpVxZ71*JgwpWXLZfS%KkGa_tQn0bX5)h8
z6Q7LGdb=)NQ}a}>SD{8~!ga|bE*aS_Nxg_+ojhQ1{b@sVzaX)Z{rV-1%Qa*ioSy65
zb4ke$#&Mf>xuBg{&aCGNbhbOGbN4XT4?qQpRW^!2z;9eCH6fH7)+qpWe;n~*tCIq=
z&w&jc@_tBWRiS3IyovPwt~fl#1Z-%o%T_B%)sO*FrOIkz-1r$#mr+&N2J06a?u1<~QB}EoR?wnU)c32Ew0(EP^w=K@<
zM;7MeoWTwa-$09MwD#{-p5K@kGTM6q@*9`~NBz#snAQt$W%fZr`qk|A%IEM4|B(?x
zOpx+g1-*Q?a%JHpKf|Cs>MCBj^^EmKDb?*U1(_uF({whek67oi^wL)^XH3=`&u$U^
z*K&AEIc$ISs)O2r7emK9XW_i^6Jxw-Ug6tIn{3gqAYG+j_U1<)>HovW7l7Z>STIh4
z7OH$pfQM^<6ZPN`%FY^PFKzq89tYsIi0BGroup 28 Copy 5Created with Sketch.
\ No newline at end of file
diff --git a/public/pro_icon.svg b/public/pro_icon.svg
new file mode 100644
index 0000000..e075b78
--- /dev/null
+++ b/public/pro_icon.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/public/scripts/loading.js b/public/scripts/loading.js
new file mode 100644
index 0000000..c1ced54
--- /dev/null
+++ b/public/scripts/loading.js
@@ -0,0 +1,202 @@
+/**
+ * loading 占位
+ * 解决首次加载时白屏的问题
+ */
+ (function () {
+ const _root = document.querySelector('#root');
+ if (_root && _root.innerHTML === '') {
+ _root.innerHTML = `
+
+
+
+
+
+ 正在加载资源
+
+
+ 初次加载资源可能需要较多时间 请耐心等待
+
+
+ `;
+ }
+})();
diff --git a/src/access.ts b/src/access.ts
new file mode 100644
index 0000000..d527afb
--- /dev/null
+++ b/src/access.ts
@@ -0,0 +1,9 @@
+/**
+ * @see https://umijs.org/docs/max/access#access
+ * */
+export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) {
+ const { currentUser } = initialState ?? {};
+ return {
+ canAdmin: currentUser && currentUser.access === 'admin',
+ };
+}
diff --git a/src/app.tsx b/src/app.tsx
new file mode 100644
index 0000000..22fd9a9
--- /dev/null
+++ b/src/app.tsx
@@ -0,0 +1,136 @@
+import { Footer, Question, SelectLang, AvatarDropdown, AvatarName } from '@/components';
+import { LinkOutlined } from '@ant-design/icons';
+import type { Settings as LayoutSettings } from '@ant-design/pro-components';
+import { SettingDrawer } from '@ant-design/pro-components';
+import type { RunTimeLayoutConfig } from '@umijs/max';
+import { history, Link } from '@umijs/max';
+import defaultSettings from '../config/defaultSettings';
+import { errorConfig } from './requestErrorConfig';
+import { currentUser as queryCurrentUser } from '@/services/ant-design-pro/api';
+import React from 'react';
+const isDev = process.env.NODE_ENV === 'development';
+const loginPath = '/user/login';
+
+/**
+ * @see https://umijs.org/zh-CN/plugins/plugin-initial-state
+ * */
+export async function getInitialState(): Promise<{
+ settings?: Partial;
+ currentUser?: API.CurrentUser;
+ loading?: boolean;
+ fetchUserInfo?: () => Promise;
+}> {
+ const fetchUserInfo = async () => {
+ try {
+ const msg = await queryCurrentUser({
+ skipErrorHandler: true,
+ });
+ return msg.data;
+ } catch (error) {
+ history.push(loginPath);
+ }
+ return undefined;
+ };
+ // 如果不是登录页面,执行
+ const { location } = history;
+ if (location.pathname !== loginPath) {
+ const currentUser = await fetchUserInfo();
+ return {
+ fetchUserInfo,
+ currentUser,
+ settings: defaultSettings as Partial,
+ };
+ }
+ return {
+ fetchUserInfo,
+ settings: defaultSettings as Partial,
+ };
+}
+
+// ProLayout 支持的api https://procomponents.ant.design/components/layout
+export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => {
+ return {
+ actionsRender: () => [, ],
+ avatarProps: {
+ src: initialState?.currentUser?.avatar,
+ title: ,
+ render: (_, avatarChildren) => {
+ return {avatarChildren};
+ },
+ },
+ waterMarkProps: {
+ content: initialState?.currentUser?.name,
+ },
+ footerRender: () => ,
+ onPageChange: () => {
+ const { location } = history;
+ // 如果没有登录,重定向到 login
+ if (!initialState?.currentUser && location.pathname !== loginPath) {
+ history.push(loginPath);
+ }
+ },
+ bgLayoutImgList: [
+ {
+ src: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/D2LWSqNny4sAAAAAAAAAAAAAFl94AQBr',
+ left: 85,
+ bottom: 100,
+ height: '303px',
+ },
+ {
+ src: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/C2TWRpJpiC0AAAAAAAAAAAAAFl94AQBr',
+ bottom: -68,
+ right: -45,
+ height: '303px',
+ },
+ {
+ src: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/F6vSTbj8KpYAAAAAAAAAAAAAFl94AQBr',
+ bottom: 0,
+ left: 0,
+ width: '331px',
+ },
+ ],
+ links: isDev
+ ? [
+
+
+ OpenAPI 文档
+ ,
+ ]
+ : [],
+ menuHeaderRender: undefined,
+ // 自定义 403 页面
+ // unAccessible: unAccessible
,
+ // 增加一个 loading 的状态
+ childrenRender: (children) => {
+ // if (initialState?.loading) return ;
+ return (
+ <>
+ {children}
+ {isDev && (
+ {
+ setInitialState((preInitialState) => ({
+ ...preInitialState,
+ settings,
+ }));
+ }}
+ />
+ )}
+ >
+ );
+ },
+ ...initialState?.settings,
+ };
+};
+
+/**
+ * @name request 配置,可以配置错误处理
+ * 它基于 axios 和 ahooks 的 useRequest 提供了一套统一的网络请求和错误处理方案。
+ * @doc https://umijs.org/docs/max/request#配置
+ */
+export const request = {
+ ...errorConfig,
+};
diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx
new file mode 100644
index 0000000..f204ac2
--- /dev/null
+++ b/src/components/Footer/index.tsx
@@ -0,0 +1,35 @@
+import { GithubOutlined } from '@ant-design/icons';
+import { DefaultFooter } from '@ant-design/pro-components';
+import React from 'react';
+
+const Footer: React.FC = () => {
+ return (
+ ,
+ href: 'https://github.com/ant-design/ant-design-pro',
+ blankTarget: true,
+ },
+ {
+ key: 'Ant Design',
+ title: 'Ant Design',
+ href: 'https://ant.design',
+ blankTarget: true,
+ },
+ ]}
+ />
+ );
+};
+
+export default Footer;
diff --git a/src/components/HeaderDropdown/index.tsx b/src/components/HeaderDropdown/index.tsx
new file mode 100644
index 0000000..f89052d
--- /dev/null
+++ b/src/components/HeaderDropdown/index.tsx
@@ -0,0 +1,27 @@
+import { Dropdown } from 'antd';
+import type { DropDownProps } from 'antd/es/dropdown';
+import React from 'react';
+import { createStyles } from 'antd-style';
+import classNames from 'classnames';
+
+const useStyles = createStyles(({ token }) => {
+ return {
+ dropdown: {
+ [`@media screen and (max-width: ${token.screenXS}px)`]: {
+ width: '100%',
+ },
+ },
+ };
+});
+
+export type HeaderDropdownProps = {
+ overlayClassName?: string;
+ placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter';
+} & Omit;
+
+const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => {
+ const { styles } = useStyles();
+ return ;
+};
+
+export default HeaderDropdown;
diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx
new file mode 100644
index 0000000..766a5d3
--- /dev/null
+++ b/src/components/RightContent/AvatarDropdown.tsx
@@ -0,0 +1,138 @@
+import { outLogin } from '@/services/ant-design-pro/api';
+import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons';
+import { history, useModel } from '@umijs/max';
+import { Spin } from 'antd';
+import { createStyles } from 'antd-style';
+import { stringify } from 'querystring';
+import type { MenuInfo } from 'rc-menu/lib/interface';
+import React, { useCallback } from 'react';
+import { flushSync } from 'react-dom';
+import HeaderDropdown from '../HeaderDropdown';
+
+export type GlobalHeaderRightProps = {
+ menu?: boolean;
+ children?: React.ReactNode;
+};
+
+export const AvatarName = () => {
+ const { initialState } = useModel('@@initialState');
+ const { currentUser } = initialState || {};
+ return {currentUser?.name};
+};
+
+const useStyles = createStyles(({ token }) => {
+ return {
+ action: {
+ display: 'flex',
+ height: '48px',
+ marginLeft: 'auto',
+ overflow: 'hidden',
+ alignItems: 'center',
+ padding: '0 8px',
+ cursor: 'pointer',
+ borderRadius: token.borderRadius,
+ '&:hover': {
+ backgroundColor: token.colorBgTextHover,
+ },
+ },
+ };
+});
+
+export const AvatarDropdown: React.FC = ({ menu, children }) => {
+ /**
+ * 退出登录,并且将当前的 url 保存
+ */
+ const loginOut = async () => {
+ await outLogin();
+ const { search, pathname } = window.location;
+ const urlParams = new URL(window.location.href).searchParams;
+ /** 此方法会跳转到 redirect 参数所在的位置 */
+ const redirect = urlParams.get('redirect');
+ // Note: There may be security issues, please note
+ if (window.location.pathname !== '/user/login' && !redirect) {
+ history.replace({
+ pathname: '/user/login',
+ search: stringify({
+ redirect: pathname + search,
+ }),
+ });
+ }
+ };
+ const { styles } = useStyles();
+
+ const { initialState, setInitialState } = useModel('@@initialState');
+
+ const onMenuClick = useCallback(
+ (event: MenuInfo) => {
+ const { key } = event;
+ if (key === 'logout') {
+ flushSync(() => {
+ setInitialState((s) => ({ ...s, currentUser: undefined }));
+ });
+ loginOut();
+ return;
+ }
+ history.push(`/account/${key}`);
+ },
+ [setInitialState],
+ );
+
+ const loading = (
+
+
+
+ );
+
+ if (!initialState) {
+ return loading;
+ }
+
+ const { currentUser } = initialState;
+
+ if (!currentUser || !currentUser.name) {
+ return loading;
+ }
+
+ const menuItems = [
+ ...(menu
+ ? [
+ {
+ key: 'center',
+ icon: ,
+ label: '个人中心',
+ },
+ {
+ key: 'settings',
+ icon: ,
+ label: '个人设置',
+ },
+ {
+ type: 'divider' as const,
+ },
+ ]
+ : []),
+ {
+ key: 'logout',
+ icon: ,
+ label: '退出登录',
+ },
+ ];
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx
new file mode 100644
index 0000000..20a7831
--- /dev/null
+++ b/src/components/RightContent/index.tsx
@@ -0,0 +1,31 @@
+import { QuestionCircleOutlined } from '@ant-design/icons';
+import { SelectLang as UmiSelectLang } from '@umijs/max';
+import React from 'react';
+
+export type SiderTheme = 'light' | 'dark';
+
+export const SelectLang = () => {
+ return (
+
+ );
+};
+
+export const Question = () => {
+ return (
+ {
+ window.open('https://pro.ant.design/docs/getting-started');
+ }}
+ >
+
+
+ );
+};
diff --git a/src/components/index.ts b/src/components/index.ts
new file mode 100644
index 0000000..ca88a6d
--- /dev/null
+++ b/src/components/index.ts
@@ -0,0 +1,12 @@
+/**
+ * 这个文件作为组件的目录
+ * 目的是统一管理对外输出的组件,方便分类
+ */
+/**
+ * 布局组件
+ */
+import Footer from './Footer';
+import { Question, SelectLang } from './RightContent';
+import { AvatarDropdown, AvatarName } from './RightContent/AvatarDropdown';
+
+export { Footer, Question, SelectLang, AvatarDropdown, AvatarName };
diff --git a/src/global.less b/src/global.less
new file mode 100644
index 0000000..a9a0c51
--- /dev/null
+++ b/src/global.less
@@ -0,0 +1,53 @@
+html,
+body,
+#root {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
+ 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
+ 'Noto Color Emoji';
+}
+
+.colorWeak {
+ filter: invert(80%);
+}
+
+.ant-layout {
+ min-height: 100vh;
+}
+.ant-pro-sider.ant-layout-sider.ant-pro-sider-fixed {
+ left: unset;
+}
+
+canvas {
+ display: block;
+}
+
+body {
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+ul,
+ol {
+ list-style: none;
+}
+
+@media (max-width: 768px) {
+ .ant-table {
+ width: 100%;
+ overflow-x: auto;
+ &-thead > tr,
+ &-tbody > tr {
+ > th,
+ > td {
+ white-space: pre;
+ > span {
+ display: block;
+ }
+ }
+ }
+ }
+}
diff --git a/src/global.tsx b/src/global.tsx
new file mode 100644
index 0000000..afa1fab
--- /dev/null
+++ b/src/global.tsx
@@ -0,0 +1,91 @@
+import { useIntl } from '@umijs/max';
+import { Button, message, notification } from 'antd';
+import defaultSettings from '../config/defaultSettings';
+
+const { pwa } = defaultSettings;
+const isHttps = document.location.protocol === 'https:';
+
+const clearCache = () => {
+ // remove all caches
+ if (window.caches) {
+ caches
+ .keys()
+ .then((keys) => {
+ keys.forEach((key) => {
+ caches.delete(key);
+ });
+ })
+ .catch((e) => console.log(e));
+ }
+};
+
+// if pwa is true
+if (pwa) {
+ // Notify user if offline now
+ window.addEventListener('sw.offline', () => {
+ message.warning(useIntl().formatMessage({ id: 'app.pwa.offline' }));
+ });
+
+ // Pop up a prompt on the page asking the user if they want to use the latest version
+ window.addEventListener('sw.updated', (event: Event) => {
+ const e = event as CustomEvent;
+ const reloadSW = async () => {
+ // Check if there is sw whose state is waiting in ServiceWorkerRegistration
+ // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration
+ const worker = e.detail && e.detail.waiting;
+ if (!worker) {
+ return true;
+ }
+ // Send skip-waiting event to waiting SW with MessageChannel
+ await new Promise((resolve, reject) => {
+ const channel = new MessageChannel();
+ channel.port1.onmessage = (msgEvent) => {
+ if (msgEvent.data.error) {
+ reject(msgEvent.data.error);
+ } else {
+ resolve(msgEvent.data);
+ }
+ };
+ worker.postMessage({ type: 'skip-waiting' }, [channel.port2]);
+ });
+
+ clearCache();
+ window.location.reload();
+ return true;
+ };
+ const key = `open${Date.now()}`;
+ const btn = (
+
+ );
+ notification.open({
+ message: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated' }),
+ description: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated.hint' }),
+ btn,
+ key,
+ onClose: async () => null,
+ });
+ });
+} else if ('serviceWorker' in navigator && isHttps) {
+ // unregister service worker
+ const { serviceWorker } = navigator;
+ if (serviceWorker.getRegistrations) {
+ serviceWorker.getRegistrations().then((sws) => {
+ sws.forEach((sw) => {
+ sw.unregister();
+ });
+ });
+ }
+ serviceWorker.getRegistration().then((sw) => {
+ if (sw) sw.unregister();
+ });
+
+ clearCache();
+}
diff --git a/src/locales/bn-BD.ts b/src/locales/bn-BD.ts
new file mode 100644
index 0000000..39207ef
--- /dev/null
+++ b/src/locales/bn-BD.ts
@@ -0,0 +1,25 @@
+import component from './bn-BD/component';
+import globalHeader from './bn-BD/globalHeader';
+import menu from './bn-BD/menu';
+import pages from './bn-BD/pages';
+import pwa from './bn-BD/pwa';
+import settingDrawer from './bn-BD/settingDrawer';
+import settings from './bn-BD/settings';
+
+export default {
+ 'navBar.lang': 'ভাষা',
+ 'layout.user.link.help': 'সহায়তা',
+ 'layout.user.link.privacy': 'গোপনীয়তা',
+ 'layout.user.link.terms': 'শর্তাদি',
+ 'app.preview.down.block': 'আপনার স্থানীয় প্রকল্পে এই পৃষ্ঠাটি ডাউনলোড করুন',
+ 'app.welcome.link.fetch-blocks': 'সমস্ত ব্লক পান',
+ 'app.welcome.link.block-list':
+ '`block` ডেভেলপমেন্ট এর উপর ভিত্তি করে দ্রুত স্ট্যান্ডার্ড, পৃষ্ঠাসমূহ তৈরি করুন।',
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+ ...pages,
+};
diff --git a/src/locales/bn-BD/component.ts b/src/locales/bn-BD/component.ts
new file mode 100644
index 0000000..a546e75
--- /dev/null
+++ b/src/locales/bn-BD/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': 'বিস্তৃত',
+ 'component.tagSelect.collapse': 'সঙ্কুচিত',
+ 'component.tagSelect.all': 'সব',
+};
diff --git a/src/locales/bn-BD/globalHeader.ts b/src/locales/bn-BD/globalHeader.ts
new file mode 100644
index 0000000..2679be4
--- /dev/null
+++ b/src/locales/bn-BD/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': 'অনুসন্ধান করুন',
+ 'component.globalHeader.search.example1': 'অনুসন্ধান উদাহরণ ১',
+ 'component.globalHeader.search.example2': 'অনুসন্ধান উদাহরণ ২',
+ 'component.globalHeader.search.example3': 'অনুসন্ধান উদাহরণ ৩',
+ 'component.globalHeader.help': 'সহায়তা',
+ 'component.globalHeader.notification': 'বিজ্ঞপ্তি',
+ 'component.globalHeader.notification.empty': 'আপনি সমস্ত বিজ্ঞপ্তি দেখেছেন।',
+ 'component.globalHeader.message': 'বার্তা',
+ 'component.globalHeader.message.empty': 'আপনি সমস্ত বার্তা দেখেছেন।',
+ 'component.globalHeader.event': 'ঘটনা',
+ 'component.globalHeader.event.empty': 'আপনি সমস্ত ইভেন্ট দেখেছেন।',
+ 'component.noticeIcon.clear': 'সাফ',
+ 'component.noticeIcon.cleared': 'সাফ করা হয়েছে',
+ 'component.noticeIcon.empty': 'বিজ্ঞপ্তি নেই',
+ 'component.noticeIcon.view-more': 'আরো দেখুন',
+};
diff --git a/src/locales/bn-BD/menu.ts b/src/locales/bn-BD/menu.ts
new file mode 100644
index 0000000..ae511a0
--- /dev/null
+++ b/src/locales/bn-BD/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': 'স্বাগতম',
+ 'menu.more-blocks': 'আরও ব্লক',
+ 'menu.home': 'নীড়',
+ 'menu.admin': 'অ্যাডমিন',
+ 'menu.admin.sub-page': 'উপ-পৃষ্ঠা',
+ 'menu.login': 'প্রবেশ',
+ 'menu.register': 'নিবন্ধন',
+ 'menu.register-result': 'নিবন্ধনে ফলাফল',
+ 'menu.dashboard': 'ড্যাশবোর্ড',
+ 'menu.dashboard.analysis': 'বিশ্লেষণ',
+ 'menu.dashboard.monitor': 'নিরীক্ষণ',
+ 'menu.dashboard.workplace': 'কর্মক্ষেত্র',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': 'ফর্ম',
+ 'menu.form.basic-form': 'বেসিক ফর্ম',
+ 'menu.form.step-form': 'পদক্ষেপ ফর্ম',
+ 'menu.form.step-form.info': 'পদক্ষেপ ফর্ম (স্থানান্তর তথ্য লিখুন)',
+ 'menu.form.step-form.confirm': 'পদক্ষেপ ফর্ম (স্থানান্তর তথ্য নিশ্চিত করুন)',
+ 'menu.form.step-form.result': 'পদক্ষেপ ফর্ম (সমাপ্ত)',
+ 'menu.form.advanced-form': 'উন্নত ফর্ম',
+ 'menu.list': 'তালিকা',
+ 'menu.list.table-list': 'অনুসন্ধানের টেবিল',
+ 'menu.list.basic-list': 'বেসিক তালিকা',
+ 'menu.list.card-list': 'কার্ডের তালিকা',
+ 'menu.list.search-list': 'অনুসন্ধানের তালিকা',
+ 'menu.list.search-list.articles': 'অনুসন্ধানের তালিকা (নিবন্ধসমূহ)',
+ 'menu.list.search-list.projects': 'অনুসন্ধানের তালিকা (প্রকল্পগুলি)',
+ 'menu.list.search-list.applications': 'অনুসন্ধানের তালিকা (অ্যাপ্লিকেশন)',
+ 'menu.profile': 'প্রোফাইল',
+ 'menu.profile.basic': 'বেসিক প্রোফাইল',
+ 'menu.profile.advanced': 'উন্নত প্রোফাইল',
+ 'menu.result': 'ফলাফল',
+ 'menu.result.success': 'সাফল্য',
+ 'menu.result.fail': 'ব্যর্থ',
+ 'menu.exception': 'ব্যতিক্রম',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': 'ট্রিগার',
+ 'menu.account': 'হিসাব',
+ 'menu.account.center': 'অ্যাকাউন্ট কেন্দ্র',
+ 'menu.account.settings': 'অ্যাকাউন্ট সেটিংস',
+ 'menu.account.trigger': 'ট্রিগার ত্রুটি',
+ 'menu.account.logout': 'প্রস্থান',
+ 'menu.editor': 'গ্রাফিক সম্পাদক',
+ 'menu.editor.flow': 'ফ্লো এডিটর',
+ 'menu.editor.mind': 'মাইন্ড এডিটর',
+ 'menu.editor.koni': 'কোনি সম্পাদক',
+};
diff --git a/src/locales/bn-BD/pages.ts b/src/locales/bn-BD/pages.ts
new file mode 100644
index 0000000..07e0cf1
--- /dev/null
+++ b/src/locales/bn-BD/pages.ts
@@ -0,0 +1,70 @@
+export default {
+ 'pages.layouts.userLayout.title':
+ 'পিঁপড়া ডিজাইন হচ্ছে সিহু জেলার সবচেয়ে প্রভাবশালী ওয়েব ডিজাইনের স্পেসিফিকেশন',
+ 'pages.login.accountLogin.tab': 'অ্যাকাউন্টে লগইন',
+ 'pages.login.accountLogin.errorMessage': 'ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড(admin/ant.design)',
+ 'pages.login.failure': 'লগইন ব্যর্থ হয়েছে। আবার চেষ্টা করুন!',
+ 'pages.login.success': 'সফল লগইন!',
+ 'pages.login.username.placeholder': 'ব্যবহারকারীর নাম: admin or user',
+ 'pages.login.username.required': 'আপনার ব্যবহারকারীর নাম ইনপুট করুন!',
+ 'pages.login.password.placeholder': 'পাসওয়ার্ড: ant.design',
+ 'pages.login.password.required': 'আপনার পাসওয়ার্ড ইনপুট করুন!',
+ 'pages.login.phoneLogin.tab': 'ফোন লগইন',
+ 'pages.login.phoneLogin.errorMessage': 'যাচাইকরণ কোড ত্রুটি',
+ 'pages.login.phoneNumber.placeholder': 'ফোন নম্বর',
+ 'pages.login.phoneNumber.required': 'আপনার ফোন নম্বর ইনপুট করুন!',
+ 'pages.login.phoneNumber.invalid': 'ফোন নম্বরটি সঠিক নয়!',
+ 'pages.login.captcha.placeholder': 'যাচাইকরণের কোড',
+ 'pages.login.captcha.required': 'দয়া করে ভেরিফিকেশন কোডটি ইনপুট করুন!',
+ 'pages.login.phoneLogin.getVerificationCode': 'কোড পান',
+ 'pages.getCaptchaSecondText': 'সেকেন্ড',
+ 'pages.login.rememberMe': 'আমাকে মনে রাখুন',
+ 'pages.login.forgotPassword': 'পাসওয়ার্ড ভুলে গেছেন?',
+ 'pages.login.submit': 'প্রবেশ করুন',
+ 'pages.login.loginWith': 'লগইন করতে পারেন:',
+ 'pages.login.registerAccount': 'অ্যাকাউন্ট নিবন্ধন করুন',
+ 'pages.welcome.link': 'স্বাগতম',
+ 'pages.welcome.alertMessage': 'দ্রুত এবং শক্তিশালী ভারী শুল্ক উপাদান প্রকাশ করা হয়েছে।',
+ 'pages.404.subTitle': 'দুঃখিত, আপনি যে পৃষ্ঠাটি দেখতে চান তা বিদ্যমান নেই।',
+ 'pages.404.buttonText': 'প্রধান পাতায় ফিরে যান',
+ 'pages.admin.subPage.title': 'এই পৃষ্ঠাটি কেবল অ্যাডমিন দ্বারা দেখা যাবে',
+ 'pages.admin.subPage.alertMessage':
+ 'UMI UI এখন প্রকাশিত হয়েছে, অভিজ্ঞতা শুরু করতে npm run ui ব্যবহার করতে স্বাগতম।',
+ 'pages.searchTable.createForm.newRule': 'নতুন বিধি',
+ 'pages.searchTable.updateForm.ruleConfig': 'বিধি কনফিগারেশন',
+ 'pages.searchTable.updateForm.basicConfig': 'মৌলিক তথ্য',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': 'বিধি নাম',
+ 'pages.searchTable.updateForm.ruleName.nameRules': 'বিধির নাম লিখুন!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': 'বিধির বিবরণ',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'কমপক্ষে পাঁচটি অক্ষর লিখুন',
+ 'pages.searchTable.updateForm.ruleDesc.descRules':
+ 'কমপক্ষে পাঁচটি অক্ষরের একটি বিধান বিবরণ লিখুন!',
+ 'pages.searchTable.updateForm.ruleProps.title': 'বৈশিষ্ট্য কনফিগার করুন',
+ 'pages.searchTable.updateForm.object': 'নিরীক্ষণ অবজেক্ট',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': 'বিধি টেম্পলেট',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': 'বিধি প্রকার',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': 'সময়সূচী নির্ধারণ করুন',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'শুরুর সময়',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'একটি শুরুর সময় চয়ন করুন!',
+ 'pages.searchTable.titleDesc': 'বর্ণনা',
+ 'pages.searchTable.ruleName': 'বিধি নাম প্রয়োজন',
+ 'pages.searchTable.titleCallNo': 'পরিষেবা কল সংখ্যা',
+ 'pages.searchTable.titleStatus': 'অবস্থা',
+ 'pages.searchTable.nameStatus.default': 'ডিফল্ট',
+ 'pages.searchTable.nameStatus.running': 'চলমান',
+ 'pages.searchTable.nameStatus.online': 'অনলাইন',
+ 'pages.searchTable.nameStatus.abnormal': 'অস্বাভাবিক',
+ 'pages.searchTable.titleUpdatedAt': 'সর্বশেষ নির্ধারিত',
+ 'pages.searchTable.exception': 'ব্যতিক্রম জন্য কারণ লিখুন!',
+ 'pages.searchTable.titleOption': 'অপশন',
+ 'pages.searchTable.config': 'কনফিগারেশন',
+ 'pages.searchTable.subscribeAlert': 'সতর্কতা সাবস্ক্রাইব করুন',
+ 'pages.searchTable.title': 'ইনকয়েরি ফরম',
+ 'pages.searchTable.new': 'নতুন',
+ 'pages.searchTable.chosen': 'নির্বাচিত',
+ 'pages.searchTable.item': 'আইটেম',
+ 'pages.searchTable.totalServiceCalls': 'পরিষেবা কলগুলির মোট সংখ্যা',
+ 'pages.searchTable.tenThousand': '000',
+ 'pages.searchTable.batchDeletion': 'একসাখে ডিলিট',
+ 'pages.searchTable.batchApproval': 'একসাখে অনুমোদন',
+};
diff --git a/src/locales/bn-BD/pwa.ts b/src/locales/bn-BD/pwa.ts
new file mode 100644
index 0000000..233fb30
--- /dev/null
+++ b/src/locales/bn-BD/pwa.ts
@@ -0,0 +1,7 @@
+export default {
+ 'app.pwa.offline': 'আপনি এখন অফলাইন',
+ 'app.pwa.serviceworker.updated': 'নতুন সামগ্রী উপলব্ধ',
+ 'app.pwa.serviceworker.updated.hint':
+ 'বর্তমান পৃষ্ঠাটি পুনরায় লোড করতে দয়া করে "রিফ্রেশ" বোতাম টিপুন',
+ 'app.pwa.serviceworker.updated.ok': 'রিফ্রেশ',
+};
diff --git a/src/locales/bn-BD/settingDrawer.ts b/src/locales/bn-BD/settingDrawer.ts
new file mode 100644
index 0000000..2bd1d04
--- /dev/null
+++ b/src/locales/bn-BD/settingDrawer.ts
@@ -0,0 +1,31 @@
+export default {
+ 'app.setting.pagestyle': 'পৃষ্ঠা স্টাইল সেটিং',
+ 'app.setting.pagestyle.dark': 'ডার্ক স্টাইল',
+ 'app.setting.pagestyle.light': 'লাইট স্টাইল',
+ 'app.setting.content-width': 'সামগ্রীর প্রস্থ',
+ 'app.setting.content-width.fixed': 'স্থির',
+ 'app.setting.content-width.fluid': 'প্রবাহী',
+ 'app.setting.themecolor': 'থিম রঙ',
+ 'app.setting.themecolor.dust': 'ডাস্ট রেড',
+ 'app.setting.themecolor.volcano': 'আগ্নেয়গিরি',
+ 'app.setting.themecolor.sunset': 'সানসেট কমলা',
+ 'app.setting.themecolor.cyan': 'সবুজাভ নীল',
+ 'app.setting.themecolor.green': 'পোলার সবুজ',
+ 'app.setting.themecolor.daybreak': 'দিবস ব্রেক ব্লু (ডিফল্ট)',
+ 'app.setting.themecolor.geekblue': 'গিক আঠালো',
+ 'app.setting.themecolor.purple': 'গোল্ডেন বেগুনি',
+ 'app.setting.navigationmode': 'নেভিগেশন মোড',
+ 'app.setting.sidemenu': 'সাইড মেনু লেআউট',
+ 'app.setting.topmenu': 'টপ মেনু লেআউট',
+ 'app.setting.fixedheader': 'স্থির হেডার',
+ 'app.setting.fixedsidebar': 'স্থির সাইডবার',
+ 'app.setting.fixedsidebar.hint': 'সাইড মেনু বিন্যাসে কাজ করে',
+ 'app.setting.hideheader': 'স্ক্রোল করার সময় হেডার লুকানো',
+ 'app.setting.hideheader.hint': 'লুকানো হেডার সক্ষম থাকলে কাজ করে',
+ 'app.setting.othersettings': 'অন্যান্য সেটিংস্',
+ 'app.setting.weakmode': 'দুর্বল মোড',
+ 'app.setting.copy': 'সেটিং কপি করুন',
+ 'app.setting.copyinfo': 'সাফল্যের অনুলিপি করুন - প্রতিস্থাপন করুন: src/models/setting.js',
+ 'app.setting.production.hint':
+ 'কেবল বিকাশের পরিবেশে প্যানেল শো সেট করা হচ্ছে, দয়া করে ম্যানুয়ালি সংশোধন করুন',
+};
diff --git a/src/locales/bn-BD/settings.ts b/src/locales/bn-BD/settings.ts
new file mode 100644
index 0000000..93cf904
--- /dev/null
+++ b/src/locales/bn-BD/settings.ts
@@ -0,0 +1,59 @@
+export default {
+ 'app.settings.menuMap.basic': 'মৌলিক বৈশিষ্ট্যসহ',
+ 'app.settings.menuMap.security': 'নিরাপত্তা বিন্যাস',
+ 'app.settings.menuMap.binding': 'অ্যাকাউন্ট বাঁধাই',
+ 'app.settings.menuMap.notification': 'নতুন বার্তা বিজ্ঞপ্তি',
+ 'app.settings.basic.avatar': 'অবতার',
+ 'app.settings.basic.change-avatar': 'অবতার পরিবর্তন করুন',
+ 'app.settings.basic.email': 'ইমেইল',
+ 'app.settings.basic.email-message': 'আপনার ইমেইল ইনপুট করুন!',
+ 'app.settings.basic.nickname': 'ডাক নাম',
+ 'app.settings.basic.nickname-message': 'আপনার ডাকনামটি ইনপুট করুন!',
+ 'app.settings.basic.profile': 'ব্যক্তিগত প্রোফাইল',
+ 'app.settings.basic.profile-message': 'আপনার ব্যক্তিগত প্রোফাইল ইনপুট করুন!',
+ 'app.settings.basic.profile-placeholder': 'নিজের সাথে সংক্ষিপ্ত পরিচয়',
+ 'app.settings.basic.country': 'দেশ/অঞ্চল',
+ 'app.settings.basic.country-message': 'আপনার দেশ ইনপুট করুন!',
+ 'app.settings.basic.geographic': 'প্রদেশ বা শহর',
+ 'app.settings.basic.geographic-message': 'আপনার ভৌগলিক তথ্য ইনপুট করুন!',
+ 'app.settings.basic.address': 'রাস্তার ঠিকানা',
+ 'app.settings.basic.address-message': 'দয়া করে আপনার ঠিকানা ইনপুট করুন!',
+ 'app.settings.basic.phone': 'ফোন নম্বর',
+ 'app.settings.basic.phone-message': 'আপনার ফোন ইনপুট করুন!',
+ 'app.settings.basic.update': 'তথ্য হালনাগাদ',
+ 'app.settings.security.strong': 'শক্তিশালী',
+ 'app.settings.security.medium': 'মধ্যম',
+ 'app.settings.security.weak': 'দুর্বল',
+ 'app.settings.security.password': 'অ্যাকাউন্টের পাসওয়ার্ড',
+ 'app.settings.security.password-description': 'বর্তমান পাসওয়ার্ড শক্তি',
+ 'app.settings.security.phone': 'সুরক্ষা ফোন',
+ 'app.settings.security.phone-description': 'আবদ্ধ ফোন',
+ 'app.settings.security.question': 'নিরাপত্তা প্রশ্ন',
+ 'app.settings.security.question-description':
+ 'সুরক্ষা প্রশ্ন সেট করা নেই, এবং সুরক্ষা নীতি কার্যকরভাবে অ্যাকাউন্ট সুরক্ষা রক্ষা করতে পারে',
+ 'app.settings.security.email': 'ব্যাকআপ ইমেইল',
+ 'app.settings.security.email-description': 'বাউন্ড ইমেইল',
+ 'app.settings.security.mfa': 'MFA ডিভাইস',
+ 'app.settings.security.mfa-description':
+ "আনবাউন্ড এমএফএ ডিভাইস, বাঁধাইয়ের পরে, দু'বার নিশ্চিত করা যায়",
+ 'app.settings.security.modify': 'পরিবর্তন করুন',
+ 'app.settings.security.set': 'সেট',
+ 'app.settings.security.bind': 'বাঁধাই',
+ 'app.settings.binding.taobao': 'বাঁধাই তাওবাও',
+ 'app.settings.binding.taobao-description': 'বর্তমানে আনবাউন্ড তাওবাও অ্যাকাউন্ট',
+ 'app.settings.binding.alipay': 'বাইন্ডিং আলিপে',
+ 'app.settings.binding.alipay-description': 'বর্তমানে আনবাউন্ড আলিপে অ্যাকাউন্ট',
+ 'app.settings.binding.dingding': 'বাঁধাই ডিঙ্গটালক',
+ 'app.settings.binding.dingding-description': 'বর্তমানে আনবাউন্ড ডিঙ্গটাল অ্যাকাউন্ট',
+ 'app.settings.binding.bind': 'বাঁধাই',
+ 'app.settings.notification.password': 'অ্যাকাউন্টের পাসওয়ার্ড',
+ 'app.settings.notification.password-description':
+ 'অন্যান্য ব্যবহারকারীর বার্তাগুলি স্টেশন চিঠি আকারে জানানো হবে',
+ 'app.settings.notification.messages': 'সিস্টেম বার্তা',
+ 'app.settings.notification.messages-description':
+ 'সিস্টেম বার্তাগুলি স্টেশন চিঠির আকারে জানানো হবে',
+ 'app.settings.notification.todo': 'করণীয় বিজ্ঞপ্তি',
+ 'app.settings.notification.todo-description': 'করণীয় তালিকাটি স্টেশন থেকে চিঠি আকারে জানানো হবে',
+ 'app.settings.open': 'খোলা',
+ 'app.settings.close': 'বন্ধ',
+};
diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts
new file mode 100644
index 0000000..3c8ed65
--- /dev/null
+++ b/src/locales/en-US.ts
@@ -0,0 +1,24 @@
+import component from './en-US/component';
+import globalHeader from './en-US/globalHeader';
+import menu from './en-US/menu';
+import pages from './en-US/pages';
+import pwa from './en-US/pwa';
+import settingDrawer from './en-US/settingDrawer';
+import settings from './en-US/settings';
+
+export default {
+ 'navBar.lang': 'Languages',
+ 'layout.user.link.help': 'Help',
+ 'layout.user.link.privacy': 'Privacy',
+ 'layout.user.link.terms': 'Terms',
+ 'app.preview.down.block': 'Download this page to your local project',
+ 'app.welcome.link.fetch-blocks': 'Get all block',
+ 'app.welcome.link.block-list': 'Quickly build standard, pages based on `block` development',
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+ ...pages,
+};
diff --git a/src/locales/en-US/component.ts b/src/locales/en-US/component.ts
new file mode 100644
index 0000000..3ba7eed
--- /dev/null
+++ b/src/locales/en-US/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': 'Expand',
+ 'component.tagSelect.collapse': 'Collapse',
+ 'component.tagSelect.all': 'All',
+};
diff --git a/src/locales/en-US/globalHeader.ts b/src/locales/en-US/globalHeader.ts
new file mode 100644
index 0000000..60b6d4e
--- /dev/null
+++ b/src/locales/en-US/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': 'Search',
+ 'component.globalHeader.search.example1': 'Search example 1',
+ 'component.globalHeader.search.example2': 'Search example 2',
+ 'component.globalHeader.search.example3': 'Search example 3',
+ 'component.globalHeader.help': 'Help',
+ 'component.globalHeader.notification': 'Notification',
+ 'component.globalHeader.notification.empty': 'You have viewed all notifications.',
+ 'component.globalHeader.message': 'Message',
+ 'component.globalHeader.message.empty': 'You have viewed all messsages.',
+ 'component.globalHeader.event': 'Event',
+ 'component.globalHeader.event.empty': 'You have viewed all events.',
+ 'component.noticeIcon.clear': 'Clear',
+ 'component.noticeIcon.cleared': 'Cleared',
+ 'component.noticeIcon.empty': 'No notifications',
+ 'component.noticeIcon.view-more': 'View more',
+};
diff --git a/src/locales/en-US/menu.ts b/src/locales/en-US/menu.ts
new file mode 100644
index 0000000..eae3e53
--- /dev/null
+++ b/src/locales/en-US/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': 'Welcome',
+ 'menu.more-blocks': 'More Blocks',
+ 'menu.home': 'Home',
+ 'menu.admin': 'Admin',
+ 'menu.admin.sub-page': 'Sub-Page',
+ 'menu.login': 'Login',
+ 'menu.register': 'Register',
+ 'menu.register-result': 'Register Result',
+ 'menu.dashboard': 'Dashboard',
+ 'menu.dashboard.analysis': 'Analysis',
+ 'menu.dashboard.monitor': 'Monitor',
+ 'menu.dashboard.workplace': 'Workplace',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': 'Form',
+ 'menu.form.basic-form': 'Basic Form',
+ 'menu.form.step-form': 'Step Form',
+ 'menu.form.step-form.info': 'Step Form(write transfer information)',
+ 'menu.form.step-form.confirm': 'Step Form(confirm transfer information)',
+ 'menu.form.step-form.result': 'Step Form(finished)',
+ 'menu.form.advanced-form': 'Advanced Form',
+ 'menu.list': 'List',
+ 'menu.list.table-list': 'Search Table',
+ 'menu.list.basic-list': 'Basic List',
+ 'menu.list.card-list': 'Card List',
+ 'menu.list.search-list': 'Search List',
+ 'menu.list.search-list.articles': 'Search List(articles)',
+ 'menu.list.search-list.projects': 'Search List(projects)',
+ 'menu.list.search-list.applications': 'Search List(applications)',
+ 'menu.profile': 'Profile',
+ 'menu.profile.basic': 'Basic Profile',
+ 'menu.profile.advanced': 'Advanced Profile',
+ 'menu.result': 'Result',
+ 'menu.result.success': 'Success',
+ 'menu.result.fail': 'Fail',
+ 'menu.exception': 'Exception',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': 'Trigger',
+ 'menu.account': 'Account',
+ 'menu.account.center': 'Account Center',
+ 'menu.account.settings': 'Account Settings',
+ 'menu.account.trigger': 'Trigger Error',
+ 'menu.account.logout': 'Logout',
+ 'menu.editor': 'Graphic Editor',
+ 'menu.editor.flow': 'Flow Editor',
+ 'menu.editor.mind': 'Mind Editor',
+ 'menu.editor.koni': 'Koni Editor',
+};
diff --git a/src/locales/en-US/pages.ts b/src/locales/en-US/pages.ts
new file mode 100644
index 0000000..3334c03
--- /dev/null
+++ b/src/locales/en-US/pages.ts
@@ -0,0 +1,70 @@
+export default {
+ 'pages.layouts.userLayout.title':
+ 'Ant Design is the most influential web design specification in Xihu district',
+ 'pages.login.accountLogin.tab': 'Account Login',
+ 'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/ant.design)',
+ 'pages.login.failure': 'Login failed, please try again!',
+ 'pages.login.success': 'Login successful!',
+ 'pages.login.username.placeholder': 'Username: admin or user',
+ 'pages.login.username.required': 'Please input your username!',
+ 'pages.login.password.placeholder': 'Password: ant.design',
+ 'pages.login.password.required': 'Please input your password!',
+ 'pages.login.phoneLogin.tab': 'Phone Login',
+ 'pages.login.phoneLogin.errorMessage': 'Verification Code Error',
+ 'pages.login.phoneNumber.placeholder': 'Phone Number',
+ 'pages.login.phoneNumber.required': 'Please input your phone number!',
+ 'pages.login.phoneNumber.invalid': 'Phone number is invalid!',
+ 'pages.login.captcha.placeholder': 'Verification Code',
+ 'pages.login.captcha.required': 'Please input verification code!',
+ 'pages.login.phoneLogin.getVerificationCode': 'Get Code',
+ 'pages.getCaptchaSecondText': 'sec(s)',
+ 'pages.login.rememberMe': 'Remember me',
+ 'pages.login.forgotPassword': 'Forgot Password ?',
+ 'pages.login.submit': 'Login',
+ 'pages.login.loginWith': 'Login with :',
+ 'pages.login.registerAccount': 'Register Account',
+ 'pages.welcome.link': 'Welcome',
+ 'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.',
+ 'pages.404.subTitle': 'Sorry, the page you visited does not exist.',
+ 'pages.404.buttonText': 'Back Home',
+ 'pages.admin.subPage.title': 'This page can only be viewed by Admin',
+ 'pages.admin.subPage.alertMessage':
+ 'Umi ui is now released, welcome to use npm run ui to start the experience.',
+ 'pages.searchTable.createForm.newRule': 'New Rule',
+ 'pages.searchTable.updateForm.ruleConfig': 'Rule configuration',
+ 'pages.searchTable.updateForm.basicConfig': 'Basic Information',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': 'Rule Name',
+ 'pages.searchTable.updateForm.ruleName.nameRules': 'Please enter the rule name!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Rule Description',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'Please enter at least five characters',
+ 'pages.searchTable.updateForm.ruleDesc.descRules':
+ 'Please enter a rule description of at least five characters!',
+ 'pages.searchTable.updateForm.ruleProps.title': 'Configure Properties',
+ 'pages.searchTable.updateForm.object': 'Monitoring Object',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Rule Template',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Rule Type',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': 'Set Scheduling Period',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Starting Time',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Please choose a start time!',
+ 'pages.searchTable.titleDesc': 'Description',
+ 'pages.searchTable.ruleName': 'Rule name is required',
+ 'pages.searchTable.titleCallNo': 'Number of Service Calls',
+ 'pages.searchTable.titleStatus': 'Status',
+ 'pages.searchTable.nameStatus.default': 'default',
+ 'pages.searchTable.nameStatus.running': 'running',
+ 'pages.searchTable.nameStatus.online': 'online',
+ 'pages.searchTable.nameStatus.abnormal': 'abnormal',
+ 'pages.searchTable.titleUpdatedAt': 'Last Scheduled at',
+ 'pages.searchTable.exception': 'Please enter the reason for the exception!',
+ 'pages.searchTable.titleOption': 'Option',
+ 'pages.searchTable.config': 'Configuration',
+ 'pages.searchTable.subscribeAlert': 'Subscribe to alerts',
+ 'pages.searchTable.title': 'Enquiry Form',
+ 'pages.searchTable.new': 'New',
+ 'pages.searchTable.chosen': 'chosen',
+ 'pages.searchTable.item': 'item',
+ 'pages.searchTable.totalServiceCalls': 'Total Number of Service Calls',
+ 'pages.searchTable.tenThousand': '0000',
+ 'pages.searchTable.batchDeletion': 'batch deletion',
+ 'pages.searchTable.batchApproval': 'batch approval',
+};
diff --git a/src/locales/en-US/pwa.ts b/src/locales/en-US/pwa.ts
new file mode 100644
index 0000000..ed8d199
--- /dev/null
+++ b/src/locales/en-US/pwa.ts
@@ -0,0 +1,6 @@
+export default {
+ 'app.pwa.offline': 'You are offline now',
+ 'app.pwa.serviceworker.updated': 'New content is available',
+ 'app.pwa.serviceworker.updated.hint': 'Please press the "Refresh" button to reload current page',
+ 'app.pwa.serviceworker.updated.ok': 'Refresh',
+};
diff --git a/src/locales/en-US/settingDrawer.ts b/src/locales/en-US/settingDrawer.ts
new file mode 100644
index 0000000..f464351
--- /dev/null
+++ b/src/locales/en-US/settingDrawer.ts
@@ -0,0 +1,31 @@
+export default {
+ 'app.setting.pagestyle': 'Page style setting',
+ 'app.setting.pagestyle.dark': 'Dark style',
+ 'app.setting.pagestyle.light': 'Light style',
+ 'app.setting.content-width': 'Content Width',
+ 'app.setting.content-width.fixed': 'Fixed',
+ 'app.setting.content-width.fluid': 'Fluid',
+ 'app.setting.themecolor': 'Theme Color',
+ 'app.setting.themecolor.dust': 'Dust Red',
+ 'app.setting.themecolor.volcano': 'Volcano',
+ 'app.setting.themecolor.sunset': 'Sunset Orange',
+ 'app.setting.themecolor.cyan': 'Cyan',
+ 'app.setting.themecolor.green': 'Polar Green',
+ 'app.setting.themecolor.daybreak': 'Daybreak Blue (default)',
+ 'app.setting.themecolor.geekblue': 'Geek Glue',
+ 'app.setting.themecolor.purple': 'Golden Purple',
+ 'app.setting.navigationmode': 'Navigation Mode',
+ 'app.setting.sidemenu': 'Side Menu Layout',
+ 'app.setting.topmenu': 'Top Menu Layout',
+ 'app.setting.fixedheader': 'Fixed Header',
+ 'app.setting.fixedsidebar': 'Fixed Sidebar',
+ 'app.setting.fixedsidebar.hint': 'Works on Side Menu Layout',
+ 'app.setting.hideheader': 'Hidden Header when scrolling',
+ 'app.setting.hideheader.hint': 'Works when Hidden Header is enabled',
+ 'app.setting.othersettings': 'Other Settings',
+ 'app.setting.weakmode': 'Color Blind Friendly Mode',
+ 'app.setting.copy': 'Copy Setting',
+ 'app.setting.copyinfo': 'copy success, please replace defaultSettings in src/models/setting.js',
+ 'app.setting.production.hint':
+ 'Setting panel shows in development environment only, please manually modify',
+};
diff --git a/src/locales/en-US/settings.ts b/src/locales/en-US/settings.ts
new file mode 100644
index 0000000..822dd00
--- /dev/null
+++ b/src/locales/en-US/settings.ts
@@ -0,0 +1,60 @@
+export default {
+ 'app.settings.menuMap.basic': 'Basic Settings',
+ 'app.settings.menuMap.security': 'Security Settings',
+ 'app.settings.menuMap.binding': 'Account Binding',
+ 'app.settings.menuMap.notification': 'New Message Notification',
+ 'app.settings.basic.avatar': 'Avatar',
+ 'app.settings.basic.change-avatar': 'Change avatar',
+ 'app.settings.basic.email': 'Email',
+ 'app.settings.basic.email-message': 'Please input your email!',
+ 'app.settings.basic.nickname': 'Nickname',
+ 'app.settings.basic.nickname-message': 'Please input your Nickname!',
+ 'app.settings.basic.profile': 'Personal profile',
+ 'app.settings.basic.profile-message': 'Please input your personal profile!',
+ 'app.settings.basic.profile-placeholder': 'Brief introduction to yourself',
+ 'app.settings.basic.country': 'Country/Region',
+ 'app.settings.basic.country-message': 'Please input your country!',
+ 'app.settings.basic.geographic': 'Province or city',
+ 'app.settings.basic.geographic-message': 'Please input your geographic info!',
+ 'app.settings.basic.address': 'Street Address',
+ 'app.settings.basic.address-message': 'Please input your address!',
+ 'app.settings.basic.phone': 'Phone Number',
+ 'app.settings.basic.phone-message': 'Please input your phone!',
+ 'app.settings.basic.update': 'Update Information',
+ 'app.settings.security.strong': 'Strong',
+ 'app.settings.security.medium': 'Medium',
+ 'app.settings.security.weak': 'Weak',
+ 'app.settings.security.password': 'Account Password',
+ 'app.settings.security.password-description': 'Current password strength',
+ 'app.settings.security.phone': 'Security Phone',
+ 'app.settings.security.phone-description': 'Bound phone',
+ 'app.settings.security.question': 'Security Question',
+ 'app.settings.security.question-description':
+ 'The security question is not set, and the security policy can effectively protect the account security',
+ 'app.settings.security.email': 'Backup Email',
+ 'app.settings.security.email-description': 'Bound Email',
+ 'app.settings.security.mfa': 'MFA Device',
+ 'app.settings.security.mfa-description':
+ 'Unbound MFA device, after binding, can be confirmed twice',
+ 'app.settings.security.modify': 'Modify',
+ 'app.settings.security.set': 'Set',
+ 'app.settings.security.bind': 'Bind',
+ 'app.settings.binding.taobao': 'Binding Taobao',
+ 'app.settings.binding.taobao-description': 'Currently unbound Taobao account',
+ 'app.settings.binding.alipay': 'Binding Alipay',
+ 'app.settings.binding.alipay-description': 'Currently unbound Alipay account',
+ 'app.settings.binding.dingding': 'Binding DingTalk',
+ 'app.settings.binding.dingding-description': 'Currently unbound DingTalk account',
+ 'app.settings.binding.bind': 'Bind',
+ 'app.settings.notification.password': 'Account Password',
+ 'app.settings.notification.password-description':
+ 'Messages from other users will be notified in the form of a station letter',
+ 'app.settings.notification.messages': 'System Messages',
+ 'app.settings.notification.messages-description':
+ 'System messages will be notified in the form of a station letter',
+ 'app.settings.notification.todo': 'To-do Notification',
+ 'app.settings.notification.todo-description':
+ 'The to-do list will be notified in the form of a letter from the station',
+ 'app.settings.open': 'Open',
+ 'app.settings.close': 'Close',
+};
diff --git a/src/locales/fa-IR.ts b/src/locales/fa-IR.ts
new file mode 100644
index 0000000..c27343d
--- /dev/null
+++ b/src/locales/fa-IR.ts
@@ -0,0 +1,24 @@
+import component from './fa-IR/component';
+import globalHeader from './fa-IR/globalHeader';
+import menu from './fa-IR/menu';
+import pages from './fa-IR/pages';
+import pwa from './fa-IR/pwa';
+import settingDrawer from './fa-IR/settingDrawer';
+import settings from './fa-IR/settings';
+
+export default {
+ 'navBar.lang': 'زبان ها ',
+ 'layout.user.link.help': 'کمک',
+ 'layout.user.link.privacy': 'حریم خصوصی',
+ 'layout.user.link.terms': 'مقررات',
+ 'app.preview.down.block': 'این صفحه را در پروژه محلی خود بارگیری کنید',
+ 'app.welcome.link.fetch-blocks': 'دریافت تمام بلوک',
+ 'app.welcome.link.block-list': 'به سرعت صفحات استاندارد مبتنی بر توسعه "بلوک" را بسازید',
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+ ...pages,
+};
diff --git a/src/locales/fa-IR/component.ts b/src/locales/fa-IR/component.ts
new file mode 100644
index 0000000..91e7a05
--- /dev/null
+++ b/src/locales/fa-IR/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': 'باز',
+ 'component.tagSelect.collapse': 'بسته ',
+ 'component.tagSelect.all': 'همه',
+};
diff --git a/src/locales/fa-IR/globalHeader.ts b/src/locales/fa-IR/globalHeader.ts
new file mode 100644
index 0000000..1a92fbb
--- /dev/null
+++ b/src/locales/fa-IR/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': 'جستجو ',
+ 'component.globalHeader.search.example1': 'مثال 1 را جستجو کنید',
+ 'component.globalHeader.search.example2': 'مثال 2 را جستجو کنید',
+ 'component.globalHeader.search.example3': 'مثال 3 را جستجو کنید',
+ 'component.globalHeader.help': 'کمک',
+ 'component.globalHeader.notification': 'اعلان',
+ 'component.globalHeader.notification.empty': 'شما همه اعلان ها را مشاهده کرده اید.',
+ 'component.globalHeader.message': 'پیام',
+ 'component.globalHeader.message.empty': 'شما همه پیام ها را مشاهده کرده اید.',
+ 'component.globalHeader.event': 'رویداد',
+ 'component.globalHeader.event.empty': 'شما همه رویدادها را مشاهده کرده اید.',
+ 'component.noticeIcon.clear': 'پاک کردن',
+ 'component.noticeIcon.cleared': 'پاک شد',
+ 'component.noticeIcon.empty': 'بدون اعلان',
+ 'component.noticeIcon.view-more': 'نمایش بیشتر',
+};
diff --git a/src/locales/fa-IR/menu.ts b/src/locales/fa-IR/menu.ts
new file mode 100644
index 0000000..c67e003
--- /dev/null
+++ b/src/locales/fa-IR/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': 'خوش آمدید',
+ 'menu.more-blocks': 'بلوک های بیشتر',
+ 'menu.home': 'خانه',
+ 'menu.admin': 'مدیر',
+ 'menu.admin.sub-page': 'زیر صفحه',
+ 'menu.login': 'ورود',
+ 'menu.register': 'ثبت نام',
+ 'menu.register-result': 'ثبت نام نتیجه',
+ 'menu.dashboard': 'داشبورد',
+ 'menu.dashboard.analysis': 'تحلیل و بررسی',
+ 'menu.dashboard.monitor': 'نظارت',
+ 'menu.dashboard.workplace': 'محل کار',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': 'فرم',
+ 'menu.form.basic-form': 'فرم اساسی',
+ 'menu.form.step-form': 'فرم مرحله',
+ 'menu.form.step-form.info': 'فرم مرحله (نوشتن اطلاعات انتقال)',
+ 'menu.form.step-form.confirm': 'فرم مرحله (تأیید اطلاعات انتقال)',
+ 'menu.form.step-form.result': 'فرم مرحله (تمام شده)',
+ 'menu.form.advanced-form': 'فرم پیشرفته',
+ 'menu.list': 'لیست',
+ 'menu.list.table-list': 'جدول جستجو',
+ 'menu.list.basic-list': 'لیست اصلی',
+ 'menu.list.card-list': 'لیست کارت',
+ 'menu.list.search-list': 'لیست جستجو',
+ 'menu.list.search-list.articles': 'لیست جستجو (مقالات)',
+ 'menu.list.search-list.projects': 'لیست جستجو (پروژه ها)',
+ 'menu.list.search-list.applications': 'لیست جستجو (برنامه ها)',
+ 'menu.profile': 'مشخصات',
+ 'menu.profile.basic': 'مشخصات عمومی',
+ 'menu.profile.advanced': 'مشخصات پیشرفته',
+ 'menu.result': 'نتیجه',
+ 'menu.result.success': 'موفق',
+ 'menu.result.fail': 'ناموفق',
+ 'menu.exception': 'استثنا',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': 'راه اندازی',
+ 'menu.account': 'حساب',
+ 'menu.account.center': 'مرکز حساب',
+ 'menu.account.settings': 'تنظیمات حساب',
+ 'menu.account.trigger': 'خطای راه اندازی',
+ 'menu.account.logout': 'خروج',
+ 'menu.editor': 'ویرایشگر گرافیک',
+ 'menu.editor.flow': 'ویرایشگر جریان',
+ 'menu.editor.mind': 'ویرایشگر ذهن',
+ 'menu.editor.koni': 'ویرایشگر Koni',
+};
diff --git a/src/locales/fa-IR/pages.ts b/src/locales/fa-IR/pages.ts
new file mode 100644
index 0000000..e49f6d5
--- /dev/null
+++ b/src/locales/fa-IR/pages.ts
@@ -0,0 +1,69 @@
+export default {
+ 'pages.layouts.userLayout.title': 'طراحی مورچه تأثیرگذارترین مشخصات طراحی وب در منطقه Xihu است',
+ 'pages.login.accountLogin.tab': 'ورود به حساب کاربری',
+ 'pages.login.accountLogin.errorMessage': 'نام کاربری / رمزعبور نادرست (مدیر / ant.design)',
+ 'pages.login.failure': 'ورود به سیستم با شکست مواجه شد، لطفا دوباره سعی کنید!',
+ 'pages.login.success': 'ورود موفق!',
+ 'pages.login.username.placeholder': 'نام کاربری: مدیر یا کاربر',
+ 'pages.login.username.required': 'لطفا نام کاربری خود را وارد کنید!',
+ 'pages.login.password.placeholder': 'رمز عبور: ant.design',
+ 'pages.login.password.required': 'لطفاً رمز ورود خود را وارد کنید!',
+ 'pages.login.phoneLogin.tab': 'ورود به سیستم تلفن',
+ 'pages.login.phoneLogin.errorMessage': 'خطای کد تأیید',
+ 'pages.login.phoneNumber.placeholder': 'شماره تلفن',
+ 'pages.login.phoneNumber.required': 'لطفاً شماره تلفن خود را وارد کنید!',
+ 'pages.login.phoneNumber.invalid': 'شماره تلفن نامعتبر است!',
+ 'pages.login.captcha.placeholder': 'کد تایید',
+ 'pages.login.captcha.required': 'لطفا کد تأیید را وارد کنید!',
+ 'pages.login.phoneLogin.getVerificationCode': 'دریافت کد',
+ 'pages.getCaptchaSecondText': 'ثانیه',
+ 'pages.login.rememberMe': 'مرا به خاطر بسپار',
+ 'pages.login.forgotPassword': 'رمز عبور را فراموش کرده اید ?',
+ 'pages.login.submit': 'ارسال',
+ 'pages.login.loginWith': 'وارد شوید با :',
+ 'pages.login.registerAccount': 'ثبت نام',
+ 'pages.welcome.link': 'خوش آمدید',
+ 'pages.welcome.alertMessage': 'اجزای سنگین تر سریعتر و قوی تر آزاد شده اند.',
+ 'pages.404.subTitle': 'ببخشيد، صفحه اي که ديديد وجود نداره',
+ 'pages.404.buttonText': 'بازگشت به صفحه اصلی',
+ 'pages.admin.subPage.title': 'این صفحه فقط توسط مدیر قابل مشاهده است',
+ 'pages.admin.subPage.alertMessage':
+ 'رابط کاربری Umi اکنون منتشر شده است ، برای شروع تجربه استفاده از npm run ui خوش آمدید.',
+ 'pages.searchTable.createForm.newRule': 'قانون جدید',
+ 'pages.searchTable.updateForm.ruleConfig': 'پیکربندی قانون',
+ 'pages.searchTable.updateForm.basicConfig': 'اطلاعات اولیه',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': ' نام قانون',
+ 'pages.searchTable.updateForm.ruleName.nameRules': 'لطفاً نام قانون را وارد کنید!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': 'شرح قانون',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'لطفاً حداقل پنج حرف وارد کنید',
+ 'pages.searchTable.updateForm.ruleDesc.descRules':
+ 'لطفاً حداقل یک قانون حاوی پنج کاراکتر شرح دهید!',
+ 'pages.searchTable.updateForm.ruleProps.title': 'پیکربندی خصوصیات',
+ 'pages.searchTable.updateForm.object': 'نظارت بر شی',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': 'الگوی قانون',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': 'نوع قانون',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': 'تنظیم دوره زمان بندی',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'زمان شروع',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'لطفاً زمان شروع را انتخاب کنید!',
+ 'pages.searchTable.titleDesc': 'شرح',
+ 'pages.searchTable.ruleName': 'نام قانون لازم است',
+ 'pages.searchTable.titleCallNo': 'تعداد تماس های خدماتی',
+ 'pages.searchTable.titleStatus': 'وضعیت',
+ 'pages.searchTable.nameStatus.default': 'پیش فرض',
+ 'pages.searchTable.nameStatus.running': 'در حال دویدن',
+ 'pages.searchTable.nameStatus.online': 'برخط',
+ 'pages.searchTable.nameStatus.abnormal': 'غیرطبیعی',
+ 'pages.searchTable.titleUpdatedAt': 'آخرین برنامه ریزی در',
+ 'pages.searchTable.exception': 'لطفا دلیل استثنا را وارد کنید!',
+ 'pages.searchTable.titleOption': 'گزینه',
+ 'pages.searchTable.config': 'پیکربندی',
+ 'pages.searchTable.subscribeAlert': 'مشترک شدن در هشدارها',
+ 'pages.searchTable.title': 'فرم درخواست',
+ 'pages.searchTable.new': 'جدید',
+ 'pages.searchTable.chosen': 'انتخاب شده',
+ 'pages.searchTable.item': 'مورد',
+ 'pages.searchTable.totalServiceCalls': 'تعداد کل تماس های خدماتی',
+ 'pages.searchTable.tenThousand': '0000',
+ 'pages.searchTable.batchDeletion': 'حذف دسته ای',
+ 'pages.searchTable.batchApproval': 'تصویب دسته ای',
+};
diff --git a/src/locales/fa-IR/pwa.ts b/src/locales/fa-IR/pwa.ts
new file mode 100644
index 0000000..54831b4
--- /dev/null
+++ b/src/locales/fa-IR/pwa.ts
@@ -0,0 +1,7 @@
+export default {
+ 'app.pwa.offline': 'شما اکنون آفلاین هستید',
+ 'app.pwa.serviceworker.updated': 'مطالب جدید در دسترس است',
+ 'app.pwa.serviceworker.updated.hint':
+ 'لطفاً برای بارگیری مجدد صفحه فعلی ، دکمه "تازه سازی" را فشار دهید',
+ 'app.pwa.serviceworker.updated.ok': 'تازه سازی',
+};
diff --git a/src/locales/fa-IR/settingDrawer.ts b/src/locales/fa-IR/settingDrawer.ts
new file mode 100644
index 0000000..cb223d5
--- /dev/null
+++ b/src/locales/fa-IR/settingDrawer.ts
@@ -0,0 +1,32 @@
+export default {
+ 'app.setting.pagestyle': 'تنظیم نوع صفحه',
+ 'app.setting.pagestyle.dark': 'سبک تیره',
+ 'app.setting.pagestyle.light': 'سبک سبک',
+ 'app.setting.content-width': 'عرض محتوا',
+ 'app.setting.content-width.fixed': 'ثابت',
+ 'app.setting.content-width.fluid': 'شناور',
+ 'app.setting.themecolor': 'رنگ تم',
+ 'app.setting.themecolor.dust': 'گرد و غبار قرمز',
+ 'app.setting.themecolor.volcano': 'آتشفشان',
+ 'app.setting.themecolor.sunset': 'غروب نارنجی',
+ 'app.setting.themecolor.cyan': 'فیروزه ای',
+ 'app.setting.themecolor.green': 'سبز قطبی',
+ 'app.setting.themecolor.daybreak': 'آبی روشن(پیشفرض)',
+ 'app.setting.themecolor.geekblue': 'چسب گیک',
+ 'app.setting.themecolor.purple': 'بنفش طلایی',
+ 'app.setting.navigationmode': 'حالت پیمایش',
+ 'app.setting.sidemenu': 'طرح منوی کناری',
+ 'app.setting.topmenu': 'طرح منوی بالایی',
+ 'app.setting.fixedheader': 'سرصفحه ثابت',
+ 'app.setting.fixedsidebar': 'نوار کناری ثابت',
+ 'app.setting.fixedsidebar.hint': 'کار بر روی منوی کناری',
+ 'app.setting.hideheader': 'هدر پنهان هنگام پیمایش',
+ 'app.setting.hideheader.hint': 'وقتی Hidden Header فعال باشد کار می کند',
+ 'app.setting.othersettings': 'تنظیمات دیگر',
+ 'app.setting.weakmode': 'حالت ضعیف',
+ 'app.setting.copy': 'تنظیمات کپی',
+ 'app.setting.copyinfo':
+ 'موفقیت در کپی کردن , لطفا defaultSettings را در src / models / setting.js جایگزین کنید',
+ 'app.setting.production.hint':
+ 'صفحه تنظیم فقط در محیط توسعه نمایش داده می شود ، لطفاً دستی تغییر دهید',
+};
diff --git a/src/locales/fa-IR/settings.ts b/src/locales/fa-IR/settings.ts
new file mode 100644
index 0000000..040bc31
--- /dev/null
+++ b/src/locales/fa-IR/settings.ts
@@ -0,0 +1,60 @@
+export default {
+ 'app.settings.menuMap.basic': 'تنظیمات پایه ',
+ 'app.settings.menuMap.security': 'تنظیمات امنیتی',
+ 'app.settings.menuMap.binding': 'صحافی حساب',
+ 'app.settings.menuMap.notification': 'اعلان پیام جدید',
+ 'app.settings.basic.avatar': 'آواتار',
+ 'app.settings.basic.change-avatar': 'آواتار را تغییر دهید',
+ 'app.settings.basic.email': 'ایمیل',
+ 'app.settings.basic.email-message': 'لطفا ایمیل خود را وارد کنید!',
+ 'app.settings.basic.nickname': 'نام مستعار',
+ 'app.settings.basic.nickname-message': 'لطفاً نام مستعار خود را وارد کنید!',
+ 'app.settings.basic.profile': 'پروفایل شخصی',
+ 'app.settings.basic.profile-message': 'لطفاً مشخصات شخصی خود را وارد کنید!',
+ 'app.settings.basic.profile-placeholder': 'معرفی مختصر خودتان',
+ 'app.settings.basic.country': 'کشور / منطقه',
+ 'app.settings.basic.country-message': 'لطفاً کشور خود را وارد کنید!',
+ 'app.settings.basic.geographic': 'استان یا شهر',
+ 'app.settings.basic.geographic-message': 'لطفاً اطلاعات جغرافیایی خود را وارد کنید!',
+ 'app.settings.basic.address': 'آدرس خیابان',
+ 'app.settings.basic.address-message': 'لطفا آدرس خود را وارد کنید!',
+ 'app.settings.basic.phone': 'شماره تلفن',
+ 'app.settings.basic.phone-message': 'لطفاً تلفن خود را وارد کنید!',
+ 'app.settings.basic.update': 'به روز رسانی اطلاعات',
+ 'app.settings.security.strong': 'قوی',
+ 'app.settings.security.medium': 'متوسط',
+ 'app.settings.security.weak': 'ضعیف',
+ 'app.settings.security.password': 'رمز عبور حساب کاربری',
+ 'app.settings.security.password-description': 'قدرت رمز عبور فعلی',
+ 'app.settings.security.phone': 'تلفن امنیتی',
+ 'app.settings.security.phone-description': 'تلفن مقید',
+ 'app.settings.security.question': 'سوال امنیتی',
+ 'app.settings.security.question-description':
+ 'سوال امنیتی تنظیم نشده است و سیاست امنیتی می تواند به طور موثر از امنیت حساب محافظت کند',
+ 'app.settings.security.email': 'ایمیل پشتیبان',
+ 'app.settings.security.email-description': 'ایمیل مقید',
+ 'app.settings.security.mfa': 'دستگاه MFA',
+ 'app.settings.security.mfa-description':
+ 'دستگاه MFA بسته نشده ، پس از اتصال ، می تواند دو بار تأیید شود',
+ 'app.settings.security.modify': 'تغییر',
+ 'app.settings.security.set': 'تنظیم',
+ 'app.settings.security.bind': 'بستن',
+ 'app.settings.binding.taobao': 'اتصال Taobao',
+ 'app.settings.binding.taobao-description': 'حساب Taobao در حال حاضر بسته نشده است',
+ 'app.settings.binding.alipay': 'اتصال Alipay',
+ 'app.settings.binding.alipay-description': 'حساب Alipay در حال حاضر بسته نشده است',
+ 'app.settings.binding.dingding': 'اتصال DingTalk',
+ 'app.settings.binding.dingding-description': 'حساب DingTalk در حال حاضر محدود نشده است',
+ 'app.settings.binding.bind': 'بستن',
+ 'app.settings.notification.password': 'رمز عبور حساب کاربری',
+ 'app.settings.notification.password-description':
+ 'پیام های سایر کاربران در قالب یک نامه ایستگاهی اعلام خواهد شد',
+ 'app.settings.notification.messages': 'پیام های سیستم',
+ 'app.settings.notification.messages-description':
+ 'پیام های سیستم به صورت نامه ایستگاه مطلع می شوند',
+ 'app.settings.notification.todo': 'اعلان کارها',
+ 'app.settings.notification.todo-description':
+ 'لیست کارها به صورت نامه ای از ایستگاه اطلاع داده می شود',
+ 'app.settings.open': 'باز کن',
+ 'app.settings.close': 'بستن',
+};
diff --git a/src/locales/id-ID.ts b/src/locales/id-ID.ts
new file mode 100644
index 0000000..aecd2bd
--- /dev/null
+++ b/src/locales/id-ID.ts
@@ -0,0 +1,25 @@
+import component from './id-ID/component';
+import globalHeader from './id-ID/globalHeader';
+import menu from './id-ID/menu';
+import pages from './id-ID/pages';
+import pwa from './id-ID/pwa';
+import settingDrawer from './id-ID/settingDrawer';
+import settings from './id-ID/settings';
+
+export default {
+ 'navbar.lang': 'Bahasa',
+ 'layout.user.link.help': 'Bantuan',
+ 'layout.user.link.privacy': 'Privasi',
+ 'layout.user.link.terms': 'Ketentuan',
+ 'app.preview.down.block': 'Unduh halaman ini dalam projek lokal anda',
+ 'app.welcome.link.fetch-blocks': 'Dapatkan semua blok',
+ 'app.welcome.link.block-list':
+ 'Buat standar dengan cepat, halaman-halaman berdasarkan pengembangan `block`',
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+ ...pages,
+};
diff --git a/src/locales/id-ID/component.ts b/src/locales/id-ID/component.ts
new file mode 100644
index 0000000..fe583af
--- /dev/null
+++ b/src/locales/id-ID/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': 'Perluas',
+ 'component.tagSelect.collapse': 'Lipat',
+ 'component.tagSelect.all': 'Semua',
+};
diff --git a/src/locales/id-ID/globalHeader.ts b/src/locales/id-ID/globalHeader.ts
new file mode 100644
index 0000000..e6283ea
--- /dev/null
+++ b/src/locales/id-ID/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': 'Pencarian',
+ 'component.globalHeader.search.example1': 'Contoh 1 Pencarian',
+ 'component.globalHeader.search.example2': 'Contoh 2 Pencarian',
+ 'component.globalHeader.search.example3': 'Contoh 3 Pencarian',
+ 'component.globalHeader.help': 'Bantuan',
+ 'component.globalHeader.notification': 'Notifikasi',
+ 'component.globalHeader.notification.empty': 'Anda telah membaca semua notifikasi',
+ 'component.globalHeader.message': 'Pesan',
+ 'component.globalHeader.message.empty': 'Anda telah membaca semua pesan.',
+ 'component.globalHeader.event': 'Acara',
+ 'component.globalHeader.event.empty': 'Anda telah melihat semua acara.',
+ 'component.noticeIcon.clear': 'Kosongkan',
+ 'component.noticeIcon.cleared': 'Berhasil dikosongkan',
+ 'component.noticeIcon.empty': 'Tidak ada pemberitahuan',
+ 'component.noticeIcon.view-more': 'Melihat lebih',
+};
diff --git a/src/locales/id-ID/menu.ts b/src/locales/id-ID/menu.ts
new file mode 100644
index 0000000..254ff44
--- /dev/null
+++ b/src/locales/id-ID/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': 'Selamat Datang',
+ 'menu.more-blocks': 'Blocks Lainnya',
+ 'menu.home': 'Halaman Awal',
+ 'menu.admin': 'Admin',
+ 'menu.admin.sub-page': 'Sub-Halaman',
+ 'menu.login': 'Masuk',
+ 'menu.register': 'Pendaftaran',
+ 'menu.register-result': 'Hasil Pendaftaran',
+ 'menu.dashboard': 'Dasbor',
+ 'menu.dashboard.analysis': 'Analisis',
+ 'menu.dashboard.monitor': 'Monitor',
+ 'menu.dashboard.workplace': 'Workplace',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': 'Form',
+ 'menu.form.basic-form': 'Form Dasar',
+ 'menu.form.step-form': 'Form Bertahap',
+ 'menu.form.step-form.info': 'Form Bertahap(menulis informasi yang dibagikan)',
+ 'menu.form.step-form.confirm': 'Form Bertahap(konfirmasi informasi yang dibagikan)',
+ 'menu.form.step-form.result': 'Form Bertahap(selesai)',
+ 'menu.form.advanced-form': 'Form Lanjutan',
+ 'menu.list': 'Daftar',
+ 'menu.list.table-list': 'Tabel Pencarian',
+ 'menu.list.basic-list': 'Daftar Dasar',
+ 'menu.list.card-list': 'Daftar Kartu',
+ 'menu.list.search-list': 'Daftar Pencarian',
+ 'menu.list.search-list.articles': 'Daftar Pencarian(artikel)',
+ 'menu.list.search-list.projects': 'Daftar Pencarian(projek)',
+ 'menu.list.search-list.applications': 'Daftar Pencarian(aplikasi)',
+ 'menu.profile': 'Profil',
+ 'menu.profile.basic': 'Profil Dasar',
+ 'menu.profile.advanced': 'Profile Lanjutan',
+ 'menu.result': 'Hasil',
+ 'menu.result.success': 'Sukses',
+ 'menu.result.fail': 'Gagal',
+ 'menu.exception': 'Pengecualian',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': 'Jalankan',
+ 'menu.account': 'Akun',
+ 'menu.account.center': 'Detail Akun',
+ 'menu.account.settings': 'Pengaturan Akun',
+ 'menu.account.trigger': 'Mengaktivasi Error',
+ 'menu.account.logout': 'Keluar',
+ 'menu.editor': 'Penyusun Grafis',
+ 'menu.editor.flow': 'Penyusun Alur',
+ 'menu.editor.mind': 'Penyusun Mind',
+ 'menu.editor.koni': 'Penyusun Koni',
+};
diff --git a/src/locales/id-ID/pages.ts b/src/locales/id-ID/pages.ts
new file mode 100644
index 0000000..de28ef3
--- /dev/null
+++ b/src/locales/id-ID/pages.ts
@@ -0,0 +1,72 @@
+export default {
+ 'pages.layouts.userLayout.title':
+ 'Ant Design adalah spesifikasi desain Web yang paling berpengaruh di Kabupaten Xihu',
+ 'pages.login.accountLogin.tab': 'Login dengan akun',
+ 'pages.login.accountLogin.errorMessage': 'Nama pengguna dan kata sandi salah(admin/ant.design)',
+ 'pages.login.failure': 'Log masuk gagal, silakan coba lagi!',
+ 'pages.login.success': 'Login berhasil!',
+ 'pages.login.username.placeholder': 'nama pengguna: admin atau user',
+ 'pages.login.username.required': 'Nama pengguna harus diisi!',
+ 'pages.login.password.placeholder': 'kata sandi: ant.design',
+ 'pages.login.password.required': 'Kata sandi harus diisi!',
+ 'pages.login.phoneLogin.tab': 'Login dengan ponsel',
+ 'pages.login.phoneLogin.errorMessage': 'Kesalahan kode verifikasi',
+ 'pages.login.phoneNumber.placeholder': 'masukkan nomor telepon',
+ 'pages.login.phoneNumber.required': 'Nomor ponsel harus diisi!',
+ 'pages.login.phoneNumber.invalid': 'Nomor ponsel tidak valid!',
+ 'pages.login.captcha.placeholder': 'kode verifikasi',
+ 'pages.login.captcha.required': 'Kode verifikasi diperlukan!',
+ 'pages.login.phoneLogin.getVerificationCode': 'Dapatkan kode',
+ 'pages.getCaptchaSecondText': 'detik tersisa',
+ 'pages.login.rememberMe': 'Ingat saya',
+ 'pages.login.forgotPassword': 'Lupa Kata Sandi?',
+ 'pages.login.submit': 'Masuk',
+ 'pages.login.loginWith': 'Masuk dengan :',
+ 'pages.login.registerAccount': 'Daftar Akun',
+ 'pages.welcome.link': 'Selamat datang',
+ 'pages.welcome.alertMessage':
+ 'Komponen heavy-duty yang lebih cepat dan lebih kuat telah dirilis.',
+ 'pages.404.subTitle': 'Maaf, halaman yang Anda kunjungi tidak ada. ',
+ 'pages.404.buttonText': 'Kembali ke halaman utama',
+ 'pages.admin.subPage.title': 'Halaman ini hanya dapat dilihat oleh admin',
+ 'pages.admin.subPage.alertMessage':
+ 'umi ui telah dirilis, silahkan gunakan npm run ui untuk memulai pengalaman.',
+ 'pages.searchTable.createForm.newRule': 'Aturan baru',
+ 'pages.searchTable.updateForm.ruleConfig': 'Konfigurasi aturan',
+ 'pages.searchTable.updateForm.basicConfig': 'Informasi dasar',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': 'Nama aturan',
+ 'pages.searchTable.updateForm.ruleName.nameRules': 'Harap masukkan nama aturan!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Deskripsi aturan',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder':
+ 'Harap masukkan setidaknya lima karakter',
+ 'pages.searchTable.updateForm.ruleDesc.descRules':
+ 'Harap masukkan deskripsi aturan setidaknya lima karakter!',
+ 'pages.searchTable.updateForm.ruleProps.title': 'Properti aturan',
+ 'pages.searchTable.updateForm.object': 'Objek pemantauan',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Template aturan',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Jenis aturan',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': 'Periode penjadwalan',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Waktu mulai',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Pilih waktu mulai!',
+ 'pages.searchTable.titleDesc': 'deskripsi',
+ 'pages.searchTable.ruleName': 'Nama aturan wajib diisi',
+ 'pages.searchTable.titleCallNo': 'Jumlah panggilan',
+ 'pages.searchTable.titleStatus': 'Status',
+ 'pages.searchTable.nameStatus.default': 'default',
+ 'pages.searchTable.nameStatus.running': 'menyala',
+ 'pages.searchTable.nameStatus.online': 'online',
+ 'pages.searchTable.nameStatus.abnormal': 'abnormal',
+ 'pages.searchTable.titleUpdatedAt': 'Waktu terjadwal',
+ 'pages.searchTable.exception': 'Harap masukkan alasan pengecualian!',
+ 'pages.searchTable.titleOption': 'Pengoperasian',
+ 'pages.searchTable.config': 'Konfigurasi',
+ 'pages.searchTable.subscribeAlert': 'Berlangganan notifikasi',
+ 'pages.searchTable.title': 'Formulir pertanyaan',
+ 'pages.searchTable.new': 'Baru',
+ 'pages.searchTable.chosen': 'Terpilih',
+ 'pages.searchTable.item': 'item',
+ 'pages.searchTable.totalServiceCalls': 'Jumlah total panggilan layanan',
+ 'pages.searchTable.tenThousand': '0000',
+ 'pages.searchTable.batchDeletion': 'Penghapusan batch',
+ 'pages.searchTable.batchApproval': 'Persetujuan batch',
+};
diff --git a/src/locales/id-ID/pwa.ts b/src/locales/id-ID/pwa.ts
new file mode 100644
index 0000000..b2cb8a1
--- /dev/null
+++ b/src/locales/id-ID/pwa.ts
@@ -0,0 +1,7 @@
+export default {
+ 'app.pwa.offline': 'Koneksi anda terputus',
+ 'app.pwa.serviceworker.updated': 'Konten baru sudah tersedia',
+ 'app.pwa.serviceworker.updated.hint':
+ 'Silahkan klik tombol "Refresh" untuk memuat ulang halaman ini',
+ 'app.pwa.serviceworker.updated.ok': 'Memuat ulang',
+};
diff --git a/src/locales/id-ID/settingDrawer.ts b/src/locales/id-ID/settingDrawer.ts
new file mode 100644
index 0000000..78406c2
--- /dev/null
+++ b/src/locales/id-ID/settingDrawer.ts
@@ -0,0 +1,32 @@
+export default {
+ 'app.setting.pagestyle': 'Pengaturan style Halaman',
+ 'app.setting.pagestyle.dark': 'Style Gelap',
+ 'app.setting.pagestyle.light': 'Style Cerah',
+ 'app.setting.content-width': 'Lebar Konten',
+ 'app.setting.content-width.fixed': 'Tetap',
+ 'app.setting.content-width.fluid': 'Fluid',
+ 'app.setting.themecolor': 'Theme Color',
+ 'app.setting.themecolor.dust': 'Dust Red',
+ 'app.setting.themecolor.volcano': 'Volcano',
+ 'app.setting.themecolor.sunset': 'Sunset Orange',
+ 'app.setting.themecolor.cyan': 'Cyan',
+ 'app.setting.themecolor.green': 'Polar Green',
+ 'app.setting.themecolor.daybreak': 'Daybreak Blue (bawaan)',
+ 'app.setting.themecolor.geekblue': 'Geek Glue',
+ 'app.setting.themecolor.purple': 'Golden Purple',
+ 'app.setting.navigationmode': 'Mode Navigasi',
+ 'app.setting.sidemenu': 'Susunan Menu Samping',
+ 'app.setting.topmenu': 'Susunan Menu Atas',
+ 'app.setting.fixedheader': 'Header Tetap',
+ 'app.setting.fixedsidebar': 'Sidebar Tetap',
+ 'app.setting.fixedsidebar.hint': 'Berjalan pada Susunan Menu Samping',
+ 'app.setting.hideheader': 'Sembunyikan Header ketika gulir ke bawah',
+ 'app.setting.hideheader.hint': 'Bekerja ketika Header tersembunyi dimunculkan',
+ 'app.setting.othersettings': 'Pengaturan Lainnya',
+ 'app.setting.weakmode': 'Mode Lemah',
+ 'app.setting.copy': 'Salin Pengaturan',
+ 'app.setting.copyinfo':
+ 'Berhasil disalin, tolong ubah defaultSettings pada src/models/setting.js',
+ 'app.setting.production.hint':
+ 'Panel pengaturan hanya muncul pada lingkungan pengembangan, silahkan modifikasi secara menual',
+};
diff --git a/src/locales/id-ID/settings.ts b/src/locales/id-ID/settings.ts
new file mode 100644
index 0000000..04b7d12
--- /dev/null
+++ b/src/locales/id-ID/settings.ts
@@ -0,0 +1,60 @@
+export default {
+ 'app.settings.menuMap.basic': 'Pengaturan Dasar',
+ 'app.settings.menuMap.security': 'Pengaturan Keamanan',
+ 'app.settings.menuMap.binding': 'Pengikatan Akun',
+ 'app.settings.menuMap.notification': 'Notifikasi Pesan Baru',
+ 'app.settings.basic.avatar': 'Avatar',
+ 'app.settings.basic.change-avatar': 'Ubah avatar',
+ 'app.settings.basic.email': 'Email',
+ 'app.settings.basic.email-message': 'Tolong masukkan email!',
+ 'app.settings.basic.nickname': 'Nickname',
+ 'app.settings.basic.nickname-message': 'Tolong masukkan Nickname!',
+ 'app.settings.basic.profile': 'Profil Personal',
+ 'app.settings.basic.profile-message': 'Tolong masukkan profil personal!',
+ 'app.settings.basic.profile-placeholder': 'Perkenalan Singkat tentang Diri Anda',
+ 'app.settings.basic.country': 'Negara/Wilayah',
+ 'app.settings.basic.country-message': 'Tolong masukkan negara anda!',
+ 'app.settings.basic.geographic': 'Provinsi atau kota',
+ 'app.settings.basic.geographic-message': 'Tolong masukkan info geografis anda!',
+ 'app.settings.basic.address': 'Alamat Jalan',
+ 'app.settings.basic.address-message': 'Tolong masukkan Alamat Jalan anda!',
+ 'app.settings.basic.phone': 'Nomor Ponsel',
+ 'app.settings.basic.phone-message': 'Tolong masukkan Nomor Ponsel anda!',
+ 'app.settings.basic.update': 'Perbarui Informasi',
+ 'app.settings.security.strong': 'Kuat',
+ 'app.settings.security.medium': 'Sedang',
+ 'app.settings.security.weak': 'Lemah',
+ 'app.settings.security.password': 'Kata Sandi Akun',
+ 'app.settings.security.password-description': 'Kekuatan Kata Sandi saat ini',
+ 'app.settings.security.phone': 'Keamanan Ponsel',
+ 'app.settings.security.phone-description': 'Mengikat Ponsel',
+ 'app.settings.security.question': 'Pertanyaan Keamanan',
+ 'app.settings.security.question-description':
+ 'Pertanyaan Keamanan belum diatur, dan kebijakan keamanan dapat melindungi akun secara efektif',
+ 'app.settings.security.email': 'Email Cadangan',
+ 'app.settings.security.email-description': 'Mengikat Email',
+ 'app.settings.security.mfa': 'Perangka MFA',
+ 'app.settings.security.mfa-description':
+ 'Tidak mengikat Perangkat MFA, setelah diikat, dapat dikonfirmasi dua kali',
+ 'app.settings.security.modify': 'Modifikasi',
+ 'app.settings.security.set': 'Setel',
+ 'app.settings.security.bind': 'Ikat',
+ 'app.settings.binding.taobao': 'Mengikat Taobao',
+ 'app.settings.binding.taobao-description': 'Tidak mengikat akun Taobao saat ini',
+ 'app.settings.binding.alipay': 'Mengikat Alipay',
+ 'app.settings.binding.alipay-description': 'Tidak mengikat akun Alipay saat ini',
+ 'app.settings.binding.dingding': 'Mengikat DingTalk',
+ 'app.settings.binding.dingding-description': 'Tidak mengikat akun DingTalk',
+ 'app.settings.binding.bind': 'Ikat',
+ 'app.settings.notification.password': 'Kata Sandi Akun',
+ 'app.settings.notification.password-description':
+ 'Pesan dari pengguna lain akan diberitahu dalam bentuk surat',
+ 'app.settings.notification.messages': 'Pesan Sistem',
+ 'app.settings.notification.messages-description':
+ 'Pesan sistem akan diberitahu dalam bentuk surat',
+ 'app.settings.notification.todo': 'Notifikasi daftar To-do',
+ 'app.settings.notification.todo-description':
+ 'Daftar to-do akan diberitahukan dalam bentuk surat dari stasiun',
+ 'app.settings.open': 'Buka',
+ 'app.settings.close': 'Tutup',
+};
diff --git a/src/locales/ja-JP.ts b/src/locales/ja-JP.ts
new file mode 100644
index 0000000..1602887
--- /dev/null
+++ b/src/locales/ja-JP.ts
@@ -0,0 +1,24 @@
+import component from './ja-JP/component';
+import globalHeader from './ja-JP/globalHeader';
+import menu from './ja-JP/menu';
+import pages from './ja-JP/pages';
+import pwa from './ja-JP/pwa';
+import settingDrawer from './ja-JP/settingDrawer';
+import settings from './ja-JP/settings';
+
+export default {
+ 'navBar.lang': '言語',
+ 'layout.user.link.help': 'ヘルプ',
+ 'layout.user.link.privacy': 'プライバシー',
+ 'layout.user.link.terms': '利用規約',
+ 'app.preview.down.block': 'このページをローカルプロジェクトにダウンロードしてください',
+ 'app.welcome.link.fetch-blocks': '',
+ 'app.welcome.link.block-list': '',
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+ ...pages,
+};
diff --git a/src/locales/ja-JP/component.ts b/src/locales/ja-JP/component.ts
new file mode 100644
index 0000000..40f238c
--- /dev/null
+++ b/src/locales/ja-JP/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': '展開',
+ 'component.tagSelect.collapse': '折りたたむ',
+ 'component.tagSelect.all': 'すべて',
+};
diff --git a/src/locales/ja-JP/globalHeader.ts b/src/locales/ja-JP/globalHeader.ts
new file mode 100644
index 0000000..1642938
--- /dev/null
+++ b/src/locales/ja-JP/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': '検索',
+ 'component.globalHeader.search.example1': '検索例1',
+ 'component.globalHeader.search.example2': '検索例2',
+ 'component.globalHeader.search.example3': '検索例3',
+ 'component.globalHeader.help': 'ヘルプ',
+ 'component.globalHeader.notification': '通知',
+ 'component.globalHeader.notification.empty': 'すべての通知を表示しました。',
+ 'component.globalHeader.message': 'メッセージ',
+ 'component.globalHeader.message.empty': 'すべてのメッセージを表示しました。',
+ 'component.globalHeader.event': 'イベント',
+ 'component.globalHeader.event.empty': 'すべてのイベントを表示しました。',
+ 'component.noticeIcon.clear': 'クリア',
+ 'component.noticeIcon.cleared': 'クリア済み',
+ 'component.noticeIcon.empty': '通知なし',
+ 'component.noticeIcon.view-more': 'もっと見る',
+};
diff --git a/src/locales/ja-JP/menu.ts b/src/locales/ja-JP/menu.ts
new file mode 100644
index 0000000..af6ed0e
--- /dev/null
+++ b/src/locales/ja-JP/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': 'ようこそ',
+ 'menu.more-blocks': 'その他のブロック',
+ 'menu.home': 'ホーム',
+ 'menu.admin': '管理者',
+ 'menu.admin.sub-page': 'サブページ',
+ 'menu.login': 'ログイン',
+ 'menu.register': '登録',
+ 'menu.register-result': '登録結果',
+ 'menu.dashboard': 'ダッシュボード',
+ 'menu.dashboard.analysis': '分析',
+ 'menu.dashboard.monitor': 'モニター',
+ 'menu.dashboard.workplace': '職場',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': 'フォーム',
+ 'menu.form.basic-form': '基本フォーム',
+ 'menu.form.step-form': 'ステップフォーム',
+ 'menu.form.step-form.info': 'ステップフォーム(転送情報の書き込み)',
+ 'menu.form.step-form.confirm': 'ステップフォーム(転送情報の確認)',
+ 'menu.form.step-form.result': 'ステップフォーム(完成)',
+ 'menu.form.advanced-form': '高度なフォーム',
+ 'menu.list': 'リスト',
+ 'menu.list.table-list': '検索テーブル',
+ 'menu.list.basic-list': '基本リスト',
+ 'menu.list.card-list': 'カードリスト',
+ 'menu.list.search-list': '検索リスト',
+ 'menu.list.search-list.articles': '検索リスト(記事)',
+ 'menu.list.search-list.projects': '検索リスト(プロジェクト)',
+ 'menu.list.search-list.applications': '検索リスト(アプリ)',
+ 'menu.profile': 'プロフィール',
+ 'menu.profile.basic': '基本プロフィール',
+ 'menu.profile.advanced': '高度なプロフィール',
+ 'menu.result': '結果',
+ 'menu.result.success': '成功',
+ 'menu.result.fail': '失敗',
+ 'menu.exception': '例外',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': 'トリガー',
+ 'menu.account': 'アカウント',
+ 'menu.account.center': 'アカウントセンター',
+ 'menu.account.settings': 'アカウント設定',
+ 'menu.account.trigger': 'トリガーエラー',
+ 'menu.account.logout': 'ログアウト',
+ 'menu.editor': 'グラフィックエディタ',
+ 'menu.editor.flow': 'フローエディタ',
+ 'menu.editor.mind': 'マインドエディター',
+ 'menu.editor.koni': 'コニエディター',
+};
diff --git a/src/locales/ja-JP/pages.ts b/src/locales/ja-JP/pages.ts
new file mode 100644
index 0000000..8e96ac3
--- /dev/null
+++ b/src/locales/ja-JP/pages.ts
@@ -0,0 +1,69 @@
+export default {
+ 'pages.layouts.userLayout.title': 'Ant Designは、西湖区で最も影響力のあるWebデザイン仕様です。',
+ 'pages.login.accountLogin.tab': 'アカウントログイン',
+ 'pages.login.accountLogin.errorMessage':
+ 'ユーザー名/パスワードが正しくありません(admin/ant.design)',
+ 'pages.login.failure': 'ログインに失敗したら、もう一度試してください!',
+ 'pages.login.success': 'ログイン成功!',
+ 'pages.login.username.placeholder': 'ユーザー名:adminまたはuser',
+ 'pages.login.username.required': 'ユーザー名を入力してください!',
+ 'pages.login.password.placeholder': 'パスワード:ant.design',
+ 'pages.login.password.required': 'パスワードを入力してください!',
+ 'pages.login.phoneLogin.tab': '電話ログイン',
+ 'pages.login.phoneLogin.errorMessage': '検証コードエラー',
+ 'pages.login.phoneNumber.placeholder': '電話番号',
+ 'pages.login.phoneNumber.required': '電話番号を入力してください!',
+ 'pages.login.phoneNumber.invalid': '電話番号が無効です!',
+ 'pages.login.captcha.placeholder': '確認コード',
+ 'pages.login.captcha.required': '確認コードを入力してください!',
+ 'pages.login.phoneLogin.getVerificationCode': '確認コードを取得',
+ 'pages.getCaptchaSecondText': '秒',
+ 'pages.login.rememberMe': 'Remember me',
+ 'pages.login.forgotPassword': 'パスワードをお忘れですか?',
+ 'pages.login.submit': 'ログイン',
+ 'pages.login.loginWith': 'その他のログイン方法:',
+ 'pages.login.registerAccount': 'アカウント登録',
+ 'pages.welcome.link': 'ようこそ',
+ 'pages.welcome.alertMessage': 'より高速で強力な頑丈なコンポーネントがリリースされました。',
+ 'pages.404.subTitle': '申し訳ありませんが、アクセスしたページは存在しません。',
+ 'pages.404.buttonText': 'ホームに戻る',
+ 'pages.admin.subPage.title': 'このページは管理者のみが表示できます',
+ 'pages.admin.subPage.alertMessage':
+ 'Umi uiがリリースされました。npm run uiを使用して体験してください。',
+ 'pages.searchTable.createForm.newRule': '新しいルール',
+ 'pages.searchTable.updateForm.ruleConfig': 'ルール構成',
+ 'pages.searchTable.updateForm.basicConfig': '基本情報',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': 'ルール名',
+ 'pages.searchTable.updateForm.ruleName.nameRules': 'ルール名を入力してください!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': 'ルールの説明',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '5文字以上入力してください',
+ 'pages.searchTable.updateForm.ruleDesc.descRules': '5文字以上のルールの説明を入力してください!',
+ 'pages.searchTable.updateForm.ruleProps.title': 'プロパティの構成',
+ 'pages.searchTable.updateForm.object': '監視対象',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': 'ルールテンプレート',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': 'ルールタイプ',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': 'スケジュール期間の設定',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '開始時間',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '開始時間を選択してください!',
+ 'pages.searchTable.titleDesc': '説明',
+ 'pages.searchTable.ruleName': 'ルール名が必要です',
+ 'pages.searchTable.titleCallNo': 'サービスコール数',
+ 'pages.searchTable.titleStatus': 'ステータス',
+ 'pages.searchTable.nameStatus.default': 'デフォルト',
+ 'pages.searchTable.nameStatus.running': '起動中',
+ 'pages.searchTable.nameStatus.online': 'オンライン',
+ 'pages.searchTable.nameStatus.abnormal': '異常',
+ 'pages.searchTable.titleUpdatedAt': '最終スケジュール',
+ 'pages.searchTable.exception': '例外の理由を入力してください!',
+ 'pages.searchTable.titleOption': 'オプション',
+ 'pages.searchTable.config': '構成',
+ 'pages.searchTable.subscribeAlert': 'アラートを購読する',
+ 'pages.searchTable.title': 'お問い合わせフォーム',
+ 'pages.searchTable.new': '新しい',
+ 'pages.searchTable.chosen': '選んだ項目',
+ 'pages.searchTable.item': '項目',
+ 'pages.searchTable.totalServiceCalls': 'サービスコールの総数',
+ 'pages.searchTable.tenThousand': '万',
+ 'pages.searchTable.batchDeletion': 'バッチ削除',
+ 'pages.searchTable.batchApproval': 'バッチ承認',
+};
diff --git a/src/locales/ja-JP/pwa.ts b/src/locales/ja-JP/pwa.ts
new file mode 100644
index 0000000..ace23ae
--- /dev/null
+++ b/src/locales/ja-JP/pwa.ts
@@ -0,0 +1,7 @@
+export default {
+ 'app.pwa.offline': 'あなたは今オフラインです',
+ 'app.pwa.serviceworker.updated': '新しいコンテンツが利用可能です',
+ 'app.pwa.serviceworker.updated.hint':
+ '現在のページをリロードするには、「更新」ボタンを押してください',
+ 'app.pwa.serviceworker.updated.ok': 'リフレッシュ',
+};
diff --git a/src/locales/ja-JP/settingDrawer.ts b/src/locales/ja-JP/settingDrawer.ts
new file mode 100644
index 0000000..67a22df
--- /dev/null
+++ b/src/locales/ja-JP/settingDrawer.ts
@@ -0,0 +1,31 @@
+export default {
+ 'app.setting.pagestyle': 'ページスタイル設定',
+ 'app.setting.pagestyle.dark': 'ダークスタイル',
+ 'app.setting.pagestyle.light': 'ライトスタイル',
+ 'app.setting.content-width': 'コンテンツの幅',
+ 'app.setting.content-width.fixed': '固定',
+ 'app.setting.content-width.fluid': '流体',
+ 'app.setting.themecolor': 'テーマカラー',
+ 'app.setting.themecolor.dust': 'ダストレッド',
+ 'app.setting.themecolor.volcano': 'ボルケ-ノ',
+ 'app.setting.themecolor.sunset': 'サンセットオレンジ',
+ 'app.setting.themecolor.cyan': 'シアン',
+ 'app.setting.themecolor.green': 'ポーラーグリーン',
+ 'app.setting.themecolor.daybreak': '夜明けの青(デフォルト)',
+ 'app.setting.themecolor.geekblue': 'ギーク ブルー',
+ 'app.setting.themecolor.purple': 'ゴールデンパープル',
+ 'app.setting.navigationmode': 'ナビゲーションモード',
+ 'app.setting.sidemenu': 'サイドメニューのレイアウト',
+ 'app.setting.topmenu': 'トップメニューのレイアウト',
+ 'app.setting.fixedheader': '固定ヘッダー',
+ 'app.setting.fixedsidebar': '固定サイドバー',
+ 'app.setting.fixedsidebar.hint': 'サイドメニューのレイアウトで動作します',
+ 'app.setting.hideheader': 'スクロール時の非表示ヘッダー',
+ 'app.setting.hideheader.hint': '非表示ヘッダーが有効になっている場合に機能します',
+ 'app.setting.othersettings': 'その他の設定',
+ 'app.setting.weakmode': 'ウィークモード',
+ 'app.setting.copy': 'コピー設定',
+ 'app.setting.copyinfo':
+ 'コピーが成功しました。src/models/setting.jsのdefaultSettingsを置き換えてください',
+ 'app.setting.production.hint': '設定パネルは開発環境でのみ表示されます。手動で変更してください',
+};
diff --git a/src/locales/ja-JP/settings.ts b/src/locales/ja-JP/settings.ts
new file mode 100644
index 0000000..de52481
--- /dev/null
+++ b/src/locales/ja-JP/settings.ts
@@ -0,0 +1,59 @@
+export default {
+ 'app.settings.menuMap.basic': '基本設定',
+ 'app.settings.menuMap.security': 'セキュリティ設定',
+ 'app.settings.menuMap.binding': 'アカウントのバインド',
+ 'app.settings.menuMap.notification': '新しいメッセージの通知',
+ 'app.settings.basic.avatar': 'アバター',
+ 'app.settings.basic.change-avatar': 'アバターを変更する',
+ 'app.settings.basic.email': 'メール',
+ 'app.settings.basic.email-message': 'メールアドレスを入力してください!',
+ 'app.settings.basic.nickname': 'ニックネーム',
+ 'app.settings.basic.nickname-message': 'ニックネームを入力してください!',
+ 'app.settings.basic.profile': '個人プロフィール',
+ 'app.settings.basic.profile-message': '個人プロフィールを入力してください!',
+ 'app.settings.basic.profile-placeholder': '自己紹介',
+ 'app.settings.basic.country': '国/地域',
+ 'app.settings.basic.country-message': 'あなたの国を入力してください!',
+ 'app.settings.basic.geographic': '州または市',
+ 'app.settings.basic.geographic-message': '地理情報を入力してください!',
+ 'app.settings.basic.address': '住所',
+ 'app.settings.basic.address-message': '住所を入力してください!',
+ 'app.settings.basic.phone': '電話番号',
+ 'app.settings.basic.phone-message': '電話番号を入力してください!',
+ 'app.settings.basic.update': '更新情報',
+ 'app.settings.security.strong': '強い',
+ 'app.settings.security.medium': 'ミディアム',
+ 'app.settings.security.weak': '弱い',
+ 'app.settings.security.password': 'アカウントパスワード',
+ 'app.settings.security.password-description': '現在のパスワードの強度',
+ 'app.settings.security.phone': 'セキュリティ電話番号',
+ 'app.settings.security.phone-description': 'バインドされた電話番号',
+ 'app.settings.security.question': '秘密の質問',
+ 'app.settings.security.question-description':
+ 'セキュリティの質問が設定されてません。セキュリティポリシーはアカウントのセキュリティを効果的に保護できます',
+ 'app.settings.security.email': 'バックアップメール',
+ 'app.settings.security.email-description': 'バインドされたメール',
+ 'app.settings.security.mfa': '多要素認証デバイス',
+ 'app.settings.security.mfa-description':
+ 'バインドされていない多要素認証デバイスは、バインド後、2回確認できます',
+ 'app.settings.security.modify': '変更する',
+ 'app.settings.security.set': 'セットする',
+ 'app.settings.security.bind': 'バインド',
+ 'app.settings.binding.taobao': 'タオバオをバインドする',
+ 'app.settings.binding.taobao-description': '現在バインドされていないタオバオアカウント',
+ 'app.settings.binding.alipay': 'アリペイをバインドする',
+ 'app.settings.binding.alipay-description': '現在バインドされていないアリペイアカウント',
+ 'app.settings.binding.dingding': 'ディントークをバインドする',
+ 'app.settings.binding.dingding-description': '現在バインドされていないディントークアカウント',
+ 'app.settings.binding.bind': 'バインド',
+ 'app.settings.notification.password': 'アカウントパスワード',
+ 'app.settings.notification.password-description':
+ '他のユーザーからのメッセージは、ステーションレターの形式で通知されます',
+ 'app.settings.notification.messages': 'システムメッセージ',
+ 'app.settings.notification.messages-description':
+ 'システムメッセージは、ステーションレターの形式で通知されます',
+ 'app.settings.notification.todo': 'To Do(用事) 通知',
+ 'app.settings.notification.todo-description': 'To Doタスクは、内部レターの形式で通知されます',
+ 'app.settings.open': '開く',
+ 'app.settings.close': '閉じる',
+};
diff --git a/src/locales/pt-BR.ts b/src/locales/pt-BR.ts
new file mode 100644
index 0000000..d501a8a
--- /dev/null
+++ b/src/locales/pt-BR.ts
@@ -0,0 +1,22 @@
+import component from './pt-BR/component';
+import globalHeader from './pt-BR/globalHeader';
+import menu from './pt-BR/menu';
+import pages from './pt-BR/pages';
+import pwa from './pt-BR/pwa';
+import settingDrawer from './pt-BR/settingDrawer';
+import settings from './pt-BR/settings';
+
+export default {
+ 'navBar.lang': 'Idiomas',
+ 'layout.user.link.help': 'ajuda',
+ 'layout.user.link.privacy': 'política de privacidade',
+ 'layout.user.link.terms': 'termos de serviços',
+ 'app.preview.down.block': 'Download this page to your local project',
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+ ...pages,
+};
diff --git a/src/locales/pt-BR/component.ts b/src/locales/pt-BR/component.ts
new file mode 100644
index 0000000..7cf9999
--- /dev/null
+++ b/src/locales/pt-BR/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': 'Expandir',
+ 'component.tagSelect.collapse': 'Diminuir',
+ 'component.tagSelect.all': 'Todas',
+};
diff --git a/src/locales/pt-BR/globalHeader.ts b/src/locales/pt-BR/globalHeader.ts
new file mode 100644
index 0000000..d232ca7
--- /dev/null
+++ b/src/locales/pt-BR/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': 'Busca',
+ 'component.globalHeader.search.example1': 'Exemplo de busca 1',
+ 'component.globalHeader.search.example2': 'Exemplo de busca 2',
+ 'component.globalHeader.search.example3': 'Exemplo de busca 3',
+ 'component.globalHeader.help': 'Ajuda',
+ 'component.globalHeader.notification': 'Notificação',
+ 'component.globalHeader.notification.empty': 'Você visualizou todas as notificações.',
+ 'component.globalHeader.message': 'Mensagem',
+ 'component.globalHeader.message.empty': 'Você visualizou todas as mensagens.',
+ 'component.globalHeader.event': 'Evento',
+ 'component.globalHeader.event.empty': 'Você visualizou todos os eventos.',
+ 'component.noticeIcon.clear': 'Limpar',
+ 'component.noticeIcon.cleared': 'Limpo',
+ 'component.noticeIcon.empty': 'Sem notificações',
+ 'component.noticeIcon.view-more': 'Veja mais',
+};
diff --git a/src/locales/pt-BR/menu.ts b/src/locales/pt-BR/menu.ts
new file mode 100644
index 0000000..aded8ff
--- /dev/null
+++ b/src/locales/pt-BR/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': 'Welcome',
+ 'menu.more-blocks': 'More Blocks',
+ 'menu.home': 'Início',
+ 'menu.admin': 'Admin',
+ 'menu.admin.sub-page': 'Sub-Page',
+ 'menu.login': 'Login',
+ 'menu.register': 'Registro',
+ 'menu.register-result': 'Resultado de registro',
+ 'menu.dashboard': 'Dashboard',
+ 'menu.dashboard.analysis': 'Análise',
+ 'menu.dashboard.monitor': 'Monitor',
+ 'menu.dashboard.workplace': 'Ambiente de Trabalho',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': 'Formulário',
+ 'menu.form.basic-form': 'Formulário Básico',
+ 'menu.form.step-form': 'Formulário Assistido',
+ 'menu.form.step-form.info': 'Formulário Assistido(gravar informações de transferência)',
+ 'menu.form.step-form.confirm': 'Formulário Assistido(confirmar informações de transferência)',
+ 'menu.form.step-form.result': 'Formulário Assistido(finalizado)',
+ 'menu.form.advanced-form': 'Formulário Avançado',
+ 'menu.list': 'Lista',
+ 'menu.list.table-list': 'Tabela de Busca',
+ 'menu.list.basic-list': 'Lista Básica',
+ 'menu.list.card-list': 'Lista de Card',
+ 'menu.list.search-list': 'Lista de Busca',
+ 'menu.list.search-list.articles': 'Lista de Busca(artigos)',
+ 'menu.list.search-list.projects': 'Lista de Busca(projetos)',
+ 'menu.list.search-list.applications': 'Lista de Busca(aplicações)',
+ 'menu.profile': 'Perfil',
+ 'menu.profile.basic': 'Perfil Básico',
+ 'menu.profile.advanced': 'Perfil Avançado',
+ 'menu.result': 'Resultado',
+ 'menu.result.success': 'Sucesso',
+ 'menu.result.fail': 'Falha',
+ 'menu.exception': 'Exceção',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': 'Disparar',
+ 'menu.account': 'Conta',
+ 'menu.account.center': 'Central da Conta',
+ 'menu.account.settings': 'Configurar Conta',
+ 'menu.account.trigger': 'Disparar Erro',
+ 'menu.account.logout': 'Sair',
+ 'menu.editor': 'Graphic Editor',
+ 'menu.editor.flow': 'Flow Editor',
+ 'menu.editor.mind': 'Mind Editor',
+ 'menu.editor.koni': 'Koni Editor',
+};
diff --git a/src/locales/pt-BR/pages.ts b/src/locales/pt-BR/pages.ts
new file mode 100644
index 0000000..6a96e9b
--- /dev/null
+++ b/src/locales/pt-BR/pages.ts
@@ -0,0 +1,72 @@
+export default {
+ 'pages.layouts.userLayout.title':
+ 'Ant Design é a especificação de web design mais influente no distrito de Xihu',
+ 'pages.login.accountLogin.tab': 'Login da conta',
+ 'pages.login.accountLogin.errorMessage': 'usuário/senha incorreto(admin/ant.design)',
+ 'pages.login.failure': 'Login falhou, por favor tente novamente!',
+ 'pages.login.success': 'Login efetuado com sucesso!',
+ 'pages.login.username.placeholder': 'Usuário: admin or user',
+ 'pages.login.username.required': 'Por favor insira seu usuário!',
+ 'pages.login.password.placeholder': 'Senha: ant.design',
+ 'pages.login.password.required': 'Por favor insira sua senha!',
+ 'pages.login.phoneLogin.tab': 'Login com Telefone',
+ 'pages.login.phoneLogin.errorMessage': 'Erro de Código de Verificação',
+ 'pages.login.phoneNumber.placeholder': 'Telefone',
+ 'pages.login.phoneNumber.required': 'Por favor entre com seu telefone!',
+ 'pages.login.phoneNumber.invalid': 'Telefone é inválido!',
+ 'pages.login.captcha.placeholder': 'Código de Verificação',
+ 'pages.login.captcha.required': 'Por favor entre com o código de verificação!',
+ 'pages.login.phoneLogin.getVerificationCode': 'Obter Código',
+ 'pages.getCaptchaSecondText': 'seg(s)',
+ 'pages.login.rememberMe': 'Lembre-me',
+ 'pages.login.forgotPassword': 'Perdeu a Senha ?',
+ 'pages.login.submit': 'Enviar',
+ 'pages.login.loginWith': 'Login com :',
+ 'pages.login.registerAccount': 'Registra Conta',
+ 'pages.welcome.link': 'Bem-vindo',
+ 'pages.welcome.alertMessage': 'Componentes pesados mais rápidos e mais fortes foram lançados.',
+ 'pages.404.subTitle': 'Desculpe, a página que você visitou não existe. ',
+ 'pages.404.buttonText': 'Voltar à página inicial',
+ 'pages.admin.subPage.title': 'Esta página só pode ser vista pelo Admin',
+ 'pages.admin.subPage.alertMessage':
+ 'O Umi ui foi lançado, bem-vindo ao usar o npm run ui para iniciar a experiência.',
+ 'pages.searchTable.createForm.newRule': 'Neva Regra',
+ 'pages.searchTable.updateForm.ruleConfig': 'Configuração de Regra',
+ 'pages.searchTable.updateForm.basicConfig': 'Informação básica',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': 'Nome da Regra',
+ 'pages.searchTable.updateForm.ruleName.nameRules': 'Por favor entre com o nome da regra!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Descrição da Regra',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder':
+ 'Por favor insira ao menos cinco caracteres',
+ 'pages.searchTable.updateForm.ruleDesc.descRules':
+ 'Insira uma descrição de regra de pelo menos cinco caracteres!',
+ 'pages.searchTable.updateForm.ruleProps.title': 'Configurar Propriedades',
+ 'pages.searchTable.updateForm.object': 'Objeto de Monitoramento',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Modelo de Regra',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Tipo de Regra',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': 'Definir Período de Agendamento',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Hora de Início',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules':
+ 'Por favor selecione um horáriod e início!',
+ 'pages.searchTable.titleDesc': 'Descrição',
+ 'pages.searchTable.ruleName': 'O nome da regra é obrigatório',
+ 'pages.searchTable.titleCallNo': 'Número de chamadas de serviço',
+ 'pages.searchTable.titleStatus': 'Status',
+ 'pages.searchTable.nameStatus.default': 'padrão',
+ 'pages.searchTable.nameStatus.running': 'executando',
+ 'pages.searchTable.nameStatus.online': 'online',
+ 'pages.searchTable.nameStatus.abnormal': 'anormal',
+ 'pages.searchTable.titleUpdatedAt': 'Última programação em',
+ 'pages.searchTable.exception': 'Por favor, indique o motivo da exceção!',
+ 'pages.searchTable.titleOption': 'Opção',
+ 'pages.searchTable.config': 'Configuração',
+ 'pages.searchTable.subscribeAlert': 'Inscreva-se para receber alertas',
+ 'pages.searchTable.title': 'Formulário de Consulta',
+ 'pages.searchTable.new': 'Novo',
+ 'pages.searchTable.chosen': 'selecionado',
+ 'pages.searchTable.item': 'item',
+ 'pages.searchTable.totalServiceCalls': 'Número total de chamadas de serviço',
+ 'pages.searchTable.tenThousand': '0000',
+ 'pages.searchTable.batchDeletion': 'deleção em lote',
+ 'pages.searchTable.batchApproval': 'aprovação em lote',
+};
diff --git a/src/locales/pt-BR/pwa.ts b/src/locales/pt-BR/pwa.ts
new file mode 100644
index 0000000..05cc797
--- /dev/null
+++ b/src/locales/pt-BR/pwa.ts
@@ -0,0 +1,7 @@
+export default {
+ 'app.pwa.offline': 'Você está offline agora',
+ 'app.pwa.serviceworker.updated': 'Novo conteúdo está disponível',
+ 'app.pwa.serviceworker.updated.hint':
+ 'Por favor, pressione o botão "Atualizar" para recarregar a página atual',
+ 'app.pwa.serviceworker.updated.ok': 'Atualizar',
+};
diff --git a/src/locales/pt-BR/settingDrawer.ts b/src/locales/pt-BR/settingDrawer.ts
new file mode 100644
index 0000000..3e155fc
--- /dev/null
+++ b/src/locales/pt-BR/settingDrawer.ts
@@ -0,0 +1,32 @@
+export default {
+ 'app.setting.pagestyle': 'Configuração de estilo da página',
+ 'app.setting.pagestyle.dark': 'Dark style',
+ 'app.setting.pagestyle.light': 'Light style',
+ 'app.setting.content-width': 'Largura do conteúdo',
+ 'app.setting.content-width.fixed': 'Fixo',
+ 'app.setting.content-width.fluid': 'Fluido',
+ 'app.setting.themecolor': 'Cor do Tema',
+ 'app.setting.themecolor.dust': 'Dust Red',
+ 'app.setting.themecolor.volcano': 'Volcano',
+ 'app.setting.themecolor.sunset': 'Sunset Orange',
+ 'app.setting.themecolor.cyan': 'Cyan',
+ 'app.setting.themecolor.green': 'Polar Green',
+ 'app.setting.themecolor.daybreak': 'Daybreak Blue (default)',
+ 'app.setting.themecolor.geekblue': 'Geek Glue',
+ 'app.setting.themecolor.purple': 'Golden Purple',
+ 'app.setting.navigationmode': 'Modo de Navegação',
+ 'app.setting.sidemenu': 'Layout do Menu Lateral',
+ 'app.setting.topmenu': 'Layout do Menu Superior',
+ 'app.setting.fixedheader': 'Cabeçalho fixo',
+ 'app.setting.fixedsidebar': 'Barra lateral fixa',
+ 'app.setting.fixedsidebar.hint': 'Funciona no layout do menu lateral',
+ 'app.setting.hideheader': 'Esconder o cabeçalho quando rolar',
+ 'app.setting.hideheader.hint': 'Funciona quando o esconder cabeçalho está abilitado',
+ 'app.setting.othersettings': 'Outras configurações',
+ 'app.setting.weakmode': 'Weak Mode',
+ 'app.setting.copy': 'Copiar Configuração',
+ 'app.setting.copyinfo':
+ 'copiado com sucesso, por favor trocar o defaultSettings em src/models/setting.js',
+ 'app.setting.production.hint':
+ 'O painel de configuração apenas é exibido no ambiente de desenvolvimento, por favor modifique manualmente o',
+};
diff --git a/src/locales/pt-BR/settings.ts b/src/locales/pt-BR/settings.ts
new file mode 100644
index 0000000..aad2e38
--- /dev/null
+++ b/src/locales/pt-BR/settings.ts
@@ -0,0 +1,60 @@
+export default {
+ 'app.settings.menuMap.basic': 'Configurações Básicas',
+ 'app.settings.menuMap.security': 'Configurações de Segurança',
+ 'app.settings.menuMap.binding': 'Vinculação de Conta',
+ 'app.settings.menuMap.notification': 'Mensagens de Notificação',
+ 'app.settings.basic.avatar': 'Avatar',
+ 'app.settings.basic.change-avatar': 'Alterar avatar',
+ 'app.settings.basic.email': 'Email',
+ 'app.settings.basic.email-message': 'Por favor insira seu email!',
+ 'app.settings.basic.nickname': 'Nome de usuário',
+ 'app.settings.basic.nickname-message': 'Por favor insira seu nome de usuário!',
+ 'app.settings.basic.profile': 'Perfil pessoal',
+ 'app.settings.basic.profile-message': 'Por favor insira seu perfil pessoal!',
+ 'app.settings.basic.profile-placeholder': 'Breve introdução sua',
+ 'app.settings.basic.country': 'País/Região',
+ 'app.settings.basic.country-message': 'Por favor insira país!',
+ 'app.settings.basic.geographic': 'Província, estado ou cidade',
+ 'app.settings.basic.geographic-message': 'Por favor insira suas informações geográficas!',
+ 'app.settings.basic.address': 'Endereço',
+ 'app.settings.basic.address-message': 'Por favor insira seu endereço!',
+ 'app.settings.basic.phone': 'Número de telefone',
+ 'app.settings.basic.phone-message': 'Por favor insira seu número de telefone!',
+ 'app.settings.basic.update': 'Atualizar Informações',
+ 'app.settings.security.strong': 'Forte',
+ 'app.settings.security.medium': 'Média',
+ 'app.settings.security.weak': 'Fraca',
+ 'app.settings.security.password': 'Senha da Conta',
+ 'app.settings.security.password-description': 'Força da senha',
+ 'app.settings.security.phone': 'Telefone de Seguraça',
+ 'app.settings.security.phone-description': 'Telefone vinculado',
+ 'app.settings.security.question': 'Pergunta de Segurança',
+ 'app.settings.security.question-description':
+ 'A pergunta de segurança não está definida e a política de segurança pode proteger efetivamente a segurança da conta',
+ 'app.settings.security.email': 'Email de Backup',
+ 'app.settings.security.email-description': 'Email vinculado',
+ 'app.settings.security.mfa': 'Dispositivo MFA',
+ 'app.settings.security.mfa-description':
+ 'O dispositivo MFA não vinculado, após a vinculação, pode ser confirmado duas vezes',
+ 'app.settings.security.modify': 'Modificar',
+ 'app.settings.security.set': 'Atribuir',
+ 'app.settings.security.bind': 'Vincular',
+ 'app.settings.binding.taobao': 'Vincular Taobao',
+ 'app.settings.binding.taobao-description': 'Atualmente não vinculado à conta Taobao',
+ 'app.settings.binding.alipay': 'Vincular Alipay',
+ 'app.settings.binding.alipay-description': 'Atualmente não vinculado à conta Alipay',
+ 'app.settings.binding.dingding': 'Vincular DingTalk',
+ 'app.settings.binding.dingding-description': 'Atualmente não vinculado à conta DingTalk',
+ 'app.settings.binding.bind': 'Vincular',
+ 'app.settings.notification.password': 'Senha da Conta',
+ 'app.settings.notification.password-description':
+ 'Mensagens de outros usuários serão notificadas na forma de uma estação de letra',
+ 'app.settings.notification.messages': 'Mensagens de Sistema',
+ 'app.settings.notification.messages-description':
+ 'Mensagens de sistema serão notificadas na forma de uma estação de letra',
+ 'app.settings.notification.todo': 'Notificação de To-do',
+ 'app.settings.notification.todo-description':
+ 'A lista de to-do será notificada na forma de uma estação de letra',
+ 'app.settings.open': 'Aberto',
+ 'app.settings.close': 'Fechado',
+};
diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts
new file mode 100644
index 0000000..28c5d41
--- /dev/null
+++ b/src/locales/zh-CN.ts
@@ -0,0 +1,24 @@
+import component from './zh-CN/component';
+import globalHeader from './zh-CN/globalHeader';
+import menu from './zh-CN/menu';
+import pages from './zh-CN/pages';
+import pwa from './zh-CN/pwa';
+import settingDrawer from './zh-CN/settingDrawer';
+import settings from './zh-CN/settings';
+
+export default {
+ 'navBar.lang': '语言',
+ 'layout.user.link.help': '帮助',
+ 'layout.user.link.privacy': '隐私',
+ 'layout.user.link.terms': '条款',
+ 'app.preview.down.block': '下载此页面到本地项目',
+ 'app.welcome.link.fetch-blocks': '获取全部区块',
+ 'app.welcome.link.block-list': '基于 block 开发,快速构建标准页面',
+ ...pages,
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+};
diff --git a/src/locales/zh-CN/component.ts b/src/locales/zh-CN/component.ts
new file mode 100644
index 0000000..1f1fead
--- /dev/null
+++ b/src/locales/zh-CN/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': '展开',
+ 'component.tagSelect.collapse': '收起',
+ 'component.tagSelect.all': '全部',
+};
diff --git a/src/locales/zh-CN/globalHeader.ts b/src/locales/zh-CN/globalHeader.ts
new file mode 100644
index 0000000..9fd66a5
--- /dev/null
+++ b/src/locales/zh-CN/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': '站内搜索',
+ 'component.globalHeader.search.example1': '搜索提示一',
+ 'component.globalHeader.search.example2': '搜索提示二',
+ 'component.globalHeader.search.example3': '搜索提示三',
+ 'component.globalHeader.help': '使用文档',
+ 'component.globalHeader.notification': '通知',
+ 'component.globalHeader.notification.empty': '你已查看所有通知',
+ 'component.globalHeader.message': '消息',
+ 'component.globalHeader.message.empty': '您已读完所有消息',
+ 'component.globalHeader.event': '待办',
+ 'component.globalHeader.event.empty': '你已完成所有待办',
+ 'component.noticeIcon.clear': '清空',
+ 'component.noticeIcon.cleared': '清空了',
+ 'component.noticeIcon.empty': '暂无数据',
+ 'component.noticeIcon.view-more': '查看更多',
+};
diff --git a/src/locales/zh-CN/menu.ts b/src/locales/zh-CN/menu.ts
new file mode 100644
index 0000000..fecb70a
--- /dev/null
+++ b/src/locales/zh-CN/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': '欢迎',
+ 'menu.more-blocks': '更多区块',
+ 'menu.home': '首页',
+ 'menu.admin': '管理页',
+ 'menu.admin.sub-page': '二级管理页',
+ 'menu.login': '登录',
+ 'menu.register': '注册',
+ 'menu.register-result': '注册结果',
+ 'menu.dashboard': 'Dashboard',
+ 'menu.dashboard.analysis': '分析页',
+ 'menu.dashboard.monitor': '监控页',
+ 'menu.dashboard.workplace': '工作台',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': '表单页',
+ 'menu.form.basic-form': '基础表单',
+ 'menu.form.step-form': '分步表单',
+ 'menu.form.step-form.info': '分步表单(填写转账信息)',
+ 'menu.form.step-form.confirm': '分步表单(确认转账信息)',
+ 'menu.form.step-form.result': '分步表单(完成)',
+ 'menu.form.advanced-form': '高级表单',
+ 'menu.list': '列表页',
+ 'menu.list.table-list': '查询表格',
+ 'menu.list.basic-list': '标准列表',
+ 'menu.list.card-list': '卡片列表',
+ 'menu.list.search-list': '搜索列表',
+ 'menu.list.search-list.articles': '搜索列表(文章)',
+ 'menu.list.search-list.projects': '搜索列表(项目)',
+ 'menu.list.search-list.applications': '搜索列表(应用)',
+ 'menu.profile': '详情页',
+ 'menu.profile.basic': '基础详情页',
+ 'menu.profile.advanced': '高级详情页',
+ 'menu.result': '结果页',
+ 'menu.result.success': '成功页',
+ 'menu.result.fail': '失败页',
+ 'menu.exception': '异常页',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': '触发错误',
+ 'menu.account': '个人页',
+ 'menu.account.center': '个人中心',
+ 'menu.account.settings': '个人设置',
+ 'menu.account.trigger': '触发报错',
+ 'menu.account.logout': '退出登录',
+ 'menu.editor': '图形编辑器',
+ 'menu.editor.flow': '流程编辑器',
+ 'menu.editor.mind': '脑图编辑器',
+ 'menu.editor.koni': '拓扑编辑器',
+};
diff --git a/src/locales/zh-CN/pages.ts b/src/locales/zh-CN/pages.ts
new file mode 100644
index 0000000..a266bc6
--- /dev/null
+++ b/src/locales/zh-CN/pages.ts
@@ -0,0 +1,67 @@
+export default {
+ 'pages.layouts.userLayout.title': 'Ant Design 是西湖区最具影响力的 Web 设计规范',
+ 'pages.login.accountLogin.tab': '账户密码登录',
+ 'pages.login.accountLogin.errorMessage': '错误的用户名和密码(admin/ant.design)',
+ 'pages.login.failure': '登录失败,请重试!',
+ 'pages.login.success': '登录成功!',
+ 'pages.login.username.placeholder': '用户名: admin or user',
+ 'pages.login.username.required': '用户名是必填项!',
+ 'pages.login.password.placeholder': '密码: ant.design',
+ 'pages.login.password.required': '密码是必填项!',
+ 'pages.login.phoneLogin.tab': '手机号登录',
+ 'pages.login.phoneLogin.errorMessage': '验证码错误',
+ 'pages.login.phoneNumber.placeholder': '请输入手机号!',
+ 'pages.login.phoneNumber.required': '手机号是必填项!',
+ 'pages.login.phoneNumber.invalid': '不合法的手机号!',
+ 'pages.login.captcha.placeholder': '请输入验证码!',
+ 'pages.login.captcha.required': '验证码是必填项!',
+ 'pages.login.phoneLogin.getVerificationCode': '获取验证码',
+ 'pages.getCaptchaSecondText': '秒后重新获取',
+ 'pages.login.rememberMe': '自动登录',
+ 'pages.login.forgotPassword': '忘记密码 ?',
+ 'pages.login.submit': '登录',
+ 'pages.login.loginWith': '其他登录方式 :',
+ 'pages.login.registerAccount': '注册账户',
+ 'pages.welcome.link': '欢迎使用',
+ 'pages.welcome.alertMessage': '更快更强的重型组件,已经发布。',
+ 'pages.404.subTitle': '抱歉,您访问的页面不存在。',
+ 'pages.404.buttonText': '返回首页',
+ 'pages.admin.subPage.title': ' 这个页面只有 admin 权限才能查看',
+ 'pages.admin.subPage.alertMessage': 'umi ui 现已发布,欢迎使用 npm run ui 启动体验。',
+ 'pages.searchTable.createForm.newRule': '新建规则',
+ 'pages.searchTable.updateForm.ruleConfig': '规则配置',
+ 'pages.searchTable.updateForm.basicConfig': '基本信息',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': '规则名称',
+ 'pages.searchTable.updateForm.ruleName.nameRules': '请输入规则名称!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': '规则描述',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '请输入至少五个字符',
+ 'pages.searchTable.updateForm.ruleDesc.descRules': '请输入至少五个字符的规则描述!',
+ 'pages.searchTable.updateForm.ruleProps.title': '配置规则属性',
+ 'pages.searchTable.updateForm.object': '监控对象',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': '规则模板',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': '规则类型',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': '设定调度周期',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '开始时间',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '请选择开始时间!',
+ 'pages.searchTable.titleDesc': '描述',
+ 'pages.searchTable.ruleName': '规则名称为必填项',
+ 'pages.searchTable.titleCallNo': '服务调用次数',
+ 'pages.searchTable.titleStatus': '状态',
+ 'pages.searchTable.nameStatus.default': '关闭',
+ 'pages.searchTable.nameStatus.running': '运行中',
+ 'pages.searchTable.nameStatus.online': '已上线',
+ 'pages.searchTable.nameStatus.abnormal': '异常',
+ 'pages.searchTable.titleUpdatedAt': '上次调度时间',
+ 'pages.searchTable.exception': '请输入异常原因!',
+ 'pages.searchTable.titleOption': '操作',
+ 'pages.searchTable.config': '配置',
+ 'pages.searchTable.subscribeAlert': '订阅警报',
+ 'pages.searchTable.title': '查询表格',
+ 'pages.searchTable.new': '新建',
+ 'pages.searchTable.chosen': '已选择',
+ 'pages.searchTable.item': '项',
+ 'pages.searchTable.totalServiceCalls': '服务调用次数总计',
+ 'pages.searchTable.tenThousand': '万',
+ 'pages.searchTable.batchDeletion': '批量删除',
+ 'pages.searchTable.batchApproval': '批量审批',
+};
diff --git a/src/locales/zh-CN/pwa.ts b/src/locales/zh-CN/pwa.ts
new file mode 100644
index 0000000..e950484
--- /dev/null
+++ b/src/locales/zh-CN/pwa.ts
@@ -0,0 +1,6 @@
+export default {
+ 'app.pwa.offline': '当前处于离线状态',
+ 'app.pwa.serviceworker.updated': '有新内容',
+ 'app.pwa.serviceworker.updated.hint': '请点击“刷新”按钮或者手动刷新页面',
+ 'app.pwa.serviceworker.updated.ok': '刷新',
+};
diff --git a/src/locales/zh-CN/settingDrawer.ts b/src/locales/zh-CN/settingDrawer.ts
new file mode 100644
index 0000000..3f44958
--- /dev/null
+++ b/src/locales/zh-CN/settingDrawer.ts
@@ -0,0 +1,31 @@
+export default {
+ 'app.setting.pagestyle': '整体风格设置',
+ 'app.setting.pagestyle.dark': '暗色菜单风格',
+ 'app.setting.pagestyle.light': '亮色菜单风格',
+ 'app.setting.content-width': '内容区域宽度',
+ 'app.setting.content-width.fixed': '定宽',
+ 'app.setting.content-width.fluid': '流式',
+ 'app.setting.themecolor': '主题色',
+ 'app.setting.themecolor.dust': '薄暮',
+ 'app.setting.themecolor.volcano': '火山',
+ 'app.setting.themecolor.sunset': '日暮',
+ 'app.setting.themecolor.cyan': '明青',
+ 'app.setting.themecolor.green': '极光绿',
+ 'app.setting.themecolor.daybreak': '拂晓蓝(默认)',
+ 'app.setting.themecolor.geekblue': '极客蓝',
+ 'app.setting.themecolor.purple': '酱紫',
+ 'app.setting.navigationmode': '导航模式',
+ 'app.setting.sidemenu': '侧边菜单布局',
+ 'app.setting.topmenu': '顶部菜单布局',
+ 'app.setting.fixedheader': '固定 Header',
+ 'app.setting.fixedsidebar': '固定侧边菜单',
+ 'app.setting.fixedsidebar.hint': '侧边菜单布局时可配置',
+ 'app.setting.hideheader': '下滑时隐藏 Header',
+ 'app.setting.hideheader.hint': '固定 Header 时可配置',
+ 'app.setting.othersettings': '其他设置',
+ 'app.setting.weakmode': '色弱模式',
+ 'app.setting.copy': '拷贝设置',
+ 'app.setting.copyinfo': '拷贝成功,请到 config/defaultSettings.js 中替换默认配置',
+ 'app.setting.production.hint':
+ '配置栏只在开发环境用于预览,生产环境不会展现,请拷贝后手动修改配置文件',
+};
diff --git a/src/locales/zh-CN/settings.ts b/src/locales/zh-CN/settings.ts
new file mode 100644
index 0000000..df8af43
--- /dev/null
+++ b/src/locales/zh-CN/settings.ts
@@ -0,0 +1,55 @@
+export default {
+ 'app.settings.menuMap.basic': '基本设置',
+ 'app.settings.menuMap.security': '安全设置',
+ 'app.settings.menuMap.binding': '账号绑定',
+ 'app.settings.menuMap.notification': '新消息通知',
+ 'app.settings.basic.avatar': '头像',
+ 'app.settings.basic.change-avatar': '更换头像',
+ 'app.settings.basic.email': '邮箱',
+ 'app.settings.basic.email-message': '请输入您的邮箱!',
+ 'app.settings.basic.nickname': '昵称',
+ 'app.settings.basic.nickname-message': '请输入您的昵称!',
+ 'app.settings.basic.profile': '个人简介',
+ 'app.settings.basic.profile-message': '请输入个人简介!',
+ 'app.settings.basic.profile-placeholder': '个人简介',
+ 'app.settings.basic.country': '国家/地区',
+ 'app.settings.basic.country-message': '请输入您的国家或地区!',
+ 'app.settings.basic.geographic': '所在省市',
+ 'app.settings.basic.geographic-message': '请输入您的所在省市!',
+ 'app.settings.basic.address': '街道地址',
+ 'app.settings.basic.address-message': '请输入您的街道地址!',
+ 'app.settings.basic.phone': '联系电话',
+ 'app.settings.basic.phone-message': '请输入您的联系电话!',
+ 'app.settings.basic.update': '更新基本信息',
+ 'app.settings.security.strong': '强',
+ 'app.settings.security.medium': '中',
+ 'app.settings.security.weak': '弱',
+ 'app.settings.security.password': '账户密码',
+ 'app.settings.security.password-description': '当前密码强度',
+ 'app.settings.security.phone': '密保手机',
+ 'app.settings.security.phone-description': '已绑定手机',
+ 'app.settings.security.question': '密保问题',
+ 'app.settings.security.question-description': '未设置密保问题,密保问题可有效保护账户安全',
+ 'app.settings.security.email': '备用邮箱',
+ 'app.settings.security.email-description': '已绑定邮箱',
+ 'app.settings.security.mfa': 'MFA 设备',
+ 'app.settings.security.mfa-description': '未绑定 MFA 设备,绑定后,可以进行二次确认',
+ 'app.settings.security.modify': '修改',
+ 'app.settings.security.set': '设置',
+ 'app.settings.security.bind': '绑定',
+ 'app.settings.binding.taobao': '绑定淘宝',
+ 'app.settings.binding.taobao-description': '当前未绑定淘宝账号',
+ 'app.settings.binding.alipay': '绑定支付宝',
+ 'app.settings.binding.alipay-description': '当前未绑定支付宝账号',
+ 'app.settings.binding.dingding': '绑定钉钉',
+ 'app.settings.binding.dingding-description': '当前未绑定钉钉账号',
+ 'app.settings.binding.bind': '绑定',
+ 'app.settings.notification.password': '账户密码',
+ 'app.settings.notification.password-description': '其他用户的消息将以站内信的形式通知',
+ 'app.settings.notification.messages': '系统消息',
+ 'app.settings.notification.messages-description': '系统消息将以站内信的形式通知',
+ 'app.settings.notification.todo': '待办任务',
+ 'app.settings.notification.todo-description': '待办任务将以站内信的形式通知',
+ 'app.settings.open': '开',
+ 'app.settings.close': '关',
+};
diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts
new file mode 100644
index 0000000..95a685a
--- /dev/null
+++ b/src/locales/zh-TW.ts
@@ -0,0 +1,22 @@
+import component from './zh-TW/component';
+import globalHeader from './zh-TW/globalHeader';
+import menu from './zh-TW/menu';
+import pages from './zh-TW/pages';
+import pwa from './zh-TW/pwa';
+import settingDrawer from './zh-TW/settingDrawer';
+import settings from './zh-TW/settings';
+
+export default {
+ 'navBar.lang': '語言',
+ 'layout.user.link.help': '幫助',
+ 'layout.user.link.privacy': '隱私',
+ 'layout.user.link.terms': '條款',
+ 'app.preview.down.block': '下載此頁面到本地項目',
+ ...pages,
+ ...globalHeader,
+ ...menu,
+ ...settingDrawer,
+ ...settings,
+ ...pwa,
+ ...component,
+};
diff --git a/src/locales/zh-TW/component.ts b/src/locales/zh-TW/component.ts
new file mode 100644
index 0000000..ba48e29
--- /dev/null
+++ b/src/locales/zh-TW/component.ts
@@ -0,0 +1,5 @@
+export default {
+ 'component.tagSelect.expand': '展開',
+ 'component.tagSelect.collapse': '收起',
+ 'component.tagSelect.all': '全部',
+};
diff --git a/src/locales/zh-TW/globalHeader.ts b/src/locales/zh-TW/globalHeader.ts
new file mode 100644
index 0000000..ed58451
--- /dev/null
+++ b/src/locales/zh-TW/globalHeader.ts
@@ -0,0 +1,17 @@
+export default {
+ 'component.globalHeader.search': '站內搜索',
+ 'component.globalHeader.search.example1': '搜索提示壹',
+ 'component.globalHeader.search.example2': '搜索提示二',
+ 'component.globalHeader.search.example3': '搜索提示三',
+ 'component.globalHeader.help': '使用手冊',
+ 'component.globalHeader.notification': '通知',
+ 'component.globalHeader.notification.empty': '妳已查看所有通知',
+ 'component.globalHeader.message': '消息',
+ 'component.globalHeader.message.empty': '您已讀完所有消息',
+ 'component.globalHeader.event': '待辦',
+ 'component.globalHeader.event.empty': '妳已完成所有待辦',
+ 'component.noticeIcon.clear': '清空',
+ 'component.noticeIcon.cleared': '清空了',
+ 'component.noticeIcon.empty': '暫無資料',
+ 'component.noticeIcon.view-more': '查看更多',
+};
diff --git a/src/locales/zh-TW/menu.ts b/src/locales/zh-TW/menu.ts
new file mode 100644
index 0000000..0ef54c9
--- /dev/null
+++ b/src/locales/zh-TW/menu.ts
@@ -0,0 +1,52 @@
+export default {
+ 'menu.welcome': '歡迎',
+ 'menu.more-blocks': '更多區塊',
+ 'menu.home': '首頁',
+ 'menu.admin': '权限',
+ 'menu.admin.sub-page': '二级管理页',
+ 'menu.login': '登錄',
+ 'menu.register': '註冊',
+ 'menu.register-result': '註冊結果',
+ 'menu.dashboard': 'Dashboard',
+ 'menu.dashboard.analysis': '分析頁',
+ 'menu.dashboard.monitor': '監控頁',
+ 'menu.dashboard.workplace': '工作臺',
+ 'menu.exception.403': '403',
+ 'menu.exception.404': '404',
+ 'menu.exception.500': '500',
+ 'menu.form': '表單頁',
+ 'menu.form.basic-form': '基礎表單',
+ 'menu.form.step-form': '分步表單',
+ 'menu.form.step-form.info': '分步表單(填寫轉賬信息)',
+ 'menu.form.step-form.confirm': '分步表單(確認轉賬信息)',
+ 'menu.form.step-form.result': '分步表單(完成)',
+ 'menu.form.advanced-form': '高級表單',
+ 'menu.list': '列表頁',
+ 'menu.list.table-list': '查詢表格',
+ 'menu.list.basic-list': '標淮列表',
+ 'menu.list.card-list': '卡片列表',
+ 'menu.list.search-list': '搜索列表',
+ 'menu.list.search-list.articles': '搜索列表(文章)',
+ 'menu.list.search-list.projects': '搜索列表(項目)',
+ 'menu.list.search-list.applications': '搜索列表(應用)',
+ 'menu.profile': '詳情頁',
+ 'menu.profile.basic': '基礎詳情頁',
+ 'menu.profile.advanced': '高級詳情頁',
+ 'menu.result': '結果頁',
+ 'menu.result.success': '成功頁',
+ 'menu.result.fail': '失敗頁',
+ 'menu.exception': '异常页',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': '触发错误',
+ 'menu.account': '個人頁',
+ 'menu.account.center': '個人中心',
+ 'menu.account.settings': '個人設置',
+ 'menu.account.trigger': '觸發報錯',
+ 'menu.account.logout': '退出登錄',
+ 'menu.editor': '圖形編輯器',
+ 'menu.editor.flow': '流程編輯器',
+ 'menu.editor.mind': '腦圖編輯器',
+ 'menu.editor.koni': '拓撲編輯器',
+};
diff --git a/src/locales/zh-TW/pages.ts b/src/locales/zh-TW/pages.ts
new file mode 100644
index 0000000..37000c0
--- /dev/null
+++ b/src/locales/zh-TW/pages.ts
@@ -0,0 +1,67 @@
+export default {
+ 'pages.layouts.userLayout.title': 'Ant Design 是西湖區最具影響力的 Web 設計規範',
+ 'pages.login.accountLogin.tab': '賬戶密碼登錄',
+ 'pages.login.accountLogin.errorMessage': '錯誤的用戶名和密碼(admin/ant.design)',
+ 'pages.login.failure': '登錄失敗,請重試!',
+ 'pages.login.success': '登錄成功!',
+ 'pages.login.username.placeholder': '用戶名: admin or user',
+ 'pages.login.username.required': '用戶名是必填項!',
+ 'pages.login.password.placeholder': '密碼: ant.design',
+ 'pages.login.password.required': '密碼是必填項!',
+ 'pages.login.phoneLogin.tab': '手機號登錄',
+ 'pages.login.phoneLogin.errorMessage': '驗證碼錯誤',
+ 'pages.login.phoneNumber.placeholder': '請輸入手機號!',
+ 'pages.login.phoneNumber.required': '手機號是必填項!',
+ 'pages.login.phoneNumber.invalid': '不合法的手機號!',
+ 'pages.login.captcha.placeholder': '請輸入驗證碼!',
+ 'pages.login.captcha.required': '驗證碼是必填項!',
+ 'pages.login.phoneLogin.getVerificationCode': '獲取驗證碼',
+ 'pages.getCaptchaSecondText': '秒後重新獲取',
+ 'pages.login.rememberMe': '自動登錄',
+ 'pages.login.forgotPassword': '忘記密碼 ?',
+ 'pages.login.submit': '登錄',
+ 'pages.login.loginWith': '其他登錄方式 :',
+ 'pages.login.registerAccount': '註冊賬戶',
+ 'pages.welcome.link': '歡迎使用',
+ 'pages.welcome.alertMessage': '更快更強的重型組件,已經發布。',
+ 'pages.404.subTitle': '抱歉,您訪問的頁面不存在。',
+ 'pages.404.buttonText': '返回首頁',
+ 'pages.admin.subPage.title': '這個頁面只有 admin 權限才能查看',
+ 'pages.admin.subPage.alertMessage': 'umi ui 現已發佈,歡迎使用 npm run ui 啓動體驗。',
+ 'pages.searchTable.createForm.newRule': '新建規則',
+ 'pages.searchTable.updateForm.ruleConfig': '規則配置',
+ 'pages.searchTable.updateForm.basicConfig': '基本信息',
+ 'pages.searchTable.updateForm.ruleName.nameLabel': '規則名稱',
+ 'pages.searchTable.updateForm.ruleName.nameRules': '請輸入規則名稱!',
+ 'pages.searchTable.updateForm.ruleDesc.descLabel': '規則描述',
+ 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '請輸入至少五個字符',
+ 'pages.searchTable.updateForm.ruleDesc.descRules': '請輸入至少五個字符的規則描述!',
+ 'pages.searchTable.updateForm.ruleProps.title': '配置規則屬性',
+ 'pages.searchTable.updateForm.object': '監控對象',
+ 'pages.searchTable.updateForm.ruleProps.templateLabel': '規則模板',
+ 'pages.searchTable.updateForm.ruleProps.typeLabel': '規則類型',
+ 'pages.searchTable.updateForm.schedulingPeriod.title': '設定調度週期',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '開始時間',
+ 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '請選擇開始時間!',
+ 'pages.searchTable.titleDesc': '描述',
+ 'pages.searchTable.ruleName': '規則名稱爲必填項',
+ 'pages.searchTable.titleCallNo': '服務調用次數',
+ 'pages.searchTable.titleStatus': '狀態',
+ 'pages.searchTable.nameStatus.default': '關閉',
+ 'pages.searchTable.nameStatus.running': '運行中',
+ 'pages.searchTable.nameStatus.online': '已上線',
+ 'pages.searchTable.nameStatus.abnormal': '異常',
+ 'pages.searchTable.titleUpdatedAt': '上次調度時間',
+ 'pages.searchTable.exception': '請輸入異常原因!',
+ 'pages.searchTable.titleOption': '操作',
+ 'pages.searchTable.config': '配置',
+ 'pages.searchTable.subscribeAlert': '訂閱警報',
+ 'pages.searchTable.title': '查詢表格',
+ 'pages.searchTable.new': '新建',
+ 'pages.searchTable.chosen': '已選擇',
+ 'pages.searchTable.item': '項',
+ 'pages.searchTable.totalServiceCalls': '服務調用次數總計',
+ 'pages.searchTable.tenThousand': '萬',
+ 'pages.searchTable.batchDeletion': '批量刪除',
+ 'pages.searchTable.batchApproval': '批量審批',
+};
diff --git a/src/locales/zh-TW/pwa.ts b/src/locales/zh-TW/pwa.ts
new file mode 100644
index 0000000..108a6e4
--- /dev/null
+++ b/src/locales/zh-TW/pwa.ts
@@ -0,0 +1,6 @@
+export default {
+ 'app.pwa.offline': '當前處於離線狀態',
+ 'app.pwa.serviceworker.updated': '有新內容',
+ 'app.pwa.serviceworker.updated.hint': '請點擊“刷新”按鈕或者手動刷新頁面',
+ 'app.pwa.serviceworker.updated.ok': '刷新',
+};
diff --git a/src/locales/zh-TW/settingDrawer.ts b/src/locales/zh-TW/settingDrawer.ts
new file mode 100644
index 0000000..454da28
--- /dev/null
+++ b/src/locales/zh-TW/settingDrawer.ts
@@ -0,0 +1,31 @@
+export default {
+ 'app.setting.pagestyle': '整體風格設置',
+ 'app.setting.pagestyle.dark': '暗色菜單風格',
+ 'app.setting.pagestyle.light': '亮色菜單風格',
+ 'app.setting.content-width': '內容區域寬度',
+ 'app.setting.content-width.fixed': '定寬',
+ 'app.setting.content-width.fluid': '流式',
+ 'app.setting.themecolor': '主題色',
+ 'app.setting.themecolor.dust': '薄暮',
+ 'app.setting.themecolor.volcano': '火山',
+ 'app.setting.themecolor.sunset': '日暮',
+ 'app.setting.themecolor.cyan': '明青',
+ 'app.setting.themecolor.green': '極光綠',
+ 'app.setting.themecolor.daybreak': '拂曉藍(默認)',
+ 'app.setting.themecolor.geekblue': '極客藍',
+ 'app.setting.themecolor.purple': '醬紫',
+ 'app.setting.navigationmode': '導航模式',
+ 'app.setting.sidemenu': '側邊菜單布局',
+ 'app.setting.topmenu': '頂部菜單布局',
+ 'app.setting.fixedheader': '固定 Header',
+ 'app.setting.fixedsidebar': '固定側邊菜單',
+ 'app.setting.fixedsidebar.hint': '側邊菜單布局時可配置',
+ 'app.setting.hideheader': '下滑時隱藏 Header',
+ 'app.setting.hideheader.hint': '固定 Header 時可配置',
+ 'app.setting.othersettings': '其他設置',
+ 'app.setting.weakmode': '色弱模式',
+ 'app.setting.copy': '拷貝設置',
+ 'app.setting.copyinfo': '拷貝成功,請到 config/defaultSettings.js 中替換默認配置',
+ 'app.setting.production.hint':
+ '配置欄只在開發環境用於預覽,生產環境不會展現,請拷貝後手動修改配置文件',
+};
diff --git a/src/locales/zh-TW/settings.ts b/src/locales/zh-TW/settings.ts
new file mode 100644
index 0000000..dd45151
--- /dev/null
+++ b/src/locales/zh-TW/settings.ts
@@ -0,0 +1,55 @@
+export default {
+ 'app.settings.menuMap.basic': '基本設置',
+ 'app.settings.menuMap.security': '安全設置',
+ 'app.settings.menuMap.binding': '賬號綁定',
+ 'app.settings.menuMap.notification': '新消息通知',
+ 'app.settings.basic.avatar': '頭像',
+ 'app.settings.basic.change-avatar': '更換頭像',
+ 'app.settings.basic.email': '郵箱',
+ 'app.settings.basic.email-message': '請輸入您的郵箱!',
+ 'app.settings.basic.nickname': '昵稱',
+ 'app.settings.basic.nickname-message': '請輸入您的昵稱!',
+ 'app.settings.basic.profile': '個人簡介',
+ 'app.settings.basic.profile-message': '請輸入個人簡介!',
+ 'app.settings.basic.profile-placeholder': '個人簡介',
+ 'app.settings.basic.country': '國家/地區',
+ 'app.settings.basic.country-message': '請輸入您的國家或地區!',
+ 'app.settings.basic.geographic': '所在省市',
+ 'app.settings.basic.geographic-message': '請輸入您的所在省市!',
+ 'app.settings.basic.address': '街道地址',
+ 'app.settings.basic.address-message': '請輸入您的街道地址!',
+ 'app.settings.basic.phone': '聯系電話',
+ 'app.settings.basic.phone-message': '請輸入您的聯系電話!',
+ 'app.settings.basic.update': '更新基本信息',
+ 'app.settings.security.strong': '強',
+ 'app.settings.security.medium': '中',
+ 'app.settings.security.weak': '弱',
+ 'app.settings.security.password': '賬戶密碼',
+ 'app.settings.security.password-description': '當前密碼強度',
+ 'app.settings.security.phone': '密保手機',
+ 'app.settings.security.phone-description': '已綁定手機',
+ 'app.settings.security.question': '密保問題',
+ 'app.settings.security.question-description': '未設置密保問題,密保問題可有效保護賬戶安全',
+ 'app.settings.security.email': '備用郵箱',
+ 'app.settings.security.email-description': '已綁定郵箱',
+ 'app.settings.security.mfa': 'MFA 設備',
+ 'app.settings.security.mfa-description': '未綁定 MFA 設備,綁定後,可以進行二次確認',
+ 'app.settings.security.modify': '修改',
+ 'app.settings.security.set': '設置',
+ 'app.settings.security.bind': '綁定',
+ 'app.settings.binding.taobao': '綁定淘寶',
+ 'app.settings.binding.taobao-description': '當前未綁定淘寶賬號',
+ 'app.settings.binding.alipay': '綁定支付寶',
+ 'app.settings.binding.alipay-description': '當前未綁定支付寶賬號',
+ 'app.settings.binding.dingding': '綁定釘釘',
+ 'app.settings.binding.dingding-description': '當前未綁定釘釘賬號',
+ 'app.settings.binding.bind': '綁定',
+ 'app.settings.notification.password': '賬戶密碼',
+ 'app.settings.notification.password-description': '其他用戶的消息將以站內信的形式通知',
+ 'app.settings.notification.messages': '系統消息',
+ 'app.settings.notification.messages-description': '系統消息將以站內信的形式通知',
+ 'app.settings.notification.todo': '待辦任務',
+ 'app.settings.notification.todo-description': '待辦任務將以站內信的形式通知',
+ 'app.settings.open': '開',
+ 'app.settings.close': '關',
+};
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..839bc5b
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,22 @@
+{
+ "name": "Ant Design Pro",
+ "short_name": "Ant Design Pro",
+ "display": "standalone",
+ "start_url": "./?utm_source=homescreen",
+ "theme_color": "#002140",
+ "background_color": "#001529",
+ "icons": [
+ {
+ "src": "icons/icon-192x192.png",
+ "sizes": "192x192"
+ },
+ {
+ "src": "icons/icon-128x128.png",
+ "sizes": "128x128"
+ },
+ {
+ "src": "icons/icon-512x512.png",
+ "sizes": "512x512"
+ }
+ ]
+}
diff --git a/src/pages/404.tsx b/src/pages/404.tsx
new file mode 100644
index 0000000..4693567
--- /dev/null
+++ b/src/pages/404.tsx
@@ -0,0 +1,18 @@
+import { history, useIntl } from '@umijs/max';
+import { Button, Result } from 'antd';
+import React from 'react';
+
+const NoFoundPage: React.FC = () => (
+ history.push('/')}>
+ {useIntl().formatMessage({ id: 'pages.404.buttonText' })}
+
+ }
+ />
+);
+
+export default NoFoundPage;
diff --git a/src/pages/Admin.tsx b/src/pages/Admin.tsx
new file mode 100644
index 0000000..2f93986
--- /dev/null
+++ b/src/pages/Admin.tsx
@@ -0,0 +1,45 @@
+import { HeartTwoTone, SmileTwoTone } from '@ant-design/icons';
+import { PageContainer } from '@ant-design/pro-components';
+import { useIntl } from '@umijs/max';
+import { Alert, Card, Typography } from 'antd';
+import React from 'react';
+
+const Admin: React.FC = () => {
+ const intl = useIntl();
+ return (
+
+
+
+
+ Ant Design Pro You
+
+
+
+ Want to add more pages? Please refer to{' '}
+
+ use block
+
+ 。
+
+
+ );
+};
+
+export default Admin;
diff --git a/src/pages/TableList/components/UpdateForm.tsx b/src/pages/TableList/components/UpdateForm.tsx
new file mode 100644
index 0000000..5cd603e
--- /dev/null
+++ b/src/pages/TableList/components/UpdateForm.tsx
@@ -0,0 +1,209 @@
+import {
+ ProFormDateTimePicker,
+ ProFormRadio,
+ ProFormSelect,
+ ProFormText,
+ ProFormTextArea,
+ StepsForm,
+} from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import { Modal } from 'antd';
+import React from 'react';
+
+export type FormValueType = {
+ target?: string;
+ template?: string;
+ type?: string;
+ time?: string;
+ frequency?: string;
+} & Partial;
+
+export type UpdateFormProps = {
+ onCancel: (flag?: boolean, formVals?: FormValueType) => void;
+ onSubmit: (values: FormValueType) => Promise;
+ updateModalOpen: boolean;
+ values: Partial;
+};
+
+const UpdateForm: React.FC = (props) => {
+ const intl = useIntl();
+ return (
+ {
+ return (
+ {
+ props.onCancel();
+ }}
+ >
+ {dom}
+
+ );
+ }}
+ onFinish={props.onSubmit}
+ >
+
+
+ ),
+ },
+ ]}
+ />
+
+ ),
+ min: 5,
+ },
+ ]}
+ />
+
+
+
+
+
+
+
+
+ ),
+ },
+ ]}
+ />
+
+
+
+ );
+};
+
+export default UpdateForm;
diff --git a/src/pages/TableList/index.tsx b/src/pages/TableList/index.tsx
new file mode 100644
index 0000000..c201007
--- /dev/null
+++ b/src/pages/TableList/index.tsx
@@ -0,0 +1,397 @@
+import { addRule, removeRule, rule, updateRule } from '@/services/ant-design-pro/api';
+import { PlusOutlined } from '@ant-design/icons';
+import type { ActionType, ProColumns, ProDescriptionsItemProps } from '@ant-design/pro-components';
+import {
+ FooterToolbar,
+ ModalForm,
+ PageContainer,
+ ProDescriptions,
+ ProFormText,
+ ProFormTextArea,
+ ProTable,
+} from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import { Button, Drawer, Input, message } from 'antd';
+import React, { useRef, useState } from 'react';
+import type { FormValueType } from './components/UpdateForm';
+import UpdateForm from './components/UpdateForm';
+
+/**
+ * @en-US Add node
+ * @zh-CN 添加节点
+ * @param fields
+ */
+const handleAdd = async (fields: API.RuleListItem) => {
+ const hide = message.loading('正在添加');
+ try {
+ await addRule({ ...fields });
+ hide();
+ message.success('Added successfully');
+ return true;
+ } catch (error) {
+ hide();
+ message.error('Adding failed, please try again!');
+ return false;
+ }
+};
+
+/**
+ * @en-US Update node
+ * @zh-CN 更新节点
+ *
+ * @param fields
+ */
+const handleUpdate = async (fields: FormValueType) => {
+ const hide = message.loading('Configuring');
+ try {
+ await updateRule({
+ name: fields.name,
+ desc: fields.desc,
+ key: fields.key,
+ });
+ hide();
+
+ message.success('Configuration is successful');
+ return true;
+ } catch (error) {
+ hide();
+ message.error('Configuration failed, please try again!');
+ return false;
+ }
+};
+
+/**
+ * Delete node
+ * @zh-CN 删除节点
+ *
+ * @param selectedRows
+ */
+const handleRemove = async (selectedRows: API.RuleListItem[]) => {
+ const hide = message.loading('正在删除');
+ if (!selectedRows) return true;
+ try {
+ await removeRule({
+ key: selectedRows.map((row) => row.key),
+ });
+ hide();
+ message.success('Deleted successfully and will refresh soon');
+ return true;
+ } catch (error) {
+ hide();
+ message.error('Delete failed, please try again');
+ return false;
+ }
+};
+
+const TableList: React.FC = () => {
+ /**
+ * @en-US Pop-up window of new window
+ * @zh-CN 新建窗口的弹窗
+ * */
+ const [createModalOpen, handleModalOpen] = useState(false);
+ /**
+ * @en-US The pop-up window of the distribution update window
+ * @zh-CN 分布更新窗口的弹窗
+ * */
+ const [updateModalOpen, handleUpdateModalOpen] = useState(false);
+
+ const [showDetail, setShowDetail] = useState(false);
+
+ const actionRef = useRef();
+ const [currentRow, setCurrentRow] = useState();
+ const [selectedRowsState, setSelectedRows] = useState([]);
+
+ /**
+ * @en-US International configuration
+ * @zh-CN 国际化配置
+ * */
+ const intl = useIntl();
+
+ const columns: ProColumns[] = [
+ {
+ title: (
+
+ ),
+ dataIndex: 'name',
+ tip: 'The rule name is the unique key',
+ render: (dom, entity) => {
+ return (
+ {
+ setCurrentRow(entity);
+ setShowDetail(true);
+ }}
+ >
+ {dom}
+
+ );
+ },
+ },
+ {
+ title: ,
+ dataIndex: 'desc',
+ valueType: 'textarea',
+ },
+ {
+ title: (
+
+ ),
+ dataIndex: 'callNo',
+ sorter: true,
+ hideInForm: true,
+ renderText: (val: string) =>
+ `${val}${intl.formatMessage({
+ id: 'pages.searchTable.tenThousand',
+ defaultMessage: ' 万 ',
+ })}`,
+ },
+ {
+ title: ,
+ dataIndex: 'status',
+ hideInForm: true,
+ valueEnum: {
+ 0: {
+ text: (
+
+ ),
+ status: 'Default',
+ },
+ 1: {
+ text: (
+
+ ),
+ status: 'Processing',
+ },
+ 2: {
+ text: (
+
+ ),
+ status: 'Success',
+ },
+ 3: {
+ text: (
+
+ ),
+ status: 'Error',
+ },
+ },
+ },
+ {
+ title: (
+
+ ),
+ sorter: true,
+ dataIndex: 'updatedAt',
+ valueType: 'dateTime',
+ renderFormItem: (item, { defaultRender, ...rest }, form) => {
+ const status = form.getFieldValue('status');
+ if (`${status}` === '0') {
+ return false;
+ }
+ if (`${status}` === '3') {
+ return (
+
+ );
+ }
+ return defaultRender(item);
+ },
+ },
+ {
+ title: ,
+ dataIndex: 'option',
+ valueType: 'option',
+ render: (_, record) => [
+ {
+ handleUpdateModalOpen(true);
+ setCurrentRow(record);
+ }}
+ >
+
+ ,
+
+
+ ,
+ ],
+ },
+ ];
+
+ return (
+
+
+ headerTitle={intl.formatMessage({
+ id: 'pages.searchTable.title',
+ defaultMessage: 'Enquiry form',
+ })}
+ actionRef={actionRef}
+ rowKey="key"
+ search={{
+ labelWidth: 120,
+ }}
+ toolBarRender={() => [
+ ,
+ ]}
+ request={rule}
+ columns={columns}
+ rowSelection={{
+ onChange: (_, selectedRows) => {
+ setSelectedRows(selectedRows);
+ },
+ }}
+ />
+ {selectedRowsState?.length > 0 && (
+
+ {' '}
+ {selectedRowsState.length}{' '}
+
+
+
+ {' '}
+ {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)}{' '}
+
+
+
+ }
+ >
+
+
+
+ )}
+ {
+ const success = await handleAdd(value as API.RuleListItem);
+ if (success) {
+ handleModalOpen(false);
+ if (actionRef.current) {
+ actionRef.current.reload();
+ }
+ }
+ }}
+ >
+
+ ),
+ },
+ ]}
+ width="md"
+ name="name"
+ />
+
+
+ {
+ const success = await handleUpdate(value);
+ if (success) {
+ handleUpdateModalOpen(false);
+ setCurrentRow(undefined);
+ if (actionRef.current) {
+ actionRef.current.reload();
+ }
+ }
+ }}
+ onCancel={() => {
+ handleUpdateModalOpen(false);
+ if (!showDetail) {
+ setCurrentRow(undefined);
+ }
+ }}
+ updateModalOpen={updateModalOpen}
+ values={currentRow || {}}
+ />
+
+ {
+ setCurrentRow(undefined);
+ setShowDetail(false);
+ }}
+ closable={false}
+ >
+ {currentRow?.name && (
+
+ column={2}
+ title={currentRow?.name}
+ request={async () => ({
+ data: currentRow || {},
+ })}
+ params={{
+ id: currentRow?.name,
+ }}
+ columns={columns as ProDescriptionsItemProps[]}
+ />
+ )}
+
+
+ );
+};
+
+export default TableList;
diff --git a/src/pages/User/Login/__snapshots__/login.test.tsx.snap b/src/pages/User/Login/__snapshots__/login.test.tsx.snap
new file mode 100644
index 0000000..e6fd702
--- /dev/null
+++ b/src/pages/User/Login/__snapshots__/login.test.tsx.snap
@@ -0,0 +1,1108 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Login Page should login success 1`] = `
+
+
+
+`;
+
+exports[`Login Page should show login form 1`] = `
+
+
+
+`;
diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx
new file mode 100644
index 0000000..b8ef5fa
--- /dev/null
+++ b/src/pages/User/Login/index.tsx
@@ -0,0 +1,373 @@
+import { Footer } from '@/components';
+import { login } from '@/services/ant-design-pro/api';
+import { getFakeCaptcha } from '@/services/ant-design-pro/login';
+import {
+ AlipayCircleOutlined,
+ LockOutlined,
+ MobileOutlined,
+ TaobaoCircleOutlined,
+ UserOutlined,
+ WeiboCircleOutlined,
+} from '@ant-design/icons';
+import {
+ LoginForm,
+ ProFormCaptcha,
+ ProFormCheckbox,
+ ProFormText,
+} from '@ant-design/pro-components';
+import { FormattedMessage, history, SelectLang, useIntl, useModel, Helmet } from '@umijs/max';
+import { Alert, message, Tabs } from 'antd';
+import Settings from '../../../../config/defaultSettings';
+import React, { useState } from 'react';
+import { flushSync } from 'react-dom';
+import { createStyles } from 'antd-style';
+
+const useStyles = createStyles(({ token }) => {
+ return {
+ action: {
+ marginLeft: '8px',
+ color: 'rgba(0, 0, 0, 0.2)',
+ fontSize: '24px',
+ verticalAlign: 'middle',
+ cursor: 'pointer',
+ transition: 'color 0.3s',
+ '&:hover': {
+ color: token.colorPrimaryActive,
+ },
+ },
+ lang: {
+ width: 42,
+ height: 42,
+ lineHeight: '42px',
+ position: 'fixed',
+ right: 16,
+ borderRadius: token.borderRadius,
+ ':hover': {
+ backgroundColor: token.colorBgTextHover,
+ },
+ },
+ container: {
+ display: 'flex',
+ flexDirection: 'column',
+ height: '100vh',
+ overflow: 'auto',
+ backgroundImage:
+ "url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr')",
+ backgroundSize: '100% 100%',
+ },
+ };
+});
+
+const ActionIcons = () => {
+ const { styles } = useStyles();
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+const Lang = () => {
+ const { styles } = useStyles();
+
+ return (
+
+ {SelectLang && }
+
+ );
+};
+
+const LoginMessage: React.FC<{
+ content: string;
+}> = ({ content }) => {
+ return (
+
+ );
+};
+
+const Login: React.FC = () => {
+ const [userLoginState, setUserLoginState] = useState({});
+ const [type, setType] = useState('account');
+ const { initialState, setInitialState } = useModel('@@initialState');
+ const { styles } = useStyles();
+ const intl = useIntl();
+
+ const fetchUserInfo = async () => {
+ const userInfo = await initialState?.fetchUserInfo?.();
+ if (userInfo) {
+ flushSync(() => {
+ setInitialState((s) => ({
+ ...s,
+ currentUser: userInfo,
+ }));
+ });
+ }
+ };
+
+ const handleSubmit = async (values: API.LoginParams) => {
+ try {
+ // 登录
+ const msg = await login({ ...values, type });
+ if (msg.status === 'ok') {
+ const defaultLoginSuccessMessage = intl.formatMessage({
+ id: 'pages.login.success',
+ defaultMessage: '登录成功!',
+ });
+ message.success(defaultLoginSuccessMessage);
+ await fetchUserInfo();
+ const urlParams = new URL(window.location.href).searchParams;
+ history.push(urlParams.get('redirect') || '/');
+ return;
+ }
+ console.log(msg);
+ // 如果失败去设置用户错误信息
+ setUserLoginState(msg);
+ } catch (error) {
+ // const defaultLoginFailureMessage = intl.formatMessage({
+ // id: 'pages.login.failure',
+ // defaultMessage: '登录失败,请重试!',
+ // });
+ const urlParams = new URL(window.location.href).searchParams;
+ history.push(urlParams.get('redirect') || '/');
+ console.log(error);
+ // message.error(defaultLoginFailureMessage);
+ }
+ };
+ const { status, type: loginType } = userLoginState;
+
+ return (
+
+
+
+ {intl.formatMessage({
+ id: 'menu.login',
+ defaultMessage: '登录页',
+ })}
+ - {Settings.title}
+
+
+
+
+
}
+ title="Ant Design"
+ subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })}
+ initialValues={{
+ autoLogin: true,
+ }}
+ actions={[
+
,
+
,
+ ]}
+ onFinish={async (values) => {
+ await handleSubmit(values as API.LoginParams);
+ }}
+ >
+
+
+ {status === 'error' && loginType === 'account' && (
+
+ )}
+ {type === 'account' && (
+ <>
+
,
+ }}
+ placeholder={intl.formatMessage({
+ id: 'pages.login.username.placeholder',
+ defaultMessage: '用户名: admin or user',
+ })}
+ rules={[
+ {
+ required: true,
+ message: (
+
+ ),
+ },
+ ]}
+ />
+
,
+ }}
+ placeholder={intl.formatMessage({
+ id: 'pages.login.password.placeholder',
+ defaultMessage: '密码: ant.design',
+ })}
+ rules={[
+ {
+ required: true,
+ message: (
+
+ ),
+ },
+ ]}
+ />
+ >
+ )}
+
+ {status === 'error' && loginType === 'mobile' &&
}
+ {type === 'mobile' && (
+ <>
+
,
+ }}
+ name="mobile"
+ placeholder={intl.formatMessage({
+ id: 'pages.login.phoneNumber.placeholder',
+ defaultMessage: '手机号',
+ })}
+ rules={[
+ {
+ required: true,
+ message: (
+
+ ),
+ },
+ {
+ pattern: /^1\d{10}$/,
+ message: (
+
+ ),
+ },
+ ]}
+ />
+
,
+ }}
+ captchaProps={{
+ size: 'large',
+ }}
+ placeholder={intl.formatMessage({
+ id: 'pages.login.captcha.placeholder',
+ defaultMessage: '请输入验证码',
+ })}
+ captchaTextRender={(timing, count) => {
+ if (timing) {
+ return `${count} ${intl.formatMessage({
+ id: 'pages.getCaptchaSecondText',
+ defaultMessage: '获取验证码',
+ })}`;
+ }
+ return intl.formatMessage({
+ id: 'pages.login.phoneLogin.getVerificationCode',
+ defaultMessage: '获取验证码',
+ });
+ }}
+ name="captcha"
+ rules={[
+ {
+ required: true,
+ message: (
+
+ ),
+ },
+ ]}
+ onGetCaptcha={async (phone) => {
+ const result = await getFakeCaptcha({
+ phone,
+ });
+ if (!result) {
+ return;
+ }
+ message.success('获取验证码成功!验证码为:1234');
+ }}
+ />
+ >
+ )}
+
+
+
+
+
+ );
+};
+
+export default Login;
diff --git a/src/pages/User/Login/login.test.tsx b/src/pages/User/Login/login.test.tsx
new file mode 100644
index 0000000..18593f8
--- /dev/null
+++ b/src/pages/User/Login/login.test.tsx
@@ -0,0 +1,96 @@
+import { render, fireEvent, act } from '@testing-library/react';
+import React from 'react';
+import { TestBrowser } from '@@/testBrowser';
+
+// @ts-ignore
+import { startMock } from '@@/requestRecordMock';
+
+const waitTime = (time: number = 100) => {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(true);
+ }, time);
+ });
+};
+
+let server: {
+ close: () => void;
+};
+
+describe('Login Page', () => {
+ beforeAll(async () => {
+ server = await startMock({
+ port: 8000,
+ scene: 'login',
+ });
+ });
+
+ afterAll(() => {
+ server?.close();
+ });
+
+ it('should show login form', async () => {
+ const historyRef = React.createRef();
+ const rootContainer = render(
+ ,
+ );
+
+ await rootContainer.findAllByText('Ant Design');
+
+ act(() => {
+ historyRef.current?.push('/user/login');
+ });
+
+ expect(rootContainer.baseElement?.querySelector('.ant-pro-form-login-desc')?.textContent).toBe(
+ 'Ant Design is the most influential web design specification in Xihu district',
+ );
+
+ expect(rootContainer.asFragment()).toMatchSnapshot();
+
+ rootContainer.unmount();
+ });
+
+ it('should login success', async () => {
+ const historyRef = React.createRef();
+ const rootContainer = render(
+ ,
+ );
+
+ await rootContainer.findAllByText('Ant Design');
+
+ const userNameInput = await rootContainer.findByPlaceholderText('Username: admin or user');
+
+ act(() => {
+ fireEvent.change(userNameInput, { target: { value: 'admin' } });
+ });
+
+ const passwordInput = await rootContainer.findByPlaceholderText('Password: ant.design');
+
+ act(() => {
+ fireEvent.change(passwordInput, { target: { value: 'ant.design' } });
+ });
+
+ await (await rootContainer.findByText('Login')).click();
+
+ // 等待接口返回结果
+ await waitTime(5000);
+
+ await rootContainer.findAllByText('Ant Design Pro');
+
+ expect(rootContainer.asFragment()).toMatchSnapshot();
+
+ await waitTime(2000);
+
+ rootContainer.unmount();
+ });
+});
diff --git a/src/pages/Welcome.tsx b/src/pages/Welcome.tsx
new file mode 100644
index 0000000..d0c49f7
--- /dev/null
+++ b/src/pages/Welcome.tsx
@@ -0,0 +1,164 @@
+import { PageContainer } from '@ant-design/pro-components';
+import { useModel } from '@umijs/max';
+import { Card, theme } from 'antd';
+import React from 'react';
+
+/**
+ * 每个单独的卡片,为了复用样式抽成了组件
+ * @param param0
+ * @returns
+ */
+const InfoCard: React.FC<{
+ title: string;
+ index: number;
+ desc: string;
+ href: string;
+}> = ({ title, href, index, desc }) => {
+ const { useToken } = theme;
+
+ const { token } = useToken();
+
+ return (
+
+ );
+};
+
+const Welcome: React.FC = () => {
+ const { token } = theme.useToken();
+ const { initialState } = useModel('@@initialState');
+ return (
+
+
+
+
+ 欢迎使用 Ant Design Pro
+
+
+ Ant Design Pro 是一个整合了 umi,Ant Design 和 ProComponents
+ 的脚手架方案。致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Welcome;
diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts
new file mode 100644
index 0000000..c0c4a6a
--- /dev/null
+++ b/src/requestErrorConfig.ts
@@ -0,0 +1,109 @@
+import type { RequestOptions } from '@@/plugin-request/request';
+import type { RequestConfig } from '@umijs/max';
+import { message, notification } from 'antd';
+
+// 错误处理方案: 错误类型
+enum ErrorShowType {
+ SILENT = 0,
+ WARN_MESSAGE = 1,
+ ERROR_MESSAGE = 2,
+ NOTIFICATION = 3,
+ REDIRECT = 9,
+}
+// 与后端约定的响应数据格式
+interface ResponseStructure {
+ success: boolean;
+ data: any;
+ errorCode?: number;
+ errorMessage?: string;
+ showType?: ErrorShowType;
+}
+
+/**
+ * @name 错误处理
+ * pro 自带的错误处理, 可以在这里做自己的改动
+ * @doc https://umijs.org/docs/max/request#配置
+ */
+export const errorConfig: RequestConfig = {
+ // 错误处理: umi@3 的错误处理方案。
+ errorConfig: {
+ // 错误抛出
+ errorThrower: (res) => {
+ const { success, data, errorCode, errorMessage, showType } =
+ res as unknown as ResponseStructure;
+ if (!success) {
+ const error: any = new Error(errorMessage);
+ error.name = 'BizError';
+ error.info = { errorCode, errorMessage, showType, data };
+ throw error; // 抛出自制的错误
+ }
+ },
+ // 错误接收及处理
+ errorHandler: (error: any, opts: any) => {
+ if (opts?.skipErrorHandler) throw error;
+ // 我们的 errorThrower 抛出的错误。
+ if (error.name === 'BizError') {
+ const errorInfo: ResponseStructure | undefined = error.info;
+ if (errorInfo) {
+ const { errorMessage, errorCode } = errorInfo;
+ switch (errorInfo.showType) {
+ case ErrorShowType.SILENT:
+ // do nothing
+ break;
+ case ErrorShowType.WARN_MESSAGE:
+ message.warning(errorMessage);
+ break;
+ case ErrorShowType.ERROR_MESSAGE:
+ message.error(errorMessage);
+ break;
+ case ErrorShowType.NOTIFICATION:
+ notification.open({
+ description: errorMessage,
+ message: errorCode,
+ });
+ break;
+ case ErrorShowType.REDIRECT:
+ // TODO: redirect
+ break;
+ default:
+ message.error(errorMessage);
+ }
+ }
+ } else if (error.response) {
+ // Axios 的错误
+ // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
+ message.error(`Response status:${error.response.status}`);
+ } else if (error.request) {
+ // 请求已经成功发起,但没有收到响应
+ // \`error.request\` 在浏览器中是 XMLHttpRequest 的实例,
+ // 而在node.js中是 http.ClientRequest 的实例
+ message.error('None response! Please retry.');
+ } else {
+ // 发送请求时出了点问题
+ message.error('Request error, please retry.');
+ }
+ },
+ },
+
+ // 请求拦截器
+ requestInterceptors: [
+ (config: RequestOptions) => {
+ // 拦截请求配置,进行个性化处理。
+ const url = config?.url?.concat('?token = 123');
+ return { ...config, url };
+ },
+ ],
+
+ // 响应拦截器
+ responseInterceptors: [
+ (response) => {
+ // 拦截响应数据,进行个性化处理
+ const { data } = response as unknown as ResponseStructure;
+
+ if (data?.success === false) {
+ message.error('请求失败!');
+ }
+ return response;
+ },
+ ],
+};
diff --git a/src/service-worker.js b/src/service-worker.js
new file mode 100644
index 0000000..b86726c
--- /dev/null
+++ b/src/service-worker.js
@@ -0,0 +1,65 @@
+/* eslint-disable no-restricted-globals */
+/* eslint-disable no-underscore-dangle */
+/* globals workbox */
+workbox.core.setCacheNameDetails({
+ prefix: 'antd-pro',
+ suffix: 'v5',
+});
+// Control all opened tabs ASAP
+workbox.clientsClaim();
+
+/**
+ * Use precaching list generated by workbox in build process.
+ * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.precaching
+ */
+workbox.precaching.precacheAndRoute(self.__precacheManifest || []);
+
+/**
+ * Register a navigation route.
+ * https://developers.google.com/web/tools/workbox/modules/workbox-routing#how_to_register_a_navigation_route
+ */
+workbox.routing.registerNavigationRoute('/index.html');
+
+/**
+ * Use runtime cache:
+ * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.routing#.registerRoute
+ *
+ * Workbox provides all common caching strategies including CacheFirst, NetworkFirst etc.
+ * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.strategies
+ */
+
+/** Handle API requests */
+workbox.routing.registerRoute(/\/api\//, workbox.strategies.networkFirst());
+
+/** Handle third party requests */
+workbox.routing.registerRoute(
+ /^https:\/\/gw\.alipayobjects\.com\//,
+ workbox.strategies.networkFirst(),
+);
+workbox.routing.registerRoute(
+ /^https:\/\/cdnjs\.cloudflare\.com\//,
+ workbox.strategies.networkFirst(),
+);
+workbox.routing.registerRoute(/\/color.less/, workbox.strategies.networkFirst());
+
+/** Response to client after skipping waiting with MessageChannel */
+addEventListener('message', (event) => {
+ const replyPort = event.ports[0];
+ const message = event.data;
+ if (replyPort && message && message.type === 'skip-waiting') {
+ event.waitUntil(
+ self.skipWaiting().then(
+ () => {
+ replyPort.postMessage({
+ error: null,
+ });
+ },
+ (error) => {
+ replyPort.postMessage({
+ error,
+ });
+ },
+ ),
+ );
+ }
+});
diff --git a/src/services/ant-design-pro/api.ts b/src/services/ant-design-pro/api.ts
new file mode 100644
index 0000000..b42bdfc
--- /dev/null
+++ b/src/services/ant-design-pro/api.ts
@@ -0,0 +1,94 @@
+// @ts-ignore
+/* eslint-disable */
+import { request } from '@umijs/max';
+
+/** 获取当前的用户 GET /api/currentUser */
+export async function currentUser(options?: { [key: string]: any }) {
+ return request<{
+ data: API.CurrentUser;
+ }>('/api/currentUser', {
+ method: 'GET',
+ ...(options || {}),
+ });
+}
+
+/** 退出登录接口 POST /api/login/outLogin */
+export async function outLogin(options?: { [key: string]: any }) {
+ return request>('/api/login/outLogin', {
+ method: 'POST',
+ ...(options || {}),
+ });
+}
+
+/** 登录接口 POST /api/login/account */
+export async function login(body: API.LoginParams, options?: { [key: string]: any }) {
+ return request('/api/login/account', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 此处后端没有提供注释 GET /api/notices */
+export async function getNotices(options?: { [key: string]: any }) {
+ return request('/api/notices', {
+ method: 'GET',
+ ...(options || {}),
+ });
+}
+
+/** 获取规则列表 GET /api/rule */
+export async function rule(
+ params: {
+ // query
+ /** 当前的页码 */
+ current?: number;
+ /** 页面的容量 */
+ pageSize?: number;
+ },
+ options?: { [key: string]: any },
+) {
+ return request('/api/rule', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
+
+/** 更新规则 PUT /api/rule */
+export async function updateRule(options?: { [key: string]: any }) {
+ return request('/api/rule', {
+ method: 'POST',
+ data:{
+ method: 'update',
+ ...(options || {}),
+ }
+ });
+}
+
+/** 新建规则 POST /api/rule */
+export async function addRule(options?: { [key: string]: any }) {
+ return request('/api/rule', {
+ method: 'POST',
+ data:{
+ method: 'post',
+ ...(options || {}),
+ }
+ });
+}
+
+/** 删除规则 DELETE /api/rule */
+export async function removeRule(options?: { [key: string]: any }) {
+ return request>('/api/rule', {
+ method: 'POST',
+ data:{
+ method: 'delete',
+ ...(options || {}),
+ }
+ });
+}
diff --git a/src/services/ant-design-pro/index.ts b/src/services/ant-design-pro/index.ts
new file mode 100644
index 0000000..1ac489f
--- /dev/null
+++ b/src/services/ant-design-pro/index.ts
@@ -0,0 +1,10 @@
+// @ts-ignore
+/* eslint-disable */
+// API 更新时间:
+// API 唯一标识:
+import * as api from './api';
+import * as login from './login';
+export default {
+ api,
+ login,
+};
diff --git a/src/services/ant-design-pro/login.ts b/src/services/ant-design-pro/login.ts
new file mode 100644
index 0000000..8871ed8
--- /dev/null
+++ b/src/services/ant-design-pro/login.ts
@@ -0,0 +1,21 @@
+// @ts-ignore
+/* eslint-disable */
+import { request } from '@umijs/max';
+
+/** 发送验证码 POST /api/login/captcha */
+export async function getFakeCaptcha(
+ params: {
+ // query
+ /** 手机号 */
+ phone?: string;
+ },
+ options?: { [key: string]: any },
+) {
+ return request('/api/login/captcha', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
diff --git a/src/services/ant-design-pro/typings.d.ts b/src/services/ant-design-pro/typings.d.ts
new file mode 100644
index 0000000..13e5a68
--- /dev/null
+++ b/src/services/ant-design-pro/typings.d.ts
@@ -0,0 +1,101 @@
+// @ts-ignore
+/* eslint-disable */
+
+declare namespace API {
+ 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 = {
+ status?: string;
+ type?: string;
+ currentAuthority?: string;
+ };
+
+ type PageParams = {
+ current?: 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;
+ };
+
+ type FakeCaptcha = {
+ code?: number;
+ status?: string;
+ };
+
+ type LoginParams = {
+ username?: string;
+ password?: string;
+ autoLogin?: boolean;
+ type?: string;
+ };
+
+ type ErrorResponse = {
+ /** 业务约定的错误码 */
+ errorCode: string;
+ /** 业务上的错误信息 */
+ errorMessage?: 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;
+ };
+}
diff --git a/src/services/swagger/index.ts b/src/services/swagger/index.ts
new file mode 100644
index 0000000..83cf97c
--- /dev/null
+++ b/src/services/swagger/index.ts
@@ -0,0 +1,12 @@
+// @ts-ignore
+/* eslint-disable */
+// API 更新时间:
+// API 唯一标识:
+import * as pet from './pet';
+import * as store from './store';
+import * as user from './user';
+export default {
+ pet,
+ store,
+ user,
+};
diff --git a/src/services/swagger/pet.ts b/src/services/swagger/pet.ts
new file mode 100644
index 0000000..b887475
--- /dev/null
+++ b/src/services/swagger/pet.ts
@@ -0,0 +1,153 @@
+// @ts-ignore
+/* eslint-disable */
+import { request } from '@umijs/max';
+
+/** Update an existing pet PUT /pet */
+export async function updatePet(body: API.Pet, options?: { [key: string]: any }) {
+ return request('/pet', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Add a new pet to the store POST /pet */
+export async function addPet(body: API.Pet, options?: { [key: string]: any }) {
+ return request('/pet', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Find pet by ID Returns a single pet GET /pet/${param0} */
+export async function getPetById(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.getPetByIdParams,
+ options?: { [key: string]: any },
+) {
+ const { petId: param0, ...queryParams } = params;
+ return request(`/pet/${param0}`, {
+ method: 'GET',
+ params: { ...queryParams },
+ ...(options || {}),
+ });
+}
+
+/** Updates a pet in the store with form data POST /pet/${param0} */
+export async function updatePetWithForm(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.updatePetWithFormParams,
+ body: { name?: string; status?: string },
+ options?: { [key: string]: any },
+) {
+ const { petId: param0, ...queryParams } = params;
+ const formData = new FormData();
+
+ Object.keys(body).forEach((ele) => {
+ const item = (body as any)[ele];
+
+ if (item !== undefined && item !== null) {
+ formData.append(
+ ele,
+ typeof item === 'object' && !(item instanceof File) ? JSON.stringify(item) : item,
+ );
+ }
+ });
+
+ return request(`/pet/${param0}`, {
+ method: 'POST',
+ params: { ...queryParams },
+ data: formData,
+ ...(options || {}),
+ });
+}
+
+/** Deletes a pet DELETE /pet/${param0} */
+export async function deletePet(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.deletePetParams & {
+ // header
+ api_key?: string;
+ },
+ options?: { [key: string]: any },
+) {
+ const { petId: param0, ...queryParams } = params;
+ return request(`/pet/${param0}`, {
+ method: 'DELETE',
+ headers: {},
+ params: { ...queryParams },
+ ...(options || {}),
+ });
+}
+
+/** uploads an image POST /pet/${param0}/uploadImage */
+export async function uploadFile(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.uploadFileParams,
+ body: { additionalMetadata?: string; file?: string },
+ file?: File,
+ options?: { [key: string]: any },
+) {
+ const { petId: param0, ...queryParams } = params;
+ const formData = new FormData();
+
+ if (file) {
+ formData.append('file', file);
+ }
+
+ Object.keys(body).forEach((ele) => {
+ const item = (body as any)[ele];
+
+ if (item !== undefined && item !== null) {
+ formData.append(
+ ele,
+ typeof item === 'object' && !(item instanceof File) ? JSON.stringify(item) : item,
+ );
+ }
+ });
+
+ return request(`/pet/${param0}/uploadImage`, {
+ method: 'POST',
+ params: { ...queryParams },
+ data: formData,
+ requestType: 'form',
+ ...(options || {}),
+ });
+}
+
+/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */
+export async function findPetsByStatus(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.findPetsByStatusParams,
+ options?: { [key: string]: any },
+) {
+ return request('/pet/findByStatus', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
+
+/** Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */
+export async function findPetsByTags(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.findPetsByTagsParams,
+ options?: { [key: string]: any },
+) {
+ return request('/pet/findByTags', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
diff --git a/src/services/swagger/store.ts b/src/services/swagger/store.ts
new file mode 100644
index 0000000..b9c689a
--- /dev/null
+++ b/src/services/swagger/store.ts
@@ -0,0 +1,48 @@
+// @ts-ignore
+/* eslint-disable */
+import { request } from '@umijs/max';
+
+/** Returns pet inventories by status Returns a map of status codes to quantities GET /store/inventory */
+export async function getInventory(options?: { [key: string]: any }) {
+ return request>('/store/inventory', {
+ method: 'GET',
+ ...(options || {}),
+ });
+}
+
+/** Place an order for a pet POST /store/order */
+export async function placeOrder(body: API.Order, options?: { [key: string]: any }) {
+ return request('/store/order', {
+ method: 'POST',
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions GET /store/order/${param0} */
+export async function getOrderById(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.getOrderByIdParams,
+ options?: { [key: string]: any },
+) {
+ const { orderId: param0, ...queryParams } = params;
+ return request(`/store/order/${param0}`, {
+ method: 'GET',
+ params: { ...queryParams },
+ ...(options || {}),
+ });
+}
+
+/** Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors DELETE /store/order/${param0} */
+export async function deleteOrder(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.deleteOrderParams,
+ options?: { [key: string]: any },
+) {
+ const { orderId: param0, ...queryParams } = params;
+ return request(`/store/order/${param0}`, {
+ method: 'DELETE',
+ params: { ...queryParams },
+ ...(options || {}),
+ });
+}
diff --git a/src/services/swagger/typings.d.ts b/src/services/swagger/typings.d.ts
new file mode 100644
index 0000000..d06bcfc
--- /dev/null
+++ b/src/services/swagger/typings.d.ts
@@ -0,0 +1,112 @@
+declare namespace API {
+ type ApiResponse = {
+ code?: number;
+ type?: string;
+ message?: string;
+ };
+
+ type Category = {
+ id?: number;
+ name?: string;
+ };
+
+ type deleteOrderParams = {
+ /** ID of the order that needs to be deleted */
+ orderId: number;
+ };
+
+ type deletePetParams = {
+ api_key?: string;
+ /** Pet id to delete */
+ petId: number;
+ };
+
+ type deleteUserParams = {
+ /** The name that needs to be deleted */
+ username: string;
+ };
+
+ type findPetsByStatusParams = {
+ /** Status values that need to be considered for filter */
+ status: ('available' | 'pending' | 'sold')[];
+ };
+
+ type findPetsByTagsParams = {
+ /** Tags to filter by */
+ tags: string[];
+ };
+
+ type getOrderByIdParams = {
+ /** ID of pet that needs to be fetched */
+ orderId: number;
+ };
+
+ type getPetByIdParams = {
+ /** ID of pet to return */
+ petId: number;
+ };
+
+ type getUserByNameParams = {
+ /** The name that needs to be fetched. Use user1 for testing. */
+ username: string;
+ };
+
+ type loginUserParams = {
+ /** The user name for login */
+ username: string;
+ /** The password for login in clear text */
+ password: string;
+ };
+
+ type Order = {
+ id?: number;
+ petId?: number;
+ quantity?: number;
+ shipDate?: string;
+ /** Order Status */
+ status?: 'placed' | 'approved' | 'delivered';
+ complete?: boolean;
+ };
+
+ type Pet = {
+ id?: number;
+ category?: Category;
+ name: string;
+ photoUrls: string[];
+ tags?: Tag[];
+ /** pet status in the store */
+ status?: 'available' | 'pending' | 'sold';
+ };
+
+ type Tag = {
+ id?: number;
+ name?: string;
+ };
+
+ type updatePetWithFormParams = {
+ /** ID of pet that needs to be updated */
+ petId: number;
+ };
+
+ type updateUserParams = {
+ /** name that need to be updated */
+ username: string;
+ };
+
+ type uploadFileParams = {
+ /** ID of pet to update */
+ petId: number;
+ };
+
+ type User = {
+ id?: number;
+ username?: string;
+ firstName?: string;
+ lastName?: string;
+ email?: string;
+ password?: string;
+ phone?: string;
+ /** User Status */
+ userStatus?: number;
+ };
+}
diff --git a/src/services/swagger/user.ts b/src/services/swagger/user.ts
new file mode 100644
index 0000000..4dd6f42
--- /dev/null
+++ b/src/services/swagger/user.ts
@@ -0,0 +1,100 @@
+// @ts-ignore
+/* eslint-disable */
+import { request } from '@umijs/max';
+
+/** Create user This can only be done by the logged in user. POST /user */
+export async function createUser(body: API.User, options?: { [key: string]: any }) {
+ return request('/user', {
+ method: 'POST',
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Get user by user name GET /user/${param0} */
+export async function getUserByName(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.getUserByNameParams,
+ options?: { [key: string]: any },
+) {
+ const { username: param0, ...queryParams } = params;
+ return request(`/user/${param0}`, {
+ method: 'GET',
+ params: { ...queryParams },
+ ...(options || {}),
+ });
+}
+
+/** Updated user This can only be done by the logged in user. PUT /user/${param0} */
+export async function updateUser(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.updateUserParams,
+ body: API.User,
+ options?: { [key: string]: any },
+) {
+ const { username: param0, ...queryParams } = params;
+ return request(`/user/${param0}`, {
+ method: 'PUT',
+ params: { ...queryParams },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */
+export async function deleteUser(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.deleteUserParams,
+ options?: { [key: string]: any },
+) {
+ const { username: param0, ...queryParams } = params;
+ return request(`/user/${param0}`, {
+ method: 'DELETE',
+ params: { ...queryParams },
+ ...(options || {}),
+ });
+}
+
+/** Creates list of users with given input array POST /user/createWithArray */
+export async function createUsersWithArrayInput(
+ body: API.User[],
+ options?: { [key: string]: any },
+) {
+ return request('/user/createWithArray', {
+ method: 'POST',
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Creates list of users with given input array POST /user/createWithList */
+export async function createUsersWithListInput(body: API.User[], options?: { [key: string]: any }) {
+ return request('/user/createWithList', {
+ method: 'POST',
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** Logs user into the system GET /user/login */
+export async function loginUser(
+ // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+ params: API.loginUserParams,
+ options?: { [key: string]: any },
+) {
+ return request('/user/login', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
+
+/** Logs out current logged in user session GET /user/logout */
+export async function logoutUser(options?: { [key: string]: any }) {
+ return request('/user/logout', {
+ method: 'GET',
+ ...(options || {}),
+ });
+}
diff --git a/src/typings.d.ts b/src/typings.d.ts
new file mode 100644
index 0000000..742f70c
--- /dev/null
+++ b/src/typings.d.ts
@@ -0,0 +1,20 @@
+declare module 'slash2';
+declare module '*.css';
+declare module '*.less';
+declare module '*.scss';
+declare module '*.sass';
+declare module '*.svg';
+declare module '*.png';
+declare module '*.jpg';
+declare module '*.jpeg';
+declare module '*.gif';
+declare module '*.bmp';
+declare module '*.tiff';
+declare module 'omit.js';
+declare module 'numeral';
+declare module '@antv/data-set';
+declare module 'mockjs';
+declare module 'react-fittext';
+declare module 'bizcharts-plugin-slider';
+
+declare const REACT_APP_ENV: 'test' | 'dev' | 'pre' | false;
diff --git a/tests/setupTests.jsx b/tests/setupTests.jsx
new file mode 100644
index 0000000..952561d
--- /dev/null
+++ b/tests/setupTests.jsx
@@ -0,0 +1,64 @@
+const localStorageMock = {
+ getItem: jest.fn(),
+ setItem: jest.fn(),
+ removeItem: jest.fn(),
+ clear: jest.fn(),
+};
+
+global.localStorage = localStorageMock;
+
+Object.defineProperty(URL, 'createObjectURL', {
+ writable: true,
+ value: jest.fn(),
+});
+
+class Worker {
+ constructor(stringUrl) {
+ this.url = stringUrl;
+ this.onmessage = () => {};
+ }
+
+ postMessage(msg) {
+ this.onmessage(msg);
+ }
+}
+window.Worker = Worker;
+
+/* eslint-disable global-require */
+if (typeof window !== 'undefined') {
+ // ref: https://github.com/ant-design/ant-design/issues/18774
+ if (!window.matchMedia) {
+ Object.defineProperty(global.window, 'matchMedia', {
+ writable: true,
+ configurable: true,
+ value: jest.fn(() => ({
+ matches: false,
+ addListener: jest.fn(),
+ removeListener: jest.fn(),
+ })),
+ });
+ }
+ if (!window.matchMedia) {
+ Object.defineProperty(global.window, 'matchMedia', {
+ writable: true,
+ configurable: true,
+ value: jest.fn((query) => ({
+ matches: query.includes('max-width'),
+ addListener: jest.fn(),
+ removeListener: jest.fn(),
+ })),
+ });
+ }
+}
+const errorLog = console.error;
+Object.defineProperty(global.window.console, 'error', {
+ writable: true,
+ configurable: true,
+ value: (...rest) => {
+ const logStr = rest.join('');
+ if (logStr.includes('Warning: An update to %s inside a test was not wrapped in act(...)')) {
+ return;
+ }
+ errorLog(...rest);
+ },
+});
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..85733f6
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "module": "esnext",
+ "moduleResolution": "node",
+ "importHelpers": true,
+ "jsx": "preserve",
+ "esModuleInterop": true,
+ "sourceMap": true,
+ "baseUrl": "./",
+ "skipLibCheck": true,
+ "experimentalDecorators": true,
+ "strict": true,
+ "resolveJsonModule": true,
+ "allowSyntheticDefaultImports": true,
+ "paths": {
+ "@/*": ["./src/*"],
+ "@@/*": ["./src/.umi/*"],
+ "@@test/*": ["./src/.umi-test/*"]
+ }
+ },
+ "include": ["./**/*.d.ts", "./**/*.ts", "./**/*.tsx"]
+}
diff --git a/types/cache/cache.json b/types/cache/cache.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/types/cache/cache.json
@@ -0,0 +1 @@
+{}
diff --git a/types/cache/login.cache.json b/types/cache/login.cache.json
new file mode 100644
index 0000000..81109b4
--- /dev/null
+++ b/types/cache/login.cache.json
@@ -0,0 +1,386 @@
+{
+ "GET /api/currentUser": {
+ "res": {
+ "data": {
+ "name": "Serati Ma",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png",
+ "userid": "00000001",
+ "email": "antdesign@alipay.com",
+ "signature": "海纳百川,有容乃大",
+ "title": "交互专家",
+ "group": "蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED",
+ "tags": [
+ {
+ "key": "0",
+ "label": "很有想法的"
+ },
+ {
+ "key": "1",
+ "label": "专注设计"
+ },
+ {
+ "key": "2",
+ "label": "辣~"
+ },
+ {
+ "key": "3",
+ "label": "大长腿"
+ },
+ {
+ "key": "4",
+ "label": "川妹子"
+ },
+ {
+ "key": "5",
+ "label": "海纳百川"
+ }
+ ],
+ "notifyCount": 12,
+ "unreadCount": 11,
+ "country": "China",
+ "geographic": {
+ "province": {
+ "label": "浙江省",
+ "key": "330000"
+ },
+ "city": {
+ "label": "杭州市",
+ "key": "330100"
+ }
+ },
+ "address": "西湖区工专路 77 号",
+ "phone": "0752-268888888"
+ }
+ },
+ "query": {
+ "token ": " 123"
+ },
+ "payload": {},
+ "types": "/** GET /api/currentUser */\nexport type GET_API_CURRENT_USER_QUERY = {\n /** example: 123 */\n token : string\n}\n \n\nexport type GET_API_CURRENT_USER_PAYLOAD = {\n \n}\n \n\nexport type GET_API_CURRENT_USER_RES = {\n /** example: {\"name\": \"Serati Ma\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png\", \"userid\": \"00000001\", \"email\": \"antdesign@alipay.com\", \"signature\": \"海纳百川,有容乃大\", \"title\": \"交互专家\", \"group\": \"蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED\", \"tags\": [{\"key\": \"0\", \"label\": \"很有想法的\"}, {\"key\": \"1\", \"label\": \"专注设计\"}, {\"key\": \"2\", \"label\": \"辣~\"}, {\"key\": \"3\", \"label\": \"大长腿\"}, {\"key\": \"4\", \"label\": \"川妹子\"}, {\"key\": \"5\", \"label\": \"海纳百川\"}], \"notifyCount\": 12, \"unreadCount\": 11, \"country\": \"China\", \"geographic\": {\"province\": {\"label\": \"浙江省\", \"key\": \"330000\"}, \"city\": {\"label\": \"杭州市\", \"key\": \"330100\"}}, \"address\": \"西湖区工专路 77 号\", \"phone\": \"0752-268888888\"} */\n data: {\n name: string,\navatar: string,\nuserid: string,\nemail: string,\nsignature: string,\ntitle: string,\ngroup: string,\ntags: {\n key: string,\nlabel: string\n }[],\nnotifyCount: number,\nunreadCount: number,\ncountry: string,\ngeographic: {\n province: {\n label: string,\nkey: string\n },\ncity: {\n label: string,\nkey: string\n }\n },\naddress: string,\nphone: string\n }\n}\n "
+ },
+ "GET /api/rule": {
+ "res": {
+ "data": [
+ {
+ "key": 99,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 99",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 503,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 81
+ },
+ {
+ "key": 98,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 98",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 164,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 12
+ },
+ {
+ "key": 97,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 97",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 174,
+ "status": "1",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 81
+ },
+ {
+ "key": 96,
+ "disabled": true,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 96",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 914,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 7
+ },
+ {
+ "key": 95,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 95",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 698,
+ "status": "2",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 82
+ },
+ {
+ "key": 94,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 94",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 488,
+ "status": "1",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 14
+ },
+ {
+ "key": 93,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 93",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 580,
+ "status": "2",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 77
+ },
+ {
+ "key": 92,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 92",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 244,
+ "status": "3",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 58
+ },
+ {
+ "key": 91,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 91",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 959,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 66
+ },
+ {
+ "key": 90,
+ "disabled": true,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 90",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 958,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 72
+ },
+ {
+ "key": 89,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 89",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 301,
+ "status": "2",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 2
+ },
+ {
+ "key": 88,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 88",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 277,
+ "status": "1",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 12
+ },
+ {
+ "key": 87,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 87",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 810,
+ "status": "1",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 82
+ },
+ {
+ "key": 86,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 86",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 780,
+ "status": "3",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 22
+ },
+ {
+ "key": 85,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 85",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 705,
+ "status": "3",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 12
+ },
+ {
+ "key": 84,
+ "disabled": true,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 84",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 203,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 79
+ },
+ {
+ "key": 83,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 83",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 491,
+ "status": "2",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 59
+ },
+ {
+ "key": 82,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 82",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 73,
+ "status": "0",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 100
+ },
+ {
+ "key": 81,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png",
+ "name": "TradeCode 81",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 406,
+ "status": "3",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 61
+ },
+ {
+ "key": 80,
+ "disabled": false,
+ "href": "https://ant.design",
+ "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png",
+ "name": "TradeCode 80",
+ "owner": "曲丽丽",
+ "desc": "这是一段描述",
+ "callNo": 112,
+ "status": "2",
+ "updatedAt": "2022-12-06T05:00:57.040Z",
+ "createdAt": "2022-12-06T05:00:57.040Z",
+ "progress": 20
+ }
+ ],
+ "total": 100,
+ "success": true,
+ "pageSize": 20,
+ "current": 1
+ },
+ "query": {
+ "token ": " 123",
+ "current": "1",
+ "pageSize": "20"
+ },
+ "payload": {},
+ "types": "/** GET /api/rule */\nexport type GET_API_RULE_QUERY = {\n /** example: 123 */\n token : string;\n /** example: 1 */\n current: string;\n /** example: 20 */\n pageSize: string\n}\n \n\nexport type GET_API_RULE_PAYLOAD = {\n \n}\n \n\nexport type GET_API_RULE_RES = {\n /** example: [{\"key\": 99, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 99\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 503, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 81}, {\"key\": 98, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 98\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 164, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 12}, {\"key\": 97, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 97\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 174, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 81}, {\"key\": 96, \"disabled\": true, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 96\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 914, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 7}, {\"key\": 95, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 95\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 698, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 82}, {\"key\": 94, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 94\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 488, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 14}, {\"key\": 93, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 93\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 580, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 77}, {\"key\": 92, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 92\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 244, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 58}, {\"key\": 91, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 91\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 959, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 66}, {\"key\": 90, \"disabled\": true, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 90\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 958, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 72}, {\"key\": 89, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 89\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 301, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 2}, {\"key\": 88, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 88\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 277, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 12}, {\"key\": 87, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 87\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 810, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 82}, {\"key\": 86, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 86\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 780, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 22}, {\"key\": 85, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 85\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 705, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 12}, {\"key\": 84, \"disabled\": true, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 84\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 203, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 79}, {\"key\": 83, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 83\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 491, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 59}, {\"key\": 82, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 82\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 73, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 100}, {\"key\": 81, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 81\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 406, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 61}, {\"key\": 80, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 80\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 112, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 20}] */\n data: {\n key: number,\ndisabled: boolean,\nhref: string,\navatar: string,\nname: string,\nowner: string,\ndesc: string,\ncallNo: number,\nstatus: string,\nupdatedAt: string,\ncreatedAt: string,\nprogress: number\n }[];\n /** example: 100 */\n total: number;\n /** example: true */\n success: boolean;\n /** example: 20 */\n pageSize: number;\n /** example: 1 */\n current: number\n}\n "
+ },
+ "POST /api/login/outLogin": {
+ "res": {
+ "data": {},
+ "success": true
+ },
+ "query": {
+ "token ": " 123"
+ },
+ "payload": {},
+ "types": "/** POST /api/login/outLogin */\nexport type POST_API_LOGIN_OUT_LOGIN_QUERY = {\n /** example: 123 */\n token : string\n}\n \n\nexport type POST_API_LOGIN_OUT_LOGIN_PAYLOAD = {\n \n}\n \n\nexport type POST_API_LOGIN_OUT_LOGIN_RES = {\n /** example: {} */\n data: {\n \n };\n /** example: true */\n success: boolean\n}\n "
+ },
+ "POST /api/login/account": {
+ "res": {
+ "status": "ok",
+ "type": "account",
+ "currentAuthority": "admin"
+ },
+ "query": {
+ "token ": " 123"
+ },
+ "payload": {
+ "username": "admin",
+ "password": "ant.design",
+ "autoLogin": true,
+ "type": "account"
+ },
+ "types": "/** POST /api/login/account */\nexport type POST_API_LOGIN_ACCOUNT_QUERY = {\n /** example: 123 */\n token : string\n}\n \n\nexport type POST_API_LOGIN_ACCOUNT_PAYLOAD = {\n /** example: admin */\n username: string;\n /** example: ant.design */\n password: string;\n /** example: true */\n autoLogin: boolean;\n /** example: account */\n type: string\n}\n \n\nexport type POST_API_LOGIN_ACCOUNT_RES = {\n /** example: ok */\n status: string;\n /** example: account */\n type: string;\n /** example: admin */\n currentAuthority: string\n}\n "
+ }
+}
diff --git a/types/cache/mock/login.mock.cache.js b/types/cache/mock/login.mock.cache.js
new file mode 100644
index 0000000..6c59e19
--- /dev/null
+++ b/types/cache/mock/login.mock.cache.js
@@ -0,0 +1,324 @@
+module.exports = {
+ 'GET /api/currentUser': {
+ data: {
+ name: 'Serati Ma',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png',
+ userid: '00000001',
+ email: 'antdesign@alipay.com',
+ signature: '海纳百川,有容乃大',
+ title: '交互专家',
+ group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',
+ tags: [
+ { key: '0', label: '很有想法的' },
+ { key: '1', label: '专注设计' },
+ { key: '2', label: '辣~' },
+ { key: '3', label: '大长腿' },
+ { key: '4', label: '川妹子' },
+ { key: '5', label: '海纳百川' },
+ ],
+ notifyCount: 12,
+ unreadCount: 11,
+ country: 'China',
+ geographic: {
+ province: { label: '浙江省', key: '330000' },
+ city: { label: '杭州市', key: '330100' },
+ },
+ address: '西湖区工专路 77 号',
+ phone: '0752-268888888',
+ },
+ },
+ 'GET /api/rule': {
+ data: [
+ {
+ key: 99,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 99',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 503,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 81,
+ },
+ {
+ key: 98,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 98',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 164,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 12,
+ },
+ {
+ key: 97,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 97',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 174,
+ status: '1',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 81,
+ },
+ {
+ key: 96,
+ disabled: true,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 96',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 914,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 7,
+ },
+ {
+ key: 95,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 95',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 698,
+ status: '2',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 82,
+ },
+ {
+ key: 94,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 94',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 488,
+ status: '1',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 14,
+ },
+ {
+ key: 93,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 93',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 580,
+ status: '2',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 77,
+ },
+ {
+ key: 92,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 92',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 244,
+ status: '3',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 58,
+ },
+ {
+ key: 91,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 91',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 959,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 66,
+ },
+ {
+ key: 90,
+ disabled: true,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 90',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 958,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 72,
+ },
+ {
+ key: 89,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 89',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 301,
+ status: '2',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 2,
+ },
+ {
+ key: 88,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 88',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 277,
+ status: '1',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 12,
+ },
+ {
+ key: 87,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 87',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 810,
+ status: '1',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 82,
+ },
+ {
+ key: 86,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 86',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 780,
+ status: '3',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 22,
+ },
+ {
+ key: 85,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 85',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 705,
+ status: '3',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 12,
+ },
+ {
+ key: 84,
+ disabled: true,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 84',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 203,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 79,
+ },
+ {
+ key: 83,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 83',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 491,
+ status: '2',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 59,
+ },
+ {
+ key: 82,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 82',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 73,
+ status: '0',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 100,
+ },
+ {
+ key: 81,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
+ name: 'TradeCode 81',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 406,
+ status: '3',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 61,
+ },
+ {
+ key: 80,
+ disabled: false,
+ href: 'https://ant.design',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
+ name: 'TradeCode 80',
+ owner: '曲丽丽',
+ desc: '这是一段描述',
+ callNo: 112,
+ status: '2',
+ updatedAt: '2022-12-06T05:00:57.040Z',
+ createdAt: '2022-12-06T05:00:57.040Z',
+ progress: 20,
+ },
+ ],
+ total: 100,
+ success: true,
+ pageSize: 20,
+ current: 1,
+ },
+ 'POST /api/login/outLogin': { data: {}, success: true },
+ 'POST /api/login/account': {
+ status: 'ok',
+ type: 'account',
+ currentAuthority: 'admin',
+ },
+};
diff --git a/types/cache/mock/mock.cache.js b/types/cache/mock/mock.cache.js
new file mode 100644
index 0000000..e69de29
diff --git a/types/index.d.ts b/types/index.d.ts
new file mode 100644
index 0000000..2c2805a
--- /dev/null
+++ b/types/index.d.ts
@@ -0,0 +1,120 @@
+export namespace API {
+ /** GET /api/currentUser */
+ export type GET_API_CURRENT_USER_QUERY = {
+ /** example: 123 */
+ token: string;
+ };
+
+ export type GET_API_CURRENT_USER_PAYLOAD = Record;
+
+ export type GET_API_CURRENT_USER_RES = {
+ /** example: {"name": "Serati Ma", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", "userid": "00000001", "email": "antdesign@alipay.com", "signature": "海纳百川,有容乃大", "title": "交互专家", "group": "蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED", "tags": [{"key": "0", "label": "很有想法的"}, {"key": "1", "label": "专注设计"}, {"key": "2", "label": "辣~"}, {"key": "3", "label": "大长腿"}, {"key": "4", "label": "川妹子"}, {"key": "5", "label": "海纳百川"}], "notifyCount": 12, "unreadCount": 11, "country": "China", "geographic": {"province": {"label": "浙江省", "key": "330000"}, "city": {"label": "杭州市", "key": "330100"}}, "address": "西湖区工专路 77 号", "phone": "0752-268888888"} */
+ data: {
+ 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;
+ geographic: {
+ province: {
+ label: string;
+ key: string;
+ };
+ city: {
+ label: string;
+ key: string;
+ };
+ };
+ address: string;
+ phone: string;
+ };
+ };
+
+ /** GET /api/rule */
+ export type GET_API_RULE_QUERY = {
+ /** example: 123 */
+ token: string;
+ /** example: 1 */
+ current: string;
+ /** example: 20 */
+ pageSize: string;
+ };
+
+ export type GET_API_RULE_PAYLOAD = Record;
+
+ export type GET_API_RULE_RES = {
+ /** example: [{"key": 99, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 99", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 503, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 81}, {"key": 98, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 98", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 164, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 97, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 97", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 174, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 81}, {"key": 96, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 96", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 914, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 7}, {"key": 95, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 95", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 698, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 82}, {"key": 94, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 94", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 488, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 14}, {"key": 93, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 93", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 580, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 77}, {"key": 92, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 92", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 244, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 58}, {"key": 91, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 91", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 959, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 66}, {"key": 90, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 90", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 958, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 72}, {"key": 89, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 89", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 301, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 2}, {"key": 88, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 88", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 277, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 87, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 87", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 810, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 82}, {"key": 86, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 86", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 780, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 22}, {"key": 85, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 85", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 705, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 84, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 84", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 203, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 79}, {"key": 83, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 83", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 491, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 59}, {"key": 82, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 82", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 73, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 100}, {"key": 81, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 81", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 406, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 61}, {"key": 80, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 80", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 112, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 20}] */
+ data: {
+ key: number;
+ disabled: boolean;
+ href: string;
+ avatar: string;
+ name: string;
+ owner: string;
+ desc: string;
+ callNo: number;
+ status: string;
+ updatedAt: string;
+ createdAt: string;
+ progress: number;
+ }[];
+ /** example: 100 */
+ total: number;
+ /** example: true */
+ success: boolean;
+ /** example: 20 */
+ pageSize: number;
+ /** example: 1 */
+ current: number;
+ };
+
+ /** POST /api/login/outLogin */
+ export type POST_API_LOGIN_OUT_LOGIN_QUERY = {
+ /** example: 123 */
+ token: string;
+ };
+
+ export type POST_API_LOGIN_OUT_LOGIN_PAYLOAD = Record;
+
+ export type POST_API_LOGIN_OUT_LOGIN_RES = {
+ /** example: {} */
+ data: Record;
+ /** example: true */
+ success: boolean;
+ };
+
+ /** POST /api/login/account */
+ export type POST_API_LOGIN_ACCOUNT_QUERY = {
+ /** example: 123 */
+ token: string;
+ };
+
+ export type POST_API_LOGIN_ACCOUNT_PAYLOAD = {
+ /** example: admin */
+ username: string;
+ /** example: ant.design */
+ password: string;
+ /** example: true */
+ autoLogin: boolean;
+ /** example: account */
+ type: string;
+ };
+
+ export type POST_API_LOGIN_ACCOUNT_RES = {
+ /** example: ok */
+ status: string;
+ /** example: account */
+ type: string;
+ /** example: admin */
+ currentAuthority: string;
+ };
+}