From 0256b12956f87a91bdffabce1c084c9f16e13fb1 Mon Sep 17 00:00:00 2001 From: afc163 Date: Fri, 4 Jul 2025 15:50:16 +0800 Subject: [PATCH] refactor: import biome and check all files (#11496) --- .eslintignore | 8 -- .eslintrc.js | 7 -- .github/workflows/ci.yml | 3 +- .github/workflows/coverage.yml | 22 ++---- .github/workflows/preview-build.yml | 2 +- .gitignore | 1 - .lintstagedrc | 5 +- .prettierignore | 22 ------ .prettierrc.js | 21 ----- README.ar-DZ.md | 6 +- README.es-ES.md | 6 +- README.fr-FR.md | 6 +- README.ja-JP.md | 6 +- README.md | 6 +- README.pt-BR.md | 6 +- README.ru-RU.md | 6 +- README.tr-TR.md | 6 +- README.zh-CN.md | 8 +- biome.json | 43 ++++++++++ config/config.ts | 6 +- jsconfig.json | 11 --- mock/listTableList.ts | 49 +++++++----- mock/notices.ts | 10 ++- mock/requestRecord.mock.js | 63 ++++++++++----- mock/user.ts | 24 +++--- package.json | 16 ++-- public/scripts/loading.js | 2 +- src/access.ts | 4 +- src/app.tsx | 24 ++++-- src/components/HeaderDropdown/index.tsx | 22 +++++- .../RightContent/AvatarDropdown.tsx | 15 +++- src/components/RightContent/index.tsx | 20 ++--- src/global.tsx | 6 +- src/locales/bn-BD/pages.ts | 9 ++- src/locales/bn-BD/settingDrawer.ts | 3 +- src/locales/bn-BD/settings.ts | 3 +- src/locales/en-US.ts | 3 +- src/locales/en-US/globalHeader.ts | 3 +- src/locales/en-US/pages.ts | 18 +++-- src/locales/en-US/pwa.ts | 3 +- src/locales/en-US/settingDrawer.ts | 3 +- src/locales/en-US/settings.ts | 3 +- src/locales/fa-IR.ts | 3 +- src/locales/fa-IR/globalHeader.ts | 3 +- src/locales/fa-IR/pages.ts | 18 +++-- src/locales/fa-IR/settings.ts | 12 ++- src/locales/id-ID/globalHeader.ts | 3 +- src/locales/id-ID/menu.ts | 3 +- src/locales/id-ID/pages.ts | 9 ++- src/locales/id-ID/settingDrawer.ts | 3 +- src/locales/id-ID/settings.ts | 12 ++- src/locales/ja-JP.ts | 3 +- src/locales/ja-JP/pages.ts | 24 ++++-- src/locales/ja-JP/settingDrawer.ts | 6 +- src/locales/ja-JP/settings.ts | 12 ++- src/locales/pt-BR/globalHeader.ts | 3 +- src/locales/pt-BR/menu.ts | 6 +- src/locales/pt-BR/pages.ts | 15 ++-- src/locales/pt-BR/settingDrawer.ts | 3 +- src/locales/pt-BR/settings.ts | 18 +++-- src/locales/zh-CN/pages.ts | 12 ++- src/locales/zh-CN/settingDrawer.ts | 3 +- src/locales/zh-CN/settings.ts | 12 ++- src/locales/zh-TW/pages.ts | 12 ++- src/locales/zh-TW/settingDrawer.ts | 3 +- src/locales/zh-TW/settings.ts | 12 ++- src/pages/Admin.tsx | 12 ++- src/pages/TableList/index.tsx | 78 +++++++++++++++---- .../Login/__snapshots__/login.test.tsx.snap | 9 ++- src/pages/User/Login/index.tsx | 50 +++++++++--- src/pages/User/Login/login.test.tsx | 20 +++-- src/service-worker.js | 7 +- tests/setupTests.jsx | 7 +- tsconfig.json | 2 +- types/cache/mock/login.mock.cache.js | 63 ++++++++++----- 75 files changed, 619 insertions(+), 349 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js delete mode 100644 .prettierignore delete mode 100644 .prettierrc.js create mode 100644 biome.json delete mode 100644 jsconfig.json 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/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/preview-build.yml b/.github/workflows/preview-build.yml index 81c4c60a..92bd22df 100644 --- a/.github/workflows/preview-build.yml +++ b/.github/workflows/preview-build.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} 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..895fc35b 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,yml}": [ + "npx @biomejs/biome check --write" ] } 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..8e47a6ec 100644 --- a/README.md +++ b/README.md @@ -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://github.com/user-attachments/assets/fde29061-3d9a-4397-8ac2-397b0e033ef5) 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..24487d51 --- /dev/null +++ b/biome.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json", + "files": { + "ignoreUnknown": true, + "includes": [ + "**/*", + "!**/.umi/**", + "**/*.md", + "!**/.umi-production/**", + "!**/.umi-test/**", + "!**/.umi-test-production/**", + "!**/src/services/**", + "!**/mock/**", + "!**/dist/**", + "!**/server/**", + "!**/public/**", + "!biome.json" + ] + }, + "formatter": { + "enabled": true, + "indentStyle": "space" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noExplicitAny": "off" + }, + "a11y": { + "noStaticElementInteractions": "off", + "useValidAnchor": "off" + } + } + }, + "javascript": { + "jsxRuntime": "reactClassic", + "formatter": { + "quoteStyle": "single" + } + } +} diff --git a/config/config.ts b/config/config.ts index 77856feb..d296d037 100644 --- a/config/config.ts +++ b/config/config.ts @@ -1,6 +1,7 @@ // 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'; @@ -157,7 +158,8 @@ 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', }, ], 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/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 0ee1e05d..4e2918c6 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", @@ -61,10 +57,8 @@ "@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", @@ -72,14 +66,14 @@ "jest-environment-jsdom": "^29.7.0", "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" }, "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 4345cb62..158e5249 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,12 +1,18 @@ -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 { App } from 'antd'; import { SettingDrawer } from '@ant-design/pro-components'; import type { RunTimeLayoutConfig } from '@umijs/max'; import { history, Link } from '@umijs/max'; +import { App } from 'antd'; 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'; @@ -29,7 +35,7 @@ export async function getInitialState(): Promise<{ skipErrorHandler: true, }); return msg.data; - } catch (error) { + } catch (_error) { history.push(loginPath); } return undefined; @@ -51,9 +57,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: , 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 3166d5c7..eedb7185 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -1,11 +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 React from 'react'; import { flushSync } from 'react-dom'; +import { outLogin } from '@/services/ant-design-pro/api'; import HeaderDropdown from '../HeaderDropdown'; export type GlobalHeaderRightProps = { @@ -37,7 +41,10 @@ const useStyles = createStyles(({ token }) => { }; }); -export const AvatarDropdown: React.FC = ({ menu, children }) => { +export const AvatarDropdown: React.FC = ({ + menu, + children, +}) => { /** * 退出登录,并且将当前的 url 保存 */ diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 20a78311..1b1dedc7 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -4,7 +4,7 @@ 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.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/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/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/index.tsx b/src/pages/TableList/index.tsx index 3fe5fea4..9deccbe9 100644 --- a/src/pages/TableList/index.tsx +++ b/src/pages/TableList/index.tsx @@ -1,6 +1,9 @@ -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, @@ -13,6 +16,12 @@ import { import { FormattedMessage, useIntl } from '@umijs/max'; import { Button, Drawer, Input, message } from 'antd'; import React, { useRef, useState } from 'react'; +import { + addRule, + removeRule, + rule, + updateRule, +} from '@/services/ant-design-pro/api'; import type { FormValueType } from './components/UpdateForm'; import UpdateForm from './components/UpdateForm'; @@ -28,7 +37,7 @@ const handleAdd = async (fields: API.RuleListItem) => { hide(); message.success('Added successfully'); return true; - } catch (error) { + } catch (_error) { hide(); message.error('Adding failed, please try again!'); return false; @@ -53,7 +62,7 @@ const handleUpdate = async (fields: FormValueType) => { message.success('Configuration is successful'); return true; - } catch (error) { + } catch (_error) { hide(); message.error('Configuration failed, please try again!'); return false; @@ -76,7 +85,7 @@ const handleRemove = async (selectedRows: API.RuleListItem[]) => { hide(); message.success('Deleted successfully and will refresh soon'); return true; - } catch (error) { + } catch (_error) { hide(); message.error('Delete failed, please try again'); return false; @@ -130,7 +139,12 @@ const TableList: React.FC = () => { }, }, { - title: , + title: ( + + ), dataIndex: 'desc', valueType: 'textarea', }, @@ -151,7 +165,12 @@ const TableList: React.FC = () => { })}`, }, { - title: , + title: ( + + ), dataIndex: 'status', hideInForm: true, valueEnum: { @@ -166,13 +185,19 @@ const TableList: React.FC = () => { }, 1: { text: ( - + ), status: 'Processing', }, 2: { text: ( - + ), status: 'Success', }, @@ -217,7 +242,12 @@ const TableList: React.FC = () => { }, }, { - title: , + title: ( + + ), dataIndex: 'option', valueType: 'option', render: (_, record) => [ @@ -228,7 +258,10 @@ const TableList: React.FC = () => { setCurrentRow(record); }} > - + , { handleModalOpen(true); }} > - + {' '} + , ]} request={rule} @@ -275,17 +309,29 @@ const TableList: React.FC = () => { - {' '} + {' '} {selectedRowsState.length}{' '} - +    {' '} - {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)}{' '} - + {selectedRowsState.reduce( + (pre, item) => pre + (item.callNo ?? 0), + 0, + )}{' '} + } diff --git a/src/pages/User/Login/__snapshots__/login.test.tsx.snap b/src/pages/User/Login/__snapshots__/login.test.tsx.snap index a1e01db9..2113d8a2 100644 --- a/src/pages/User/Login/__snapshots__/login.test.tsx.snap +++ b/src/pages/User/Login/__snapshots__/login.test.tsx.snap @@ -229,8 +229,11 @@ exports[`Login Page should login success 1`] = `

-
-
+
{ @@ -63,9 +70,18 @@ const ActionIcons = () => { return ( <> - - - + + + ); }; @@ -169,7 +185,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, }} @@ -264,7 +282,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 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/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/tests/setupTests.jsx b/tests/setupTests.jsx index 23d23334..e121c83b 100644 --- a/tests/setupTests.jsx +++ b/tests/setupTests.jsx @@ -28,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) { @@ -60,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..6b708b4a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "module": "esnext", "moduleResolution": "node", "importHelpers": true, - "jsx": "preserve", + "jsx": "react-jsx", "esModuleInterop": true, "sourceMap": true, "baseUrl": "./", diff --git a/types/cache/mock/login.mock.cache.js b/types/cache/mock/login.mock.cache.js index 6c59e198..7c8f0de5 100644 --- a/types/cache/mock/login.mock.cache.js +++ b/types/cache/mock/login.mock.cache.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: '这是一段描述',