diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 8336e935..00000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -/lambda/ -/scripts -/config -.history -public -dist -.umi -mock \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 3ac39ef6..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: [require.resolve('@umijs/lint/dist/config/eslint')], - globals: { - page: true, - REACT_APP_ENV: true, - }, -}; diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 26b00e2b..57609518 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +github: ant-design # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: ant-design ko_fi: # Replace with a single Ko-fi username diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28ea1630..61bf586a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node_version: [20, 16] + node_version: [20] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v4 @@ -22,7 +22,6 @@ jobs: - uses: oven-sh/setup-bun@v2 - run: bun install - run: bun run lint - - run: bun run tsc - run: bun run build env: CI: true diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index d1457535..bb6d518d 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -9,19 +9,13 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - name: Use Node.js 16.x - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - name: Use Node.js 20 + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20 - run: echo ${{github.ref}} - - run: curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7 - - run: pnpm config set store-dir ~/.pnpm-store - - run: pnpm install --strict-peer-dependencies=false - - run: yarn run test:coverage - env: - CI: true - PROGRESS: none - NODE_ENV: test - NODE_OPTIONS: --max_old_space_size=4096 - - run: bash <(curl -s https://codecov.io/bash) + - uses: oven-sh/setup-bun@v2 + - run: bun install + - run: bun run test:coverage + - uses: codecov/codecov-action@v5 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..00403017 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,30 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - all-blocks + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Bun + uses: oven-sh/setup-bun@v2 + + - name: Install dependencies with Bun + run: bun install + + - name: Build project + run: bun run build + + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist + cname: preview.pro.ant.design diff --git a/.github/workflows/preview-build.yml b/.github/workflows/preview-build.yml index 81c4c60a..ea65e05b 100644 --- a/.github/workflows/preview-build.yml +++ b/.github/workflows/preview-build.yml @@ -12,14 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - name: build run: | yarn - yarn add umi-plugin-pro --save yarn build - name: upload dist artifact diff --git a/.gitignore b/.gitignore index 0fb36707..08cde4d2 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,5 @@ functions/* # screenshot screenshot .firebase -.eslintcache build diff --git a/.lintstagedrc b/.lintstagedrc index 47b3ab64..1c2023c8 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,6 +1,5 @@ { - "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js", - "**/*.{js,jsx,tsx,ts,less,md,json,yml}": [ - "prettier --write" + "**/*.{js,jsx,tsx,ts,md,css,less,json}": [ + "npx @biomejs/biome check --write" ] } diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..521a9f7c --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 7999ccda..00000000 --- a/.prettierignore +++ /dev/null @@ -1,22 +0,0 @@ -**/*.svg -.umi -.umi-production -/dist -.dockerignore -.DS_Store -.eslintignore -*.png -*.toml -docker -.editorconfig -Dockerfile* -.gitignore -.prettierignore -LICENSE -.eslintcache -*.lock -yarn-error.log -.history -CNAME -/build -/public diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 3447a1af..00000000 --- a/.prettierrc.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - singleQuote: true, - trailingComma: 'all', - printWidth: 100, - proseWrap: 'never', - endOfLine: 'lf', - overrides: [ - { - files: '.prettierrc', - options: { - parser: 'json', - }, - }, - { - files: 'document.ejs', - options: { - parser: 'html', - }, - }, - ], -}; diff --git a/README.ar-DZ.md b/README.ar-DZ.md index c563b915..be768ed9 100644 --- a/README.ar-DZ.md +++ b/README.ar-DZ.md @@ -7,7 +7,11 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | [🇷🇺]( حل UI جاهز لتطبيقات المؤسسات كنموذج معياري لـ React. -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.es-ES.md b/README.es-ES.md index d6abdfeb..357ef18b 100644 --- a/README.es-ES.md +++ b/README.es-ES.md @@ -6,7 +6,11 @@ Idioma: 🇺🇸 | [🇨🇳](./README.zh-CN.md) | [🇷🇺](./README.ru-RU.md) Una solución de IU listo para usar para aplicaciones empresariales como plantilla de React. -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.fr-FR.md b/README.fr-FR.md index 928102b8..c45a6935 100644 --- a/README.fr-FR.md +++ b/README.fr-FR.md @@ -6,7 +6,11 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | [🇷🇺]( Une solution UI prête à l'emploi pour des applications d'entreprise en tant que modèle React. -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.ja-JP.md b/README.ja-JP.md index 472f683d..677ccc72 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -6,7 +6,11 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | [🇷🇺]( 独創的な業務システムの UI を解決するための React ボイラープレート。 -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.md b/README.md index 139ca256..37ebbd72 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Language : 🇺🇸 | [🇨🇳](./README.zh-CN.md) | [🇷🇺](./README.ru-RU.md) | [🇹🇷](./README.tr-TR.md) | [🇯🇵](./README.ja-JP.md) | [🇫🇷](./README.fr-FR.md) | [🇵🇹](./README.pt-BR.md) | [🇸🇦](./README.ar-DZ.md) | [🇪🇸](./README.es-ES.md) +Language: 🇺🇸 | [🇨🇳](./README.zh-CN.md) | [🇷🇺](./README.ru-RU.md) | [🇹🇷](./README.tr-TR.md) | [🇯🇵](./README.ja-JP.md) | [🇫🇷](./README.fr-FR.md) | [🇵🇹](./README.pt-BR.md) | [🇸🇦](./README.ar-DZ.md) | [🇪🇸](./README.es-ES.md)

Ant Design Pro

@@ -6,7 +6,11 @@ Language : 🇺🇸 | [🇨🇳](./README.zh-CN.md) | [🇷🇺](./README.ru-RU. An out-of-box UI solution for enterprise applications as a React boilerplate. -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +[![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label)](https://ant.design/) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) @@ -18,14 +22,6 @@ An out-of-box UI solution for enterprise applications as a React boilerplate. - ChangeLog: http://pro.ant.design/docs/changelog - FAQ: http://pro.ant.design/docs/faq -## 5.0 is out! 🎉🎉🎉 - -[Ant Design Pro 5.0.0](https://github.com/ant-design/ant-design-pro/issues/8656) - -## Translation Recruitment :loudspeaker: - -We need your help: https://github.com/ant-design/ant-design-pro/issues/120 - ## Features - :bulb: **TypeScript**: A language for application-scale JavaScript diff --git a/README.pt-BR.md b/README.pt-BR.md index 55be2901..78b24f3d 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -6,7 +6,11 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | [🇷🇺]( Uma solução de UI pronta para aplicações corporativos na forma de um boilerplate React. -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.ru-RU.md b/README.ru-RU.md index 2d5b7af0..5806009f 100644 --- a/README.ru-RU.md +++ b/README.ru-RU.md @@ -6,7 +6,11 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | 🇷🇺 | UI-решение "из коробки" для корпоративных приложений как React boilerplate -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.tr-TR.md b/README.tr-TR.md index 45481596..0756c0f1 100644 --- a/README.tr-TR.md +++ b/README.tr-TR.md @@ -6,7 +6,11 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | [🇷🇺]( React ile kurumsal uygulamalar için taslak olarak geliştirilmiş kullanıma hazır bir UI çözümü. -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) diff --git a/README.zh-CN.md b/README.zh-CN.md index 497fb2be..8bc0f1d6 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -6,7 +6,11 @@ Language : [🇺🇸](./README.md) | 🇨🇳 | [🇷🇺](./README.ru-RU.md) | 开箱即用的中台前端/设计解决方案。 -[![Node CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) [![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) +[![CI](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/ci.yml) +[![Preview Deploy](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml/badge.svg)](https://github.com/ant-design/ant-design-pro/actions/workflows/preview-deploy.yml) +[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) +[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev) +![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) @@ -20,7 +24,7 @@ Language : [🇺🇸](./README.md) | 🇨🇳 | [🇷🇺](./README.ru-RU.md) | ## 5.0 已经发布! 🎉🎉🎉 -[Ant Design Pro 5.0.0](https://github.com/ant-design/ant-design-pro/issues/8656) +[Ant Design Pro 5.0](https://github.com/ant-design/ant-design-pro/issues/8656) ## 特性 diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..2f4e4e0c --- /dev/null +++ b/biome.json @@ -0,0 +1,48 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "files": { + "ignoreUnknown": true, + "includes": [ + "**/*", + "!**/.umi/**", + "!**/.umi-production/**", + "!**/.umi-test/**", + "!**/.umi-test-production/**", + "!**/src/services/**", + "!**/mock/**", + "!**/dist/**", + "!**/server/**", + "!**/public/**", + "!**/coverage/**", + "!**/node_modules/**", + "!biome.json" + ] + }, + "formatter": { + "enabled": true, + "indentStyle": "space" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noExplicitAny": "off" + }, + "correctness": { + "useExhaustiveDependencies": "off" + }, + "a11y": { + "noStaticElementInteractions": "off", + "useValidAnchor": "off", + "useKeyWithClickEvents": "off" + } + } + }, + "javascript": { + "jsxRuntime": "reactClassic", + "formatter": { + "quoteStyle": "single" + } + } +} diff --git a/config/config.ts b/config/config.ts index ed5df200..dfd06bc3 100644 --- a/config/config.ts +++ b/config/config.ts @@ -1,8 +1,10 @@ // https://umijs.org/config/ + +import { join } from 'node:path'; import { defineConfig } from '@umijs/max'; -import { join } from 'path'; import defaultSettings from './defaultSettings'; import proxy from './proxy'; + import routes from './routes'; const { REACT_APP_ENV = 'dev' } = process.env; @@ -43,13 +45,9 @@ export default defineConfig({ * @name 主题的配置 * @description 虽然叫主题,但是其实只是 less 的变量设置 * @doc antd的主题设置 https://ant.design/docs/react/customize-theme-cn - * @doc umi 的theme 配置 https://umijs.org/docs/api/config#theme + * @doc umi 的 theme 配置 https://umijs.org/docs/api/config#theme */ - theme: { - // 如果不想要 configProvide 动态设置主题需要把这个设置为 default - // 只有设置为 variable, 才能使用 configProvide 动态设置主色调 - 'root-entry-name': 'variable', - }, + // theme: { '@primary-color': '#1DA57A' } /** * @name moment 的国际化配置 * @description 如果对国际化没有要求,打开之后能减少js的包大小 @@ -115,7 +113,17 @@ export default defineConfig({ * @description 内置了 babel import 插件 * @doc https://umijs.org/docs/max/antd#antd */ - antd: {}, + antd: { + appConfig: {}, + configProvider: { + theme: { + cssVar: true, + token: { + fontFamily: 'AlibabaSans, sans-serif', + }, + }, + }, + }, /** * @name 网络请求配置 * @description 它基于 axios 和 ahooks 的 useRequest 提供了一套统一的网络请求和错误处理方案。 @@ -153,10 +161,14 @@ export default defineConfig({ }, { requestLibPath: "import { request } from '@umijs/max'", - schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json', + schemaPath: + 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json', projectName: 'swagger', }, ], + mock: { + include: ['mock/**/*', 'src/pages/**/_mock.ts'], + }, /** * @name 是否开启 mako * @description 使用 mako 极速研发 @@ -165,4 +177,5 @@ export default defineConfig({ mako: {}, esbuildMinifyIIFE: true, requestRecord: {}, + exportStatic: {}, }); diff --git a/config/routes.ts b/config/routes.ts index 9a68bcb2..171c4cbd 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -18,7 +18,7 @@ export default [ { name: 'login', path: '/user/login', - component: './User/Login', + component: './user/login', }, ], }, @@ -49,7 +49,7 @@ export default [ name: 'list.table-list', icon: 'table', path: '/list', - component: './TableList', + component: './table-list', }, { path: '/', diff --git a/jest.config.ts b/jest.config.ts index 2bf149ca..99051c41 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,6 +1,6 @@ import { configUmiAlias, createConfig } from '@umijs/max/test'; -export default async () => { +export default async (): Promise => { const config = await configUmiAlias({ ...createConfig({ target: 'browser', diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 197bee5d..00000000 --- a/jsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - } -} diff --git a/mock/listTableList.ts b/mock/listTableList.ts index ef76e0f3..dd88bf91 100644 --- a/mock/listTableList.ts +++ b/mock/listTableList.ts @@ -1,6 +1,6 @@ +import { parse } from 'node:url'; import dayjs from 'dayjs'; -import { Request, Response } from 'express'; -import { parse } from 'url'; +import type { Request, Response } from 'express'; // mock tableListDataSource const genList = (current: number, pageSize: number) => { @@ -34,7 +34,10 @@ let tableListDataSource = genList(1, 100); function getRule(req: Request, res: Response, u: string) { let realUrl = u; - if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { + if ( + !realUrl || + Object.prototype.toString.call(realUrl) !== '[object String]' + ) { realUrl = req.url; } const { current = 1, pageSize = 10 } = req.query; @@ -53,8 +56,8 @@ function getRule(req: Request, res: Response, u: string) { dataSource = dataSource.sort((prev, next) => { let sortNumber = 0; (Object.keys(sorter) as Array).forEach((key) => { - let nextSort = next?.[key] as number; - let preSort = prev?.[key] as number; + const nextSort = next?.[key] as number; + const preSort = prev?.[key] as number; if (sorter[key] === 'descend') { if (preSort - nextSort > 0) { sortNumber += -1; @@ -78,21 +81,25 @@ function getRule(req: Request, res: Response, u: string) { }; if (Object.keys(filter).length > 0) { dataSource = dataSource.filter((item) => { - return (Object.keys(filter) as Array).some((key) => { - if (!filter[key]) { - return true; - } - if (filter[key].includes(`${item[key]}`)) { - return true; - } - return false; - }); + return (Object.keys(filter) as Array).some( + (key) => { + if (!filter[key]) { + return true; + } + if (filter[key].includes(`${item[key]}`)) { + return true; + } + return false; + }, + ); }); } } if (params.name) { - dataSource = dataSource.filter((data) => data?.name?.includes(params.name || '')); + dataSource = dataSource.filter((data) => + data?.name?.includes(params.name || ''), + ); } const result = { data: dataSource, @@ -107,17 +114,21 @@ function getRule(req: Request, res: Response, u: string) { function postRule(req: Request, res: Response, u: string, b: Request) { let realUrl = u; - if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { + if ( + !realUrl || + Object.prototype.toString.call(realUrl) !== '[object String]' + ) { realUrl = req.url; } - const body = (b && b.body) || req.body; + const body = b?.body || req.body; const { method, name, desc, key } = body; switch (method) { - /* eslint no-case-declarations:0 */ case 'delete': - tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1); + tableListDataSource = tableListDataSource.filter( + (item) => key.indexOf(item.key) === -1, + ); break; case 'post': (() => { diff --git a/mock/monitor.mock.ts b/mock/monitor.mock.ts new file mode 100644 index 00000000..dcd1b179 --- /dev/null +++ b/mock/monitor.mock.ts @@ -0,0 +1,14 @@ +import type { Request, Response } from 'express'; +import mockjs from 'mockjs'; + +const getTags = (_: Request, res: Response) => { + return res.json({ + data: mockjs.mock({ + 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }], + }), + }); +}; + +export default { + 'GET /api/tags': getTags, +}; diff --git a/mock/notices.ts b/mock/notices.ts index 616c9218..d8963113 100644 --- a/mock/notices.ts +++ b/mock/notices.ts @@ -1,6 +1,6 @@ -import { Request, Response } from 'express'; +import type { Request, Response } from 'express'; -const getNotices = (req: Request, res: Response) => { +const getNotices = (_req: Request, res: Response) => { res.json({ data: [ { @@ -85,7 +85,8 @@ const getNotices = (req: Request, res: Response) => { { id: '000000010', title: '第三方紧急代码变更', - description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', + description: + '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', extra: '马上到期', status: 'urgent', type: 'event', @@ -101,7 +102,8 @@ const getNotices = (req: Request, res: Response) => { { id: '000000012', title: 'ABCD 版本发布', - description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', + description: + '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', extra: '进行中', status: 'processing', type: 'event', diff --git a/mock/requestRecord.mock.js b/mock/requestRecord.mock.js index 6c59e198..7c8f0de5 100644 --- a/mock/requestRecord.mock.js +++ b/mock/requestRecord.mock.js @@ -2,7 +2,8 @@ module.exports = { 'GET /api/currentUser': { data: { name: 'Serati Ma', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', userid: '00000001', email: 'antdesign@alipay.com', signature: '海纳百川,有容乃大', @@ -33,7 +34,8 @@ module.exports = { key: 99, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 99', owner: '曲丽丽', desc: '这是一段描述', @@ -47,7 +49,8 @@ module.exports = { key: 98, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 98', owner: '曲丽丽', desc: '这是一段描述', @@ -61,7 +64,8 @@ module.exports = { key: 97, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 97', owner: '曲丽丽', desc: '这是一段描述', @@ -75,7 +79,8 @@ module.exports = { key: 96, disabled: true, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 96', owner: '曲丽丽', desc: '这是一段描述', @@ -89,7 +94,8 @@ module.exports = { key: 95, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 95', owner: '曲丽丽', desc: '这是一段描述', @@ -103,7 +109,8 @@ module.exports = { key: 94, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 94', owner: '曲丽丽', desc: '这是一段描述', @@ -117,7 +124,8 @@ module.exports = { key: 93, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 93', owner: '曲丽丽', desc: '这是一段描述', @@ -131,7 +139,8 @@ module.exports = { key: 92, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 92', owner: '曲丽丽', desc: '这是一段描述', @@ -145,7 +154,8 @@ module.exports = { key: 91, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 91', owner: '曲丽丽', desc: '这是一段描述', @@ -159,7 +169,8 @@ module.exports = { key: 90, disabled: true, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 90', owner: '曲丽丽', desc: '这是一段描述', @@ -173,7 +184,8 @@ module.exports = { key: 89, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 89', owner: '曲丽丽', desc: '这是一段描述', @@ -187,7 +199,8 @@ module.exports = { key: 88, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 88', owner: '曲丽丽', desc: '这是一段描述', @@ -201,7 +214,8 @@ module.exports = { key: 87, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 87', owner: '曲丽丽', desc: '这是一段描述', @@ -215,7 +229,8 @@ module.exports = { key: 86, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 86', owner: '曲丽丽', desc: '这是一段描述', @@ -229,7 +244,8 @@ module.exports = { key: 85, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 85', owner: '曲丽丽', desc: '这是一段描述', @@ -243,7 +259,8 @@ module.exports = { key: 84, disabled: true, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 84', owner: '曲丽丽', desc: '这是一段描述', @@ -257,7 +274,8 @@ module.exports = { key: 83, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 83', owner: '曲丽丽', desc: '这是一段描述', @@ -271,7 +289,8 @@ module.exports = { key: 82, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 82', owner: '曲丽丽', desc: '这是一段描述', @@ -285,7 +304,8 @@ module.exports = { key: 81, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', name: 'TradeCode 81', owner: '曲丽丽', desc: '这是一段描述', @@ -299,7 +319,8 @@ module.exports = { key: 80, disabled: false, href: 'https://ant.design', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + avatar: + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', name: 'TradeCode 80', owner: '曲丽丽', desc: '这是一段描述', diff --git a/mock/user.ts b/mock/user.ts index 75edd340..06125bf5 100644 --- a/mock/user.ts +++ b/mock/user.ts @@ -1,4 +1,4 @@ -import { Request, Response } from 'express'; +import type { Request, Response } from 'express'; const waitTime = (time: number = 100) => { return new Promise((resolve) => { @@ -8,7 +8,7 @@ const waitTime = (time: number = 100) => { }); }; -async function getFakeCaptcha(req: Request, res: Response) { +async function getFakeCaptcha(_req: Request, res: Response) { await waitTime(2000); return res.json('captcha-xxx'); } @@ -20,7 +20,8 @@ const { ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION } = process.env; * current user access, if is '', user need login * 如果是 pro 的预览,默认是有权限的 */ -let access = ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ? 'admin' : ''; +let access = + ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ? 'admin' : ''; const getAccess = () => { return access; @@ -29,7 +30,7 @@ const getAccess = () => { // 代码中会兼容本地 service mock 以及部署站点的静态数据 export default { // 支持值为 Object 和 Array - 'GET /api/currentUser': (req: Request, res: Response) => { + 'GET /api/currentUser': (_req: Request, res: Response) => { if (!getAccess()) { res.status(401).send({ data: { @@ -45,7 +46,8 @@ export default { success: true, data: { name: 'Serati Ma', - avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png', + avatar: + 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png', userid: '00000001', email: 'antdesign@alipay.com', signature: '海纳百川,有容乃大', @@ -155,14 +157,14 @@ export default { }); access = 'guest'; }, - 'POST /api/login/outLogin': (req: Request, res: Response) => { + 'POST /api/login/outLogin': (_req: Request, res: Response) => { access = ''; res.send({ data: {}, success: true }); }, - 'POST /api/register': (req: Request, res: Response) => { + 'POST /api/register': (_req: Request, res: Response) => { res.send({ status: 'ok', currentAuthority: 'user', success: true }); }, - 'GET /api/500': (req: Request, res: Response) => { + 'GET /api/500': (_req: Request, res: Response) => { res.status(500).send({ timestamp: 1513932555104, status: 500, @@ -171,7 +173,7 @@ export default { path: '/base/category/list', }); }, - 'GET /api/404': (req: Request, res: Response) => { + 'GET /api/404': (_req: Request, res: Response) => { res.status(404).send({ timestamp: 1513932643431, status: 404, @@ -180,7 +182,7 @@ export default { path: '/base/category/list/2121212', }); }, - 'GET /api/403': (req: Request, res: Response) => { + 'GET /api/403': (_req: Request, res: Response) => { res.status(403).send({ timestamp: 1513932555104, status: 403, @@ -189,7 +191,7 @@ export default { path: '/base/category/list', }); }, - 'GET /api/401': (req: Request, res: Response) => { + 'GET /api/401': (_req: Request, res: Response) => { res.status(401).send({ timestamp: 1513932555104, status: 401, diff --git a/package.json b/package.json index 88424cc5..d56b6b87 100644 --- a/package.json +++ b/package.json @@ -13,15 +13,11 @@ "i18n-remove": "pro i18n-remove --locale=zh-CN --write", "postinstall": "max setup", "jest": "jest", - "lint": "npm run lint:js && npm run lint:prettier && npm run tsc", + "lint": "npm run biome:lint && npm run tsc", "lint-staged": "lint-staged", - "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", - "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src ", - "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", - "lint:prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\" --end-of-line auto", + "biome:lint": "npx @biomejs/biome lint", "openapi": "max openapi", "prepare": "husky", - "prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\"", "preview": "npm run build && max preview --port 8000", "record": "cross-env NODE_ENV=development REACT_APP_ENV=test max record --scene=login", "serve": "umi-serve", @@ -39,15 +35,15 @@ "defaults" ], "dependencies": { - "@ant-design/icons": "^4.8.3", + "@ant-design/icons": "^5.6.1", "@ant-design/pro-components": "^2.7.19", - "antd": "^5.21.2", + "antd": "^5.25.4", + "@ant-design/v5-patch-for-react-19": "^1.0.3", "antd-style": "^3.7.0", "classnames": "^2.5.1", "dayjs": "^1.11.13", - "querystring": "^0.2.1", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.1.0", + "react-dom": "^19.1.0" }, "devDependencies": { "@ant-design/pro-cli": "^3.3.0", @@ -55,33 +51,30 @@ "@commitlint/config-conventional": "^19.5.0", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.0.1", - "@types/classnames": "^2.3.1", - "@types/express": "^4.17.21", - "@types/history": "^5.0.0", - "@types/jest": "^29.5.13", + "@types/express": "^5.0.3", + "@types/jest": "^30.0.0", "@types/lodash": "^4.17.10", - "@types/react": "^18.3.11", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.1.5", + "@types/react-dom": "^19.1.5", "@types/react-helmet": "^6.1.11", - "@umijs/lint": "^4.3.24", "@umijs/max": "^4.3.24", "cross-env": "^7.0.3", - "eslint": "^8.57.1", "express": "^4.21.1", "gh-pages": "^6.1.1", - "husky": "^9.1.6", - "jest": "^29.7.0", + "husky": "^9.1.7", + "jest": "^30.0.4", "jest-environment-jsdom": "^29.7.0", - "lint-staged": "^15.2.10", + "lint-staged": "^16.1.2", "mockjs": "^1.1.0", - "prettier": "^3.3.3", "ts-node": "^10.9.2", "typescript": "^5.6.3", "umi-presets-pro": "^2.0.3", - "umi-serve": "^1.9.11" + "umi-serve": "^1.9.11", + "@biomejs/biome": "^2.0.6", + "@types/node": "^24.0.10" }, "engines": { - "node": ">=12.0.0" + "node": ">=20.0.0" }, "create-umi": { "ignoreScript": [ diff --git a/public/scripts/loading.js b/public/scripts/loading.js index c1ced54c..a4fdb3d5 100644 --- a/public/scripts/loading.js +++ b/public/scripts/loading.js @@ -2,7 +2,7 @@ * loading 占位 * 解决首次加载时白屏的问题 */ - (function () { +(function () { const _root = document.querySelector('#root'); if (_root && _root.innerHTML === '') { _root.innerHTML = ` diff --git a/src/access.ts b/src/access.ts index d527afb6..373d9fa6 100644 --- a/src/access.ts +++ b/src/access.ts @@ -1,7 +1,9 @@ /** * @see https://umijs.org/docs/max/access#access * */ -export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) { +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 index 679b0c5f..599b8111 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,19 +1,26 @@ -import { AvatarDropdown, AvatarName, Footer, Question, SelectLang } from '@/components'; -import { currentUser as queryCurrentUser } from '@/services/ant-design-pro/api'; 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 type { RequestConfig, RunTimeLayoutConfig } from '@umijs/max'; import { history, Link } from '@umijs/max'; import React from 'react'; +import { + AvatarDropdown, + AvatarName, + Footer, + Question, + SelectLang, +} from '@/components'; +import { currentUser as queryCurrentUser } from '@/services/ant-design-pro/api'; import defaultSettings from '../config/defaultSettings'; import { errorConfig } from './requestErrorConfig'; +import '@ant-design/v5-patch-for-react-19'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; /** - * @see https://umijs.org/zh-CN/plugins/plugin-initial-state + * @see https://umijs.org/docs/api/runtime-config#getinitialstate * */ export async function getInitialState(): Promise<{ settings?: Partial; @@ -27,14 +34,18 @@ export async function getInitialState(): Promise<{ skipErrorHandler: true, }); return msg.data; - } catch (error) { + } catch (_error) { history.push(loginPath); } return undefined; }; // 如果不是登录页面,执行 const { location } = history; - if (location.pathname !== loginPath) { + if ( + ![loginPath, '/user/register', '/user/register-result'].includes( + location.pathname, + ) + ) { const currentUser = await fetchUserInfo(); return { fetchUserInfo, @@ -49,9 +60,15 @@ export async function getInitialState(): Promise<{ } // ProLayout 支持的api https://procomponents.ant.design/components/layout -export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { +export const layout: RunTimeLayoutConfig = ({ + initialState, + setInitialState, +}) => { return { - actionsRender: () => [, ], + actionsRender: () => [ + , + , + ], avatarProps: { src: initialState?.currentUser?.avatar, title: , @@ -132,6 +149,7 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = * 它基于 axios 和 ahooks 的 useRequest 提供了一套统一的网络请求和错误处理方案。 * @doc https://umijs.org/docs/max/request#配置 */ -export const request = { +export const request: RequestConfig = { + baseURL: 'https://proapi.azurewebsites.net', ...errorConfig, }; diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index f204ac29..64359c6a 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -8,6 +8,7 @@ const Footer: React.FC = () => { style={{ background: 'none', }} + copyright="Powered by Ant Desgin" links={[ { key: 'Ant Design Pro', diff --git a/src/components/HeaderDropdown/index.tsx b/src/components/HeaderDropdown/index.tsx index b01944ca..b77a8ded 100644 --- a/src/components/HeaderDropdown/index.tsx +++ b/src/components/HeaderDropdown/index.tsx @@ -1,6 +1,6 @@ import { Dropdown } from 'antd'; -import { createStyles } from 'antd-style'; import type { DropDownProps } from 'antd/es/dropdown'; +import { createStyles } from 'antd-style'; import classNames from 'classnames'; import React from 'react'; @@ -16,12 +16,26 @@ const useStyles = createStyles(({ token }) => { export type HeaderDropdownProps = { overlayClassName?: string; - placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter'; + placement?: + | 'bottomLeft' + | 'bottomRight' + | 'topLeft' + | 'topCenter' + | 'topRight' + | 'bottomCenter'; } & Omit; -const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => { +const HeaderDropdown: React.FC = ({ + overlayClassName: cls, + ...restProps +}) => { const { styles } = useStyles(); - return ; + return ( + + ); }; export default HeaderDropdown; diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index fe30b2f9..eedb7185 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -1,12 +1,15 @@ -import { outLogin } from '@/services/ant-design-pro/api'; -import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; +import { + LogoutOutlined, + SettingOutlined, + UserOutlined, +} from '@ant-design/icons'; import { history, useModel } from '@umijs/max'; -import { Spin } from 'antd'; import type { MenuProps } from 'antd'; +import { Spin } from 'antd'; import { createStyles } from 'antd-style'; -import { stringify } from 'querystring'; import React from 'react'; import { flushSync } from 'react-dom'; +import { outLogin } from '@/services/ant-design-pro/api'; import HeaderDropdown from '../HeaderDropdown'; export type GlobalHeaderRightProps = { @@ -38,7 +41,10 @@ const useStyles = createStyles(({ token }) => { }; }); -export const AvatarDropdown: React.FC = ({ menu, children }) => { +export const AvatarDropdown: React.FC = ({ + menu, + children, +}) => { /** * 退出登录,并且将当前的 url 保存 */ @@ -46,15 +52,16 @@ export const AvatarDropdown: React.FC = ({ menu, childre await outLogin(); const { search, pathname } = window.location; const urlParams = new URL(window.location.href).searchParams; + const searchParams = new URLSearchParams({ + redirect: pathname + search, + }); /** 此方法会跳转到 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, - }), + search: searchParams.toString(), }); } }; diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 20a78311..5d88fc4f 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -1,10 +1,9 @@ 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 = () => { +export const SelectLang: React.FC = () => { return ( { ); }; -export const Question = () => { +export const Question: React.FC = () => { return ( -
{ - window.open('https://pro.ant.design/docs/getting-started'); + display: 'inline-flex', + padding: '4px', + fontSize: '18px', + color: 'inherit', }} > -
+ ); }; diff --git a/src/global.less b/src/global.less index a9a0c51b..1959f4f7 100644 --- a/src/global.less +++ b/src/global.less @@ -1,12 +1,53 @@ +@font-face { + font-family: "AlibabaSans"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url("//mdn.alipayobjects.com/huamei_iwk9zp/afts/file/A*1GSgSYDD_aIAAAAAQsAAAAgAegCCAQ/AlibabaSans-Light.woff2") + format("woff2"); +} +@font-face { + font-family: "AlibabaSans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("//mdn.alipayobjects.com/huamei_iwk9zp/afts/file/A*2zEUQqnPNesAAAAAQtAAAAgAegCCAQ/AlibabaSans-Regular.woff2") + format("woff2"); +} +@font-face { + font-family: "AlibabaSans"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("//mdn.alipayobjects.com/huamei_iwk9zp/afts/file/A*E_cxRbMlZqUAAAAAQuAAAAgAegCCAQ/AlibabaSans-Medium.woff2") + format("woff2"); +} +@font-face { + font-family: "AlibabaSans"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("//mdn.alipayobjects.com/huamei_iwk9zp/afts/file/A*E_cxRbMlZqUAAAAAQuAAAAgAegCCAQ/AlibabaSans-Bold.woff2") + format("woff2"); +} +@font-face { + font-family: "AlibabaSans"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("//mdn.alipayobjects.com/huamei_iwk9zp/afts/file/A*E_cxRbMlZqUAAAAAQuAAAAgAegCCAQ/AlibabaSans-Heavy.woff2") + format("woff2"); +} + 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'; + font-family: + AlibabaSans, -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 { diff --git a/src/global.style.ts b/src/global.style.ts new file mode 100644 index 00000000..193148ff --- /dev/null +++ b/src/global.style.ts @@ -0,0 +1,42 @@ +import { createStyles } from 'antd-style'; + +const useStyles = createStyles(() => { + return { + colorWeak: { + filter: 'invert(80%)', + }, + 'ant-layout': { + minHeight: '100vh', + }, + 'ant-pro-sider.ant-layout-sider.ant-pro-sider-fixed': { + left: 'unset', + }, + canvas: { + display: 'block', + }, + body: { + textRendering: 'optimizeLegibility', + WebkitFontSmoothing: 'antialiased', + MozOsxFontSmoothing: 'grayscale', + }, + 'ul,ol': { + listStyle: 'none', + }, + '@media(max-width: 768px)': { + 'ant-table': { + width: '100%', + overflowX: 'auto', + '&-thead > tr, &-tbody > tr': { + '> th, > td': { + whiteSpace: 'pre', + '> span': { + display: 'block', + }, + }, + }, + }, + }, + }; +}); + +export default useStyles; diff --git a/src/global.tsx b/src/global.tsx index afa1fab5..6097b546 100644 --- a/src/global.tsx +++ b/src/global.tsx @@ -32,7 +32,7 @@ if (pwa) { 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; + const worker = e.detail?.waiting; if (!worker) { return true; } @@ -67,7 +67,9 @@ if (pwa) { ); notification.open({ message: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated' }), - description: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated.hint' }), + description: useIntl().formatMessage({ + id: 'app.pwa.serviceworker.updated.hint', + }), btn, key, onClose: async () => null, diff --git a/src/loading.tsx b/src/loading.tsx new file mode 100644 index 00000000..fd4f25bb --- /dev/null +++ b/src/loading.tsx @@ -0,0 +1,7 @@ +import { Skeleton } from 'antd'; + +const Loading: React.FC = () => ( + +); + +export default Loading; diff --git a/src/locales/bn-BD/pages.ts b/src/locales/bn-BD/pages.ts index 07e0cf16..7eb01bcb 100644 --- a/src/locales/bn-BD/pages.ts +++ b/src/locales/bn-BD/pages.ts @@ -2,7 +2,8 @@ export default { 'pages.layouts.userLayout.title': 'পিঁপড়া ডিজাইন হচ্ছে সিহু জেলার সবচেয়ে প্রভাবশালী ওয়েব ডিজাইনের স্পেসিফিকেশন', 'pages.login.accountLogin.tab': 'অ্যাকাউন্টে লগইন', - 'pages.login.accountLogin.errorMessage': 'ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড(admin/ant.design)', + 'pages.login.accountLogin.errorMessage': + 'ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড(admin/ant.design)', 'pages.login.failure': 'লগইন ব্যর্থ হয়েছে। আবার চেষ্টা করুন!', 'pages.login.success': 'সফল লগইন!', 'pages.login.username.placeholder': 'ব্যবহারকারীর নাম: admin or user', @@ -36,7 +37,8 @@ export default { 'pages.searchTable.updateForm.ruleName.nameLabel': 'বিধি নাম', 'pages.searchTable.updateForm.ruleName.nameRules': 'বিধির নাম লিখুন!', 'pages.searchTable.updateForm.ruleDesc.descLabel': 'বিধির বিবরণ', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'কমপক্ষে পাঁচটি অক্ষর লিখুন', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': + 'কমপক্ষে পাঁচটি অক্ষর লিখুন', 'pages.searchTable.updateForm.ruleDesc.descRules': 'কমপক্ষে পাঁচটি অক্ষরের একটি বিধান বিবরণ লিখুন!', 'pages.searchTable.updateForm.ruleProps.title': 'বৈশিষ্ট্য কনফিগার করুন', @@ -45,7 +47,8 @@ export default { 'pages.searchTable.updateForm.ruleProps.typeLabel': 'বিধি প্রকার', 'pages.searchTable.updateForm.schedulingPeriod.title': 'সময়সূচী নির্ধারণ করুন', 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'শুরুর সময়', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'একটি শুরুর সময় চয়ন করুন!', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': + 'একটি শুরুর সময় চয়ন করুন!', 'pages.searchTable.titleDesc': 'বর্ণনা', 'pages.searchTable.ruleName': 'বিধি নাম প্রয়োজন', 'pages.searchTable.titleCallNo': 'পরিষেবা কল সংখ্যা', diff --git a/src/locales/bn-BD/settingDrawer.ts b/src/locales/bn-BD/settingDrawer.ts index 2bd1d045..13e6b5c3 100644 --- a/src/locales/bn-BD/settingDrawer.ts +++ b/src/locales/bn-BD/settingDrawer.ts @@ -25,7 +25,8 @@ export default { 'app.setting.othersettings': 'অন্যান্য সেটিংস্', 'app.setting.weakmode': 'দুর্বল মোড', 'app.setting.copy': 'সেটিং কপি করুন', - 'app.setting.copyinfo': 'সাফল্যের অনুলিপি করুন - প্রতিস্থাপন করুন: src/models/setting.js', + '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 index 93cf904a..2882c2e8 100644 --- a/src/locales/bn-BD/settings.ts +++ b/src/locales/bn-BD/settings.ts @@ -53,7 +53,8 @@ export default { 'app.settings.notification.messages-description': 'সিস্টেম বার্তাগুলি স্টেশন চিঠির আকারে জানানো হবে', 'app.settings.notification.todo': 'করণীয় বিজ্ঞপ্তি', - 'app.settings.notification.todo-description': 'করণীয় তালিকাটি স্টেশন থেকে চিঠি আকারে জানানো হবে', + '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 index 3c8ed65c..93276ed7 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -13,7 +13,8 @@ export default { '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', + 'app.welcome.link.block-list': + 'Quickly build standard, pages based on `block` development', ...globalHeader, ...menu, ...settingDrawer, diff --git a/src/locales/en-US/globalHeader.ts b/src/locales/en-US/globalHeader.ts index 60b6d4ec..81d386f3 100644 --- a/src/locales/en-US/globalHeader.ts +++ b/src/locales/en-US/globalHeader.ts @@ -5,7 +5,8 @@ export default { '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.notification.empty': + 'You have viewed all notifications.', 'component.globalHeader.message': 'Message', 'component.globalHeader.message.empty': 'You have viewed all messsages.', 'component.globalHeader.event': 'Event', diff --git a/src/locales/en-US/pages.ts b/src/locales/en-US/pages.ts index 3334c030..34f2cb83 100644 --- a/src/locales/en-US/pages.ts +++ b/src/locales/en-US/pages.ts @@ -2,7 +2,8 @@ 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.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', @@ -24,7 +25,8 @@ export default { '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.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', @@ -34,18 +36,22 @@ export default { '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.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.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.title': + 'Set Scheduling Period', 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Starting Time', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Please choose a start 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', diff --git a/src/locales/en-US/pwa.ts b/src/locales/en-US/pwa.ts index ed8d199e..1256c026 100644 --- a/src/locales/en-US/pwa.ts +++ b/src/locales/en-US/pwa.ts @@ -1,6 +1,7 @@ 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.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 index f4643515..bbfeb3d4 100644 --- a/src/locales/en-US/settingDrawer.ts +++ b/src/locales/en-US/settingDrawer.ts @@ -25,7 +25,8 @@ export default { '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.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 index 822dd003..36ed89c9 100644 --- a/src/locales/en-US/settings.ts +++ b/src/locales/en-US/settings.ts @@ -44,7 +44,8 @@ export default { '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.dingding-description': + 'Currently unbound DingTalk account', 'app.settings.binding.bind': 'Bind', 'app.settings.notification.password': 'Account Password', 'app.settings.notification.password-description': diff --git a/src/locales/fa-IR.ts b/src/locales/fa-IR.ts index c27343dc..123ba655 100644 --- a/src/locales/fa-IR.ts +++ b/src/locales/fa-IR.ts @@ -13,7 +13,8 @@ export default { 'layout.user.link.terms': 'مقررات', 'app.preview.down.block': 'این صفحه را در پروژه محلی خود بارگیری کنید', 'app.welcome.link.fetch-blocks': 'دریافت تمام بلوک', - 'app.welcome.link.block-list': 'به سرعت صفحات استاندارد مبتنی بر توسعه "بلوک" را بسازید', + 'app.welcome.link.block-list': + 'به سرعت صفحات استاندارد مبتنی بر توسعه "بلوک" را بسازید', ...globalHeader, ...menu, ...settingDrawer, diff --git a/src/locales/fa-IR/globalHeader.ts b/src/locales/fa-IR/globalHeader.ts index 1a92fbb8..5a822c49 100644 --- a/src/locales/fa-IR/globalHeader.ts +++ b/src/locales/fa-IR/globalHeader.ts @@ -5,7 +5,8 @@ export default { 'component.globalHeader.search.example3': 'مثال 3 را جستجو کنید', 'component.globalHeader.help': 'کمک', 'component.globalHeader.notification': 'اعلان', - 'component.globalHeader.notification.empty': 'شما همه اعلان ها را مشاهده کرده اید.', + 'component.globalHeader.notification.empty': + 'شما همه اعلان ها را مشاهده کرده اید.', 'component.globalHeader.message': 'پیام', 'component.globalHeader.message.empty': 'شما همه پیام ها را مشاهده کرده اید.', 'component.globalHeader.event': 'رویداد', diff --git a/src/locales/fa-IR/pages.ts b/src/locales/fa-IR/pages.ts index e49f6d58..627db880 100644 --- a/src/locales/fa-IR/pages.ts +++ b/src/locales/fa-IR/pages.ts @@ -1,8 +1,11 @@ export default { - 'pages.layouts.userLayout.title': 'طراحی مورچه تأثیرگذارترین مشخصات طراحی وب در منطقه Xihu است', + 'pages.layouts.userLayout.title': + 'طراحی مورچه تأثیرگذارترین مشخصات طراحی وب در منطقه Xihu است', 'pages.login.accountLogin.tab': 'ورود به حساب کاربری', - 'pages.login.accountLogin.errorMessage': 'نام کاربری / رمزعبور نادرست (مدیر / ant.design)', - 'pages.login.failure': 'ورود به سیستم با شکست مواجه شد، لطفا دوباره سعی کنید!', + 'pages.login.accountLogin.errorMessage': + 'نام کاربری / رمزعبور نادرست (مدیر / ant.design)', + 'pages.login.failure': + 'ورود به سیستم با شکست مواجه شد، لطفا دوباره سعی کنید!', 'pages.login.success': 'ورود موفق!', 'pages.login.username.placeholder': 'نام کاربری: مدیر یا کاربر', 'pages.login.username.required': 'لطفا نام کاربری خود را وارد کنید!', @@ -33,9 +36,11 @@ export default { 'pages.searchTable.updateForm.ruleConfig': 'پیکربندی قانون', 'pages.searchTable.updateForm.basicConfig': 'اطلاعات اولیه', 'pages.searchTable.updateForm.ruleName.nameLabel': ' نام قانون', - 'pages.searchTable.updateForm.ruleName.nameRules': 'لطفاً نام قانون را وارد کنید!', + 'pages.searchTable.updateForm.ruleName.nameRules': + 'لطفاً نام قانون را وارد کنید!', 'pages.searchTable.updateForm.ruleDesc.descLabel': 'شرح قانون', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'لطفاً حداقل پنج حرف وارد کنید', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': + 'لطفاً حداقل پنج حرف وارد کنید', 'pages.searchTable.updateForm.ruleDesc.descRules': 'لطفاً حداقل یک قانون حاوی پنج کاراکتر شرح دهید!', 'pages.searchTable.updateForm.ruleProps.title': 'پیکربندی خصوصیات', @@ -44,7 +49,8 @@ export default { 'pages.searchTable.updateForm.ruleProps.typeLabel': 'نوع قانون', 'pages.searchTable.updateForm.schedulingPeriod.title': 'تنظیم دوره زمان بندی', 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'زمان شروع', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'لطفاً زمان شروع را انتخاب کنید!', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': + 'لطفاً زمان شروع را انتخاب کنید!', 'pages.searchTable.titleDesc': 'شرح', 'pages.searchTable.ruleName': 'نام قانون لازم است', 'pages.searchTable.titleCallNo': 'تعداد تماس های خدماتی', diff --git a/src/locales/fa-IR/settings.ts b/src/locales/fa-IR/settings.ts index 040bc319..599ced43 100644 --- a/src/locales/fa-IR/settings.ts +++ b/src/locales/fa-IR/settings.ts @@ -15,7 +15,8 @@ export default { 'app.settings.basic.country': 'کشور / منطقه', 'app.settings.basic.country-message': 'لطفاً کشور خود را وارد کنید!', 'app.settings.basic.geographic': 'استان یا شهر', - 'app.settings.basic.geographic-message': 'لطفاً اطلاعات جغرافیایی خود را وارد کنید!', + 'app.settings.basic.geographic-message': + 'لطفاً اطلاعات جغرافیایی خود را وارد کنید!', 'app.settings.basic.address': 'آدرس خیابان', 'app.settings.basic.address-message': 'لطفا آدرس خود را وارد کنید!', 'app.settings.basic.phone': 'شماره تلفن', @@ -40,11 +41,14 @@ export default { 'app.settings.security.set': 'تنظیم', 'app.settings.security.bind': 'بستن', 'app.settings.binding.taobao': 'اتصال Taobao', - 'app.settings.binding.taobao-description': 'حساب Taobao در حال حاضر بسته نشده است', + 'app.settings.binding.taobao-description': + 'حساب Taobao در حال حاضر بسته نشده است', 'app.settings.binding.alipay': 'اتصال Alipay', - 'app.settings.binding.alipay-description': 'حساب Alipay در حال حاضر بسته نشده است', + 'app.settings.binding.alipay-description': + 'حساب Alipay در حال حاضر بسته نشده است', 'app.settings.binding.dingding': 'اتصال DingTalk', - 'app.settings.binding.dingding-description': 'حساب DingTalk در حال حاضر محدود نشده است', + 'app.settings.binding.dingding-description': + 'حساب DingTalk در حال حاضر محدود نشده است', 'app.settings.binding.bind': 'بستن', 'app.settings.notification.password': 'رمز عبور حساب کاربری', 'app.settings.notification.password-description': diff --git a/src/locales/id-ID/globalHeader.ts b/src/locales/id-ID/globalHeader.ts index e6283ea8..4ad6863d 100644 --- a/src/locales/id-ID/globalHeader.ts +++ b/src/locales/id-ID/globalHeader.ts @@ -5,7 +5,8 @@ export default { '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.notification.empty': + 'Anda telah membaca semua notifikasi', 'component.globalHeader.message': 'Pesan', 'component.globalHeader.message.empty': 'Anda telah membaca semua pesan.', 'component.globalHeader.event': 'Acara', diff --git a/src/locales/id-ID/menu.ts b/src/locales/id-ID/menu.ts index 254ff443..9bb54df9 100644 --- a/src/locales/id-ID/menu.ts +++ b/src/locales/id-ID/menu.ts @@ -18,7 +18,8 @@ export default { '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.confirm': + 'Form Bertahap(konfirmasi informasi yang dibagikan)', 'menu.form.step-form.result': 'Form Bertahap(selesai)', 'menu.form.advanced-form': 'Form Lanjutan', 'menu.list': 'Daftar', diff --git a/src/locales/id-ID/pages.ts b/src/locales/id-ID/pages.ts index de28ef36..be547e28 100644 --- a/src/locales/id-ID/pages.ts +++ b/src/locales/id-ID/pages.ts @@ -2,7 +2,8 @@ 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.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', @@ -35,7 +36,8 @@ export default { '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.ruleName.nameRules': + 'Harap masukkan nama aturan!', 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Deskripsi aturan', 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'Harap masukkan setidaknya lima karakter', @@ -47,7 +49,8 @@ export default { '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.updateForm.schedulingPeriod.timeRules': + 'Pilih waktu mulai!', 'pages.searchTable.titleDesc': 'deskripsi', 'pages.searchTable.ruleName': 'Nama aturan wajib diisi', 'pages.searchTable.titleCallNo': 'Jumlah panggilan', diff --git a/src/locales/id-ID/settingDrawer.ts b/src/locales/id-ID/settingDrawer.ts index 78406c23..d5f93fa6 100644 --- a/src/locales/id-ID/settingDrawer.ts +++ b/src/locales/id-ID/settingDrawer.ts @@ -21,7 +21,8 @@ export default { '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.hideheader.hint': + 'Bekerja ketika Header tersembunyi dimunculkan', 'app.setting.othersettings': 'Pengaturan Lainnya', 'app.setting.weakmode': 'Mode Lemah', 'app.setting.copy': 'Salin Pengaturan', diff --git a/src/locales/id-ID/settings.ts b/src/locales/id-ID/settings.ts index 04b7d120..6076f259 100644 --- a/src/locales/id-ID/settings.ts +++ b/src/locales/id-ID/settings.ts @@ -11,11 +11,13 @@ export default { '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.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.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', @@ -40,9 +42,11 @@ export default { '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.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.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', diff --git a/src/locales/ja-JP.ts b/src/locales/ja-JP.ts index 16028875..b2b8a1d4 100644 --- a/src/locales/ja-JP.ts +++ b/src/locales/ja-JP.ts @@ -11,7 +11,8 @@ export default { 'layout.user.link.help': 'ヘルプ', 'layout.user.link.privacy': 'プライバシー', 'layout.user.link.terms': '利用規約', - 'app.preview.down.block': 'このページをローカルプロジェクトにダウンロードしてください', + 'app.preview.down.block': + 'このページをローカルプロジェクトにダウンロードしてください', 'app.welcome.link.fetch-blocks': '', 'app.welcome.link.block-list': '', ...globalHeader, diff --git a/src/locales/ja-JP/pages.ts b/src/locales/ja-JP/pages.ts index 8e96ac35..54872022 100644 --- a/src/locales/ja-JP/pages.ts +++ b/src/locales/ja-JP/pages.ts @@ -1,5 +1,6 @@ export default { - 'pages.layouts.userLayout.title': 'Ant Designは、西湖区で最も影響力のあるWebデザイン仕様です。', + 'pages.layouts.userLayout.title': + 'Ant Designは、西湖区で最も影響力のあるWebデザイン仕様です。', 'pages.login.accountLogin.tab': 'アカウントログイン', 'pages.login.accountLogin.errorMessage': 'ユーザー名/パスワードが正しくありません(admin/ant.design)', @@ -24,8 +25,10 @@ export default { 'pages.login.loginWith': 'その他のログイン方法:', 'pages.login.registerAccount': 'アカウント登録', 'pages.welcome.link': 'ようこそ', - 'pages.welcome.alertMessage': 'より高速で強力な頑丈なコンポーネントがリリースされました。', - 'pages.404.subTitle': '申し訳ありませんが、アクセスしたページは存在しません。', + 'pages.welcome.alertMessage': + 'より高速で強力な頑丈なコンポーネントがリリースされました。', + 'pages.404.subTitle': + '申し訳ありませんが、アクセスしたページは存在しません。', 'pages.404.buttonText': 'ホームに戻る', 'pages.admin.subPage.title': 'このページは管理者のみが表示できます', 'pages.admin.subPage.alertMessage': @@ -34,17 +37,22 @@ export default { 'pages.searchTable.updateForm.ruleConfig': 'ルール構成', 'pages.searchTable.updateForm.basicConfig': '基本情報', 'pages.searchTable.updateForm.ruleName.nameLabel': 'ルール名', - 'pages.searchTable.updateForm.ruleName.nameRules': 'ルール名を入力してください!', + '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.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.title': + 'スケジュール期間の設定', 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '開始時間', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '開始時間を選択してください!', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': + '開始時間を選択してください!', 'pages.searchTable.titleDesc': '説明', 'pages.searchTable.ruleName': 'ルール名が必要です', 'pages.searchTable.titleCallNo': 'サービスコール数', diff --git a/src/locales/ja-JP/settingDrawer.ts b/src/locales/ja-JP/settingDrawer.ts index 67a22df1..ac03203b 100644 --- a/src/locales/ja-JP/settingDrawer.ts +++ b/src/locales/ja-JP/settingDrawer.ts @@ -21,11 +21,13 @@ export default { 'app.setting.fixedsidebar': '固定サイドバー', 'app.setting.fixedsidebar.hint': 'サイドメニューのレイアウトで動作します', 'app.setting.hideheader': 'スクロール時の非表示ヘッダー', - 'app.setting.hideheader.hint': '非表示ヘッダーが有効になっている場合に機能します', + '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': '設定パネルは開発環境でのみ表示されます。手動で変更してください', + 'app.setting.production.hint': + '設定パネルは開発環境でのみ表示されます。手動で変更してください', }; diff --git a/src/locales/ja-JP/settings.ts b/src/locales/ja-JP/settings.ts index de52481c..ce4e459e 100644 --- a/src/locales/ja-JP/settings.ts +++ b/src/locales/ja-JP/settings.ts @@ -40,11 +40,14 @@ export default { 'app.settings.security.set': 'セットする', 'app.settings.security.bind': 'バインド', 'app.settings.binding.taobao': 'タオバオをバインドする', - 'app.settings.binding.taobao-description': '現在バインドされていないタオバオアカウント', + 'app.settings.binding.taobao-description': + '現在バインドされていないタオバオアカウント', 'app.settings.binding.alipay': 'アリペイをバインドする', - 'app.settings.binding.alipay-description': '現在バインドされていないアリペイアカウント', + 'app.settings.binding.alipay-description': + '現在バインドされていないアリペイアカウント', 'app.settings.binding.dingding': 'ディントークをバインドする', - 'app.settings.binding.dingding-description': '現在バインドされていないディントークアカウント', + 'app.settings.binding.dingding-description': + '現在バインドされていないディントークアカウント', 'app.settings.binding.bind': 'バインド', 'app.settings.notification.password': 'アカウントパスワード', 'app.settings.notification.password-description': @@ -53,7 +56,8 @@ export default { 'app.settings.notification.messages-description': 'システムメッセージは、ステーションレターの形式で通知されます', 'app.settings.notification.todo': 'To Do(用事) 通知', - 'app.settings.notification.todo-description': 'To Doタスクは、内部レターの形式で通知されます', + 'app.settings.notification.todo-description': + 'To Doタスクは、内部レターの形式で通知されます', 'app.settings.open': '開く', 'app.settings.close': '閉じる', }; diff --git a/src/locales/pt-BR/globalHeader.ts b/src/locales/pt-BR/globalHeader.ts index d232ca79..056e537d 100644 --- a/src/locales/pt-BR/globalHeader.ts +++ b/src/locales/pt-BR/globalHeader.ts @@ -5,7 +5,8 @@ export default { '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.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', diff --git a/src/locales/pt-BR/menu.ts b/src/locales/pt-BR/menu.ts index aded8ff0..5b537fae 100644 --- a/src/locales/pt-BR/menu.ts +++ b/src/locales/pt-BR/menu.ts @@ -17,8 +17,10 @@ export default { '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.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', diff --git a/src/locales/pt-BR/pages.ts b/src/locales/pt-BR/pages.ts index 6a96e9b8..63de8e1e 100644 --- a/src/locales/pt-BR/pages.ts +++ b/src/locales/pt-BR/pages.ts @@ -2,7 +2,8 @@ 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.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', @@ -15,7 +16,8 @@ export default { '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.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', @@ -24,7 +26,8 @@ export default { '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.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', @@ -34,7 +37,8 @@ export default { '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.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', @@ -44,7 +48,8 @@ export default { '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.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!', diff --git a/src/locales/pt-BR/settingDrawer.ts b/src/locales/pt-BR/settingDrawer.ts index 3e155fc0..c5b4137c 100644 --- a/src/locales/pt-BR/settingDrawer.ts +++ b/src/locales/pt-BR/settingDrawer.ts @@ -21,7 +21,8 @@ export default { '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.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', diff --git a/src/locales/pt-BR/settings.ts b/src/locales/pt-BR/settings.ts index aad2e387..bc35caa0 100644 --- a/src/locales/pt-BR/settings.ts +++ b/src/locales/pt-BR/settings.ts @@ -8,18 +8,21 @@ export default { '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.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.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.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', @@ -40,11 +43,14 @@ export default { '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.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.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.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': diff --git a/src/locales/zh-CN/pages.ts b/src/locales/zh-CN/pages.ts index a266bc6c..22ac97a0 100644 --- a/src/locales/zh-CN/pages.ts +++ b/src/locales/zh-CN/pages.ts @@ -1,7 +1,9 @@ export default { - 'pages.layouts.userLayout.title': 'Ant Design 是西湖区最具影响力的 Web 设计规范', + 'pages.layouts.userLayout.title': + 'Ant Design 是西湖区最具影响力的 Web 设计规范', 'pages.login.accountLogin.tab': '账户密码登录', - 'pages.login.accountLogin.errorMessage': '错误的用户名和密码(admin/ant.design)', + 'pages.login.accountLogin.errorMessage': + '错误的用户名和密码(admin/ant.design)', 'pages.login.failure': '登录失败,请重试!', 'pages.login.success': '登录成功!', 'pages.login.username.placeholder': '用户名: admin or user', @@ -27,7 +29,8 @@ export default { 'pages.404.subTitle': '抱歉,您访问的页面不存在。', 'pages.404.buttonText': '返回首页', 'pages.admin.subPage.title': ' 这个页面只有 admin 权限才能查看', - 'pages.admin.subPage.alertMessage': 'umi ui 现已发布,欢迎使用 npm run ui 启动体验。', + 'pages.admin.subPage.alertMessage': + 'umi ui 现已发布,欢迎使用 npm run ui 启动体验。', 'pages.searchTable.createForm.newRule': '新建规则', 'pages.searchTable.updateForm.ruleConfig': '规则配置', 'pages.searchTable.updateForm.basicConfig': '基本信息', @@ -35,7 +38,8 @@ export default { 'pages.searchTable.updateForm.ruleName.nameRules': '请输入规则名称!', 'pages.searchTable.updateForm.ruleDesc.descLabel': '规则描述', 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '请输入至少五个字符', - 'pages.searchTable.updateForm.ruleDesc.descRules': '请输入至少五个字符的规则描述!', + 'pages.searchTable.updateForm.ruleDesc.descRules': + '请输入至少五个字符的规则描述!', 'pages.searchTable.updateForm.ruleProps.title': '配置规则属性', 'pages.searchTable.updateForm.object': '监控对象', 'pages.searchTable.updateForm.ruleProps.templateLabel': '规则模板', diff --git a/src/locales/zh-CN/settingDrawer.ts b/src/locales/zh-CN/settingDrawer.ts index 3f44958e..ec873198 100644 --- a/src/locales/zh-CN/settingDrawer.ts +++ b/src/locales/zh-CN/settingDrawer.ts @@ -25,7 +25,8 @@ export default { 'app.setting.othersettings': '其他设置', 'app.setting.weakmode': '色弱模式', 'app.setting.copy': '拷贝设置', - 'app.setting.copyinfo': '拷贝成功,请到 config/defaultSettings.js 中替换默认配置', + '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 index df8af434..10159e37 100644 --- a/src/locales/zh-CN/settings.ts +++ b/src/locales/zh-CN/settings.ts @@ -29,11 +29,13 @@ export default { 'app.settings.security.phone': '密保手机', 'app.settings.security.phone-description': '已绑定手机', 'app.settings.security.question': '密保问题', - 'app.settings.security.question-description': '未设置密保问题,密保问题可有效保护账户安全', + '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.mfa-description': + '未绑定 MFA 设备,绑定后,可以进行二次确认', 'app.settings.security.modify': '修改', 'app.settings.security.set': '设置', 'app.settings.security.bind': '绑定', @@ -45,9 +47,11 @@ export default { 'app.settings.binding.dingding-description': '当前未绑定钉钉账号', 'app.settings.binding.bind': '绑定', 'app.settings.notification.password': '账户密码', - 'app.settings.notification.password-description': '其他用户的消息将以站内信的形式通知', + 'app.settings.notification.password-description': + '其他用户的消息将以站内信的形式通知', 'app.settings.notification.messages': '系统消息', - 'app.settings.notification.messages-description': '系统消息将以站内信的形式通知', + 'app.settings.notification.messages-description': + '系统消息将以站内信的形式通知', 'app.settings.notification.todo': '待办任务', 'app.settings.notification.todo-description': '待办任务将以站内信的形式通知', 'app.settings.open': '开', diff --git a/src/locales/zh-TW/pages.ts b/src/locales/zh-TW/pages.ts index 37000c01..17aa25fe 100644 --- a/src/locales/zh-TW/pages.ts +++ b/src/locales/zh-TW/pages.ts @@ -1,7 +1,9 @@ export default { - 'pages.layouts.userLayout.title': 'Ant Design 是西湖區最具影響力的 Web 設計規範', + 'pages.layouts.userLayout.title': + 'Ant Design 是西湖區最具影響力的 Web 設計規範', 'pages.login.accountLogin.tab': '賬戶密碼登錄', - 'pages.login.accountLogin.errorMessage': '錯誤的用戶名和密碼(admin/ant.design)', + 'pages.login.accountLogin.errorMessage': + '錯誤的用戶名和密碼(admin/ant.design)', 'pages.login.failure': '登錄失敗,請重試!', 'pages.login.success': '登錄成功!', 'pages.login.username.placeholder': '用戶名: admin or user', @@ -27,7 +29,8 @@ export default { 'pages.404.subTitle': '抱歉,您訪問的頁面不存在。', 'pages.404.buttonText': '返回首頁', 'pages.admin.subPage.title': '這個頁面只有 admin 權限才能查看', - 'pages.admin.subPage.alertMessage': 'umi ui 現已發佈,歡迎使用 npm run ui 啓動體驗。', + 'pages.admin.subPage.alertMessage': + 'umi ui 現已發佈,歡迎使用 npm run ui 啓動體驗。', 'pages.searchTable.createForm.newRule': '新建規則', 'pages.searchTable.updateForm.ruleConfig': '規則配置', 'pages.searchTable.updateForm.basicConfig': '基本信息', @@ -35,7 +38,8 @@ export default { 'pages.searchTable.updateForm.ruleName.nameRules': '請輸入規則名稱!', 'pages.searchTable.updateForm.ruleDesc.descLabel': '規則描述', 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '請輸入至少五個字符', - 'pages.searchTable.updateForm.ruleDesc.descRules': '請輸入至少五個字符的規則描述!', + 'pages.searchTable.updateForm.ruleDesc.descRules': + '請輸入至少五個字符的規則描述!', 'pages.searchTable.updateForm.ruleProps.title': '配置規則屬性', 'pages.searchTable.updateForm.object': '監控對象', 'pages.searchTable.updateForm.ruleProps.templateLabel': '規則模板', diff --git a/src/locales/zh-TW/settingDrawer.ts b/src/locales/zh-TW/settingDrawer.ts index 454da285..832504bd 100644 --- a/src/locales/zh-TW/settingDrawer.ts +++ b/src/locales/zh-TW/settingDrawer.ts @@ -25,7 +25,8 @@ export default { 'app.setting.othersettings': '其他設置', 'app.setting.weakmode': '色弱模式', 'app.setting.copy': '拷貝設置', - 'app.setting.copyinfo': '拷貝成功,請到 config/defaultSettings.js 中替換默認配置', + '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 index dd45151a..6d84b540 100644 --- a/src/locales/zh-TW/settings.ts +++ b/src/locales/zh-TW/settings.ts @@ -29,11 +29,13 @@ export default { 'app.settings.security.phone': '密保手機', 'app.settings.security.phone-description': '已綁定手機', 'app.settings.security.question': '密保問題', - 'app.settings.security.question-description': '未設置密保問題,密保問題可有效保護賬戶安全', + '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.mfa-description': + '未綁定 MFA 設備,綁定後,可以進行二次確認', 'app.settings.security.modify': '修改', 'app.settings.security.set': '設置', 'app.settings.security.bind': '綁定', @@ -45,9 +47,11 @@ export default { 'app.settings.binding.dingding-description': '當前未綁定釘釘賬號', 'app.settings.binding.bind': '綁定', 'app.settings.notification.password': '賬戶密碼', - 'app.settings.notification.password-description': '其他用戶的消息將以站內信的形式通知', + 'app.settings.notification.password-description': + '其他用戶的消息將以站內信的形式通知', 'app.settings.notification.messages': '系統消息', - 'app.settings.notification.messages-description': '系統消息將以站內信的形式通知', + 'app.settings.notification.messages-description': + '系統消息將以站內信的形式通知', 'app.settings.notification.todo': '待辦任務', 'app.settings.notification.todo-description': '待辦任務將以站內信的形式通知', 'app.settings.open': '開', diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 46935675..9734cc57 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -1,18 +1,20 @@ import { history, useIntl } from '@umijs/max'; -import { Button, Result } from 'antd'; +import { Button, Card, Result } from 'antd'; import React from 'react'; const NoFoundPage: React.FC = () => ( - history.push('/')}> - {useIntl().formatMessage({ id: 'pages.404.buttonText' })} - - } - /> + + history.push('/')}> + {useIntl().formatMessage({ id: 'pages.404.buttonText' })} + + } + /> + ); export default NoFoundPage; diff --git a/src/pages/Admin.tsx b/src/pages/Admin.tsx index 2f93986b..607feb3d 100644 --- a/src/pages/Admin.tsx +++ b/src/pages/Admin.tsx @@ -17,7 +17,8 @@ const Admin: React.FC = () => { { }} /> - Ant Design Pro You + Ant Design Pro{' '} + You

Want to add more pages? Please refer to{' '} - + use block 。 diff --git a/src/pages/TableList/components/UpdateForm.tsx b/src/pages/TableList/components/UpdateForm.tsx deleted file mode 100644 index d689c2b9..00000000 --- a/src/pages/TableList/components/UpdateForm.tsx +++ /dev/null @@ -1,213 +0,0 @@ -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/User/Login/__snapshots__/login.test.tsx.snap b/src/pages/User/Login/__snapshots__/login.test.tsx.snap deleted file mode 100644 index 5622a1b7..00000000 --- a/src/pages/User/Login/__snapshots__/login.test.tsx.snap +++ /dev/null @@ -1,1109 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Login Page should login success 1`] = ` - -

-
- - - -
-
-
- -
-
-
-
- -
-
-
-
-
-
-
- - - -
-
-
- - - - - -
- -
- - - - - - Serati Ma - - -
-
-
-
-
-
-
-
-
-
-
-
-
- - Welcome - -
-
-
-
-
-
-
-
-
-
-
- 欢迎使用 Ant Design Pro -
-

- Ant Design Pro 是一个整合了 umi,Ant Design 和 ProComponents 的脚手架方案。致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。 -

-
-
-
-
- 1 -
-
- 了解 umi -
-
-
- umi 是一个可扩展的企业级前端应用框架,umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展。 -
- - 了解更多 > - -
-
-
-
- 2 -
-
- 了解 ant design -
-
-
- antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。 -
- - 了解更多 > - -
-
-
-
- 3 -
-
- 了解 Pro Components -
-
-
- ProComponents 是一个基于 Ant Design 做了更高抽象的模板组件,以 一个组件就是一个页面为开发理念,为中后台开发带来更好的体验。 -
- - 了解更多 > - -
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- -`; - -exports[`Login Page should show login form 1`] = ` - -
-
- - - - - -
-
- - -`; diff --git a/src/pages/table-list/components/CreateForm.tsx b/src/pages/table-list/components/CreateForm.tsx new file mode 100644 index 00000000..9fc324cc --- /dev/null +++ b/src/pages/table-list/components/CreateForm.tsx @@ -0,0 +1,80 @@ +import { PlusOutlined } from '@ant-design/icons'; +import { + type ActionType, + ModalForm, + ProFormText, + ProFormTextArea, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl, useRequest } from '@umijs/max'; +import { Button, message } from 'antd'; +import type { FC } from 'react'; +import { addRule } from '@/services/ant-design-pro/api'; + +interface CreateFormProps { + reload?: ActionType['reload']; +} + +const CreateForm: FC = (props) => { + const { reload } = props; + + const [messageApi, contextHolder] = message.useMessage(); + /** + * @en-US International configuration + * @zh-CN 国际化配置 + * */ + const intl = useIntl(); + + const { run, loading } = useRequest(addRule, { + manual: true, + onSuccess: () => { + messageApi.success('Added successfully'); + reload?.(); + }, + onError: () => { + messageApi.error('Adding failed, please try again!'); + }, + }); + + return ( + <> + {contextHolder} + }> + + + } + width="400px" + modalProps={{ okButtonProps: { loading } }} + onFinish={async (value) => { + await run({ data: value as API.RuleListItem }); + + return true; + }} + > + + ), + }, + ]} + width="md" + name="name" + /> + + + + ); +}; + +export default CreateForm; diff --git a/src/pages/table-list/components/UpdateForm.tsx b/src/pages/table-list/components/UpdateForm.tsx new file mode 100644 index 00000000..a3195418 --- /dev/null +++ b/src/pages/table-list/components/UpdateForm.tsx @@ -0,0 +1,247 @@ +import { + ProFormDateTimePicker, + ProFormRadio, + ProFormSelect, + ProFormText, + ProFormTextArea, + StepsForm, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl, useRequest } from '@umijs/max'; +import { Modal, message } from 'antd'; +import React, { cloneElement, useCallback, useState } from 'react'; +import { updateRule } from '@/services/ant-design-pro/api'; + +export type FormValueType = { + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; + +export type UpdateFormProps = { + trigger?: React.ReactElement; + onOk?: () => void; + values: Partial; +}; + +const UpdateForm: React.FC = (props) => { + const { onOk, values, trigger } = props; + + const intl = useIntl(); + + const [open, setOpen] = useState(false); + + const [messageApi, contextHolder] = message.useMessage(); + + const { run } = useRequest(updateRule, { + manual: true, + onSuccess: () => { + messageApi.success('Configuration is successful'); + onOk?.(); + }, + onError: () => { + messageApi.error('Configuration failed, please try again!'); + }, + }); + + const onCancel = useCallback(() => { + setOpen(false); + }, []); + + const onOpen = useCallback(() => { + setOpen(true); + }, []); + + const onFinish = useCallback( + async (values?: any) => { + await run({ data: values }); + + onCancel(); + }, + [onCancel, run], + ); + + return ( + <> + {contextHolder} + {trigger + ? cloneElement(trigger, { + onClick: onOpen, + }) + : null} + { + return ( + + {dom} + + ); + }} + onFinish={onFinish} + > + + + ), + }, + ]} + /> + + ), + min: 5, + }, + ]} + /> + + + + + + + + + ), + }, + ]} + /> + + + + + ); +}; + +export default UpdateForm; diff --git a/src/pages/TableList/index.tsx b/src/pages/table-list/index.tsx similarity index 52% rename from src/pages/TableList/index.tsx rename to src/pages/table-list/index.tsx index 14f526ac..83f08071 100644 --- a/src/pages/TableList/index.tsx +++ b/src/pages/table-list/index.tsx @@ -1,103 +1,25 @@ -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 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 { FormattedMessage, useIntl, useRequest } from '@umijs/max'; import { Button, Drawer, Input, message } from 'antd'; -import React, { useRef, useState } from 'react'; -import type { FormValueType } from './components/UpdateForm'; +import React, { useCallback, useRef, useState } from 'react'; +import { removeRule, rule } from '@/services/ant-design-pro/api'; +import CreateForm from './components/CreateForm'; 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 actionRef = useRef(null); const [showDetail, setShowDetail] = useState(false); - - const actionRef = useRef(); const [currentRow, setCurrentRow] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); @@ -107,6 +29,21 @@ const TableList: React.FC = () => { * */ const intl = useIntl(); + const [messageApi, contextHolder] = message.useMessage(); + + const { run: delRun, loading } = useRequest(removeRule, { + manual: true, + onSuccess: () => { + setSelectedRows([]); + actionRef.current?.reloadAndRest?.(); + + messageApi.success('Deleted successfully and will refresh soon'); + }, + onError: () => { + messageApi.error('Delete failed, please try again'); + }, + }); + const columns: ProColumns[] = [ { title: ( @@ -130,7 +67,12 @@ const TableList: React.FC = () => { }, }, { - title: , + title: ( + + ), dataIndex: 'desc', valueType: 'textarea', }, @@ -151,7 +93,12 @@ const TableList: React.FC = () => { })}`, }, { - title: , + title: ( + + ), dataIndex: 'status', hideInForm: true, valueEnum: { @@ -166,13 +113,19 @@ const TableList: React.FC = () => { }, 1: { text: ( - + ), status: 'Processing', }, 2: { text: ( - + ), status: 'Success', }, @@ -217,19 +170,28 @@ const TableList: React.FC = () => { }, }, { - title: , + title: ( + + ), dataIndex: 'option', valueType: 'option', render: (_, record) => [ - + + + } key="config" - onClick={() => { - handleUpdateModalOpen(true); - setCurrentRow(record); - }} - > - - , + onOk={actionRef.current?.reload} + values={record} + />, { }, ]; + /** + * Delete node + * @zh-CN 删除节点 + * + * @param selectedRows + */ + const handleRemove = useCallback( + async (selectedRows: API.RuleListItem[]) => { + if (!selectedRows?.length) { + messageApi.warning('请选择删除项'); + + return; + } + + await delRun({ + data: { + key: selectedRows.map((row) => row.key), + }, + }); + }, + [delRun, messageApi.warning], + ); + return ( + {contextHolder} headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', @@ -253,15 +239,7 @@ const TableList: React.FC = () => { labelWidth: 120, }} toolBarRender={() => [ - , + , ]} request={rule} columns={columns} @@ -275,26 +253,37 @@ const TableList: React.FC = () => { - {' '} + {' '} {selectedRowsState.length}{' '} - +    {' '} - {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)}{' '} - + {selectedRowsState.reduce( + (pre, item) => pre + (item.callNo ?? 0), + 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 || {}} - /> +
+
+
+ + + + + +
+
+ +
+ +`; + +exports[`Login Page should show login form 1`] = ` + +
+
+
+ + + + + +
+
+ +
+ +`; diff --git a/src/pages/User/Login/index.tsx b/src/pages/user/login/index.tsx similarity index 90% rename from src/pages/User/Login/index.tsx rename to src/pages/user/login/index.tsx index cb09e5cd..ff76f4dc 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/user/login/index.tsx @@ -1,6 +1,3 @@ -import { Footer } from '@/components'; -import { login } from '@/services/ant-design-pro/api'; -import { getFakeCaptcha } from '@/services/ant-design-pro/login'; import { AlipayCircleOutlined, LockOutlined, @@ -15,11 +12,20 @@ import { ProFormCheckbox, ProFormText, } from '@ant-design/pro-components'; -import { FormattedMessage, Helmet, history, SelectLang, useIntl, useModel } from '@umijs/max'; -import { Alert, message, Tabs } from 'antd'; +import { + FormattedMessage, + Helmet, + SelectLang, + useIntl, + useModel, +} from '@umijs/max'; +import { Alert, App, Tabs } from 'antd'; import { createStyles } from 'antd-style'; import React, { useState } from 'react'; import { flushSync } from 'react-dom'; +import { Footer } from '@/components'; +import { login } from '@/services/ant-design-pro/api'; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; import Settings from '../../../../config/defaultSettings'; const useStyles = createStyles(({ token }) => { @@ -63,9 +69,18 @@ const ActionIcons = () => { return ( <> - - - + + + ); }; @@ -100,6 +115,7 @@ const Login: React.FC = () => { const [type, setType] = useState('account'); const { initialState, setInitialState } = useModel('@@initialState'); const { styles } = useStyles(); + const { message } = App.useApp(); const intl = useIntl(); const fetchUserInfo = async () => { @@ -126,7 +142,7 @@ const Login: React.FC = () => { message.success(defaultLoginSuccessMessage); await fetchUserInfo(); const urlParams = new URL(window.location.href).searchParams; - history.push(urlParams.get('redirect') || '/'); + window.location.href = urlParams.get('redirect') || '/'; return; } console.log(msg); @@ -168,7 +184,9 @@ const Login: React.FC = () => { }} logo={logo} title="Ant Design" - subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} + subTitle={intl.formatMessage({ + id: 'pages.layouts.userLayout.title', + })} initialValues={{ autoLogin: true, }} @@ -263,7 +281,9 @@ const Login: React.FC = () => { )} - {status === 'error' && loginType === 'mobile' && } + {status === 'error' && loginType === 'mobile' && ( + + )} {type === 'mobile' && ( <> { }} > - + - +
diff --git a/src/pages/User/Login/login.test.tsx b/src/pages/user/login/login.test.tsx similarity index 88% rename from src/pages/User/Login/login.test.tsx rename to src/pages/user/login/login.test.tsx index b6107658..c34b6fb3 100644 --- a/src/pages/User/Login/login.test.tsx +++ b/src/pages/user/login/login.test.tsx @@ -1,10 +1,9 @@ -import { TestBrowser } from '@@/testBrowser'; +// @ts-ignore +import { startMock } from '@@/requestRecordMock'; +import { TestBrowser } from '@@/testBrowser'; import { fireEvent, render } from '@testing-library/react'; import React, { act } from 'react'; -// @ts-ignore -import { startMock } from '@@/requestRecordMock'; - const waitTime = (time: number = 100) => { return new Promise((resolve) => { setTimeout(() => { @@ -46,7 +45,10 @@ describe('Login Page', () => { historyRef.current?.push('/user/login'); }); - expect(rootContainer.baseElement?.querySelector('.ant-pro-form-login-desc')?.textContent).toBe( + expect( + rootContainer.baseElement?.querySelector('.ant-pro-form-login-desc') + ?.textContent, + ).toBe( 'Ant Design is the most influential web design specification in Xihu district', ); @@ -68,13 +70,17 @@ describe('Login Page', () => { await rootContainer.findAllByText('Ant Design'); - const userNameInput = await rootContainer.findByPlaceholderText('Username: admin or user'); + const userNameInput = await rootContainer.findByPlaceholderText( + 'Username: admin or user', + ); act(() => { fireEvent.change(userNameInput, { target: { value: 'admin' } }); }); - const passwordInput = await rootContainer.findByPlaceholderText('Password: ant.design'); + const passwordInput = await rootContainer.findByPlaceholderText( + 'Password: ant.design', + ); act(() => { fireEvent.change(passwordInput, { target: { value: 'ant.design' } }); diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts index c0c4a6a2..ff356ebd 100644 --- a/src/requestErrorConfig.ts +++ b/src/requestErrorConfig.ts @@ -89,7 +89,7 @@ export const errorConfig: RequestConfig = { requestInterceptors: [ (config: RequestOptions) => { // 拦截请求配置,进行个性化处理。 - const url = config?.url?.concat('?token = 123'); + const url = config?.url?.concat('?token=123'); return { ...config, url }; }, ], diff --git a/src/service-worker.js b/src/service-worker.js index b86726cd..b76e4049 100644 --- a/src/service-worker.js +++ b/src/service-worker.js @@ -1,5 +1,3 @@ -/* eslint-disable no-restricted-globals */ -/* eslint-disable no-underscore-dangle */ /* globals workbox */ workbox.core.setCacheNameDetails({ prefix: 'antd-pro', @@ -40,7 +38,10 @@ workbox.routing.registerRoute( /^https:\/\/cdnjs\.cloudflare\.com\//, workbox.strategies.networkFirst(), ); -workbox.routing.registerRoute(/\/color.less/, workbox.strategies.networkFirst()); +workbox.routing.registerRoute( + /\/color.less/, + workbox.strategies.networkFirst(), +); /** Response to client after skipping waiting with MessageChannel */ addEventListener('message', (event) => { diff --git a/src/typings.d.ts b/src/typings.d.ts index 742f70c6..40f11d06 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -12,9 +12,7 @@ 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 index 952561d5..e121c83b 100644 --- a/tests/setupTests.jsx +++ b/tests/setupTests.jsx @@ -1,4 +1,8 @@ -const localStorageMock = { +import { defaultConfig } from 'antd/lib/theme/internal'; + +defaultConfig.hashed = false; + +const localStorageMock = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), @@ -24,7 +28,6 @@ class Worker { } window.Worker = Worker; -/* eslint-disable global-require */ if (typeof window !== 'undefined') { // ref: https://github.com/ant-design/ant-design/issues/18774 if (!window.matchMedia) { @@ -56,7 +59,11 @@ Object.defineProperty(global.window.console, 'error', { configurable: true, value: (...rest) => { const logStr = rest.join(''); - if (logStr.includes('Warning: An update to %s inside a test was not wrapped in act(...)')) { + 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 index 85733f68..2fa95248 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,17 @@ { "compilerOptions": { + "baseUrl": "./", "target": "esnext", - "module": "esnext", "moduleResolution": "node", - "importHelpers": true, - "jsx": "preserve", + "jsx": "react-jsx", "esModuleInterop": true, - "sourceMap": true, - "baseUrl": "./", - "skipLibCheck": true, "experimentalDecorators": true, "strict": true, + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "declaration": true, + "skipLibCheck": true, "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, "paths": { "@/*": ["./src/*"], "@@/*": ["./src/.umi/*"], diff --git a/types/cache/cache.json b/types/cache/cache.json deleted file mode 100644 index 0967ef42..00000000 --- a/types/cache/cache.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/types/cache/login.cache.json b/types/cache/login.cache.json deleted file mode 100644 index 81109b40..00000000 --- a/types/cache/login.cache.json +++ /dev/null @@ -1,386 +0,0 @@ -{ - "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 deleted file mode 100644 index 6c59e198..00000000 --- a/types/cache/mock/login.mock.cache.js +++ /dev/null @@ -1,324 +0,0 @@ -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 deleted file mode 100644 index e69de29b..00000000