From 7ff3e3f06426bba753f9983112ecdf1c6691a6fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 6 Jun 2025 18:23:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 40 +- pnpm-lock.yaml | 144 ++++-- src/api/cms/cmsWebsite/model/index.ts | 1 + src/api/hjm/hjmBxLog/index.ts | 101 ++++ src/api/hjm/hjmBxLog/model/index.ts | 39 ++ src/api/hjm/hjmExamLog/index.ts | 115 +++++ src/api/hjm/hjmExamLog/model/index.ts | 39 ++ src/api/hjm/hjmQuestions/index.ts | 8 +- src/api/index.ts | 4 +- src/app.config.ts | 11 +- src/hjm/baoxiu.config.ts | 3 - src/hjm/baoxiu.tsx | 116 ----- src/hjm/bx/BestSellers.tsx | 202 ++++++++ src/hjm/bx/bx-add.config.ts | 3 + src/hjm/bx/bx-add.tsx | 366 +++++++++++++++ src/hjm/bx/bx-list.tsx | 291 ++++++++++++ src/hjm/bx/bx.config.ts | 3 + src/hjm/bx/bx.tsx | 162 +++++++ src/hjm/exam/exam-simple.tsx | 131 ++++++ src/hjm/exam/exam.config.ts | 3 + src/hjm/exam/exam.tsx | 608 +++++++++++++++++++++++++ src/hjm/location.tsx | 3 +- src/hjm/video/video.config.ts | 3 + src/hjm/video/video.tsx | 69 +++ src/pages/index.bak/Banner.tsx | 30 -- src/pages/index.bak/BestSellers.tsx | 42 -- src/pages/index.bak/Chart.tsx | 69 --- src/pages/index.bak/ExpirationTime.tsx | 56 --- src/pages/index.bak/Header.tsx | 56 --- src/pages/index.bak/Help.tsx | 68 --- src/pages/index.bak/Login.tsx | 106 ----- src/pages/index.bak/Menu.tsx | 211 --------- src/pages/index.bak/SiteUrl.tsx | 29 -- src/pages/index.bak/chart/DemoLine.tsx | 38 -- src/pages/index.bak/chart/index.scss | 7 - src/pages/index.bak/index.config.ts | 5 - src/pages/index.bak/index.scss | 4 - src/pages/index.bak/index.tsx | 166 ------- src/pages/index.bak/login.scss | 10 - src/pages/index/ExpirationTime.tsx | 4 +- src/pages/index/Header.tsx | 139 +++++- src/pages/index/index.tsx | 55 +-- src/pages/study/study.config.ts | 3 + src/pages/study/study.tsx | 59 +++ src/pages/user/components/UserCard.tsx | 8 +- src/pages/user/components/UserCell.tsx | 11 +- src/user/bx/BestSellers.tsx | 42 -- src/user/bx/index.config.ts | 4 - src/user/bx/index.tsx | 59 --- src/user/userVerify/index.tsx | 12 +- src/utils/request.ts | 2 +- 51 files changed, 2503 insertions(+), 1257 deletions(-) create mode 100644 src/api/hjm/hjmBxLog/index.ts create mode 100644 src/api/hjm/hjmBxLog/model/index.ts create mode 100644 src/api/hjm/hjmExamLog/index.ts create mode 100644 src/api/hjm/hjmExamLog/model/index.ts delete mode 100644 src/hjm/baoxiu.config.ts delete mode 100644 src/hjm/baoxiu.tsx create mode 100644 src/hjm/bx/BestSellers.tsx create mode 100644 src/hjm/bx/bx-add.config.ts create mode 100644 src/hjm/bx/bx-add.tsx create mode 100644 src/hjm/bx/bx-list.tsx create mode 100644 src/hjm/bx/bx.config.ts create mode 100644 src/hjm/bx/bx.tsx create mode 100644 src/hjm/exam/exam-simple.tsx create mode 100644 src/hjm/exam/exam.config.ts create mode 100644 src/hjm/exam/exam.tsx create mode 100644 src/hjm/video/video.config.ts create mode 100644 src/hjm/video/video.tsx delete mode 100644 src/pages/index.bak/Banner.tsx delete mode 100644 src/pages/index.bak/BestSellers.tsx delete mode 100644 src/pages/index.bak/Chart.tsx delete mode 100644 src/pages/index.bak/ExpirationTime.tsx delete mode 100644 src/pages/index.bak/Header.tsx delete mode 100644 src/pages/index.bak/Help.tsx delete mode 100644 src/pages/index.bak/Login.tsx delete mode 100644 src/pages/index.bak/Menu.tsx delete mode 100644 src/pages/index.bak/SiteUrl.tsx delete mode 100644 src/pages/index.bak/chart/DemoLine.tsx delete mode 100644 src/pages/index.bak/chart/index.scss delete mode 100644 src/pages/index.bak/index.config.ts delete mode 100644 src/pages/index.bak/index.scss delete mode 100644 src/pages/index.bak/index.tsx delete mode 100644 src/pages/index.bak/login.scss create mode 100644 src/pages/study/study.config.ts create mode 100644 src/pages/study/study.tsx delete mode 100644 src/user/bx/BestSellers.tsx delete mode 100644 src/user/bx/index.config.ts delete mode 100644 src/user/bx/index.tsx diff --git a/package.json b/package.json index 08ed4f3..8b369b6 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,9 @@ ], "author": "", "dependencies": { - "@babel/runtime": "^7.21.5", + "@babel/runtime": "^7.26.0", "@nutui/icons-react-taro": "^2.0.1", - "@nutui/nutui-react-taro": "^2.6.14", + "@nutui/nutui-react-taro": "^2.7.4", "@tarojs/components": "4.0.8", "@tarojs/helper": "4.0.8", "@tarojs/plugin-framework-react": "4.0.8", @@ -59,39 +59,39 @@ "dayjs": "^1.11.13", "echarts-taro3-react": "^1.0.13", "js-base64": "^3.7.7", - "react": "^18.0.0", - "react-dom": "^18.0.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-markdown": "^10.1.0", "react-router-dom": "^7.1.1" }, "devDependencies": { - "@babel/core": "^7.8.0", + "@babel/core": "^7.26.0", "@babel/plugin-proposal-class-properties": "7.14.5", - "@babel/preset-react": "^7.24.1", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", + "@babel/preset-react": "^7.26.3", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", "@tarojs/cli": "4.0.8", "@tarojs/taro-loader": "4.0.8", "@tarojs/webpack5-runner": "4.0.8", - "@types/node": "^18.15.11", - "@types/react": "^18.0.0", - "@types/webpack-env": "^1.13.6", - "@typescript-eslint/eslint-plugin": "^6.2.0", - "@typescript-eslint/parser": "^6.2.0", + "@types/node": "^18.19.68", + "@types/react": "^18.3.18", + "@types/webpack-env": "^1.18.5", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", "autoprefixer": "^10.4.20", "babel-plugin-import": "^1.13.8", "babel-preset-taro": "4.0.8", - "eslint": "^8.12.0", + "eslint": "^8.57.1", "eslint-config-taro": "4.0.8", - "eslint-plugin-import": "^2.12.0", - "eslint-plugin-react": "^7.8.2", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^4.6.2", "postcss": "^8.4.49", "react-refresh": "^0.11.0", - "stylelint": "^14.4.0", + "stylelint": "^14.16.1", "tailwindcss": "^3.4.17", - "ts-node": "^10.9.1", - "tsconfig-paths-webpack-plugin": "^4.0.1", - "typescript": "^5.1.0", + "ts-node": "^10.9.2", + "tsconfig-paths-webpack-plugin": "^4.2.0", + "typescript": "^5.7.2", "webpack": "5.78.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12b00da..c995be0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,13 +9,13 @@ importers: .: dependencies: '@babel/runtime': - specifier: ^7.21.5 + specifier: ^7.26.0 version: 7.26.0 '@nutui/icons-react-taro': specifier: ^2.0.1 version: 2.0.1 '@nutui/nutui-react-taro': - specifier: ^2.6.14 + specifier: ^2.7.4 version: 2.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tarojs/components': specifier: 4.0.8 @@ -75,10 +75,10 @@ importers: specifier: ^3.7.7 version: 3.7.7 react: - specifier: ^18.0.0 + specifier: ^18.3.1 version: 18.3.1 react-dom: - specifier: ^18.0.0 + specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-markdown: specifier: ^10.1.0 @@ -88,16 +88,16 @@ importers: version: 7.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@babel/core': - specifier: ^7.8.0 + specifier: ^7.26.0 version: 7.26.0 '@babel/plugin-proposal-class-properties': specifier: 7.14.5 version: 7.14.5(@babel/core@7.26.0) '@babel/preset-react': - specifier: ^7.24.1 + specifier: ^7.26.3 version: 7.26.3(@babel/core@7.26.0) '@pmmmwh/react-refresh-webpack-plugin': - specifier: ^0.5.5 + specifier: ^0.5.15 version: 0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)) '@tarojs/cli': specifier: 4.0.8 @@ -109,19 +109,19 @@ importers: specifier: 4.0.8 version: 4.0.8(@babel/core@7.26.0)(@swc/core@1.3.96)(@tarojs/runtime@4.0.8)(less@3.13.1)(postcss@8.4.49)(sass@1.83.0)(stylus@0.64.0)(typescript@5.7.2)(webpack@5.78.0(@swc/core@1.3.96)) '@types/node': - specifier: ^18.15.11 + specifier: ^18.19.68 version: 18.19.68 '@types/react': - specifier: ^18.0.0 + specifier: ^18.3.18 version: 18.3.18 '@types/webpack-env': - specifier: ^1.13.6 + specifier: ^1.18.5 version: 1.18.5 '@typescript-eslint/eslint-plugin': - specifier: ^6.2.0 + specifier: ^6.21.0 version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: ^6.2.0 + specifier: ^6.21.0 version: 6.21.0(eslint@8.57.1)(typescript@5.7.2) autoprefixer: specifier: ^10.4.20 @@ -133,19 +133,19 @@ importers: specifier: 4.0.8 version: 4.0.8(@babel/core@7.26.0)(@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0))(@babel/preset-react@7.26.3(@babel/core@7.26.0))(react-refresh@0.11.0) eslint: - specifier: ^8.12.0 + specifier: ^8.57.1 version: 8.57.1 eslint-config-taro: specifier: 4.0.8 version: 4.0.8(@babel/core@7.26.0)(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.3(eslint@8.57.1))(eslint@8.57.1)(typescript@5.7.2) eslint-plugin-import: - specifier: ^2.12.0 + specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1) eslint-plugin-react: - specifier: ^7.8.2 + specifier: ^7.37.3 version: 7.37.3(eslint@8.57.1) eslint-plugin-react-hooks: - specifier: ^4.2.0 + specifier: ^4.6.2 version: 4.6.2(eslint@8.57.1) postcss: specifier: ^8.4.49 @@ -154,19 +154,19 @@ importers: specifier: ^0.11.0 version: 0.11.0 stylelint: - specifier: ^14.4.0 + specifier: ^14.16.1 version: 14.16.1 tailwindcss: specifier: ^3.4.17 version: 3.4.17(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.68)(typescript@5.7.2)) ts-node: - specifier: ^10.9.1 + specifier: ^10.9.2 version: 10.9.2(@swc/core@1.3.96)(@types/node@18.19.68)(typescript@5.7.2) tsconfig-paths-webpack-plugin: - specifier: ^4.0.1 + specifier: ^4.2.0 version: 4.2.0 typescript: - specifier: ^5.1.0 + specifier: ^5.7.2 version: 5.7.2 webpack: specifier: 5.78.0 @@ -279,10 +279,18 @@ packages: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==, tarball: https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz} engines: {node: '>=6.9.0'} @@ -300,6 +308,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==, tarball: https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz} engines: {node: '>=6.9.0'} @@ -764,6 +777,10 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz} engines: {node: '>=6.9.0'} + '@babel/types@7.27.6': + resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + engines: {node: '>=6.9.0'} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, tarball: https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz} engines: {node: '>=12'} @@ -2367,8 +2384,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, tarball: https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz} - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz} + caniuse-lite@1.0.30001721: + resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==, tarball: https://registry.npmmirror.com/capital-case/-/capital-case-1.0.4.tgz} @@ -2758,6 +2775,15 @@ packages: supports-color: optional: true + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, tarball: https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz} engines: {node: '>=0.10.0'} @@ -4592,6 +4618,11 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, tarball: https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5224,6 +5255,10 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz} engines: {node: '>= 0.8.0'} @@ -5678,14 +5713,14 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, tarball: https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz} - seroval-plugins@1.1.1: - resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==} + seroval-plugins@1.3.2: + resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 - seroval@1.1.1: - resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==} + seroval@1.3.2: + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} engines: {node: '>=10'} serve-index@1.9.1: @@ -6767,8 +6802,14 @@ snapshots: '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': + optional: true + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': + optional: true + '@babel/helper-validator-option@7.25.9': {} '@babel/helper-wrap-function@7.25.9': @@ -6788,6 +6829,11 @@ snapshots: dependencies: '@babel/types': 7.26.3 + '@babel/parser@7.27.5': + dependencies: + '@babel/types': 7.27.6 + optional: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -7383,6 +7429,12 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.27.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + optional: true + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -8632,7 +8684,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.27.5 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -8647,14 +8699,14 @@ snapshots: '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.27.5 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.4.49 + postcss: 8.5.4 source-map-js: 1.2.1 optional: true @@ -8948,7 +9000,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.49): dependencies: browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + caniuse-lite: 1.0.30001721 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -9128,7 +9180,7 @@ snapshots: browserslist@4.24.3: dependencies: - caniuse-lite: 1.0.30001690 + caniuse-lite: 1.0.30001721 electron-to-chromium: 1.5.76 node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) @@ -9215,11 +9267,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + caniuse-lite: 1.0.30001721 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001690: {} + caniuse-lite@1.0.30001721: {} capital-case@1.0.4: dependencies: @@ -9634,6 +9686,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.1: + dependencies: + ms: 2.1.3 + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 @@ -11861,6 +11917,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nanoid@3.3.11: + optional: true + nanoid@3.3.8: {} native-request@1.1.2: @@ -12452,6 +12511,13 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + optional: true + prelude-ls@1.2.1: {} prepend-http@2.0.0: {} @@ -12986,11 +13052,11 @@ snapshots: dependencies: randombytes: 2.1.0 - seroval-plugins@1.1.1(seroval@1.1.1): + seroval-plugins@1.3.2(seroval@1.3.2): dependencies: - seroval: 1.1.1 + seroval: 1.3.2 - seroval@1.1.1: {} + seroval@1.3.2: {} serve-index@1.9.1: dependencies: @@ -13103,8 +13169,8 @@ snapshots: solid-js@1.9.3: dependencies: csstype: 3.1.3 - seroval: 1.1.1 - seroval-plugins: 1.1.1(seroval@1.1.1) + seroval: 1.3.2 + seroval-plugins: 1.3.2(seroval@1.3.2) sort-keys-length@1.0.1: dependencies: @@ -13355,7 +13421,7 @@ snapshots: stylus@0.64.0: dependencies: '@adobe/css-tools': 4.3.3 - debug: 4.4.0 + debug: 4.4.1 glob: 10.4.5 sax: 1.4.1 source-map: 0.7.4 diff --git a/src/api/cms/cmsWebsite/model/index.ts b/src/api/cms/cmsWebsite/model/index.ts index d2caf31..8c08a09 100644 --- a/src/api/cms/cmsWebsite/model/index.ts +++ b/src/api/cms/cmsWebsite/model/index.ts @@ -96,6 +96,7 @@ export interface CmsWebsite { topNavs?: CmsNavigation[]; bottomNavs?: CmsNavigation[]; loginUser?: any; + search?: boolean; } /** diff --git a/src/api/hjm/hjmBxLog/index.ts b/src/api/hjm/hjmBxLog/index.ts new file mode 100644 index 0000000..618bf46 --- /dev/null +++ b/src/api/hjm/hjmBxLog/index.ts @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { HjmBxLog, HjmBxLogParam } from './model'; + +/** + * 分页查询黄家明_保险记录 + */ +export async function pageHjmBxLog(params: HjmBxLogParam) { + const res = await request.get>>( + '/hjm/hjm-bx-log/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询黄家明_保险记录列表 + */ +export async function listHjmBxLog(params?: HjmBxLogParam) { + const res = await request.get>( + '/hjm/hjm-bx-log', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加黄家明_保险记录 + */ +export async function addHjmBxLog(data: HjmBxLog) { + const res = await request.post>( + '/hjm/hjm-bx-log', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改黄家明_保险记录 + */ +export async function updateHjmBxLog(data: HjmBxLog) { + const res = await request.put>( + '/hjm/hjm-bx-log', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除黄家明_保险记录 + */ +export async function removeHjmBxLog(id?: number) { + const res = await request.del>( + '/hjm/hjm-bx-log/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除黄家明_保险记录 + */ +export async function removeBatchHjmBxLog(data: (number | undefined)[]) { + const res = await request.del>( + '/hjm/hjm-bx-log/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询黄家明_保险记录 + */ +export async function getHjmBxLog(id: number) { + const res = await request.get>( + '/hjm/hjm-bx-log/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} diff --git a/src/api/hjm/hjmBxLog/model/index.ts b/src/api/hjm/hjmBxLog/model/index.ts new file mode 100644 index 0000000..1948ca4 --- /dev/null +++ b/src/api/hjm/hjmBxLog/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api/index'; + +/** + * 黄家明_保险记录 + */ +export interface HjmBxLog { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 事故类型 + accidentType?: string; + // 车辆ID + carId?: number; + // 保险图片 + image?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_保险记录搜索条件 + */ +export interface HjmBxLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmExamLog/index.ts b/src/api/hjm/hjmExamLog/index.ts new file mode 100644 index 0000000..63e92bf --- /dev/null +++ b/src/api/hjm/hjmExamLog/index.ts @@ -0,0 +1,115 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { HjmExamLog, HjmExamLogParam } from './model'; + +/** + * 分页查询黄家明_学习记录 + */ +export async function pageHjmExamLog(params: HjmExamLogParam) { + const res = await request.get>>( + '/hjm/hjm-exam-log/page', + params + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询黄家明_学习记录列表 + */ +export async function listHjmExamLog(params?: HjmExamLogParam) { + const res = await request.get>( + '/hjm/hjm-exam-log', + params + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 添加黄家明_学习记录 + */ +export async function addHjmExamLog(data: HjmExamLog) { + const res = await request.post>( + '/hjm/hjm-exam-log', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 修改黄家明_学习记录 + */ +export async function updateHjmExamLog(data: HjmExamLog) { + const res = await request.put>( + '/hjm/hjm-exam-log', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 删除黄家明_学习记录 + */ +export async function removeHjmExamLog(id?: number) { + const res = await request.del>( + '/hjm/hjm-exam-log/' + id + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 批量删除黄家明_学习记录 + */ +export async function removeBatchHjmExamLog(data: (number | undefined)[]) { + const res = await request.del>( + '/hjm/hjm-exam-log/batch', + { + data + } + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 根据id查询黄家明_学习记录 + */ +export async function getHjmExamLog(id: number) { + const res = await request.get>( + '/hjm/hjm-exam-log/' + id + ); + if (res.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + +export async function checkMonthTaskCompleted() { + const res = await request.get>( + '/hjm/hjm-exam-log/checkMonthTaskCompleted' + ); + console.log(res,'1231231123123123') + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + + diff --git a/src/api/hjm/hjmExamLog/model/index.ts b/src/api/hjm/hjmExamLog/model/index.ts new file mode 100644 index 0000000..a5c5767 --- /dev/null +++ b/src/api/hjm/hjmExamLog/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api/index'; + +/** + * 黄家明_学习记录 + */ +export interface HjmExamLog { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 得分 + total?: string; + // 用时 + useTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_学习记录搜索条件 + */ +export interface HjmExamLogParam extends PageParam { + id?: number; + userId?: number; + status?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmQuestions/index.ts b/src/api/hjm/hjmQuestions/index.ts index a38b79e..363804e 100644 --- a/src/api/hjm/hjmQuestions/index.ts +++ b/src/api/hjm/hjmQuestions/index.ts @@ -8,9 +8,7 @@ import type { HjmQuestions, HjmQuestionsParam } from './model'; export async function pageHjmQuestions(params: HjmQuestionsParam) { const res = await request.get>>( '/hjm/hjm-questions/page', - { - params - } + params ); if (res.code === 0) { return res.data; @@ -24,9 +22,7 @@ export async function pageHjmQuestions(params: HjmQuestionsParam) { export async function listHjmQuestions(params?: HjmQuestionsParam) { const res = await request.get>( '/hjm/hjm-questions', - { - params - } + params ); if (res.code === 0 && res.data) { return res.data; diff --git a/src/api/index.ts b/src/api/index.ts index 4e6058e..6dc3459 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -47,9 +47,9 @@ export interface PageParam { // 搜素关键词 keywords?: string; // 起始时间 - createTimeStart?: number; + createTimeStart?: string; // 结束时间 - createTimeEnd?: number; + createTimeEnd?: string; timeStart?: number; timeEnd?: number; isExpireTime?: number; diff --git a/src/app.config.ts b/src/app.config.ts index 7adc502..2438511 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -4,7 +4,8 @@ export default defineAppConfig({ 'pages/order/order', 'pages/kefu/kefu', 'pages/user/user', - 'pages/article/article' + 'pages/article/article', + 'pages/study/study' ], "subpackages": [ { @@ -30,7 +31,6 @@ export default defineAppConfig({ "root": "user", "pages": [ "car/index", - "bx/index", "company/company", "profile/profile", "setting/setting", @@ -44,7 +44,10 @@ export default defineAppConfig({ "location", "query", "fence", - "baoxiu" + "video/video", + "exam/exam", + "bx/bx", + "bx/bx-add" ] } // { @@ -85,7 +88,7 @@ export default defineAppConfig({ text: "首页", }, { - pagePath: "pages/article/article", + pagePath: "pages/study/study", iconPath: "assets/tabbar/order.png", selectedIconPath: "assets/tabbar/order-active.png", text: "学习", diff --git a/src/hjm/baoxiu.config.ts b/src/hjm/baoxiu.config.ts deleted file mode 100644 index b61e5cc..0000000 --- a/src/hjm/baoxiu.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '一键报修' -}) diff --git a/src/hjm/baoxiu.tsx b/src/hjm/baoxiu.tsx deleted file mode 100644 index eab5715..0000000 --- a/src/hjm/baoxiu.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import {useEffect, useState} from "react"; -import {useRouter} from '@tarojs/taro' -import {getHjmCar, pageHjmCar} from "@/api/hjm/hjmCar"; -import {HjmCar} from "@/api/hjm/hjmCar/model"; -import {Image,Cell} from '@nutui/nutui-react-taro' -import './location.scss' - -/** - * 电子围栏 - * @constructor - */ -const Fence = () => { - const {params} = useRouter(); - const [keywords, setKeywords] = useState() - const [item, setItem] = useState() - - // 打开地图选择位置 - // const chooseLocation = async () => { - // try { - // const res = await Taro.chooseLocation({ - // latitude, // 默认纬度 - // longitude // 默认经度 - // }) - // console.log('选择的位置:', res); - // } catch (err) { - // console.error('选择位置失败:', err); - // } - // } - const reload = () => { - const id = Number(params.id); - // 执行搜索 - if (keywords) { - pageHjmCar({keywords}).then(res => { - if (res?.list && res?.list?.length > 0) { - const data = res?.list[0]; - setItem(data) - setKeywords(data.code) - } - }) - return false; - } - // 获取车辆信息 - if (id) { - getHjmCar(id).then(data => { - setItem(data) - setKeywords(data.code) - }) - } - } - - useEffect(() => { - reload() - }, []) - - - return ( - <> - {/*
*/} - {/*
*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/*
*/} - {/*
*/} - {/* */} - {/**/} - {item ? ( -
- -
- - 车辆编号:{item?.code} - - - 快递公司:{item?.kuaidi} - - - 管理负责人:{item?.kuaidiAdmin} - - - 操作员:{item?.driver} - - - 保险状态:{item?.insuranceStatus} - - - GPS编号:{item?.gpsNo} - - - 电子围栏:{item?.fenceName} - -
-
- ) : ''} - - ) -} -export default Fence diff --git a/src/hjm/bx/BestSellers.tsx b/src/hjm/bx/BestSellers.tsx new file mode 100644 index 0000000..25249af --- /dev/null +++ b/src/hjm/bx/BestSellers.tsx @@ -0,0 +1,202 @@ +import React from "react"; +import {Image, Space, Tag, Button} from '@nutui/nutui-react-taro' +import {Truck, User, Shield, Location} from '@nutui/icons-react-taro' +import Taro from '@tarojs/taro' +import {HjmCar} from "@/api/hjm/hjmCar/model"; + +interface BestSellersProps { + data: HjmCar[] + onRefresh?: () => void +} + +/** + * 车辆列表组件 + */ +const BestSellers: React.FC = ({data, onRefresh}) => { + + // 获取保险状态显示 + const getInsuranceStatusDisplay = (status?: number) => { + switch (status) { + case 0: + return {text: '未投保', color: '#ff4d4f', bgColor: '#fff2f0'} + case 1: + return {text: '已投保', color: '#52c41a', bgColor: '#f6ffed'} + case 2: + return {text: '即将到期', color: '#faad14', bgColor: '#fffbe6'} + default: + return {text: '未知', color: '#8c8c8c', bgColor: '#f5f5f5'} + } + } + + // 跳转到车辆详情 + const navigateToDetail = (item: HjmCar) => { + Taro.navigateTo({ + url: `/hjm/query?id=${item.id}` + }) + } + + // 快速报险 + const quickInsurance = (item: HjmCar, event: any) => { + event.stopPropagation() + Taro.navigateTo({ + url: `/hjm/bx/bx-add?carId=${item.id}&carCode=${item.code}` + }) + } + + if (!data || data.length === 0) { + return null + } + + return ( +
+
+ {data.map((item, index) => { + const insuranceStatus = getInsuranceStatusDisplay(item.insuranceStatus) + + return ( +
navigateToDetail(item)} + > +
+ {/* 车辆图片 */} +
+ +
+ + {/* 车辆信息 */} +
+ + {/* 车辆编号 */} +
+ + + {item.code || '未知编号'} + +
+ + {/* 快递公司 */} +
+ + + 快递公司: + + + {item.parentOrganization || '未知'} + +
+ + {/* 保险状态 */} +
+ + + 保险状态: + + + {insuranceStatus.text} + +
+ + {/* 操作员 */} +
+ + + 操作员: + + + {item.driver || '未绑定'} + +
+
+
+
+ + {/* 操作按钮 */} +
+ + + +
+
+ ) + })} +
+
+ ) +} + +export default BestSellers diff --git a/src/hjm/bx/bx-add.config.ts b/src/hjm/bx/bx-add.config.ts new file mode 100644 index 0000000..4c9a8b6 --- /dev/null +++ b/src/hjm/bx/bx-add.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '一键报险' +}) diff --git a/src/hjm/bx/bx-add.tsx b/src/hjm/bx/bx-add.tsx new file mode 100644 index 0000000..94303ea --- /dev/null +++ b/src/hjm/bx/bx-add.tsx @@ -0,0 +1,366 @@ +import {useEffect, useState} from "react"; +import Taro from '@tarojs/taro' +import { + Image, + Button, + TextArea, + Cell, + Loading, + Space +} from '@nutui/nutui-react-taro' +import {Camera, Truck} from '@nutui/icons-react-taro' +import {addHjmBxLog} from "@/api/hjm/hjmBxLog"; +import {pageHjmCar} from "@/api/hjm/hjmCar"; +import {uploadFile} from "@/api/system/file"; +import {HjmBxLog} from "@/api/hjm/hjmBxLog/model"; +import {HjmCar} from "@/api/hjm/hjmCar/model"; + +/** + * 一键报险 - 添加报险记录页面 + */ +function BxAdd() { + const [loading, setLoading] = useState(false) + const [uploading, setUploading] = useState(false) + const [carInfo, setCarInfo] = useState(null) + const [formData, setFormData] = useState({ + carId: undefined, + image: '', + comments: '', + status: 0 // 0: 待审核, 1: 已通过, 2: 已驳回 + }) + + // 事故类型选项 + const accidentTypes = [ + {text: '轻微刮擦', value: '轻微刮擦'}, + {text: '碰撞事故', value: '碰撞事故'}, + {text: '追尾事故', value: '追尾事故'}, + {text: '侧翻事故', value: '侧翻事故'}, + {text: '其他事故', value: '其他事故'} + ] + + const [accidentType, setAccidentType] = useState('') + const [accidentDescription, setAccidentDescription] = useState('') + + // 初始化页面数据 + const initPageData = async () => { + try { + pageHjmCar({driverId: Taro.getStorageSync('UserId')}).then(res => { + const car = res?.list[0]; + setLoading(true) + if (car) { + setCarInfo(car) + setFormData(prev => ({ + ...prev, + carId: car.id + })) + } else { + Taro.showToast({ + title: '获取车辆信息失败', + icon: 'none' + }) + setTimeout(() => { + Taro.navigateBack() + }, 1000) + } + }) + } catch (error) { + console.error('获取车辆信息失败:', error) + Taro.showToast({ + title: '获取车辆信息失败', + icon: 'none' + }) + } finally { + setLoading(false) + } + } + + // 拍照上传 + const takePhoto = () => { + Taro.chooseImage({ + count: 1, + sizeType: ['compressed'], + sourceType: ['camera'], + success: async () => { + try { + setUploading(true) + // 这里应该调用实际的上传接口 + uploadFile().then(data => { + setFormData({ + ...formData, + image: data.url + }) + }); + } catch (error) { + } finally { + setUploading(false) + } + } + }) + } + + // 提交表单 + const handleSubmit = async () => { + // 表单验证 + if (!formData.carId) { + Taro.showToast({ + title: '请选择车辆', + icon: 'none' + }) + return + } + + if (!accidentType) { + Taro.showToast({ + title: '请选择事故类型', + icon: 'none' + }) + return + } + + if (!formData.image) { + Taro.showToast({ + title: '请上传事故现场照片', + icon: 'none' + }) + return + } + + try { + setLoading(true) + + // 构建提交数据 + const submitData: HjmBxLog = { + ...formData, + comments: `事故类型:${accidentType}\n事故描述:${accidentDescription || '无'}` + } + + await addHjmBxLog(submitData) + + Taro.showToast({ + title: '报险提交成功', + icon: 'success' + }) + setTimeout(() => { + Taro.navigateBack() + }, 1500) + + } catch (error) { + console.error('提交失败:', error) + Taro.showToast({ + title: '提交失败', + icon: 'error' + }) + } finally { + setLoading(false) + } + } + + useEffect(() => { + initPageData() + }, []) + + if (loading && !carInfo) { + return ( +
+ 加载中... +
+ ) + } + + return ( +
+ {/* 车辆信息卡片 */} + {carInfo && ( +
+
+ + 车辆信息 +
+ + +
+ 车辆编号: + {carInfo.code} +
+
+ 快递公司: + {carInfo.parentOrganization} +
+
+ 操作员: + {carInfo.driver || '未绑定'} +
+
+
+ )} + + {/* 事故信息表单 */} +
+
+ 事故信息 +
+ + + {/* 事故类型 */} + { + Taro.showActionSheet({ + itemList: accidentTypes.map(item => item.text), + success: (res) => { + setAccidentType(accidentTypes[res.tapIndex].value) + } + }) + }} + /> + + {/* 事故时间 */} + {/* {*/} + {/* const now = new Date()*/} + {/* setAccidentTime(now.toISOString().slice(0, 16))*/} + {/* }}*/} + {/*/>*/} + +
+ + {/* 事故描述 */} +
+
+ 事故描述 + (选填) +
+