123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import { ref, provide, computed } from 'vue';
- import { useRoute } from 'vue-router/composables';
- import { taskTypeArray } from './components/data/TaskType';
- import { fileStatusList } from '@/utils/file';
- import { GetCSItemTaskList, GetCSItemTaskStudentList } from '@/api/course';
- import store from '@/store';
- /**
- * 文件转换
- * @param {Array} list 文件列表
- * @returns Array
- */
- function filesTransform(list) {
- return list.map(({ file_id, file_name, file_size }) => {
- return {
- file: {
- name: file_name,
- size: file_size
- },
- status: { ...fileStatusList[3], id: file_id }
- };
- });
- }
- /**
- * 转换任务列表数据格式,转换为显示格式
- * @param {Array} list 任务列表
- */
- function convertDataFormatTaskList(list) {
- list.forEach((item) => {
- // 学生列表转换为学生id列表
- item.custom_student_id_list = item.custom_student_list.map(({ student_id }) => student_id);
- // 教材转换
- item._coursewares = JSON.parse(JSON.stringify(item.courseware_list));
- // 文件转换
- item._files = filesTransform(item.accessory_list);
- item.child_task_list.forEach(({ info_block_list }) => {
- info_block_list.forEach(({ info_block_type, courseware_list, file_list }, i, arr) => {
- if (info_block_type === 'courseware') {
- arr[i]._coursewares = JSON.parse(JSON.stringify(courseware_list));
- return;
- }
- if (info_block_type === 'file') {
- arr[i]._files = filesTransform(file_list);
- return;
- }
- });
- });
- });
- return list;
- }
- export function useTask() {
- const route = useRoute();
- const id = route.params.id;
- const task_time_type = Number(route.query.task_time_type);
- const isTeacher = store.getters.isTeacher;
- let curStudentId = ref('');
- let taskData = ref({});
- let taskList = computed(
- () => taskData.value[taskTypeArray.find(({ time_type }) => time_type === task_time_type).sidebarListName]
- );
- provide('taskList', taskList);
- let taskType = computed(() => taskTypeArray.find(({ time_type }) => time_type === task_time_type).type);
- provide('taskType', taskType);
- /**
- * 得到课节任务列表
- * @param {String} studentId 学生ID
- */
- function getCSItemTaskList(studentId) {
- GetCSItemTaskList({
- cs_item_id: id,
- task_time_type,
- data_use: isTeacher ? 'teacher_see_student_task' : 'student_do_task',
- student_id: isTeacher ? studentId : ''
- }).then(({ status, pre_task_list, mid_task_list, after_task_list, ...data }) => {
- if (status !== 1) return;
- taskData.value = {
- pre_task_list: convertDataFormatTaskList(pre_task_list),
- mid_task_list: convertDataFormatTaskList(mid_task_list),
- after_task_list: convertDataFormatTaskList(after_task_list),
- ...data
- };
- curStudentId.value = studentId;
- });
- }
- // 得到学生列表
- let studentList = ref([]);
- GetCSItemTaskStudentList({ cs_item_id: id, task_time_type }).then(({ student_list }) => {
- studentList.value = student_list;
- if (student_list.length > 0) getCSItemTaskList(student_list[0].student_id);
- });
- return {
- taskData,
- studentList,
- curStudentId,
- getCSItemTaskList
- };
- }
|