From 9a1fb42c1b9e9473ef622b86ec261683c6fa36d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=B9=8F=E7=A8=8B=28=E6=97=B6=E9=80=9F=E4=BA=91?= =?UTF-8?q?=29?= Date: Thu, 2 Feb 2023 18:38:43 +0800 Subject: [PATCH 1/3] feat: [PAASC-8002] add locale switch support --- build.sh | 0 src/app.tsx | 26 ++++++++++++++++++++++++++ src/i18n.js | 18 ++++++++++++++---- 3 files changed, 40 insertions(+), 4 deletions(-) mode change 100644 => 100755 build.sh diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 diff --git a/src/app.tsx b/src/app.tsx index 8a00321..7fdf951 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -17,6 +17,24 @@ import logo from '@/assets/img/logo.png'; import theme from '../config/theme'; import { initUnifiedLinkHistory } from '@tenx-ui/utils/es/UnifiedLink'; import utils from './utils'; +import { getLocale, setLocale } from './i18n'; +import { Tooltip } from 'antd'; +import { GlobalOutlined } from '@ant-design/icons'; + +const LOCALE_MAP = { + 'en-US': { + key: 'en-US', // 低代码编译器 + tooltip: '切换为中文', + change: 'zh-CN', + }, + 'zh-CN': { + key: 'zh-CN', + tooltip: 'Chang to English', + change: 'en-US', + }, +}; +const locale = getLocale(); +const langInfo = LOCALE_MAP[locale]; // const IS_PROD = process.env.NODE_ENV === 'production'; const qiankunState = Object.create({ @@ -67,6 +85,14 @@ export const layout: RunTimeLayoutConfig = () => { > 退出 , + + { + setLocale(langInfo.change); + window.location.reload(); + }} + /> + , ]; }, headerRender: (_, HeaderView) => { diff --git a/src/i18n.js b/src/i18n.js index 5e89f46..4eb7ffd 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -464,15 +464,25 @@ const i18nConfig = { }, }; -let locale = - typeof navigator === "object" && typeof navigator.language === "string" - ? navigator.language - : "zh-CN"; +const LOCALE_KEY = "intl_locale"; +let locale = window.localStorage.getItem(LOCALE_KEY); +if (!locale) { + locale = + typeof navigator === "object" && typeof navigator.language === "string" + ? navigator.language + : "zh-CN"; +} +if (locale.startsWith("en")) { + locale = "en-US"; +} else { + locale = "zh-CN"; +} const getLocale = () => locale; const setLocale = (target) => { locale = target; + window.localStorage.setItem(LOCALE_KEY, target); }; const isEmptyVariables = (variables) => From 898dfcc276513275992f2104516ab76f7b58e0df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=B9=8F=E7=A8=8B=28=E6=97=B6=E9=80=9F=E4=BA=91?= =?UTF-8?q?=29?= Date: Fri, 3 Feb 2023 11:40:03 +0800 Subject: [PATCH 2/3] fix: [PAASC-8002] Optimize page style --- config/routes.js | 2 +- package.json | 27 +++++--- pnpm-lock.yaml | 104 ++++++++++++++++------------ src/app.tsx | 56 +++++++-------- src/assets/img/logo-title-white.png | Bin 0 -> 23262 bytes src/global.less | 13 ++++ 6 files changed, 122 insertions(+), 80 deletions(-) create mode 100644 src/assets/img/logo-title-white.png diff --git a/config/routes.js b/config/routes.js index c8c5c9a..88024f5 100644 --- a/config/routes.js +++ b/config/routes.js @@ -40,7 +40,7 @@ const routes = [ component: '@/pages/Network', }, { - name: '网络管理-创建网络', + // name: '网络管理-创建网络', path: '/network/create', component: '@/pages/NetworkCreate', }, diff --git a/package.json b/package.json index e19dafd..9af4e31 100644 --- a/package.json +++ b/package.json @@ -27,19 +27,31 @@ "type": "git", "url": "git@github.com:bestchains/bc-console.git" }, - "husky": { "hooks": { "pre-commit": "npm run lint-staged" } }, + "husky": { + "hooks": { + "pre-commit": "npm run lint-staged" + } + }, "lint-staged": { "**/*.less": "stylelint --allow-empty-input --syntax less", "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:es", - "**/*.{js,jsx,less,md,json}": ["prettier --write"], - "**/*.ts?(x)": ["prettier --parser=typescript --write"] + "**/*.{js,jsx,less,md,json}": [ + "prettier --write" + ], + "**/*.ts?(x)": [ + "prettier --parser=typescript --write" + ] }, "dependencies": { + "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-fetch-handler": "latest", "@ant-design/icons": "^5.0.0", + "@ant-design/pro-components": "^2.3.52", "@formily/antd": "^2.1.4", "@formily/core": "^2.1.4", "@formily/react": "^2.1.4", "@tenx-ui/icon": "^2.4.13", + "@tenx-ui/materials": "1.0.11", "@tenx-ui/utils": "^2.2.1", "@umijs/max": "^4.0.42", "antd": "^5.1.4", @@ -51,10 +63,7 @@ "graphql-tag": "^2.12.6", "react": "^18.1.0", "react-dom": "^18.1.0", - "swr": "^2.0.0", - "@alilc/lowcode-datasource-fetch-handler": "latest", - "@alilc/lowcode-datasource-engine": "latest", - "@tenx-ui/materials": "1.0.11" + "swr": "^2.0.0" }, "devDependencies": { "@babel/eslint-parser": "^7.19.1", @@ -98,5 +107,7 @@ "ts-node": "^10", "typescript": "^4" }, - "engines": { "node": ">=10.13.0" } + "engines": { + "node": ">=10.13.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b3282e..85605d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,7 @@ specifiers: '@alilc/lowcode-datasource-engine': latest '@alilc/lowcode-datasource-fetch-handler': latest '@ant-design/icons': ^5.0.0 + '@ant-design/pro-components': ^2.3.52 '@babel/eslint-parser': ^7.19.1 '@babel/plugin-proposal-decorators': ^7.20.5 '@commitlint/cli': ^13.1.0 @@ -66,13 +67,14 @@ dependencies: '@alilc/lowcode-datasource-engine': 1.1.4 '@alilc/lowcode-datasource-fetch-handler': 1.1.4 '@ant-design/icons': 5.0.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-components': 2.3.52_c3fwmi35b2oqhubqlfd6lsqaqy '@formily/antd': 2.2.16_yjqdmdfrtsnptz6f47tu6vulyu '@formily/core': 2.2.16 '@formily/react': 2.2.16_imsf4monu2ro3jsq722crax7fe '@tenx-ui/icon': 2.4.13_4wymetwju2f67kkws2jsebarle '@tenx-ui/materials': 1.0.11_4wymetwju2f67kkws2jsebarle '@tenx-ui/utils': 2.2.1_v2m5e27vhdewzwhryxwfaorcca - '@umijs/max': 4.0.44_dubak3sm6kr32wj4hxzec2jvdy + '@umijs/max': 4.0.44_zknumggqfl744whfmgwwnhtdda antd: 5.1.4_biqbaboplfbrettd7655fr4n2y babel-runtime: 6.26.0 classnames: 2.3.2 @@ -268,7 +270,7 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@ant-design/pro-card/2.1.10_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-card/2.1.10_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-edajGd2/35w73tLC7yMZf2/8tWg4Wz9pmN6jQgFo+QIRXoaHd5zpeQaOMxZojeqzCxTH0Qt60YpeLp/S+ahupQ==} peerDependencies: antd: '>=4.23.0' @@ -276,7 +278,7 @@ packages: dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -285,45 +287,47 @@ packages: rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 transitivePeerDependencies: + - prop-types - react-dom dev: false - /@ant-design/pro-components/2.3.52_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-components/2.3.52_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-df51Xi59QRXXIc5uMcO/7/tPjNziGt1w40860yCztFBNCoNc9B+xvDwsuRWgvRL1yqM4SZL1Al7T392CtyESSg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-descriptions': 2.0.44_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-layout': 7.6.1_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-list': 2.0.45_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-card': 2.1.10_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-descriptions': 2.0.44_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-field': 2.2.5_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-form': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-layout': 7.6.1_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-list': 2.0.45_c3fwmi35b2oqhubqlfd6lsqaqy '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q '@ant-design/pro-skeleton': 2.0.7_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-table': 3.2.12_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-table': 3.2.12_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' + - prop-types - rc-field-form dev: false - /@ant-design/pro-descriptions/2.0.44_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-descriptions/2.0.44_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-UEwZbvjOBTxWvPGv8qb3i+Q5czuHFYwRokSgVzVyS2el6xLYr4ZjG0a2CQsjbBnIb0MvZCfnkIn+W0XD/bjS3g==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-field': 2.2.5_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-form': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@ant-design/pro-skeleton': 2.0.7_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y @@ -331,11 +335,12 @@ packages: use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' + - prop-types - rc-field-form - react-dom dev: false - /@ant-design/pro-field/2.2.5_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-field/2.2.5_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-7Rp0uRhdCUnOFKXkId5wCjjQJBWo0sMhOQs10y40/hNpGpTEpVuEmJo2Jx4Sj2hj/g663WOUSF0YBK7PhFtTFA==} peerDependencies: antd: '>=4.23.0' @@ -343,7 +348,7 @@ packages: dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y @@ -355,10 +360,11 @@ packages: react: 18.2.0 swr: 2.0.0_react@18.2.0 transitivePeerDependencies: + - prop-types - react-dom dev: false - /@ant-design/pro-form/2.5.4_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-form/2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-Udzs2BLLHK9xhryB0GqE4FvC0KVjiD88z0NqSkJT1AfFMbBn5ERUh2TJ87vfSc8CS4UPGGeU868YzXVMR9AkbA==} peerDependencies: '@types/lodash.merge': ^4.6.7 @@ -371,9 +377,9 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-field': 2.2.5_c3fwmi35b2oqhubqlfd6lsqaqy '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 '@umijs/use-params': 1.0.9_react@18.2.0 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y @@ -386,9 +392,11 @@ packages: react-dom: 18.2.0_react@18.2.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 + transitivePeerDependencies: + - prop-types dev: false - /@ant-design/pro-layout/7.6.1_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-layout/7.6.1_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-MNmOALRmVbAUbsbJSmUdXyKgvxyTG1pp9YYwway5AqKz28PdfDp6HhqrvCE7zRnxIaJWv9Vb6IZ/XqstI5zDeg==} peerDependencies: antd: '>=4.23.0' @@ -397,7 +405,7 @@ packages: dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 @@ -415,9 +423,11 @@ packages: use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 + transitivePeerDependencies: + - prop-types dev: false - /@ant-design/pro-list/2.0.45_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-list/2.0.45_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-jGcTqL+ziAKZ71NERmbfFST+BoOIyVy6NQNDvTNa2V/r2ZYR+eLStEcRfTp0MyWaWillXJqBIi3jNhDUIXWVhg==} peerDependencies: antd: '>=4.23.0' @@ -425,9 +435,9 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-table': 3.2.12_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-card': 2.1.10_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-field': 2.2.5_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-table': 3.2.12_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -440,6 +450,7 @@ packages: use-media-antd-query: 1.1.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' + - prop-types - rc-field-form dev: false @@ -474,7 +485,7 @@ packages: use-media-antd-query: 1.1.0_react@18.2.0 dev: false - /@ant-design/pro-table/3.2.12_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-table/3.2.12_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-jhfKBtU5DnOlj0eL/Tz3D5j9DZt6KeWCcaJOA/FDr/ZTj5ROUThhK5DqzeLjR9O/DTBCgiwB8Vpiqt0uWPWlXw==} peerDependencies: antd: '>=4.23.0' @@ -483,11 +494,11 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-card': 2.1.10_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-field': 2.2.5_c3fwmi35b2oqhubqlfd6lsqaqy + '@ant-design/pro-form': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy '@babel/runtime': 7.20.7 antd: 5.1.4_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -497,14 +508,15 @@ packages: rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y + react-sortable-hoc: 2.0.0_v2m5e27vhdewzwhryxwfaorcca unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' + - prop-types dev: false - /@ant-design/pro-utils/2.5.4_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/pro-utils/2.5.4_c3fwmi35b2oqhubqlfd6lsqaqy: resolution: {integrity: sha512-fwnGRcYQbJwIyTWvioCw443qJ2Jq/TdkR/LFoewJqQK8zeZ7I62pEgLqxK0l0sffZpN1cKAIQfydqvcT3kl+mQ==} peerDependencies: antd: '>=4.23.0' @@ -520,8 +532,10 @@ packages: rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y + react-sortable-hoc: 2.0.0_v2m5e27vhdewzwhryxwfaorcca swr: 2.0.0_react@18.2.0 + transitivePeerDependencies: + - prop-types dev: false /@ant-design/react-slick/1.0.0_react@18.2.0: @@ -2766,7 +2780,7 @@ packages: classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-sortable-hoc: 1.11.0_biqbaboplfbrettd7655fr4n2y + react-sortable-hoc: 1.11.0_v2m5e27vhdewzwhryxwfaorcca react-sticky-box: 0.9.3_sh5qlbywuemxd2y3xkrw2y2kr4 transitivePeerDependencies: - prop-types @@ -4339,12 +4353,12 @@ packages: - typescript dev: false - /@umijs/max/4.0.44_dubak3sm6kr32wj4hxzec2jvdy: + /@umijs/max/4.0.44_zknumggqfl744whfmgwwnhtdda: resolution: {integrity: sha512-lDVu+2SHxUvOzthInprswxHIUE6Bl/vxLw+kWuj2CJHNuBwIKdwf6aigw9L827PU+/0kNGfUelEWcwyTWuIe7w==} hasBin: true dependencies: '@umijs/lint': 4.0.44_6noexx63pelq4np7d7j3j4nzia - '@umijs/plugins': 4.0.44_aegj6e4bshbj2ek6a2qagy3lt4 + '@umijs/plugins': 4.0.44_m3v4qvuwhrv7q6gcgkajim2pvi antd: 5.1.4_biqbaboplfbrettd7655fr4n2y eslint: 8.31.0 stylelint: 14.8.2 @@ -4375,6 +4389,7 @@ packages: - postcss-markdown - postcss-scss - prettier + - prop-types - rc-field-form - react - react-dom @@ -4415,13 +4430,13 @@ packages: tsx: 3.12.2 dev: false - /@umijs/plugins/4.0.44_aegj6e4bshbj2ek6a2qagy3lt4: + /@umijs/plugins/4.0.44_m3v4qvuwhrv7q6gcgkajim2pvi: resolution: {integrity: sha512-jOwvMOycqcJ2DtCDy4RAUBI9iP3S4cmFILVGKKXXl1q/89/5JtCt2p0KD0JH8qQele+2Q7gusP5+mhbbojNEDA==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-components': 2.3.52_c3fwmi35b2oqhubqlfd6lsqaqy '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y '@tanstack/react-query-devtools': 4.22.0_gp275tdwez2a4eujt75dnnp754 '@umijs/bundler-utils': 4.0.44 @@ -4457,6 +4472,7 @@ packages: - babel-plugin-styled-components - debug - dva + - prop-types - rc-field-form - react - react-dom @@ -5770,8 +5786,8 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - is-text-path: 1.0.1 JSONStream: 1.3.5 + is-text-path: 1.0.1 lodash: 4.17.21 meow: 8.1.2 split2: 3.2.2 @@ -11894,9 +11910,10 @@ packages: react: 18.2.0 dev: false - /react-sortable-hoc/1.11.0_biqbaboplfbrettd7655fr4n2y: + /react-sortable-hoc/1.11.0_v2m5e27vhdewzwhryxwfaorcca: resolution: {integrity: sha1-/kAiNiu6/EuDb1EEuWdmCKQKJ48=} peerDependencies: + prop-types: ^15.5.7 react: ^0.14.0 || ^15.0.0 || ^16.0.0 react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 dependencies: @@ -11907,9 +11924,10 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-sortable-hoc/2.0.0_biqbaboplfbrettd7655fr4n2y: + /react-sortable-hoc/2.0.0_v2m5e27vhdewzwhryxwfaorcca: resolution: {integrity: sha1-9ngNiqS5IqIfPnVK9ULwMmdweLc=} peerDependencies: + prop-types: ^15.5.7 react: ^16.3.0 || ^17.0.0 react-dom: ^16.3.0 || ^17.0.0 dependencies: diff --git a/src/app.tsx b/src/app.tsx index 7fdf951..8239e69 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -13,7 +13,7 @@ import React from 'react'; import { RunTimeLayoutConfig } from '@umijs/max'; import { Typography, Modal } from 'antd'; import { history } from '@umijs/max'; -import logo from '@/assets/img/logo.png'; +import logo from '@/assets/img/logo-title-white.png'; import theme from '../config/theme'; import { initUnifiedLinkHistory } from '@tenx-ui/utils/es/UnifiedLink'; import utils from './utils'; @@ -49,9 +49,9 @@ const Title = ({ icon }: any) => { const authData = utils.getAuthData(); const userName = authData?.user?.name || 'N/A'; if (icon) { - return
{userName.split('')?.[0]}
; + return
{userName.split('')?.[0]}
; } - return
{userName}
; + return
{userName}
; }; export const layout: RunTimeLayoutConfig = () => { @@ -61,8 +61,11 @@ export const layout: RunTimeLayoutConfig = () => { }); return { - title: 'devops-manager-portal', - logo: , + title: false, + logo: logo, + siderWidth: 200, + fixedHeader: true, + fixSiderbar: true, rightContentRender: false, // umi !!! avatarProps: { title: , @@ -87,6 +90,7 @@ export const layout: RunTimeLayoutConfig = () => { </Typography.Link>, <Tooltip key="locale" title={langInfo.tooltip}> <GlobalOutlined + style={{ color: '#fff' }} onClick={() => { setLocale(langInfo.change); window.location.reload(); @@ -95,22 +99,9 @@ export const layout: RunTimeLayoutConfig = () => { </Tooltip>, ]; }, - headerRender: (_, HeaderView) => { - // return !IS_PROD ? HeaderView : null; - return HeaderView; - }, - menuRender: (_, menuView) => { - // return !IS_PROD ? menuView : null; - return menuView; - }, - menuHeaderRender: (logo: React.ReactNode) => { - return null; - }, + menuHeaderRender: false, // layout: !IS_PROD ? 'mix' : 'side', layout: 'mix', - headerTitleRender: () => { - return <img style={{ height: '32px' }} src={logo} />; - }, menu: { flatMenu: true, hideMenuWhenCollapsed: true, @@ -121,17 +112,26 @@ export const layout: RunTimeLayoutConfig = () => { type: 'group', // 'sub' | 'group'; autoClose: false, }, - navTheme: 'dark', - headerTheme: 'dark', settings: { - navTheme: 'dark', - primaryColor: theme?.token?.colorPrimary, - }, - footerRender: () => { - return null; + // }, - menuProps: { - // theme: 'dark', + footerRender: false, + token: { + colorPrimary: theme.token.colorPrimary, + bgLayout: '#ffffff', + header: { + colorBgHeader: '#272a32', + colorHeaderTitle: '#fff', + colorTextMenu: '#fff', + }, + sider: { + // #ffffff + }, + pageContainer: { + colorBgPageContainer: '#f6f6f6', + paddingInlinePageContainerContent: 0, + paddingBlockPageContainerContent: 0, + }, }, // 其他属性见:https://procomponents.ant.design/components/layout#prolayout }; diff --git a/src/assets/img/logo-title-white.png b/src/assets/img/logo-title-white.png new file mode 100644 index 0000000000000000000000000000000000000000..b0133fcea3309072375b60ccc987c823a7c482da GIT binary patch literal 23262 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 VmzQ<BTeE(*rKfX8yAt9M@jojw#|Hoa literal 0 HcmV?d00001 diff --git a/src/global.less b/src/global.less index 0c63e76..829a2d7 100644 --- a/src/global.less +++ b/src/global.less @@ -31,3 +31,16 @@ background-color: rgba(0, 0, 0, 0.45); } } + +body, +html { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + #root, + .ant-pro, + .ant-pro-layout { + height: 100%; + } +} From 68e019f6ef6d6e2735aa485053cfd4e6ac228c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=B9=8F=E7=A8=8B=28=E6=97=B6=E9=80=9F=E4=BA=91?= =?UTF-8?q?=29?= <zhang.pengcheng3@21vianet.com> Date: Fri, 3 Feb 2023 13:57:51 +0800 Subject: [PATCH 3/3] fix: [PAASC-8002] fix issues --- bff-sdk/sdk.ts | 18 +++- package.json | 2 +- pnpm-lock.yaml | 8 +- src/i18n.js | 8 ++ src/pages/Federation/index.jsx | 27 ++++-- src/pages/FederationDetail/index.jsx | 29 ++++++- src/pages/Network/index.jsx | 14 ++-- src/pages/NetworkCreate/index.jsx | 109 ++----------------------- src/pages/NetworkDetail/index.jsx | 26 +++++- src/pages/Organization/index.jsx | 24 +++++- src/pages/OrganizationDetail/index.jsx | 19 ++++- src/pages/Proposal/index.jsx | 21 ++++- src/pages/ProposalDetail/index.jsx | 92 +++++++++++++++++++-- 13 files changed, 261 insertions(+), 136 deletions(-) diff --git a/bff-sdk/sdk.ts b/bff-sdk/sdk.ts index 45923c2..725cb33 100644 --- a/bff-sdk/sdk.ts +++ b/bff-sdk/sdk.ts @@ -1,9 +1,9 @@ import { GraphQLClient } from 'graphql-request'; +import { ClientError } from 'graphql-request/dist/types'; import * as Dom from 'graphql-request/dist/types.dom'; import gql from 'graphql-tag'; -import { ClientError } from 'graphql-request/dist/types'; +import { Key as SWRKeyInterface, SWRConfiguration as SWRConfigInterface } from 'swr'; import useSWR from './useSWR'; -import { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr'; export type Maybe<T> = T | null; export type InputMaybe<T> = Maybe<T>; export type Exact<T extends { [key: string]: unknown }> = { @@ -22,6 +22,8 @@ export type Scalars = { Boolean: boolean; Int: number; Float: number; + JSON: any; + JSONObject: any; }; /** 联盟 */ @@ -49,6 +51,8 @@ export type Federation = { /** 「联盟」状态 */ export enum FederationStatus { + /** 失败 */ + Error = 'Error', /** 已激活 */ FederationActivated = 'FederationActivated', /** 已解散 */ @@ -255,6 +259,10 @@ export type Proposal = { creationTimestamp: Scalars['String']; /** 截止时间 */ endAt?: Maybe<Scalars['String']>; + /** 相关联盟 */ + federation?: Maybe<Scalars['String']>; + /** 相关内容 */ + information?: Maybe<Scalars['JSONObject']>; /** 发起者 */ initiator?: Maybe<Organization>; /** name */ @@ -775,6 +783,7 @@ export type GetProposalsQuery = { policy?: ProposalPolicy | null; status?: ProposalStatus | null; voted?: VotePhase | null; + federation?: string | null; initiator?: { __typename?: 'Organization'; name: string; @@ -809,6 +818,8 @@ export type GetProposalQuery = { policy?: ProposalPolicy | null; status?: ProposalStatus | null; voted?: VotePhase | null; + federation?: string | null; + information?: any | null; initiator?: { __typename?: 'Organization'; name: string; @@ -1095,6 +1106,7 @@ export const GetProposalsDocument = gql` policy status voted + federation initiator { name admin @@ -1122,6 +1134,8 @@ export const GetProposalDocument = gql` policy status voted + federation + information initiator { name admin diff --git a/package.json b/package.json index 9af4e31..49fad56 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@formily/core": "^2.1.4", "@formily/react": "^2.1.4", "@tenx-ui/icon": "^2.4.13", - "@tenx-ui/materials": "1.0.11", + "@tenx-ui/materials": "1.0.13", "@tenx-ui/utils": "^2.2.1", "@umijs/max": "^4.0.42", "antd": "^5.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85605d4..333c766 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ specifiers: '@formily/core': ^2.1.4 '@formily/react': ^2.1.4 '@tenx-ui/icon': ^2.4.13 - '@tenx-ui/materials': 1.0.11 + '@tenx-ui/materials': 1.0.13 '@tenx-ui/utils': ^2.2.1 '@testing-library/jest-dom': ^5.16.4 '@testing-library/react': ^13 @@ -72,7 +72,7 @@ dependencies: '@formily/core': 2.2.16 '@formily/react': 2.2.16_imsf4monu2ro3jsq722crax7fe '@tenx-ui/icon': 2.4.13_4wymetwju2f67kkws2jsebarle - '@tenx-ui/materials': 1.0.11_4wymetwju2f67kkws2jsebarle + '@tenx-ui/materials': 1.0.13_4wymetwju2f67kkws2jsebarle '@tenx-ui/utils': 2.2.1_v2m5e27vhdewzwhryxwfaorcca '@umijs/max': 4.0.44_zknumggqfl744whfmgwwnhtdda antd: 5.1.4_biqbaboplfbrettd7655fr4n2y @@ -3722,8 +3722,8 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@tenx-ui/materials/1.0.11_4wymetwju2f67kkws2jsebarle: - resolution: {integrity: sha512-JLV3vAmMd5gJRdWAzNW6GjrAp4Cph5hEndr/FUweaMf0T7GnuLSbb5lYG7t6WvRw4ZWGamTKHis3Bsw27oYocA==} + /@tenx-ui/materials/1.0.13_4wymetwju2f67kkws2jsebarle: + resolution: {integrity: sha512-NWpaaU4orqhGpn1FcuTr/mCiIUivpTyXsF6ga0KjbuJLIQKIh+WKYbZiU/K+3vo46G75s7YwOYSOEJ83INXLPw==} dependencies: '@tenx-ui/icon': 2.4.13_4wymetwju2f67kkws2jsebarle '@tenx-ui/utils': 2.2.1_v2m5e27vhdewzwhryxwfaorcca diff --git a/src/i18n.js b/src/i18n.js index 4eb7ffd..a2bc5d9 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -36,6 +36,7 @@ const i18nConfig = { "i18n-54sfaqivd5i": "Organization management", "i18n-5er0ayqzcp": "Last update time", "i18n-5jwxi1nlnsm": "I created", + "i18n-5xl7aihzcuy": "total", "i18n-65qwbj9telu": "The proposal to disband the network succeeded", "i18n-66pkydvtrcv": "I manage", "i18n-67illnj3hic": "6 month", @@ -113,6 +114,7 @@ const i18nConfig = { "i18n-gnwdi4ep1vt": "Enter the user name to search", "i18n-gspz6pec67u": "AddMemberProposal", "i18n-gwumlhyv4ub": "Invitational member", + "i18n-h05l2cens9w": "Related federation", "i18n-h52hay1ld2s": "Delete a user", "i18n-h8159rss9ij": ",After the user is deleted, all permissions under the organization will be revoked", @@ -175,6 +177,7 @@ const i18nConfig = { "i18n-onidezp69vb": "Please choose to decide", "i18n-p5gea1q7fem": "User deletion failure", "i18n-p98jmw4mkzq": "Proposed voting strategy", + "i18n-pair5ijzb3j": "content", "i18n-pev2ce1ut3l": "FederationDissolved", "i18n-pg663sglzcs": "Standard edition", "i18n-pjire30gfe": "Enter voter search", @@ -207,6 +210,7 @@ const i18nConfig = { "i18n-v1ic8b3llyo": "Cut-off time", "i18n-v4wf8ejznd": "Total organizational users", "i18n-v6gmjbqnol": "Set initiator", + "i18n-v7xu122b9o": "item", "i18n-vo8kd18n6pd": "Consensus cluster node", "i18n-vxubih1pqa": "Network ID", "i18n-w4mcacnr3z": "Number of networks", @@ -270,6 +274,7 @@ const i18nConfig = { "i18n-54sfaqivd5i": "组织管理", "i18n-5er0ayqzcp": "最近更新时间", "i18n-5jwxi1nlnsm": "我创建的", + "i18n-5xl7aihzcuy": "共计", "i18n-65qwbj9telu": "解散网络提议成功", "i18n-66pkydvtrcv": "我管理的", "i18n-67illnj3hic": "6个月", @@ -345,6 +350,7 @@ const i18nConfig = { "i18n-gnwdi4ep1vt": "输入用户名搜索", "i18n-gspz6pec67u": "联盟添加组织", "i18n-gwumlhyv4ub": "邀请成员", + "i18n-h05l2cens9w": "相关联盟", "i18n-h52hay1ld2s": "删除用户", "i18n-h8159rss9ij": ",删除后,用户在该组织下所有权限将被收回", "i18n-hbf63hki898": "版本", @@ -405,6 +411,7 @@ const i18nConfig = { "i18n-onidezp69vb": "请选择决定", "i18n-p5gea1q7fem": "删除用户失败", "i18n-p98jmw4mkzq": "提议投票策略", + "i18n-pair5ijzb3j": "内容", "i18n-pev2ce1ut3l": "已解散", "i18n-pg663sglzcs": "标准版", "i18n-pjire30gfe": "输入投票人搜索", @@ -436,6 +443,7 @@ const i18nConfig = { "i18n-v1ic8b3llyo": "截止时间", "i18n-v4wf8ejznd": "组织用户总数", "i18n-v6gmjbqnol": "设置发起者", + "i18n-v7xu122b9o": "条", "i18n-vo8kd18n6pd": "共识集群节点", "i18n-vxubih1pqa": "网络 ID", "i18n-w4mcacnr3z": "网络个数", diff --git a/src/pages/Federation/index.jsx b/src/pages/Federation/index.jsx index ba53288..1d0e81b 100644 --- a/src/pages/Federation/index.jsx +++ b/src/pages/Federation/index.jsx @@ -253,6 +253,12 @@ class Federation$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() { const getOrganizations = async () => { var _res$organizations; @@ -351,7 +357,7 @@ class Federation$$Page extends React.Component { componentProps={{ colon: false, labelAlign: "left", - labelCol: 5, + labelCol: 7, layout: "horizontal", wrapperCol: 19, }} @@ -387,7 +393,7 @@ class Federation$$Page extends React.Component { message: "大小写字母, 数字, 中划线组成,开头和结尾只能是字母或数字", pattern: - "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "^[a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])?)*$", }, ], }} @@ -563,7 +569,7 @@ class Federation$$Page extends React.Component { "x-validator": [ { message: "联盟描述由 0 ~ 200 字符组成", - pattern: "^[\\w]{0,200}$", + pattern: "^.{0,200}$", }, ], }} @@ -648,7 +654,11 @@ class Federation$$Page extends React.Component { /> </Modal> <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Typography.Title __component_name="Typography.Title" bold={true} @@ -718,7 +728,7 @@ class Federation$$Page extends React.Component { __component_name="Space" align="center" direction="horizontal" - size="large" + size={34} > <Space __component_name="Space" @@ -1345,6 +1355,12 @@ class Federation$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -1384,6 +1400,7 @@ class Federation$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col> diff --git a/src/pages/FederationDetail/index.jsx b/src/pages/FederationDetail/index.jsx index 2ea0ccd..4b390e0 100644 --- a/src/pages/FederationDetail/index.jsx +++ b/src/pages/FederationDetail/index.jsx @@ -254,6 +254,12 @@ class FederationDetail$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() { const getOrganizations = async () => { var _res$organizations; @@ -283,7 +289,11 @@ class FederationDetail$$Page extends React.Component { style={{ height: "100%" }} > <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Button.Back __component_name="Button.Back" title={this._i18nText({ @@ -886,6 +896,14 @@ class FederationDetail$$Page extends React.Component { pageSize: __$$eval(() => this.state.userSize), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice + .call(arguments) + .concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -900,6 +918,7 @@ class FederationDetail$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-10px" }} /> </Col> </Row> @@ -914,6 +933,7 @@ class FederationDetail$$Page extends React.Component { }, ]} size="large" + style={{ marginTop: "-20px" }} tabPosition="top" type="line" /> @@ -1245,6 +1265,12 @@ class FederationDetail$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -1276,6 +1302,7 @@ class FederationDetail$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col> diff --git a/src/pages/Network/index.jsx b/src/pages/Network/index.jsx index 4cd335e..50b8cb0 100644 --- a/src/pages/Network/index.jsx +++ b/src/pages/Network/index.jsx @@ -214,7 +214,11 @@ class Network$$Page extends React.Component { return ( <Page> <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Typography.Title __component_name="Typography.Title" bold={true} @@ -434,13 +438,7 @@ class Network$$Page extends React.Component { gridEnable={true} itemLayout="horizontal" loading={__$$eval(() => this.props.useGetNetworks?.loading)} - pagination={{ - position: "top", - showQuickJumper: false, - showSizeChanger: false, - simple: false, - size: "default", - }} + pagination={false} renderItem={(item) => ((__$$context) => ( <List.Item __component_name="List.Item"> diff --git a/src/pages/NetworkCreate/index.jsx b/src/pages/NetworkCreate/index.jsx index 1ee0925..02cff6d 100644 --- a/src/pages/NetworkCreate/index.jsx +++ b/src/pages/NetworkCreate/index.jsx @@ -161,7 +161,11 @@ class NetworkCreate$$Page extends React.Component { return ( <Page> <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Typography.Title __component_name="Typography.Title" bold={true} @@ -584,108 +588,7 @@ class NetworkCreate$$Page extends React.Component { }} /> </Col> - <Col __component_name="Col" span={24}> - <Divider - __component_name="Divider" - content={[ - <FormilyRadio - __component_name="FormilyRadio" - componentProps={{ - "x-component-props": { - buttonStyle: "outline", - disabled: false, - optionType: "button", - size: "middle", - }, - }} - fieldProps={{ - _unsafe_MixedSetter_default_select: "StringSetter", - default: "1m", - enum: [ - { - label: this._i18nText({ - "en-US": "1 month", - key: "i18n-trhw8lpkemh", - "zh-CN": "1个月", - }), - value: "1m", - }, - { - label: this._i18nText({ - "en-US": "3 month", - key: "i18n-lie8dycfnu", - "zh-CN": "3个月", - }), - value: "3", - }, - { - children: "未知", - icon: "tenx-ui-icon:Circle", - id: "disabled", - label: this._i18nText({ - "en-US": "6 month", - key: "i18n-67illnj3hic", - "zh-CN": "6个月", - }), - type: "disabled", - value: "6", - }, - { - children: "未知", - icon: "tenx-ui-icon:Circle", - id: "disabled", - label: this._i18nText({ - "en-US": "1 year", - key: "i18n-uq1hm9mlcqd", - "zh-CN": "1年", - }), - type: "disabled", - value: "12", - }, - { - children: "未知", - icon: "tenx-ui-icon:Circle", - id: "disabled", - label: this._i18nText({ - "en-US": "2 year", - key: "i18n-jmam3xzi5le", - "zh-CN": "2年", - }), - type: "disabled", - value: "24", - }, - { - children: "未知", - icon: "tenx-ui-icon:Circle", - id: "disabled", - label: this._i18nText({ - "en-US": "more", - key: "i18n-2b4dhrz51wu", - "zh-CN": "更多", - }), - type: "disabled", - value: "more", - }, - ], - name: "sc", - title: this._i18nText({ - "en-US": "duration", - key: "i18n-g2ktwfqaf0g", - "zh-CN": "时长", - }), - "x-validator": [], - }} - />, - ]} - dashed={true} - defaultOpen={true} - mode="expanded" - orientation="left" - orientationMargin={0} - > - 高级配置 - </Divider> - </Col> + <Col __component_name="Col" span={24} /> </Row> </FormilyForm> <Divider diff --git a/src/pages/NetworkDetail/index.jsx b/src/pages/NetworkDetail/index.jsx index d88c959..1ec1dbb 100644 --- a/src/pages/NetworkDetail/index.jsx +++ b/src/pages/NetworkDetail/index.jsx @@ -217,6 +217,12 @@ class NetworkDetail$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() { const getOrganizations = async () => { var _res$organizations; @@ -243,7 +249,11 @@ class NetworkDetail$$Page extends React.Component { return ( <Page> <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Button.Back __component_name="Button.Back" title={this._i18nText({ @@ -964,6 +974,12 @@ class NetworkDetail$$Page extends React.Component { pageSize: __$$eval(() => this.state.userSize), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -990,6 +1006,7 @@ class NetworkDetail$$Page extends React.Component { }, ]} size="large" + style={{ marginTop: "-20px" }} tabPosition="top" type="line" /> @@ -1362,6 +1379,12 @@ class NetworkDetail$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -1393,6 +1416,7 @@ class NetworkDetail$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col> diff --git a/src/pages/Organization/index.jsx b/src/pages/Organization/index.jsx index 4b97dfd..545f97c 100644 --- a/src/pages/Organization/index.jsx +++ b/src/pages/Organization/index.jsx @@ -173,6 +173,12 @@ class Organization$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() {} render() { @@ -184,7 +190,11 @@ class Organization$$Page extends React.Component { style={{ height: "100%" }} > <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Typography.Title __component_name="Typography.Title" bold={true} @@ -254,12 +264,13 @@ class Organization$$Page extends React.Component { __component_name="Space" align="center" direction="horizontal" - size="large" + size={34} > <Space __component_name="Space" align="center" direction="horizontal" + size={8} > <Radio.Group __component_name="Radio.Group" @@ -384,6 +395,7 @@ class Organization$$Page extends React.Component { key: "i18n-bvuyqd393pj", "zh-CN": "输入组织名称或创建人搜索", })} + style={{ width: "" }} /> </Space> </Col> @@ -694,7 +706,12 @@ class Organization$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, - showTotal: null, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -717,6 +734,7 @@ class Organization$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col> diff --git a/src/pages/OrganizationDetail/index.jsx b/src/pages/OrganizationDetail/index.jsx index bf0d1d8..17407de 100644 --- a/src/pages/OrganizationDetail/index.jsx +++ b/src/pages/OrganizationDetail/index.jsx @@ -301,6 +301,12 @@ class OrganizationDetail$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() {} render() { @@ -312,7 +318,11 @@ class OrganizationDetail$$Page extends React.Component { style={{ height: "100%" }} > <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Button.Back __component_name="Button.Back" title={this._i18nText({ @@ -1052,6 +1062,12 @@ class OrganizationDetail$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -1076,6 +1092,7 @@ class OrganizationDetail$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col> diff --git a/src/pages/Proposal/index.jsx b/src/pages/Proposal/index.jsx index 4f64e7d..7f2365b 100644 --- a/src/pages/Proposal/index.jsx +++ b/src/pages/Proposal/index.jsx @@ -153,6 +153,12 @@ class Proposal$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() {} render() { @@ -164,7 +170,11 @@ class Proposal$$Page extends React.Component { style={{ height: "100%" }} > <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Typography.Title __component_name="Typography.Title" bold={true} @@ -651,7 +661,7 @@ class Proposal$$Page extends React.Component { (vote) => vote.organizationAdmin === this.props.authData?.user?.name && - vote.status === "Created" + vote.status === "Voting" ); } return ( @@ -707,6 +717,12 @@ class Proposal$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -760,6 +776,7 @@ class Proposal$$Page extends React.Component { scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col> diff --git a/src/pages/ProposalDetail/index.jsx b/src/pages/ProposalDetail/index.jsx index ce255fa..8f1c9c1 100644 --- a/src/pages/ProposalDetail/index.jsx +++ b/src/pages/ProposalDetail/index.jsx @@ -192,6 +192,12 @@ class ProposalDetail$$Page extends React.Component { }); } + paginationShowTotal(total, range) { + return `${this.i18n("i18n-5xl7aihzcuy")} ${total} ${this.i18n( + "i18n-v7xu122b9o" + )}`; + } + componentDidMount() {} render() { @@ -203,7 +209,11 @@ class ProposalDetail$$Page extends React.Component { style={{ height: "100%" }} > <Row __component_name="Row" wrap={true}> - <Col __component_name="Col" span={24}> + <Col + __component_name="Col" + span={24} + style={{ paddingBottom: "12px" }} + > <Button.Back __component_name="Button.Back" title={this._i18nText({ @@ -276,6 +286,20 @@ class ProposalDetail$$Page extends React.Component { }), span: 1, }, + { + children: __$$eval( + () => + this.props.useGetProposal?.data?.proposal?.federation || + "-" + ), + key: "fh1j44o9bpr", + label: this._i18nText({ + "en-US": "Related federation", + key: "i18n-h05l2cens9w", + "zh-CN": "相关联盟", + }), + span: 1, + }, { children: ( <Typography.Time @@ -396,13 +420,21 @@ class ProposalDetail$$Page extends React.Component { }), span: 1, }, + { + _unsafe_MixedSetter_children_select: "SlotSetter", + children: null, + key: "h44w5btrr16", + label: this._i18nText({ + "en-US": "content", + key: "i18n-pair5ijzb3j", + "zh-CN": "内容", + }), + span: 1, + }, ]} labelStyle={{ width: 100 }} layout="horizontal" size="default" - title={__$$eval( - () => this.props.useGetProposal?.data?.proposal?.name - )} > <Descriptions.Item __component_name="Descriptions.Item" @@ -456,6 +488,22 @@ class ProposalDetail$$Page extends React.Component { )?.text || "-" )} </Descriptions.Item> + <Descriptions.Item + __component_name="Descriptions.Item" + key="fh1j44o9bpr" + label={this._i18nText({ + "en-US": "Related federation", + key: "i18n-h05l2cens9w", + "zh-CN": "相关联盟", + })} + span={1} + > + {__$$eval( + () => + this.props.useGetProposal?.data?.proposal?.federation || + "-" + )} + </Descriptions.Item> <Descriptions.Item __component_name="Descriptions.Item" key="lu5nygtudhq" @@ -581,6 +629,33 @@ class ProposalDetail$$Page extends React.Component { /> } </Descriptions.Item> + <Descriptions.Item + __component_name="Descriptions.Item" + key="h44w5btrr16" + label={this._i18nText({ + "en-US": "content", + key: "i18n-pair5ijzb3j", + "zh-CN": "内容", + })} + span={1} + > + { + <Typography.Text + __component_name="Typography.Text" + disabled={false} + ellipsis={true} + strong={false} + style={{ fontSize: "" }} + > + {__$$eval(() => + JSON.stringify( + this.props.useGetProposal?.data?.proposal + ?.information || {} + ) + )} + </Typography.Text> + } + </Descriptions.Item> </Descriptions> </Card> </Col> @@ -1024,6 +1099,12 @@ class ProposalDetail$$Page extends React.Component { pageSize: __$$eval(() => this.state.size), showQuickJumper: false, showSizeChanger: false, + showTotal: function () { + return this.paginationShowTotal.apply( + this, + Array.prototype.slice.call(arguments).concat([]) + ); + }.bind(this), simple: false, size: "default", total: __$$eval( @@ -1052,10 +1133,11 @@ class ProposalDetail$$Page extends React.Component { ).length ), }} - rowKey="voteTime" + rowKey="name" scroll={{ scrollToFirstRowOnChange: true }} showHeader={true} size="default" + style={{ marginTop: "-20px" }} /> </Card> </Col>