Browse Source

Merge branch 'iteration-0906' into jenkins

lex 1 year ago
parent
commit
ac02f46f97

+ 18 - 13
src/views/classList/components/classRecord.tsx

@@ -13,13 +13,25 @@ export default defineComponent({
   name: 'class-record',
   setup() {
     const route = useRoute();
-    const nowTime = dayjs().format('YYYY-MM-DD');
-    const state = reactive({
-      searchForm: {
-        createTimer: [
+
+    const formatDefaultTime = () => {
+      const gradeYear: any = route.query.gradeYear;
+      if (gradeYear) {
+        const yearStr = `${gradeYear}-9-1`;
+        const yearStrEnd = `${Number(gradeYear) + 1}-8-31`;
+        return [dayjs(yearStr).valueOf(), dayjs(yearStrEnd).valueOf()];
+      } else {
+        const nowTime = dayjs().format('YYYY-MM-DD');
+        return [
           dayjs(nowTime).subtract(1, 'month').valueOf(),
           dayjs(nowTime).valueOf()
-        ] as any
+        ];
+      }
+    };
+
+    const state = reactive({
+      searchForm: {
+        createTimer: formatDefaultTime() as any
       },
       loading: false,
       pagination: {
@@ -36,20 +48,13 @@ export default defineComponent({
 
     const onReset = () => {
       state.searchForm = {
-        createTimer: [
-          dayjs(nowTime).subtract(1, 'month').valueOf(),
-          dayjs(nowTime).valueOf()
-        ] as any
+        createTimer: formatDefaultTime() as any
       };
       search();
     };
     const getList = async () => {
       state.loading = true;
       try {
-        console.log(
-          state.searchForm.createTimer,
-          'state.searchForm.createTimer'
-        );
         const { data } = await courseSchedulePage({
           classGroupId: route.query.id,
           ...getTimes(

+ 104 - 10
src/views/classList/index.tsx

@@ -25,6 +25,7 @@ import TheTooltip from '/src/components/TheTooltip';
 import PreviewWindow from '../preview-window';
 import ResetSubject from './modals/resetSubject';
 import UpdateSubject from './modals/updateSubject';
+import { getGradeLevelList, getGradeYearList } from '../home/api';
 export default defineComponent({
   name: 'class-classList',
   setup(props, { emit }) {
@@ -33,7 +34,9 @@ export default defineComponent({
         keyword: null as any,
         currentClass: null,
         currentGradeNum: null,
-        subjectId: null
+        subjectId: null,
+        gradeYear: null,
+        gradeLevel: ''
       },
       orchestraType: null,
       courseTypeCode: null,
@@ -58,7 +61,9 @@ export default defineComponent({
       groupBtnLoading: false, // 按钮是否在请求中
       subjectList: [] as any,
       showResetClass: false,
-      showSubjectClass: false
+      showSubjectClass: false,
+      popSelectYearList: [] as any,
+      popSelectLevelList: [] as any
     });
     const formRef = ref();
     const message = useMessage();
@@ -75,7 +80,9 @@ export default defineComponent({
         keyword: null as any,
         currentClass: null,
         currentGradeNum: null,
-        subjectId: null
+        subjectId: null,
+        gradeYear: null,
+        gradeLevel: ''
       };
       getList();
     };
@@ -130,6 +137,17 @@ export default defineComponent({
           key: 'name'
         },
         {
+          title: '学年',
+          key: 'gradeYear'
+        },
+        {
+          title: '学级',
+          key: 'gradeLevel',
+          render(row: any) {
+            return row.gradeLevel ? `${row.gradeLevel}级` : '';
+          }
+        },
+        {
           title: '班级声部',
           key: 'subjectName'
         },
@@ -169,7 +187,11 @@ export default defineComponent({
                         onClick={() => {
                           router.push({
                             path: '/classDetail',
-                            query: { name: row.name, id: row.id }
+                            query: {
+                              name: row.name,
+                              id: row.id,
+                              gradeYear: row.gradeYear
+                            }
                           });
                         }}>
                         详情
@@ -182,7 +204,11 @@ export default defineComponent({
                       onClick={() => {
                         router.push({
                           path: '/classDetail',
-                          query: { name: row.name, id: row.id }
+                          query: {
+                            name: row.name,
+                            id: row.id,
+                            gradeYear: row.gradeYear
+                          }
                         });
                       }}>
                       详情
@@ -217,7 +243,7 @@ export default defineComponent({
                   {index == 0 ? (
                     <NButton
                       {...{ id: 'class-2' }}
-                      disabled={!(row.preStudentNum > 0)}
+                      disabled={!row.upgradeFlag}
                       type="primary"
                       text
                       onClick={() => classesBegin(row)}>
@@ -225,7 +251,7 @@ export default defineComponent({
                     </NButton>
                   ) : (
                     <NButton
-                      disabled={!(row.preStudentNum > 0)}
+                      disabled={!row.upgradeFlag}
                       type="primary"
                       text
                       onClick={() => classesBegin(row)}>
@@ -313,9 +339,53 @@ export default defineComponent({
       }
       state.groupBtnLoading = false;
     };
-    onMounted(() => {
-      getList();
-      getSubjectList();
+
+    // 获取学年
+    const getYearList = async () => {
+      try {
+        const { data } = await getGradeYearList();
+        console.log(data, 'data getYearList');
+        const temp = data || [];
+        temp.forEach((i: any) => {
+          i.name = i.name + '学年';
+        });
+        state.popSelectYearList = temp || [];
+        if (temp.length > 0) {
+          state.searchForm.gradeYear = temp[0].id;
+        }
+      } catch {
+        //
+      }
+    };
+    // 获取学级
+    const getLevelList = async () => {
+      try {
+        const { data } = await getGradeLevelList();
+        console.log(data, 'data getLevelList');
+        const temp = data || [];
+        temp.forEach((i: any) => {
+          i.name = i.name + '级';
+        });
+        temp.unshift({
+          id: '',
+          name: '全部学级'
+        });
+        state.popSelectLevelList = temp || [];
+        if (temp.length > 0) {
+          state.searchForm.gradeLevel = temp[0].id;
+        }
+      } catch {
+        //
+      }
+    };
+
+    onMounted(async () => {
+      state.loading = true;
+      await getYearList();
+      await getLevelList();
+      await getList();
+      await getSubjectList();
+      state.loading = false;
     });
     return () => (
       <div class={styles.listWrap}>
@@ -330,6 +400,30 @@ export default defineComponent({
                   (state.searchForm.keyword = val)
                 }></SearchInput>
             </NFormItem>
+            <NFormItem>
+              <CSelect
+                {...({
+                  options: state.popSelectYearList,
+                  placeholder: '选择学年',
+                  clearable: true,
+                  inline: true,
+                  labelField: 'name',
+                  valueField: 'id'
+                } as any)}
+                v-model:value={state.searchForm.gradeYear}></CSelect>
+            </NFormItem>
+            <NFormItem>
+              <CSelect
+                {...({
+                  options: state.popSelectLevelList,
+                  placeholder: '选择学级',
+                  clearable: true,
+                  inline: true,
+                  labelField: 'name',
+                  valueField: 'id'
+                } as any)}
+                v-model:value={state.searchForm.gradeLevel}></CSelect>
+            </NFormItem>
 
             <NFormItem>
               <CSelect

+ 18 - 0
src/views/home/api.ts

@@ -27,3 +27,21 @@ export const updatePassword = (params: any) => {
     requestType: 'form'
   });
 };
+
+/**
+ * 首页 - 获取学年
+ */
+export const getGradeYearList = (params?: any) => {
+  return request.get('/edu-app/classGroup/getGradeYearList', {
+    params
+  });
+};
+
+/**
+ * 首页 - 获取学级
+ */
+export const getGradeLevelList = (params?: any) => {
+  return request.get('/edu-app/classGroup/getGradeLevelList', {
+    params
+  });
+};

+ 26 - 1
src/views/home/index.module.less

@@ -5,12 +5,14 @@
   // justify-content: space-between;
   align-content: stretch;
   // min-height: 100%;
+  height: 100%;
 }
 
 .homeInfoLeft {
   display: flex;
   flex-direction: column;
   width: 1286px;
+  // height: 100%;
 }
 
 .homeBanner {
@@ -203,6 +205,7 @@
   background-size: 86px 66px;
   border-radius: 16px;
   padding: 22px 29px 34px 54px;
+  flex: 1 auto;
 
   .toolTips {
     width: 370px;
@@ -604,8 +607,9 @@
     .rightTeachingWrapTitle {
       display: flex;
       flex-direction: row;
-      align-items: center;
+      // align-items: center;
       justify-content: space-between;
+      flex-direction: column;
 
       .lookMore {
         cursor: pointer;
@@ -624,10 +628,31 @@
           height: 16px;
         }
       }
+
+      .classSearchList {
+        display: flex;
+        gap: 12px;
+        padding-top: 12px;
+
+        :global {
+          .n-base-selection {
+            --n-height: 35px !important;
+            --n-font-size: 15px !important;
+            --n-border: 1px solid #DEDEDE !important;
+            --n-border-radius: 8px !important;
+          }
+        }
+      }
     }
   }
 }
 
+:global {
+  .n-base-select-menu .n-base-select-option.n-base-select-option--show-checkmark {
+    padding-right: var(--n-option-padding);
+  }
+}
+
 .teachListWrap {
   position: relative;
 

+ 144 - 110
src/views/home/index.tsx

@@ -6,7 +6,8 @@ import {
   NPopselect,
   NModal,
   useMessage,
-  NSpin
+  NSpin,
+  NSelect
 } from 'naive-ui';
 import headerD from './images/headerD.png';
 import defultHeade from '@/components/layout/images/teacherIcon.png';
@@ -27,7 +28,12 @@ import dayjs from 'dayjs';
 import { gradeToCN, weekToCN } from '/src/utils/contants';
 import { useCatchStore } from '/src/store/modules/catchData';
 import TeachGroup from './modals/teachGroup';
-import { classGroupList, courseSchedulePage } from './api';
+import {
+  classGroupList,
+  courseSchedulePage,
+  getGradeLevelList,
+  getGradeYearList
+} from './api';
 import TheEmpty from '/src/components/TheEmpty';
 import HomeGuide from '/src/custom-plugins/guide-page/home-guide';
 import TimerMeter from '/src/components/timerMeter';
@@ -62,7 +68,7 @@ export default defineComponent({
     const showModalTime = ref(false);
     const forms = reactive({
       showAttendClass: false,
-      useStatus: false,
+      // useStatus: false,
       studentList: [] as any,
       bookVersionId: null,
       classGroupId: null,
@@ -80,9 +86,13 @@ export default defineComponent({
       classSelect: {
         currentGradeNum: null,
         currentClass: null,
-        name: ''
+        name: '',
+        gradeLevel: '',
+        gradeYear: null
       } as any,
       popSelectOptions: [] as any,
+      popSelectYearList: [] as any,
+      popSelectLevelList: [] as any,
       showGuide: false,
       showPreview: false,
       itemPreview: {} as any
@@ -92,15 +102,15 @@ export default defineComponent({
     // 学生列表
     // getStdentList
 
-    const onUseConfirm = (item: any) => {
-      forms.classSelect = {
-        currentGradeNum: item.currentGradeNum,
-        currentClass: item.classGroupId,
-        name: item.name
-      };
+    // const onUseConfirm = (item: any) => {
+    //   forms.classSelect = {
+    //     currentGradeNum: item.currentGradeNum,
+    //     currentClass: item.classGroupId,
+    //     name: item.name
+    //   };
 
-      getCourseSchedulePage();
-    };
+    //   getCourseSchedulePage();
+    // };
 
     // 获取年级班级
     const getClassList = async () => {
@@ -112,11 +122,14 @@ export default defineComponent({
         cList.forEach((item: any, index: number) => {
           if (index === 0) {
             const temp = item.classGroupList[0];
-            forms.classSelect = {
-              currentGradeNum: item.currentGradeNum,
-              currentClass: temp.id,
-              name: temp.name
-            };
+            forms.classSelect.currentGradeNum = item.currentGradeNum;
+            forms.classSelect.currentClass = temp.id;
+            forms.classSelect.name = temp.name;
+            //  = {
+            //   currentGradeNum: item.currentGradeNum,
+            //   currentClass: temp.id,
+            //   name: temp.name
+            // };
           }
 
           const classList: any = [];
@@ -148,11 +161,52 @@ export default defineComponent({
       }
     };
 
+    // 获取学年
+    const getYearList = async () => {
+      try {
+        const { data } = await getGradeYearList();
+        console.log(data, 'data getYearList');
+        const temp = data || [];
+        temp.forEach((i: any) => {
+          i.name = i.name + '学年';
+        });
+        forms.popSelectYearList = temp || [];
+        if (temp.length > 0) {
+          forms.classSelect.gradeYear = temp[0].id;
+        }
+      } catch {
+        //
+      }
+    };
+    // 获取学级
+    const getLevelList = async () => {
+      try {
+        const { data } = await getGradeLevelList();
+        console.log(data, 'data getLevelList');
+        const temp = data || [];
+        temp.forEach((i: any) => {
+          i.name = i.name + '级';
+        });
+        temp.unshift({
+          id: '',
+          name: '全部学级'
+        });
+        forms.popSelectLevelList = temp || [];
+        if (temp.length > 0) {
+          forms.classSelect.gradeLevel = temp[0].id;
+        }
+      } catch {
+        //
+      }
+    };
+
     const getCourseSchedulePage = async () => {
       forms.classLoading = true;
       try {
         const { data } = await courseSchedulePage({
           classGroupId: forms.classSelect.currentClass,
+          gradeLevel: forms.classSelect.gradeLevel,
+          gradeYear: forms.classSelect.gradeYear,
           page: 1,
           rows: 4,
           teacherId: userStore.getUserInfo.id
@@ -193,8 +247,10 @@ export default defineComponent({
     };
 
     onMounted(async () => {
+      forms.classLoading = true;
+      await getYearList();
+      await getLevelList();
       await getClassList();
-
       await catchStore.getSubjects();
 
       await getCourseSchedulePage();
@@ -210,65 +266,16 @@ export default defineComponent({
       } else {
         forms.showGuide = true;
       }
-    });
 
-    // const formsRef = ref();
-    // const gotoClassPage = () => {
-    //   formsRef.value.validate(async (error: any) => {
-    //     if (error) return;
-    //     try {
-    //       const { data } = await queryCourseware({
-    //         coursewareDetailKnowledgeId: forms.unit,
-    //         subjectId: forms.subjectId,
-    //         page: 1,
-    //         rows: 99
-    //       });
-    //       if (data.rows && data.rows.length > 0) {
-    //         await courseScheduleStart({
-    //           lessonCoursewareKnowledgeDetailId: forms.unit,
-    //           classGroupId: forms.applyClassItem?.classGroupId
-    //         });
-
-    //         if (window.matchMedia('(display-mode: standalone)').matches) {
-    //           forms.showPreview = true;
-    //           forms.itemPreview = {
-    //             type: 'class',
-    //             classGroupId: forms.applyClassItem?.classGroupId,
-    //             subjectId: forms.subjectId,
-    //             detailId: forms.unit
-    //           };
-    //           globalState.application = window.matchMedia(
-    //             '(display-mode: standalone)'
-    //           ).matches;
-    //           // 加全屏
-    //           fscreen();
-    //         } else {
-    //           const { href } = router.resolve({
-    //             path: '/attend-class',
-    //             query: {
-    //               type: 'class',
-    //               classGroupId: forms.applyClassItem?.classGroupId,
-    //               subjectId: forms.subjectId,
-    //               detailId: forms.unit
-    //             }
-    //           });
-    //           window.open(href, +new Date() + '');
-    //         }
-    //       } else {
-    //         message.error('当前章节暂无课件,请重新选择');
-    //       }
-    //     } catch {
-    //       //
-    //     }
-    //   });
+      forms.classLoading = false;
+    });
+    // const clearStorng = () => {
+    //   localStorage.removeItem('teacher-guideInfo');
+    //   forms.showGuide = false;
+    //   setTimeout(() => {
+    //     forms.showGuide = true;
+    //   }, 500);
     // };
-    const clearStorng = () => {
-      localStorage.removeItem('teacher-guideInfo');
-      forms.showGuide = false;
-      setTimeout(() => {
-        forms.showGuide = true;
-      }, 500);
-    };
 
     return () => (
       <div class={styles.homeWrap}>
@@ -395,39 +402,66 @@ export default defineComponent({
                 <div class={styles.titleDot}></div>上课记录
               </h3>
               {forms.classSelect.name && (
-                <NPopselect
-                  v-model:value={forms.classSelect.currentClass}
-                  options={forms.popSelectOptions}
-                  trigger="click"
-                  onUpdate:value={(val: any) => {
-                    console.log(val, '1212');
-                    forms.popSelectOptions.forEach((item: any) => {
-                      if (item.value === val) {
-                        forms.classSelect = {
-                          currentGradeNum: item.currentGradeNum,
-                          currentClass: item.value,
-                          name: item.label
-                        };
-                        getCourseSchedulePage();
-                      }
-                    });
-                  }}>
-                  <div
-                    class={styles.lookMore}
-                    // onClick={() => (forms.useStatus = true)}
-                  >
-                    {forms.classSelect.name}
-                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
-                      <path
-                        d="M6 9l6 6l6-6"
-                        fill="none"
-                        stroke="currentColor"
-                        stroke-width="2"
-                        stroke-linecap="round"
-                        stroke-linejoin="round"></path>
-                    </svg>
-                  </div>
-                </NPopselect>
+                <div class={styles.classSearchList}>
+                  <NSelect
+                    v-model:value={forms.classSelect.currentClass}
+                    class={styles.lookMoreSearch}
+                    placeholder="选择班级"
+                    options={forms.popSelectOptions}
+                    onUpdate:value={(val: any) => {
+                      forms.popSelectOptions.forEach((item: any) => {
+                        if (item.value === val) {
+                          forms.classSelect.currentGradeNum =
+                            item.currentGradeNum;
+                          forms.classSelect.currentClass = item.value;
+                          forms.classSelect.name = item.label;
+                          getCourseSchedulePage();
+                        }
+                      });
+                    }}></NSelect>
+                  <NSelect
+                    v-model:value={forms.classSelect.gradeYear}
+                    class={styles.lookMoreSearch}
+                    placeholder="全部学年"
+                    options={forms.popSelectYearList}
+                    labelField="name"
+                    valueField="id"
+                    onUpdate:value={(val: any) => {
+                      // forms.popSelectOptions.forEach((item: any) => {
+                      //   if (item.value === val) {
+                      //     forms.classSelect = {
+                      //       currentGradeNum: item.currentGradeNum,
+                      //       currentClass: item.value,
+                      //       name: item.label
+                      //     };
+                      //     getCourseSchedulePage();
+                      //   }
+                      // });
+                      forms.classSelect.gradeYear = val;
+                      getCourseSchedulePage();
+                    }}></NSelect>
+                  <NSelect
+                    v-model:value={forms.classSelect.gradeLevel}
+                    class={styles.lookMoreSearch}
+                    placeholder="全部学级"
+                    options={forms.popSelectLevelList}
+                    labelField="name"
+                    valueField="id"
+                    onUpdate:value={(val: any) => {
+                      // forms.popSelectOptions.forEach((item: any) => {
+                      //   if (item.value === val) {
+                      //     forms.classSelect = {
+                      //       currentGradeNum: item.currentGradeNum,
+                      //       currentClass: item.value,
+                      //       name: item.label
+                      //     };
+                      //     getCourseSchedulePage();
+                      //   }
+                      // });
+                      forms.classSelect.gradeLevel = val;
+                      getCourseSchedulePage();
+                    }}></NSelect>
+                </div>
               )}
             </div>
             <NSpin show={forms.classLoading} style={{ minHeight: '40vh' }}>
@@ -470,7 +504,7 @@ export default defineComponent({
           </div>
         </div>
 
-        <NModal
+        {/* <NModal
           v-model:show={forms.useStatus}
           preset="card"
           showIcon={false}
@@ -486,7 +520,7 @@ export default defineComponent({
             onConfirm={(item: any) => onUseConfirm(item)}
             onClose={() => (forms.useStatus = false)}
           />
-        </NModal>
+        </NModal> */}
 
         <NModal
           class={['modalTitle background']}

+ 1 - 0
src/views/prepare-lessons/model/attend-class/index.tsx

@@ -113,6 +113,7 @@ export default defineComponent({
         const { data } = await classGroupPage({
           page: 1,
           rows: 99,
+          upgradeFlag: true,
           ...forms
         });
         const result = data.rows || [];

+ 2 - 2
vite.config.ts

@@ -23,8 +23,8 @@ function resolve(dir: string) {
 }
 // https://vitejs.dev/config/
 // https://github.com/vitejs/vite/issues/1930 .env
-// const proxyUrl = 'https://dev.kt.colexiu.com/';
-const proxyUrl = 'https://test.lexiaoya.cn';
+const proxyUrl = 'https://dev.kt.colexiu.com/';
+// const proxyUrl = 'https://test.lexiaoya.cn';
 export default defineConfig({
   base: './',
   plugins: [