-
{{ currentAnnouncementDetail.projectName || '暂无项目名称' }} - {{ currentAnnouncementDetail.submitterName || '暂无提交人' }} - 审核通过
+
+ {{ currentAnnouncementDetail.projectName || "暂无项目名称" }} -
+ {{ currentAnnouncementDetail.submitterName || "暂无提交人" }} -
+ 审核通过
+
@@ -349,14 +595,14 @@
display: flex;
column-gap: 15px;
- >div {
+ > div {
height: 380px;
background-color: white;
border-radius: 15px;
}
- >div:nth-child(1):after {
- content: '个人中心';
+ > div:nth-child(1):after {
+ content: "个人中心";
display: block;
background-color: rgb(113, 173, 220);
color: white;
@@ -368,7 +614,7 @@
right: 0px;
}
- >div:nth-child(1) {
+ > div:nth-child(1) {
position: relative;
padding: 10px;
box-sizing: border-box;
@@ -399,23 +645,22 @@
top: 75%;
transform: translateY(-50%);
- >div {
+ > div {
padding-left: 10px;
display: flex;
font-size: 14px;
margin-bottom: 25px;
- >div:nth-child(1) {
- color: rgba(255, 255, 255, 0.80);
+ > div:nth-child(1) {
+ color: rgba(255, 255, 255, 0.8);
line-height: 20px;
}
- >div:nth-child(2) {
+ > div:nth-child(2) {
padding-left: 10px;
color: rgb(255, 255, 255);
line-height: 20px;
-
}
}
}
@@ -430,22 +675,21 @@
padding: 0px 20px;
box-sizing: border-box;
- >div {
+ > div {
display: flex;
justify-content: space-between;
white-space: nowrap;
width: 100%;
- >div:nth-child(1) {
+ > div:nth-child(1) {
height: 30px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
line-height: 30px;
-
}
- >div:nth-child(2) {
+ > div:nth-child(2) {
text-align: right;
line-height: 30px;
}
@@ -453,21 +697,21 @@
}
// head center
- >div:nth-child(2) {
+ > div:nth-child(2) {
box-sizing: border-box;
width: 33.3%;
- >div:nth-child(1) {
+ > div:nth-child(1) {
border-bottom: solid 1px #d0d0d0;
}
}
- >div:nth-child(3) {
+ > div:nth-child(3) {
box-sizing: border-box;
width: 33.3%;
padding-bottom: 10px;
- >div:nth-child(1) {
+ > div:nth-child(1) {
border-bottom: solid 1px #d0d0d0;
}
}
@@ -480,14 +724,14 @@
min-height: 46vh;
- >div {
+ > div {
border-radius: 15px;
background-color: white;
box-sizing: border-box;
}
// bottom content
- >div:nth-child(1) {
+ > div:nth-child(1) {
width: 32.8%;
.content {
@@ -500,30 +744,29 @@
justify-content: start;
flex-wrap: wrap;
- >div {
+ > div {
width: 50px;
margin-top: 15px;
cursor: pointer;
font-size: 10px;
text-align: center;
- >div:nth-child(1) {
+ > div:nth-child(1) {
img {
width: 50px;
height: 50px;
}
}
- >div:nth-child(2) {
+ > div:nth-child(2) {
margin-top: 5px;
text-align: center;
}
}
}
-
}
- >div:nth-child(2) {
+ > div:nth-child(2) {
width: 48.3%;
flex: 1;
box-sizing: border-box;
@@ -535,20 +778,19 @@
}
}
-
.home-page-title {
display: flex;
justify-content: space-between;
padding: 20px;
- >div:nth-child(1) {
+ > div:nth-child(1) {
font-size: 17px;
font-weight: bold;
position: relative;
z-index: 3;
}
- >div:nth-child(2) {
+ > div:nth-child(2) {
padding-top: 5px;
color: #757575;
font-size: 15px;
@@ -559,10 +801,14 @@
}
}
- >div:nth-child(1):after {
- content: ' ';
+ > div:nth-child(1):after {
+ content: " ";
display: block;
- background: linear-gradient(to right, rgb(163, 201, 233), rgb(50, 137, 205));
+ background: linear-gradient(
+ to right,
+ rgb(163, 201, 233),
+ rgb(50, 137, 205)
+ );
height: 6px;
width: 100%;
position: absolute;
@@ -574,10 +820,106 @@
.going {
cursor: pointer;
transition: all 0.3s;
+ color: #1565c0;
+ font-weight: 500;
}
.going:hover {
opacity: 0.8;
+ color: #0d47a1;
+ text-decoration: underline;
+}
+
+/* 表头样式 */
+.table-header {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 6px;
+ font-weight: 600;
+ color: #333;
+}
+
+.header-icon {
+ width: 16px;
+ height: 16px;
+}
+
+/* 数量容器样式 */
+.quantity-container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 6px;
+ min-height: 44px;
+}
+
+/* 圆形数量样式 */
+.quantity-circle {
+ width: 32px;
+ height: 32px;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: white;
+ font-weight: bold;
+ font-size: 14px;
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.quantity-circle.zero-quantity {
+ background-color: rgba(115, 209, 61, 0.8);
+ box-shadow: 0 2px 4px rgba(115, 209, 61, 0.25);
+}
+
+.quantity-circle.has-quantity {
+ background-color: rgba(255, 197, 61, 0.8);
+ box-shadow: 0 2px 4px rgba(255, 197, 61, 0.25);
+}
+
+.quantity-circle:hover {
+ transform: scale(1.05);
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+}
+
+/* 蓝色按钮样式 */
+.action-button {
+ background: linear-gradient(
+ 135deg,
+ rgba(64, 169, 255, 0.85) 0%,
+ rgba(24, 144, 255, 0.85) 100%
+ );
+ color: white;
+ border: none;
+ padding: 8px 16px;
+ border-radius: 6px;
+ font-weight: 500;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ font-size: 13px;
+}
+
+.action-button:hover {
+ background: linear-gradient(
+ 135deg,
+ rgba(105, 192, 255, 0.9) 0%,
+ rgba(64, 169, 255, 0.9) 100%
+ );
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(64, 169, 255, 0.25);
+}
+
+.action-button:active {
+ transform: translateY(0);
+ box-shadow: 0 2px 6px rgba(64, 169, 255, 0.15);
+}
+
+/* 项目名称加粗样式 */
+.project-name-bold {
+ font-weight: bold;
+ color: #333;
+ font-size: 14px;
}
/* 对话框样式 */
@@ -596,7 +938,7 @@
transition: all 0.3s ease;
padding: 4px 8px;
border-radius: 4px;
-
+
&:hover {
background-color: rgba(0, 0, 0, 0.05);
}
@@ -649,7 +991,7 @@
padding: 4px 8px;
border-radius: 4px;
margin-bottom: 2px;
-
+
&:hover {
background-color: rgba(0, 0, 0, 0.05);
transform: translateX(2px);
@@ -680,7 +1022,7 @@
max-height: 70vh;
overflow-y: auto;
animation: slideInScale 0.3s ease-out;
-
+
.detail-modal-header {
background: white;
color: #333;
@@ -691,7 +1033,7 @@
justify-content: space-between;
align-items: center;
position: relative;
-
+
h4 {
margin: 0;
font-size: 18px;
@@ -707,7 +1049,7 @@
color: #666;
margin-top: 8px;
}
-
+
.detail-close-btn {
background: none;
border: none;
@@ -722,17 +1064,17 @@
justify-content: center;
border-radius: 50%;
transition: all 0.3s;
-
+
&:hover {
background-color: #f5f5f5;
color: #333;
}
}
}
-
+
.detail-modal-body {
padding: 24px;
- padding-top: 40px; // 为标题下方的时间留出空间
+ padding-top: 40px; // 为标题下方的时间留出空间
.detail-content-section {
.detail-content-text {
font-size: 16px;
@@ -790,10 +1132,17 @@ import { isEmpty } from "@/api/helpFunc";
import { checkPermi } from "@/utils/permission";
export default {
components: {
- JwcUndo, XwUndo, FdyUndo, StuUndo,
+ JwcUndo,
+ XwUndo,
+ FdyUndo,
+ StuUndo,
jwcBottom,
- ZzbldQgzx, ZzbQgzx, ZdlsQgzx, FdyQgzx, DeptQgzx,
- sjUndo
+ ZzbldQgzx,
+ ZzbQgzx,
+ ZdlsQgzx,
+ FdyQgzx,
+ DeptQgzx,
+ sjUndo,
},
created() {
this.getUser();
@@ -801,63 +1150,82 @@ export default {
this.listMyMsg();
this.avatar = store.getters.avatar;
-
},
mounted() {
- setTimeout(() => {
- const listDataTask = [
- ];
- if (!isEmpty(this.$refs.childOne) && this.$refs.childOne.hasPrem) {
- listDataTask.push(...this.$refs.childOne.taskList)
- }
- if (!isEmpty(this.$refs.child2) && this.$refs.child2.hasPrem) {
- listDataTask.push(...this.$refs.child2.taskList)
- }
- if (!isEmpty(this.$refs.child3) && this.$refs.child3.hasPrem) {
- listDataTask.push(...this.$refs.child3.taskList)
- }
- if (!isEmpty(this.$refs.child4) && this.$refs.child4.hasPrem) {
- listDataTask.push(...this.$refs.child4.taskList)
- }
- if (!isEmpty(this.$refs.child5) && this.$refs.child5.hasPrem) {
- listDataTask.push(...this.$refs.child5.taskList)
- }
- if (!isEmpty(this.$refs.child6) && this.$refs.child6.hasPrem) {
- listDataTask.push(...this.$refs.child6.taskList)
- }
- if (!isEmpty(this.$refs.child7) && this.$refs.child7.hasPrem) {
- listDataTask.push(...this.$refs.child7.taskList)
- }
- if (!isEmpty(this.$refs.child8) && this.$refs.child8.hasPrem) {
- listDataTask.push(...this.$refs.child8.taskList)
- }
- if (!isEmpty(this.$refs.child9) && this.$refs.child9.hasPrem) {
- listDataTask.push(...this.$refs.child9.taskList)
- }
- if (!isEmpty(this.$refs.child10) && this.$refs.child10.hasPrem) {
- listDataTask.push(...this.$refs.child10.taskList)
- }
- if (!isEmpty(this.$refs.child11) && this.$refs.child11.hasPrem) {
- listDataTask.push(...this.$refs.child11.taskList)
- }
-
- this.listData = listDataTask;
- this.listData.sort((a, b) => b.value - a.value);
- }, 500)
+ this.$nextTick(() => {
+ this.loadTaskData();
+ });
},
methods: {
+ // 加载代办数据的方法
+ loadTaskData(retryCount = 0) {
+ const maxRetries = 10; // 最大重试次数
+ const retryDelay = 100; // 重试间隔(ms)
+
+ try {
+ const listDataTask = [];
+ let allComponentsReady = true;
+
+ // 检查所有子组件是否已准备就绪
+ const childRefs = [
+ "childOne",
+ "child2",
+ "child3",
+ "child4",
+ "child5",
+ "child6",
+ "child7",
+ "child8",
+ "child9",
+ "child10",
+ "child11",
+ ];
+
+ for (const refName of childRefs) {
+ const childRef = this.$refs[refName];
+ if (!isEmpty(childRef)) {
+ if (childRef.hasPrem && childRef.taskList) {
+ listDataTask.push(...childRef.taskList);
+ }
+ } else {
+ // 如果某个组件还未准备好,标记为未就绪
+ allComponentsReady = false;
+ }
+ }
+
+ if (allComponentsReady || retryCount >= maxRetries) {
+ // 所有组件都准备好了,或者已达到最大重试次数
+ this.listData = listDataTask;
+ this.listData.sort((a, b) => b.value - a.value);
+ console.log("代办数据加载完成,共", this.listData.length, "条数据");
+ } else {
+ // 还有组件未准备好,延迟重试
+ setTimeout(() => {
+ this.loadTaskData(retryCount + 1);
+ }, retryDelay);
+ }
+ } catch (error) {
+ console.error("加载代办数据时出错:", error);
+ // 出错时也尝试重试
+ if (retryCount < maxRetries) {
+ setTimeout(() => {
+ this.loadTaskData(retryCount + 1);
+ }, retryDelay);
+ }
+ }
+ },
going(url) {
this.$router.push(url);
},
cutString(text) {
- return text.split('·')
+ return text.split("·");
},
formatTime(date) {
- const dateTime = new Date(date)
- return new Intl.DateTimeFormat('en-CA').format(dateTime); // 'en-CA' 默认格式是 yyyy-mm-dd
+ const dateTime = new Date(date);
+ return new Intl.DateTimeFormat("en-CA").format(dateTime); // 'en-CA' 默认格式是 yyyy-mm-dd
},
getUser() {
- getUserProfile().then(response => {
+ getUserProfile().then((response) => {
this.user = response.data;
this.roleGroup = response.roleGroup;
this.postGroup = response.postGroup;
@@ -883,7 +1251,7 @@ export default {
// 获取当前登录用户的ID
const userId = this.user.userId;
console.log("userId", userId);
- let res = await listMsg({receiver: userId});
+ let res = await listMsg({ receiver: userId });
if (res.rows.length > 0) {
this.have_msg = true;
this.msg_list = [...res.rows];
@@ -899,7 +1267,6 @@ export default {
viewMessageDetail(row) {
this.currentMessageDetail = row;
this.messageDetailVisible = true;
-
},
// 显示消息详情 - 从首页点击进入
@@ -969,36 +1336,44 @@ export default {
currentMessageIndex: -1,
currentAnnouncementIndex: -1,
- tableData: [{
- date: '2016-05-03',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }, {
- date: '2016-05-02',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }, {
- date: '2016-05-04',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }, {
- date: '2016-05-01',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }, {
- date: '2016-05-08',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }, {
- date: '2016-05-06',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }, {
- date: '2016-05-07',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄'
- }]
- }
- }
-}
-
\ No newline at end of file
+ tableData: [
+ {
+ date: "2016-05-03",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ {
+ date: "2016-05-02",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ {
+ date: "2016-05-04",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ {
+ date: "2016-05-01",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ {
+ date: "2016-05-08",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ {
+ date: "2016-05-06",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ {
+ date: "2016-05-07",
+ name: "王小虎",
+ address: "上海市普陀区金沙江路 1518 弄",
+ },
+ ],
+ };
+ },
+};
+
diff --git a/src/views/aitutor/chathistory/index.vue b/src/views/aitutor/chathistory/index.vue
index 1cf4cf4..2222a3d 100644
--- a/src/views/aitutor/chathistory/index.vue
+++ b/src/views/aitutor/chathistory/index.vue
@@ -1,273 +1,920 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 搜索
- 查询会话
- 重置
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.label }}
+ ({{ data.children.length }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.dept.deptName }}
+
+
+
+
+ {{ scope.row.srsMajors.majorName }}
+
+
+
+
+ {{ scope.row.srsClass.className }}
+
+
+
+
+
+
+
+
+
+
+ 查看会话列表
+
+
+
-
-
-
-
-
-
-
-
- {{ scope.row.type === 'user' ? '用户' : 'AI' }}
-
-
-
-
-
-
-
-
-
-
- 点赞
- 点踩
- 无反馈
-
-
-
-
-
- 查看详情
-
-
-
+
-
-
\ No newline at end of file
diff --git a/src/views/aitutor/chattest/index.vue b/src/views/aitutor/chattest/index.vue
deleted file mode 100644
index e9f8884..0000000
--- a/src/views/aitutor/chattest/index.vue
+++ /dev/null
@@ -1,671 +0,0 @@
-
-
-
-
-
AI 聊天助手
-
-
- {{ showConversationList ? '隐藏会话列表' : '显示会话列表' }}
-
- 获取历史消息
- 新建会话
- 获取反馈列表
-
-
-
-
-
会话列表
-
-
-
{{ conv.title || '未命名会话' }}
-
{{ formatDate(conv.updated_at) }}
-
{{ conv.preview || '无消息' }}
-
-
-
-
获取历史消息
-
-
-
-
-
U
-
{{ msg.content }}
-
-
-
-
-
AI
-
-
-
-
-
引用来源:
-
- -
- {{ ref.source }}:
- {{ ref.content }}
-
-
-
-
-
-
- 点赞
- 点踩
-
-
-
-
-
-
-
-
-
-
- 发送
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/views/aitutor/chatwarning/index.vue b/src/views/aitutor/chatwarning/index.vue
new file mode 100644
index 0000000..38c3fc8
--- /dev/null
+++ b/src/views/aitutor/chatwarning/index.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+ {{ scope.row.rating }}
+
+
+
+
+
+ 查看详情
+
+
+
+
+
+
+
+
学生信息
+
学号:{{ selectedStudent.studentId }}
+
姓名:{{ selectedStudent.studentName }}
+
班级:{{ selectedStudent.className }}
+
辅导员:{{ selectedStudent.counselor }}
+
+
历史评估记录
+
+
+
+
+ {{ scope.row.rating }}
+
+
+
+
+
+ {{ parseTime(scope.row.createdTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/comprehensive/identifytexs/index.vue b/src/views/comprehensive/identifytexs/index.vue
index 241d272..51d69a5 100644
--- a/src/views/comprehensive/identifytexs/index.vue
+++ b/src/views/comprehensive/identifytexs/index.vue
@@ -2,27 +2,12 @@
-
+
-
-
-
搜索
重置
@@ -31,53 +16,21 @@
- 导入
+ 导入
- 新增
+ 新增
-
- 删除
+ 删除
+
+
+ 批量打印
-
-
@@ -90,33 +43,18 @@
- 修改
- 删除
- 打印
+ 修改
+ 删除
+ 打印
-
-
+
+
@@ -144,170 +82,158 @@
{{ formatDate(form.birthData) }}
-
+
- 第一学年
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ getYearNameById(form.yearOne.stuYear) }}
-
+
+ 第一学年
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getYearNameById(form.yearOne.stuYear) }}
+
- 第二学年
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ getYearNameById(form.yearTwo.stuYear) }}
-
+
+ 第二学年
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getYearNameById(form.yearTwo.stuYear) }}
+
- 第三学年
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ getYearNameById(form.yearThree.stuYear) }}
-
+
+ 第三学年
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getYearNameById(form.yearThree.stuYear) }}
+
-
-