From 93271cd2498d73e9dc35e572d8c31ae9645b7d8b Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 12 七月 2024 11:29:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/home/components/user-panel/index.vue | 215 ++++++++++++------- src/api/modules/user.js | 7 src/views/train/data-list/index.vue | 59 ++-- components.d.ts | 4 vite.config.js | 2 src/views/grade-list/data-list/index.vue | 7 src/mock/_exam.bundled_1720748378963_643yxkdyz9t.cjs | 334 ++++++++++++++++++++++++++++++ 7 files changed, 519 insertions(+), 109 deletions(-) diff --git a/components.d.ts b/components.d.ts index b2d1c50..a89ff70 100644 --- a/components.d.ts +++ b/components.d.ts @@ -14,11 +14,15 @@ ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElCountdown: typeof import('element-plus/es')['ElCountdown'] ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElInput: typeof import('element-plus/es')['ElInput'] + ElLink: typeof import('element-plus/es')['ElLink'] ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElProgress: typeof import('element-plus/es')['ElProgress'] diff --git a/src/api/modules/user.js b/src/api/modules/user.js index 4d8fcb3..b2dd01a 100644 --- a/src/api/modules/user.js +++ b/src/api/modules/user.js @@ -1,6 +1,11 @@ import service from "@/api"; - +// 鐧诲綍璇锋眰 export const login = (postData = {}) => { return service.post('/api/user/login', postData); } + +// 閫�鍑虹櫥褰� +export const logout = () => { + return service.post('/api/user/logout'); +} \ No newline at end of file diff --git a/src/mock/_exam.bundled_1720748378963_643yxkdyz9t.cjs b/src/mock/_exam.bundled_1720748378963_643yxkdyz9t.cjs new file mode 100644 index 0000000..3398553 --- /dev/null +++ b/src/mock/_exam.bundled_1720748378963_643yxkdyz9t.cjs @@ -0,0 +1,334 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/mock/exam.js +var exam_exports = {}; +__export(exam_exports, { + default: () => exam_default +}); +module.exports = __toCommonJS(exam_exports); +var exam_default = [ + // 鑾峰彇鑰冭瘯璇曞嵎 + { + url: "/api/v1/getExamInfo", + method: "GET", + response: () => { + return { + code: 200, + msg: "Success", + data: { + examInfo: { + examId: 1, + examName: "\u6D4B\u8BD5\u540D\u79F0", + examType: "\u8003\u8BD5\u7C7B\u578B", + examStatus: "\u8003\u8BD5\u72B6\u6001", + examStartTime: "2021-01-01", + examEndTime: "2021-01-01", + "examTime|30-60": 50, + examGrade: 60 + }, + examQuestionList: [ + { + questionType: 1, + questionList: [ + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "1+1=\uFF1F123", + "img": "/test_question.png", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "3", + "difficult": 5 + }, + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "1+1=\uFF1F", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "3", + "difficult": 5 + } + ] + }, + { + questionType: 2, + questionList: [ + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "1+1=\uFF1F", + "img": "/test_question.png", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "5", + "difficult": 5 + }, + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "1+1=\uFF1F", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "5", + "difficult": 5 + }, + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "1+1=\uFF1F", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "5", + "difficult": 5 + }, + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "1+1=\uFF1F", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "5", + "difficult": 5 + } + ] + }, + { + questionType: 3, + questionList: [ + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "\u6D4B\u8BD5\u97F3\u98911", + "audioFile": "/test.mp3", + "img": "/test_question.png", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "3", + "difficult": 5 + }, + { + "id": null, + "questionType": 1, + "gradeLevel": null, + "subjectId": 2, + "title": "\u6D4B\u8BD5\u97F3\u98912", + "audioFile": "/test.mp3", + "items": [ + { + "prefix": "A", + "content": "1" + }, + { + "prefix": "B", + "content": "2" + }, + { + "prefix": "C", + "content": "3" + }, + { + "prefix": "D", + "content": "4" + } + ], + "analyze": "\u95EE\u5C0F\u670B\u53CB", + "correct": "", + "score": "3", + "difficult": 5 + } + ] + } + ] + } + }; + } + }, + // 鑾峰彇鑰冭瘯鍒楄〃 + { + url: "/api/v1/getExamList", + method: "GET", + response: () => { + return { + code: 200, + msg: "Success", + "data|2-8": [ + { + "id|+1": 1, + name: "\u6D4B\u8BD5\u6D4B\u8BD5\u6D4B\u8BD5\u6D4B\u8BD5\u6D4B\u8BD5\u6D4B\u8BD5", + startTime: "2024-01-01 09:00:00", + endTime: "2024-01-01 11:00:00", + // 1:鏈紑濮� + // 2:杩涜涓� + // 3:宸茬粨鏉� + "status|1": [ + 1, + 2, + 3 + ], + "examTotal|20-60": 20, + "examTime|30-120": 120, + "examScore|60-100": 100 + } + ] + }; + } + } +]; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21vY2svZXhhbS5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCJDOlxcXFxVc2Vyc1xcXFxoaHlcXFxcRGVza3RvcFxcXFx5Y2xcXFxcanhrZy1uZXctdWktc3R1ZGVudFxcXFxzcmNcXFxcbW9ja1xcXFxleGFtLmpzXCI7Y29uc3QgX19pbmplY3RlZF9kaXJuYW1lX18gPSBcIkM6XFxcXFVzZXJzXFxcXGhoeVxcXFxEZXNrdG9wXFxcXHljbFxcXFxqeGtnLW5ldy11aS1zdHVkZW50XFxcXHNyY1xcXFxtb2NrXCI7Y29uc3QgX19pbmplY3RlZF9pbXBvcnRfbWV0YV91cmxfXyA9IFwiZmlsZTovLy9DOi9Vc2Vycy9oaHkvRGVza3RvcC95Y2wvanhrZy1uZXctdWktc3R1ZGVudC9zcmMvbW9jay9leGFtLmpzXCI7ZXhwb3J0IGRlZmF1bHQgW1xyXG4gIC8vIFx1ODNCN1x1NTNENlx1ODAwM1x1OEJENVx1OEJENVx1NTM3N1xyXG4gIHtcclxuICAgIHVybDogJy9hcGkvdjEvZ2V0RXhhbUluZm8nLFxyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHJlc3BvbnNlOiAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogMjAwLFxyXG4gICAgICAgIG1zZzogJ1N1Y2Nlc3MnLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGV4YW1JbmZvOiB7XHJcbiAgICAgICAgICAgIGV4YW1JZDogMSxcclxuICAgICAgICAgICAgZXhhbU5hbWU6ICdcdTZENEJcdThCRDVcdTU0MERcdTc5RjAnLFxyXG4gICAgICAgICAgICBleGFtVHlwZTogJ1x1ODAwM1x1OEJENVx1N0M3Qlx1NTc4QicsXHJcbiAgICAgICAgICAgIGV4YW1TdGF0dXM6ICdcdTgwMDNcdThCRDVcdTcyQjZcdTYwMDEnLFxyXG4gICAgICAgICAgICBleGFtU3RhcnRUaW1lOiAnMjAyMS0wMS0wMScsXHJcbiAgICAgICAgICAgIGV4YW1FbmRUaW1lOiAnMjAyMS0wMS0wMScsXHJcbiAgICAgICAgICAgICdleGFtVGltZXwzMC02MCc6IDUwLFxyXG4gICAgICAgICAgICBleGFtR3JhZGU6IDYwLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGV4YW1RdWVzdGlvbkxpc3Q6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogMSxcclxuICAgICAgICAgICAgICBxdWVzdGlvbkxpc3Q6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXCJpZFwiOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICBcInF1ZXN0aW9uVHlwZVwiOiAxLFxyXG4gICAgICAgICAgICAgICAgICBcImdyYWRlTGV2ZWxcIjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgXCJzdWJqZWN0SWRcIjogMixcclxuICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIjErMT1cdUZGMUYxMjNcIixcclxuICAgICAgICAgICAgICAgICAgXCJpbWdcIjogJy90ZXN0X3F1ZXN0aW9uLnBuZycsXHJcbiAgICAgICAgICAgICAgICAgIFwiaXRlbXNcIjogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJDXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiRFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICBcImFuYWx5emVcIjogXCJcdTk1RUVcdTVDMEZcdTY3MEJcdTUzQ0JcIixcclxuICAgICAgICAgICAgICAgICAgXCJjb3JyZWN0XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwic2NvcmVcIjogXCIzXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiZGlmZmljdWx0XCI6IDVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFwiaWRcIjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgXCJxdWVzdGlvblR5cGVcIjogMSxcclxuICAgICAgICAgICAgICAgICAgXCJncmFkZUxldmVsXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwic3ViamVjdElkXCI6IDIsXHJcbiAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCIxKzE9XHVGRjFGXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiaXRlbXNcIjogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJDXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiRFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICBcImFuYWx5emVcIjogXCJcdTk1RUVcdTVDMEZcdTY3MEJcdTUzQ0JcIixcclxuICAgICAgICAgICAgICAgICAgXCJjb3JyZWN0XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwic2NvcmVcIjogXCIzXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiZGlmZmljdWx0XCI6IDVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvblR5cGU6IDIsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25MaXN0OiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFwiaWRcIjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgXCJxdWVzdGlvblR5cGVcIjogMSxcclxuICAgICAgICAgICAgICAgICAgXCJncmFkZUxldmVsXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwic3ViamVjdElkXCI6IDIsXHJcbiAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCIxKzE9XHVGRjFGXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiaW1nXCI6ICcvdGVzdF9xdWVzdGlvbi5wbmcnLFxyXG4gICAgICAgICAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkFcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJCXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgXCJhbmFseXplXCI6IFwiXHU5NUVFXHU1QzBGXHU2NzBCXHU1M0NCXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiY29ycmVjdFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICBcInNjb3JlXCI6IFwiNVwiLFxyXG4gICAgICAgICAgICAgICAgICBcImRpZmZpY3VsdFwiOiA1XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcImlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwicXVlc3Rpb25UeXBlXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgIFwiZ3JhZGVMZXZlbFwiOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICBcInN1YmplY3RJZFwiOiAyLFxyXG4gICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiMSsxPVx1RkYxRlwiLFxyXG4gICAgICAgICAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkFcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJCXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgXCJhbmFseXplXCI6IFwiXHU5NUVFXHU1QzBGXHU2NzBCXHU1M0NCXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiY29ycmVjdFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICBcInNjb3JlXCI6IFwiNVwiLFxyXG4gICAgICAgICAgICAgICAgICBcImRpZmZpY3VsdFwiOiA1XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcImlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwicXVlc3Rpb25UeXBlXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgIFwiZ3JhZGVMZXZlbFwiOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICBcInN1YmplY3RJZFwiOiAyLFxyXG4gICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiMSsxPVx1RkYxRlwiLFxyXG4gICAgICAgICAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkFcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJCXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgXCJhbmFseXplXCI6IFwiXHU5NUVFXHU1QzBGXHU2NzBCXHU1M0NCXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiY29ycmVjdFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICBcInNjb3JlXCI6IFwiNVwiLFxyXG4gICAgICAgICAgICAgICAgICBcImRpZmZpY3VsdFwiOiA1XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcImlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwicXVlc3Rpb25UeXBlXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgIFwiZ3JhZGVMZXZlbFwiOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICBcInN1YmplY3RJZFwiOiAyLFxyXG4gICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiMSsxPVx1RkYxRlwiLFxyXG4gICAgICAgICAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkFcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJCXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgXCJhbmFseXplXCI6IFwiXHU5NUVFXHU1QzBGXHU2NzBCXHU1M0NCXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiY29ycmVjdFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICBcInNjb3JlXCI6IFwiNVwiLFxyXG4gICAgICAgICAgICAgICAgICBcImRpZmZpY3VsdFwiOiA1XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiAzLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uTGlzdDogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcImlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwicXVlc3Rpb25UeXBlXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgIFwiZ3JhZGVMZXZlbFwiOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICBcInN1YmplY3RJZFwiOiAyLFxyXG4gICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiXHU2RDRCXHU4QkQ1XHU5N0YzXHU5ODkxMVwiLFxyXG4gICAgICAgICAgICAgICAgICBcImF1ZGlvRmlsZVwiOiAnL3Rlc3QubXAzJyxcclxuICAgICAgICAgICAgICAgICAgXCJpbWdcIjogJy90ZXN0X3F1ZXN0aW9uLnBuZycsXHJcbiAgICAgICAgICAgICAgICAgIFwiaXRlbXNcIjogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJDXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiRFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICBcImFuYWx5emVcIjogXCJcdTk1RUVcdTVDMEZcdTY3MEJcdTUzQ0JcIixcclxuICAgICAgICAgICAgICAgICAgXCJjb3JyZWN0XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwic2NvcmVcIjogXCIzXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiZGlmZmljdWx0XCI6IDVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFwiaWRcIjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgXCJxdWVzdGlvblR5cGVcIjogMSxcclxuICAgICAgICAgICAgICAgICAgXCJncmFkZUxldmVsXCI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgIFwic3ViamVjdElkXCI6IDIsXHJcbiAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJcdTZENEJcdThCRDVcdTk3RjNcdTk4OTEyXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiYXVkaW9GaWxlXCI6ICcvdGVzdC5tcDMnLFxyXG4gICAgICAgICAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkFcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcmVmaXhcIjogXCJCXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogXCIyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwicHJlZml4XCI6IFwiQ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IFwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInByZWZpeFwiOiBcIkRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudFwiOiBcIjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgXCJhbmFseXplXCI6IFwiXHU5NUVFXHU1QzBGXHU2NzBCXHU1M0NCXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiY29ycmVjdFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICBcInNjb3JlXCI6IFwiM1wiLFxyXG4gICAgICAgICAgICAgICAgICBcImRpZmZpY3VsdFwiOiA1XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9LFxyXG4gIC8vIFx1ODNCN1x1NTNENlx1ODAwM1x1OEJENVx1NTIxN1x1ODg2OFxyXG4gIHtcclxuICAgIHVybDogJy9hcGkvdjEvZ2V0RXhhbUxpc3QnLFxyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHJlc3BvbnNlOiAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogMjAwLFxyXG4gICAgICAgIG1zZzogJ1N1Y2Nlc3MnLFxyXG4gICAgICAgICdkYXRhfDItOCc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ2lkfCsxJzogMSxcclxuICAgICAgICAgICAgbmFtZTogJ1x1NkQ0Qlx1OEJENVx1NkQ0Qlx1OEJENVx1NkQ0Qlx1OEJENVx1NkQ0Qlx1OEJENVx1NkQ0Qlx1OEJENVx1NkQ0Qlx1OEJENScsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTogJzIwMjQtMDEtMDEgMDk6MDA6MDAnLFxyXG4gICAgICAgICAgICBlbmRUaW1lOiAnMjAyNC0wMS0wMSAxMTowMDowMCcsXHJcbiAgICAgICAgICAgIC8vIDE6XHU2NzJBXHU1RjAwXHU1OUNCXHJcbiAgICAgICAgICAgIC8vIDI6XHU4RkRCXHU4ODRDXHU0RTJEXHJcbiAgICAgICAgICAgIC8vIDM6XHU1REYyXHU3RUQzXHU2NzVGXHJcbiAgICAgICAgICAgICdzdGF0dXN8MSc6IFtcclxuICAgICAgICAgICAgICAxLFxyXG4gICAgICAgICAgICAgIDIsXHJcbiAgICAgICAgICAgICAgM1xyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAnZXhhbVRvdGFsfDIwLTYwJzogMjAsXHJcbiAgICAgICAgICAgICdleGFtVGltZXwzMC0xMjAnOiAxMjAsXHJcbiAgICAgICAgICAgICdleGFtU2NvcmV8NjAtMTAwJzogMTAwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXTsiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErUyxJQUFPLGVBQVE7QUFBQTtBQUFBLEVBRTVUO0FBQUEsSUFDRSxLQUFLO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixVQUFVLE1BQU07QUFDZCxhQUFPO0FBQUEsUUFDTCxNQUFNO0FBQUEsUUFDTixLQUFLO0FBQUEsUUFDTCxNQUFNO0FBQUEsVUFDSixVQUFVO0FBQUEsWUFDUixRQUFRO0FBQUEsWUFDUixVQUFVO0FBQUEsWUFDVixVQUFVO0FBQUEsWUFDVixZQUFZO0FBQUEsWUFDWixlQUFlO0FBQUEsWUFDZixhQUFhO0FBQUEsWUFDYixrQkFBa0I7QUFBQSxZQUNsQixXQUFXO0FBQUEsVUFDYjtBQUFBLFVBQ0Esa0JBQWtCO0FBQUEsWUFDaEI7QUFBQSxjQUNFLGNBQWM7QUFBQSxjQUNkLGNBQWM7QUFBQSxnQkFDWjtBQUFBLGtCQUNFLE1BQU07QUFBQSxrQkFDTixnQkFBZ0I7QUFBQSxrQkFDaEIsY0FBYztBQUFBLGtCQUNkLGFBQWE7QUFBQSxrQkFDYixTQUFTO0FBQUEsa0JBQ1QsT0FBTztBQUFBLGtCQUNQLFNBQVM7QUFBQSxvQkFDUDtBQUFBLHNCQUNFLFVBQVU7QUFBQSxzQkFDVixXQUFXO0FBQUEsb0JBQ2I7QUFBQSxvQkFDQTtBQUFBLHNCQUNFLFVBQVU7QUFBQSxzQkFDVixXQUFXO0FBQUEsb0JBQ2I7QUFBQSxvQkFDQTtBQUFBLHNCQUNFLFVBQVU7QUFBQSxzQkFDVixXQUFXO0FBQUEsb0JBQ2I7QUFBQSxvQkFDQTtBQUFBLHNCQUNFLFVB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 diff --git a/src/views/grade-list/data-list/index.vue b/src/views/grade-list/data-list/index.vue index fc82f87..221d3a2 100644 --- a/src/views/grade-list/data-list/index.vue +++ b/src/views/grade-list/data-list/index.vue @@ -1,15 +1,18 @@ <template> <div class="list-container w-full h-full"> <el-scrollbar> - <el-card shadow="hover" class="mb-3" v-for="item in props.dataList"> + <el-card shadow="hover" class="mb-3" v-for="item in props.dataList" :key="item.id"> <div class="item flex justify-between items-center"> <div class="left-container flex flex-col justify-between"> <div class="top-container flex items-center"> <div class="title mr-5 text-xl font-bold">{{ item.examName }}</div> <div class="tag"> - <el-tag type="primary" effect="light" round> + <el-tag type="primary" effect="light" round v-if="item.status === 0"> 宸叉壒鏀� </el-tag> + <el-tag type="danger" effect="light" round v-if="item.status === 1"> + 缂鸿�� + </el-tag> </div> </div> <div class="mid-container flex items-center my-4 text-gray-700"> diff --git a/src/views/home/components/user-panel/index.vue b/src/views/home/components/user-panel/index.vue index 0880ffc..f6b415c 100644 --- a/src/views/home/components/user-panel/index.vue +++ b/src/views/home/components/user-panel/index.vue @@ -1,110 +1,169 @@ <template> - <div class="user-panel max-w-sm min-w-96 h-fit"> - <el-card class="card"> - <div class="panel-content flex flex-col items-center"> - <div class="avatar-container w-40 h-40 rounded-full overflow-hidden"> - <div class="avatar-content" v-if="userInfo.imagePath"> - <img :src="userInfo.imagePath" class="avatar-img" alt=""> - </div> - <div class="avatar-content" :style="{backgroundColor: getColor}" v-else> - <div class="name text-5xl font-bold text-white">{{ getFirstName }}</div> - </div> - </div> + <div class="user-panel max-w-sm min-w-96 h-fit"> + <el-card class="card"> + <div class="panel-content flex flex-col items-center"> + <!-- 瀛︾敓淇℃伅 --> + <el-dropdown> + <div + class="avatar-container w-40 h-40 rounded-full overflow-hidden el-dropdown-link" + @click="stateClick()" + > + <div + class="avatar-content" + v-if="userInfo.imagePath" + > + <img + :src="userInfo.imagePath" + class="avatar-img" + alt="" + /> + </div> + <div + class="avatar-content" + :style="{ backgroundColor: getColor }" + v-else + > + <div class="name text-5xl font-bold text-white"> + {{ getFirstName }} + </div> + </div> + </div> + <template #dropdown> + <el-dropdown-menu> + <el-dropdown-item>淇敼瀵嗙爜</el-dropdown-item> + <el-dropdown-item>涓汉涓績</el-dropdown-item> + <el-dropdown-item @click="quit()" + >閫�鍑虹櫥褰�</el-dropdown-item + > + </el-dropdown-menu> + </template> + </el-dropdown> - <div class="name-container text-lg font-bold mt-5 mb-2"> - {{ userInfo.realName }} - </div> + <div class="name-container text-lg font-bold mt-5 mb-2"> + {{ userInfo.realName }} + </div> - <div class="department-container text-base mb-10"> - {{ userInfo.userName }} - </div> - - <div class="tool-container grid grid-cols-3 gap-10"> - <div class="tool-item text-center cursor-pointer" v-for="item in toolList" @click="toolClick(item)"> - <div class="tool-icon mb-1"> - <img :src="item.iconPath" class="width-img" alt=""> + <div class="department-container text-base mb-10"> + {{ userInfo.userName }} + </div> + <!-- 瀛︾敓閫夐」 --> + <div class="tool-container grid grid-cols-3 gap-10"> + <div + class="tool-item text-center cursor-pointer" + v-for="item in toolList" + @click="toolClick(item)" + > + <div class="tool-icon mb-1"> + <img + :src="item.iconPath" + class="width-img" + alt="" + /> + </div> + <div class="tool-title"> + {{ item.title }} + </div> + </div> + </div> </div> - <div class="tool-title"> - {{ item.title }} - </div> - </div> - </div> - - </div> - </el-card> - </div> + </el-card> + </div> </template> <script setup> -import { ref, computed } from 'vue'; -import randomColor from '@/utils/randomColor.js'; -import { useRouter } from 'vue-router'; -import { storeToRefs } from 'pinia'; -import { useUserStore } from '@/store/index.js'; +import { ref, computed } from "vue"; +import randomColor from "@/utils/randomColor.js"; +import { useRouter } from "vue-router"; +import { storeToRefs } from "pinia"; +import { useUserStore } from "@/store/index.js"; +import { logout } from "@/api/modules/user.js"; const userStore = useUserStore(); const { userInfo } = storeToRefs(userStore); - - const router = useRouter(); - +// 鑾峰彇鍒楄〃 const toolList = ref([ - { - id: 1, - title: '鍦ㄧ嚎鍩硅', - iconPath: new URL('@/assets/icons/icon1.png', import.meta.url).href, - path: '/train' - }, - { - id: 2, - title: '鎴戠殑鑰冭瘯', - iconPath: new URL('@/assets/icons/icon2.png', import.meta.url).href, - path: '/exam-list' - }, - { - id: 3, - title: '鎴戠殑鎴愮哗', - iconPath: new URL('@/assets/icons/icon2.png', import.meta.url).href, - path: '/grade-list' - }, + { + id: 1, + title: "鍦ㄧ嚎鍩硅", + iconPath: new URL("@/assets/icons/icon1.png", import.meta.url).href, + path: "/train", + }, + { + id: 2, + title: "鎴戠殑鑰冭瘯", + iconPath: new URL("@/assets/icons/icon2.png", import.meta.url).href, + path: "/exam-list", + }, + { + id: 3, + title: "鎴戠殑鎴愮哗", + iconPath: new URL("@/assets/icons/icon2.png", import.meta.url).href, + path: "/grade-list", + }, ]); - +// 鑾峰彇棰滆壊 const getColor = computed(() => { - return randomColor(); + return randomColor(); }); - +// 鑾峰彇鐢ㄦ埛淇℃伅 const getFirstName = computed(() => { - return userInfo.value.realName && userInfo.value.realName[0]; + return userInfo.value.realName && userInfo.value.realName[0]; }); - +// 鐐瑰嚮浜嬩欢 const toolClick = (item) => { - if (item.path) { - router.push(item.path); - } -} + if (item.path) { + router.push(item.path); + } +}; +// 鐢ㄦ埛閫夐」 +const dropdownRef = ref(); +// 閫�鍑虹櫥褰� +const quit = () => { + logout() + .then(() => { + router.push("/login").then(() => { + userStore.setUserInfo(null); + localStorage.clear("user"); + }); + }) + .catch((err) => { + console.log("閫�鍑虹櫥褰曞け璐�,澶辫触鍘熷洜;", err); + }); +}; </script> <style lang="scss" scoped> - - .card { - border-radius: 30px; + border-radius: 30px; } .avatar-content { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; } .avatar-img { - width: 100%; - height: 100%; - object-fit: cover; + width: 100%; + height: 100%; + object-fit: cover; } -</style> \ No newline at end of file +.avatar-container { + cursor: pointer; + color: var(--el-color-primary); + display: flex; + align-items: center; +} +.example-showcase .el-dropdown-link { + cursor: pointer; + color: var(--el-color-primary); + display: flex; + align-items: center; +} +</style> diff --git a/src/views/train/data-list/index.vue b/src/views/train/data-list/index.vue index 369cad7..0c53999 100644 --- a/src/views/train/data-list/index.vue +++ b/src/views/train/data-list/index.vue @@ -4,10 +4,14 @@ <div class="list-content w-full overflow-x-hidden"> <el-row :gutter="20"> <el-col :span="6" v-for="item in props.dataList" class="mb-5"> - <el-card shadow="hover" class="list-card cursor-pointer" :body-style="{ padding: 0 }" - @click="itemClick(item)"> + <el-card + shadow="hover" + class="list-card cursor-pointer" + :body-style="{ padding: 0 }" + @click="itemClick(item)" + > <div class="img-container w-full"> - <img src="@/assets/image/list-card-bg.jpg" class="w-full"> + <img src="@/assets/image/list-card-bg.jpg" class="w-full" /> </div> <div class="item-info p-3"> <div class="info-title font-bold">{{ item.meetName }}</div> @@ -28,16 +32,15 @@ </el-col> </el-row> </div> - </el-scrollbar> </div> </template> <script setup> -import {storeToRefs} from 'pinia'; -import {useRouter} from 'vue-router'; -import {useUserStore} from '@/store/index.js'; -import {classMeet} from '@/api/modules/meet.js'; +import { storeToRefs } from "pinia"; +import { useRouter } from "vue-router"; +import { useUserStore } from "@/store/index.js"; +import { classMeet } from "@/api/modules/meet.js"; const userStore = useUserStore(); const { userInfo } = storeToRefs(userStore); @@ -45,28 +48,30 @@ const props = defineProps({ dataList: { type: Array, - default: () => [] - } + default: () => [], + }, }); - const itemClick = (item) => { - classMeet(item.id).then(res => { - if (window.webBridge) { - window.webBridge.openNewWindow(JSON.stringify(item)); - } else { - let path = router.resolve({ - path: "/meet", - query: { meetName: item.meetName, id: item.id, userName: userInfo.value?.realName || '', userCode: userInfo.value?.phone || '' } - }); - window.open(path.href, '_blank'); - } - }).catch(err => { - - }); - -} - + classMeet(item.id) + .then((res) => { + if (window.webBridge) { + window.webBridge.openNewWindow(JSON.stringify(item)); + } else { + let path = router.resolve({ + path: "/meet", + query: { + meetName: item.meetName, + id: item.id, + userName: userInfo.value?.realName + "_" + item.id || "", + userCode: userInfo.value?.phone + "_" + item.id || "", + }, + }); + window.open(path.href, "_blank"); + } + }) + .catch((err) => {}); +}; </script> <style lang="scss" scoped> diff --git a/vite.config.js b/vite.config.js index 8d10ea8..91c5690 100644 --- a/vite.config.js +++ b/vite.config.js @@ -30,7 +30,7 @@ proxy: { '/api': { // target: 'http://192.168.3.88:8000', - target: 'http://localhost:8000', + target: 'http://42.193.1.25:8000', changeOrigin: true, } } -- Gitblit v1.8.0