mirror of
https://github.com/whyour/qinglong.git
synced 2025-07-07 11:56:08 +08:00
修复antd兼容性,日志详情自动滚动
This commit is contained in:
parent
443c581955
commit
2e3c3274c7
|
@ -42,7 +42,8 @@
|
|||
"monaco-editor",
|
||||
"rc-field-form",
|
||||
"@types/lodash.merge",
|
||||
"rollup"
|
||||
"rollup",
|
||||
"styled-components"
|
||||
],
|
||||
"allowedVersions": {
|
||||
"react": "18",
|
||||
|
@ -90,7 +91,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@ant-design/icons": "^4.7.0",
|
||||
"@ant-design/pro-layout": "^6.33.1",
|
||||
"@ant-design/pro-layout": "6.38.22",
|
||||
"@monaco-editor/react": "4.4.6",
|
||||
"@react-hook/resize-observer": "^1.2.6",
|
||||
"@sentry/react": "^7.12.1",
|
||||
|
@ -114,10 +115,10 @@
|
|||
"@types/sockjs": "^0.3.33",
|
||||
"@types/sockjs-client": "^1.5.1",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@umijs/max": "^4.0.21",
|
||||
"@umijs/max": "^4.0.42",
|
||||
"@umijs/ssr-darkreader": "^4.9.45",
|
||||
"ansi-to-react": "^6.1.6",
|
||||
"antd": "^4.23.0",
|
||||
"antd": "^4.24.7",
|
||||
"antd-img-crop": "^4.2.3",
|
||||
"codemirror": "^5.65.2",
|
||||
"compression-webpack-plugin": "9.2.0",
|
||||
|
|
268
pnpm-lock.yaml
268
pnpm-lock.yaml
|
@ -2,7 +2,7 @@ lockfileVersion: 5.4
|
|||
|
||||
specifiers:
|
||||
'@ant-design/icons': ^4.7.0
|
||||
'@ant-design/pro-layout': ^6.33.1
|
||||
'@ant-design/pro-layout': 6.38.22
|
||||
'@monaco-editor/react': 4.4.6
|
||||
'@otplib/preset-default': ^12.0.1
|
||||
'@react-hook/resize-observer': ^1.2.6
|
||||
|
@ -29,10 +29,10 @@ specifiers:
|
|||
'@types/sockjs': ^0.3.33
|
||||
'@types/sockjs-client': ^1.5.1
|
||||
'@types/uuid': ^8.3.4
|
||||
'@umijs/max': ^4.0.21
|
||||
'@umijs/max': ^4.0.42
|
||||
'@umijs/ssr-darkreader': ^4.9.45
|
||||
ansi-to-react: ^6.1.6
|
||||
antd: ^4.23.0
|
||||
antd: ^4.24.7
|
||||
antd-img-crop: ^4.2.3
|
||||
body-parser: ^1.19.2
|
||||
celebrate: ^15.0.1
|
||||
|
@ -157,7 +157,7 @@ devDependencies:
|
|||
'@types/sockjs': 0.3.33
|
||||
'@types/sockjs-client': 1.5.1
|
||||
'@types/uuid': 8.3.4
|
||||
'@umijs/max': 4.0.41_u7gqvy2j7ayrx2yacupeqg5dii
|
||||
'@umijs/max': 4.0.42_u7gqvy2j7ayrx2yacupeqg5dii
|
||||
'@umijs/ssr-darkreader': 4.9.45
|
||||
ansi-to-react: 6.1.6_biqbaboplfbrettd7655fr4n2y
|
||||
antd: 4.24.7_biqbaboplfbrettd7655fr4n2y
|
||||
|
@ -689,6 +689,17 @@ packages:
|
|||
resize-observer-polyfill: 1.5.1
|
||||
dev: true
|
||||
|
||||
/@antfu/install-pkg/0.1.1:
|
||||
resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
|
||||
dependencies:
|
||||
execa: 5.1.1
|
||||
find-up: 5.0.0
|
||||
dev: true
|
||||
|
||||
/@antfu/utils/0.7.2:
|
||||
resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==}
|
||||
dev: true
|
||||
|
||||
/@babel/cli/7.20.7_@babel+core@7.20.7:
|
||||
resolution: {integrity: sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
@ -2980,6 +2991,29 @@ packages:
|
|||
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
|
||||
dev: true
|
||||
|
||||
/@iconify-json/fa/1.1.3:
|
||||
resolution: {integrity: sha512-Cmzx42MZ2kTOLNGFlplEEvFXPsHkofoIX7iO+XZggyUpLjJjf/3AJS01NzNDoDhol9OZEUz7I0syGtuAjfOv4w==}
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
dev: true
|
||||
|
||||
/@iconify/types/2.0.0:
|
||||
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
|
||||
dev: true
|
||||
|
||||
/@iconify/utils/2.0.9:
|
||||
resolution: {integrity: sha512-ropNqaeamoxZvXxvaTJXrI0MrqdWdDVIs/mW7/sEQbNi0aXYUGL2iuLs1da3QR163gyG63kiyTsqw2oQYamw3Q==}
|
||||
dependencies:
|
||||
'@antfu/install-pkg': 0.1.1
|
||||
'@antfu/utils': 0.7.2
|
||||
'@iconify/types': 2.0.0
|
||||
debug: 4.3.4
|
||||
kolorist: 1.6.0
|
||||
local-pkg: 0.4.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@istanbuljs/load-nyc-config/1.1.0:
|
||||
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -3114,7 +3148,7 @@ packages:
|
|||
react:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@babel/runtime': 7.20.7
|
||||
hoist-non-react-statics: 3.3.2
|
||||
react: 18.1.0
|
||||
react-is: 16.13.1
|
||||
|
@ -3129,7 +3163,7 @@ packages:
|
|||
react:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@babel/runtime': 7.20.7
|
||||
hoist-non-react-statics: 3.3.2
|
||||
react: 18.2.0
|
||||
react-is: 16.13.1
|
||||
|
@ -3572,7 +3606,7 @@ packages:
|
|||
postcss:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/core': 7.18.9
|
||||
'@babel/core': 7.20.7
|
||||
postcss: 8.4.20
|
||||
postcss-syntax: 0.36.2_postcss@8.4.20
|
||||
transitivePeerDependencies:
|
||||
|
@ -4317,21 +4351,21 @@ packages:
|
|||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
/@umijs/ast/4.0.41:
|
||||
resolution: {integrity: sha512-hZRzGDyBOHwO8/NUMa8FH4u3Z6Y2btFv8tHXiKP5W/YBZukYS4BzhpwZyVn3nrBnfg0WFOKNuT4xGAE3LrRZ3Q==}
|
||||
/@umijs/ast/4.0.42:
|
||||
resolution: {integrity: sha512-wY2c2cNytjIGRlRbS6sZb0zIXTAYTJJSvQJvZNGI1KkgTBfn2Nn3yyQBmJ4W5k73ZYI/+EyKuJsdVxjiNZYtdA==}
|
||||
dependencies:
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@umijs/babel-preset-umi/4.0.41:
|
||||
resolution: {integrity: sha512-GQTYhqRWcjmgC7KKmWSG4al2YeV2KVXvkoCxM6Q4LJ3veqCo+aOyBXhILRJQ0jm3A3jGRXI2y6QqMAm8A3v3mQ==}
|
||||
/@umijs/babel-preset-umi/4.0.42:
|
||||
resolution: {integrity: sha512-zhaJGYNffvgTMpKCBdntHedLGb8TQxfblv6U4gdHhwTaiyKaEfROpZXXoQBrCErnNB2fBcIbH+BJRHXkqwnXhg==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@bloomberg/record-tuple-polyfill': 0.0.4
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
babel-plugin-styled-components: 2.0.7
|
||||
core-js: 3.22.4
|
||||
transitivePeerDependencies:
|
||||
|
@ -4339,12 +4373,12 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-esbuild/4.0.41:
|
||||
resolution: {integrity: sha512-F7LsDjBF7SFCaf9M7AMLHpE7vTtPTk/ZUeV+fxKVMUFPQ6KsIuW6MobBe9lJLzbSFSbXkmsW29J5JV4Z8JnYxQ==}
|
||||
/@umijs/bundler-esbuild/4.0.42:
|
||||
resolution: {integrity: sha512-Bt+9oQjxiV26NZbSbTdb2rnXwdFjf8PbH682ozBe+SAuoWXh4UqnxXItDgs193hvhCfdf+O4HlhxfdrLNB5olg==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
enhanced-resolve: 5.9.3
|
||||
postcss: 8.4.20
|
||||
postcss-flexbugs-fixes: 5.0.2_postcss@8.4.20
|
||||
|
@ -4353,10 +4387,10 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-utils/4.0.41:
|
||||
resolution: {integrity: sha512-4eDvbeam1PV7Hbns+z8S4P/ILXi+UIWhoMY1tN4N4y78VNjyKmMQMvUp0UKeNLsxBGMvWtFpn7DLqcON/49OhA==}
|
||||
/@umijs/bundler-utils/4.0.42:
|
||||
resolution: {integrity: sha512-cXhMyCiSK/Otg5nkeDJuDeRS84KqFoSR14BTtKkRCH6N3Dk9Xp2q8zXne9DNdQx7HUvb6s1pmA6Pc9S1mzNp5g==}
|
||||
dependencies:
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/utils': 4.0.42
|
||||
esbuild: 0.15.18
|
||||
regenerate: 1.4.2
|
||||
regenerate-unicode-properties: 10.0.1
|
||||
|
@ -4365,13 +4399,13 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-vite/4.0.41_@types+node@17.0.45:
|
||||
resolution: {integrity: sha512-zOhvsEW2D6wYnNs5Dfy+uSiDU7nrKe2Txk3m/iiLovjLOuujz99/brr1CnE5yDnCw7RDRgHa1sYesKnrP4KsPw==}
|
||||
/@umijs/bundler-vite/4.0.42_@types+node@17.0.45:
|
||||
resolution: {integrity: sha512-14pkpFyczSPBf9VCptCGupPIu9Nobvn9RdG5PY+j6pSNOHNooKNBCxjK/PqlR5gEuSiDdp4qGP2mZdAiMW3dNQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@svgr/core': 6.2.1
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
'@vitejs/plugin-react': 2.2.0_vite@3.2.5
|
||||
less: 4.1.2
|
||||
postcss-preset-env: 7.5.0
|
||||
|
@ -4388,8 +4422,8 @@ packages:
|
|||
- terser
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-webpack/4.0.41_cdwcylzbt7apydvbx5kbqfz4va:
|
||||
resolution: {integrity: sha512-l/7dzIN4ZJyniDdeqk96FepPApJhqUWGgERHu1UiXDh/aYoO2Gn+M/V2ZqOU2Mg42JcRFddnEqWtqriJDS2WTQ==}
|
||||
/@umijs/bundler-webpack/4.0.42_cdwcylzbt7apydvbx5kbqfz4va:
|
||||
resolution: {integrity: sha512-cu4xdGRPHuLnyHvzFg6eq7t07M/rTynOC9vr2ih40iw5Z8WSZyqzgRAJ94len63GL0twPh/9GMjzwvCXR5xUCQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@parcel/css': 1.9.0
|
||||
|
@ -4398,11 +4432,11 @@ packages:
|
|||
'@svgr/plugin-jsx': 6.5.1_@svgr+core@6.2.1
|
||||
'@svgr/plugin-svgo': 6.5.1_@svgr+core@6.2.1
|
||||
'@types/hapi__joi': 17.1.8
|
||||
'@umijs/babel-preset-umi': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/babel-preset-umi': 4.0.42
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/case-sensitive-paths-webpack-plugin': 1.0.1
|
||||
'@umijs/mfsu': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/mfsu': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
cors: 2.8.5
|
||||
css-loader: 6.7.1_webpack@5.75.0
|
||||
es5-imcompatible-versions: 0.1.77
|
||||
|
@ -4431,11 +4465,11 @@ packages:
|
|||
resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==}
|
||||
dev: true
|
||||
|
||||
/@umijs/core/4.0.41:
|
||||
resolution: {integrity: sha512-WC+/w1a7/SRbfqdY61dMPLU19bgsVVQ2nADR84zHdgYoHNtDlXCFoI3SibUM+qp0sAOK4HX4mR8gRhjmnOGhzw==}
|
||||
/@umijs/core/4.0.42:
|
||||
resolution: {integrity: sha512-ZWC8ApIg8uz1pOlJLcNQveYdT+zXmJCN0plQN61dUuNT/zkwOnCdjjYr6uO+icYEXqGG/CQdcPFaZReerfmC+Q==}
|
||||
dependencies:
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
@ -4447,19 +4481,19 @@ packages:
|
|||
/@umijs/history/5.3.1:
|
||||
resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@babel/runtime': 7.20.7
|
||||
query-string: 6.14.1
|
||||
dev: true
|
||||
|
||||
/@umijs/lint/4.0.41_d6a4x3x3q3loe4v2ypyqhqerii:
|
||||
resolution: {integrity: sha512-t6iV1akxEKKGjYd2q879kMAPNgmha/BgsFS4UBC1XABXWVZ/gO2r8qlWyrt/uxC0VcBTz/6z2ETNrtFQWuqtQQ==}
|
||||
/@umijs/lint/4.0.42_d6a4x3x3q3loe4v2ypyqhqerii:
|
||||
resolution: {integrity: sha512-7dqFHIzy5nMfx6iQIf6zkXuSAmLf5TNE5SdJmK0eYc+uqe6PKkflXJ8+9J5tgMyrqCf0wc3Ilu6p6X6cwsVC2Q==}
|
||||
dependencies:
|
||||
'@babel/core': 7.18.9
|
||||
'@babel/eslint-parser': 7.18.9_bpusarfwcbgnjqmbezm4jkv5ie
|
||||
'@stylelint/postcss-css-in-js': 0.38.0_britvnvafsaqvp7ihzdwtiasju
|
||||
'@typescript-eslint/eslint-plugin': 5.36.1_io33vsxv4zn7xocr4vz7s2wm74
|
||||
'@typescript-eslint/parser': 5.36.1_oy7hgmlo6357d5kkcjbkfgtg4q
|
||||
'@umijs/babel-preset-umi': 4.0.41
|
||||
'@umijs/babel-preset-umi': 4.0.42
|
||||
eslint-plugin-jest: 26.1.5_lbrcujwrxgiqp3xcbsvhvbrrwy
|
||||
eslint-plugin-react: 7.29.4_eslint@8.15.0
|
||||
eslint-plugin-react-hooks: 4.5.0_eslint@8.15.0
|
||||
|
@ -4480,16 +4514,16 @@ packages:
|
|||
- typescript
|
||||
dev: true
|
||||
|
||||
/@umijs/max/4.0.41_u7gqvy2j7ayrx2yacupeqg5dii:
|
||||
resolution: {integrity: sha512-QjNVMMZWsuaGDoL7hdHdxmrZUZbEdZSK+Wl7lGVYHKA0GyMcz7lCUKRj/ck84pLtP0inJpF3Pigqzidldw/GnQ==}
|
||||
/@umijs/max/4.0.42_u7gqvy2j7ayrx2yacupeqg5dii:
|
||||
resolution: {integrity: sha512-YBi9sR7r3s2y9F73E94PUX51ytz9q1Mt6ZPMVSqLX7XaPUDr77+/vR7DXtsASCZvR8XcoWBYxJFKDSIzCmNUOQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@umijs/lint': 4.0.41_d6a4x3x3q3loe4v2ypyqhqerii
|
||||
'@umijs/plugins': 4.0.41_ol4gf5ysdgp6msy6qgsp7snw2u
|
||||
'@umijs/lint': 4.0.42_d6a4x3x3q3loe4v2ypyqhqerii
|
||||
'@umijs/plugins': 4.0.42_ol4gf5ysdgp6msy6qgsp7snw2u
|
||||
antd: 4.24.7_biqbaboplfbrettd7655fr4n2y
|
||||
eslint: 8.15.0
|
||||
stylelint: 14.8.2
|
||||
umi: 4.0.41_h4ojpibysiaer7lth2s4sljnlm
|
||||
umi: 4.0.42_h4ojpibysiaer7lth2s4sljnlm
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@babel/helper-module-imports'
|
||||
|
@ -4535,32 +4569,32 @@ packages:
|
|||
- webpack-plugin-serve
|
||||
dev: true
|
||||
|
||||
/@umijs/mfsu/4.0.41:
|
||||
resolution: {integrity: sha512-EoXJcrjccZY2epZRTEDpt8ytZYyZGZROd/VtnpuLsGayMn8LjNQPdOE8AfpEDXpxuCDpQgxhQ0IVc5iivZzZUQ==}
|
||||
/@umijs/mfsu/4.0.42:
|
||||
resolution: {integrity: sha512-5xghD/Ba7+soWxkVzSRXp9xsecqmtEG0AM704Z8FoykyRHPDoI53epIzJgu8AFHM/VMBtilgYt1w5RH5Xq8UCg==}
|
||||
dependencies:
|
||||
'@umijs/bundler-esbuild': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/bundler-esbuild': 4.0.42
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
enhanced-resolve: 5.9.3
|
||||
is-equal: 1.6.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@umijs/plugin-run/4.0.41:
|
||||
resolution: {integrity: sha512-y0Oe23XvzHkzmHKlLkt5RNOfxDOYcOQ1hMe8qf97mXmb8XnKAGISqLqqZm5n4ZPwCKP0aC/ZxJOKUKV+vVzq7w==}
|
||||
/@umijs/plugin-run/4.0.42:
|
||||
resolution: {integrity: sha512-FSU/ZSP5dvzC3a4WM21Li+qkiYncVSw0appovegiIXWmHfRASk6OscqldItMFBUHmAaJ9Vpxzxr/FZbZaNeYsA==}
|
||||
dependencies:
|
||||
tsx: 3.12.1
|
||||
dev: true
|
||||
|
||||
/@umijs/plugins/4.0.41_ol4gf5ysdgp6msy6qgsp7snw2u:
|
||||
resolution: {integrity: sha512-csfnvB+L6vPnZMy68hkn0/s8YQpT7hsLKZufhu47AxHdPZxHp+DbVe64Wti1ZNKtHGV821FGCjBBb91q/MithA==}
|
||||
/@umijs/plugins/4.0.42_ol4gf5ysdgp6msy6qgsp7snw2u:
|
||||
resolution: {integrity: sha512-H9KXiGkkoAUIi4Cwx7d3g33COLdMN4+fbO/PIl52xDb18Gafi4hylHnEjPnttNUz8YhW5S+4BMS8UzisqIhjbw==}
|
||||
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.49_b6pt25ruzstflsuamv2lnyq45m
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/valtio': 1.0.2_react@18.2.0
|
||||
antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7
|
||||
axios: 0.27.2
|
||||
|
@ -4600,22 +4634,25 @@ packages:
|
|||
- vite
|
||||
dev: true
|
||||
|
||||
/@umijs/preset-umi/4.0.41_wbbmjm6mucxohffaoliigwhyze:
|
||||
resolution: {integrity: sha512-qD9TpV9VCKjkmzBTmLYozjg7hkXCnoibruppLC4XGvKsUG4ohcWdT0+dt9/GiT3hW57AZYXjNwkPTfZ2CPazTw==}
|
||||
/@umijs/preset-umi/4.0.42_wbbmjm6mucxohffaoliigwhyze:
|
||||
resolution: {integrity: sha512-yV2c4HieaAPChCHRfiy2kf95WJ7TytEJVmM7hjUTbd8LotQxxcg2yrHZyhnoF2QRIuYl9g3mr+JbFs0PKrCaAA==}
|
||||
dependencies:
|
||||
'@umijs/ast': 4.0.41
|
||||
'@umijs/babel-preset-umi': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/bundler-vite': 4.0.41_@types+node@17.0.45
|
||||
'@umijs/bundler-webpack': 4.0.41_cdwcylzbt7apydvbx5kbqfz4va
|
||||
'@umijs/core': 4.0.41
|
||||
'@iconify-json/fa': 1.1.3
|
||||
'@iconify/utils': 2.0.9
|
||||
'@svgr/core': 6.2.1
|
||||
'@umijs/ast': 4.0.42
|
||||
'@umijs/babel-preset-umi': 4.0.42
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/bundler-vite': 4.0.42_@types+node@17.0.45
|
||||
'@umijs/bundler-webpack': 4.0.42_cdwcylzbt7apydvbx5kbqfz4va
|
||||
'@umijs/core': 4.0.42
|
||||
'@umijs/did-you-know': 1.0.1
|
||||
'@umijs/history': 5.3.1
|
||||
'@umijs/mfsu': 4.0.41
|
||||
'@umijs/plugin-run': 4.0.41
|
||||
'@umijs/renderer-react': 4.0.41_ef5jwxihqo6n7gxfmzogljlgcm
|
||||
'@umijs/server': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/mfsu': 4.0.42
|
||||
'@umijs/plugin-run': 4.0.42
|
||||
'@umijs/renderer-react': 4.0.42_ef5jwxihqo6n7gxfmzogljlgcm
|
||||
'@umijs/server': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
babel-plugin-dynamic-import-node: 2.3.3
|
||||
click-to-react-component: 1.0.8_2wivdsbsvmk3pblmocpmpqwn2e
|
||||
core-js: 3.22.4
|
||||
|
@ -4653,8 +4690,8 @@ packages:
|
|||
- webpack-plugin-serve
|
||||
dev: true
|
||||
|
||||
/@umijs/renderer-react/4.0.41_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-ZaA3exTIgh5FeOoIQRvILZPYpxxMRWnxAO6xxWtVDypNrbGxTdd5EostNb9+3E9naKFFFY98k8bopz6xkjcc4g==}
|
||||
/@umijs/renderer-react/4.0.42_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-tZTzBPSneiFafMkxyt2r+qrtA1F/gbSil1Ez/3e5anBIrTPaKkLL9dJzS1cEDkxRc+KTSroBQBCIf/crQcORkg==}
|
||||
peerDependencies:
|
||||
react: '>=16.8 || 18'
|
||||
react-dom: '>=16.8 || 18'
|
||||
|
@ -4673,8 +4710,8 @@ packages:
|
|||
react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y
|
||||
dev: true
|
||||
|
||||
/@umijs/renderer-react/4.0.41_ef5jwxihqo6n7gxfmzogljlgcm:
|
||||
resolution: {integrity: sha512-ZaA3exTIgh5FeOoIQRvILZPYpxxMRWnxAO6xxWtVDypNrbGxTdd5EostNb9+3E9naKFFFY98k8bopz6xkjcc4g==}
|
||||
/@umijs/renderer-react/4.0.42_ef5jwxihqo6n7gxfmzogljlgcm:
|
||||
resolution: {integrity: sha512-tZTzBPSneiFafMkxyt2r+qrtA1F/gbSil1Ez/3e5anBIrTPaKkLL9dJzS1cEDkxRc+KTSroBQBCIf/crQcORkg==}
|
||||
peerDependencies:
|
||||
react: '>=16.8 || 18'
|
||||
react-dom: '>=16.8 || 18'
|
||||
|
@ -4702,10 +4739,10 @@ packages:
|
|||
memoize-one: 5.2.1
|
||||
dev: true
|
||||
|
||||
/@umijs/server/4.0.41:
|
||||
resolution: {integrity: sha512-HMIdlABrt/zxzECzFtKDS+HncFPCq7t0AkusOQH4I7YTC7CjNH+mXQWSYjabnHn2d4/E7rG8vWxybH9sli0QFw==}
|
||||
/@umijs/server/4.0.42:
|
||||
resolution: {integrity: sha512-HvwqjO0eYrf7PJWiKe67/SC1qVQrLahjmsRzg1gefCj+j6RYjd7mq8stc1yFnrmnoUhTTN7t71Q+x6h7bxM3nA==}
|
||||
dependencies:
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
history: 5.3.0
|
||||
react: 18.1.0
|
||||
react-dom: 18.1.0_react@18.1.0
|
||||
|
@ -4718,12 +4755,12 @@ packages:
|
|||
resolution: {integrity: sha512-XlcwzSYQ/SRZpHdwIyMDS4FOGX5kP4U/2g2mykyn/iPQTK4xTiQAyBu6UnnDnn7d5P8s7Atzh1C7H0ETNOypJg==}
|
||||
dev: true
|
||||
|
||||
/@umijs/test/4.0.41:
|
||||
resolution: {integrity: sha512-PgG2mNcujbKsWq0NU5F+8FU47Zw47slayAd19ngI1Skk2FoNpRBM0BkXjcL+migWn0c+tSAHgdjXESzHt1PhXw==}
|
||||
/@umijs/test/4.0.42:
|
||||
resolution: {integrity: sha512-+/a7v3VeB6Z7DdSRcj9sazeVM0yHKtlpVGfCrcZLbUemZ5AERsSOc0jdj5wknVjslTbXpQ4Jesf1nmnOEmZE6g==}
|
||||
dependencies:
|
||||
'@babel/plugin-transform-modules-commonjs': 7.18.6
|
||||
'@jest/types': 27.5.1
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
babel-jest: 28.1.3
|
||||
esbuild: 0.15.18
|
||||
identity-obj-proxy: 3.0.0
|
||||
|
@ -4745,8 +4782,8 @@ packages:
|
|||
react: 18.2.0
|
||||
dev: true
|
||||
|
||||
/@umijs/utils/4.0.41:
|
||||
resolution: {integrity: sha512-hN6CVFetpdvHA/8QE/RxWBkGhb2by93nFKo9CA9qVTKtxfwdJziYHszpicZUI0bEA13YNpHrf7vdndOnjJpHVg==}
|
||||
/@umijs/utils/4.0.42:
|
||||
resolution: {integrity: sha512-67GEzaV+6aLVxvbO5xtbSY3I3aBwvrETd8fpCOS+tnZSzFOt5qh5ffU8FFXhPAiBrsv0jrt9Wk9IIi+S3ulLdg==}
|
||||
dependencies:
|
||||
chokidar: 3.5.3
|
||||
pino: 7.11.0
|
||||
|
@ -5524,6 +5561,9 @@ packages:
|
|||
resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==}
|
||||
peerDependencies:
|
||||
styled-components: '>= 2'
|
||||
peerDependenciesMeta:
|
||||
styled-components:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/helper-annotate-as-pure': 7.18.6
|
||||
'@babel/helper-module-imports': 7.18.6
|
||||
|
@ -7573,6 +7613,21 @@ packages:
|
|||
strip-eof: 1.0.0
|
||||
dev: true
|
||||
|
||||
/execa/5.1.1:
|
||||
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
get-stream: 6.0.1
|
||||
human-signals: 2.1.0
|
||||
is-stream: 2.0.1
|
||||
merge-stream: 2.0.0
|
||||
npm-run-path: 4.0.1
|
||||
onetime: 5.1.2
|
||||
signal-exit: 3.0.7
|
||||
strip-final-newline: 2.0.0
|
||||
dev: true
|
||||
|
||||
/execa/6.1.0:
|
||||
resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
@ -8322,7 +8377,7 @@ packages:
|
|||
/history/5.3.0:
|
||||
resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@babel/runtime': 7.20.7
|
||||
dev: true
|
||||
|
||||
/hmac-drbg/1.0.1:
|
||||
|
@ -8479,6 +8534,11 @@ packages:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/human-signals/2.1.0:
|
||||
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
|
||||
engines: {node: '>=10.17.0'}
|
||||
dev: true
|
||||
|
||||
/human-signals/3.0.1:
|
||||
resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
|
||||
engines: {node: '>=12.20.0'}
|
||||
|
@ -8889,7 +8949,6 @@ packages:
|
|||
/is-stream/2.0.1:
|
||||
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/is-stream/3.0.0:
|
||||
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
|
||||
|
@ -9229,6 +9288,10 @@ packages:
|
|||
resolution: {integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==}
|
||||
dev: true
|
||||
|
||||
/kolorist/1.6.0:
|
||||
resolution: {integrity: sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==}
|
||||
dev: true
|
||||
|
||||
/kuler/2.0.0:
|
||||
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
|
||||
dev: false
|
||||
|
@ -9340,6 +9403,11 @@ packages:
|
|||
json5: 2.2.3
|
||||
dev: true
|
||||
|
||||
/local-pkg/0.4.2:
|
||||
resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==}
|
||||
engines: {node: '>=14'}
|
||||
dev: true
|
||||
|
||||
/localforage/1.10.0:
|
||||
resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
|
||||
dependencies:
|
||||
|
@ -10029,6 +10097,13 @@ packages:
|
|||
path-key: 2.0.1
|
||||
dev: true
|
||||
|
||||
/npm-run-path/4.0.1:
|
||||
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
path-key: 3.1.1
|
||||
dev: true
|
||||
|
||||
/npm-run-path/5.1.0:
|
||||
resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
@ -12607,7 +12682,7 @@ packages:
|
|||
react-dom:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@babel/runtime': 7.20.7
|
||||
invariant: 2.2.4
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
|
@ -12627,7 +12702,7 @@ packages:
|
|||
react-dom:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@babel/runtime': 7.20.7
|
||||
invariant: 2.2.4
|
||||
prop-types: 15.8.1
|
||||
react: 18.1.0
|
||||
|
@ -13838,6 +13913,11 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/strip-final-newline/2.0.0:
|
||||
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/strip-final-newline/3.0.0:
|
||||
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
|
||||
engines: {node: '>=12'}
|
||||
|
@ -14436,21 +14516,21 @@ packages:
|
|||
qs: 6.11.0
|
||||
dev: true
|
||||
|
||||
/umi/4.0.41_h4ojpibysiaer7lth2s4sljnlm:
|
||||
resolution: {integrity: sha512-0yViucWZPtliPeoczh0sH3MV665s9B7rD2l8rbUCqyduX1NN/D12IE6BD5USH6+FcMjxIxF8DyAX0PhUiLsOyQ==}
|
||||
/umi/4.0.42_h4ojpibysiaer7lth2s4sljnlm:
|
||||
resolution: {integrity: sha512-ItsrutcdOKWYKcB5aPZHk4gD9kodC/l4C9x5/9gwzN38AfEaojM5YtVFoGhZQeFcD3aBYYf/kegiUdJtdfErYA==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.18.9
|
||||
'@umijs/bundler-utils': 4.0.41
|
||||
'@umijs/bundler-webpack': 4.0.41_cdwcylzbt7apydvbx5kbqfz4va
|
||||
'@umijs/core': 4.0.41
|
||||
'@umijs/lint': 4.0.41_d6a4x3x3q3loe4v2ypyqhqerii
|
||||
'@umijs/preset-umi': 4.0.41_wbbmjm6mucxohffaoliigwhyze
|
||||
'@umijs/renderer-react': 4.0.41_biqbaboplfbrettd7655fr4n2y
|
||||
'@umijs/server': 4.0.41
|
||||
'@umijs/test': 4.0.41
|
||||
'@umijs/utils': 4.0.41
|
||||
'@umijs/bundler-utils': 4.0.42
|
||||
'@umijs/bundler-webpack': 4.0.42_cdwcylzbt7apydvbx5kbqfz4va
|
||||
'@umijs/core': 4.0.42
|
||||
'@umijs/lint': 4.0.42_d6a4x3x3q3loe4v2ypyqhqerii
|
||||
'@umijs/preset-umi': 4.0.42_wbbmjm6mucxohffaoliigwhyze
|
||||
'@umijs/renderer-react': 4.0.42_biqbaboplfbrettd7655fr4n2y
|
||||
'@umijs/server': 4.0.42
|
||||
'@umijs/test': 4.0.42
|
||||
'@umijs/utils': 4.0.42
|
||||
prettier-plugin-organize-imports: 2.3.4_xwureqoch7frpr2i35ruxzci5i
|
||||
prettier-plugin-packagejson: 2.3.0_prettier@2.8.1
|
||||
transitivePeerDependencies:
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
ContainerOutlined,
|
||||
} from '@ant-design/icons';
|
||||
import IconFont from '@/components/iconfont';
|
||||
import { BasicLayoutProps } from '@ant-design/pro-layout';
|
||||
|
||||
export default {
|
||||
route: {
|
||||
|
@ -93,4 +94,4 @@ export default {
|
|||
contentWidth: 'Fixed',
|
||||
splitMenus: false,
|
||||
siderWidth: 180,
|
||||
} as any;
|
||||
} as BasicLayoutProps;
|
||||
|
|
|
@ -25,6 +25,7 @@ import {
|
|||
Popover,
|
||||
Descriptions,
|
||||
Tooltip,
|
||||
MenuProps,
|
||||
} from 'antd';
|
||||
// @ts-ignore
|
||||
import SockJS from 'sockjs-client';
|
||||
|
@ -222,9 +223,6 @@ export default function () {
|
|||
}
|
||||
|
||||
if (['/login', '/initialization', '/error'].includes(location.pathname)) {
|
||||
document.title = `${
|
||||
(config.documentTitleMap as any)[location.pathname]
|
||||
} - 控制面板`;
|
||||
if (systemInfo?.isInitialized && location.pathname === '/initialization') {
|
||||
history.push('/crontab');
|
||||
}
|
||||
|
@ -251,13 +249,17 @@ export default function () {
|
|||
!navigator.userAgent.includes('Chrome');
|
||||
const isQQBrowser = navigator.userAgent.includes('QQBrowser');
|
||||
|
||||
const menu = (
|
||||
<Menu
|
||||
className="side-menu-user-drop-menu"
|
||||
items={[{ label: '退出登录', key: 'logout', icon: <LogoutOutlined /> }]}
|
||||
onClick={logout}
|
||||
/>
|
||||
);
|
||||
const menu: MenuProps = {
|
||||
items: [
|
||||
{
|
||||
label: '退出登录',
|
||||
className: 'side-menu-user-drop-menu',
|
||||
onClick: logout,
|
||||
key: 'logout',
|
||||
icon: <LogoutOutlined />,
|
||||
},
|
||||
],
|
||||
};
|
||||
return loading ? (
|
||||
<PageLoading />
|
||||
) : (
|
||||
|
@ -266,6 +268,7 @@ export default function () {
|
|||
loading={loading}
|
||||
ErrorBoundary={Sentry.ErrorBoundary}
|
||||
logo={<Image preview={false} src="https://qn.whyour.cn/logo.png" />}
|
||||
// @ts-ignore
|
||||
title={
|
||||
<>
|
||||
<span style={{ fontSize: 16 }}>控制面板</span>
|
||||
|
@ -308,16 +311,15 @@ export default function () {
|
|||
return <Link to={menuItemProps.path}>{defaultDom}</Link>;
|
||||
}}
|
||||
pageTitleRender={(props, pageName, info) => {
|
||||
if (info && typeof info.pageName === 'string') {
|
||||
return `${info.pageName} - 控制面板`;
|
||||
}
|
||||
return '控制面板';
|
||||
const title =
|
||||
(config.documentTitleMap as any)[location.pathname] || '未找到';
|
||||
return `${title} - 控制面板`;
|
||||
}}
|
||||
onCollapse={setCollapsed}
|
||||
collapsed={collapsed}
|
||||
rightContentRender={() =>
|
||||
ctx.isPhone && (
|
||||
<Dropdown overlay={menu} placement="bottomRight" trigger={['click']}>
|
||||
<Dropdown menu={menu} placement="bottomRight" trigger={['click']}>
|
||||
<span className="side-menu-user-wrapper">
|
||||
<Avatar
|
||||
shape="square"
|
||||
|
@ -339,7 +341,7 @@ export default function () {
|
|||
}}
|
||||
>
|
||||
{!collapsed && !ctx.isPhone && (
|
||||
<Dropdown overlay={menu} placement="topLeft" trigger={['hover']}>
|
||||
<Dropdown menu={menu} placement="topLeft" trigger={['hover']}>
|
||||
<span className="side-menu-user-wrapper">
|
||||
<Avatar
|
||||
shape="square"
|
||||
|
|
18
src/pages/404.tsx
Normal file
18
src/pages/404.tsx
Normal file
|
@ -0,0 +1,18 @@
|
|||
import React from 'react';
|
||||
import { Button, Result, Typography } from 'antd';
|
||||
|
||||
const { Link } = Typography;
|
||||
|
||||
const NotFound: React.FC = () => (
|
||||
<Result
|
||||
status="404"
|
||||
title="404"
|
||||
extra={
|
||||
<Button type="primary">
|
||||
<Link href="/">返回首页</Link>
|
||||
</Button>
|
||||
}
|
||||
/>
|
||||
);
|
||||
|
||||
export default NotFound;
|
|
@ -14,6 +14,7 @@ import {
|
|||
Popover,
|
||||
Tabs,
|
||||
TablePaginationConfig,
|
||||
MenuProps,
|
||||
} from 'antd';
|
||||
import {
|
||||
ClockCircleOutlined,
|
||||
|
@ -684,15 +685,13 @@ const Crontab = () => {
|
|||
arrow={{ pointAtCenter: true }}
|
||||
placement="bottomRight"
|
||||
trigger={['click']}
|
||||
overlay={
|
||||
<Menu
|
||||
items={getMenuItems(record)}
|
||||
onClick={({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
action(key, record, index);
|
||||
}}
|
||||
/>
|
||||
}
|
||||
menu={{
|
||||
items: getMenuItems(record),
|
||||
onClick: ({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
action(key, record, index);
|
||||
},
|
||||
}}
|
||||
>
|
||||
<a onClick={(e) => e.stopPropagation()}>
|
||||
<EllipsisOutlined />
|
||||
|
@ -889,41 +888,39 @@ const Crontab = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const menu = (
|
||||
<Menu
|
||||
onClick={({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
viewAction(key);
|
||||
}}
|
||||
items={[
|
||||
...[...enabledCronViews].slice(4).map((x) => ({
|
||||
label: (
|
||||
<Space style={{ display: 'flex', justifyContent: 'space-between' }}>
|
||||
<span>{x.name}</span>
|
||||
{viewConf?.id === x.id && (
|
||||
<CheckOutlined style={{ color: '#1890ff' }} />
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
key: x.id,
|
||||
icon: <UnorderedListOutlined />,
|
||||
})),
|
||||
{
|
||||
type: 'divider',
|
||||
},
|
||||
{
|
||||
label: '新建视图',
|
||||
key: 'new',
|
||||
icon: <PlusOutlined />,
|
||||
},
|
||||
{
|
||||
label: '视图管理',
|
||||
key: 'manage',
|
||||
icon: <SettingOutlined />,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
);
|
||||
const menu: MenuProps = {
|
||||
onClick: ({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
viewAction(key);
|
||||
},
|
||||
items: [
|
||||
...[...enabledCronViews].slice(4).map((x) => ({
|
||||
label: (
|
||||
<Space style={{ display: 'flex', justifyContent: 'space-between' }}>
|
||||
<span>{x.name}</span>
|
||||
{viewConf?.id === x.id && (
|
||||
<CheckOutlined style={{ color: '#1890ff' }} />
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
key: x.id,
|
||||
icon: <UnorderedListOutlined />,
|
||||
})),
|
||||
{
|
||||
type: 'divider' as 'group',
|
||||
},
|
||||
{
|
||||
label: '新建视图',
|
||||
key: 'new',
|
||||
icon: <PlusOutlined />,
|
||||
},
|
||||
{
|
||||
label: '视图管理',
|
||||
key: 'manage',
|
||||
icon: <SettingOutlined />,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const getCronViews = () => {
|
||||
setLoading(true);
|
||||
|
@ -975,7 +972,7 @@ const Crontab = () => {
|
|||
className={`crontab-view ${moreMenuActive ? 'more-active' : ''}`}
|
||||
tabBarExtraContent={
|
||||
<Dropdown
|
||||
overlay={menu}
|
||||
menu={menu}
|
||||
trigger={['click']}
|
||||
overlayStyle={{ minWidth: 200 }}
|
||||
>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import { Modal, message, Input, Form, Statistic, Button } from 'antd';
|
||||
import { request } from '@/utils/http';
|
||||
import config from '@/utils/config';
|
||||
|
@ -34,7 +34,6 @@ const CronLogModal = ({
|
|||
const [loading, setLoading] = useState<any>(true);
|
||||
const [executing, setExecuting] = useState<any>(true);
|
||||
const [isPhone, setIsPhone] = useState(false);
|
||||
const [theme, setTheme] = useState<string>('');
|
||||
|
||||
const getCronLog = (isFirst?: boolean) => {
|
||||
if (isFirst) {
|
||||
|
@ -49,10 +48,14 @@ const CronLogModal = ({
|
|||
) {
|
||||
const log = data as string;
|
||||
setValue(log || '暂无日志');
|
||||
setExecuting(
|
||||
log && !logEnded(log) && !log.includes('重启面板'),
|
||||
);
|
||||
if (log && !logEnded(log) && !log.includes('重启面板')) {
|
||||
const hasNext = log && !logEnded(log) && !log.includes('重启面板');
|
||||
setExecuting(hasNext);
|
||||
setTimeout(() => {
|
||||
document
|
||||
.querySelector('#log-flag')!
|
||||
.scrollIntoView({ behavior: 'smooth' });
|
||||
});
|
||||
if (hasNext) {
|
||||
setTimeout(() => {
|
||||
getCronLog();
|
||||
}, 2000);
|
||||
|
@ -155,6 +158,7 @@ const CronLogModal = ({
|
|||
{value}
|
||||
</pre>
|
||||
)}
|
||||
<div id="log-flag"></div>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -11,6 +11,7 @@ import {
|
|||
Dropdown,
|
||||
Menu,
|
||||
Empty,
|
||||
MenuProps,
|
||||
} from 'antd';
|
||||
import config from '@/utils/config';
|
||||
import { PageContainer } from '@ant-design/pro-layout';
|
||||
|
@ -66,7 +67,8 @@ const Script = () => {
|
|||
const [isEditing, setIsEditing] = useState(false);
|
||||
const editorRef = useRef<any>(null);
|
||||
const [isAddFileModalVisible, setIsAddFileModalVisible] = useState(false);
|
||||
const [isRenameFileModalVisible, setIsRenameFileModalVisible] = useState(false);
|
||||
const [isRenameFileModalVisible, setIsRenameFileModalVisible] =
|
||||
useState(false);
|
||||
const [currentNode, setCurrentNode] = useState<any>();
|
||||
const [expandedKeys, setExpandedKeys] = useState<string[]>([]);
|
||||
|
||||
|
@ -293,12 +295,12 @@ const Script = () => {
|
|||
|
||||
const renameFile = () => {
|
||||
setIsRenameFileModalVisible(true);
|
||||
}
|
||||
};
|
||||
|
||||
const handleRenameFileCancel = () => {
|
||||
setIsRenameFileModalVisible(false);
|
||||
getScripts(false);
|
||||
}
|
||||
};
|
||||
|
||||
const addFile = () => {
|
||||
setIsAddFileModalVisible(true);
|
||||
|
@ -402,46 +404,44 @@ const Script = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const menu = isEditing ? (
|
||||
<Menu
|
||||
items={[
|
||||
{ label: '保存', key: 'save', icon: <PlusOutlined /> },
|
||||
{ label: '退出编辑', key: 'exit', icon: <EditOutlined /> },
|
||||
]}
|
||||
onClick={({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
action(key);
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
<Menu
|
||||
items={[
|
||||
{ label: '新建', key: 'add', icon: <PlusOutlined /> },
|
||||
{
|
||||
label: '编辑',
|
||||
key: 'edit',
|
||||
icon: <EditOutlined />,
|
||||
disabled: !select,
|
||||
const menu: MenuProps = isEditing
|
||||
? {
|
||||
items: [
|
||||
{ label: '保存', key: 'save', icon: <PlusOutlined /> },
|
||||
{ label: '退出编辑', key: 'exit', icon: <EditOutlined /> },
|
||||
],
|
||||
onClick: ({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
action(key);
|
||||
},
|
||||
{
|
||||
label: '重命名',
|
||||
key: 'rename',
|
||||
icon: <IconFont type="ql-icon-rename" />,
|
||||
disabled: !select,
|
||||
}
|
||||
: {
|
||||
items: [
|
||||
{ label: '新建', key: 'add', icon: <PlusOutlined /> },
|
||||
{
|
||||
label: '编辑',
|
||||
key: 'edit',
|
||||
icon: <EditOutlined />,
|
||||
disabled: !select,
|
||||
},
|
||||
{
|
||||
label: '重命名',
|
||||
key: 'rename',
|
||||
icon: <IconFont type="ql-icon-rename" />,
|
||||
disabled: !select,
|
||||
},
|
||||
{
|
||||
label: '删除',
|
||||
key: 'delete',
|
||||
icon: <DeleteOutlined />,
|
||||
disabled: !select,
|
||||
},
|
||||
],
|
||||
onClick: ({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
menuAction(key);
|
||||
},
|
||||
{
|
||||
label: '删除',
|
||||
key: 'delete',
|
||||
icon: <DeleteOutlined />,
|
||||
disabled: !select,
|
||||
},
|
||||
]}
|
||||
onClick={({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
menuAction(key);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<PageContainer
|
||||
|
@ -464,7 +464,7 @@ const Script = () => {
|
|||
allowClear
|
||||
onSelect={onSelect}
|
||||
/>,
|
||||
<Dropdown overlay={menu} trigger={['click']}>
|
||||
<Dropdown menu={menu} trigger={['click']}>
|
||||
<Button type="primary" icon={<EllipsisOutlined />} />
|
||||
</Dropdown>,
|
||||
]
|
||||
|
|
|
@ -17,7 +17,6 @@ import {
|
|||
import config from '@/utils/config';
|
||||
import { PageContainer } from '@ant-design/pro-layout';
|
||||
import { request } from '@/utils/http';
|
||||
import * as DarkReader from '@umijs/ssr-darkreader';
|
||||
import AppModal from './appModal';
|
||||
import {
|
||||
EditOutlined,
|
||||
|
@ -27,18 +26,13 @@ import {
|
|||
import SecuritySettings from './security';
|
||||
import LoginLog from './loginLog';
|
||||
import NotificationSetting from './notification';
|
||||
import CheckUpdate from './checkUpdate';
|
||||
import Other from './other';
|
||||
import About from './about';
|
||||
import { useOutletContext } from '@umijs/max';
|
||||
import { SharedContext } from '@/layouts';
|
||||
import './index.less';
|
||||
|
||||
const { Text } = Typography;
|
||||
const optionsWithDisabled = [
|
||||
{ label: '亮色', value: 'light' },
|
||||
{ label: '暗色', value: 'dark' },
|
||||
{ label: '跟随系统', value: 'auto' },
|
||||
];
|
||||
|
||||
const Setting = () => {
|
||||
const {
|
||||
|
@ -121,37 +115,12 @@ const Setting = () => {
|
|||
];
|
||||
|
||||
const [loading, setLoading] = useState(true);
|
||||
const defaultTheme = localStorage.getItem('qinglong_dark_theme') || 'auto';
|
||||
const [dataSource, setDataSource] = useState<any[]>([]);
|
||||
const [isModalVisible, setIsModalVisible] = useState(false);
|
||||
const [editedApp, setEditedApp] = useState<any>();
|
||||
const [tabActiveKey, setTabActiveKey] = useState('security');
|
||||
const [loginLogData, setLoginLogData] = useState<any[]>([]);
|
||||
const [notificationInfo, setNotificationInfo] = useState<any>();
|
||||
const [logRemoveFrequency, setLogRemoveFrequency] = useState<number>();
|
||||
const [form] = Form.useForm();
|
||||
const {
|
||||
enable: enableDarkMode,
|
||||
disable: disableDarkMode,
|
||||
exportGeneratedCSS: collectCSS,
|
||||
setFetchMethod,
|
||||
auto: followSystemColorScheme,
|
||||
} = DarkReader || {};
|
||||
|
||||
const themeChange = (e: any) => {
|
||||
const _theme = e.target.value;
|
||||
localStorage.setItem('qinglong_dark_theme', e.target.value);
|
||||
setFetchMethod(fetch);
|
||||
|
||||
if (_theme === 'dark') {
|
||||
enableDarkMode({});
|
||||
} else if (_theme === 'light') {
|
||||
disableDarkMode();
|
||||
} else {
|
||||
followSystemColorScheme({});
|
||||
}
|
||||
reloadTheme();
|
||||
};
|
||||
|
||||
const getApps = () => {
|
||||
setLoading(true);
|
||||
|
@ -276,8 +245,6 @@ const Setting = () => {
|
|||
getLoginLog();
|
||||
} else if (activeKey === 'notification') {
|
||||
getNotification();
|
||||
} else if (activeKey === 'other') {
|
||||
getLogRemoveFrequency();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -294,37 +261,6 @@ const Setting = () => {
|
|||
});
|
||||
};
|
||||
|
||||
const getLogRemoveFrequency = () => {
|
||||
request
|
||||
.get(`${config.apiPrefix}system/log/remove`)
|
||||
.then(({ code, data }) => {
|
||||
if (code === 200 && data.info) {
|
||||
const { frequency } = data.info;
|
||||
setLogRemoveFrequency(frequency);
|
||||
}
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log(error);
|
||||
});
|
||||
};
|
||||
|
||||
const updateRemoveLogFrequency = () => {
|
||||
setTimeout(() => {
|
||||
request
|
||||
.put(`${config.apiPrefix}system/log/remove`, {
|
||||
data: { frequency: logRemoveFrequency },
|
||||
})
|
||||
.then(({ code, data }) => {
|
||||
if (code === 200) {
|
||||
message.success('更新成功');
|
||||
}
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log(error);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<PageContainer
|
||||
className="ql-container-wrapper ql-container-wrapper-has-tab ql-setting-container"
|
||||
|
@ -382,46 +318,11 @@ const Setting = () => {
|
|||
key: 'other',
|
||||
label: '其他设置',
|
||||
children: (
|
||||
<Form layout="vertical" form={form}>
|
||||
<Form.Item
|
||||
label="主题设置"
|
||||
name="theme"
|
||||
initialValue={defaultTheme}
|
||||
>
|
||||
<Radio.Group
|
||||
options={optionsWithDisabled}
|
||||
onChange={themeChange}
|
||||
value={defaultTheme}
|
||||
optionType="button"
|
||||
buttonStyle="solid"
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="日志删除频率"
|
||||
name="frequency"
|
||||
tooltip="每x天自动删除x天以前的日志"
|
||||
>
|
||||
<Input.Group compact>
|
||||
<InputNumber
|
||||
addonBefore="每"
|
||||
addonAfter="天"
|
||||
style={{ width: 150 }}
|
||||
min={0}
|
||||
value={logRemoveFrequency}
|
||||
onChange={(value) => setLogRemoveFrequency(value)}
|
||||
/>
|
||||
<Button type="primary" onClick={updateRemoveLogFrequency}>
|
||||
确认
|
||||
</Button>
|
||||
</Input.Group>
|
||||
</Form.Item>
|
||||
<Form.Item label="检查更新" name="update">
|
||||
<CheckUpdate
|
||||
systemInfo={systemInfo}
|
||||
socketMessage={socketMessage}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
<Other
|
||||
reloadTheme={reloadTheme}
|
||||
socketMessage={socketMessage}
|
||||
systemInfo={systemInfo}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{
|
||||
|
|
120
src/pages/setting/other.tsx
Normal file
120
src/pages/setting/other.tsx
Normal file
|
@ -0,0 +1,120 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { Button, InputNumber, Form, Radio, message, Input } from 'antd';
|
||||
import * as DarkReader from '@umijs/ssr-darkreader';
|
||||
import config from '@/utils/config';
|
||||
import { request } from '@/utils/http';
|
||||
import CheckUpdate from './checkUpdate';
|
||||
import { SharedContext } from '@/layouts';
|
||||
import './index.less';
|
||||
|
||||
const optionsWithDisabled = [
|
||||
{ label: '亮色', value: 'light' },
|
||||
{ label: '暗色', value: 'dark' },
|
||||
{ label: '跟随系统', value: 'auto' },
|
||||
];
|
||||
|
||||
const Other = ({
|
||||
systemInfo,
|
||||
socketMessage,
|
||||
reloadTheme,
|
||||
}: Pick<SharedContext, 'socketMessage' | 'reloadTheme' | 'systemInfo'>) => {
|
||||
const defaultTheme = localStorage.getItem('qinglong_dark_theme') || 'auto';
|
||||
const [logRemoveFrequency, setLogRemoveFrequency] = useState<number | null>();
|
||||
const [form] = Form.useForm();
|
||||
|
||||
const {
|
||||
enable: enableDarkMode,
|
||||
disable: disableDarkMode,
|
||||
exportGeneratedCSS: collectCSS,
|
||||
setFetchMethod,
|
||||
auto: followSystemColorScheme,
|
||||
} = DarkReader || {};
|
||||
|
||||
const themeChange = (e: any) => {
|
||||
const _theme = e.target.value;
|
||||
localStorage.setItem('qinglong_dark_theme', e.target.value);
|
||||
setFetchMethod(fetch);
|
||||
|
||||
if (_theme === 'dark') {
|
||||
enableDarkMode({});
|
||||
} else if (_theme === 'light') {
|
||||
disableDarkMode();
|
||||
} else {
|
||||
followSystemColorScheme({});
|
||||
}
|
||||
reloadTheme();
|
||||
};
|
||||
|
||||
const getLogRemoveFrequency = () => {
|
||||
request
|
||||
.get(`${config.apiPrefix}system/log/remove`)
|
||||
.then(({ code, data }) => {
|
||||
if (code === 200 && data.info) {
|
||||
const { frequency } = data.info;
|
||||
setLogRemoveFrequency(frequency);
|
||||
}
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log(error);
|
||||
});
|
||||
};
|
||||
|
||||
const updateRemoveLogFrequency = () => {
|
||||
setTimeout(() => {
|
||||
request
|
||||
.put(`${config.apiPrefix}system/log/remove`, {
|
||||
data: { frequency: logRemoveFrequency },
|
||||
})
|
||||
.then(({ code, data }) => {
|
||||
if (code === 200) {
|
||||
message.success('更新成功');
|
||||
}
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log(error);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getLogRemoveFrequency();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Form layout="vertical" form={form}>
|
||||
<Form.Item label="主题设置" name="theme" initialValue={defaultTheme}>
|
||||
<Radio.Group
|
||||
options={optionsWithDisabled}
|
||||
onChange={themeChange}
|
||||
value={defaultTheme}
|
||||
optionType="button"
|
||||
buttonStyle="solid"
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="日志删除频率"
|
||||
name="frequency"
|
||||
tooltip="每x天自动删除x天以前的日志"
|
||||
>
|
||||
<Input.Group compact>
|
||||
<InputNumber
|
||||
addonBefore="每"
|
||||
addonAfter="天"
|
||||
style={{ width: 150 }}
|
||||
min={0}
|
||||
value={logRemoveFrequency}
|
||||
onChange={(value) => setLogRemoveFrequency(value)}
|
||||
/>
|
||||
<Button type="primary" onClick={updateRemoveLogFrequency}>
|
||||
确认
|
||||
</Button>
|
||||
</Input.Group>
|
||||
</Form.Item>
|
||||
<Form.Item label="检查更新" name="update">
|
||||
<CheckUpdate systemInfo={systemInfo} socketMessage={socketMessage} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default Other;
|
|
@ -427,28 +427,26 @@ const Subscription = () => {
|
|||
arrow={{ pointAtCenter: true }}
|
||||
placement="bottomRight"
|
||||
trigger={['click']}
|
||||
overlay={
|
||||
<Menu
|
||||
items={[
|
||||
{ label: '编辑', key: 'edit', icon: <EditOutlined /> },
|
||||
{
|
||||
label: record.is_disabled === 1 ? '启用' : '禁用',
|
||||
key: 'enableOrDisable',
|
||||
icon:
|
||||
record.is_disabled === 1 ? (
|
||||
<CheckCircleOutlined />
|
||||
) : (
|
||||
<StopOutlined />
|
||||
),
|
||||
},
|
||||
{ label: '删除', key: 'delete', icon: <DeleteOutlined /> },
|
||||
]}
|
||||
onClick={({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
action(key, record, index);
|
||||
}}
|
||||
/>
|
||||
}
|
||||
menu={{
|
||||
items: [
|
||||
{ label: '编辑', key: 'edit', icon: <EditOutlined /> },
|
||||
{
|
||||
label: record.is_disabled === 1 ? '启用' : '禁用',
|
||||
key: 'enableOrDisable',
|
||||
icon:
|
||||
record.is_disabled === 1 ? (
|
||||
<CheckCircleOutlined />
|
||||
) : (
|
||||
<StopOutlined />
|
||||
),
|
||||
},
|
||||
{ label: '删除', key: 'delete', icon: <DeleteOutlined /> },
|
||||
],
|
||||
onClick: ({ key, domEvent }) => {
|
||||
domEvent.stopPropagation();
|
||||
action(key, record, index);
|
||||
},
|
||||
}}
|
||||
>
|
||||
<a onClick={(e) => e.stopPropagation()}>
|
||||
<EllipsisOutlined />
|
||||
|
|
|
@ -296,7 +296,7 @@ export default {
|
|||
documentTitleMap: {
|
||||
'/login': '登录',
|
||||
'/initialization': '初始化',
|
||||
'/cron': '定时任务',
|
||||
'/crontab': '定时任务',
|
||||
'/env': '环境变量',
|
||||
'/subscription': '订阅管理',
|
||||
'/config': '配置文件',
|
||||
|
@ -305,6 +305,7 @@ export default {
|
|||
'/log': '日志管理',
|
||||
'/setting': '系统设置',
|
||||
'/error': '错误日志',
|
||||
'/dependence': '依赖管理',
|
||||
},
|
||||
dependenceTypes: ['nodejs', 'python3', 'linux'],
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue
Block a user