feat:作业模块对接
This commit is contained in:
parent
5455490811
commit
412a796ecb
@ -1,15 +1,58 @@
|
||||
// 学员中心相关API接口
|
||||
import { ApiRequest } from '../request'
|
||||
|
||||
import { ApiRequest } from "../request";
|
||||
|
||||
// 活动相关API
|
||||
export class ActivityListApi {
|
||||
static async getActivityList(): Promise<any> {
|
||||
return ApiRequest.get('/aiol/aiolActivity/list')
|
||||
return ApiRequest.get("/aiol/aiolActivity/list");
|
||||
}
|
||||
}
|
||||
// 用户信息相关API
|
||||
export class UserInfoApi {
|
||||
static async editUserInfo(data: any): Promise<any> {
|
||||
return ApiRequest.post("/aiol/aiolUser/edit_profile", data);
|
||||
}
|
||||
}
|
||||
|
||||
export class UserInfoApi {
|
||||
static async editUserInfo(data: any): Promise<any> {
|
||||
return ApiRequest.post('/aiol/aiolUser/edit_profile', data)
|
||||
// 作业相关API
|
||||
export class HomeworkApi {
|
||||
static async getHomeworkList(params: { type: number }): Promise<any> {
|
||||
try {
|
||||
return await ApiRequest.get("/aiol/aiolHomework/myHomeworkList", params);
|
||||
} catch (error) {
|
||||
console.error("Error fetching homework list:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
static async submitHomework(data: any): Promise<any> {
|
||||
try {
|
||||
return await ApiRequest.post("/aiol/aiolHomework/submit", data);
|
||||
} catch (error) {
|
||||
console.error("Error submitting homework:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 考试相关API
|
||||
export class ExamApi {
|
||||
static async getExamList(params: { type: number }): Promise<any> {
|
||||
try {
|
||||
return await ApiRequest.get("/aiol/aiolExam/myExamList", params);
|
||||
} catch (error) {
|
||||
console.error("Error fetching exam list:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 练习相关API
|
||||
export class PracticeApi {
|
||||
static async getExamList(params: { type: number }): Promise<any> {
|
||||
try {
|
||||
return await ApiRequest.get("/aiol/aiolExam//myPracticeList", params);
|
||||
} catch (error) {
|
||||
console.error("Error fetching practice list:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1454
src/components/profile/HomeworkContent.vue
Normal file
1454
src/components/profile/HomeworkContent.vue
Normal file
File diff suppressed because it is too large
Load Diff
@ -134,269 +134,7 @@
|
||||
|
||||
|
||||
<!-- 作业内容 -->
|
||||
<div v-else-if="isHomeworkTab" class="homework-content">
|
||||
<!-- 作业筛选标签 -->
|
||||
<div v-if="!showDraftBoxView" class="text-wrapper_1 flex-row">
|
||||
<span class="text_12" :class="{ active: activeHomeworkTab === 'all' }"
|
||||
@click="handleHomeworkTabChange('all')">全部作业</span>
|
||||
<span class="text_13" :class="{ active: activeHomeworkTab === 'pending' }"
|
||||
@click="handleHomeworkTabChange('pending')">未完成</span>
|
||||
<span class="text_14" :class="{ active: activeHomeworkTab === 'completed' }"
|
||||
@click="handleHomeworkTabChange('completed')">已完成</span>
|
||||
<span class="draftbox" @click="showDraftBox">
|
||||
<img src="/images/auth/mti.png" alt="">
|
||||
<span>草稿箱</span>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 分割线 -->
|
||||
<div v-if="!showDraftBoxView" class="course-divider"></div>
|
||||
|
||||
<!-- 面包屑 -->
|
||||
<!-- <div class="breadcrumb-wrapper flex-row">
|
||||
<span class="text_15">全部作业</span>
|
||||
<span class="text_15">></span>
|
||||
<span class="text_15 homework">作业名称</span>
|
||||
</div> -->
|
||||
|
||||
<!-- 作业详情视图 -->
|
||||
<div v-if="showDetailView && detailAssignment">
|
||||
<!-- <div class="detail-header">
|
||||
<div class="breadcrumb-nav">
|
||||
<span class="breadcrumb-item" @click="backToAssignmentList">全部作业</span>
|
||||
<span class="breadcrumb-separator">></span>
|
||||
<span class="breadcrumb-current">作业名称</span>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="group_11">
|
||||
<!-- 头部信息 -->
|
||||
<div class="box_5">
|
||||
<div class="image-text_2">
|
||||
<div class="avatar-line"></div>
|
||||
<img :src="detailAssignment.teacherAvatar" alt="教师头像" class="image_22" />
|
||||
<div class="text-group_3">
|
||||
<span class="text_30">{{ detailAssignment.teacherName }}</span>
|
||||
<span class="text_31">{{ detailAssignment.assignTime }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="text_32">
|
||||
<img v-if="detailAssignment.status === '已提交'" src="/images/profile/55.png" alt="">
|
||||
<span :style="{
|
||||
color: detailAssignment.status === '未完成' || detailAssignment.status === '待提交' ? '#FF560C' : '#999999',
|
||||
fontSize: '14px'
|
||||
}">
|
||||
{{ detailAssignment.status === '未完成' || detailAssignment.status === '待提交' ? '未完成' :
|
||||
(detailAssignment.status === '已完成' ? '已完成' : '541人已完成') }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- 作业内容 -->
|
||||
<div class="text-group_4">
|
||||
<div class="course-divider"></div>
|
||||
<span class="text_33">{{ detailAssignment.title }}</span>
|
||||
<div class="description-container">
|
||||
<span class="text_34 description-full-view">
|
||||
{{ detailAssignment.description }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 作业附件区域 -->
|
||||
<div class="box_6">
|
||||
<div class="attachment-images">
|
||||
<img v-for="(_, index) in detailAssignment.attachments.slice(0, 5)" :key="index"
|
||||
src="/images/traings/traing1.png" :class="['image_' + (24 + index)]" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="files-container">
|
||||
<div class="file-items">
|
||||
<img src="/images/auth/file.png" alt="" class="files-icon">
|
||||
<span>文件名称.PDF</span>
|
||||
<img src="/images/auth/download.png" alt="" class="files-icon">
|
||||
</div>
|
||||
<div class="file-items">
|
||||
<img src="/images/auth/file.png" alt="" class="files-icon">
|
||||
<span>文件名称.PDF</span>
|
||||
<img src="/images/auth/download.png" alt="" class="files-icon">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="course-name">这里是课程名称!!! <span>查看详情></span></div>
|
||||
|
||||
|
||||
<!-- 作业按钮区域 -->
|
||||
<div class="assignment-buttons">
|
||||
<template v-if="detailAssignment.status === '未完成' || detailAssignment.status === '待提交'">
|
||||
<div class="text-wrapper_8 submit-button" @click="showUploadFromDetail">
|
||||
<span class="">上传作业</span>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 草稿箱视图 -->
|
||||
<div v-if="showDraftBoxView && draftAssignment">
|
||||
<div class="detail-header">
|
||||
<div class="breadcrumb-nav">
|
||||
<span class="breadcrumb-item" @click="backFromDraftBox">全部作业</span>
|
||||
<span class="breadcrumb-separator">></span>
|
||||
<span class="breadcrumb-current">草稿箱</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="group_11">
|
||||
<!-- 头部信息 -->
|
||||
<div class="box_5">
|
||||
<div class="image-text_2">
|
||||
<div class="avatar-line"></div>
|
||||
<img :src="draftAssignment.teacherAvatar" alt="教师头像" class="image_22" />
|
||||
<div class="text-group_3">
|
||||
<span class="text_30">{{ draftAssignment.teacherName }}</span>
|
||||
<span class="text_31">{{ draftAssignment.assignTime }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text_32">
|
||||
<img v-if="draftAssignment.status === '已提交'" src="/images/profile/55.png" alt="">
|
||||
<span :style="{
|
||||
color: draftAssignment.status === '未完成' || draftAssignment.status === '待提交' ? '#FF560C' : '#999999',
|
||||
fontSize: '14px'
|
||||
}">
|
||||
{{ draftAssignment.status === '未完成' || draftAssignment.status === '待提交' ? '未完成' :
|
||||
(draftAssignment.status === '已完成' ? '已完成' : '541人已完成') }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- 作业内容 -->
|
||||
<div class="text-group_4">
|
||||
<span class="text_33">{{ draftAssignment.title }}</span>
|
||||
<div class="description-container">
|
||||
<span class="text_34 description-full-view">
|
||||
{{ draftAssignment.description }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 作业附件区域 -->
|
||||
<div class="box_6">
|
||||
<div class="attachment-images">
|
||||
<img v-for="(_, index) in draftAssignment.attachments.slice(0, 5)" :key="index"
|
||||
src="/images/traings/traing1.png" :class="['image_' + (24 + index)]" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="files-container">
|
||||
<div class="file-items">
|
||||
<img src="/images/auth/file.png" alt="" class="files-icon">
|
||||
<span>文件名称.PDF</span>
|
||||
<img src="/images/auth/download.png" alt="" class="files-icon">
|
||||
</div>
|
||||
<div class="file-items">
|
||||
<img src="/images/auth/file.png" alt="" class="files-icon">
|
||||
<span>文件名称.PDF</span>
|
||||
<img src="/images/auth/download.png" alt="" class="files-icon">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="course-name">这里是课程名称!!! <span>查看详情></span></div>
|
||||
|
||||
<!-- 作业按钮区域 -->
|
||||
<div class="assignment-buttons">
|
||||
<div class="text-wrapper_8 submit-button" @click="showUploadModal(draftAssignment)">
|
||||
<span class="text_36">上传作业</span>
|
||||
</div>
|
||||
<div class="text-wrapper_8 anew-button" @click="reEditDraft">
|
||||
<span class="text_36">重新编辑</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 作业列表 -->
|
||||
<div v-else-if="!showDetailView && !showDraftBoxView">
|
||||
<div v-for="assignment in filteredAssignments" :key="assignment.id" class="group_11">
|
||||
<!-- 作业头部信息 -->
|
||||
<div class="box_5">
|
||||
<div class="image-text_2">
|
||||
<div class="avatar-line"></div>
|
||||
<img src="/images/traings/traing1.png" class="image_22" />
|
||||
<div class="text-group_3">
|
||||
<span class="text_30">{{ assignment.teacherName }}</span>
|
||||
<span class="text_31">{{ assignment.assignTime }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text_32">
|
||||
<span :style="{
|
||||
color: assignment.status === '未完成' || assignment.status === '待提交' ? '#FF560C' : '#999999',
|
||||
fontSize: '14px'
|
||||
}">
|
||||
{{ assignment.status === '未完成' || assignment.status === '待提交' ? '未完成' : '已完成' }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 作业内容 -->
|
||||
<div class="text-group_4">
|
||||
<!-- 分割线 -->
|
||||
<div class="course-divider"></div>
|
||||
|
||||
<span class="text_33">{{ assignment.title }}</span>
|
||||
<div class="description-container">
|
||||
<span class="text_34 text-truncated">
|
||||
{{ assignment.description }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 作业附件区域 -->
|
||||
<div class="box_6">
|
||||
|
||||
|
||||
<!-- 附件图片列表 -->
|
||||
<div class="attachment-images">
|
||||
<img v-for="(_, index) in assignment.attachments.slice(0, 5)" :key="index"
|
||||
src="/images/traings/traing1.png" :class="['image_' + (24 + index)]" />
|
||||
</div>
|
||||
|
||||
<div class="attachment-images attachment-number-container">
|
||||
<img src="/images/profile/55.png" alt="" class="attachment-number-icon">
|
||||
<span class="attachment-number-text">541人已完成</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 作业按钮区域 -->
|
||||
<div class="assignment-buttons">
|
||||
<!-- 未完成状态显示两个按钮 -->
|
||||
<template v-if="assignment.status === '未完成' || assignment.status === '待提交'">
|
||||
<div class="text-wrapper_8 view-button" @click="showUploadModal(assignment)">
|
||||
<span class="text_36 text-view">上传作业</span>
|
||||
</div>
|
||||
<!-- 查看详细 -->
|
||||
<div class="text-wrapper_8 details-button" @click="viewAssignmentDetail(assignment)">
|
||||
<span class="text_36">查看详情</span>
|
||||
</div>
|
||||
</template>
|
||||
<!-- 已完成状态只显示一个按钮 -->
|
||||
<template v-else>
|
||||
<div class="text-wrapper_8 details-button" @click="viewAssignmentDetail(assignment)">
|
||||
<span class="text_36">查看详情</span>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<HomeworkContent v-else-if="isHomeworkTab"></HomeworkContent>
|
||||
|
||||
<!-- 考试内容 -->
|
||||
<div v-else-if="isExamTab" class="exam-content">
|
||||
@ -849,58 +587,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 上传作业弹窗 -->
|
||||
<div v-if="showModal" class="custom-modal-overlay" @click="closeUploadModal">
|
||||
<div class="custom-modal" @click.stop>
|
||||
<div v-if="currentAssignment" class="modal-content">
|
||||
<n-form>
|
||||
<div class="form-item">
|
||||
<label class="form-label">标题名称 <span class="required">*</span></label>
|
||||
<input v-model="uploadForm.title" type="text" class="form-input" placeholder="" />
|
||||
</div>
|
||||
<n-form-item label="编辑内容" required>
|
||||
<QuillEditor v-model="uploadForm.content" placeholder="请输入内容" height="400px" />
|
||||
</n-form-item>
|
||||
<!-- <n-form-item label="上传文件" required>
|
||||
<n-upload multiple directory-dnd :custom-request="customRequest" :default-upload="false">
|
||||
<n-button>选择文件</n-button>
|
||||
</n-upload>
|
||||
<div class="file-list" v-if="uploadForm.files.length > 0">
|
||||
<div v-for="(file, index) in uploadForm.files" :key="index" class="file-item">
|
||||
<div class="file-icon">
|
||||
<img src="/images/auth/file.png" alt="文件图标" />
|
||||
</div>
|
||||
<div class="file-info">
|
||||
<div class="file-name">{{ file.name }}</div>
|
||||
<div class="file-size">{{ (file.size / 1024).toFixed(2) }}KB</div>
|
||||
</div>
|
||||
<button class="file-delete" @click="removeFile(index)">🗑️</button>
|
||||
</div>
|
||||
</div>
|
||||
</n-form-item> -->
|
||||
</n-form>
|
||||
<div class="modal-footer">
|
||||
<button type="primary" @click="submitAssignment" style="margin-left: 12px;">确认</button>
|
||||
<button @click="closeUploadModal" class="cancel">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 考试详情页面 -->
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted, onActivated, reactive } from 'vue'
|
||||
import { useMessage, NInput, NForm, NFormItem } from 'naive-ui'
|
||||
import { useMessage, NInput } from 'naive-ui'
|
||||
// import { useI18n } from 'vue-i18n'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import SafeAvatar from '@/components/common/SafeAvatar.vue'
|
||||
import QuillEditor from '@/components/common/QuillEditor.vue'
|
||||
import InstantMessage from '@/components/InstantMessage.vue'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import { MessageApi, type BackendMessageItem } from '@/api'
|
||||
@ -909,6 +604,7 @@ import CourseContent from '@/components/profile/CourseContent.vue'
|
||||
import PracticeContent from '@/components/profile/PracticeContent.vue'
|
||||
import ActivityContent from '@/components/profile/ActivityContent.vue'
|
||||
import MaterialsContent from '@/components/profile/MaterialsContent.vue'
|
||||
import HomeworkContent from '@/components/profile/HomeworkContent.vue'
|
||||
|
||||
// const { t, locale } = useI18n()
|
||||
const router = useRouter()
|
||||
@ -939,20 +635,20 @@ const route = useRoute()
|
||||
// }
|
||||
|
||||
// 定义作业接口
|
||||
interface Assignment {
|
||||
id: number
|
||||
teacherName: string
|
||||
teacherAvatar: string
|
||||
assignTime: string
|
||||
status: string
|
||||
title: string
|
||||
description: string
|
||||
attachments: Array<{
|
||||
icon: string
|
||||
name: string
|
||||
}>
|
||||
mainImage: string
|
||||
}
|
||||
// interface Assignment {
|
||||
// id: number
|
||||
// teacherName: string
|
||||
// teacherAvatar: string
|
||||
// assignTime: string
|
||||
// status: string
|
||||
// title: string
|
||||
// description: string
|
||||
// attachments: Array<{
|
||||
// icon: string
|
||||
// name: string
|
||||
// }>
|
||||
// mainImage: string
|
||||
// }
|
||||
|
||||
// 定义考试接口
|
||||
interface Exam {
|
||||
@ -1087,7 +783,7 @@ const activeTab = ref<TabType>('courses')
|
||||
// const activeCourseTab = ref('all')
|
||||
|
||||
// 作业筛选状态
|
||||
const activeHomeworkTab = ref('all')
|
||||
// const activeHomeworkTab = ref('all')
|
||||
|
||||
// 考试筛选状态
|
||||
const activeExamTab = ref('all')
|
||||
@ -1306,71 +1002,71 @@ const downloadFiles = reactive([
|
||||
// ]
|
||||
|
||||
// 模拟作业数据(基于蓝湖UI设计)
|
||||
const mockAssignments: Assignment[] = [
|
||||
{
|
||||
id: 1,
|
||||
teacherName: '张老师',
|
||||
teacherAvatar: '/images/traings/traing1.png',
|
||||
assignTime: '2024-01-15',
|
||||
status: '待提交',
|
||||
title: '教育心理学课程设计作业',
|
||||
description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
||||
attachments: [
|
||||
{ icon: '/images/traings/traing1.png', name: '作业要求.pdf' },
|
||||
{ icon: '/images/traings/traing1.png', name: '参考资料.docx' },
|
||||
{ icon: '/images/traings/traing1.png', name: '模板文件.pptx' },
|
||||
{ icon: '/images/traings/traing1.png', name: '评分标准.pdf' },
|
||||
{ icon: '/images/traings/traing1.png', name: '案例分析.xlsx' }
|
||||
],
|
||||
mainImage: '/images/traings/traing1.png'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
teacherName: '李老师',
|
||||
teacherAvatar: '/images/traings/traing1.png',
|
||||
assignTime: '2024-01-20',
|
||||
status: '已完成',
|
||||
title: '现代教育技术应用实践报告',
|
||||
description: '结合本学期所学的现代教育技术知识,选择一个具体的教学场景,设计并实施一个融合信息技术的教学活动,撰写实践报告。',
|
||||
attachments: [
|
||||
{ icon: '/images/traings/traing1.png', name: '实践指导.pdf' },
|
||||
{ icon: '/images/traings/traing1.png', name: '报告模板.docx' },
|
||||
{ icon: '/images/traings/traing1.png', name: '技术工具清单.xlsx' },
|
||||
{ icon: '/images/traings/traing1.png', name: '评价量表.pdf' },
|
||||
{ icon: '/images/traings/traing1.png', name: '优秀案例.pptx' }
|
||||
],
|
||||
mainImage: '/images/traings/traing1.png'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
teacherName: '王老师',
|
||||
teacherAvatar: '/images/traings/traing1.png',
|
||||
assignTime: '2024-01-18',
|
||||
status: '未完成',
|
||||
title: '数字化教学资源开发',
|
||||
description: '开发一套完整的数字化教学资源,包括课件制作、视频录制、在线测试设计等,要求体现现代教育技术的应用特点。',
|
||||
attachments: [
|
||||
{ icon: '/images/traings/traing1.png', name: '开发指南.pdf' },
|
||||
{ icon: '/images/traings/traing1.png', name: '技术要求.docx' },
|
||||
{ icon: '/images/traings/traing1.png', name: '示例资源.zip' }
|
||||
],
|
||||
mainImage: '/images/traings/traing1.png'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
teacherName: '刘老师',
|
||||
teacherAvatar: '/images/traings/traing1.png',
|
||||
assignTime: '2024-01-10',
|
||||
status: '已完成',
|
||||
title: '在线教育平台使用报告',
|
||||
description: '体验并分析主流在线教育平台的功能特点,撰写详细的使用报告和改进建议。',
|
||||
attachments: [
|
||||
{ icon: '/images/traings/traing1.png', name: '平台列表.pdf' },
|
||||
{ icon: '/images/traings/traing1.png', name: '评价标准.docx' }
|
||||
],
|
||||
mainImage: '/images/traings/traing1.png'
|
||||
}
|
||||
]
|
||||
// const mockAssignments: Assignment[] = [
|
||||
// {
|
||||
// id: 1,
|
||||
// teacherName: '张老师',
|
||||
// teacherAvatar: '/images/traings/traing1.png',
|
||||
// assignTime: '2024-01-15',
|
||||
// status: '待提交',
|
||||
// title: '教育心理学课程设计作业',
|
||||
// description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
||||
// attachments: [
|
||||
// { icon: '/images/traings/traing1.png', name: '作业要求.pdf' },
|
||||
// { icon: '/images/traings/traing1.png', name: '参考资料.docx' },
|
||||
// { icon: '/images/traings/traing1.png', name: '模板文件.pptx' },
|
||||
// { icon: '/images/traings/traing1.png', name: '评分标准.pdf' },
|
||||
// { icon: '/images/traings/traing1.png', name: '案例分析.xlsx' }
|
||||
// ],
|
||||
// mainImage: '/images/traings/traing1.png'
|
||||
// },
|
||||
// {
|
||||
// id: 2,
|
||||
// teacherName: '李老师',
|
||||
// teacherAvatar: '/images/traings/traing1.png',
|
||||
// assignTime: '2024-01-20',
|
||||
// status: '已完成',
|
||||
// title: '现代教育技术应用实践报告',
|
||||
// description: '结合本学期所学的现代教育技术知识,选择一个具体的教学场景,设计并实施一个融合信息技术的教学活动,撰写实践报告。',
|
||||
// attachments: [
|
||||
// { icon: '/images/traings/traing1.png', name: '实践指导.pdf' },
|
||||
// { icon: '/images/traings/traing1.png', name: '报告模板.docx' },
|
||||
// { icon: '/images/traings/traing1.png', name: '技术工具清单.xlsx' },
|
||||
// { icon: '/images/traings/traing1.png', name: '评价量表.pdf' },
|
||||
// { icon: '/images/traings/traing1.png', name: '优秀案例.pptx' }
|
||||
// ],
|
||||
// mainImage: '/images/traings/traing1.png'
|
||||
// },
|
||||
// {
|
||||
// id: 3,
|
||||
// teacherName: '王老师',
|
||||
// teacherAvatar: '/images/traings/traing1.png',
|
||||
// assignTime: '2024-01-18',
|
||||
// status: '未完成',
|
||||
// title: '数字化教学资源开发',
|
||||
// description: '开发一套完整的数字化教学资源,包括课件制作、视频录制、在线测试设计等,要求体现现代教育技术的应用特点。',
|
||||
// attachments: [
|
||||
// { icon: '/images/traings/traing1.png', name: '开发指南.pdf' },
|
||||
// { icon: '/images/traings/traing1.png', name: '技术要求.docx' },
|
||||
// { icon: '/images/traings/traing1.png', name: '示例资源.zip' }
|
||||
// ],
|
||||
// mainImage: '/images/traings/traing1.png'
|
||||
// },
|
||||
// {
|
||||
// id: 4,
|
||||
// teacherName: '刘老师',
|
||||
// teacherAvatar: '/images/traings/traing1.png',
|
||||
// assignTime: '2024-01-10',
|
||||
// status: '已完成',
|
||||
// title: '在线教育平台使用报告',
|
||||
// description: '体验并分析主流在线教育平台的功能特点,撰写详细的使用报告和改进建议。',
|
||||
// attachments: [
|
||||
// { icon: '/images/traings/traing1.png', name: '平台列表.pdf' },
|
||||
// { icon: '/images/traings/traing1.png', name: '评价标准.docx' }
|
||||
// ],
|
||||
// mainImage: '/images/traings/traing1.png'
|
||||
// }
|
||||
// ]
|
||||
|
||||
// 模拟考试数据
|
||||
const mockExams: Exam[] = [
|
||||
@ -2025,14 +1721,14 @@ const mockFollows = [
|
||||
// })
|
||||
|
||||
// 获取筛选后的作业
|
||||
const filteredAssignments = computed(() => {
|
||||
if (activeHomeworkTab.value === 'pending') {
|
||||
return mockAssignments.filter(assignment => assignment.status === '待提交' || assignment.status === '未完成')
|
||||
} else if (activeHomeworkTab.value === 'completed') {
|
||||
return mockAssignments.filter(assignment => assignment.status === '已完成' || assignment.status === '已完成')
|
||||
}
|
||||
return mockAssignments
|
||||
})
|
||||
// const filteredAssignments = computed(() => {
|
||||
// if (activeHomeworkTab.value === 'pending') {
|
||||
// return mockAssignments.filter(assignment => assignment.status === '待提交' || assignment.status === '未完成')
|
||||
// } else if (activeHomeworkTab.value === 'completed') {
|
||||
// return mockAssignments.filter(assignment => assignment.status === '已完成' || assignment.status === '已完成')
|
||||
// }
|
||||
// return mockAssignments
|
||||
// })
|
||||
|
||||
// 获取筛选后的考试
|
||||
const filteredExams = computed(() => {
|
||||
@ -2148,9 +1844,9 @@ const handleMenuSelect = (key: TabType) => {
|
||||
// }
|
||||
|
||||
// 处理作业筛选变化
|
||||
const handleHomeworkTabChange = (tab: string) => {
|
||||
activeHomeworkTab.value = tab
|
||||
}
|
||||
// const handleHomeworkTabChange = (tab: string) => {
|
||||
// activeHomeworkTab.value = tab
|
||||
// }
|
||||
|
||||
// 处理考试筛选变化
|
||||
const handleExamTabChange = (tab: string) => {
|
||||
@ -3088,23 +2784,23 @@ const getTabTitle = (tab: TabType) => {
|
||||
}
|
||||
|
||||
// 上传作业弹窗状态
|
||||
const showModal = ref(false)
|
||||
const currentAssignment = ref<Assignment | null>(null)
|
||||
const uploadForm = reactive({
|
||||
title: '',
|
||||
content: '',
|
||||
files: [] as File[]
|
||||
})
|
||||
// const showModal = ref(false)
|
||||
// const currentAssignment = ref<Assignment | null>(null)
|
||||
// const uploadForm = reactive({
|
||||
// title: '',
|
||||
// content: '',
|
||||
// files: [] as File[]
|
||||
// })
|
||||
|
||||
|
||||
|
||||
// 作业详情视图状态
|
||||
const showDetailView = ref(false)
|
||||
const detailAssignment = ref<Assignment | null>(null)
|
||||
// const showDetailView = ref(false)
|
||||
// const detailAssignment = ref<Assignment | null>(null)
|
||||
|
||||
// 草稿箱视图状态
|
||||
const showDraftBoxView = ref(false)
|
||||
const draftAssignment = ref<Assignment | null>(null)
|
||||
// const showDraftBoxView = ref(false)
|
||||
// const draftAssignment = ref<Assignment | null>(null)
|
||||
|
||||
// 考试详情视图状态
|
||||
|
||||
@ -3122,11 +2818,11 @@ const draftAssignment = ref<Assignment | null>(null)
|
||||
// }
|
||||
|
||||
// 查看作业详情
|
||||
const viewAssignmentDetail = (assignment: Assignment) => {
|
||||
detailAssignment.value = assignment
|
||||
showDetailView.value = true
|
||||
showDraftBoxView.value = false
|
||||
}
|
||||
// const viewAssignmentDetail = (assignment: Assignment) => {
|
||||
// detailAssignment.value = assignment
|
||||
// showDetailView.value = true
|
||||
// showDraftBoxView.value = false
|
||||
// }
|
||||
|
||||
// 返回作业列表
|
||||
// const backToAssignmentList = () => {
|
||||
@ -3135,78 +2831,78 @@ const viewAssignmentDetail = (assignment: Assignment) => {
|
||||
// }
|
||||
|
||||
// 从详情页面跳转到上传作业
|
||||
const showUploadFromDetail = () => {
|
||||
showUploadModal(detailAssignment.value!)
|
||||
}
|
||||
// const showUploadFromDetail = () => {
|
||||
// showUploadModal(detailAssignment.value!)
|
||||
// }
|
||||
|
||||
// 显示草稿箱
|
||||
const showDraftBox = () => {
|
||||
// 模拟草稿箱数据,实际应该从后端获取
|
||||
draftAssignment.value = {
|
||||
id: 1,
|
||||
title: '教育心理学课程设计作业',
|
||||
description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
||||
teacherName: '张老师',
|
||||
teacherAvatar: '/images/traings/traing1.png',
|
||||
assignTime: '2024-01-15',
|
||||
status: '草稿',
|
||||
attachments: [
|
||||
{ icon: '/images/auth/file.png', name: 'file1.pdf' },
|
||||
{ icon: '/images/auth/file.png', name: 'file2.pdf' }
|
||||
],
|
||||
mainImage: '/images/traings/traing1.png'
|
||||
}
|
||||
showDraftBoxView.value = true
|
||||
showDetailView.value = false
|
||||
}
|
||||
// const showDraftBox = () => {
|
||||
// // 模拟草稿箱数据,实际应该从后端获取
|
||||
// draftAssignment.value = {
|
||||
// id: 1,
|
||||
// title: '教育心理学课程设计作业',
|
||||
// description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
||||
// teacherName: '张老师',
|
||||
// teacherAvatar: '/images/traings/traing1.png',
|
||||
// assignTime: '2024-01-15',
|
||||
// status: '草稿',
|
||||
// attachments: [
|
||||
// { icon: '/images/auth/file.png', name: 'file1.pdf' },
|
||||
// { icon: '/images/auth/file.png', name: 'file2.pdf' }
|
||||
// ],
|
||||
// mainImage: '/images/traings/traing1.png'
|
||||
// }
|
||||
// showDraftBoxView.value = true
|
||||
// showDetailView.value = false
|
||||
// }
|
||||
|
||||
// 返回作业列表(从草稿箱)
|
||||
const backFromDraftBox = () => {
|
||||
showDraftBoxView.value = false
|
||||
draftAssignment.value = null
|
||||
}
|
||||
// const backFromDraftBox = () => {
|
||||
// showDraftBoxView.value = false
|
||||
// draftAssignment.value = null
|
||||
// }
|
||||
|
||||
// 重新编辑草稿
|
||||
const reEditDraft = () => {
|
||||
showUploadModal(draftAssignment.value!)
|
||||
}
|
||||
// const reEditDraft = () => {
|
||||
// showUploadModal(draftAssignment.value!)
|
||||
// }
|
||||
|
||||
// 显示上传作业弹窗
|
||||
const showUploadModal = (assignment: Assignment) => {
|
||||
currentAssignment.value = assignment
|
||||
uploadForm.title = ''
|
||||
uploadForm.content = ''
|
||||
uploadForm.files = []
|
||||
showModal.value = true
|
||||
}
|
||||
// const showUploadModal = (assignment: Assignment) => {
|
||||
// currentAssignment.value = assignment
|
||||
// uploadForm.title = ''
|
||||
// uploadForm.content = ''
|
||||
// uploadForm.files = []
|
||||
// showModal.value = true
|
||||
// }
|
||||
|
||||
// 关闭上传作业弹窗
|
||||
const closeUploadModal = () => {
|
||||
showModal.value = false
|
||||
currentAssignment.value = null
|
||||
}
|
||||
// const closeUploadModal = () => {
|
||||
// showModal.value = false
|
||||
// currentAssignment.value = null
|
||||
// }
|
||||
|
||||
// 提交作业
|
||||
const submitAssignment = () => {
|
||||
if (!uploadForm.title.trim()) {
|
||||
message.error('请输入标题')
|
||||
return
|
||||
}
|
||||
// const submitAssignment = () => {
|
||||
// if (!uploadForm.title.trim()) {
|
||||
// message.error('请输入标题')
|
||||
// return
|
||||
// }
|
||||
|
||||
if (!uploadForm.content.trim()) {
|
||||
message.error('请输入内容')
|
||||
return
|
||||
}
|
||||
// if (!uploadForm.content.trim()) {
|
||||
// message.error('请输入内容')
|
||||
// return
|
||||
// }
|
||||
|
||||
if (uploadForm.files.length === 0) {
|
||||
message.error('请上传至少一个文件')
|
||||
return
|
||||
}
|
||||
// if (uploadForm.files.length === 0) {
|
||||
// message.error('请上传至少一个文件')
|
||||
// return
|
||||
// }
|
||||
|
||||
// 这里可以添加实际的提交逻辑
|
||||
message.success('作业提交成功')
|
||||
closeUploadModal()
|
||||
}
|
||||
// // 这里可以添加实际的提交逻辑
|
||||
// message.success('作业提交成功')
|
||||
// closeUploadModal()
|
||||
// }
|
||||
|
||||
const menuItems = ref<any[]>([])
|
||||
const getMenu = async () => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user