首页增加统计项,日志管理增加存入知识库功能,按钮管理增加字段code,日志管理增加提问方式字段
正在显示
19 个修改的文件
包含
632 行增加
和
154 行删除
| @@ -21,48 +21,51 @@ | @@ -21,48 +21,51 @@ | ||
| 21 | "husky:install": "husky install" | 21 | "husky:install": "husky install" |
| 22 | }, | 22 | }, |
| 23 | "dependencies": { | 23 | "dependencies": { |
| 24 | - "@jeecg/online": "3.7.4-beta", | 24 | + "@ant-design/colors": "^7.2.0", |
| 25 | + "@ant-design/icons-vue": "^7.0.1", | ||
| 26 | + "@iconify/iconify": "^3.1.1", | ||
| 25 | "@jeecg/aiflow": "1.0.0", | 27 | "@jeecg/aiflow": "1.0.0", |
| 28 | + "@jeecg/online": "3.7.4-beta", | ||
| 26 | "@logicflow/core": "^2.0.10", | 29 | "@logicflow/core": "^2.0.10", |
| 27 | "@logicflow/extension": "^2.0.14", | 30 | "@logicflow/extension": "^2.0.14", |
| 28 | "@logicflow/vue-node-registry": "^1.0.12", | 31 | "@logicflow/vue-node-registry": "^1.0.12", |
| 29 | - "@iconify/iconify": "^3.1.1", | ||
| 30 | - "@ant-design/colors": "^7.2.0", | ||
| 31 | - "@ant-design/icons-vue": "^7.0.1", | 32 | + "@tinymce/tinymce-vue": "4.0.7", |
| 33 | + "@traptitech/markdown-it-katex": "^3.6.0", | ||
| 34 | + "@vant/area-data": "^1.5.2", | ||
| 32 | "@vue/shared": "^3.5.13", | 35 | "@vue/shared": "^3.5.13", |
| 33 | "@vueuse/core": "^10.11.1", | 36 | "@vueuse/core": "^10.11.1", |
| 34 | - "@tinymce/tinymce-vue": "4.0.7", | ||
| 35 | "@zxcvbn-ts/core": "^3.0.4", | 37 | "@zxcvbn-ts/core": "^3.0.4", |
| 36 | "ant-design-vue": "^4.2.6", | 38 | "ant-design-vue": "^4.2.6", |
| 37 | "axios": "^1.7.9", | 39 | "axios": "^1.7.9", |
| 38 | "china-area-data": "^5.0.1", | 40 | "china-area-data": "^5.0.1", |
| 39 | - "@vant/area-data": "^1.5.2", | ||
| 40 | "clipboard": "^2.0.11", | 41 | "clipboard": "^2.0.11", |
| 41 | "codemirror": "^5.65.18", | 42 | "codemirror": "^5.65.18", |
| 42 | "cron-parser": "^4.9.0", | 43 | "cron-parser": "^4.9.0", |
| 43 | "cropperjs": "^1.6.2", | 44 | "cropperjs": "^1.6.2", |
| 44 | "crypto-js": "^4.2.0", | 45 | "crypto-js": "^4.2.0", |
| 45 | "dayjs": "^1.11.13", | 46 | "dayjs": "^1.11.13", |
| 47 | + "docx-preview": "^0.3.5", | ||
| 46 | "dom-align": "^1.12.4", | 48 | "dom-align": "^1.12.4", |
| 47 | "echarts": "^5.6.0", | 49 | "echarts": "^5.6.0", |
| 48 | "emoji-mart-vue-fast": "^15.0.3", | 50 | "emoji-mart-vue-fast": "^15.0.3", |
| 49 | "enquire.js": "^2.1.6", | 51 | "enquire.js": "^2.1.6", |
| 52 | + "event-source-polyfill": "^1.0.31", | ||
| 53 | + "highlight.js": "^11.11.1", | ||
| 50 | "intro.js": "^7.2.0", | 54 | "intro.js": "^7.2.0", |
| 51 | "lodash-es": "^4.17.21", | 55 | "lodash-es": "^4.17.21", |
| 52 | "lodash.get": "^4.4.2", | 56 | "lodash.get": "^4.4.2", |
| 57 | + "mammoth": "^1.9.1", | ||
| 53 | "markdown-it": "^14.1.0", | 58 | "markdown-it": "^14.1.0", |
| 54 | "markdown-it-link-attributes": "^4.0.1", | 59 | "markdown-it-link-attributes": "^4.0.1", |
| 55 | - "event-source-polyfill": "^1.0.31", | ||
| 56 | - "highlight.js": "^11.11.1", | ||
| 57 | - "@traptitech/markdown-it-katex": "^3.6.0", | ||
| 58 | "md5": "^2.3.0", | 60 | "md5": "^2.3.0", |
| 59 | "mockjs": "^1.1.0", | 61 | "mockjs": "^1.1.0", |
| 60 | "nprogress": "^0.2.0", | 62 | "nprogress": "^0.2.0", |
| 61 | "path-to-regexp": "^6.3.0", | 63 | "path-to-regexp": "^6.3.0", |
| 64 | + "pdfjs-dist": "^5.3.31", | ||
| 62 | "pinia": "2.1.7", | 65 | "pinia": "2.1.7", |
| 63 | "print-js": "^1.6.0", | 66 | "print-js": "^1.6.0", |
| 64 | - "qs": "^6.13.1", | ||
| 65 | "qrcode": "^1.5.4", | 67 | "qrcode": "^1.5.4", |
| 68 | + "qs": "^6.13.1", | ||
| 66 | "resize-observer-polyfill": "^1.5.1", | 69 | "resize-observer-polyfill": "^1.5.1", |
| 67 | "showdown": "^2.1.0", | 70 | "showdown": "^2.1.0", |
| 68 | "sortablejs": "^1.15.6", | 71 | "sortablejs": "^1.15.6", |
| @@ -78,9 +81,9 @@ | @@ -78,9 +81,9 @@ | ||
| 78 | "vue-router": "^4.5.0", | 81 | "vue-router": "^4.5.0", |
| 79 | "vue-types": "^5.1.3", | 82 | "vue-types": "^5.1.3", |
| 80 | "vuedraggable": "^4.1.0", | 83 | "vuedraggable": "^4.1.0", |
| 84 | + "vxe-pc-ui": "4.6.12", | ||
| 81 | "vxe-table": "4.13.31", | 85 | "vxe-table": "4.13.31", |
| 82 | "vxe-table-plugin-antd": "4.0.8", | 86 | "vxe-table-plugin-antd": "4.0.8", |
| 83 | - "vxe-pc-ui": "4.6.12", | ||
| 84 | "xe-utils": "3.5.26", | 87 | "xe-utils": "3.5.26", |
| 85 | "xss": "^1.0.15" | 88 | "xss": "^1.0.15" |
| 86 | }, | 89 | }, |
| @@ -89,6 +92,7 @@ | @@ -89,6 +92,7 @@ | ||
| 89 | "@commitlint/config-conventional": "^18.6.3", | 92 | "@commitlint/config-conventional": "^18.6.3", |
| 90 | "@iconify/json": "^2.2.292", | 93 | "@iconify/json": "^2.2.292", |
| 91 | "@purge-icons/generated": "^0.10.0", | 94 | "@purge-icons/generated": "^0.10.0", |
| 95 | + "@rys-fe/vite-plugin-theme": "^0.8.6", | ||
| 92 | "@types/codemirror": "^5.60.15", | 96 | "@types/codemirror": "^5.60.15", |
| 93 | "@types/crypto-js": "^4.2.2", | 97 | "@types/crypto-js": "^4.2.2", |
| 94 | "@types/fs-extra": "^11.0.4", | 98 | "@types/fs-extra": "^11.0.4", |
| @@ -110,11 +114,13 @@ | @@ -110,11 +114,13 @@ | ||
| 110 | "@vue/compiler-sfc": "^3.5.13", | 114 | "@vue/compiler-sfc": "^3.5.13", |
| 111 | "@vue/test-utils": "^2.4.6", | 115 | "@vue/test-utils": "^2.4.6", |
| 112 | "autoprefixer": "^10.4.20", | 116 | "autoprefixer": "^10.4.20", |
| 117 | + "big.js": "^6.2.2", | ||
| 113 | "commitizen": "^4.3.1", | 118 | "commitizen": "^4.3.1", |
| 114 | "conventional-changelog-cli": "^4.1.0", | 119 | "conventional-changelog-cli": "^4.1.0", |
| 115 | "cross-env": "^7.0.3", | 120 | "cross-env": "^7.0.3", |
| 116 | "cz-git": "^1.11.0", | 121 | "cz-git": "^1.11.0", |
| 117 | "czg": "^1.11.0", | 122 | "czg": "^1.11.0", |
| 123 | + "dingtalk-jsapi": "^3.0.42", | ||
| 118 | "dotenv": "^16.4.7", | 124 | "dotenv": "^16.4.7", |
| 119 | "eslint": "^8.57.1", | 125 | "eslint": "^8.57.1", |
| 120 | "eslint-config-prettier": "^9.1.0", | 126 | "eslint-config-prettier": "^9.1.0", |
| @@ -150,6 +156,7 @@ | @@ -150,6 +156,7 @@ | ||
| 150 | "ts-jest": "^29.2.5", | 156 | "ts-jest": "^29.2.5", |
| 151 | "ts-node": "^10.9.2", | 157 | "ts-node": "^10.9.2", |
| 152 | "typescript": "^4.9.5", | 158 | "typescript": "^4.9.5", |
| 159 | + "unocss": "^0.58.9", | ||
| 153 | "vite": "^6.0.7", | 160 | "vite": "^6.0.7", |
| 154 | "vite-plugin-compression": "^0.5.1", | 161 | "vite-plugin-compression": "^0.5.1", |
| 155 | "vite-plugin-html": "^3.2.2", | 162 | "vite-plugin-html": "^3.2.2", |
| @@ -158,15 +165,11 @@ | @@ -158,15 +165,11 @@ | ||
| 158 | "vite-plugin-optimize-persist": "^0.1.2", | 165 | "vite-plugin-optimize-persist": "^0.1.2", |
| 159 | "vite-plugin-package-config": "^0.1.1", | 166 | "vite-plugin-package-config": "^0.1.1", |
| 160 | "vite-plugin-purge-icons": "^0.10.0", | 167 | "vite-plugin-purge-icons": "^0.10.0", |
| 161 | - "vite-plugin-svg-icons": "^2.0.1", | ||
| 162 | "vite-plugin-qiankun": "^1.0.15", | 168 | "vite-plugin-qiankun": "^1.0.15", |
| 163 | - "@rys-fe/vite-plugin-theme": "^0.8.6", | 169 | + "vite-plugin-svg-icons": "^2.0.1", |
| 164 | "vite-plugin-vue-setup-extend-plus": "^0.1.0", | 170 | "vite-plugin-vue-setup-extend-plus": "^0.1.0", |
| 165 | - "unocss": "^0.58.9", | ||
| 166 | "vue-eslint-parser": "^9.4.3", | 171 | "vue-eslint-parser": "^9.4.3", |
| 167 | - "vue-tsc": "^1.8.27", | ||
| 168 | - "dingtalk-jsapi": "^3.0.42", | ||
| 169 | - "big.js": "^6.2.2" | 172 | + "vue-tsc": "^1.8.27" |
| 170 | }, | 173 | }, |
| 171 | "repository": { | 174 | "repository": { |
| 172 | "type": "git", | 175 | "type": "git", |
| @@ -77,6 +77,9 @@ importers: | @@ -77,6 +77,9 @@ importers: | ||
| 77 | dayjs: | 77 | dayjs: |
| 78 | specifier: ^1.11.13 | 78 | specifier: ^1.11.13 |
| 79 | version: 1.11.13 | 79 | version: 1.11.13 |
| 80 | + docx-preview: | ||
| 81 | + specifier: ^0.3.5 | ||
| 82 | + version: 0.3.5 | ||
| 80 | dom-align: | 83 | dom-align: |
| 81 | specifier: ^1.12.4 | 84 | specifier: ^1.12.4 |
| 82 | version: 1.12.4 | 85 | version: 1.12.4 |
| @@ -104,6 +107,9 @@ importers: | @@ -104,6 +107,9 @@ importers: | ||
| 104 | lodash.get: | 107 | lodash.get: |
| 105 | specifier: ^4.4.2 | 108 | specifier: ^4.4.2 |
| 106 | version: 4.4.2 | 109 | version: 4.4.2 |
| 110 | + mammoth: | ||
| 111 | + specifier: ^1.9.1 | ||
| 112 | + version: 1.9.1 | ||
| 107 | markdown-it: | 113 | markdown-it: |
| 108 | specifier: ^14.1.0 | 114 | specifier: ^14.1.0 |
| 109 | version: 14.1.0 | 115 | version: 14.1.0 |
| @@ -122,6 +128,9 @@ importers: | @@ -122,6 +128,9 @@ importers: | ||
| 122 | path-to-regexp: | 128 | path-to-regexp: |
| 123 | specifier: ^6.3.0 | 129 | specifier: ^6.3.0 |
| 124 | version: 6.3.0 | 130 | version: 6.3.0 |
| 131 | + pdfjs-dist: | ||
| 132 | + specifier: ^5.3.31 | ||
| 133 | + version: 5.3.31 | ||
| 125 | pinia: | 134 | pinia: |
| 126 | specifier: 2.1.7 | 135 | specifier: 2.1.7 |
| 127 | version: 2.1.7(typescript@4.9.5)(vue@3.5.14(typescript@4.9.5)) | 136 | version: 2.1.7(typescript@4.9.5)(vue@3.5.14(typescript@4.9.5)) |
| @@ -1171,6 +1180,70 @@ packages: | @@ -1171,6 +1180,70 @@ packages: | ||
| 1171 | '@vue/composition-api': | 1180 | '@vue/composition-api': |
| 1172 | optional: true | 1181 | optional: true |
| 1173 | 1182 | ||
| 1183 | + '@napi-rs/canvas-android-arm64@0.1.71': | ||
| 1184 | + resolution: {integrity: sha512-cxi3VCotIOS9kNFQI7dcysbVJi106pxryVY1Hi85pX+ZeqahRyeqc/NsLaZ998Ae99+F3HI5X/39G1Y/Byrf0A==} | ||
| 1185 | + engines: {node: '>= 10'} | ||
| 1186 | + cpu: [arm64] | ||
| 1187 | + os: [android] | ||
| 1188 | + | ||
| 1189 | + '@napi-rs/canvas-darwin-arm64@0.1.71': | ||
| 1190 | + resolution: {integrity: sha512-7Y4D/6vIuMLYsVNtRM/w2j0+fB1GyqeOxc7I0BTx8eLP1S6BZE2Rj6zJfdG+zmLEOW0IlHa+VQq1q2MUAjW84w==} | ||
| 1191 | + engines: {node: '>= 10'} | ||
| 1192 | + cpu: [arm64] | ||
| 1193 | + os: [darwin] | ||
| 1194 | + | ||
| 1195 | + '@napi-rs/canvas-darwin-x64@0.1.71': | ||
| 1196 | + resolution: {integrity: sha512-Z0IUqxclrYdfVt/SK9nKCzUHTOXKTWiygtO71YCzs0OtxKdNI7GJRJdYG48wXZEDQ/pqTF4F7Ifgtidfc2tYpg==} | ||
| 1197 | + engines: {node: '>= 10'} | ||
| 1198 | + cpu: [x64] | ||
| 1199 | + os: [darwin] | ||
| 1200 | + | ||
| 1201 | + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.71': | ||
| 1202 | + resolution: {integrity: sha512-KlpqqCASak5ruY+UIolJgmhMZ9Pa2o1QyaNu648L8sz4WNBbNa+aOT60XCLCL1VIKLv11B3MlNgiOHoYNmDhXQ==} | ||
| 1203 | + engines: {node: '>= 10'} | ||
| 1204 | + cpu: [arm] | ||
| 1205 | + os: [linux] | ||
| 1206 | + | ||
| 1207 | + '@napi-rs/canvas-linux-arm64-gnu@0.1.71': | ||
| 1208 | + resolution: {integrity: sha512-bdGZCGu8YQNAiu3nkIVVUp6nIn6fPd36IuZsLXTG027E52KyIuZ3obCxehSwjDIUNkFWvmff5D6JYfWwAoioEw==} | ||
| 1209 | + engines: {node: '>= 10'} | ||
| 1210 | + cpu: [arm64] | ||
| 1211 | + os: [linux] | ||
| 1212 | + | ||
| 1213 | + '@napi-rs/canvas-linux-arm64-musl@0.1.71': | ||
| 1214 | + resolution: {integrity: sha512-1R5sMWe9ur8uM+hAeylBwG0b6UHDR+iWQNgzXmF9vbBYRooQvmDWqpcgytKLJAC0vnWhIkKwqd7yExn7cwczmg==} | ||
| 1215 | + engines: {node: '>= 10'} | ||
| 1216 | + cpu: [arm64] | ||
| 1217 | + os: [linux] | ||
| 1218 | + | ||
| 1219 | + '@napi-rs/canvas-linux-riscv64-gnu@0.1.71': | ||
| 1220 | + resolution: {integrity: sha512-xjjKsipueuG+LdKIk6/uAlqdo+rzGcmNpTZPXdakIT1sHX4NNSnQTzjRaj9Gh96Czjd9G89UWR0KIlE7fwOgFA==} | ||
| 1221 | + engines: {node: '>= 10'} | ||
| 1222 | + cpu: [riscv64] | ||
| 1223 | + os: [linux] | ||
| 1224 | + | ||
| 1225 | + '@napi-rs/canvas-linux-x64-gnu@0.1.71': | ||
| 1226 | + resolution: {integrity: sha512-3s6YpklXDB4OeeULG1XTRyKrKAOo7c3HHEqM9A6N4STSjMaJtzmpp7tB/JTvAFeOeFte6gWN8IwC+7AjGJ6MpQ==} | ||
| 1227 | + engines: {node: '>= 10'} | ||
| 1228 | + cpu: [x64] | ||
| 1229 | + os: [linux] | ||
| 1230 | + | ||
| 1231 | + '@napi-rs/canvas-linux-x64-musl@0.1.71': | ||
| 1232 | + resolution: {integrity: sha512-5v9aCLzCXw7u10ray5juQMdl7TykZSn1X5AIGYwBvTAcKSgrqaR9QkRxp1Lqk3njQmFekOW1SFN9bZ/i/6y6kA==} | ||
| 1233 | + engines: {node: '>= 10'} | ||
| 1234 | + cpu: [x64] | ||
| 1235 | + os: [linux] | ||
| 1236 | + | ||
| 1237 | + '@napi-rs/canvas-win32-x64-msvc@0.1.71': | ||
| 1238 | + resolution: {integrity: sha512-oJughk6xjsRIr0Rd9EqjmZmhIMkvcPuXgr3MNn2QexTqn+YFOizrwHS5ha0BDfFl7TEGRvwaDUXBQtu8JKXb8A==} | ||
| 1239 | + engines: {node: '>= 10'} | ||
| 1240 | + cpu: [x64] | ||
| 1241 | + os: [win32] | ||
| 1242 | + | ||
| 1243 | + '@napi-rs/canvas@0.1.71': | ||
| 1244 | + resolution: {integrity: sha512-92ybDocKl6JM48ZpYbj+A7Qt45IaTABDk0y3sDecEQfgdhfNzJtEityqNHoCZ4Vty2dldPkJhxgvOnbrQMXTTA==} | ||
| 1245 | + engines: {node: '>= 10'} | ||
| 1246 | + | ||
| 1174 | '@nodelib/fs.scandir@2.1.5': | 1247 | '@nodelib/fs.scandir@2.1.5': |
| 1175 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} | 1248 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} |
| 1176 | engines: {node: '>= 8'} | 1249 | engines: {node: '>= 8'} |
| @@ -1756,6 +1829,10 @@ packages: | @@ -1756,6 +1829,10 @@ packages: | ||
| 1756 | peerDependencies: | 1829 | peerDependencies: |
| 1757 | vue: ^3.2.0 | 1830 | vue: ^3.2.0 |
| 1758 | 1831 | ||
| 1832 | + '@xmldom/xmldom@0.8.10': | ||
| 1833 | + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} | ||
| 1834 | + engines: {node: '>=10.0.0'} | ||
| 1835 | + | ||
| 1759 | '@zxcvbn-ts/core@3.0.4': | 1836 | '@zxcvbn-ts/core@3.0.4': |
| 1760 | resolution: {integrity: sha512-aQeiT0F09FuJaAqNrxynlAwZ2mW/1MdXakKWNmGM1Qp/VaY6CnB/GfnMS2T8gB2231Esp1/maCWd8vTG4OuShw==} | 1837 | resolution: {integrity: sha512-aQeiT0F09FuJaAqNrxynlAwZ2mW/1MdXakKWNmGM1Qp/VaY6CnB/GfnMS2T8gB2231Esp1/maCWd8vTG4OuShw==} |
| 1761 | 1838 | ||
| @@ -1995,6 +2072,9 @@ packages: | @@ -1995,6 +2072,9 @@ packages: | ||
| 1995 | bl@4.1.0: | 2072 | bl@4.1.0: |
| 1996 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} | 2073 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} |
| 1997 | 2074 | ||
| 2075 | + bluebird@3.4.7: | ||
| 2076 | + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} | ||
| 2077 | + | ||
| 1998 | bluebird@3.7.2: | 2078 | bluebird@3.7.2: |
| 1999 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} | 2079 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} |
| 2000 | 2080 | ||
| @@ -2384,6 +2464,9 @@ packages: | @@ -2384,6 +2464,9 @@ packages: | ||
| 2384 | core-js@3.42.0: | 2464 | core-js@3.42.0: |
| 2385 | resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} | 2465 | resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} |
| 2386 | 2466 | ||
| 2467 | + core-util-is@1.0.3: | ||
| 2468 | + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} | ||
| 2469 | + | ||
| 2387 | cors@2.8.5: | 2470 | cors@2.8.5: |
| 2388 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} | 2471 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} |
| 2389 | engines: {node: '>= 0.10'} | 2472 | engines: {node: '>= 0.10'} |
| @@ -2665,6 +2748,9 @@ packages: | @@ -2665,6 +2748,9 @@ packages: | ||
| 2665 | dijkstrajs@1.0.3: | 2748 | dijkstrajs@1.0.3: |
| 2666 | resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} | 2749 | resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} |
| 2667 | 2750 | ||
| 2751 | + dingbat-to-unicode@1.0.1: | ||
| 2752 | + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} | ||
| 2753 | + | ||
| 2668 | dingtalk-jsapi@3.1.0: | 2754 | dingtalk-jsapi@3.1.0: |
| 2669 | resolution: {integrity: sha512-2W1XuOR3g/0eYbqXXOMKwmTSUzyIeKNIQ1DDgUrMmf3eNdfOb8ShcQZ02QNvn/j5Vpy6Pd0Yf+uRkWVB3Pl9gA==} | 2755 | resolution: {integrity: sha512-2W1XuOR3g/0eYbqXXOMKwmTSUzyIeKNIQ1DDgUrMmf3eNdfOb8ShcQZ02QNvn/j5Vpy6Pd0Yf+uRkWVB3Pl9gA==} |
| 2670 | 2756 | ||
| @@ -2676,6 +2762,9 @@ packages: | @@ -2676,6 +2762,9 @@ packages: | ||
| 2676 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} | 2762 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} |
| 2677 | engines: {node: '>=6.0.0'} | 2763 | engines: {node: '>=6.0.0'} |
| 2678 | 2764 | ||
| 2765 | + docx-preview@0.3.5: | ||
| 2766 | + resolution: {integrity: sha512-nod1jG5PkvzDIiZAcgAY4gSFQzgmAAChcuZH4Hj9dj7oCzscY3Hn8NfbUv7X7Jk4xL1lfKO113JLDhWKOt6fYw==} | ||
| 2767 | + | ||
| 2679 | dom-align@1.12.4: | 2768 | dom-align@1.12.4: |
| 2680 | resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} | 2769 | resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} |
| 2681 | 2770 | ||
| @@ -2735,6 +2824,9 @@ packages: | @@ -2735,6 +2824,9 @@ packages: | ||
| 2735 | resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} | 2824 | resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} |
| 2736 | engines: {node: '>=12'} | 2825 | engines: {node: '>=12'} |
| 2737 | 2826 | ||
| 2827 | + duck@0.1.12: | ||
| 2828 | + resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} | ||
| 2829 | + | ||
| 2738 | dunder-proto@1.0.1: | 2830 | dunder-proto@1.0.1: |
| 2739 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} | 2831 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} |
| 2740 | engines: {node: '>= 0.4'} | 2832 | engines: {node: '>= 0.4'} |
| @@ -3618,6 +3710,9 @@ packages: | @@ -3618,6 +3710,9 @@ packages: | ||
| 3618 | engines: {node: '>=0.10.0'} | 3710 | engines: {node: '>=0.10.0'} |
| 3619 | hasBin: true | 3711 | hasBin: true |
| 3620 | 3712 | ||
| 3713 | + immediate@3.0.6: | ||
| 3714 | + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} | ||
| 3715 | + | ||
| 3621 | import-fresh@3.3.1: | 3716 | import-fresh@3.3.1: |
| 3622 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} | 3717 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} |
| 3623 | engines: {node: '>=6'} | 3718 | engines: {node: '>=6'} |
| @@ -4142,6 +4237,9 @@ packages: | @@ -4142,6 +4237,9 @@ packages: | ||
| 4142 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} | 4237 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} |
| 4143 | engines: {'0': node >= 0.2.0} | 4238 | engines: {'0': node >= 0.2.0} |
| 4144 | 4239 | ||
| 4240 | + jszip@3.10.1: | ||
| 4241 | + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} | ||
| 4242 | + | ||
| 4145 | katex@0.16.22: | 4243 | katex@0.16.22: |
| 4146 | resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} | 4244 | resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} |
| 4147 | hasBin: true | 4245 | hasBin: true |
| @@ -4191,6 +4289,9 @@ packages: | @@ -4191,6 +4289,9 @@ packages: | ||
| 4191 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} | 4289 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} |
| 4192 | engines: {node: '>= 0.8.0'} | 4290 | engines: {node: '>= 0.8.0'} |
| 4193 | 4291 | ||
| 4292 | + lie@3.3.0: | ||
| 4293 | + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} | ||
| 4294 | + | ||
| 4194 | lilconfig@3.0.0: | 4295 | lilconfig@3.0.0: |
| 4195 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} | 4296 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} |
| 4196 | engines: {node: '>=14'} | 4297 | engines: {node: '>=14'} |
| @@ -4303,6 +4404,9 @@ packages: | @@ -4303,6 +4404,9 @@ packages: | ||
| 4303 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} | 4404 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} |
| 4304 | hasBin: true | 4405 | hasBin: true |
| 4305 | 4406 | ||
| 4407 | + lop@0.4.2: | ||
| 4408 | + resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} | ||
| 4409 | + | ||
| 4306 | lower-case@2.0.2: | 4410 | lower-case@2.0.2: |
| 4307 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} | 4411 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} |
| 4308 | 4412 | ||
| @@ -4337,6 +4441,11 @@ packages: | @@ -4337,6 +4441,11 @@ packages: | ||
| 4337 | makeerror@1.0.12: | 4441 | makeerror@1.0.12: |
| 4338 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} | 4442 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} |
| 4339 | 4443 | ||
| 4444 | + mammoth@1.9.1: | ||
| 4445 | + resolution: {integrity: sha512-4S2v1eP4Yo4so0zGNicJKcP93su3wDPcUk+xvkjSG75nlNjSkDJu8BhWQ+e54BROM0HfA6nPzJn12S6bq2Ko6w==} | ||
| 4446 | + engines: {node: '>=12.0.0'} | ||
| 4447 | + hasBin: true | ||
| 4448 | + | ||
| 4340 | map-cache@0.2.2: | 4449 | map-cache@0.2.2: |
| 4341 | resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} | 4450 | resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} |
| 4342 | engines: {node: '>=0.10.0'} | 4451 | engines: {node: '>=0.10.0'} |
| @@ -4695,6 +4804,9 @@ packages: | @@ -4695,6 +4804,9 @@ packages: | ||
| 4695 | resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} | 4804 | resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} |
| 4696 | hasBin: true | 4805 | hasBin: true |
| 4697 | 4806 | ||
| 4807 | + option@0.2.4: | ||
| 4808 | + resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} | ||
| 4809 | + | ||
| 4698 | optionator@0.9.4: | 4810 | optionator@0.9.4: |
| 4699 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} | 4811 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} |
| 4700 | engines: {node: '>= 0.8.0'} | 4812 | engines: {node: '>= 0.8.0'} |
| @@ -4745,6 +4857,9 @@ packages: | @@ -4745,6 +4857,9 @@ packages: | ||
| 4745 | package-manager-detector@1.3.0: | 4857 | package-manager-detector@1.3.0: |
| 4746 | resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} | 4858 | resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} |
| 4747 | 4859 | ||
| 4860 | + pako@1.0.11: | ||
| 4861 | + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} | ||
| 4862 | + | ||
| 4748 | param-case@3.0.4: | 4863 | param-case@3.0.4: |
| 4749 | resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} | 4864 | resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} |
| 4750 | 4865 | ||
| @@ -4846,6 +4961,10 @@ packages: | @@ -4846,6 +4961,10 @@ packages: | ||
| 4846 | pathe@2.0.3: | 4961 | pathe@2.0.3: |
| 4847 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} | 4962 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} |
| 4848 | 4963 | ||
| 4964 | + pdfjs-dist@5.3.31: | ||
| 4965 | + resolution: {integrity: sha512-EhPdIjNX0fcdwYQO+e3BAAJPXt+XI29TZWC7COhIXs/K0JHcUt1Gdz1ITpebTwVMFiLsukdUZ3u0oTO7jij+VA==} | ||
| 4966 | + engines: {node: '>=20.16.0 || >=22.3.0'} | ||
| 4967 | + | ||
| 4849 | perfect-debounce@1.0.0: | 4968 | perfect-debounce@1.0.0: |
| 4850 | resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} | 4969 | resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} |
| 4851 | 4970 | ||
| @@ -5021,6 +5140,9 @@ packages: | @@ -5021,6 +5140,9 @@ packages: | ||
| 5021 | print-js@1.6.0: | 5140 | print-js@1.6.0: |
| 5022 | resolution: {integrity: sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==} | 5141 | resolution: {integrity: sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==} |
| 5023 | 5142 | ||
| 5143 | + process-nextick-args@2.0.1: | ||
| 5144 | + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} | ||
| 5145 | + | ||
| 5024 | promise-polyfill@7.1.2: | 5146 | promise-polyfill@7.1.2: |
| 5025 | resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} | 5147 | resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} |
| 5026 | 5148 | ||
| @@ -5097,6 +5219,9 @@ packages: | @@ -5097,6 +5219,9 @@ packages: | ||
| 5097 | resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} | 5219 | resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} |
| 5098 | engines: {node: '>=16'} | 5220 | engines: {node: '>=16'} |
| 5099 | 5221 | ||
| 5222 | + readable-stream@2.3.8: | ||
| 5223 | + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} | ||
| 5224 | + | ||
| 5100 | readable-stream@3.6.2: | 5225 | readable-stream@3.6.2: |
| 5101 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} | 5226 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} |
| 5102 | engines: {node: '>= 6'} | 5227 | engines: {node: '>= 6'} |
| @@ -5326,6 +5451,9 @@ packages: | @@ -5326,6 +5451,9 @@ packages: | ||
| 5326 | resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} | 5451 | resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} |
| 5327 | engines: {node: '>=0.10.0'} | 5452 | engines: {node: '>=0.10.0'} |
| 5328 | 5453 | ||
| 5454 | + setimmediate@1.0.5: | ||
| 5455 | + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} | ||
| 5456 | + | ||
| 5329 | shallow-equal@1.2.1: | 5457 | shallow-equal@1.2.1: |
| 5330 | resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} | 5458 | resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} |
| 5331 | 5459 | ||
| @@ -5529,6 +5657,9 @@ packages: | @@ -5529,6 +5657,9 @@ packages: | ||
| 5529 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} | 5657 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} |
| 5530 | engines: {node: '>= 0.4'} | 5658 | engines: {node: '>= 0.4'} |
| 5531 | 5659 | ||
| 5660 | + string_decoder@1.1.1: | ||
| 5661 | + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} | ||
| 5662 | + | ||
| 5532 | string_decoder@1.3.0: | 5663 | string_decoder@1.3.0: |
| 5533 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} | 5664 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} |
| 5534 | 5665 | ||
| @@ -5901,6 +6032,9 @@ packages: | @@ -5901,6 +6032,9 @@ packages: | ||
| 5901 | unconfig@0.3.13: | 6032 | unconfig@0.3.13: |
| 5902 | resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} | 6033 | resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} |
| 5903 | 6034 | ||
| 6035 | + underscore@1.13.7: | ||
| 6036 | + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} | ||
| 6037 | + | ||
| 5904 | undici-types@6.19.8: | 6038 | undici-types@6.19.8: |
| 5905 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} | 6039 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} |
| 5906 | 6040 | ||
| @@ -6277,6 +6411,10 @@ packages: | @@ -6277,6 +6411,10 @@ packages: | ||
| 6277 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} | 6411 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} |
| 6278 | engines: {node: '>=12'} | 6412 | engines: {node: '>=12'} |
| 6279 | 6413 | ||
| 6414 | + xmlbuilder@10.1.1: | ||
| 6415 | + resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} | ||
| 6416 | + engines: {node: '>=4.0'} | ||
| 6417 | + | ||
| 6280 | xss@1.0.15: | 6418 | xss@1.0.15: |
| 6281 | resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} | 6419 | resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} |
| 6282 | engines: {node: '>= 0.10.0'} | 6420 | engines: {node: '>= 0.10.0'} |
| @@ -7226,6 +7364,50 @@ snapshots: | @@ -7226,6 +7364,50 @@ snapshots: | ||
| 7226 | vue: 3.5.14(typescript@4.9.5) | 7364 | vue: 3.5.14(typescript@4.9.5) |
| 7227 | vue-demi: 0.14.10(vue@3.5.14(typescript@4.9.5)) | 7365 | vue-demi: 0.14.10(vue@3.5.14(typescript@4.9.5)) |
| 7228 | 7366 | ||
| 7367 | + '@napi-rs/canvas-android-arm64@0.1.71': | ||
| 7368 | + optional: true | ||
| 7369 | + | ||
| 7370 | + '@napi-rs/canvas-darwin-arm64@0.1.71': | ||
| 7371 | + optional: true | ||
| 7372 | + | ||
| 7373 | + '@napi-rs/canvas-darwin-x64@0.1.71': | ||
| 7374 | + optional: true | ||
| 7375 | + | ||
| 7376 | + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.71': | ||
| 7377 | + optional: true | ||
| 7378 | + | ||
| 7379 | + '@napi-rs/canvas-linux-arm64-gnu@0.1.71': | ||
| 7380 | + optional: true | ||
| 7381 | + | ||
| 7382 | + '@napi-rs/canvas-linux-arm64-musl@0.1.71': | ||
| 7383 | + optional: true | ||
| 7384 | + | ||
| 7385 | + '@napi-rs/canvas-linux-riscv64-gnu@0.1.71': | ||
| 7386 | + optional: true | ||
| 7387 | + | ||
| 7388 | + '@napi-rs/canvas-linux-x64-gnu@0.1.71': | ||
| 7389 | + optional: true | ||
| 7390 | + | ||
| 7391 | + '@napi-rs/canvas-linux-x64-musl@0.1.71': | ||
| 7392 | + optional: true | ||
| 7393 | + | ||
| 7394 | + '@napi-rs/canvas-win32-x64-msvc@0.1.71': | ||
| 7395 | + optional: true | ||
| 7396 | + | ||
| 7397 | + '@napi-rs/canvas@0.1.71': | ||
| 7398 | + optionalDependencies: | ||
| 7399 | + '@napi-rs/canvas-android-arm64': 0.1.71 | ||
| 7400 | + '@napi-rs/canvas-darwin-arm64': 0.1.71 | ||
| 7401 | + '@napi-rs/canvas-darwin-x64': 0.1.71 | ||
| 7402 | + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.71 | ||
| 7403 | + '@napi-rs/canvas-linux-arm64-gnu': 0.1.71 | ||
| 7404 | + '@napi-rs/canvas-linux-arm64-musl': 0.1.71 | ||
| 7405 | + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.71 | ||
| 7406 | + '@napi-rs/canvas-linux-x64-gnu': 0.1.71 | ||
| 7407 | + '@napi-rs/canvas-linux-x64-musl': 0.1.71 | ||
| 7408 | + '@napi-rs/canvas-win32-x64-msvc': 0.1.71 | ||
| 7409 | + optional: true | ||
| 7410 | + | ||
| 7229 | '@nodelib/fs.scandir@2.1.5': | 7411 | '@nodelib/fs.scandir@2.1.5': |
| 7230 | dependencies: | 7412 | dependencies: |
| 7231 | '@nodelib/fs.stat': 2.0.5 | 7413 | '@nodelib/fs.stat': 2.0.5 |
| @@ -7958,6 +8140,8 @@ snapshots: | @@ -7958,6 +8140,8 @@ snapshots: | ||
| 7958 | vue: 3.5.14(typescript@4.9.5) | 8140 | vue: 3.5.14(typescript@4.9.5) |
| 7959 | xe-utils: 3.7.4 | 8141 | xe-utils: 3.7.4 |
| 7960 | 8142 | ||
| 8143 | + '@xmldom/xmldom@0.8.10': {} | ||
| 8144 | + | ||
| 7961 | '@zxcvbn-ts/core@3.0.4': | 8145 | '@zxcvbn-ts/core@3.0.4': |
| 7962 | dependencies: | 8146 | dependencies: |
| 7963 | fastest-levenshtein: 1.0.16 | 8147 | fastest-levenshtein: 1.0.16 |
| @@ -8233,6 +8417,8 @@ snapshots: | @@ -8233,6 +8417,8 @@ snapshots: | ||
| 8233 | inherits: 2.0.4 | 8417 | inherits: 2.0.4 |
| 8234 | readable-stream: 3.6.2 | 8418 | readable-stream: 3.6.2 |
| 8235 | 8419 | ||
| 8420 | + bluebird@3.4.7: {} | ||
| 8421 | + | ||
| 8236 | bluebird@3.7.2: {} | 8422 | bluebird@3.7.2: {} |
| 8237 | 8423 | ||
| 8238 | boolbase@1.0.0: {} | 8424 | boolbase@1.0.0: {} |
| @@ -8668,6 +8854,8 @@ snapshots: | @@ -8668,6 +8854,8 @@ snapshots: | ||
| 8668 | 8854 | ||
| 8669 | core-js@3.42.0: {} | 8855 | core-js@3.42.0: {} |
| 8670 | 8856 | ||
| 8857 | + core-util-is@1.0.3: {} | ||
| 8858 | + | ||
| 8671 | cors@2.8.5: | 8859 | cors@2.8.5: |
| 8672 | dependencies: | 8860 | dependencies: |
| 8673 | object-assign: 4.1.1 | 8861 | object-assign: 4.1.1 |
| @@ -8930,6 +9118,8 @@ snapshots: | @@ -8930,6 +9118,8 @@ snapshots: | ||
| 8930 | 9118 | ||
| 8931 | dijkstrajs@1.0.3: {} | 9119 | dijkstrajs@1.0.3: {} |
| 8932 | 9120 | ||
| 9121 | + dingbat-to-unicode@1.0.1: {} | ||
| 9122 | + | ||
| 8933 | dingtalk-jsapi@3.1.0: | 9123 | dingtalk-jsapi@3.1.0: |
| 8934 | dependencies: | 9124 | dependencies: |
| 8935 | promise-polyfill: 7.1.2 | 9125 | promise-polyfill: 7.1.2 |
| @@ -8942,6 +9132,10 @@ snapshots: | @@ -8942,6 +9132,10 @@ snapshots: | ||
| 8942 | dependencies: | 9132 | dependencies: |
| 8943 | esutils: 2.0.3 | 9133 | esutils: 2.0.3 |
| 8944 | 9134 | ||
| 9135 | + docx-preview@0.3.5: | ||
| 9136 | + dependencies: | ||
| 9137 | + jszip: 3.10.1 | ||
| 9138 | + | ||
| 8945 | dom-align@1.12.4: {} | 9139 | dom-align@1.12.4: {} |
| 8946 | 9140 | ||
| 8947 | dom-scroll-into-view@2.0.1: {} | 9141 | dom-scroll-into-view@2.0.1: {} |
| @@ -9011,6 +9205,10 @@ snapshots: | @@ -9011,6 +9205,10 @@ snapshots: | ||
| 9011 | 9205 | ||
| 9012 | dotenv@16.5.0: {} | 9206 | dotenv@16.5.0: {} |
| 9013 | 9207 | ||
| 9208 | + duck@0.1.12: | ||
| 9209 | + dependencies: | ||
| 9210 | + underscore: 1.13.7 | ||
| 9211 | + | ||
| 9014 | dunder-proto@1.0.1: | 9212 | dunder-proto@1.0.1: |
| 9015 | dependencies: | 9213 | dependencies: |
| 9016 | call-bind-apply-helpers: 1.0.2 | 9214 | call-bind-apply-helpers: 1.0.2 |
| @@ -10008,6 +10206,8 @@ snapshots: | @@ -10008,6 +10206,8 @@ snapshots: | ||
| 10008 | 10206 | ||
| 10009 | image-size@0.5.5: {} | 10207 | image-size@0.5.5: {} |
| 10010 | 10208 | ||
| 10209 | + immediate@3.0.6: {} | ||
| 10210 | + | ||
| 10011 | import-fresh@3.3.1: | 10211 | import-fresh@3.3.1: |
| 10012 | dependencies: | 10212 | dependencies: |
| 10013 | parent-module: 1.0.1 | 10213 | parent-module: 1.0.1 |
| @@ -10708,6 +10908,13 @@ snapshots: | @@ -10708,6 +10908,13 @@ snapshots: | ||
| 10708 | 10908 | ||
| 10709 | jsonparse@1.3.1: {} | 10909 | jsonparse@1.3.1: {} |
| 10710 | 10910 | ||
| 10911 | + jszip@3.10.1: | ||
| 10912 | + dependencies: | ||
| 10913 | + lie: 3.3.0 | ||
| 10914 | + pako: 1.0.11 | ||
| 10915 | + readable-stream: 2.3.8 | ||
| 10916 | + setimmediate: 1.0.5 | ||
| 10917 | + | ||
| 10711 | katex@0.16.22: | 10918 | katex@0.16.22: |
| 10712 | dependencies: | 10919 | dependencies: |
| 10713 | commander: 8.3.0 | 10920 | commander: 8.3.0 |
| @@ -10759,6 +10966,10 @@ snapshots: | @@ -10759,6 +10966,10 @@ snapshots: | ||
| 10759 | prelude-ls: 1.2.1 | 10966 | prelude-ls: 1.2.1 |
| 10760 | type-check: 0.4.0 | 10967 | type-check: 0.4.0 |
| 10761 | 10968 | ||
| 10969 | + lie@3.3.0: | ||
| 10970 | + dependencies: | ||
| 10971 | + immediate: 3.0.6 | ||
| 10972 | + | ||
| 10762 | lilconfig@3.0.0: {} | 10973 | lilconfig@3.0.0: {} |
| 10763 | 10974 | ||
| 10764 | lines-and-columns@1.2.4: {} | 10975 | lines-and-columns@1.2.4: {} |
| @@ -10875,6 +11086,12 @@ snapshots: | @@ -10875,6 +11086,12 @@ snapshots: | ||
| 10875 | dependencies: | 11086 | dependencies: |
| 10876 | js-tokens: 4.0.0 | 11087 | js-tokens: 4.0.0 |
| 10877 | 11088 | ||
| 11089 | + lop@0.4.2: | ||
| 11090 | + dependencies: | ||
| 11091 | + duck: 0.1.12 | ||
| 11092 | + option: 0.2.4 | ||
| 11093 | + underscore: 1.13.7 | ||
| 11094 | + | ||
| 10878 | lower-case@2.0.2: | 11095 | lower-case@2.0.2: |
| 10879 | dependencies: | 11096 | dependencies: |
| 10880 | tslib: 2.8.1 | 11097 | tslib: 2.8.1 |
| @@ -10911,6 +11128,19 @@ snapshots: | @@ -10911,6 +11128,19 @@ snapshots: | ||
| 10911 | dependencies: | 11128 | dependencies: |
| 10912 | tmpl: 1.0.5 | 11129 | tmpl: 1.0.5 |
| 10913 | 11130 | ||
| 11131 | + mammoth@1.9.1: | ||
| 11132 | + dependencies: | ||
| 11133 | + '@xmldom/xmldom': 0.8.10 | ||
| 11134 | + argparse: 1.0.10 | ||
| 11135 | + base64-js: 1.5.1 | ||
| 11136 | + bluebird: 3.4.7 | ||
| 11137 | + dingbat-to-unicode: 1.0.1 | ||
| 11138 | + jszip: 3.10.1 | ||
| 11139 | + lop: 0.4.2 | ||
| 11140 | + path-is-absolute: 1.0.1 | ||
| 11141 | + underscore: 1.13.7 | ||
| 11142 | + xmlbuilder: 10.1.1 | ||
| 11143 | + | ||
| 10914 | map-cache@0.2.2: {} | 11144 | map-cache@0.2.2: {} |
| 10915 | 11145 | ||
| 10916 | map-obj@1.0.1: {} | 11146 | map-obj@1.0.1: {} |
| @@ -11273,6 +11503,8 @@ snapshots: | @@ -11273,6 +11503,8 @@ snapshots: | ||
| 11273 | 11503 | ||
| 11274 | opener@1.5.2: {} | 11504 | opener@1.5.2: {} |
| 11275 | 11505 | ||
| 11506 | + option@0.2.4: {} | ||
| 11507 | + | ||
| 11276 | optionator@0.9.4: | 11508 | optionator@0.9.4: |
| 11277 | dependencies: | 11509 | dependencies: |
| 11278 | deep-is: 0.1.4 | 11510 | deep-is: 0.1.4 |
| @@ -11332,6 +11564,8 @@ snapshots: | @@ -11332,6 +11564,8 @@ snapshots: | ||
| 11332 | 11564 | ||
| 11333 | package-manager-detector@1.3.0: {} | 11565 | package-manager-detector@1.3.0: {} |
| 11334 | 11566 | ||
| 11567 | + pako@1.0.11: {} | ||
| 11568 | + | ||
| 11335 | param-case@3.0.4: | 11569 | param-case@3.0.4: |
| 11336 | dependencies: | 11570 | dependencies: |
| 11337 | dot-case: 3.0.4 | 11571 | dot-case: 3.0.4 |
| @@ -11422,6 +11656,10 @@ snapshots: | @@ -11422,6 +11656,10 @@ snapshots: | ||
| 11422 | 11656 | ||
| 11423 | pathe@2.0.3: {} | 11657 | pathe@2.0.3: {} |
| 11424 | 11658 | ||
| 11659 | + pdfjs-dist@5.3.31: | ||
| 11660 | + optionalDependencies: | ||
| 11661 | + '@napi-rs/canvas': 0.1.71 | ||
| 11662 | + | ||
| 11425 | perfect-debounce@1.0.0: {} | 11663 | perfect-debounce@1.0.0: {} |
| 11426 | 11664 | ||
| 11427 | picocolors@1.1.1: {} | 11665 | picocolors@1.1.1: {} |
| @@ -11584,6 +11822,8 @@ snapshots: | @@ -11584,6 +11822,8 @@ snapshots: | ||
| 11584 | 11822 | ||
| 11585 | print-js@1.6.0: {} | 11823 | print-js@1.6.0: {} |
| 11586 | 11824 | ||
| 11825 | + process-nextick-args@2.0.1: {} | ||
| 11826 | + | ||
| 11587 | promise-polyfill@7.1.2: {} | 11827 | promise-polyfill@7.1.2: {} |
| 11588 | 11828 | ||
| 11589 | prompts@2.4.2: | 11829 | prompts@2.4.2: |
| @@ -11661,6 +11901,16 @@ snapshots: | @@ -11661,6 +11901,16 @@ snapshots: | ||
| 11661 | parse-json: 7.1.1 | 11901 | parse-json: 7.1.1 |
| 11662 | type-fest: 4.41.0 | 11902 | type-fest: 4.41.0 |
| 11663 | 11903 | ||
| 11904 | + readable-stream@2.3.8: | ||
| 11905 | + dependencies: | ||
| 11906 | + core-util-is: 1.0.3 | ||
| 11907 | + inherits: 2.0.4 | ||
| 11908 | + isarray: 1.0.0 | ||
| 11909 | + process-nextick-args: 2.0.1 | ||
| 11910 | + safe-buffer: 5.1.2 | ||
| 11911 | + string_decoder: 1.1.1 | ||
| 11912 | + util-deprecate: 1.0.2 | ||
| 11913 | + | ||
| 11664 | readable-stream@3.6.2: | 11914 | readable-stream@3.6.2: |
| 11665 | dependencies: | 11915 | dependencies: |
| 11666 | inherits: 2.0.4 | 11916 | inherits: 2.0.4 |
| @@ -11908,6 +12158,8 @@ snapshots: | @@ -11908,6 +12158,8 @@ snapshots: | ||
| 11908 | is-plain-object: 2.0.4 | 12158 | is-plain-object: 2.0.4 |
| 11909 | split-string: 3.1.0 | 12159 | split-string: 3.1.0 |
| 11910 | 12160 | ||
| 12161 | + setimmediate@1.0.5: {} | ||
| 12162 | + | ||
| 11911 | shallow-equal@1.2.1: {} | 12163 | shallow-equal@1.2.1: {} |
| 11912 | 12164 | ||
| 11913 | shebang-command@1.2.0: | 12165 | shebang-command@1.2.0: |
| @@ -12137,6 +12389,10 @@ snapshots: | @@ -12137,6 +12389,10 @@ snapshots: | ||
| 12137 | define-properties: 1.2.1 | 12389 | define-properties: 1.2.1 |
| 12138 | es-object-atoms: 1.1.1 | 12390 | es-object-atoms: 1.1.1 |
| 12139 | 12391 | ||
| 12392 | + string_decoder@1.1.1: | ||
| 12393 | + dependencies: | ||
| 12394 | + safe-buffer: 5.1.2 | ||
| 12395 | + | ||
| 12140 | string_decoder@1.3.0: | 12396 | string_decoder@1.3.0: |
| 12141 | dependencies: | 12397 | dependencies: |
| 12142 | safe-buffer: 5.2.1 | 12398 | safe-buffer: 5.2.1 |
| @@ -12548,6 +12804,8 @@ snapshots: | @@ -12548,6 +12804,8 @@ snapshots: | ||
| 12548 | defu: 6.1.4 | 12804 | defu: 6.1.4 |
| 12549 | jiti: 1.21.7 | 12805 | jiti: 1.21.7 |
| 12550 | 12806 | ||
| 12807 | + underscore@1.13.7: {} | ||
| 12808 | + | ||
| 12551 | undici-types@6.19.8: {} | 12809 | undici-types@6.19.8: {} |
| 12552 | 12810 | ||
| 12553 | undici@6.21.3: {} | 12811 | undici@6.21.3: {} |
| @@ -12983,6 +13241,8 @@ snapshots: | @@ -12983,6 +13241,8 @@ snapshots: | ||
| 12983 | 13241 | ||
| 12984 | xml-name-validator@4.0.0: {} | 13242 | xml-name-validator@4.0.0: {} |
| 12985 | 13243 | ||
| 13244 | + xmlbuilder@10.1.1: {} | ||
| 13245 | + | ||
| 12986 | xss@1.0.15: | 13246 | xss@1.0.15: |
| 12987 | dependencies: | 13247 | dependencies: |
| 12988 | commander: 2.20.3 | 13248 | commander: 2.20.3 |
| @@ -14,3 +14,5 @@ export const getLoginfo = (params) => defHttp.get({ url: Api.loginfo, params }, | @@ -14,3 +14,5 @@ export const getLoginfo = (params) => defHttp.get({ url: Api.loginfo, params }, | ||
| 14 | * @param params | 14 | * @param params |
| 15 | */ | 15 | */ |
| 16 | export const getVisitInfo = (params) => defHttp.get({ url: Api.visitInfo, params }, { isTransformResponse: false }); | 16 | export const getVisitInfo = (params) => defHttp.get({ url: Api.visitInfo, params }, { isTransformResponse: false }); |
| 17 | + | ||
| 18 | +export const getStatistics = () => defHttp.get({ url: '/airaglog/airagLog/getStatistics' }); |
| @@ -16,7 +16,12 @@ | @@ -16,7 +16,12 @@ | ||
| 16 | <a-tab-pane loading="true" tab="受理监管" key="1"> | 16 | <a-tab-pane loading="true" tab="受理监管" key="1"> |
| 17 | <a-row> | 17 | <a-row> |
| 18 | <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24"> | 18 | <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24"> |
| 19 | - <Bar :chartData="barData" :option="{ title: { text: '', textStyle: { fontWeight: 'lighter' } } }" height="40vh" :seriesColor="seriesColor" /> | 19 | + <Bar |
| 20 | + :chartData="barData" | ||
| 21 | + :option="{ title: { text: '', textStyle: { fontWeight: 'lighter' } } }" | ||
| 22 | + height="40vh" | ||
| 23 | + :seriesColor="seriesColor" | ||
| 24 | + /> | ||
| 20 | </a-col> | 25 | </a-col> |
| 21 | <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> | 26 | <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> |
| 22 | <QuickNav :loading="loading" class="enter-y" :bordered="false" :body-style="{ padding: 0 }" /> | 27 | <QuickNav :loading="loading" class="enter-y" :bordered="false" :body-style="{ padding: 0 }" /> |
| @@ -41,8 +46,8 @@ | @@ -41,8 +46,8 @@ | ||
| 41 | <a-tab-pane tab="存储监管" key="3"> | 46 | <a-tab-pane tab="存储监管" key="3"> |
| 42 | <a-row> | 47 | <a-row> |
| 43 | <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24" style="display: flex"> | 48 | <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24" style="display: flex"> |
| 44 | - <Gauge :seriesColor="seriesColor" :chartData="{ name: 'C盘', value: 70 }" height="30vh"></Gauge> | ||
| 45 | - <Gauge :seriesColor="seriesColor" :chartData="{ name: 'D盘', value: 50 }" height="30vh"></Gauge> | 49 | + <Gauge :seriesColor="seriesColor" :chartData="{ name: 'C盘', value: 70 }" height="30vh" /> |
| 50 | + <Gauge :seriesColor="seriesColor" :chartData="{ name: 'D盘', value: 50 }" height="30vh" /> | ||
| 46 | </a-col> | 51 | </a-col> |
| 47 | <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> | 52 | <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> |
| 48 | <QuickNav :loading="loading" class="enter-y" :bordered="false" :body-style="{ padding: 0 }" /> | 53 | <QuickNav :loading="loading" class="enter-y" :bordered="false" :body-style="{ padding: 0 }" /> |
| @@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
| 4 | <ChartCard | 4 | <ChartCard |
| 5 | :loading="loading" | 5 | :loading="loading" |
| 6 | :title="item.title" | 6 | :title="item.title" |
| 7 | - :total="getTotal(item.total, index)" | 7 | + :total="item.total" |
| 8 | class="md:w-1/4 w-full !md:mt-0 !mt-4" | 8 | class="md:w-1/4 w-full !md:mt-0 !mt-4" |
| 9 | :class="[index + 1 < 4 && '!md:mr-4']" | 9 | :class="[index + 1 < 4 && '!md:mr-4']" |
| 10 | > | 10 | > |
| @@ -14,31 +14,38 @@ | @@ -14,31 +14,38 @@ | ||
| 14 | </a-tooltip> | 14 | </a-tooltip> |
| 15 | </template> | 15 | </template> |
| 16 | <div v-if="type === 'chart'"> | 16 | <div v-if="type === 'chart'"> |
| 17 | - <Trend term="周同比" :percentage="12" v-if="index === 0" /> | ||
| 18 | - <Trend term="日同比" :percentage="11" v-if="index === 0" :type="false" /> | ||
| 19 | - | ||
| 20 | - <SingleLine v-if="index === 1" :option="option" :chartData="chartData" :seriesColor="seriesColor" height="50px"></SingleLine> | 17 | + <!-- <Trend term="周同比" :percentage="12" v-if="index === 0" />--> |
| 18 | + <!-- <Trend term="日同比" :percentage="11" v-if="index === 0" :type="false" />--> | ||
| 19 | + <div v-if="index === 0" class="p-2 px-4 flex justify-between"> | ||
| 20 | + <span>平均问答次数</span> | ||
| 21 | + <span>{{ formatNumber(statistics.averageCount) }}</span> | ||
| 22 | + </div> | ||
| 23 | + <SingleLine v-if="index === 1" :option="option" :chartData="chartData" :seriesColor="seriesColor" height="50px" /> | ||
| 21 | 24 | ||
| 22 | - <Bar v-if="index === 2" :option="option" :chartData="chartData" :seriesColor="seriesColor" height="50px"></Bar> | 25 | + <Bar v-if="index === 2" :option="option" :chartData="chartData" :seriesColor="seriesColor" height="50px" /> |
| 23 | 26 | ||
| 24 | - <Progress v-if="index === 3" :percent="78" :show-info="false"></Progress> | 27 | + <Trend |
| 28 | + v-if="index === 3" | ||
| 29 | + :term="statistics.growthRate >= 0 ? '日增长' : '日下降'" | ||
| 30 | + :percentage="Math.abs(statistics.growthRate)" | ||
| 31 | + :type="statistics.growthRate >= 0" | ||
| 32 | + /> | ||
| 25 | </div> | 33 | </div> |
| 26 | <div v-else> | 34 | <div v-else> |
| 27 | - <SingleLine :seriesColor="seriesColor" v-if="index === 0" :option="option" :chartData="chartData" height="50px"></SingleLine> | ||
| 28 | - | ||
| 29 | - <SingleLine :seriesColor="seriesColor" v-if="index === 1" :option="option" :chartData="chartData" height="50px"></SingleLine> | 35 | + <SingleLine :seriesColor="seriesColor" v-if="index === 0" :option="option" :chartData="chartData" height="50px" /> |
| 30 | 36 | ||
| 31 | - <Bar :seriesColor="seriesColor" v-if="index === 2" :option="option" :chartData="chartData" height="50px"></Bar> | 37 | + <SingleLine :seriesColor="seriesColor" v-if="index === 1" :option="option" :chartData="chartData" height="50px" /> |
| 32 | 38 | ||
| 33 | - <Progress v-if="index === 3" :percent="78" :show-info="false"></Progress> | 39 | + <Bar :seriesColor="seriesColor" v-if="index === 2" :option="option" :chartData="chartData" height="50px" /> |
| 34 | 40 | ||
| 41 | + <Progress v-if="index === 3" :percent="78" :show-info="false" /> | ||
| 35 | </div> | 42 | </div> |
| 36 | <template #footer v-if="type === 'chart'"> | 43 | <template #footer v-if="type === 'chart'"> |
| 37 | <span v-if="index !== 3" | 44 | <span v-if="index !== 3" |
| 38 | >{{ item.footer }}<span>{{ item.value }}</span></span | 45 | >{{ item.footer }}<span>{{ item.value }}</span></span |
| 39 | > | 46 | > |
| 40 | - <Trend term="周同比" :percentage="12" v-if="index === 3" /> | ||
| 41 | - <Trend term="日同比" :percentage="11" v-if="index === 3" :type="false" /> | 47 | + <!-- <Trend term="周同比" :percentage="12" v-if="index === 3" />--> |
| 48 | + <!-- <Trend term="日同比" :percentage="11" v-if="index === 3" :type="false" />--> | ||
| 42 | </template> | 49 | </template> |
| 43 | <template #footer v-else> | 50 | <template #footer v-else> |
| 44 | <span | 51 | <span |
| @@ -50,18 +57,28 @@ | @@ -50,18 +57,28 @@ | ||
| 50 | </div> | 57 | </div> |
| 51 | </template> | 58 | </template> |
| 52 | <script lang="ts" setup> | 59 | <script lang="ts" setup> |
| 53 | - import { ref, computed } from 'vue'; | 60 | + import { ref, computed, watch, toRaw } from 'vue'; |
| 54 | import { Icon } from '/@/components/Icon'; | 61 | import { Icon } from '/@/components/Icon'; |
| 55 | import { Progress } from 'ant-design-vue'; | 62 | import { Progress } from 'ant-design-vue'; |
| 56 | import ChartCard from '/@/components/chart/ChartCard.vue'; | 63 | import ChartCard from '/@/components/chart/ChartCard.vue'; |
| 57 | import Trend from '/@/components/chart/Trend.vue'; | 64 | import Trend from '/@/components/chart/Trend.vue'; |
| 58 | import Bar from '/@/components/chart/Bar.vue'; | 65 | import Bar from '/@/components/chart/Bar.vue'; |
| 59 | import SingleLine from '/@/components/chart/SingleLine.vue'; | 66 | import SingleLine from '/@/components/chart/SingleLine.vue'; |
| 60 | - import { chartCardList, bdcCardList } from '../data'; | 67 | + import { bdcCardList } from '../data'; |
| 61 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; | 68 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; |
| 62 | 69 | ||
| 63 | const { getThemeColor } = useRootSetting(); | 70 | const { getThemeColor } = useRootSetting(); |
| 64 | const props = defineProps({ | 71 | const props = defineProps({ |
| 72 | + statistics: { | ||
| 73 | + type: Object, | ||
| 74 | + default: () => ({ | ||
| 75 | + todayCount: 0, | ||
| 76 | + rejectedCount: 0, | ||
| 77 | + totalCount: 0, | ||
| 78 | + averageCount: 0, | ||
| 79 | + monthlyData: [], | ||
| 80 | + }), | ||
| 81 | + }, | ||
| 65 | loading: { | 82 | loading: { |
| 66 | type: Boolean, | 83 | type: Boolean, |
| 67 | }, | 84 | }, |
| @@ -100,10 +117,75 @@ | @@ -100,10 +117,75 @@ | ||
| 100 | ]); | 117 | ]); |
| 101 | const seriesColor = computed(() => { | 118 | const seriesColor = computed(() => { |
| 102 | return getThemeColor.value; | 119 | return getThemeColor.value; |
| 103 | - }) | ||
| 104 | - const dataList = computed(() => (props.type === 'dbc' ? bdcCardList : chartCardList)); | 120 | + }); |
| 121 | + console.log('ChartGroupCard 组件渲染,接收到的 statistics:', toRaw(props.statistics)); | ||
| 122 | + // 动态生成数据 | ||
| 123 | + // 修复计算属性:使用props.statistics直接访问 | ||
| 124 | + const dataList = computed(() => { | ||
| 125 | + if (props.type === 'dbc') { | ||
| 126 | + return bdcCardList; | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + // 使用解构确保响应式依赖 | ||
| 130 | + const { todayCount, rejectedCount, totalCount, growthRate } = props.statistics; | ||
| 131 | + | ||
| 132 | + return [ | ||
| 133 | + { | ||
| 134 | + title: '累计问答次数', | ||
| 135 | + icon: 'visit-count|svg', | ||
| 136 | + total: totalCount || 0, | ||
| 137 | + }, | ||
| 138 | + { | ||
| 139 | + title: '今日问答次数', | ||
| 140 | + icon: 'total-sales|svg', | ||
| 141 | + total: todayCount || 0, | ||
| 142 | + color: 'blue', | ||
| 143 | + }, | ||
| 144 | + { | ||
| 145 | + title: '拒绝回答次数', | ||
| 146 | + icon: 'download-count|svg', | ||
| 147 | + total: rejectedCount || 0, | ||
| 148 | + color: 'orange', | ||
| 149 | + }, | ||
| 150 | + { | ||
| 151 | + title: '对比前一日增长同比', | ||
| 152 | + icon: 'transaction|svg', | ||
| 153 | + total: formatGrowthRate(growthRate), | ||
| 154 | + }, | ||
| 155 | + ]; | ||
| 156 | + }); | ||
| 157 | + // 添加数字格式化函数 | ||
| 158 | + const formatNumber = (value: number) => { | ||
| 159 | + if (isNaN(value)) return '0'; | ||
| 160 | + return value.toFixed(2); | ||
| 161 | + }; | ||
| 105 | 162 | ||
| 106 | - function getTotal(total, index) { | ||
| 107 | - return index === 0 ? `¥${total}` : index === 3 ? `${total}%` : total; | 163 | + // 格式化增长率显示 |
| 164 | + function formatGrowthRate(rate: number): string { | ||
| 165 | + if (rate > 0) { | ||
| 166 | + return `+${rate.toFixed(2)}%`; | ||
| 167 | + } else if (rate < 0) { | ||
| 168 | + return `${rate.toFixed(2)}%`; | ||
| 108 | } | 169 | } |
| 170 | + return '0.00%'; | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | + // 监测 props.statistics 的变化 | ||
| 174 | + watch( | ||
| 175 | + () => props.statistics, | ||
| 176 | + (newStatistics) => { | ||
| 177 | + console.log('statistics 更新:', newStatistics); | ||
| 178 | + // 这里可以添加其他处理逻辑,如果有必要的话 | ||
| 179 | + }, | ||
| 180 | + { deep: true } | ||
| 181 | + ); | ||
| 182 | + | ||
| 183 | + // 使用 toRaw 确保打印真实值 | ||
| 184 | + watch( | ||
| 185 | + () => props.statistics, | ||
| 186 | + (newVal) => { | ||
| 187 | + console.log('子组件接收到新的 statistics:', toRaw(newVal)); | ||
| 188 | + }, | ||
| 189 | + { deep: true, immediate: true } | ||
| 190 | + ); | ||
| 109 | </script> | 191 | </script> |
| @@ -13,61 +13,64 @@ | @@ -13,61 +13,64 @@ | ||
| 13 | <a-range-picker :style="{ width: '256px' }" /> | 13 | <a-range-picker :style="{ width: '256px' }" /> |
| 14 | </div> | 14 | </div> |
| 15 | </template> | 15 | </template> |
| 16 | - <a-tab-pane loading="true" tab="销售额" key="1"> | 16 | + <a-tab-pane loading="true" tab="每月问答次数" key="1"> |
| 17 | <a-row> | 17 | <a-row> |
| 18 | <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24"> | 18 | <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24"> |
| 19 | - <Bar :chartData="barData" :option="{ title: { text: '', textStyle: { fontWeight: 'lighter' } } }" height="40vh" :seriesColor="seriesColor" /> | 19 | + <Bar |
| 20 | + :chartData="barData" | ||
| 21 | + :option="{ title: { text: '', textStyle: { fontWeight: 'lighter' } } }" | ||
| 22 | + height="40vh" | ||
| 23 | + :seriesColor="seriesColor" | ||
| 24 | + /> | ||
| 20 | </a-col> | 25 | </a-col> |
| 21 | <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> | 26 | <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> |
| 22 | - <RankList title="门店销售排行榜" :list="rankList" /> | ||
| 23 | - </a-col> | ||
| 24 | - </a-row> | ||
| 25 | - </a-tab-pane> | ||
| 26 | - <a-tab-pane tab="销售趋势" key="2"> | ||
| 27 | - <a-row> | ||
| 28 | - <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24"> | ||
| 29 | - <Bar :chartData="barData.reverse()" :option="{ title: { text: '', textStyle: { fontWeight: 'lighter' } } }" height="40vh" :seriesColor="seriesColor" /> | ||
| 30 | - </a-col> | ||
| 31 | - <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24"> | ||
| 32 | - <RankList title="门店销售排行榜" :list="rankList" /> | 27 | + <RankList title="按钮统计榜" :list="buttonStats" /> |
| 33 | </a-col> | 28 | </a-col> |
| 34 | </a-row> | 29 | </a-row> |
| 35 | </a-tab-pane> | 30 | </a-tab-pane> |
| 31 | + <!-- <a-tab-pane tab="销售趋势" key="2">--> | ||
| 32 | + <!-- <a-row>--> | ||
| 33 | + <!-- <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">--> | ||
| 34 | + <!-- <Bar--> | ||
| 35 | + <!-- :chartData="barData.reverse()"--> | ||
| 36 | + <!-- :option="{ title: { text: '', textStyle: { fontWeight: 'lighter' } } }"--> | ||
| 37 | + <!-- height="40vh"--> | ||
| 38 | + <!-- :seriesColor="seriesColor"--> | ||
| 39 | + <!-- />--> | ||
| 40 | + <!-- </a-col>--> | ||
| 41 | + <!-- <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">--> | ||
| 42 | + <!-- <RankList title="门店销售排行榜" :list="rankList" />--> | ||
| 43 | + <!-- </a-col>--> | ||
| 44 | + <!-- </a-row>--> | ||
| 45 | + <!-- </a-tab-pane>--> | ||
| 36 | </a-tabs> | 46 | </a-tabs> |
| 37 | </div> | 47 | </div> |
| 38 | </a-card> | 48 | </a-card> |
| 39 | </template> | 49 | </template> |
| 40 | <script lang="ts" setup> | 50 | <script lang="ts" setup> |
| 41 | - import { ref, computed } from 'vue'; | 51 | + import { computed } from 'vue'; |
| 42 | import Bar from '/@/components/chart/Bar.vue'; | 52 | import Bar from '/@/components/chart/Bar.vue'; |
| 43 | import RankList from '/@/components/chart/RankList.vue'; | 53 | import RankList from '/@/components/chart/RankList.vue'; |
| 44 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; | 54 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; |
| 45 | 55 | ||
| 46 | - | ||
| 47 | defineProps({ | 56 | defineProps({ |
| 48 | loading: { | 57 | loading: { |
| 49 | type: Boolean, | 58 | type: Boolean, |
| 50 | }, | 59 | }, |
| 60 | + barData: { | ||
| 61 | + type: Array as () => Array<{ name: string; value: number }>, // 直接定义类型 | ||
| 62 | + default: () => [], | ||
| 63 | + }, | ||
| 64 | + buttonStats: { | ||
| 65 | + // 添加按钮统计属性 | ||
| 66 | + type: Array as () => Array<{ question: string; total: number }>, | ||
| 67 | + default: () => [], | ||
| 68 | + }, | ||
| 51 | }); | 69 | }); |
| 52 | const { getThemeColor } = useRootSetting(); | 70 | const { getThemeColor } = useRootSetting(); |
| 53 | - const rankList = []; | ||
| 54 | - for (let i = 0; i < 7; i++) { | ||
| 55 | - rankList.push({ | ||
| 56 | - name: '白鹭岛 ' + (i + 1) + ' 号店', | ||
| 57 | - total: 1234.56 - i * 100, | ||
| 58 | - }); | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - const barData = []; | ||
| 62 | - for (let i = 0; i < 12; i += 1) { | ||
| 63 | - barData.push({ | ||
| 64 | - name: `${i + 1}月`, | ||
| 65 | - value: Math.floor(Math.random() * 1000) + 200, | ||
| 66 | - }); | ||
| 67 | - } | ||
| 68 | const seriesColor = computed(() => { | 71 | const seriesColor = computed(() => { |
| 69 | - return getThemeColor.value | ||
| 70 | - }) | 72 | + return getThemeColor.value; |
| 73 | + }); | ||
| 71 | </script> | 74 | </script> |
| 72 | 75 | ||
| 73 | <style lang="less" scoped> | 76 | <style lang="less" scoped> |
| @@ -43,32 +43,26 @@ export const growCardList: GrowCardItem[] = [ | @@ -43,32 +43,26 @@ export const growCardList: GrowCardItem[] = [ | ||
| 43 | }, | 43 | }, |
| 44 | ]; | 44 | ]; |
| 45 | 45 | ||
| 46 | -export const chartCardList: GrowCardItem[] = [ | 46 | +export const getChartCardList = (statistics) => [ |
| 47 | { | 47 | { |
| 48 | - title: '总销售额', | 48 | + title: '累计问答次数', |
| 49 | icon: 'visit-count|svg', | 49 | icon: 'visit-count|svg', |
| 50 | - total: 126560, | ||
| 51 | - value: 234.56, | ||
| 52 | - footer: '日均销售额', | 50 | + total: statistics.totalCount || 0, |
| 53 | }, | 51 | }, |
| 54 | { | 52 | { |
| 55 | - title: '订单量', | 53 | + title: '今日问答次数', |
| 56 | icon: 'total-sales|svg', | 54 | icon: 'total-sales|svg', |
| 57 | - value: 1234, | ||
| 58 | - total: 8846, | 55 | + total: statistics.todayCount || 0, |
| 59 | color: 'blue', | 56 | color: 'blue', |
| 60 | - footer: '日订单量', | ||
| 61 | }, | 57 | }, |
| 62 | { | 58 | { |
| 63 | - title: '支付笔数', | 59 | + title: '拒绝回答次数', |
| 64 | icon: 'download-count|svg', | 60 | icon: 'download-count|svg', |
| 65 | - value: 60, | ||
| 66 | - total: 6560, | 61 | + total: statistics.rejectedCount || 0, |
| 67 | color: 'orange', | 62 | color: 'orange', |
| 68 | - footer: '转化率', | ||
| 69 | }, | 63 | }, |
| 70 | { | 64 | { |
| 71 | - title: '运营活动效果', | 65 | + title: '对比前一日增长同比', |
| 72 | icon: 'transaction|svg', | 66 | icon: 'transaction|svg', |
| 73 | total: 78, | 67 | total: 78, |
| 74 | }, | 68 | }, |
| 1 | <template> | 1 | <template> |
| 2 | <div class="p-4"> | 2 | <div class="p-4"> |
| 3 | - <ChartGroupCard class="enter-y" :loading="loading" type="chart" /> | ||
| 4 | - <SaleTabCard class="!my-4 enter-y" :loading="loading" /> | 3 | + <ChartGroupCard class="enter-y" :loading="loading" type="chart" :statistics="statistics" /> |
| 4 | + <SaleTabCard class="!my-4 enter-y" :loading="loading" :barData="barData" :buttonStats="buttonStats" /> | ||
| 5 | <a-row> | 5 | <a-row> |
| 6 | <a-col :span="24"> | 6 | <a-col :span="24"> |
| 7 | <a-card :loading="loading" :bordered="false" title="最近一周访问量统计"> | 7 | <a-card :loading="loading" :bordered="false" title="最近一周访问量统计"> |
| 8 | <div class="infoArea"> | 8 | <div class="infoArea"> |
| 9 | - <HeadInfo title="今日IP" :iconColor="ipColor" :content="loginfo.todayIp" icon="environment"></HeadInfo> | ||
| 10 | - <HeadInfo title="今日访问" :iconColor="visitColor" :content="loginfo.todayVisitCount" icon="team"></HeadInfo> | ||
| 11 | - <HeadInfo title="总访问量" :iconColor="seriesColor" :content="loginfo.totalVisitCount" icon="rise"></HeadInfo> | 9 | + <HeadInfo title="今日IP" :iconColor="ipColor" :content="loginfo.todayIp" icon="environment" /> |
| 10 | + <HeadInfo title="今日访问" :iconColor="visitColor" :content="loginfo.todayVisitCount" icon="team" /> | ||
| 11 | + <HeadInfo title="总访问量" :iconColor="seriesColor" :content="loginfo.totalVisitCount" icon="rise" /> | ||
| 12 | </div> | 12 | </div> |
| 13 | - <LineMulti :chartData="lineMultiData" height="33vh" type="line" :option="{ legend: { top: 'bottom' } }"></LineMulti> | 13 | + <!-- <LineMulti :chartData="lineMultiData" height="33vh" type="line" :option="{ legend: { top: 'bottom' } }" />--> |
| 14 | </a-card> | 14 | </a-card> |
| 15 | </a-col> | 15 | </a-col> |
| 16 | </a-row> | 16 | </a-row> |
| 17 | </div> | 17 | </div> |
| 18 | </template> | 18 | </template> |
| 19 | <script lang="ts" setup> | 19 | <script lang="ts" setup> |
| 20 | - import { ref, watch } from 'vue'; | 20 | + import { computed, onMounted, onUnmounted, ref, watch } from 'vue'; |
| 21 | import ChartGroupCard from '../components/ChartGroupCard.vue'; | 21 | import ChartGroupCard from '../components/ChartGroupCard.vue'; |
| 22 | import SaleTabCard from '../components/SaleTabCard.vue'; | 22 | import SaleTabCard from '../components/SaleTabCard.vue'; |
| 23 | - import LineMulti from '/@/components/chart/LineMulti.vue'; | ||
| 24 | import HeadInfo from '/@/components/chart/HeadInfo.vue'; | 23 | import HeadInfo from '/@/components/chart/HeadInfo.vue'; |
| 25 | - import { getLoginfo, getVisitInfo } from '../api.ts'; | 24 | + import { getLoginfo, getStatistics, getVisitInfo } from '../api'; |
| 26 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; | 25 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; |
| 27 | 26 | ||
| 28 | const loading = ref(true); | 27 | const loading = ref(true); |
| 29 | const { getThemeColor } = useRootSetting(); | 28 | const { getThemeColor } = useRootSetting(); |
| 30 | 29 | ||
| 30 | + // 使用实时数据对象 | ||
| 31 | + const statistics = ref({ | ||
| 32 | + todayCount: 0, | ||
| 33 | + yesterdayCount: 0, | ||
| 34 | + growthRate: 0, | ||
| 35 | + rejectedCount: 0, | ||
| 36 | + totalCount: 0, | ||
| 37 | + averageCount: 0, | ||
| 38 | + buttonStats: [] as { question: string; count: number }[], | ||
| 39 | + monthlyData: [] as { month: string; count: number }[], | ||
| 40 | + }); | ||
| 41 | + | ||
| 42 | + // 实时数据获取函数 | ||
| 43 | + async function fetchStatistics() { | ||
| 44 | + try { | ||
| 45 | + const res = await getStatistics(); | ||
| 46 | + console.log('接收到的统计数据:', res); // 添加日志输出 | ||
| 47 | + console.log('res是否有success属性:', 'success' in res); | ||
| 48 | + // 直接使用响应数据,不检查 success 属性 | ||
| 49 | + statistics.value = { | ||
| 50 | + todayCount: res.todayCount || res.data?.todayCount || 0, | ||
| 51 | + yesterdayCount: res.yesterdayCount || 0, | ||
| 52 | + growthRate: res.growthRate || 0, | ||
| 53 | + rejectedCount: res.rejectedCount || res.data?.rejectedCount || 0, | ||
| 54 | + totalCount: res.totalCount || res.data?.totalCount || 0, | ||
| 55 | + averageCount: res.averageCount || 0, | ||
| 56 | + buttonStats: res.buttonStats || [], | ||
| 57 | + monthlyData: res.monthlyData || res.data?.monthlyData || generateMonthlyData(), | ||
| 58 | + }; | ||
| 59 | + | ||
| 60 | + console.log('更新后的 statistics:', statistics.value); | ||
| 61 | + } catch (e) { | ||
| 62 | + console.error('获取统计数据失败', e); | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + // 生成模拟月度数据(当后端未提供时) | ||
| 67 | + function generateMonthlyData() { | ||
| 68 | + return Array.from({ length: 12 }, (_, i) => ({ | ||
| 69 | + name: `${i + 1}月`, | ||
| 70 | + value: Math.floor(Math.random() * 1000) + 200, | ||
| 71 | + })); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + // 转换按钮统计数据格式 | ||
| 75 | + const buttonStats = computed(() => { | ||
| 76 | + return statistics.value.buttonStats.map((item) => ({ | ||
| 77 | + name: item.question, | ||
| 78 | + total: item.count, | ||
| 79 | + })); | ||
| 80 | + }); | ||
| 81 | + // 在 setup 中添加转换函数 | ||
| 82 | + const barData = computed(() => { | ||
| 83 | + if (!statistics.value.monthlyData) return []; | ||
| 84 | + | ||
| 85 | + return statistics.value.monthlyData.map((item) => { | ||
| 86 | + // 提取月份数字 (格式如 "2025-05" -> 5) | ||
| 87 | + const monthNum = parseInt(item.month.split('-')[1]); | ||
| 88 | + return { | ||
| 89 | + name: `${monthNum}月`, | ||
| 90 | + value: item.count, | ||
| 91 | + }; | ||
| 92 | + }); | ||
| 93 | + }); | ||
| 94 | + // 设置实时更新 | ||
| 95 | + let refreshTimer: number | null = null; | ||
| 96 | + | ||
| 97 | + onMounted(() => { | ||
| 98 | + fetchStatistics(); | ||
| 99 | + | ||
| 100 | + // 每5秒更新一次数据(根据需求调整间隔) | ||
| 101 | + refreshTimer = setInterval(fetchStatistics, 5000) as unknown as number; | ||
| 102 | + }); | ||
| 103 | + | ||
| 104 | + onUnmounted(() => { | ||
| 105 | + if (refreshTimer) clearInterval(refreshTimer); | ||
| 106 | + }); | ||
| 107 | + | ||
| 31 | setTimeout(() => { | 108 | setTimeout(() => { |
| 32 | loading.value = false; | 109 | loading.value = false; |
| 33 | }, 500); | 110 | }, 500); |
| 34 | 111 | ||
| 35 | const loginfo = ref({}); | 112 | const loginfo = ref({}); |
| 36 | const lineMultiData = ref([]); | 113 | const lineMultiData = ref([]); |
| 37 | - | ||
| 38 | function initLogInfo() { | 114 | function initLogInfo() { |
| 39 | getLoginfo(null).then((res) => { | 115 | getLoginfo(null).then((res) => { |
| 40 | if (res.success) { | 116 | if (res.success) { |
| 1 | <template> | 1 | <template> |
| 2 | - <IndexChart v-if="indexStyle === 0"></IndexChart> | ||
| 3 | - <IndexDef v-if="indexStyle === 1"></IndexDef> | ||
| 4 | - <IndexBdc v-if="indexStyle == 2"></IndexBdc> | ||
| 5 | - <IndexTask v-if="indexStyle == 3"></IndexTask> | 2 | + <IndexChart v-if="indexStyle === 0" /> |
| 3 | + <IndexDef v-if="indexStyle === 1" /> | ||
| 4 | + <IndexBdc v-if="indexStyle == 2" /> | ||
| 5 | + <IndexTask v-if="indexStyle == 3" /> | ||
| 6 | <div style="width: 100%; text-align: right; margin-top: 20px"> | 6 | <div style="width: 100%; text-align: right; margin-top: 20px"> |
| 7 | 首页主题: | 7 | 首页主题: |
| 8 | <a-radio-group v-model:value="indexStyle"> | 8 | <a-radio-group v-model:value="indexStyle"> |
| 1 | <template> | 1 | <template> |
| 2 | <div class="wrap"> | 2 | <div class="wrap"> |
| 3 | <div class="content"> | 3 | <div class="content"> |
| 4 | - <AiChat></AiChat> | 4 | + <AiChat /> |
| 5 | </div> | 5 | </div> |
| 6 | </div> | 6 | </div> |
| 7 | </template> | 7 | </template> |
| 8 | 8 | ||
| 9 | <script setup> | 9 | <script setup> |
| 10 | import AiChat from '/@/views/super/airag/aiapp/chat/AiChat.vue'; | 10 | import AiChat from '/@/views/super/airag/aiapp/chat/AiChat.vue'; |
| 11 | - | ||
| 12 | </script> | 11 | </script> |
| 13 | 12 | ||
| 14 | <style lang="less" scoped> | 13 | <style lang="less" scoped> |
| @@ -35,6 +35,11 @@ export const columns: BasicColumn[] = [ | @@ -35,6 +35,11 @@ export const columns: BasicColumn[] = [ | ||
| 35 | align: 'center', | 35 | align: 'center', |
| 36 | dataIndex: 'buttonValues', | 36 | dataIndex: 'buttonValues', |
| 37 | }, | 37 | }, |
| 38 | + { | ||
| 39 | + title: '按钮code', | ||
| 40 | + align: 'center', | ||
| 41 | + dataIndex: 'code', | ||
| 42 | + }, | ||
| 38 | ]; | 43 | ]; |
| 39 | // 定义开关状态映射 | 44 | // 定义开关状态映射 |
| 40 | const switchLoading = reactive<Record<string, boolean>>({}); | 45 | const switchLoading = reactive<Record<string, boolean>>({}); |
| @@ -93,6 +98,12 @@ export const formSchema: FormSchema[] = [ | @@ -93,6 +98,12 @@ export const formSchema: FormSchema[] = [ | ||
| 93 | componentProps: {}, | 98 | componentProps: {}, |
| 94 | }, | 99 | }, |
| 95 | { | 100 | { |
| 101 | + label: '按钮code', | ||
| 102 | + field: 'code', | ||
| 103 | + component: 'Input', | ||
| 104 | + required: true, | ||
| 105 | + }, | ||
| 106 | + { | ||
| 96 | label: '发送内容', | 107 | label: '发送内容', |
| 97 | field: 'buttonValues', | 108 | field: 'buttonValues', |
| 98 | component: 'InputTextArea', // 替换为文本域组件 | 109 | component: 'InputTextArea', // 替换为文本域组件 |
| @@ -9,6 +9,7 @@ enum Api { | @@ -9,6 +9,7 @@ enum Api { | ||
| 9 | listKnowledgeName = '/airaglog/airagLog/listKnowledgeName', | 9 | listKnowledgeName = '/airaglog/airagLog/listKnowledgeName', |
| 10 | save = '/airaglog/airagLog/add', | 10 | save = '/airaglog/airagLog/add', |
| 11 | saveToQuestionLibrary = '/airaglog/airagLog/saveToQuestionLibrary', | 11 | saveToQuestionLibrary = '/airaglog/airagLog/saveToQuestionLibrary', |
| 12 | + saveToEmbeddingLibrary = '/airaglog/airagLog/saveToEmbeddingLibrary', | ||
| 12 | edit = '/airaglog/airagLog/edit', | 13 | edit = '/airaglog/airagLog/edit', |
| 13 | deleteOne = '/airaglog/airagLog/delete', | 14 | deleteOne = '/airaglog/airagLog/delete', |
| 14 | deleteBatch = '/airaglog/airagLog/deleteBatch', | 15 | deleteBatch = '/airaglog/airagLog/deleteBatch', |
| @@ -40,6 +41,14 @@ export const saveToQuestionLibrary = (params) => | @@ -40,6 +41,14 @@ export const saveToQuestionLibrary = (params) => | ||
| 40 | 'Content-Type': 'application/json', | 41 | 'Content-Type': 'application/json', |
| 41 | }, | 42 | }, |
| 42 | }); | 43 | }); |
| 44 | +export const saveToEmbeddingLibrary = (params) => | ||
| 45 | + defHttp.post({ | ||
| 46 | + url: Api.saveToEmbeddingLibrary, | ||
| 47 | + params, | ||
| 48 | + headers: { | ||
| 49 | + 'Content-Type': 'application/json', | ||
| 50 | + }, | ||
| 51 | + }); | ||
| 43 | /** | 52 | /** |
| 44 | * 删除单个 | 53 | * 删除单个 |
| 45 | */ | 54 | */ |
| @@ -51,6 +51,19 @@ export const columns: BasicColumn[] = [ | @@ -51,6 +51,19 @@ export const columns: BasicColumn[] = [ | ||
| 51 | }, | 51 | }, |
| 52 | }, | 52 | }, |
| 53 | { | 53 | { |
| 54 | + title: '提问方式', | ||
| 55 | + align: 'center', | ||
| 56 | + dataIndex: 'codeType', | ||
| 57 | + customRender: ({ text }) => { | ||
| 58 | + return text === 1 ? '输入框提问' : '快捷按钮提问'; | ||
| 59 | + }, | ||
| 60 | + }, | ||
| 61 | + { | ||
| 62 | + title: '按钮code', | ||
| 63 | + align: 'center', | ||
| 64 | + dataIndex: 'code', | ||
| 65 | + }, | ||
| 66 | + { | ||
| 54 | title: '是否存入问题库', | 67 | title: '是否存入问题库', |
| 55 | align: 'center', | 68 | align: 'center', |
| 56 | dataIndex: 'isStorage', | 69 | dataIndex: 'isStorage', |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <!--引用表格--> | 3 | <!--引用表格--> |
| 4 | - <BasicTable @register="registerTable" :rowSelection="rowSelection" @change="handleTableChange"> | 4 | + <BasicTable @register="registerTable" :rowSelection="rowSelection"> |
| 5 | <!--插槽:table标题--> | 5 | <!--插槽:table标题--> |
| 6 | <template #tableTitle> | 6 | <template #tableTitle> |
| 7 | <a-button type="primary" v-auth="'airaglog:airag_log:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button> | 7 | <a-button type="primary" v-auth="'airaglog:airag_log:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button> |
| @@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
| 40 | 40 | ||
| 41 | <script lang="ts" name="airaglog-airagLog" setup> | 41 | <script lang="ts" name="airaglog-airagLog" setup> |
| 42 | import { ref, reactive } from 'vue'; | 42 | import { ref, reactive } from 'vue'; |
| 43 | - import { BasicTable, TableAction } from '/@/components/Table'; | 43 | + import { BasicTable, TableAction, type ActionItem } from '/@/components/Table'; |
| 44 | import { useModal } from '/@/components/Modal'; | 44 | import { useModal } from '/@/components/Modal'; |
| 45 | import { useListPage } from '/@/hooks/system/useListPage'; | 45 | import { useListPage } from '/@/hooks/system/useListPage'; |
| 46 | import AiragLogModal from './components/AiragLogModal.vue'; | 46 | import AiragLogModal from './components/AiragLogModal.vue'; |
| @@ -87,7 +87,7 @@ | @@ -87,7 +87,7 @@ | ||
| 87 | ], | 87 | ], |
| 88 | }, | 88 | }, |
| 89 | actionColumn: { | 89 | actionColumn: { |
| 90 | - width: 120, | 90 | + width: 200, |
| 91 | fixed: 'right', | 91 | fixed: 'right', |
| 92 | }, | 92 | }, |
| 93 | beforeFetch: (params) => { | 93 | beforeFetch: (params) => { |
| @@ -174,20 +174,22 @@ | @@ -174,20 +174,22 @@ | ||
| 174 | * 操作栏 | 174 | * 操作栏 |
| 175 | */ | 175 | */ |
| 176 | function getTableAction(record) { | 176 | function getTableAction(record) { |
| 177 | - if (record.isStorage == 0) | ||
| 178 | - return [ | ||
| 179 | - { | 177 | + const actions: ActionItem[] = []; |
| 178 | + if (record.isStorage == 0) { | ||
| 179 | + actions.push({ | ||
| 180 | label: '存入问题库', | 180 | label: '存入问题库', |
| 181 | onClick: () => handleSaveToQuestionLibrary(record), | 181 | onClick: () => handleSaveToQuestionLibrary(record), |
| 182 | auth: 'airaglog:airag_log:saveToQuestionLibrary', | 182 | auth: 'airaglog:airag_log:saveToQuestionLibrary', |
| 183 | - }, | ||
| 184 | - ]; | ||
| 185 | - else | ||
| 186 | - return [ | ||
| 187 | - { | ||
| 188 | - label: '', | ||
| 189 | - }, | ||
| 190 | - ]; | 183 | + }); |
| 184 | + } | ||
| 185 | + if (record.ifSaveKnowledge == 0) { | ||
| 186 | + actions.push({ | ||
| 187 | + label: '存入知识库', | ||
| 188 | + onClick: () => handleSaveToEmbeddingLibrary(record), | ||
| 189 | + auth: 'airaglog:airag_log:saveToEmbeddingLibrary', | ||
| 190 | + }); | ||
| 191 | + } | ||
| 192 | + return actions; | ||
| 191 | } | 193 | } |
| 192 | /** | 194 | /** |
| 193 | * 存入问题库事件 | 195 | * 存入问题库事件 |
| @@ -198,8 +200,10 @@ | @@ -198,8 +200,10 @@ | ||
| 198 | isUpdate: true, | 200 | isUpdate: true, |
| 199 | showFooter: true, | 201 | showFooter: true, |
| 200 | showSaveButton: true, | 202 | showSaveButton: true, |
| 203 | + operationType: 'question', // 指定操作类型 | ||
| 201 | onConfirm: async (record) => { | 204 | onConfirm: async (record) => { |
| 202 | try { | 205 | try { |
| 206 | + console.log('执行知识库保存操作...'); | ||
| 203 | await defHttp.post({ url: '/airaglog/airagLog/saveToQuestionLibrary', params: record }); | 207 | await defHttp.post({ url: '/airaglog/airagLog/saveToQuestionLibrary', params: record }); |
| 204 | // 刷新列表 | 208 | // 刷新列表 |
| 205 | reload(); | 209 | reload(); |
| @@ -210,24 +214,27 @@ | @@ -210,24 +214,27 @@ | ||
| 210 | }); | 214 | }); |
| 211 | } | 215 | } |
| 212 | /** | 216 | /** |
| 213 | - * 下拉操作栏 | 217 | + * 存入问题库事件 |
| 214 | */ | 218 | */ |
| 215 | - function getDropDownAction(record) { | ||
| 216 | - return [ | ||
| 217 | - { | ||
| 218 | - label: '详情', | ||
| 219 | - onClick: handleDetail.bind(null, record), | ||
| 220 | - }, | ||
| 221 | - { | ||
| 222 | - label: '删除', | ||
| 223 | - popConfirm: { | ||
| 224 | - title: '是否确认删除', | ||
| 225 | - confirm: handleDelete.bind(null, record), | ||
| 226 | - placement: 'topLeft', | ||
| 227 | - }, | ||
| 228 | - auth: 'airaglog:airag_log:delete', | 219 | + async function handleSaveToEmbeddingLibrary(record) { |
| 220 | + console.log('点击存入知识库按钮,记录ID:', record.id); | ||
| 221 | + openModal(true, { | ||
| 222 | + record, | ||
| 223 | + isUpdate: true, | ||
| 224 | + showFooter: true, | ||
| 225 | + showSaveButton: true, | ||
| 226 | + operationType: 'knowledge', // 指定操作类型 | ||
| 227 | + onConfirm: async (record) => { | ||
| 228 | + console.log("执行知识库确认回调"); | ||
| 229 | + try { | ||
| 230 | + await defHttp.post({ url: '/airaglog/airagLog/saveToEmbeddingLibrary', params: record }); | ||
| 231 | + // 刷新列表 | ||
| 232 | + reload(); | ||
| 233 | + } catch (error) { | ||
| 234 | + console.error('存入知识库失败', error); | ||
| 235 | + } | ||
| 229 | }, | 236 | }, |
| 230 | - ]; | 237 | + }); |
| 231 | } | 238 | } |
| 232 | </script> | 239 | </script> |
| 233 | 240 |
| @@ -4,8 +4,13 @@ | @@ -4,8 +4,13 @@ | ||
| 4 | <template #footer> | 4 | <template #footer> |
| 5 | <a-button @click="closeModal">取消</a-button> | 5 | <a-button @click="closeModal">取消</a-button> |
| 6 | <!-- 根据 showSaveButton 决定显示哪个按钮 --> | 6 | <!-- 根据 showSaveButton 决定显示哪个按钮 --> |
| 7 | - <template v-if="showSaveButton"> | ||
| 8 | - <a-button @click="handleSubmit" type="primary">存入</a-button> | 7 | + <!-- 根据操作类型显示不同按钮 --> |
| 8 | + <template v-if="operationType === 'question'"> | ||
| 9 | + <a-button @click="handleSubmit" type="primary">存入问题库</a-button> | ||
| 10 | + </template> | ||
| 11 | + | ||
| 12 | + <template v-else-if="operationType === 'knowledge'"> | ||
| 13 | + <a-button @click="handleSubmit" type="primary">存入知识库</a-button> | ||
| 9 | </template> | 14 | </template> |
| 10 | <template v-else> | 15 | <template v-else> |
| 11 | <a-button @click="handleSubmit">确认</a-button> | 16 | <a-button @click="handleSubmit">确认</a-button> |
| @@ -20,17 +25,14 @@ | @@ -20,17 +25,14 @@ | ||
| 20 | import { BasicForm, useForm } from '/@/components/Form/index'; | 25 | import { BasicForm, useForm } from '/@/components/Form/index'; |
| 21 | import { formSchema } from '../AiragLog.data'; | 26 | import { formSchema } from '../AiragLog.data'; |
| 22 | import { saveOrUpdate } from '../AiragLog.api'; | 27 | import { saveOrUpdate } from '../AiragLog.api'; |
| 28 | + // 添加操作类型标识 | ||
| 29 | + const operationType = ref<string>(''); | ||
| 23 | // Emits声明 | 30 | // Emits声明 |
| 24 | const emit = defineEmits(['register', 'success']); | 31 | const emit = defineEmits(['register', 'success']); |
| 25 | const isUpdate = ref(true); | 32 | const isUpdate = ref(true); |
| 26 | const isDetail = ref(false); | 33 | const isDetail = ref(false); |
| 27 | const showSaveButton = ref(true); | 34 | const showSaveButton = ref(true); |
| 28 | - const props = defineProps({ | ||
| 29 | - onConfirm: { | ||
| 30 | - type: Function, | ||
| 31 | - default: null, | ||
| 32 | - }, | ||
| 33 | - }); | 35 | + let customOnConfirm = ref<Function | null>(null); |
| 34 | //表单配置 | 36 | //表单配置 |
| 35 | const [registerForm, { setProps, resetFields, setFieldsValue, validate, scrollToField }] = useForm({ | 37 | const [registerForm, { setProps, resetFields, setFieldsValue, validate, scrollToField }] = useForm({ |
| 36 | labelWidth: 150, | 38 | labelWidth: 150, |
| @@ -40,9 +42,13 @@ | @@ -40,9 +42,13 @@ | ||
| 40 | }); | 42 | }); |
| 41 | //表单赋值 | 43 | //表单赋值 |
| 42 | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { | 44 | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
| 45 | + console.log("模态框打开,操作类型:", data?.operationType); | ||
| 43 | //重置表单 | 46 | //重置表单 |
| 44 | await resetFields(); | 47 | await resetFields(); |
| 45 | setModalProps({ confirmLoading: false, showCancelBtn: !!data?.showFooter, showOkBtn: !!data?.showFooter }); | 48 | setModalProps({ confirmLoading: false, showCancelBtn: !!data?.showFooter, showOkBtn: !!data?.showFooter }); |
| 49 | + // 设置操作类型 | ||
| 50 | + operationType.value = data?.operationType || ''; | ||
| 51 | + customOnConfirm.value = data?.onConfirm || null; | ||
| 46 | isUpdate.value = !!data?.isUpdate; | 52 | isUpdate.value = !!data?.isUpdate; |
| 47 | isDetail.value = !!data?.showFooter; | 53 | isDetail.value = !!data?.showFooter; |
| 48 | if (unref(isUpdate)) { | 54 | if (unref(isUpdate)) { |
| @@ -54,17 +60,26 @@ | @@ -54,17 +60,26 @@ | ||
| 54 | // 隐藏底部时禁用整个表单 | 60 | // 隐藏底部时禁用整个表单 |
| 55 | setProps({ disabled: !data?.showFooter }); | 61 | setProps({ disabled: !data?.showFooter }); |
| 56 | }); | 62 | }); |
| 57 | - //设置标题 | ||
| 58 | - const title = computed(() => (!unref(isUpdate) ? '新增' : !unref(isDetail) ? '详情' : '编辑')); | 63 | + // 根据操作类型设置标题 |
| 64 | + const title = computed(() => { | ||
| 65 | + if (operationType.value === 'question') return '存入问题库'; | ||
| 66 | + if (operationType.value === 'knowledge') return '存入知识库'; | ||
| 67 | + return !unref(isUpdate) ? '新增' : !unref(isDetail) ? '详情' : '编辑'; | ||
| 68 | + }); | ||
| 59 | //表单提交事件 | 69 | //表单提交事件 |
| 60 | async function handleSubmit(v) { | 70 | async function handleSubmit(v) { |
| 71 | + console.log('表单提交,操作类型:', operationType.value); | ||
| 61 | try { | 72 | try { |
| 62 | let values = await validate(); | 73 | let values = await validate(); |
| 63 | setModalProps({ confirmLoading: true }); | 74 | setModalProps({ confirmLoading: true }); |
| 64 | - if (props.onConfirm) { | ||
| 65 | - await props.onConfirm(values); | 75 | + console.log('当前操作类型:', operationType.value); |
| 76 | + // 如果有传入的onConfirm函数,则执行它 | ||
| 77 | + if (typeof customOnConfirm.value === 'function') { | ||
| 78 | + console.log('执行自定义确认函数'); | ||
| 79 | + await customOnConfirm.value(values); | ||
| 66 | } else { | 80 | } else { |
| 67 | - //提交表单 | 81 | + // 否则执行默认的保存 |
| 82 | + console.log('执行默认保存'); | ||
| 68 | await saveOrUpdate(values, isUpdate.value); | 83 | await saveOrUpdate(values, isUpdate.value); |
| 69 | } | 84 | } |
| 70 | //关闭弹窗 | 85 | //关闭弹窗 |
| 1 | import { defHttp } from '/@/utils/http/axios'; | 1 | import { defHttp } from '/@/utils/http/axios'; |
| 2 | import { useMessage } from '/@/hooks/web/useMessage'; | 2 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 3 | -import { useUserStore } from '/@/store/modules/user'; // 引入用户store获取token | ||
| 4 | 3 | ||
| 5 | const { createMessage } = useMessage(); | 4 | const { createMessage } = useMessage(); |
| 6 | 5 |
| @@ -13,37 +13,37 @@ export const columns: BasicColumn[] = [ | @@ -13,37 +13,37 @@ export const columns: BasicColumn[] = [ | ||
| 13 | title: '文本内容', | 13 | title: '文本内容', |
| 14 | align: 'center', | 14 | align: 'center', |
| 15 | dataIndex: 'text', | 15 | dataIndex: 'text', |
| 16 | - width: 300 | 16 | + width: 300, |
| 17 | }, | 17 | }, |
| 18 | { | 18 | { |
| 19 | title: '文件名称', | 19 | title: '文件名称', |
| 20 | align: 'center', | 20 | align: 'center', |
| 21 | dataIndex: 'docName', | 21 | dataIndex: 'docName', |
| 22 | - width: 150 | 22 | + width: 150, |
| 23 | }, | 23 | }, |
| 24 | { | 24 | { |
| 25 | title: '知识ID', | 25 | title: '知识ID', |
| 26 | align: 'center', | 26 | align: 'center', |
| 27 | dataIndex: 'knowledgeId', | 27 | dataIndex: 'knowledgeId', |
| 28 | - width: 150 | 28 | + width: 150, |
| 29 | }, | 29 | }, |
| 30 | { | 30 | { |
| 31 | title: '文档ID', | 31 | title: '文档ID', |
| 32 | align: 'center', | 32 | align: 'center', |
| 33 | dataIndex: 'docId', | 33 | dataIndex: 'docId', |
| 34 | - width: 150 | 34 | + width: 150, |
| 35 | }, | 35 | }, |
| 36 | { | 36 | { |
| 37 | title: '索引', | 37 | title: '索引', |
| 38 | align: 'center', | 38 | align: 'center', |
| 39 | dataIndex: 'index', | 39 | dataIndex: 'index', |
| 40 | - width: 80 | 40 | + width: 80, |
| 41 | }, | 41 | }, |
| 42 | { | 42 | { |
| 43 | title: '相似度', | 43 | title: '相似度', |
| 44 | align: 'center', | 44 | align: 'center', |
| 45 | dataIndex: 'similarity', | 45 | dataIndex: 'similarity', |
| 46 | - width: 100 | 46 | + width: 100, |
| 47 | }, | 47 | }, |
| 48 | ]; | 48 | ]; |
| 49 | 49 |
| @@ -50,7 +50,7 @@ | @@ -50,7 +50,7 @@ | ||
| 50 | </div> | 50 | </div> |
| 51 | <div class="preview-content"> | 51 | <div class="preview-content"> |
| 52 | <div v-if="previewType === 'txt' || previewType === 'md'" class="text-preview"> | 52 | <div v-if="previewType === 'txt' || previewType === 'md'" class="text-preview"> |
| 53 | - <pre style="white-space: pre-wrap;">{{ previewContent }}</pre> | 53 | + <pre>{{ previewContent }}</pre> |
| 54 | </div> | 54 | </div> |
| 55 | <div v-else-if="previewType === 'pdf'" class="pdf-preview" ref="pdfPreview"></div> | 55 | <div v-else-if="previewType === 'pdf'" class="pdf-preview" ref="pdfPreview"></div> |
| 56 | <div v-else-if="previewType === 'docx'" class="docx-preview" ref="docxPreview"></div> | 56 | <div v-else-if="previewType === 'docx'" class="docx-preview" ref="docxPreview"></div> |
-
请 注册 或 登录 后发表评论