|
|
@@ -67,9 +67,9 @@
|
|
|
|
|
|
<!-- 当选中作业时显示内容 -->
|
|
|
<div v-else class="assignment-content">
|
|
|
- <!-- 右上角数据看板按钮 -->
|
|
|
- <div class="top-actions">
|
|
|
- <el-button type="primary" class="dashboard-button">数据看板</el-button>
|
|
|
+ <!-- 右上角数据看板按钮 - 仅写作类型作业显示 -->
|
|
|
+ <div class="top-actions" v-if="isWritingAssignment">
|
|
|
+ <el-button type="primary" class="dashboard-button" @click="goToBehaviorDashboard">数据看板</el-button>
|
|
|
</div>
|
|
|
|
|
|
<!-- 统计卡片区域 -->
|
|
|
@@ -695,6 +695,27 @@
|
|
|
return ''
|
|
|
}
|
|
|
|
|
|
+ // 判断当前选中的作业是否为写作类型
|
|
|
+ const isWritingAssignment = computed(() => {
|
|
|
+ if (!selectedAssignment.value) return false
|
|
|
+ const type = selectedAssignment.value.type
|
|
|
+ return type === 'WRITING' || type === '写作'
|
|
|
+ })
|
|
|
+
|
|
|
+ // 跳转到行为数据分析页面
|
|
|
+ const goToBehaviorDashboard = () => {
|
|
|
+ if (selectedAssignment.value) {
|
|
|
+ router.push({
|
|
|
+ path: '/home/behavior/main',
|
|
|
+ query: {
|
|
|
+ courseId: selectedAssignment.value.courseId,
|
|
|
+ assignmentId: selectedAssignment.value.assignmentId,
|
|
|
+ assignmentName: selectedAssignment.value.assignmentName
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 处理批改操作
|
|
|
const handleCorrect = (row: StudentAssignmentStatusDTO) => {
|
|
|
console.log('批改学生作业:', row)
|
|
|
@@ -961,9 +982,10 @@ export default {
|
|
|
}
|
|
|
|
|
|
.left-sidebar {
|
|
|
- width: 280px;
|
|
|
- background-color: #F0F2F5;
|
|
|
- border-right: 1px solid #e8e8e8;
|
|
|
+ width: 250px;
|
|
|
+ min-width: 250px;
|
|
|
+ max-width: 250px;
|
|
|
+ background: linear-gradient(180deg, #89CDF1 0%, #1890FF 100%);
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
height: 100vh;
|
|
|
@@ -972,8 +994,8 @@ export default {
|
|
|
|
|
|
.platform-header {
|
|
|
height: 60px;
|
|
|
- background-color: #F0F2F5;
|
|
|
- border-bottom: 1px solid #e8e8e8;
|
|
|
+ background-color: transparent;
|
|
|
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
@@ -981,16 +1003,16 @@ export default {
|
|
|
}
|
|
|
|
|
|
.platform-name {
|
|
|
- color: #606266;
|
|
|
- font-size: 24px;
|
|
|
- font-weight: 400;
|
|
|
+ color: white;
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: 600;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
}
|
|
|
|
|
|
.search-section {
|
|
|
padding: 16px 20px;
|
|
|
- border-bottom: 1px solid #e8e8e8;
|
|
|
- background-color: #F0F2F5;
|
|
|
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
+ background-color: transparent;
|
|
|
}
|
|
|
|
|
|
.search-input-container {
|
|
|
@@ -998,12 +1020,13 @@ export default {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
|
|
|
.search-icon {
|
|
|
position: absolute;
|
|
|
left: 12px;
|
|
|
- color: #999;
|
|
|
+ color: rgba(255, 255, 255, 0.7);
|
|
|
font-size: 16px;
|
|
|
}
|
|
|
|
|
|
@@ -1011,24 +1034,30 @@ export default {
|
|
|
width: 100%;
|
|
|
height: 36px;
|
|
|
padding: 0 12px 0 36px;
|
|
|
- border: 1px solid #d9d9d9;
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.3);
|
|
|
border-radius: 6px;
|
|
|
font-size: 14px;
|
|
|
outline: none;
|
|
|
- background-color: #FFFFFF;
|
|
|
+ background-color: rgba(255, 255, 255, 0.15);
|
|
|
+ color: white;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.search-input::placeholder {
|
|
|
+ color: rgba(255, 255, 255, 0.7);
|
|
|
}
|
|
|
|
|
|
.search-input:focus {
|
|
|
- border-color: #1890ff;
|
|
|
- background-color: white;
|
|
|
+ border-color: rgba(255, 255, 255, 0.5);
|
|
|
+ background-color: rgba(255, 255, 255, 0.2);
|
|
|
}
|
|
|
|
|
|
.menu-section {
|
|
|
flex: 1;
|
|
|
overflow-y: auto;
|
|
|
overflow-x: hidden; /* 防止水平滚动 */
|
|
|
- padding: 0;
|
|
|
+ padding: 0 0;
|
|
|
height: calc(100vh - 120px);
|
|
|
width: 100%; /* 确保宽度不超过父容器 */
|
|
|
}
|
|
|
@@ -1040,21 +1069,25 @@ export default {
|
|
|
.course-header {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- padding: 12px 20px;
|
|
|
+ padding: 15px 25px;
|
|
|
cursor: pointer;
|
|
|
- transition: background-color 0.2s;
|
|
|
+ transition: all 0.3s ease;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
- background-color: #F0F2F5;
|
|
|
- color: #606266;
|
|
|
+ background-color: transparent;
|
|
|
+ color: white;
|
|
|
+ border-left: 4px solid transparent;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 500;
|
|
|
}
|
|
|
|
|
|
.course-header:hover {
|
|
|
- background-color: #FFFFFF;
|
|
|
+ background-color: rgba(255, 255, 255, 0.1);
|
|
|
+ border-left-color: white;
|
|
|
}
|
|
|
|
|
|
.expand-icon {
|
|
|
font-size: 12px;
|
|
|
- color: #666;
|
|
|
+ color: white;
|
|
|
margin-right: 8px;
|
|
|
transition: transform 0.2s;
|
|
|
}
|
|
|
@@ -1065,59 +1098,67 @@ export default {
|
|
|
|
|
|
.course-icon {
|
|
|
font-size: 16px;
|
|
|
- color: #666;
|
|
|
+ color: white;
|
|
|
margin-right: 8px;
|
|
|
}
|
|
|
|
|
|
.course-name {
|
|
|
font-size: 14px;
|
|
|
- color: #606266;
|
|
|
+ color: white;
|
|
|
font-weight: 500;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
}
|
|
|
|
|
|
.assignment-list {
|
|
|
- background-color: #fafafa;
|
|
|
+ background-color: transparent;
|
|
|
}
|
|
|
|
|
|
.assignment-item {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- padding: 8px 20px 8px 48px;
|
|
|
+ padding: 12px 25px 12px 48px;
|
|
|
cursor: pointer;
|
|
|
- transition: background-color 0.2s;
|
|
|
+ transition: all 0.3s ease;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
- background-color: #F0F2F5;
|
|
|
- color: #606266;
|
|
|
+ background-color: transparent;
|
|
|
+ color: rgba(255, 255, 255, 0.85);
|
|
|
white-space: nowrap; /* 防止文本换行 */
|
|
|
overflow: hidden; /* 隐藏超出部分 */
|
|
|
text-overflow: ellipsis; /* 显示省略号 */
|
|
|
+ border-left: 4px solid transparent;
|
|
|
+ font-size: 13px;
|
|
|
}
|
|
|
|
|
|
.assignment-item:hover {
|
|
|
- background-color: #FFFFFF;
|
|
|
+ background-color: rgba(255, 255, 255, 0.1);
|
|
|
+ border-left-color: white;
|
|
|
+ color: white;
|
|
|
}
|
|
|
|
|
|
.assignment-item.active {
|
|
|
- background-color: rgba(112, 187, 219, 0.50);
|
|
|
- border-radius: 10px;
|
|
|
- opacity: 0.8;
|
|
|
+ background-color: rgba(255, 255, 255, 0.2);
|
|
|
+ border-left-color: white;
|
|
|
+ color: white;
|
|
|
+ font-weight: 600;
|
|
|
}
|
|
|
|
|
|
.assignment-icon {
|
|
|
font-size: 14px;
|
|
|
- color: #606266;
|
|
|
+ color: rgba(255, 255, 255, 0.85);
|
|
|
margin-right: 8px;
|
|
|
}
|
|
|
|
|
|
.assignment-icon.active-icon {
|
|
|
- color: #435FE9;
|
|
|
+ color: white;
|
|
|
}
|
|
|
|
|
|
.assignment-name {
|
|
|
font-size: 13px;
|
|
|
font-weight: 500;
|
|
|
- color: #606266;
|
|
|
+ color: inherit;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
flex: 1;
|
|
|
overflow: hidden;
|
|
|
@@ -1126,8 +1167,8 @@ export default {
|
|
|
}
|
|
|
|
|
|
.assignment-item.active .assignment-name {
|
|
|
- color: #435FE9;
|
|
|
- font-weight: 500;
|
|
|
+ color: white;
|
|
|
+ font-weight: 600;
|
|
|
}
|
|
|
|
|
|
/* 加载状态样式 */
|
|
|
@@ -1139,7 +1180,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
.loading-text {
|
|
|
- color: #606266;
|
|
|
+ color: white;
|
|
|
font-size: 14px;
|
|
|
font-family: "Noto Sans SC", sans-serif;
|
|
|
}
|