更新学生资料上传功能

main
Mei 2 years ago
parent bdb3952d3a
commit 48b5d08a11

@ -1,185 +1,212 @@
{
"hash": "eb2a3d91",
"browserHash": "441c0445",
"hash": "3bc124fb",
"browserHash": "aa019a94",
"optimized": {
"@element-plus/icons-vue": {
"src": "../../@element-plus/icons-vue/dist/index.js",
"file": "@element-plus_icons-vue.js",
"fileHash": "f1805e5e",
"fileHash": "b5316f7e",
"needsInterop": false
},
"axios": {
"src": "../../axios/index.js",
"file": "axios.js",
"fileHash": "29d6b64c",
"fileHash": "1028bebd",
"needsInterop": false
},
"element-plus": {
"src": "../../element-plus/es/index.mjs",
"file": "element-plus.js",
"fileHash": "290ab091",
"fileHash": "f5068395",
"needsInterop": false
},
"element-plus/dist/locale/zh-cn.mjs": {
"src": "../../element-plus/dist/locale/zh-cn.mjs",
"file": "element-plus_dist_locale_zh-cn__mjs.js",
"fileHash": "7062c28c",
"fileHash": "95ef5b3a",
"needsInterop": false
},
"vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "f941800a",
"fileHash": "1eac3c98",
"needsInterop": false
},
"vue-router": {
"src": "../../vue-router/dist/vue-router.mjs",
"file": "vue-router.js",
"fileHash": "b5b04679",
"fileHash": "c8435521",
"needsInterop": false
},
"element-plus/es": {
"src": "../../element-plus/es/index.mjs",
"file": "element-plus_es.js",
"fileHash": "7bb7442b",
"fileHash": "ea2ea794",
"needsInterop": false
},
"element-plus/es/components/base/style/index": {
"src": "../../element-plus/es/components/base/style/index.mjs",
"file": "element-plus_es_components_base_style_index.js",
"fileHash": "f4e31a3f",
"fileHash": "0244bd1a",
"needsInterop": false
},
"element-plus/es/components/menu/style/index": {
"src": "../../element-plus/es/components/menu/style/index.mjs",
"file": "element-plus_es_components_menu_style_index.js",
"fileHash": "0b4bb63b",
"fileHash": "c24526e8",
"needsInterop": false
},
"element-plus/es/components/sub-menu/style/index": {
"src": "../../element-plus/es/components/sub-menu/style/index.mjs",
"file": "element-plus_es_components_sub-menu_style_index.js",
"fileHash": "e0759fb0",
"fileHash": "b76e5b6b",
"needsInterop": false
},
"element-plus/es/components/menu-item/style/index": {
"src": "../../element-plus/es/components/menu-item/style/index.mjs",
"file": "element-plus_es_components_menu-item_style_index.js",
"fileHash": "4d5706af",
"fileHash": "d867ef4d",
"needsInterop": false
},
"element-plus/es/components/icon/style/index": {
"src": "../../element-plus/es/components/icon/style/index.mjs",
"file": "element-plus_es_components_icon_style_index.js",
"fileHash": "7042f317",
"fileHash": "99aa693c",
"needsInterop": false
},
"element-plus/es/components/message/style/index": {
"src": "../../element-plus/es/components/message/style/index.mjs",
"file": "element-plus_es_components_message_style_index.js",
"fileHash": "7fde9648",
"fileHash": "a98b5690",
"needsInterop": false
},
"element-plus/es/components/dialog/style/index": {
"src": "../../element-plus/es/components/dialog/style/index.mjs",
"file": "element-plus_es_components_dialog_style_index.js",
"fileHash": "77863f55",
"needsInterop": false
},
"element-plus/es/components/form/style/index": {
"src": "../../element-plus/es/components/form/style/index.mjs",
"file": "element-plus_es_components_form_style_index.js",
"fileHash": "e6e98a97",
"needsInterop": false
},
"element-plus/es/components/button/style/index": {
"src": "../../element-plus/es/components/button/style/index.mjs",
"file": "element-plus_es_components_button_style_index.js",
"fileHash": "c6c2fba8",
"fileHash": "0d3ef3e2",
"needsInterop": false
},
"element-plus/es/components/form-item/style/index": {
"src": "../../element-plus/es/components/form-item/style/index.mjs",
"file": "element-plus_es_components_form-item_style_index.js",
"fileHash": "a2e85298",
"needsInterop": false
},
"element-plus/es/components/input/style/index": {
"src": "../../element-plus/es/components/input/style/index.mjs",
"file": "element-plus_es_components_input_style_index.js",
"fileHash": "a04e8ad6",
"needsInterop": false
},
"element-plus/es/components/dialog/style/index": {
"src": "../../element-plus/es/components/dialog/style/index.mjs",
"file": "element-plus_es_components_dialog_style_index.js",
"fileHash": "301456a6",
"fileHash": "3d63df4d",
"needsInterop": false
},
"element-plus/es/components/pagination/style/index": {
"src": "../../element-plus/es/components/pagination/style/index.mjs",
"file": "element-plus_es_components_pagination_style_index.js",
"fileHash": "8de14411",
"fileHash": "53858407",
"needsInterop": false
},
"element-plus/es/components/table/style/index": {
"src": "../../element-plus/es/components/table/style/index.mjs",
"file": "element-plus_es_components_table_style_index.js",
"fileHash": "465a197b",
"fileHash": "56065944",
"needsInterop": false
},
"element-plus/es/components/table-column/style/index": {
"src": "../../element-plus/es/components/table-column/style/index.mjs",
"file": "element-plus_es_components_table-column_style_index.js",
"fileHash": "75267781",
"fileHash": "16c6a7b6",
"needsInterop": false
},
"element-plus/es/components/button/style/index": {
"src": "../../element-plus/es/components/button/style/index.mjs",
"file": "element-plus_es_components_button_style_index.js",
"fileHash": "91ae354d",
"needsInterop": false
},
"element-plus/es/components/input/style/index": {
"src": "../../element-plus/es/components/input/style/index.mjs",
"file": "element-plus_es_components_input_style_index.js",
"fileHash": "79cf5722",
"needsInterop": false
},
"element-plus/es/components/message-box/style/index": {
"src": "../../element-plus/es/components/message-box/style/index.mjs",
"file": "element-plus_es_components_message-box_style_index.js",
"fileHash": "37c60c34",
"fileHash": "7313f17c",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "abb41928",
"fileHash": "a5b7886f",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "1ad38421",
"fileHash": "1b30b608",
"needsInterop": false
},
"element-plus/es/components/date-picker/style/index": {
"src": "../../element-plus/es/components/date-picker/style/index.mjs",
"file": "element-plus_es_components_date-picker_style_index.js",
"fileHash": "a891b8be",
"needsInterop": false
},
"element-plus/es/components/radio-group/style/index": {
"src": "../../element-plus/es/components/radio-group/style/index.mjs",
"file": "element-plus_es_components_radio-group_style_index.js",
"fileHash": "2c79b434",
"needsInterop": false
},
"element-plus/es/components/radio/style/index": {
"src": "../../element-plus/es/components/radio/style/index.mjs",
"file": "element-plus_es_components_radio_style_index.js",
"fileHash": "f18eaf94",
"needsInterop": false
},
"element-plus/es/components/upload/style/index": {
"src": "../../element-plus/es/components/upload/style/index.mjs",
"file": "element-plus_es_components_upload_style_index.js",
"fileHash": "a3137f82",
"needsInterop": false
},
"element-plus/es/components/image/style/index": {
"src": "../../element-plus/es/components/image/style/index.mjs",
"file": "element-plus_es_components_image_style_index.js",
"fileHash": "0ee5fa25",
"needsInterop": false
}
},
"chunks": {
"chunk-UDIDLCD7": {
"file": "chunk-UDIDLCD7.js"
"chunk-SZ53O7IE": {
"file": "chunk-SZ53O7IE.js"
},
"chunk-EO35MHIE": {
"file": "chunk-EO35MHIE.js"
"chunk-TAY2YFRR": {
"file": "chunk-TAY2YFRR.js"
},
"chunk-C4535LZQ": {
"file": "chunk-C4535LZQ.js"
"chunk-SM3Q55NJ": {
"file": "chunk-SM3Q55NJ.js"
},
"chunk-WCMB3WI5": {
"file": "chunk-WCMB3WI5.js"
"chunk-3Y2DITRB": {
"file": "chunk-3Y2DITRB.js"
},
"chunk-QSF56JWN": {
"file": "chunk-QSF56JWN.js"
"chunk-7TPSE7GV": {
"file": "chunk-7TPSE7GV.js"
},
"chunk-LH2MJNYG": {
"file": "chunk-LH2MJNYG.js"
"chunk-HJOC2NDO": {
"file": "chunk-HJOC2NDO.js"
},
"chunk-GVDCVJ4M": {
"file": "chunk-GVDCVJ4M.js"
"chunk-BVX2JA5D": {
"file": "chunk-BVX2JA5D.js"
},
"chunk-5UPBAEL7": {
"file": "chunk-5UPBAEL7.js"
"chunk-BE6VVV7A": {
"file": "chunk-BE6VVV7A.js"
},
"chunk-XNUDAJWP": {
"file": "chunk-XNUDAJWP.js"
"chunk-IKK5JTLD": {
"file": "chunk-IKK5JTLD.js"
},
"chunk-W2JMGLXX": {
"file": "chunk-W2JMGLXX.js"
},
"chunk-55Z24TXN": {
"file": "chunk-55Z24TXN.js"
"chunk-3XCPDPN3": {
"file": "chunk-3XCPDPN3.js"
},
"chunk-NBJCTYZW": {
"file": "chunk-NBJCTYZW.js"
@ -187,6 +214,9 @@
"chunk-QSMKXT32": {
"file": "chunk-QSMKXT32.js"
},
"chunk-LY2LXYUV": {
"file": "chunk-LY2LXYUV.js"
},
"chunk-AA5IK4IP": {
"file": "chunk-AA5IK4IP.js"
},

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/button/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/button.scss";
//# sourceMappingURL=chunk-3C3Q4STT.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/popper/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/popper.scss";
//# sourceMappingURL=chunk-3XCPDPN3.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/overlay/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/overlay.scss";
//# sourceMappingURL=chunk-3Y2DITRB.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/base/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/base.scss";
//# sourceMappingURL=chunk-55Z24TXN.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/overlay/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/overlay.scss";
//# sourceMappingURL=chunk-5LORASOM.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/base/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/base.scss";
//# sourceMappingURL=chunk-5PUGSUH6.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/base/style/index.mjs"],
"sourcesContent": ["import 'element-plus/theme-chalk/src/base.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AAAA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/popper/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/popper.scss";
//# sourceMappingURL=chunk-5UPBAEL7.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/checkbox/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/checkbox.scss";
//# sourceMappingURL=chunk-6LQX4MK2.js.map

@ -0,0 +1,6 @@
// node_modules/element-plus/es/components/option-group/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/option-group.scss";
// node_modules/element-plus/es/components/select/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/select.scss";
//# sourceMappingURL=chunk-7TPSE7GV.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/scrollbar/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/scrollbar.scss";
//# sourceMappingURL=chunk-BCSZVOPJ.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/input/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/input.scss";
//# sourceMappingURL=chunk-BE6VVV7A.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/scrollbar/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/scrollbar.scss";
//# sourceMappingURL=chunk-BVX2JA5D.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/tooltip/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/tooltip.scss";
//# sourceMappingURL=chunk-C4535LZQ.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/button/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/button.scss";
//# sourceMappingURL=chunk-EO35MHIE.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/button/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/button.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/tag/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/tag.scss";
//# sourceMappingURL=chunk-GVDCVJ4M.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/tag/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/tag.scss";
//# sourceMappingURL=chunk-HJOC2NDO.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/option/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/option.scss";
//# sourceMappingURL=chunk-IKK5JTLD.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/tag/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/tag.scss";
//# sourceMappingURL=chunk-IU7V7WDW.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/tag/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/tag.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/tooltip/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/tooltip.scss";
//# sourceMappingURL=chunk-L7ODOQKF.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/tooltip/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/tooltip.scss';\nimport '../../popper/style/index.mjs';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/scrollbar/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/scrollbar.scss";
//# sourceMappingURL=chunk-LH2MJNYG.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/scrollbar/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/scrollbar.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/base/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/base.scss";
//# sourceMappingURL=chunk-LY2LXYUV.js.map

@ -1,6 +0,0 @@
// node_modules/element-plus/es/components/option-group/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/option-group.scss";
// node_modules/element-plus/es/components/select/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/select.scss";
//# sourceMappingURL=chunk-QSF56JWN.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/tooltip/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/tooltip.scss";
//# sourceMappingURL=chunk-SM3Q55NJ.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/checkbox/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/checkbox.scss";
//# sourceMappingURL=chunk-SZ53O7IE.js.map

@ -0,0 +1,3 @@
// node_modules/element-plus/es/components/button/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/button.scss";
//# sourceMappingURL=chunk-TAY2YFRR.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/popper/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/popper.scss";
//# sourceMappingURL=chunk-TQA4HOTF.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/popper/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/popper.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/checkbox/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/checkbox.scss";
//# sourceMappingURL=chunk-UDIDLCD7.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/checkbox/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/checkbox.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/option/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/option.scss";
//# sourceMappingURL=chunk-W2JMGLXX.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/overlay/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/overlay.scss";
//# sourceMappingURL=chunk-WCMB3WI5.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/overlay/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/overlay.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/input/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/input.scss";
//# sourceMappingURL=chunk-XNUDAJWP.js.map

@ -1,3 +0,0 @@
// node_modules/element-plus/es/components/input/style/index.mjs
import "C:/Users/MEI/Desktop/student/vue/node_modules/element-plus/theme-chalk/src/input.scss";
//# sourceMappingURL=chunk-YYI2N4ZZ.js.map

@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/input/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/input.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";AACA,OAAO;",
"names": []
}

@ -1,2 +1,2 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
//# sourceMappingURL=element-plus_es_components_base_style_index.js.map

@ -1,3 +1,3 @@
import "./chunk-EO35MHIE.js";
import "./chunk-55Z24TXN.js";
import "./chunk-TAY2YFRR.js";
import "./chunk-LY2LXYUV.js";
//# sourceMappingURL=element-plus_es_components_button_style_index.js.map

@ -0,0 +1,9 @@
import "./chunk-TAY2YFRR.js";
import "./chunk-BVX2JA5D.js";
import "./chunk-BE6VVV7A.js";
import "./chunk-3XCPDPN3.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/date-picker/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/date-picker.scss";
//# sourceMappingURL=element-plus_es_components_date-picker_style_index.js.map

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/date-picker/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/date-picker.scss';\nimport '../../input/style/index.mjs';\nimport '../../scrollbar/style/index.mjs';\nimport '../../popper/style/index.mjs';\nimport '../../button/style/index.mjs';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";;;;;;;AACA,OAAO;",
"names": []
}

@ -1,6 +1,6 @@
import "./chunk-WCMB3WI5.js";
import "./chunk-55Z24TXN.js";
import "./chunk-3Y2DITRB.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/dialog/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/dialog.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/dialog.scss";
//# sourceMappingURL=element-plus_es_components_dialog_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/form-item/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/form-item.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/form-item.scss";
//# sourceMappingURL=element-plus_es_components_form-item_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/form/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/form.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/form.scss";
//# sourceMappingURL=element-plus_es_components_form_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/icon/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/icon.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/icon.scss";
//# sourceMappingURL=element-plus_es_components_icon_style_index.js.map

@ -0,0 +1,8 @@
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/image/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/image.scss";
// node_modules/element-plus/es/components/image-viewer/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/image-viewer.scss";
//# sourceMappingURL=element-plus_es_components_image_style_index.js.map

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/image/style/index.mjs", "../../element-plus/es/components/image-viewer/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/image.scss';\nimport '../../image-viewer/style/index.mjs';\n//# sourceMappingURL=index.mjs.map\n", "import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/image-viewer.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";;;AACA,OAAO;;;ACAP,OAAO;",
"names": []
}

@ -1,3 +1,3 @@
import "./chunk-XNUDAJWP.js";
import "./chunk-55Z24TXN.js";
import "./chunk-BE6VVV7A.js";
import "./chunk-LY2LXYUV.js";
//# sourceMappingURL=element-plus_es_components_input_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/menu-item/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/menu-item.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/menu-item.scss";
//# sourceMappingURL=element-plus_es_components_menu-item_style_index.js.map

@ -1,7 +1,7 @@
import "./chunk-C4535LZQ.js";
import "./chunk-5UPBAEL7.js";
import "./chunk-55Z24TXN.js";
import "./chunk-SM3Q55NJ.js";
import "./chunk-3XCPDPN3.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/menu/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/menu.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/menu.scss";
//# sourceMappingURL=element-plus_es_components_menu_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-EO35MHIE.js";
import "./chunk-WCMB3WI5.js";
import "./chunk-XNUDAJWP.js";
import "./chunk-55Z24TXN.js";
import "./chunk-TAY2YFRR.js";
import "./chunk-3Y2DITRB.js";
import "./chunk-BE6VVV7A.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/message-box/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/message-box.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/message-box.scss";
//# sourceMappingURL=element-plus_es_components_message-box_style_index.js.map

@ -1,8 +1,8 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/badge/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/badge.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/badge.scss";
// node_modules/element-plus/es/components/message/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/message.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/message.scss";
//# sourceMappingURL=element-plus_es_components_message_style_index.js.map

@ -1,3 +1,3 @@
import "./chunk-W2JMGLXX.js";
import "./chunk-55Z24TXN.js";
import "./chunk-IKK5JTLD.js";
import "./chunk-LY2LXYUV.js";
//# sourceMappingURL=element-plus_es_components_option_style_index.js.map

@ -1,11 +1,11 @@
import "./chunk-QSF56JWN.js";
import "./chunk-LH2MJNYG.js";
import "./chunk-GVDCVJ4M.js";
import "./chunk-5UPBAEL7.js";
import "./chunk-XNUDAJWP.js";
import "./chunk-W2JMGLXX.js";
import "./chunk-55Z24TXN.js";
import "./chunk-7TPSE7GV.js";
import "./chunk-HJOC2NDO.js";
import "./chunk-BVX2JA5D.js";
import "./chunk-BE6VVV7A.js";
import "./chunk-IKK5JTLD.js";
import "./chunk-3XCPDPN3.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/pagination/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/pagination.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/pagination.scss";
//# sourceMappingURL=element-plus_es_components_pagination_style_index.js.map

@ -0,0 +1,5 @@
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/radio-group/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/radio-group.scss";
//# sourceMappingURL=element-plus_es_components_radio-group_style_index.js.map

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/radio-group/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/radio-group.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

@ -0,0 +1,5 @@
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/radio/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/radio.scss";
//# sourceMappingURL=element-plus_es_components_radio_style_index.js.map

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/radio/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/radio.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

@ -1,8 +1,8 @@
import "./chunk-QSF56JWN.js";
import "./chunk-LH2MJNYG.js";
import "./chunk-GVDCVJ4M.js";
import "./chunk-5UPBAEL7.js";
import "./chunk-XNUDAJWP.js";
import "./chunk-W2JMGLXX.js";
import "./chunk-55Z24TXN.js";
import "./chunk-7TPSE7GV.js";
import "./chunk-HJOC2NDO.js";
import "./chunk-BVX2JA5D.js";
import "./chunk-BE6VVV7A.js";
import "./chunk-IKK5JTLD.js";
import "./chunk-3XCPDPN3.js";
import "./chunk-LY2LXYUV.js";
//# sourceMappingURL=element-plus_es_components_select_style_index.js.map

@ -1,5 +1,5 @@
import "./chunk-55Z24TXN.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/sub-menu/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/sub-menu.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/sub-menu.scss";
//# sourceMappingURL=element-plus_es_components_sub-menu_style_index.js.map

@ -1,7 +1,7 @@
import "./chunk-UDIDLCD7.js";
import "./chunk-GVDCVJ4M.js";
import "./chunk-55Z24TXN.js";
import "./chunk-SZ53O7IE.js";
import "./chunk-HJOC2NDO.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/table-column/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/table-column.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/table-column.scss";
//# sourceMappingURL=element-plus_es_components_table-column_style_index.js.map

@ -1,9 +1,9 @@
import "./chunk-UDIDLCD7.js";
import "./chunk-C4535LZQ.js";
import "./chunk-LH2MJNYG.js";
import "./chunk-5UPBAEL7.js";
import "./chunk-55Z24TXN.js";
import "./chunk-SZ53O7IE.js";
import "./chunk-SM3Q55NJ.js";
import "./chunk-BVX2JA5D.js";
import "./chunk-3XCPDPN3.js";
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/table/style/index.mjs
import "C:/Users/MEI/Desktop/Demo-master/demo/vue/node_modules/element-plus/theme-chalk/src/table.scss";
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/table.scss";
//# sourceMappingURL=element-plus_es_components_table_style_index.js.map

@ -0,0 +1,8 @@
import "./chunk-LY2LXYUV.js";
// node_modules/element-plus/es/components/upload/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/upload.scss";
// node_modules/element-plus/es/components/progress/style/index.mjs
import "C:/Users/MEI/Desktop/学生成绩管理系统/student/vue/node_modules/element-plus/theme-chalk/src/progress.scss";
//# sourceMappingURL=element-plus_es_components_upload_style_index.js.map

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/upload/style/index.mjs", "../../element-plus/es/components/progress/style/index.mjs"],
"sourcesContent": ["import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/upload.scss';\nimport '../../progress/style/index.mjs';\n//# sourceMappingURL=index.mjs.map\n", "import '../../base/style/index.mjs';\nimport 'element-plus/theme-chalk/src/progress.scss';\n//# sourceMappingURL=index.mjs.map\n"],
"mappings": ";;;AACA,OAAO;;;ACAP,OAAO;",
"names": []
}

@ -10,7 +10,6 @@ import '@/assets/css/global.css'
const app = createApp(App)
app.use(router)
app.use(ElementPlus, {
locale: zhCn,

@ -8,8 +8,8 @@
</div>
</div>
<div style="width: fit-content; padding-right: 10px; display: flex; align-items: center;">
<img src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png" alt="" style="width: 40px; height: 40px">
<span style="margin-left: 5px">管理员</span>
<img :src="user.avatar || 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'" alt="" style="width: 40px; height: 40px; border-radius: 50%">
<span style="margin-left: 5px">{{ user.name }}</span>
</div>
</div>
@ -19,7 +19,7 @@
router
style="border: none"
:default-active="$route.path"
:default-openeds="['/home', '2']"
:default-openeds="['/home', '2', '3']"
>
<el-menu-item index="/home">
<el-icon><HomeFilled /></el-icon>
@ -30,12 +30,40 @@
<el-icon><Memo /></el-icon>
<span>课程管理</span>
</template>
<el-menu-item index="/course">
<el-menu-item index="/course" v-if="user.role === 'ADMIN'">
<el-icon><Document /></el-icon>
<span>课程信息</span>
</el-menu-item>
<el-menu-item index="/courseList" v-if="user.role === 'STUDENT'">
<el-icon><Document /></el-icon>
<span>学生选课</span>
</el-menu-item>
<el-menu-item index="/studentCourse">
<el-icon><Document /></el-icon>
<span>选课记录</span>
</el-menu-item>
</el-sub-menu>
<el-sub-menu index="3">
<template #title>
<el-icon><Memo /></el-icon>
<span>成绩信息</span>
</template>
<el-menu-item index="/grade">
<el-icon><Document /></el-icon>
<span>学生成绩</span>
</el-menu-item>
</el-sub-menu>
<el-sub-menu index="4" v-if="user.role === 'ADMIN'">
<template #title>
<el-icon><User /></el-icon>
<span>用户管理</span>
</template>
<el-menu-item index="/student">
<el-icon><UserFilled /></el-icon>
<span>学生信息</span>
</el-menu-item>
</el-sub-menu>
<el-menu-item index="/person">
<el-menu-item index="/person" v-if="user.role === 'STUDENT'">
<el-icon><User /></el-icon>
<span>个人资料</span>
</el-menu-item>
@ -57,7 +85,7 @@
<script setup>
import { useRoute } from 'vue-router'
const $route = useRoute()
console.log($route.path)
const user = JSON.parse(localStorage.getItem('student-user') || '{}')
const logout = () => {
localStorage.removeItem('student-user')

@ -8,10 +8,10 @@
<el-input prefix-icon="User" v-model="data.form.username" placeholder="请输入账号" />
</el-form-item>
<el-form-item prop="password">
<el-input show-password prefix-icon="Lock" v-model="data.form.password" placeholder="请输入密码" />
<el-input show-password prefix-icon="Lock" v-model="data.form.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item>
<el-button type="primary" style="width: 100%" @click="register"> </el-button>
<el-button type="primary" class="register-button" style="width: 100%" @click="register"> </el-button>
</el-form-item>
</el-form>
<div style="margin-top: 30px; text-align: right">
@ -23,15 +23,14 @@
</template>
<script setup>
import {reactive, ref} from "vue"
import { reactive, ref } from "vue";
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import { ElMessage } from "element-plus";
import router from "@/router";
const data = reactive({
form: {}
})
});
const rules = reactive({
username: [
@ -40,24 +39,24 @@ const rules = reactive({
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
],
})
});
const formRef = ref()
const formRef = ref();
const register = () => {
formRef.value.validate((valid) => {
if (valid) {
request.post('/register', data.form).then(res => {
if (res.code === '200') {
ElMessage.success('注册成功')
router.push('/login') //
ElMessage.success('注册成功');
router.push('/login'); //
} else {
ElMessage.error(res.msg)
ElMessage.error(res.msg);
}
})
});
}
})
}
});
};
</script>
<style scoped>
@ -67,13 +66,44 @@ const register = () => {
display: flex;
align-items: center;
justify-content: center;
background-image: url("@/assets/imgs/bkg.jpg");
background-image: url("@/assets/imgs/bkg.jpg"), linear-gradient(to bottom right, rgba(170, 85, 255, 0), rgba(120, 70, 255, 0));
background-size: cover;
background-blend-mode: overlay;
animation: backgroundAnimation 10s infinite alternate;
}
@keyframes backgroundAnimation {
0% { background-position: top left; }
100% { background-position: bottom right; }
}
.login-box {
background-color: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
padding: 30px;
border-radius: 5px;
transition: transform 0.3s;
}
.login-box:hover {
transform: scale(1.05);
}
.el-input, .el-select {
transition: all 0.3s;
}
.el-input:focus, .el-select:focus {
border-color: #b87eff;
box-shadow: 0 0 8px rgba(0, 0, 0, 0);
}
.register-button {
transition: background-color 0.3s, transform 0.3s;
}
.register-button:hover {
background-color: #b87eff;
transform: scale(1.05);
}
</style>
</style>

@ -1,16 +1,14 @@
<template>
<div>
<div class="login-container">
<div style="width:350px" class="login-box">
<div style="font-weight: bold; font-size: 24px; text-align: center; margin-bottom: 30px">
</div>
<div style="width: 350px" class="login-box">
<div style="font-weight: bold; font-size: 24px; text-align: center; margin-bottom: 30px"> </div>
<el-form :model="data.form" ref="formRef" :rules="rules">
<el-form-item prop="username">
<el-input prefix-icon="User" v-model="data.form.username" placeholder="请输入账号"/>
<el-input prefix-icon="User" v-model="data.form.username" placeholder="请输入账号" />
</el-form-item>
<el-form-item prop="password">
<el-input show-password prefix-icon="Lock" v-model="data.form.password" placeholder="请输入密码"/>
<el-input show-password prefix-icon="Lock" v-model="data.form.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item prop="role">
<el-select style="width: 100%" v-model="data.form.role">
@ -19,11 +17,11 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" style="width: 100%" @click="login"> </el-button>
<el-button type="primary" class="login-button" style="width: 100%" @click="login"> </el-button>
</el-form-item>
</el-form>
<div style="margin-top: 30px; text-align: right">
还没有账号<a href="/register">手机号一键注册</a>
还没有账号 <a href="/register">注册</a>
</div>
</div>
</div>
@ -31,44 +29,42 @@
</template>
<script setup>
import {reactive, ref} from "vue"
import request from "@/utils/request.js"
import {ElMessage} from "element-plus"
import { reactive, ref } from "vue";
import request from "@/utils/request";
import { ElMessage } from "element-plus";
import router from "@/router";
const data = reactive(
{
form: { role:'ADMIN'}
}
)
const data = reactive({
form: { role: 'ADMIN' }
});
const rules = reactive({
username: [
{required: true, message: '请输入账号', trigger: 'blur'},
{ required: true, message: '请输入账号', trigger: 'blur' },
],
password: [
{required: true, message: '请输入密码', trigger: 'blur'},
{ required: true, message: '请输入密码', trigger: 'blur' },
],
})
});
const formRef = ref()
const formRef = ref();
const login = () => {
formRef.value.validate((valid) => {
if (valid) {
request.post('/login', data.form).then(res => {
if (res.code === '200') {
localStorage.setItem('student-user', JSON.stringify(res.data))
ElMessage.success('登陆成功')
router.push ('/home') //
localStorage.setItem('student-user', JSON.stringify(res.data));
ElMessage.success('登录成功');
console.log(res.data);
router.push('/home'); //
} else {
ElMessage.error(res.msg)
ElMessage.error(res.msg);
}
})
});
}
})
}
});
};
</script>
<style scoped>
@ -78,15 +74,44 @@ const login = () => {
display: flex;
align-items: center;
justify-content: center;
background-image: url("@/assets/imgs/backg.jpg");
background-image: url("@/assets/imgs/backg.jpg"), linear-gradient(to bottom right, rgba(170, 85, 255, 0), rgba(120, 70, 255, 0));
background-size: cover;
background-blend-mode: overlay;
animation: backgroundAnimation 10s infinite alternate;
}
@keyframes backgroundAnimation {
0% { background-position: top left; }
100% { background-position: bottom right; }
}
.login-box {
background-color: rgba(255, 255, 255, .5);
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border: 1px solid antiquewhite;
background-color: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
padding: 30px;
border-radius: 5px;
transition: transform 0.3s;
}
.login-box:hover {
transform: scale(1.05);
}
.el-input, .el-select {
transition: all 0.3s;
}
.el-input:focus, .el-select:focus {
border-color: #b87eff;
box-shadow: 0 0 8px rgba(184, 126, 255, 0.5);
}
.login-button {
transition: background-color 0.3s, transform 0.3s;
}
.login-button:hover {
background-color: #b87eff;
transform: scale(1.05);
}
</style>
</style>

@ -1,11 +1,13 @@
<template>
<div>
<div class="card" style="margin-bottom: 10px;">
<el-input style="width: 300px; margin-right: 10px" v-model = "data.name"
placeholder="请输入关键字查询" :prefix-icon = "Search"/>
<el-button type="primary">查询</el-button>
<el-button type="info" style="margin: 0 10px">重置</el-button>
<div class="card" style="margin-bottom: 10px">
<el-input style="width: 260px; margin-right: 10px" v-model="data.name" placeholder="请输入课程名称查询"
:prefix-icon="Search"/>
<el-input style="width: 260px; margin-right: 10px" v-model="data.no" placeholder="请输入课程编号查询"
:prefix-icon="Search"/>
<el-input style="width: 260px" v-model="data.teacher" placeholder="请输入任课老师查询" :prefix-icon="Search"/>
<el-button type="primary" style="margin-left: 10px" @click="load"></el-button>
<el-button type="info" @click="reset"></el-button>
</div>
<div class="card" style="margin-bottom: 10px">
@ -13,39 +15,54 @@
<el-button type="primary" @click="handleAdd"></el-button>
</div>
<el-table stripe :data="data.tableData">
<el-table-column label="课程编号" prop="courseId"></el-table-column>
<el-table-column label="课程名称" prop="title"></el-table-column>
<el-table-column label="开设学院" prop="deptName"></el-table-column>
<el-table-column label="学分" prop="credits"></el-table-column>
<el-table-column label="操作" align="center" width="160">
<template #default = "scope">
<el-button type="primary" plain @click="handleEdit"></el-button>
<el-button type="danger" plain @click="handleDelete"></el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-table :data="data.tableData" style="width: 100%">
<el-table-column prop="id" label="序号" width="70"/>
<el-table-column prop="name" label="课程名称"/>
<el-table-column prop="no" label="课程编号"/>
<el-table-column prop="descr" label="课程描述"/>
<el-table-column prop="times" label="课时"/>
<el-table-column prop="teacher" label="任课老师"/>
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="primary" @click="handleEdit(scope.row)"></el-button>
<el-button type="danger" @click="del(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
//
<div class="card">
<el-pagination background layout="prev, pager, next" :page-size="8" v-model:current-page="data.pageNum" :total="1000"/>
<el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize"
@current-change="handelCurrentChange"
background layout="prev, pager, next" :total="data.total"/>
</div>
<el-dialog title="信息" width="40%" v-model="data.formVisible" :close-on-click-modal="false" destroy-on-close>
<el-form :model="data.form" label-width="100px" style="padding-right: 50px">
<el-form-item label="名称" prop="name">
<el-input v-model="data.form.name" autocomplete="off" />
<el-dialog width="35%" v-model="data.formVisible" title="课程信息">
<el-form :model="data.form" label-width="100px" label-position="right" style="padding-right: 40px">
<el-form-item label="课程名称">
<el-input v-model="data.form.name" autocomplete="off"/>
</el-form-item>
<el-form-item label="课程编号">
<el-input v-model="data.form.no" autocomplete="off"/>
</el-form-item>
<el-form-item label="课程描述">
<el-input v-model="data.form.descr" autocomplete="off"/>
</el-form-item>
<el-form-item label="描述" prop="title">
<el-input v-model="data.form.descr" autocomplete="off" />
<el-form-item label="课时">
<el-input v-model="data.form.times" autocomplete="off"/>
</el-form-item>
<el-form-item label="任课老师">
<el-input v-model="data.form.teacher" autocomplete="off"/>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="data.formVisible = false"> </el-button>
<el-button type="primary" @click="data.formVisible = false"> </el-button>
</span>
<span class="dialog-footer">
<el-button @click="data.formVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</span>
</template>
</el-dialog>
@ -53,38 +70,89 @@
</template>
<script setup>
import {reactive} from "vue"
import {Search} from '@element-plus/icons-vue'
import request from "@/utils/request";
import {reactive} from "vue";
import {ElMessageBox} from "element-plus";
request.get('/').then(res => {
console.log(res)
})
import {ElMessage, ElMessageBox} from "element-plus";
const data = reactive({
pageNum: 1,
name: '',
no: '',
teacher: '',
tableData: [],
total: 0,
pageNum: 1, //
pageSize: 5, //
formVisible: false,
form: {},
tableData: [
{courseId: 'cs-001', title: '程序设计', deptName: 'Comp. Sci.' , credits: '2'},
{courseId: 'cs-002', title: '数学分析', deptName: 'Comp. Sci.', credits: '6'},
{courseId: 'cs-003', title: '信息系统实践', deptName: 'Comp. Sci.', credits: '2'},
]
form: {}
})
const load = () => {
request.get('/course/selectPage', {
params: {
pageNum: data.pageNum,
pageSize: data.pageSize,
name: data.name,
no: data.no,
teacher: data.teacher,
}
}).then(res => {
data.tableData = res.data?.list || []
data.total = res.data?.total || 0
})
}
//
load()
const handelCurrentChange = () => {
//
load()
}
const reset = () => {
data.name = ''
data.no = ''
data.teacher = ''
load()
}
const handleAdd = () => {
data.form = {}
data.formVisible = true
}
//
const save = () => {
request.request({
url: data.form.id ? '/course/update' : '/course/add',
method: data.form.id ? 'PUT' : 'POST',
data: data.form
}).then(res => {
if (res.code === '200') {
load() //
data.formVisible = false //
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}
const handleEdit = (row) => {
let form = JSON.parse(JSON.stringify(row))
data.form = JSON.parse(JSON.stringify(row))
data.formVisible = true
}
const handleDelete = (id) => {
ElMessageBox.confirm('删除后数据无法恢复,您确定删除吗?', '删除确认', { type: 'warning' }).then(res => {
console.log('删除')
}).catch(err => {
console.error(err)
})
const del = (id) => {
ElMessageBox.confirm('删除数据后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {
request.delete('/course/delete/' + id).then(res => {
if (res.code === '200') {
load() //
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}).catch(res => {})
}
</script>

@ -0,0 +1,98 @@
<template>
<div>
<div class="card" style="margin-bottom: 10px">
<el-input style="width: 260px; margin-right: 10px" v-model="data.name" placeholder="请输入课程名称查询"
:prefix-icon="Search"/>
<el-input style="width: 260px; margin-right: 10px" v-model="data.no" placeholder="请输入课程编号查询"
:prefix-icon="Search"/>
<el-input style="width: 260px" v-model="data.teacher" placeholder="请输入任课老师查询" :prefix-icon="Search"/>
<el-button type="primary" style="margin-left: 10px" @click="load"></el-button>
<el-button type="info" @click="reset"></el-button>
</div>
<div class="card" style="margin-bottom: 10px">
<div>
<el-table :data="data.tableData" style="width: 100%">
<el-table-column prop="id" label="序号" width="70"/>
<el-table-column prop="name" label="课程名称"/>
<el-table-column prop="no" label="课程编号"/>
<el-table-column prop="descr" label="课程描述"/>
<el-table-column prop="times" label="课时"/>
<el-table-column prop="teacher" label="任课老师"/>
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="primary" @click="selectCourse(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="card">
<el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize"
@current-change="handelCurrentChange"
background layout="prev, pager, next" :total="data.total"/>
</div>
</div>
</template>
<script setup>
import {reactive} from "vue"
import {Search} from '@element-plus/icons-vue'
import request from "@/utils/request";
import {ElMessage, ElMessageBox} from "element-plus";
const data = reactive({
name: '',
no: '',
teacher: '',
tableData: [],
total: 0,
pageNum: 1, //
pageSize: 5, //
student: JSON.parse(localStorage.getItem('student-user') || '{}')
})
const load = () => {
request.get('/course/selectPage', {
params: {
pageNum: data.pageNum,
pageSize: data.pageSize,
name: data.name,
no: data.no,
teacher: data.teacher,
}
}).then(res => {
data.tableData = res.data?.list || []
data.total = res.data?.total || 0
})
}
//
load()
const handelCurrentChange = () => {
//
load()
}
const reset = () => {
data.name = ''
data.no = ''
data.teacher = ''
load()
}
const selectCourse = (row) => {
request.post('/studentCourse/add', { studentId: data.student.id, name: row.name, no: row.no, courseId: row.id }).then(res => {
if (res.code === '200') {
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}
</script>

@ -0,0 +1,142 @@
<template>
<div>
<div class="card" style="margin-bottom: 10px">
<el-input style="width: 260px; margin-right: 10px" v-model="data.courseName" placeholder="请输入课程名称查询"
:prefix-icon="Search"/>
<el-input style="width: 260px; margin-right: 10px" v-model="data.studentName" placeholder="请输入学生名称查询"
:prefix-icon="Search"/>
<el-button type="primary" style="margin-left: 10px" @click="load"></el-button>
<el-button type="info" @click="reset"></el-button>
</div>
<div class="card" style="margin-bottom: 10px">
<div>
<el-table :data="data.tableData" style="width: 100%">
<el-table-column prop="id" label="序号" width="70"/>
<el-table-column prop="courseName" label="课程名称"/>
<el-table-column prop="studentName" label="学生名称"/>
<el-table-column prop="score" label="分数"/>
<el-table-column prop="comment" label="评语"/>
<el-table-column prop="feedback" label="反馈"/>
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="primary" @click="handleEdit(scope.row)" v-if="data.user.role === 'ADMIN'"></el-button>
<el-button type="danger" @click="del(scope.row.id)" v-if="data.user.role === 'ADMIN'"></el-button>
<el-button type="primary" @click="handleEdit(scope.row)" v-if="data.user.role === 'STUDENT'"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="card">
<el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize"
@current-change="handelCurrentChange"
background layout="prev, pager, next" :total="data.total"/>
</div>
<el-dialog width="35%" v-model="data.formVisible" title="反馈信息">
<el-form :model="data.form" label-width="100px" label-position="right" style="padding-right: 40px">
<el-form-item label="评分" v-if="data.user.role === 'ADMIN'">
<el-input v-model="data.form.score" autocomplete="off" />
</el-form-item>
<el-form-item label="评语" v-if="data.user.role === 'ADMIN'">
<el-input type="textarea" v-model="data.form.comment" autocomplete="off" />
</el-form-item>
<el-form-item label="反馈" v-if="data.user.role === 'STUDENT'">
<el-input type="textarea" v-model="data.form.feedback" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="data.formVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup>
import {reactive} from "vue"
import {Search} from '@element-plus/icons-vue'
import request from "@/utils/request";
import {ElMessage, ElMessageBox} from "element-plus";
const data = reactive({
form: {},
courseName: '',
studentName: '',
tableData: [],
total: 0,
pageNum: 1, //
pageSize: 5, //
user: JSON.parse(localStorage.getItem('student-user') || '{}'),
formVisible: false
})
const load = () => {
let params = {
pageNum: data.pageNum,
pageSize: data.pageSize,
courseName: data.courseName,
studentName: data.studentName
}
if (data.user.role === 'STUDENT') { //
params.studentId = data.user.id
}
request.get('/grade/selectPage', {
params: params
}).then(res => {
data.tableData = res.data?.list || []
data.total = res.data?.total || 0
})
}
//
load()
const handelCurrentChange = () => {
//
load()
}
const reset = () => {
data.courseName = ''
data.studentName = ''
load()
}
const del = (id) => {
ElMessageBox.confirm('删除数据后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {
request.delete('/grade/delete/' + id).then(res => {
if (res.code === '200') {
load() //
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}).catch(res => {})
}
//
const handleEdit = (row) => {
data.form = JSON.parse(JSON.stringify(row)) //
data.formVisible = true
}
const save = () => {
request.put('/grade/update', data.form).then(res => {
if (res.code === '200') {
load()
data.formVisible = false //
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}
</script>

@ -1,14 +1,81 @@
<template>
<div>
<div class="card" style="line-height: 30px">
<div>欢迎您<span style="color: deepskyblue"> {{ user.name }} </span> 祝您今天过得开心</div>
<div class="welcome-container">
<div class="card">
<div class="welcome-message">欢迎您<span class="user-name">{{ user.name }}</span> 祝您今天过得开心</div>
<div class="inspirational-quote">{{ randomQuote }}</div>
</div>
</div>
</template>
<script setup>
import request from "../../utils/request";
const user = JSON.parse(localStorage.getItem('student-user') || '{}')
</script>
import { ref, onMounted } from 'vue';
const user = JSON.parse(localStorage.getItem('student-user') || '{}');
const quotes = [
"每一天都是一个新的开始。",
"相信你自己,你能做到。",
"你比你想象的更强大。",
"勇敢地追求你的梦想。",
"成功源于不断努力。",
"今天的努力成就明天的辉煌。",
"不要放弃,奇迹会发生。",
"每一个困难都是机会的伪装。",
"信念创造奇迹。",
"坚持不懈,直到成功。"
];
const randomQuote = ref('');
onMounted(() => {
randomQuote.value = quotes[Math.floor(Math.random() * quotes.length)];
});
</script>
<style scoped>
.welcome-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-image: url("@/assets/imgs/bkg.jpg");
background-size: cover;
background-blend-mode: overlay;
animation: backgroundAnimation 10s infinite alternate;
}
@keyframes backgroundAnimation {
0% { background-position: top left; }
100% { background-position: bottom right; }
}
.card {
background: linear-gradient(to bottom right, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6));
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
padding: 30px;
border-radius: 5px;
text-align: center;
max-width: 400px;
transition: transform 0.3s;
}
.card:hover {
transform: scale(1.05);
}
.welcome-message {
font-size: 18px;
margin-bottom: 20px;
}
.user-name {
color: dodgerblue;
font-weight: bold;
}
.inspirational-quote {
font-size: 16px;
color: #555;
margin-top: 20px;
font-style: italic;
}
</style>

@ -0,0 +1,97 @@
<template>
<div>
<div class="card" style="width: 50%; padding: 40px">
<el-form :model="data.form" ref="formRef" label-width="100px" label-position="right"
style="padding-right: 40px">
<el-form-item label="学生头像">
<el-upload class="avatar-uploader" action="http://localhost:9090/files/upload" :show-file-list="false"
:on-success="handleImgUploadSuccess">
<img v-if="data.form.avatar" :src="data.form.avatar" class="avatar">
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
<el-form-item label="学生账号" prop="username">
<el-input v-model="data.form.username" autocomplete="off" disabled />
</el-form-item>
<el-form-item label="学生密码" prop="password">
<el-input show-password v-model="data.form.password" autocomplete="off"/>
</el-form-item>
<el-form-item label="学生名称">
<el-input v-model="data.form.name" autocomplete="off"/>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="data.form.phone" autocomplete="off"/>
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="data.form.email" autocomplete="off"/>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="data.form.sex">
<el-radio label="男"></el-radio>
<el-radio label="女"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生日">
<el-date-picker style="width: 100%" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="data.form.birth"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="update"> </el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {reactive} from "vue";
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import router from "@/router";
import {Plus} from "@element-plus/icons-vue"
const data = reactive({
form: JSON.parse(localStorage.getItem('student-user') || "{}")
})
const handleImgUploadSuccess = (res) => {
data.form.avatar = res.data
}
const update = () => {
request.put('/student/update', data.form).then(res => {
if (res.code === '200') {
ElMessage.success("操作成功")
router.push('/login')
} else {
ElMessage.error(res.msg)
}
})
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
}
.avatar {
width: 100px;
height: 100px;
display: block;
}
</style>

@ -0,0 +1,141 @@
<template>
<div>
<div class="card" style="margin-bottom: 10px">
<el-input style="width: 260px; margin-right: 10px" v-model="data.name" placeholder="请输入课程名称查询"
:prefix-icon="Search"/>
<el-input style="width: 260px; margin-right: 10px" v-model="data.no" placeholder="请输入课程编号查询"
:prefix-icon="Search"/>
<el-button type="primary" style="margin-left: 10px" @click="load"></el-button>
<el-button type="info" @click="reset"></el-button>
</div>
<div class="card" style="margin-bottom: 10px">
<div>
<el-table :data="data.tableData" style="width: 100%">
<el-table-column prop="id" label="序号" width="70"/>
<el-table-column prop="name" label="课程名称"/>
<el-table-column prop="no" label="课程编号"/>
<el-table-column prop="studentName" label="学生名称"/>
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="danger" @click="del(scope.row.id)"></el-button>
<el-button type="primary" @click="addGrade(scope.row)" v-if="data.user.role === 'ADMIN'"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="card">
<el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize"
@current-change="handelCurrentChange"
background layout="prev, pager, next" :total="data.total"/>
</div>
<el-dialog width="35%" v-model="data.formVisible" title="成绩信息">
<el-form :model="data.gradeForm" label-width="100px" label-position="right" style="padding-right: 40px">
<el-form-item label="课程名称">
<el-input v-model="data.gradeForm.name" autocomplete="off" disabled />
</el-form-item>
<el-form-item label="分数">
<el-input v-model="data.gradeForm.score" autocomplete="off" />
</el-form-item>
<el-form-item label="评语">
<el-input type="textarea" v-model="data.gradeForm.comment" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="data.formVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup>
import {reactive} from "vue"
import {Search} from '@element-plus/icons-vue'
import request from "@/utils/request";
import {ElMessage, ElMessageBox} from "element-plus";
const data = reactive({
name: '',
no: '',
tableData: [],
total: 0,
pageNum: 1, //
pageSize: 5, //
user: JSON.parse(localStorage.getItem('student-user') || '{}'),
gradeForm: {},
formVisible: false
})
const load = () => {
let params = {
pageNum: data.pageNum,
pageSize: data.pageSize,
name: data.name,
no: data.no
}
if (data.user.role === 'STUDENT') { //
params.studentId = data.user.id
}
request.get('/studentCourse/selectPage', {
params: params
}).then(res => {
data.tableData = res.data?.list || []
data.total = res.data?.total || 0
})
}
//
load()
const handelCurrentChange = () => {
//
load()
}
const reset = () => {
data.name = ''
data.no = ''
load()
}
const del = (id) => {
ElMessageBox.confirm('删除数据后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {
request.delete('/studentCourse/delete/' + id).then(res => {
if (res.code === '200') {
load() //
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}).catch(res => {})
}
//
const addGrade = (row) => {
//
data.formVisible = true
data.gradeForm.name = row.name
data.gradeForm.courseId = row.courseId
data.gradeForm.studentId = row.studentId
}
const save = () => {
request.post('/grade/add', data.gradeForm).then(res => {
if (res.code === '200') {
data.formVisible = false //
ElMessage.success("操作成功")
} else {
ElMessage.error(res.msg)
}
})
}
</script>
Loading…
Cancel
Save