feat:作业模块对接
This commit is contained in:
parent
5455490811
commit
412a796ecb
@ -1,15 +1,58 @@
|
|||||||
// 学员中心相关API接口
|
// 学员中心相关API接口
|
||||||
import { ApiRequest } from '../request'
|
import { ApiRequest } from "../request";
|
||||||
|
|
||||||
|
|
||||||
|
// 活动相关API
|
||||||
export class ActivityListApi {
|
export class ActivityListApi {
|
||||||
static async getActivityList(): Promise<any> {
|
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 {
|
// 作业相关API
|
||||||
static async editUserInfo(data: any): Promise<any> {
|
export class HomeworkApi {
|
||||||
return ApiRequest.post('/aiol/aiolUser/edit_profile', data)
|
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">
|
<HomeworkContent v-else-if="isHomeworkTab"></HomeworkContent>
|
||||||
<!-- 作业筛选标签 -->
|
|
||||||
<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>
|
|
||||||
|
|
||||||
<!-- 考试内容 -->
|
<!-- 考试内容 -->
|
||||||
<div v-else-if="isExamTab" class="exam-content">
|
<div v-else-if="isExamTab" class="exam-content">
|
||||||
@ -849,58 +587,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</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>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, onMounted, onActivated, reactive } from 'vue'
|
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 { useI18n } from 'vue-i18n'
|
||||||
import { useUserStore } from '@/stores/user'
|
import { useUserStore } from '@/stores/user'
|
||||||
import SafeAvatar from '@/components/common/SafeAvatar.vue'
|
import SafeAvatar from '@/components/common/SafeAvatar.vue'
|
||||||
import QuillEditor from '@/components/common/QuillEditor.vue'
|
|
||||||
import InstantMessage from '@/components/InstantMessage.vue'
|
import InstantMessage from '@/components/InstantMessage.vue'
|
||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { MessageApi, type BackendMessageItem } from '@/api'
|
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 PracticeContent from '@/components/profile/PracticeContent.vue'
|
||||||
import ActivityContent from '@/components/profile/ActivityContent.vue'
|
import ActivityContent from '@/components/profile/ActivityContent.vue'
|
||||||
import MaterialsContent from '@/components/profile/MaterialsContent.vue'
|
import MaterialsContent from '@/components/profile/MaterialsContent.vue'
|
||||||
|
import HomeworkContent from '@/components/profile/HomeworkContent.vue'
|
||||||
|
|
||||||
// const { t, locale } = useI18n()
|
// const { t, locale } = useI18n()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@ -939,20 +635,20 @@ const route = useRoute()
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// 定义作业接口
|
// 定义作业接口
|
||||||
interface Assignment {
|
// interface Assignment {
|
||||||
id: number
|
// id: number
|
||||||
teacherName: string
|
// teacherName: string
|
||||||
teacherAvatar: string
|
// teacherAvatar: string
|
||||||
assignTime: string
|
// assignTime: string
|
||||||
status: string
|
// status: string
|
||||||
title: string
|
// title: string
|
||||||
description: string
|
// description: string
|
||||||
attachments: Array<{
|
// attachments: Array<{
|
||||||
icon: string
|
// icon: string
|
||||||
name: string
|
// name: string
|
||||||
}>
|
// }>
|
||||||
mainImage: string
|
// mainImage: string
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 定义考试接口
|
// 定义考试接口
|
||||||
interface Exam {
|
interface Exam {
|
||||||
@ -1087,7 +783,7 @@ const activeTab = ref<TabType>('courses')
|
|||||||
// const activeCourseTab = ref('all')
|
// const activeCourseTab = ref('all')
|
||||||
|
|
||||||
// 作业筛选状态
|
// 作业筛选状态
|
||||||
const activeHomeworkTab = ref('all')
|
// const activeHomeworkTab = ref('all')
|
||||||
|
|
||||||
// 考试筛选状态
|
// 考试筛选状态
|
||||||
const activeExamTab = ref('all')
|
const activeExamTab = ref('all')
|
||||||
@ -1306,71 +1002,71 @@ const downloadFiles = reactive([
|
|||||||
// ]
|
// ]
|
||||||
|
|
||||||
// 模拟作业数据(基于蓝湖UI设计)
|
// 模拟作业数据(基于蓝湖UI设计)
|
||||||
const mockAssignments: Assignment[] = [
|
// const mockAssignments: Assignment[] = [
|
||||||
{
|
// {
|
||||||
id: 1,
|
// id: 1,
|
||||||
teacherName: '张老师',
|
// teacherName: '张老师',
|
||||||
teacherAvatar: '/images/traings/traing1.png',
|
// teacherAvatar: '/images/traings/traing1.png',
|
||||||
assignTime: '2024-01-15',
|
// assignTime: '2024-01-15',
|
||||||
status: '待提交',
|
// status: '待提交',
|
||||||
title: '教育心理学课程设计作业',
|
// title: '教育心理学课程设计作业',
|
||||||
description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
// description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
||||||
attachments: [
|
// attachments: [
|
||||||
{ icon: '/images/traings/traing1.png', name: '作业要求.pdf' },
|
// { icon: '/images/traings/traing1.png', name: '作业要求.pdf' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '参考资料.docx' },
|
// { icon: '/images/traings/traing1.png', name: '参考资料.docx' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '模板文件.pptx' },
|
// { icon: '/images/traings/traing1.png', name: '模板文件.pptx' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '评分标准.pdf' },
|
// { icon: '/images/traings/traing1.png', name: '评分标准.pdf' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '案例分析.xlsx' }
|
// { icon: '/images/traings/traing1.png', name: '案例分析.xlsx' }
|
||||||
],
|
// ],
|
||||||
mainImage: '/images/traings/traing1.png'
|
// mainImage: '/images/traings/traing1.png'
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: 2,
|
// id: 2,
|
||||||
teacherName: '李老师',
|
// teacherName: '李老师',
|
||||||
teacherAvatar: '/images/traings/traing1.png',
|
// teacherAvatar: '/images/traings/traing1.png',
|
||||||
assignTime: '2024-01-20',
|
// assignTime: '2024-01-20',
|
||||||
status: '已完成',
|
// status: '已完成',
|
||||||
title: '现代教育技术应用实践报告',
|
// title: '现代教育技术应用实践报告',
|
||||||
description: '结合本学期所学的现代教育技术知识,选择一个具体的教学场景,设计并实施一个融合信息技术的教学活动,撰写实践报告。',
|
// description: '结合本学期所学的现代教育技术知识,选择一个具体的教学场景,设计并实施一个融合信息技术的教学活动,撰写实践报告。',
|
||||||
attachments: [
|
// attachments: [
|
||||||
{ icon: '/images/traings/traing1.png', name: '实践指导.pdf' },
|
// { icon: '/images/traings/traing1.png', name: '实践指导.pdf' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '报告模板.docx' },
|
// { icon: '/images/traings/traing1.png', name: '报告模板.docx' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '技术工具清单.xlsx' },
|
// { icon: '/images/traings/traing1.png', name: '技术工具清单.xlsx' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '评价量表.pdf' },
|
// { icon: '/images/traings/traing1.png', name: '评价量表.pdf' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '优秀案例.pptx' }
|
// { icon: '/images/traings/traing1.png', name: '优秀案例.pptx' }
|
||||||
],
|
// ],
|
||||||
mainImage: '/images/traings/traing1.png'
|
// mainImage: '/images/traings/traing1.png'
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: 3,
|
// id: 3,
|
||||||
teacherName: '王老师',
|
// teacherName: '王老师',
|
||||||
teacherAvatar: '/images/traings/traing1.png',
|
// teacherAvatar: '/images/traings/traing1.png',
|
||||||
assignTime: '2024-01-18',
|
// assignTime: '2024-01-18',
|
||||||
status: '未完成',
|
// status: '未完成',
|
||||||
title: '数字化教学资源开发',
|
// title: '数字化教学资源开发',
|
||||||
description: '开发一套完整的数字化教学资源,包括课件制作、视频录制、在线测试设计等,要求体现现代教育技术的应用特点。',
|
// description: '开发一套完整的数字化教学资源,包括课件制作、视频录制、在线测试设计等,要求体现现代教育技术的应用特点。',
|
||||||
attachments: [
|
// attachments: [
|
||||||
{ icon: '/images/traings/traing1.png', name: '开发指南.pdf' },
|
// { icon: '/images/traings/traing1.png', name: '开发指南.pdf' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '技术要求.docx' },
|
// { icon: '/images/traings/traing1.png', name: '技术要求.docx' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '示例资源.zip' }
|
// { icon: '/images/traings/traing1.png', name: '示例资源.zip' }
|
||||||
],
|
// ],
|
||||||
mainImage: '/images/traings/traing1.png'
|
// mainImage: '/images/traings/traing1.png'
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: 4,
|
// id: 4,
|
||||||
teacherName: '刘老师',
|
// teacherName: '刘老师',
|
||||||
teacherAvatar: '/images/traings/traing1.png',
|
// teacherAvatar: '/images/traings/traing1.png',
|
||||||
assignTime: '2024-01-10',
|
// assignTime: '2024-01-10',
|
||||||
status: '已完成',
|
// status: '已完成',
|
||||||
title: '在线教育平台使用报告',
|
// title: '在线教育平台使用报告',
|
||||||
description: '体验并分析主流在线教育平台的功能特点,撰写详细的使用报告和改进建议。',
|
// description: '体验并分析主流在线教育平台的功能特点,撰写详细的使用报告和改进建议。',
|
||||||
attachments: [
|
// attachments: [
|
||||||
{ icon: '/images/traings/traing1.png', name: '平台列表.pdf' },
|
// { icon: '/images/traings/traing1.png', name: '平台列表.pdf' },
|
||||||
{ icon: '/images/traings/traing1.png', name: '评价标准.docx' }
|
// { icon: '/images/traings/traing1.png', name: '评价标准.docx' }
|
||||||
],
|
// ],
|
||||||
mainImage: '/images/traings/traing1.png'
|
// mainImage: '/images/traings/traing1.png'
|
||||||
}
|
// }
|
||||||
]
|
// ]
|
||||||
|
|
||||||
// 模拟考试数据
|
// 模拟考试数据
|
||||||
const mockExams: Exam[] = [
|
const mockExams: Exam[] = [
|
||||||
@ -2025,14 +1721,14 @@ const mockFollows = [
|
|||||||
// })
|
// })
|
||||||
|
|
||||||
// 获取筛选后的作业
|
// 获取筛选后的作业
|
||||||
const filteredAssignments = computed(() => {
|
// const filteredAssignments = computed(() => {
|
||||||
if (activeHomeworkTab.value === 'pending') {
|
// if (activeHomeworkTab.value === 'pending') {
|
||||||
return mockAssignments.filter(assignment => assignment.status === '待提交' || assignment.status === '未完成')
|
// return mockAssignments.filter(assignment => assignment.status === '待提交' || assignment.status === '未完成')
|
||||||
} else if (activeHomeworkTab.value === 'completed') {
|
// } else if (activeHomeworkTab.value === 'completed') {
|
||||||
return mockAssignments.filter(assignment => assignment.status === '已完成' || assignment.status === '已完成')
|
// return mockAssignments.filter(assignment => assignment.status === '已完成' || assignment.status === '已完成')
|
||||||
}
|
// }
|
||||||
return mockAssignments
|
// return mockAssignments
|
||||||
})
|
// })
|
||||||
|
|
||||||
// 获取筛选后的考试
|
// 获取筛选后的考试
|
||||||
const filteredExams = computed(() => {
|
const filteredExams = computed(() => {
|
||||||
@ -2148,9 +1844,9 @@ const handleMenuSelect = (key: TabType) => {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// 处理作业筛选变化
|
// 处理作业筛选变化
|
||||||
const handleHomeworkTabChange = (tab: string) => {
|
// const handleHomeworkTabChange = (tab: string) => {
|
||||||
activeHomeworkTab.value = tab
|
// activeHomeworkTab.value = tab
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 处理考试筛选变化
|
// 处理考试筛选变化
|
||||||
const handleExamTabChange = (tab: string) => {
|
const handleExamTabChange = (tab: string) => {
|
||||||
@ -3088,23 +2784,23 @@ const getTabTitle = (tab: TabType) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 上传作业弹窗状态
|
// 上传作业弹窗状态
|
||||||
const showModal = ref(false)
|
// const showModal = ref(false)
|
||||||
const currentAssignment = ref<Assignment | null>(null)
|
// const currentAssignment = ref<Assignment | null>(null)
|
||||||
const uploadForm = reactive({
|
// const uploadForm = reactive({
|
||||||
title: '',
|
// title: '',
|
||||||
content: '',
|
// content: '',
|
||||||
files: [] as File[]
|
// files: [] as File[]
|
||||||
})
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 作业详情视图状态
|
// 作业详情视图状态
|
||||||
const showDetailView = ref(false)
|
// const showDetailView = ref(false)
|
||||||
const detailAssignment = ref<Assignment | null>(null)
|
// const detailAssignment = ref<Assignment | null>(null)
|
||||||
|
|
||||||
// 草稿箱视图状态
|
// 草稿箱视图状态
|
||||||
const showDraftBoxView = ref(false)
|
// const showDraftBoxView = ref(false)
|
||||||
const draftAssignment = ref<Assignment | null>(null)
|
// const draftAssignment = ref<Assignment | null>(null)
|
||||||
|
|
||||||
// 考试详情视图状态
|
// 考试详情视图状态
|
||||||
|
|
||||||
@ -3122,11 +2818,11 @@ const draftAssignment = ref<Assignment | null>(null)
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// 查看作业详情
|
// 查看作业详情
|
||||||
const viewAssignmentDetail = (assignment: Assignment) => {
|
// const viewAssignmentDetail = (assignment: Assignment) => {
|
||||||
detailAssignment.value = assignment
|
// detailAssignment.value = assignment
|
||||||
showDetailView.value = true
|
// showDetailView.value = true
|
||||||
showDraftBoxView.value = false
|
// showDraftBoxView.value = false
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 返回作业列表
|
// 返回作业列表
|
||||||
// const backToAssignmentList = () => {
|
// const backToAssignmentList = () => {
|
||||||
@ -3135,78 +2831,78 @@ const viewAssignmentDetail = (assignment: Assignment) => {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// 从详情页面跳转到上传作业
|
// 从详情页面跳转到上传作业
|
||||||
const showUploadFromDetail = () => {
|
// const showUploadFromDetail = () => {
|
||||||
showUploadModal(detailAssignment.value!)
|
// showUploadModal(detailAssignment.value!)
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 显示草稿箱
|
// 显示草稿箱
|
||||||
const showDraftBox = () => {
|
// const showDraftBox = () => {
|
||||||
// 模拟草稿箱数据,实际应该从后端获取
|
// // 模拟草稿箱数据,实际应该从后端获取
|
||||||
draftAssignment.value = {
|
// draftAssignment.value = {
|
||||||
id: 1,
|
// id: 1,
|
||||||
title: '教育心理学课程设计作业',
|
// title: '教育心理学课程设计作业',
|
||||||
description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
// description: '请根据所学的教育心理学理论,设计一个完整的课程教学方案,包括教学目标、教学内容、教学方法、教学评价等方面。要求理论联系实际,体现现代教育理念。',
|
||||||
teacherName: '张老师',
|
// teacherName: '张老师',
|
||||||
teacherAvatar: '/images/traings/traing1.png',
|
// teacherAvatar: '/images/traings/traing1.png',
|
||||||
assignTime: '2024-01-15',
|
// assignTime: '2024-01-15',
|
||||||
status: '草稿',
|
// status: '草稿',
|
||||||
attachments: [
|
// attachments: [
|
||||||
{ icon: '/images/auth/file.png', name: 'file1.pdf' },
|
// { icon: '/images/auth/file.png', name: 'file1.pdf' },
|
||||||
{ icon: '/images/auth/file.png', name: 'file2.pdf' }
|
// { icon: '/images/auth/file.png', name: 'file2.pdf' }
|
||||||
],
|
// ],
|
||||||
mainImage: '/images/traings/traing1.png'
|
// mainImage: '/images/traings/traing1.png'
|
||||||
}
|
// }
|
||||||
showDraftBoxView.value = true
|
// showDraftBoxView.value = true
|
||||||
showDetailView.value = false
|
// showDetailView.value = false
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 返回作业列表(从草稿箱)
|
// 返回作业列表(从草稿箱)
|
||||||
const backFromDraftBox = () => {
|
// const backFromDraftBox = () => {
|
||||||
showDraftBoxView.value = false
|
// showDraftBoxView.value = false
|
||||||
draftAssignment.value = null
|
// draftAssignment.value = null
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 重新编辑草稿
|
// 重新编辑草稿
|
||||||
const reEditDraft = () => {
|
// const reEditDraft = () => {
|
||||||
showUploadModal(draftAssignment.value!)
|
// showUploadModal(draftAssignment.value!)
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 显示上传作业弹窗
|
// 显示上传作业弹窗
|
||||||
const showUploadModal = (assignment: Assignment) => {
|
// const showUploadModal = (assignment: Assignment) => {
|
||||||
currentAssignment.value = assignment
|
// currentAssignment.value = assignment
|
||||||
uploadForm.title = ''
|
// uploadForm.title = ''
|
||||||
uploadForm.content = ''
|
// uploadForm.content = ''
|
||||||
uploadForm.files = []
|
// uploadForm.files = []
|
||||||
showModal.value = true
|
// showModal.value = true
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 关闭上传作业弹窗
|
// 关闭上传作业弹窗
|
||||||
const closeUploadModal = () => {
|
// const closeUploadModal = () => {
|
||||||
showModal.value = false
|
// showModal.value = false
|
||||||
currentAssignment.value = null
|
// currentAssignment.value = null
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 提交作业
|
// 提交作业
|
||||||
const submitAssignment = () => {
|
// const submitAssignment = () => {
|
||||||
if (!uploadForm.title.trim()) {
|
// if (!uploadForm.title.trim()) {
|
||||||
message.error('请输入标题')
|
// message.error('请输入标题')
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (!uploadForm.content.trim()) {
|
// if (!uploadForm.content.trim()) {
|
||||||
message.error('请输入内容')
|
// message.error('请输入内容')
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (uploadForm.files.length === 0) {
|
// if (uploadForm.files.length === 0) {
|
||||||
message.error('请上传至少一个文件')
|
// message.error('请上传至少一个文件')
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 这里可以添加实际的提交逻辑
|
// // 这里可以添加实际的提交逻辑
|
||||||
message.success('作业提交成功')
|
// message.success('作业提交成功')
|
||||||
closeUploadModal()
|
// closeUploadModal()
|
||||||
}
|
// }
|
||||||
|
|
||||||
const menuItems = ref<any[]>([])
|
const menuItems = ref<any[]>([])
|
||||||
const getMenu = async () => {
|
const getMenu = async () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user