feat:作业模块对接

This commit is contained in:
yuk255 2025-10-14 22:03:55 +08:00
parent 5455490811
commit 412a796ecb
3 changed files with 1670 additions and 477 deletions

View File

@ -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;
}
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -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 () => {