|
@@ -1,29 +1,104 @@
|
|
|
-import { ref, provide } from 'vue';
|
|
|
+import { ref, provide, computed } from 'vue';
|
|
|
import { useRoute } from 'vue-router/composables';
|
|
|
|
|
|
-import { GetCSItemTaskList } from '@/api/course';
|
|
|
+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({});
|
|
|
- provide('taskData', taskData);
|
|
|
- GetCSItemTaskList({
|
|
|
- cs_item_id: id,
|
|
|
- task_time_type,
|
|
|
- data_use: isTeacher ? 'teacher_see_student_task' : 'student_do_task',
|
|
|
- student_id: isTeacher ? '' : ''
|
|
|
- }).then(({ status, ...data }) => {
|
|
|
- if (status !== 1) return;
|
|
|
- taskData.value = data;
|
|
|
+ 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
|
|
|
+ taskData,
|
|
|
+ studentList,
|
|
|
+ curStudentId,
|
|
|
+ getCSItemTaskList
|
|
|
};
|
|
|
}
|