wuheng 1 year ago
parent
commit
a735d7c1e4
2 changed files with 68 additions and 18 deletions
  1. 40 1
      src/views/lesson/schedule/api.ts
  2. 28 17
      src/views/lesson/schedule/index.vue

+ 40 - 1
src/views/lesson/schedule/api.ts

@@ -225,7 +225,7 @@ export interface ScheduleParamsList {
   break?: boolean;
 }
 
-export function querySchedule(
+export function queryScheduleList(
   pageNum: number,
   pageSize: number,
   params: ScheduleParamsList
@@ -236,3 +236,42 @@ export function querySchedule(
 export function queryUserAll(): Promise<Service.RequestResult<UserParams[]>> {
   return request.get(`/userinfo/queryAll`);
 }
+
+export interface QueryScheduleParams {
+  studentId?: number | null;
+  classId?: number | null;
+  subjectId?: number | null;
+  teacherId?: number | null;
+  startTime?: string | null;
+  endTime?: string | null;
+  week?: number | null;
+  roomId?: number | null;
+  assistantId?: number | null;
+  categoryId?: number | null;
+}
+
+interface ScheduleResponse {
+  id?: number;
+  week?: number;
+  startTime?: string;
+  endTime?: string;
+  roomId?: number;
+  classroom?: string;
+  classId?: number;
+  assistantId?: number;
+  assistantName?: string;
+  teacherId?: number;
+  teacherName?: string;
+  categoryId?: number;
+  category?: string;
+  subjectsId?: number;
+  subjects?: string;
+  createTime?: string;
+  modifyTime?: string;
+  createUid?: number;
+  disabled?: string;
+}
+
+export function querySchedule(params: QueryScheduleParams): Promise<Service.RequestResult<ScheduleResponse[]>> {
+  return request.post(`/schedule/querySchedule`, params);
+}

+ 28 - 17
src/views/lesson/schedule/index.vue

@@ -53,7 +53,7 @@
               <th v-for="weekDate in [0, 1, 2, 3, 4, 5, 6]" :key="weekDate" class="font-500 color-blue-800">
                 {{ new Date(weekStartTime + weekDate * 86400000).getMonth() + 1 }}月{{
                   new Date(weekStartTime + weekDate * 86400000).getDate()
-                }}号 - 周{{ chineseNumbers[getDayOfTheWeekNow(weekStartTime - 1, weekDate)] }}
+                }}号 - 周{{ chineseNumbers[getDayOfTheWeekNow(weekStartTime, weekDate)] }}
               </th>
             </tr>
             <tr v-for="key in timeKey" :key="key">
@@ -67,8 +67,13 @@
                   "
                   :rowspan="scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['colspan']"
                 >
-                  {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['startTime'] }} <br />
-                  {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['endTime'] }}
+                  时间:
+                  {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['startTime'] }} -
+                  {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['endTime'].split(' ').pop() }}<br />
+                  讲师: {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['teacherName'] }}<br />
+                  授课: {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['category'] }}
+                  {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['subjects'] }}<br />
+                  教室: {{ scheduleList[getDayOfTheWeekNow(weekStartTime, index)][key]['classroom'] }}
                 </td>
                 <td
                   v-else-if="
@@ -162,7 +167,7 @@ import {
   queryClassRoomList,
   querySchedule
 } from './api';
-import type { ScheduleParams, ScheduleParamsList } from './api';
+import type { ScheduleParams, QueryScheduleParams } from './api';
 const route = useRoute();
 const model = reactive<ScheduleParams>({
   week: 0,
@@ -211,15 +216,17 @@ sevenDaysLater.setDate(nowDate.getDate() + 6);
 sevenDaysLater.setHours(0, 0, 0, 0);
 const dateRange = ref<[number, number]>([nowDate.getTime(), sevenDaysLater.getTime()]);
 const weekStartTime = ref<number>(nowDate.getTime());
-const scheduleParamsOptions = reactive<ScheduleParamsList>({
-  startTime: '',
-  endTime: '',
-  roomId: null,
+const scheduleParamsOptions = reactive<QueryScheduleParams>({
+  studentId: null,
   classId: null,
-  assistantId: null,
+  subjectId: null,
   teacherId: null,
-  categoryId: null,
-  subjectsId: null
+  startTime: null,
+  endTime: null,
+  week: null,
+  roomId: null,
+  assistantId: null,
+  categoryId: null
 });
 
 const scheduleList = ref<{ [index: string]: any }>({
@@ -275,7 +282,7 @@ async function handleValidateButtonClick() {
   formLoading.value = true;
   const modelStartTime = new Date(startTime.value);
   const modelEndTime = new Date(endTime.value);
-  if (modelStartTime >= modelEndTime) {
+  if (modelStartTime.getTime() >= modelEndTime.getTime()) {
     window.$message?.error('开始时间不能大于或等于结束时间');
     formLoading.value = false;
     return;
@@ -340,7 +347,7 @@ function differenceInSevenDays(nowtime: [number, number]): boolean {
     return false;
   }
   scheduleParamsOptions.startTime = formatTimestamp(Number(nowtime[0]));
-  scheduleParamsOptions.endTime = formatTimestamp(Number(nowtime[1] + 86400000));
+  scheduleParamsOptions.endTime = formatTimestamp(Number(nowtime[1] + 86399999));
 
   return true;
 }
@@ -353,7 +360,7 @@ function loadScheduleQuery() {
 
 function loadSchedule() {
   loading.value = true;
-  querySchedule(1, 100, scheduleParamsOptions).then(response => {
+  querySchedule(scheduleParamsOptions).then(response => {
     scheduleList.value = [];
     for (let i = 1; i <= 7; i += 1) {
       scheduleList.value[i] = {};
@@ -363,8 +370,11 @@ function loadSchedule() {
     }
     response.data?.forEach((r: any) => {
       if (!r.startTime) return;
-      const time = r.startTime?.split(' ').pop();
-      const week = new Date(r.startTime).getDay() + 1;
+      const time = r.startTime
+        ?.split(' ')
+        .pop()
+        .replace(/(\d{2}):\d{2}/, '$1:00');
+      const week = new Date(r.startTime).getDay();
       if (time && timeKey.value.indexOf(time) === -1) return;
       if (week && time && r.endTime && r.startTime && scheduleList.value[week][time].empty) {
         r.colspan = new Date(r.endTime).getHours() - new Date(r.startTime).getHours() + 1;
@@ -384,7 +394,8 @@ function loadSchedule() {
   });
 }
 function getDayOfTheWeekNow(theWeekStartTime: number, weekDate: number): number {
-  return new Date(theWeekStartTime + weekDate * 86400000).getDay() + 1;
+  const week = new Date(theWeekStartTime + weekDate * 86400000).getDay();
+  return week === 0 ? 7 : week;
 }
 function loadData() {
   queryUserAll().then(response => {