浏览代码

feat:视图

DESKTOP-USV654P\pc 6 月之前
父节点
当前提交
cf1667ea2a

+ 3 - 0
src/services/apis/ScheduleController.ts

@@ -36,4 +36,7 @@ export async function getScheduleReceiveMsg(params:any,mode: ErrorMessageMode =
 export async function postScheduleScheduleWeekExportQuery(params:API.ScheduleWeekExportQueryDto
 ,mode: ErrorMessageMode = 'modal'){ return defHttp.download<string>
         ({url: '/schedule/schedule/schedule-week-export-query',responseType:'blob',method:'POST', data:params},{errorMessageMode:mode});}
+/** 获取周次列表 GET /schedule/schedule/week-list */
+export async function getScheduleWeekList(params:any,mode: ErrorMessageMode = 'modal'){ return defHttp.get<API.ScheduleWeekVo[]>
+        ({url: '/schedule/schedule/week-list', params:params},{errorMessageMode:mode});}
             

+ 23 - 0
src/services/typing.d.ts

@@ -2388,6 +2388,8 @@ type AddNewsDto = {
 appendixList?: AddNewsAppendixDto[];
 /** 作者 */
 authorName?: string;
+/** 简略标题 */
+briefHead?: string;
 /** 紧急程度  1=一般 2=紧急 */
 emergent?: number;
 /** 标题 */
@@ -2599,6 +2601,8 @@ sortCode?: number;
 type AddProclamationDto = {
 /** 附件子表 */
 appendixList?: AddNewsAppendixDto[];
+/** 简略标题 */
+briefHead?: string;
 /** 紧急程度  1=一般 2=紧急 */
 emergent?: number;
 /** 标题 */
@@ -8384,8 +8388,12 @@ className?: string;
 classTimeList?: ClassTime对象[];
 /** 课程 */
 courseList?: CourseDetailVo[];
+/** 结束时间 */
+endDate?: string;
 /** 学期名称 */
 semesterName?: string;
+/** 开始时间 */
+startDate?: string;
 /** 教师名称(课表类型为teacher时使用) */
 teacherName?: string;
 /** 第几周 */
@@ -13484,6 +13492,8 @@ typeId?: number;
 type ProclamationVo = {
 /** 附件子表 */
 appendixList?: NewsAppendixVo[];
+/** 简略标题 */
+briefHead?: string;
 /** 发送部门 */
 createUserId?: string;
 /** 紧急程度  1=一般 2=紧急 */
@@ -14358,6 +14368,17 @@ week?: number;
 weekDay?: number;
 }
 
+type ScheduleWeekVo = {
+/** 结束时间 */
+endDate?: string;
+/** 开始时间 */
+startDate?: string;
+/** 周次(数字) */
+week?: number;
+/** 周次-中文(第几周) */
+weekCn?: string;
+}
+
 type ScholarshipApplicantOptionVo = {
 /** 申请人 */
 applicantUserId?: string;
@@ -19065,6 +19086,8 @@ sortCode?: number;
 type UpdateProclamationDto = {
 /** 附件子表 */
 appendixList?: AddNewsAppendixDto[];
+/** 简略标题 */
+briefHead?: string;
 /** 紧急程度  1=一般 2=紧急 */
 emergent?: number;
 /** 标题 */

+ 30 - 0
src/views/educational/class/data.config.ts

@@ -23,6 +23,12 @@ export const tableColumns: BasicColumn[] = [
     align: 'left',
     width: 100,
   },
+  {
+    title: '班主任',
+    dataIndex: 'teacherName',
+    align: 'left',
+    width: 100,
+  },
   {
     title: '所属年级',
     dataIndex: 'gradeName',
@@ -62,12 +68,36 @@ export const tableColumns: BasicColumn[] = [
     align: 'left',
     width: 80,
   },
+  {
+    title: '男生走读',
+    dataIndex: 'maleNotStayCount',
+    align: 'left',
+    width: 80,
+  },
+  {
+    title: '男生住校',
+    dataIndex: 'maleStayCount',
+    align: 'left',
+    width: 80,
+  },
   {
     title: '女生人数',
     dataIndex: 'femaleCount',
     align: 'left',
     width: 80,
   },
+  {
+    title: '女生走读',
+    dataIndex: 'femaleNotStayCount',
+    align: 'left',
+    width: 80,
+  },
+  {
+    title: '女生住校',
+    dataIndex: 'femaleStayCount',
+    align: 'left',
+    width: 80,
+  },
 ];
 
 export const searchFormSchema: FormSchema[] = [

+ 16 - 13
src/views/educational/timetable/index.vue

@@ -24,13 +24,14 @@
   import { tableColumns } from './data.config';
   import {
     getScheduleCourseTable,
+    getScheduleWeekList,
     postScheduleScheduleWeekExportQuery,
   } from '/@/services/apis/ScheduleController';
   import { requestMagicApi } from '/@/api/magicApi';
   import { BasicOptionModel } from '/@/api/model/baseModel';
   import { orderBy } from 'lodash-es';
   import { downloadByData } from '/@/utils/file/download';
-  import { formatToDateTime } from '/@/utils/dateUtil';
+  import { formatToDate, formatToDateTime } from '/@/utils/dateUtil';
 
   const tableText = reactive({
     semesterName: '',
@@ -38,7 +39,6 @@
     week: '',
     classHour: '',
   });
-
   const reloadApi = async (data) => {
     const resData = await getScheduleCourseTable(data);
 
@@ -107,15 +107,6 @@
 
   const tabTitle = ref<string>('课表');
 
-  const getWeeks = () => {
-    const weeks: BasicOptionModel[] = [];
-    for (let i = 0; i < 23; i++) {
-      const week = `${i + 1}`;
-      weeks.push({ label: week, value: week });
-    }
-    return weeks;
-  };
-
   const [registerTable, { getForm }] = useTable({
     api: reloadApi,
     title: tabTitle,
@@ -167,11 +158,23 @@
         {
           field: 'week',
           label: '周次',
-          component: 'Select',
+          component: 'ApiSelect',
           required: true,
           colProps: { span: 8 },
           componentProps: {
-            options: getWeeks(),
+            api: async () => {
+              const data = await getScheduleWeekList({});
+
+              return data.map((item) => {
+                return {
+                  label: `${item.weekCn}(${formatToDate(item.startDate, 'MM.DD')}~${formatToDate(
+                    item.endDate,
+                    'MM.DD',
+                  )})`,
+                  value: item.week,
+                };
+              });
+            },
             getPopupContainer: () => document.body,
           },
         },

+ 18 - 10
src/views/sys/door/components/timetable/calendar.vue

@@ -18,8 +18,8 @@
               <Select
                 v-model:value="state.week"
                 @change="handelWeekChange"
-                :options="getWeeks()"
-                style="width: 120px"
+                :options="state.weekList"
+                style="width: 180px"
                 placeholder="请选择周次"
               />
             </div>
@@ -28,7 +28,7 @@
               <DatePicker
                 v-model:value="dataValue"
                 @change="handelDateChange"
-                style="width: 120px"
+                style="width: 180px"
               />
             </div>
           </div>
@@ -78,6 +78,7 @@
   import {
     getScheduleCourseTable,
     getScheduleCurrentWeek,
+    getScheduleWeekList,
   } from '/@/services/apis/ScheduleController';
   import { BasicOptionModel } from '/@/api/model/baseModel';
   import { BasicTable, useTable } from '/@/components/Table';
@@ -94,6 +95,7 @@
     type: '1',
     week: '',
     semesterId: '',
+    weekList: [],
   });
 
   const reloadApi = async () => {
@@ -202,13 +204,18 @@
     await reload();
   };
 
-  const getWeeks = () => {
-    const weeks: BasicOptionModel[] = [];
-    for (let i = 0; i < 23; i++) {
-      const week = `${i + 1}`;
-      weeks.push({ label: week, value: week });
-    }
-    return weeks;
+  const getWeeks = async () => {
+    const data = await getScheduleWeekList({});
+
+    state.weekList = data.map((item) => {
+      return {
+        label: `${item.weekCn}(${formatToDate(item.startDate, 'MM.DD')}~${formatToDate(
+          item.endDate,
+          'MM.DD',
+        )})`,
+        value: item.week,
+      };
+    });
   };
 
   const getListData = (value: Dayjs) => {
@@ -240,6 +247,7 @@
 
   onMounted(async () => {
     state.week = await getScheduleCurrentWeek({});
+    await getWeeks();
   });
 </script>