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