Browse Source

添加样式与搜索

lex 1 year ago
parent
commit
27beddfcec

+ 2 - 2
dev-dist/sw.js

@@ -67,7 +67,7 @@ if (!self.define) {
     });
   };
 }
-define(['./workbox-42b6be84'], (function (workbox) { 'use strict';
+define(['./workbox-5357ef54'], (function (workbox) { 'use strict';
 
   self.skipWaiting();
   workbox.clientsClaim();
@@ -82,7 +82,7 @@ define(['./workbox-42b6be84'], (function (workbox) { 'use strict';
     "revision": "3ca0b8505b4bec776b69afdba2768812"
   }, {
     "url": "index.html",
-    "revision": "0.0tmcvprhh6o"
+    "revision": "0.36fmohjk2ko"
   }], {});
   workbox.cleanupOutdatedCaches();
   workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

+ 54 - 54
src/views/attend-class/model/train-update/index.tsx

@@ -160,62 +160,62 @@ export default defineComponent({
               </NButton>
             </NSpace>
           </NFormItem>
+          <div class={styles.scoreGroup}>
+            <NFormItem
+              label={forms.type === 'PRACTICE' ? '练习小节' : '评测小节'}
+              path="minScore"
+              rule={[
+                {
+                  required: true,
+                  message: '请输入最小练习小节',
+                  trigger: ['blur', 'change'],
+                  type: 'number'
+                }
+              ]}>
+              <NInputNumber
+                v-model:value={forms.minScore}
+                showButton={false}
+                min={1}
+                max={forms.baseMaxScore}
+                placeholder="最小练习小节"
+                onUpdate:value={() => {
+                  forms.maxScore = null;
+                }}
+                clearable
+              />
+            </NFormItem>
+            <div
+              style={{
+                '--n-feedback-height': '24px',
+                display: 'flex',
+                alignItems: 'center',
+                margin: '-2px 2% 0 2%',
+                marginBottom: 'var(--n-feedback-height)'
+              }}>
+              -
+            </div>
+            <NFormItem
+              path="maxScore"
+              rule={[
+                {
+                  required: true,
+                  message: '请输入最大练习小节',
+                  trigger: ['blur', 'change'],
+                  type: 'number'
+                }
+              ]}>
+              <NInputNumber
+                v-model:value={forms.maxScore}
+                showButton={false}
+                min={forms.minScore || 1}
+                max={forms.baseMaxScore}
+                placeholder="最大练习小节"
+                clearable
+              />
+            </NFormItem>
+          </div>
           {forms.type === 'PRACTICE' && (
             <>
-              <div class={styles.scoreGroup}>
-                <NFormItem
-                  label="练习小节"
-                  path="minScore"
-                  rule={[
-                    {
-                      required: true,
-                      message: '请输入最小练习小节',
-                      trigger: ['blur', 'change'],
-                      type: 'number'
-                    }
-                  ]}>
-                  <NInputNumber
-                    v-model:value={forms.minScore}
-                    showButton={false}
-                    min={1}
-                    max={forms.baseMaxScore}
-                    placeholder="最小练习小节"
-                    onUpdate:value={() => {
-                      forms.maxScore = null;
-                    }}
-                    clearable
-                  />
-                </NFormItem>
-                <div
-                  style={{
-                    '--n-feedback-height': '24px',
-                    display: 'flex',
-                    alignItems: 'center',
-                    margin: '-2px 2% 0 2%',
-                    marginBottom: 'var(--n-feedback-height)'
-                  }}>
-                  -
-                </div>
-                <NFormItem
-                  path="maxScore"
-                  rule={[
-                    {
-                      required: true,
-                      message: '请输入最大练习小节',
-                      trigger: ['blur', 'change'],
-                      type: 'number'
-                    }
-                  ]}>
-                  <NInputNumber
-                    v-model:value={forms.maxScore}
-                    showButton={false}
-                    min={forms.minScore || 1}
-                    max={forms.baseMaxScore}
-                    placeholder="最大练习小节"
-                    clearable
-                  />
-                </NFormItem>
-              </div>
               <NFormItem
                 label="练习速度"
                 path="practiceSpeed"

+ 49 - 1
src/views/classList/components/classRecord.tsx

@@ -9,9 +9,13 @@ import teacherIcon from '@components/layout/images/teacherIcon.png';
 import dayjs from 'dayjs';
 import { getTimes } from '/src/utils';
 import TheEmpty from '/src/components/TheEmpty';
+import CSelect from '/src/components/CSelect';
+import { api_teacherPage } from '../../setting/api';
+import { useUserStore } from '/src/store/modules/users';
 export default defineComponent({
   name: 'class-record',
   setup() {
+    const user = useUserStore();
     const route = useRoute();
 
     const formatDefaultTime = () => {
@@ -31,12 +35,14 @@ export default defineComponent({
 
     const state = reactive({
       searchForm: {
+        teacherId: null,
         createTimer: formatDefaultTime() as any
       },
+      teacherList: [],
       loading: false,
       pagination: {
         page: 1,
-        rows: 10,
+        rows: 12,
         pageTotal: 0
       },
       tableList: [] as any
@@ -48,6 +54,7 @@ export default defineComponent({
 
     const onReset = () => {
       state.searchForm = {
+        teacherId: null,
         createTimer: formatDefaultTime() as any
       };
       search();
@@ -57,6 +64,7 @@ export default defineComponent({
       try {
         const { data } = await courseSchedulePage({
           classGroupId: route.query.id,
+          teacherId: state.searchForm.teacherId,
           ...getTimes(
             state.searchForm.createTimer,
             ['startTime', 'endTime'],
@@ -77,7 +85,29 @@ export default defineComponent({
         state.loading = false;
       }
     };
+
+    const getTeachers = async () => {
+      try {
+        const { data } = await api_teacherPage({
+          schoolId: user.info.schoolInfos?.[0]?.id,
+          page: 1,
+          rows: 1000
+        });
+        const tempList = data.rows || [];
+        const tempT = [] as any;
+        tempList.forEach((item: any) => {
+          tempT.push({
+            label: item.nickname,
+            value: item.id
+          });
+        });
+        state.teacherList = tempT;
+      } catch {
+        //
+      }
+    };
     onMounted(() => {
+      getTeachers();
       getList();
     });
     return () => (
@@ -85,6 +115,23 @@ export default defineComponent({
         <div class={styles.searchList}>
           <NForm label-placement="left" inline>
             <NFormItem>
+              <CSelect
+                {...({
+                  options: [
+                    {
+                      label: '全部老师',
+                      value: null
+                    },
+                    ...state.teacherList
+                  ],
+                  placeholder: '全部老师',
+                  clearable: true,
+                  inline: true
+                } as any)}
+                v-model:value={state.searchForm.teacherId}></CSelect>
+            </NFormItem>
+
+            <NFormItem>
               <CDatePicker
                 v-model:value={state.searchForm.createTimer}
                 timerValue={state.searchForm.createTimer}
@@ -154,6 +201,7 @@ export default defineComponent({
               v-model:pageSize={state.pagination.rows}
               v-model:pageTotal={state.pagination.pageTotal}
               onList={getList}
+              pageSizes={[12, 24, 36, 48]}
               sync
               saveKey="classRecord-key"
             />

BIN
src/views/home/img/icon-book.png


+ 14 - 3
src/views/home/index.module.less

@@ -76,8 +76,19 @@
     position: absolute;
     bottom: 0;
     right: -23px;
-    width: 314px;
-    height: 384px;
+    width: 353px;
+    height: 432px;
+  }
+
+  .teacherBook {
+    position: absolute;
+    bottom: -40px;
+    right: 137px;
+    z-index: 9;
+    width: 131px;
+    height: 131px;
+    background: url('./img/icon-book.png') no-repeat center;
+    background-size: contain;
   }
 
   .teacherWoman {
@@ -280,4 +291,4 @@
 
 .subjectSyncModal {
   width: 920px;
-}
+}

+ 4 - 1
src/views/home/index.tsx

@@ -129,7 +129,10 @@ export default defineComponent({
             </div>
 
             {userStore.getUserInfo.gender === 1 ? (
-              <img src={teacherMan} class={styles.teacherMan} />
+              <div>
+                <img src={teacherMan} class={styles.teacherMan} />
+                <span class={styles.teacherBook}></span>
+              </div>
             ) : (
               <img src={teacherWoman} class={styles.teacherWoman} />
             )}