ts-bigscreen-vue/node_modules/.cache/babel-loader/5c23d4a16bd2e239f7e1400d94e...

1 line
8.9 KiB
JSON

{"remainingRequest":"D:\\guoan\\ts-bigscreen-vue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\babel-loader\\lib\\index.js!D:\\guoan\\ts-bigscreen-vue\\node_modules\\@vue\\vue-loader-v15\\lib\\index.js??vue-loader-options!D:\\guoan\\ts-bigscreen-vue\\src\\components\\StudentOverview.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\guoan\\ts-bigscreen-vue\\src\\components\\StudentOverview.vue","mtime":1741253000993},{"path":"D:\\guoan\\ts-bigscreen-vue\\babel.config.js","mtime":1740967860001},{"path":"D:\\guoan\\ts-bigscreen-vue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1740984332670},{"path":"D:\\guoan\\ts-bigscreen-vue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\babel-loader\\lib\\index.js","mtime":1740984332280},{"path":"D:\\guoan\\ts-bigscreen-vue\\node_modules\\@vue\\vue-loader-v15\\lib\\index.js","mtime":1740984469533}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgQ29tbW9uSGVhZGVyIGZyb20gIi4vQ29tbW9uSGVhZGVyLnZ1ZSI7Ci8vIGltcG9ydCBUaHJlZU1hcCBmcm9tICIuL1RocmVlTWFwLnZ1ZSI7CmltcG9ydCB7IHN0dWRlbnREYXRhIH0gZnJvbSAiLi4vZGF0YS9kYXNoYm9hcmREYXRhIjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJTdHVkZW50T3ZlcnZpZXciLAogIGNvbXBvbmVudHM6IHsKICAgIENvbW1vbkhlYWRlcjogQ29tbW9uSGVhZGVyLAogICAgVGhyZWVNYXA6IFRocmVlTWFwCiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgbG9jYWxTdHVkZW50RGF0YTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzdHVkZW50RGF0YSkpCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIHRvdGFsU3R1ZGVudHM6IGZ1bmN0aW9uIHRvdGFsU3R1ZGVudHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmxvY2FsU3R1ZGVudERhdGEudG90YWxTdHVkZW50czsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIGhhbmRsZU1vcmVDbGljazogZnVuY3Rpb24gaGFuZGxlTW9yZUNsaWNrKCkgewogICAgICB0aGlzLiRyb3V0ZXIucHVzaCgiL3N0dWRlbnQvZGV0YWlsIik7CiAgICB9LAogICAgaGFuZGxlRGF0YUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlRGF0YUNoYW5nZShuZXdEYXRhKSB7CiAgICAgIHRoaXMubG9jYWxTdHVkZW50RGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpOwogICAgfQogIH0KfTs="},{"version":3,"names":["CommonHeader","studentData","name","components","ThreeMap","data","localStudentData","JSON","parse","stringify","computed","totalStudents","methods","handleMoreClick","$router","push","handleDataChange","newData"],"sources":["src/components/StudentOverview.vue"],"sourcesContent":["<template>\r\n <div class=\"student-overview\">\r\n <common-header\r\n :title=\"'学生概况'\"\r\n :total=\"localStudentData.totalStudents\"\r\n :unit=\"'人'\"\r\n @more-click=\"handleMoreClick\"\r\n />\r\n <div class=\"content\">\r\n <div class=\"map-container\">\r\n <three-map\r\n :marker-position=\"localStudentData.location\"\r\n :marker-label=\"localStudentData.location.name\"\r\n />\r\n <div class=\"info-overlay\">\r\n <div class=\"info-panel total-panel\">\r\n <div class=\"total-students\">\r\n <i class=\"el-icon-user-solid\"></i>\r\n <div class=\"total-details\">\r\n <div class=\"total-label\">在校学生总数</div>\r\n <div class=\"total-value\">\r\n {{ localStudentData.totalStudents }}人\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"info-panel grade-panel\">\r\n <h3>\r\n <i class=\"el-icon-reading\"></i>\r\n 年级分布\r\n </h3>\r\n <div class=\"info-grid\">\r\n <div\r\n v-for=\"item in localStudentData.gradeData\"\r\n :key=\"item.name\"\r\n class=\"info-item\"\r\n >\r\n <div class=\"info-details\">\r\n <div class=\"info-label\">{{ item.name }}</div>\r\n <div class=\"info-value\">{{ item.value }}人</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"info-panel gender-panel\">\r\n <h3>\r\n <i class=\"el-icon-user\"></i>\r\n 性别比例\r\n </h3>\r\n <div class=\"info-grid\">\r\n <div\r\n v-for=\"item in localStudentData.genderData\"\r\n :key=\"item.name\"\r\n class=\"info-item\"\r\n >\r\n <div class=\"info-details\">\r\n <div class=\"info-label\">\r\n <i\r\n :class=\"\r\n item.name === '男' ? 'el-icon-male' : 'el-icon-female'\r\n \"\r\n ></i>\r\n {{ item.name }}生\r\n </div>\r\n <div class=\"info-value\">{{ item.value }}人</div>\r\n <div class=\"info-percentage\">\r\n {{\r\n Math.round(\r\n (item.value / localStudentData.totalStudents) * 100\r\n )\r\n }}%\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport CommonHeader from \"./CommonHeader.vue\";\r\n// import ThreeMap from \"./ThreeMap.vue\";\r\nimport { studentData } from \"../data/dashboardData\";\r\n\r\nexport default {\r\n name: \"StudentOverview\",\r\n components: {\r\n CommonHeader,\r\n ThreeMap,\r\n },\r\n data() {\r\n return {\r\n localStudentData: JSON.parse(JSON.stringify(studentData)),\r\n };\r\n },\r\n computed: {\r\n totalStudents() {\r\n return this.localStudentData.totalStudents;\r\n },\r\n },\r\n methods: {\r\n handleMoreClick() {\r\n this.$router.push(\"/student/detail\");\r\n },\r\n handleDataChange(newData) {\r\n this.localStudentData = JSON.parse(JSON.stringify(newData));\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.student-overview {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n background: rgba(0, 20, 40, 0.7);\r\n border-radius: 4px;\r\n padding: 16px;\r\n}\r\n\r\n.content {\r\n flex: 1;\r\n margin-top: 16px;\r\n min-height: 400px;\r\n}\r\n\r\n.map-container {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n min-height: 400px;\r\n background: rgba(0, 30, 60, 0.5);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n}\r\n\r\n.info-overlay {\r\n position: absolute;\r\n top: 20px;\r\n right: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n max-width: 300px;\r\n pointer-events: none;\r\n}\r\n\r\n.info-panel {\r\n background: rgba(0, 0, 0, 0.7);\r\n border-radius: 8px;\r\n padding: 16px;\r\n backdrop-filter: blur(10px);\r\n}\r\n\r\n.info-panel h3 {\r\n color: #fff;\r\n font-size: 16px;\r\n margin: 0 0 16px;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n}\r\n\r\n.info-panel h3 i {\r\n font-size: 18px;\r\n color: #409eff;\r\n}\r\n\r\n.info-grid {\r\n display: grid;\r\n grid-template-columns: repeat(2, 1fr);\r\n gap: 12px;\r\n}\r\n\r\n.info-item {\r\n background: rgba(255, 255, 255, 0.1);\r\n border-radius: 6px;\r\n padding: 10px;\r\n transition: all 0.3s ease;\r\n}\r\n\r\n.info-details {\r\n text-align: center;\r\n}\r\n\r\n.info-label {\r\n color: rgba(255, 255, 255, 0.7);\r\n font-size: 14px;\r\n margin-bottom: 4px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n}\r\n\r\n.info-label i {\r\n font-size: 16px;\r\n}\r\n\r\n.el-icon-male {\r\n color: #409eff;\r\n}\r\n\r\n.el-icon-female {\r\n color: #f56c6c;\r\n}\r\n\r\n.info-value {\r\n color: #fff;\r\n font-size: 18px;\r\n font-weight: bold;\r\n margin-bottom: 2px;\r\n}\r\n\r\n.info-percentage {\r\n color: rgba(255, 255, 255, 0.5);\r\n font-size: 12px;\r\n}\r\n\r\n.total-panel {\r\n background: rgba(0, 0, 0, 0.8);\r\n}\r\n\r\n.total-students {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n}\r\n\r\n.total-students i {\r\n font-size: 32px;\r\n color: #409eff;\r\n}\r\n\r\n.total-details {\r\n flex: 1;\r\n}\r\n\r\n.total-label {\r\n color: rgba(255, 255, 255, 0.7);\r\n font-size: 14px;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.total-value {\r\n color: #fff;\r\n font-size: 24px;\r\n font-weight: bold;\r\n}\r\n</style> "],"mappings":";;;AAmFA,OAAAA,YAAA;AACA;AACA,SAAAC,WAAA;AAEA;EACAC,IAAA;EACAC,UAAA;IACAH,YAAA,EAAAA,YAAA;IACAI,QAAA,EAAAA;EACA;EACAC,IAAA,WAAAA,KAAA;IACA;MACAC,gBAAA,EAAAC,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,SAAA,CAAAR,WAAA;IACA;EACA;EACAS,QAAA;IACAC,aAAA,WAAAA,cAAA;MACA,YAAAL,gBAAA,CAAAK,aAAA;IACA;EACA;EACAC,OAAA;IACAC,eAAA,WAAAA,gBAAA;MACA,KAAAC,OAAA,CAAAC,IAAA;IACA;IACAC,gBAAA,WAAAA,iBAAAC,OAAA;MACA,KAAAX,gBAAA,GAAAC,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,SAAA,CAAAQ,OAAA;IACA;EACA;AACA","ignoreList":[]}]}