作业统计模块前端首页面第一版

pull/868/head
3291353822.@qq.com 2026-03-21 15:10:38 +08:00
parent 2cb3b5b492
commit 36d9eab00b
3 changed files with 648 additions and 249 deletions

539
package-lock.json generated
View File

@ -1,26 +1,27 @@
{
"name": "yudao-ui-admin-vue3",
"version": "2.5.0-snapshot",
"version": "2026.01-snapshot",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "yudao-ui-admin-vue3",
"version": "2.5.0-snapshot",
"version": "2026.01-snapshot",
"license": "MIT",
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"@element-plus/icons-vue": "2.3.2",
"@form-create/designer": "^3.2.6",
"@form-create/element-ui": "^3.2.11",
"@iconify/iconify": "^3.1.1",
"@microsoft/fetch-event-source": "^2.0.1",
"@videojs-player/vue": "^1.0.0",
"@vueuse/core": "^10.9.0",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.10",
"@wangeditor-next/editor": "^5.6.46",
"@wangeditor-next/editor-for-vue": "^5.1.14",
"@wangeditor-next/plugin-mention": "^1.0.16",
"@zxcvbn-ts/core": "^3.0.4",
"animate.css": "^4.1.1",
"axios": "^1.6.8",
"axios": "1.9.0",
"benz-amr-recorder": "^1.1.5",
"bpmn-js-token-simulation": "^0.36.0",
"camunda-bpmn-moddle": "^7.0.1",
@ -29,12 +30,13 @@
"dayjs": "^1.11.10",
"diagram-js": "^12.8.0",
"driver.js": "^1.3.1",
"echarts": "^5.5.0",
"echarts": "^5.6.0",
"echarts-wordcloud": "^2.1.0",
"element-plus": "2.9.1",
"element-plus": "2.11.1",
"fast-xml-parser": "^4.3.2",
"highlight.js": "^11.9.0",
"jsencrypt": "^3.3.2",
"jsoneditor": "^10.1.3",
"lodash-es": "^4.17.21",
"markdown-it": "^14.1.0",
"markmap-common": "^0.16.0",
@ -48,16 +50,17 @@
"pinia-plugin-persistedstate": "^3.2.1",
"qrcode": "^1.5.3",
"qs": "^6.12.0",
"snabbdom": "^3.6.2",
"sortablejs": "^1.15.3",
"steady-xml": "^0.1.0",
"url": "^0.11.3",
"v3-jsoneditor": "^0.0.6",
"video.js": "^7.21.5",
"vue": "3.5.12",
"vue-dompurify-html": "^4.1.4",
"vue-i18n": "9.10.2",
"vue-router": "4.4.5",
"vue-types": "^5.1.1",
"vue3-print-nb": "^0.1.4",
"vue3-signature": "^0.2.4",
"vuedraggable": "^4.1.0",
"web-storage-cache": "^1.1.1",
@ -69,6 +72,7 @@
"@iconify/json": "^2.2.187",
"@intlify/unplugin-vue-i18n": "^2.0.0",
"@purge-icons/generated": "^0.9.0",
"@types/jsoneditor": "^9.9.5",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.11.21",
"@types/nprogress": "^0.2.3",
@ -2310,9 +2314,9 @@
}
},
"node_modules/@element-plus/icons-vue": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
"integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
"version": "2.3.2",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
"integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
"license": "MIT",
"peerDependencies": {
"vue": "^3.2.0"
@ -4492,6 +4496,13 @@
"node": ">=10.13.0"
}
},
"node_modules/@types/ace": {
"version": "0.0.52",
"resolved": "https://registry.npmmirror.com/@types/ace/-/ace-0.0.52.tgz",
"integrity": "sha512-YPF9S7fzpuyrxru+sG/rrTpZkC6gpHBPF14W3x70kqVOD+ks6jkYLapk4yceh36xej7K4HYxcyz9ZDQ2lTvwgQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/conventional-commits-parser": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz",
@ -4792,6 +4803,41 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/jsoneditor": {
"version": "9.9.6",
"resolved": "https://registry.npmmirror.com/@types/jsoneditor/-/jsoneditor-9.9.6.tgz",
"integrity": "sha512-SJ29nWBIhnhtU5n72wxhPiuUVd8cnDHd7ZYMqVkzWtdRxTUdS8+oy1pg66yhmM1kcuanX3xmAAKfcyhhBnHEjQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/ace": "*",
"ajv": "^6.12.0"
}
},
"node_modules/@types/jsoneditor/node_modules/ajv": {
"version": "6.14.0",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.14.0.tgz",
"integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/@types/jsoneditor/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/lodash": {
"version": "4.17.16",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.16.tgz",
@ -6991,163 +7037,267 @@
}
}
},
"node_modules/@wangeditor/basic-modules": {
"version": "1.1.7",
"resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
"integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
"node_modules/@wangeditor-next/editor": {
"version": "5.6.53",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/editor/-/editor-5.6.53.tgz",
"integrity": "sha512-CzCT2oK//8BcTGn0+AtYJfbWHXnTIgvY8S4t/48NG/EYOZUbduz0DYgde8O6qP09tx/2t0rQTQA75whLc1of4Q==",
"license": "MIT",
"dependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor-next/basic-modules": "1.5.51",
"@wangeditor-next/code-highlight": "1.3.47",
"@wangeditor-next/core": "1.7.49",
"@wangeditor-next/list-module": "1.1.56",
"@wangeditor-next/table-module": "1.6.64",
"@wangeditor-next/upload-image-module": "1.1.54",
"@wangeditor-next/video-module": "1.3.55",
"dom7": "^4.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^5.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor-next/editor-for-vue": {
"version": "5.1.14",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/editor-for-vue/-/editor-for-vue-5.1.14.tgz",
"integrity": "sha512-Xkrdo590AhLHvzyR+U246t6T89nIWHz1weAgMuo8jEA2HS5RiUnsA4U6+iUGaQ2E5c8mYQaeNqzHQXUp9Okbiw==",
"license": "MIT",
"peerDependencies": {
"@wangeditor-next/editor": ">=5.1.0",
"vue": "^3.0.5"
}
},
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/basic-modules": {
"version": "1.5.51",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/basic-modules/-/basic-modules-1.5.51.tgz",
"integrity": "sha512-WGEAF6WviC5G9Ph2yZfHcYRlSEyE39zXCVIE69cI1s4Vh6CTnXqcdS975+CcupfnslEwtDFVz+Y38h172sKoWQ==",
"license": "MIT",
"dependencies": {
"is-url": "^1.2.4"
},
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"@wangeditor-next/core": "1.7.49",
"dom7": "^3.0.0 || ^4.0.0",
"lodash.throttle": "^4.1.1",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"nanoid": "^5.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/code-highlight": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
"integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/code-highlight": {
"version": "1.3.47",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/code-highlight/-/code-highlight-1.3.47.tgz",
"integrity": "sha512-StwonuWIVgi9n5fnoFhZCxpELxAyubaqz/0geJpI9XnrIHymRQBOk42WG6BV4N0Dy4PUwbpHRU/nLmZYr1vQcw==",
"license": "MIT",
"dependencies": {
"prismjs": "^1.23.0"
},
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"@wangeditor-next/core": "1.7.49",
"dom7": "^3.0.0 || ^4.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/core": {
"version": "1.1.19",
"resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
"integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/core": {
"version": "1.7.49",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/core/-/core-1.7.49.tgz",
"integrity": "sha512-QPjEnUmdrVDuxd+iudZ7gZIzRrj+1Xxtmrj3YxRuy/x4PzddiT8Hr78BunigiujUzBc9dMJQ5RERHxfJe502DA==",
"license": "MIT",
"dependencies": {
"@types/event-emitter": "^0.3.3",
"event-emitter": "^0.3.5",
"html-void-elements": "^2.0.0",
"i18next": "^20.4.0",
"scroll-into-view-if-needed": "^2.2.28",
"slate-history": "^0.66.0"
"html-void-elements": "^3.0.0",
"i18next": "^23.0.0",
"scroll-into-view-if-needed": "^3.0.0",
"slate-history": "^0.115.0"
},
"peerDependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"dom7": "^3.0.0",
"dom7": "^3.0.0 || ^4.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"nanoid": "^5.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/editor": {
"version": "5.1.23",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
"integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/list-module": {
"version": "1.1.56",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/list-module/-/list-module-1.1.56.tgz",
"integrity": "sha512-K+vAHPWS61fpfc7lRyA7hkZnT3mXaIkDAKiLtZ0P64ficC2hGK4oHIwkna1swKdECI7N2jw5ZfbuqzhvgnSPqw==",
"license": "MIT",
"dependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor/basic-modules": "^1.1.7",
"@wangeditor/code-highlight": "^1.0.3",
"@wangeditor/core": "^1.1.19",
"@wangeditor/list-module": "^1.0.5",
"@wangeditor/table-module": "^1.1.4",
"@wangeditor/upload-image-module": "^1.0.2",
"@wangeditor/video-module": "^1.1.4",
"dom7": "^3.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"peerDependencies": {
"@wangeditor-next/core": "1.7.49",
"dom7": "^3.0.0 || ^4.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/table-module": {
"version": "1.6.64",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/table-module/-/table-module-1.6.64.tgz",
"integrity": "sha512-dLZTVAkR/Q+yQCDG/ze0vWRS6TeCTk2zYqHwe6p+UCEULKJ8OVOFt7wtZAfxYgi7UH52mCn3UD878UByde+Q5g==",
"license": "MIT",
"peerDependencies": {
"@wangeditor-next/core": "1.7.49",
"dom7": "^3.0.0 || ^4.0.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"nanoid": "^5.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/editor-for-vue": {
"version": "5.1.12",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
"integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/editor": ">=5.1.0",
"vue": "^3.0.5"
}
},
"node_modules/@wangeditor/list-module": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
"integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/table-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
"integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/upload-image-module": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
"integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/upload-image-module": {
"version": "1.1.54",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/upload-image-module/-/upload-image-module-1.1.54.tgz",
"integrity": "sha512-s1KaV5yB/V9w8FBtW4Xf4JMBm/ZKpRj2RZhV5M8aXi+3ggPjHZBjRN2FAgcBJl4mlIbs0GoFrG2A4JdOIKMJvA==",
"license": "MIT",
"peerDependencies": {
"@uppy/core": "^2.0.3",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor/basic-modules": "1.x",
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"@wangeditor-next/basic-modules": "1.5.51",
"@wangeditor-next/core": "1.7.49",
"dom7": "^3.0.0 || ^4.0.0",
"lodash.foreach": "^4.5.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/video-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
"integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/video-module": {
"version": "1.3.55",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/video-module/-/video-module-1.3.55.tgz",
"integrity": "sha512-7NyNF1M1wU7797Viqp2rVeG+G0YLZrSVls52ASAVrxoN2sYqLGB15a2ZdJiKyGSxScyGvo/fF96ct27sGCyGAA==",
"license": "MIT",
"peerDependencies": {
"@uppy/core": "^2.1.4",
"@uppy/xhr-upload": "^2.0.7",
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"@wangeditor-next/core": "1.7.49",
"dom7": "^3.0.0 || ^4.0.0",
"nanoid": "^5.0.0",
"slate": "^0.123.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor-next/editor/node_modules/compute-scroll-into-view": {
"version": "3.1.1",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz",
"integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==",
"license": "MIT"
},
"node_modules/@wangeditor-next/editor/node_modules/dom7": {
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-4.0.6.tgz",
"integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==",
"license": "MIT",
"dependencies": {
"ssr-window": "^4.0.0"
}
},
"node_modules/@wangeditor-next/editor/node_modules/html-void-elements": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-3.0.0.tgz",
"integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/@wangeditor-next/editor/node_modules/i18next": {
"version": "23.16.8",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-23.16.8.tgz",
"integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
"funding": [
{
"type": "individual",
"url": "https://locize.com"
},
{
"type": "individual",
"url": "https://locize.com/i18next.html"
},
{
"type": "individual",
"url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
}
],
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.2"
}
},
"node_modules/@wangeditor-next/editor/node_modules/nanoid": {
"version": "5.1.7",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-5.1.7.tgz",
"integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.js"
},
"engines": {
"node": "^18 || >=20"
}
},
"node_modules/@wangeditor-next/editor/node_modules/scroll-into-view-if-needed": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
"integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^3.0.2"
}
},
"node_modules/@wangeditor-next/editor/node_modules/slate": {
"version": "0.123.0",
"resolved": "https://registry.npmmirror.com/slate/-/slate-0.123.0.tgz",
"integrity": "sha512-Oon3HR/QzJQBjuOUJT1jGGlp8Ff7t3Bkr/rJ2lDqxNT4H+cBnXpEVQ/si6hn1ZCHhD2xY/2N91PQoH/rD7kxTg==",
"license": "MIT"
},
"node_modules/@wangeditor-next/editor/node_modules/slate-history": {
"version": "0.115.0",
"resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.115.0.tgz",
"integrity": "sha512-QdUm9aVyQFz6JG4a84Z6Um+tJpZJmsh9bjXwTVTvYiN4rdKbqL6+/4HT94on1WYxe10Q4vY6mA6BCpoYxgF3tQ==",
"license": "MIT",
"peerDependencies": {
"slate": ">=0.114.3"
}
},
"node_modules/@wangeditor-next/editor/node_modules/ssr-window": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-4.0.2.tgz",
"integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==",
"license": "MIT"
},
"node_modules/@wangeditor-next/plugin-mention": {
"version": "1.0.23",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/plugin-mention/-/plugin-mention-1.0.23.tgz",
"integrity": "sha512-gulModG1lqhDKBJ/TM/Lyr7sX+I3I8oLcKi/qMK+4qSzfLnuFTdhoSvn8y+6NE2XU+jEwW9rpT9uDP9dMPFSBQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor-next/editor": "5.6.53",
"snabbdom": "^3.6.0"
}
},
"node_modules/@xmldom/xmldom": {
@ -8231,12 +8381,6 @@
"integrity": "sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==",
"license": "MIT"
},
"node_modules/compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"license": "MIT"
},
"node_modules/computeds": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz",
@ -9234,15 +9378,6 @@
"resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
},
"node_modules/dom7": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
"integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
"license": "MIT",
"dependencies": {
"ssr-window": "^3.0.0-alpha.1"
}
},
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
@ -9424,9 +9559,9 @@
"license": "ISC"
},
"node_modules/element-plus": {
"version": "2.9.1",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.1.tgz",
"integrity": "sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==",
"version": "2.11.1",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.11.1.tgz",
"integrity": "sha512-weYFIniyNXTAe9vJZnmZpYzurh4TDbdKhBsJwhbzuo0SDZ8PLwHVll0qycJUxc6SLtH+7A9F7dvdDh5CnqeIVA==",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
@ -11232,16 +11367,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/html-void-elements": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
"integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/htmlparser2": {
"version": "8.0.2",
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz",
@ -11271,15 +11396,6 @@
"node": ">=16.17.0"
}
},
"node_modules/i18next": {
"version": "20.6.1",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
"integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.0"
}
},
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
@ -11330,16 +11446,6 @@
"node": ">= 4"
}
},
"node_modules/immer": {
"version": "9.0.21",
"resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz",
"integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/immer"
}
},
"node_modules/immutable": {
"version": "5.1.2",
"resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.2.tgz",
@ -11866,20 +11972,19 @@
}
},
"node_modules/jsoneditor": {
"version": "9.10.5",
"resolved": "https://registry.npmmirror.com/jsoneditor/-/jsoneditor-9.10.5.tgz",
"integrity": "sha512-fVZ0NMt+zm4rqTKBv2x7zPdLeaRyKo1EjJkaR1QjK4gEM1rMwICILYSW1OPxSc1qqyAoDaA/eeNrluKoxOocCA==",
"version": "10.4.2",
"resolved": "https://registry.npmmirror.com/jsoneditor/-/jsoneditor-10.4.2.tgz",
"integrity": "sha512-SQPCXlanU4PqdVsYuj2X7yfbLiiJYjklbksGfMKPsuwLhAIPxDlG43jYfXieGXvxpuq1fkw08YoRbkKXKabcLA==",
"license": "Apache-2.0",
"dependencies": {
"ace-builds": "^1.31.1",
"ace-builds": "^1.36.2",
"ajv": "^6.12.6",
"javascript-natural-sort": "^0.7.1",
"jmespath": "^0.16.0",
"json-source-map": "^0.6.1",
"jsonrepair": "3.1.0",
"mobius1-selectr": "^2.4.13",
"jsonrepair": "^3.8.1",
"picomodal": "^3.0.0",
"vanilla-picker": "^2.12.2"
"vanilla-picker": "^2.12.3"
}
},
"node_modules/jsoneditor/node_modules/ajv": {
@ -11928,9 +12033,9 @@
"license": "MIT"
},
"node_modules/jsonrepair": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/jsonrepair/-/jsonrepair-3.1.0.tgz",
"integrity": "sha512-idqReg23J0PVRAADmZMc5xQM3xeOX5bTB6OTyMnzq33IXJXmn9iJuWIEvGmrN80rQf4d7uLTMEDwpzujNcI0Rg==",
"version": "3.13.3",
"resolved": "https://registry.npmmirror.com/jsonrepair/-/jsonrepair-3.13.3.tgz",
"integrity": "sha512-BTznj0owIt2CBAH/LTo7+1I5pMvl1e1033LRl/HUowlZmJOIhzC0zbX5bxMngLkfT4WnzPP26QnW5wMr2g9tsQ==",
"license": "ISC",
"bin": {
"jsonrepair": "bin/cli.js"
@ -12342,13 +12447,6 @@
"integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
"license": "MIT"
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
"license": "MIT"
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@ -13025,12 +13123,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/mobius1-selectr": {
"version": "2.4.13",
"resolved": "https://registry.npmmirror.com/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz",
"integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==",
"license": "MIT"
},
"node_modules/moddle": {
"version": "6.2.3",
"resolved": "https://registry.npmmirror.com/moddle/-/moddle-6.2.3.tgz",
@ -14824,15 +14916,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^1.0.20"
}
},
"node_modules/scule": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz",
@ -14994,29 +15077,6 @@
"node": ">=8"
}
},
"node_modules/slate": {
"version": "0.72.8",
"resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
"integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
"license": "MIT",
"dependencies": {
"immer": "^9.0.6",
"is-plain-object": "^5.0.0",
"tiny-warning": "^1.0.3"
}
},
"node_modules/slate-history": {
"version": "0.66.0",
"resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz",
"integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
"license": "MIT",
"dependencies": {
"is-plain-object": "^5.0.0"
},
"peerDependencies": {
"slate": ">=0.65.3"
}
},
"node_modules/slice-ansi": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz",
@ -15108,12 +15168,6 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"license": "BSD-3-Clause"
},
"node_modules/ssr-window": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
"license": "MIT"
},
"node_modules/steady-xml": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/steady-xml/-/steady-xml-0.1.0.tgz",
@ -15863,12 +15917,6 @@
"integrity": "sha512-9mwnPqXInRsBmH/DO6NMxBE++9LsqpVXQSSTZGc5bomoKKvL5OX/Hlotw7XVXP6XLRcHWIzZpxfovGqWKgCypQ==",
"license": "MIT"
},
"node_modules/tiny-warning": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"license": "MIT"
},
"node_modules/tinyexec": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-1.0.1.tgz",
@ -16489,19 +16537,6 @@
"uuid": "dist/bin/uuid"
}
},
"node_modules/v3-jsoneditor": {
"version": "0.0.6",
"resolved": "https://registry.npmmirror.com/v3-jsoneditor/-/v3-jsoneditor-0.0.6.tgz",
"integrity": "sha512-9G0sXWXUn67SBkn46ycWfwPwjuJu/lcsQaNzMtXAR2/95hMV21WfcRNsqJ+vVVrSHQehohB/9fVLwYEXz0u/KA==",
"license": "MIT",
"dependencies": {
"jsoneditor": "^9.10.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/pratik227"
}
},
"node_modules/vanilla-picker": {
"version": "2.12.3",
"resolved": "https://registry.npmmirror.com/vanilla-picker/-/vanilla-picker-2.12.3.tgz",
@ -17064,6 +17099,14 @@
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
"license": "MIT"
},
"node_modules/vue3-print-nb": {
"version": "0.1.4",
"resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
"integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
"dependencies": {
"vue": "^3.0.5"
}
},
"node_modules/vue3-signature": {
"version": "0.2.4",
"resolved": "https://registry.npmmirror.com/vue3-signature/-/vue3-signature-0.2.4.tgz",

View File

@ -46,7 +46,7 @@
"dayjs": "^1.11.10",
"diagram-js": "^12.8.0",
"driver.js": "^1.3.1",
"echarts": "^5.5.0",
"echarts": "^5.6.0",
"echarts-wordcloud": "^2.1.0",
"element-plus": "2.11.1",
"fast-xml-parser": "^4.3.2",

View File

@ -0,0 +1,356 @@
<template>
<div class="statistics-container">
<div class="header-section">
<div class="header-left">
<h2 class="main-title">教师端作业统计概览</h2>
</div>
<div class="header-center">
<el-select v-model="currentClass" class="tech-select main-selector">
<el-option label="高一(1)班" value="1" />
<el-option label="高一(2)班" value="2" />
<el-option label="高一(3)班" value="3" />
</el-select>
</div>
<div class="header-right">
<el-select v-model="currentSubject" class="tech-select subject-selector">
<el-option label="英语" value="english" />
<el-option label="数学" value="math" />
<el-option label="语文" value="chinese" />
</el-select>
</div>
</div>
<el-row :gutter="15">
<el-col :span="6" v-for="item in stats" :key="item.label">
<div class="stat-card-new">
<div class="card-icon" :style="{ backgroundColor: item.bgColor }">{{ item.icon }}</div>
<div class="card-text">
<div class="label">{{ item.label }}</div>
<div class="value" :style="{ color: item.color }">{{ item.value }}</div>
</div>
</div>
</el-col>
</el-row>
<el-row :gutter="15" class="margin-top-20">
<el-col :span="12">
<div class="data-box">
<div class="box-title">分数段分布 (柱状图)</div>
<div ref="barChartRef" class="chart-height"></div>
</div>
</el-col>
<el-col :span="12">
<div class="data-box relative">
<div class="box-title">作业提交率 (饼图)</div>
<div class="mini-pie-wrapper">
<div ref="miniPieRef" style="width: 42px; height: 42px"></div>
</div>
<div ref="pieChartRef" class="chart-height"></div>
</div>
</el-col>
</el-row>
<el-row :gutter="15" class="margin-top-20 equal-height-row">
<el-col :span="12">
<div class="data-box full-height">
<div class="box-title">各题错误率排行 (Top 5)</div>
<div class="error-rank-list">
<div v-for="(item, index) in errorRank" :key="index" class="rank-item">
<span class="rank-no">{{ index + 1 }}. {{ item.name }}</span>
<div class="progress-bg">
<div class="progress-bar" :style="{ width: item.rate + '%' }"></div>
</div>
<div class="rank-tag">{{ item.rate }}%</div>
</div>
</div>
</div>
</el-col>
<el-col :span="12">
<div class="data-box full-height">
<div class="box-title">待催促名单 (表格)</div>
<el-table :data="urgeList" class="custom-table" size="small">
<el-table-column prop="name" label="姓名" align="center" />
<el-table-column prop="reason" label="未交详情" align="center" />
<el-table-column label="操作" align="center">
<template #default>
<el-button type="primary" size="small" plain class="urge-btn">催一下</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
// --- ---
const currentClass = ref('3')
const currentSubject = ref('english')
const barChartRef = ref(null)
const pieChartRef = ref(null)
const miniPieRef = ref(null)
const stats = [
{ label: '应交数', value: '50', icon: '👥', color: '#00a2ff', bgColor: 'rgba(0,162,255,0.1)' },
{ label: '实交数', value: '42', icon: '📝', color: '#4caf50', bgColor: 'rgba(76,175,80,0.1)' },
{ label: '平均分', value: '85.5', icon: '📈', color: '#ff9800', bgColor: 'rgba(255,152,0,0.1)' },
{ label: '批改率', value: '90%', icon: '✔️', color: '#00bcd4', bgColor: 'rgba(0,188,212,0.1)' }
]
const errorRank = [
{ name: '完形填空', rate: 80 },
{ name: '语法填空', rate: 65 },
{ name: '阅读理解A', rate: 50 },
{ name: '单词拼写', rate: 35 },
{ name: '作文', rate: 20 }
]
const urgeList = [
{ name: '张三', reason: '连续2次未交' },
{ name: '李四', reason: '连续1次未交' },
{ name: '王五', reason: '共3次未交' }
]
onMounted(() => {
renderCharts()
})
const renderCharts = () => {
const bar = echarts.init(barChartRef.value)
bar.setOption({
tooltip: { trigger: 'axis', axisPointer: { type: 'none' } },
grid: { top: '15%', bottom: '15%', left: '8%', right: '5%' },
xAxis: {
data: ['<60', '60-70', '70-80', '80-90', '>90'],
axisLine: { lineStyle: { color: 'rgba(0,162,255,0.2)' } },
axisLabel: { color: '#8899aa' }
},
yAxis: {
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.05)' } },
axisLabel: { color: '#8899aa' }
},
series: [
{
type: 'bar',
data: [3, 8, 15, 20, 4],
barWidth: 20,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#00e5ff' },
{ offset: 1, color: '#0072ff' }
]),
borderRadius: [4, 4, 0, 0]
}
}
]
})
const pieData = [
{ value: 16, name: '未交' },
{ value: 84, name: '已交' }
]
const pie = echarts.init(pieChartRef.value)
pie.setOption({
series: [
{
type: 'pie',
radius: ['45%', '70%'],
data: pieData,
label: { show: true, formatter: '{b}\n{d}%', color: '#8899aa' },
itemStyle: { color: (p) => (p.name === '已交' ? '#00e5ff' : 'rgba(0, 114, 255, 0.4)') }
}
]
})
const mini = echarts.init(miniPieRef.value)
mini.setOption({
series: [
{
type: 'pie',
radius: ['70%', '100%'],
silent: true,
data: pieData,
label: { show: false },
itemStyle: { color: (p) => (p.name === '已交' ? '#00e5ff' : 'rgba(0, 114, 255, 0.4)') }
}
]
})
}
</script>
<style lang="scss" scoped>
.statistics-container {
padding: 20px;
background-color: #010d18;
min-height: 100vh;
color: #fff;
.header-section {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 25px;
.main-title {
color: #00e5ff;
font-size: 24px;
margin: 0;
}
.header-center {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
}
:deep(.tech-select) {
width: 140px;
.el-input__wrapper {
background-color: rgba(0, 162, 255, 0.05) !important;
box-shadow: 0 0 0 1px rgba(0, 162, 255, 0.4) inset !important;
border-radius: 2px;
}
.el-input__inner {
color: #00e5ff !important;
font-weight: bold;
text-align: center;
}
.el-select__caret {
color: #00e5ff !important;
}
}
.stat-card-new {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(0, 162, 255, 0.15);
padding: 15px;
display: flex;
align-items: center;
border-radius: 4px;
.card-icon {
width: 40px;
height: 40px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
font-size: 20px;
}
.label {
font-size: 13px;
color: #8899aa;
}
.value {
font-size: 22px;
font-weight: bold;
margin-top: 4px;
}
}
.data-box {
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(0, 162, 255, 0.15);
padding: 15px;
border-radius: 4px;
&.relative {
position: relative;
}
.box-title {
font-size: 15px;
margin-bottom: 15px;
border-left: 4px solid #00a2ff;
padding-left: 10px;
color: #e0e6ed;
}
}
.mini-pie-wrapper {
position: absolute;
top: 15px;
right: 15px;
padding: 4px;
border: 1px dashed rgba(0, 229, 255, 0.2);
border-radius: 50%;
}
.chart-height {
height: 210px;
}
.error-rank-list .rank-item {
display: flex;
align-items: center;
margin-bottom: 15px;
.rank-no {
width: 90px;
color: #8899aa;
font-size: 13px;
}
.progress-bg {
flex: 1;
height: 6px;
background: #1a2f45;
margin: 0 15px;
border-radius: 3px;
overflow: hidden;
.progress-bar {
height: 100%;
background: linear-gradient(to right, #0072ff, #00e5ff);
}
}
.rank-tag {
background: rgba(0, 229, 255, 0.1);
border: 1px solid rgba(0, 229, 255, 0.3);
color: #00e5ff;
padding: 1px 8px;
border-radius: 10px;
font-size: 11px;
min-width: 42px;
text-align: center;
}
}
.custom-table {
background: transparent !important;
--el-table-bg-color: transparent !important;
--el-table-tr-bg-color: transparent !important;
--el-table-header-bg-color: rgba(0, 162, 255, 0.05) !important;
--el-table-border-color: rgba(0, 162, 255, 0.1) !important;
:deep(th.el-table__cell) {
border-bottom: none !important;
color: #00e5ff;
}
:deep(td.el-table__cell) {
border-bottom: 1px solid rgba(0, 162, 255, 0.05) !important;
color: #8899aa;
}
}
.equal-height-row {
display: flex;
& > .el-col {
display: flex;
}
.full-height {
flex: 1;
display: flex;
flex-direction: column;
}
}
.margin-top-20 {
margin-top: 20px;
}
.urge-btn {
border-color: #00a2ff;
color: #00e5ff;
background: rgba(0, 162, 255, 0.1);
}
}
</style>