Procházet zdrojové kódy

feat(课程详情): 新增获取章节全部列表接口

refactor: 移除未使用的defineEmits导入
refactor(试卷任务): 使用reactive重构rowSelection
refactor(考试模块): 使用工具函数生成试卷类型枚举
style: 统一课程封面图片显示为a-image组件
feat(任务列表): 添加时间格式化显示功能
tanshanming před 7 měsíci
rodič
revize
f7f9bbb7fb

+ 2 - 0
src/api/course/courseDetail.js

@@ -5,6 +5,8 @@ const request = moduleRequest(`/api/webapp/`)
 
 // 获取课程详情
 export const getCourseDetail = (p) => request('disk/courseinfo/detail', p, 'get')
+// 获取章节全部列表
+export const getChapterAllList = (p) => request('disk/chapter/allList', p, 'get')
 // 部门与成员 mock 数据
 export const mockDepartments = [
 	{

+ 10 - 6
src/store/exam.js

@@ -1,6 +1,14 @@
 import { defineStore } from 'pinia'
 import subjectApi from '@/api/exam/paper/subject.js'
-
+import tool from '@/utils/tool'
+const funPaperType = function () {
+	return tool.dictList('PAPER_TYPE').map((item) => {
+		return {
+			key: Number(item.value),
+			value: item.label
+		}
+	})
+}
 const format = function (array, key) {
 	for (let item of array) {
 		if (item.key === key) {
@@ -64,11 +72,7 @@ export const useExamStore = defineStore('exam', {
 		},
 		exam: {
 			examPaper: {
-				paperTypeEnum: [
-					{ key: 1, value: '固定试卷' },
-					{ key: 4, value: '时段试卷' },
-					{ key: 6, value: '任务试卷' }
-				]
+				paperTypeEnum: funPaperType()
 			},
 			examPaperAnswer: {
 				statusEnum: [

+ 1 - 1
src/views/courseAdd/components/courseProduction/addClassHours.vue

@@ -70,7 +70,7 @@
 </template>
 
 <script setup>
-	import { ref, reactive, watch, defineProps, defineEmits } from 'vue'
+	import { ref, reactive, watch, defineProps } from 'vue'
 	import { message } from 'ant-design-vue'
 	import { PictureOutlined, CloudUploadOutlined } from '@ant-design/icons-vue'
 

+ 1 - 1
src/views/courseDetails/components/tab/LessonDetails.vue

@@ -44,7 +44,7 @@
 </template>
 
 <script setup>
-	import { defineProps, defineEmits, ref, watch } from 'vue'
+	import { defineProps, ref, watch } from 'vue'
 	import { EditOutlined, DeleteOutlined } from '@ant-design/icons-vue'
 	const props = defineProps({
 		pagedSections: Array,

+ 2 - 1
src/views/courseDetails/index.vue

@@ -4,7 +4,7 @@
 		<a-card class="course-info-card" bordered>
 			<div class="course-info-main">
 				<div class="cover-box">
-					<a-avatar shape="square" :size="120" :src="course.coverImagePath" />
+					<a-image shape="square" :size="120" :src="sysConfig.FILE_URL + course.coverImagePath" />
 				</div>
 				<div class="info-box">
 					<div class="title">{{ course.courseName }}</div>
@@ -82,6 +82,7 @@
 	import LearningStatistics from './components/tab/LearningStatistics.vue'
 	import { getCourseDetail } from '@/api/course/courseDetail.js'
 	import { useRoute } from 'vue-router'
+	import sysConfig from '@/config/index'
 	const route = useRoute()
 	const course = ref({
 		courseId: '',

+ 3 - 3
src/views/exm/task/form.vue

@@ -156,13 +156,13 @@
 
 	// 试卷选择表格多选
 	const selectedRowKeys = ref([])
-	const rowSelection = {
-		selectedRowKeys: selectedRowKeys.value,
+	const rowSelection = reactive({
+		selectedRowKeys: selectedRowKeys,
 		onChange: (selectedRowKeysVal, selectedRows) => {
 			selectedRowKeys.value = selectedRowKeysVal
 			paperPage.multipleSelection = selectedRows
 		}
-	}
+	})
 
 	// 初始化学科
 	const initSubject = async (cb) => {

+ 10 - 4
src/views/exm/task/index.vue

@@ -26,7 +26,11 @@
 			<a-table-column title="标题" dataIndex="title" key="title" />
 			<a-table-column title="学级" dataIndex="gradeLevel" key="gradeLevel" :customRender="levelFormatter" />
 			<a-table-column title="发送人" dataIndex="createUserName" key="createUserName" width="100" />
-			<a-table-column title="创建时间" dataIndex="createTime" key="createTime" width="160" />
+			<a-table-column title="创建时间" dataIndex="createTime" key="createTime" width="160">
+				<template #default="{ record }">
+					{{ formatDateTime(record.createTime) }}
+				</template>
+			</a-table-column>
 			<a-table-column title="操作" key="action" align="center" width="160">
 				<template #default="{ record }">
 					<a-button size="small" @click="editTask(record)">编辑</a-button>
@@ -60,14 +64,12 @@
 
 <script setup>
 	import { ref, reactive, onMounted } from 'vue'
-	import { useRouter } from 'vue-router'
 	import { message, Modal } from 'ant-design-vue'
 	import taskApi from '@/api/exam/paper/task.js'
 	import TaskEdit from './form.vue'
 	import { useExamStore } from '@/store/exam.js'
 	import { storeToRefs } from 'pinia'
-
-	const router = useRouter()
+	import { parseTime } from '@/utils/exam'
 	const examStore = useExamStore()
 	const { levelEnum, enumFormat } = storeToRefs(examStore)
 	const drawerVisible = ref(false)
@@ -159,6 +161,10 @@
 	const closeDrawer = () => {
 		drawerVisible.value = false
 	}
+	const formatDateTime = (val) => {
+		if (!val) return ''
+		return parseTime(val, '{y}-{m}-{d} {h}:{i}:{s}')
+	}
 </script>
 
 <style lang="less" scoped>

+ 1 - 1
src/views/myResources/auditModal.vue

@@ -55,7 +55,7 @@
 </template>
 
 <script setup>
-	import { ref, defineProps, defineEmits, computed } from 'vue'
+	import { ref, defineProps, computed } from 'vue'
 	import resourceAuditApi from '@/api/resourceAudit.js'
 	import VideoPlayer from './VideoPlayer.vue'
 	import sysConfig from '@/config/index'