lex 1 rok temu
rodzic
commit
dbe2d43f8e

+ 5 - 4
src/views/classList/index.tsx

@@ -90,8 +90,8 @@ export default defineComponent({
         gradeYear: '' as any,
         gradeLevel: ''
       };
-      if (state.popSelectYearList.length > 0) {
-        state.searchForm.gradeYear = state.popSelectYearList[0].id;
+      if (state.popSelectYearList.length > 1) {
+        state.searchForm.gradeYear = state.popSelectYearList[1].id;
       }
       getList();
       setCache({ current: state.searchForm, saveKey: route.path });
@@ -402,8 +402,8 @@ export default defineComponent({
         //   name: '全部学年'
         // });
         state.popSelectYearList = temp || [];
-        if (temp.length > 0 && !state.searchForm.gradeYear) {
-          state.searchForm.gradeYear = temp[0].id;
+        if (temp.length > 1 && !state.searchForm.gradeYear) {
+          state.searchForm.gradeYear = temp[1].id;
         }
       } catch {
         //
@@ -581,6 +581,7 @@ export default defineComponent({
           class={['modalTitle background']}
           title={'创建班级'}>
           <CreateClass
+            gradeYearList={state.popSelectYearList}
             gradeNumList={state.gradeNumList}
             classArray={classArray}
             onGetList={() => getList()}

+ 32 - 2
src/views/classList/modals/createClass.tsx

@@ -16,6 +16,10 @@ export default defineComponent({
       type: Object,
       default: () => ({ id: '' })
     },
+    gradeYearList: {
+      type: Array,
+      default: () => []
+    },
     gradeNumList: {
       type: Array,
       default: () => []
@@ -34,6 +38,7 @@ export default defineComponent({
     const message = useMessage();
     const foemsRef = ref();
     const createClassForm = reactive({
+      gradeYear: null,
       currentGradeNum: null,
       currentClass: null,
       subjectId: null
@@ -46,7 +51,7 @@ export default defineComponent({
         }
         data.uploading = true;
         try {
-          const res = await addClass({ ...createClassForm });
+          await addClass({ ...createClassForm });
           message.success('新增成功');
           emit('close');
           emit('getList');
@@ -61,6 +66,7 @@ export default defineComponent({
     const getConfigSubject = async () => {
       try {
         const { data } = await getConfiguredSubjects({
+          gradeYear: createClassForm.gradeYear,
           currentGradeNum: createClassForm.currentGradeNum,
           currentClass: createClassForm.currentClass
         });
@@ -77,8 +83,13 @@ export default defineComponent({
     };
 
     watch(
-      () => [createClassForm.currentGradeNum, createClassForm.currentClass],
+      () => [
+        createClassForm.gradeYear,
+        createClassForm.currentGradeNum,
+        createClassForm.currentClass
+      ],
       () => {
+        createClassForm.subjectId = null;
         getConfigSubject();
       }
     );
@@ -87,6 +98,25 @@ export default defineComponent({
       <div class={[styles.addClass]}>
         <NForm label-placement="left" model={createClassForm} ref={foemsRef}>
           <NFormItem
+            path="gradeYear"
+            rule={[
+              {
+                required: true,
+                message: '请选择学年'
+              }
+            ]}>
+            <CSelect
+              {...({
+                style: { width: '400px' },
+                options: props.gradeYearList,
+                placeholder: '选择学年',
+                clearable: true,
+                labelField: 'name',
+                valueField: 'id'
+              } as any)}
+              v-model:value={createClassForm.gradeYear}></CSelect>
+          </NFormItem>
+          <NFormItem
             path="currentGradeNum"
             rule={[
               {

+ 9 - 0
src/views/studentList/api.ts

@@ -66,3 +66,12 @@ export const api_setComment = (params: any) => {
     data: params
   });
 };
+
+/**
+ * 当前学级
+ */
+export const api_getCurrentGradeYear = (params: object) => {
+  return request.post('/edu-app/student/getCurrentGradeYear', {
+    data: params
+  });
+};

+ 60 - 3
src/views/studentList/components/baseInfo.tsx

@@ -22,7 +22,7 @@ import maleIcon from '../images/maleIcon.png';
 import femaleIcon from '../images/femaleIcon.png';
 import { useUserStore } from '/src/store/modules/users';
 import { api_teacherUpdate } from '/src/api/user';
-import { resetStudentInfo } from '../api';
+import { api_getCurrentGradeYear, resetStudentInfo } from '../api';
 import UploadFile from '/src/components/upload-file';
 import { getgradeNumList, classArray } from '@/views/classList/contants';
 import { useRoute } from 'vue-router';
@@ -44,7 +44,6 @@ export default defineComponent({
   setup(props) {
     const route = useRoute();
     const message = useMessage();
-    const userStore = useUserStore();
     const loading = ref();
     const formOptions = reactive({
       sexs: [
@@ -56,6 +55,10 @@ export default defineComponent({
     const formRef = ref();
     const showUpdate = ref(false);
     const gradeNumList = ref(getgradeNumList());
+    const gradeYearList = ref([] as any);
+    const historyClassStudent = ref(
+      props.studentInfo.historyClassStudent || ''
+    );
     const formatGradeNum = () => {
       if (props.studentInfo.currentGradeNum) {
         const index = gradeNumList.value.findIndex(
@@ -70,6 +73,18 @@ export default defineComponent({
         return null;
       }
     };
+    const initGrade = (gradeYear: any) => {
+      // 判断学年数组里面是否有存在,如果没有则追加数据
+      const hasGradeYear = gradeYearList.value.findIndex(
+        (i: any) => i.value === gradeYear
+      );
+      if (hasGradeYear === -1 && gradeYear) {
+        gradeYearList.value.push({
+          label: gradeYear,
+          value: gradeYear
+        });
+      }
+    };
     const studentForm = reactive({
       upgradeFlag: (route.query.upgradeFlag as any) == 0 ? 1 : 0, // 是否为历史班
       nickname: props.studentInfo.nickname as any,
@@ -77,10 +92,12 @@ export default defineComponent({
       gender: props.studentInfo.gender,
       id: props.studentInfo.id,
       currentGradeNum: formatGradeNum(),
+      gradeYear: props.studentInfo.gradeYear,
       currentClass: props.studentInfo.currentClass
     });
 
     const classArrayRef = ref([...classArray] as any);
+
     const data = reactive({
       disabled: true,
       openChangePwd: false,
@@ -96,9 +113,16 @@ export default defineComponent({
         studentForm.id = val.id;
         studentForm.currentGradeNum = formatGradeNum();
         studentForm.currentClass = val.currentClass;
+        studentForm.gradeYear = val.gradeYear;
+
+        console.log(props.studentInfo, 'props.studentInfo');
+        initGrade(val.gradeYear);
       }
     );
-    // onMounted(() => {});
+    onMounted(async () => {
+      await getYearList();
+      initGrade(props.studentInfo.gradeYear);
+    });
 
     const handleSave = () => {
       loading.value = true;
@@ -123,9 +147,29 @@ export default defineComponent({
       studentForm.gender = props.studentInfo.gender;
       studentForm.currentGradeNum = formatGradeNum();
       studentForm.currentClass = props.studentInfo.currentClass;
+      studentForm.gradeYear = props.studentInfo.gradeYear;
       data.disabled = true;
     };
 
+    const getYearList = async () => {
+      try {
+        const { data } = await api_getCurrentGradeYear({});
+        const temp = [
+          {
+            label: data + 1 + '学级',
+            value: data + 1
+          },
+          {
+            label: data + '学级',
+            value: data
+          }
+        ];
+        gradeYearList.value = temp;
+      } catch {
+        //
+      }
+    };
+
     const onlyAllowNumber = (value: string) => !value || /^\d+$/.test(value);
     return () => (
       <div class={styles.infoWrap}>
@@ -185,6 +229,18 @@ export default defineComponent({
                 </NFormItem>
               </NGi>
               <NGi>
+                <NFormItem label="学年" path="">
+                  <NSelect
+                    bordered={!data.disabled}
+                    class={styles.select}
+                    showArrow={!data.disabled}
+                    placeholder="请选择学年"
+                    options={gradeYearList.value as any}
+                    v-model:value={studentForm.gradeYear}
+                  />
+                </NFormItem>
+              </NGi>
+              <NGi>
                 <NFormItem label="年级" path="">
                   <NSelect
                     bordered={!data.disabled}
@@ -218,6 +274,7 @@ export default defineComponent({
                 class={styles.btn}
                 strong
                 color="#f24433"
+                disabled={historyClassStudent.value}
                 onClick={() => (data.disabled = false)}>
                 修改信息
               </NButton>

+ 1 - 1
src/views/studentList/index.module.less

@@ -602,5 +602,5 @@
 
 
 .updateStudent {
-  width: 480px;
+  width: 580px;
 }

+ 3 - 3
src/views/studentList/index.tsx

@@ -109,7 +109,7 @@ export default defineComponent({
         gradeYear: '' as any,
         gradeLevel: ''
       };
-      if (state.popSelectYearList.length > 0) {
+      if (state.popSelectYearList.length > 1) {
         state.searchForm.gradeYear = state.popSelectYearList[0].id;
       }
       search();
@@ -154,8 +154,8 @@ export default defineComponent({
         //   name: '全部学年'
         // });
         state.popSelectYearList = temp || [];
-        if (temp.length > 0 && !state.searchForm.gradeYear) {
-          state.searchForm.gradeYear = temp[0].id;
+        if (temp.length > 1 && !state.searchForm.gradeYear) {
+          state.searchForm.gradeYear = temp[1].id;
         }
       } catch {
         //

+ 55 - 2
src/views/studentList/modals/update-student/index.tsx

@@ -12,7 +12,7 @@ import { defineComponent, onMounted, reactive, ref } from 'vue';
 import styles from './index.module.less';
 import { gradeToCN } from '/src/utils/contants';
 import { classGroupList } from '/src/views/home/api';
-import { resetStudentInfo } from '../../api';
+import { api_getCurrentGradeYear, resetStudentInfo } from '../../api';
 import { classArray, getgradeNumList } from '/src/views/classList/contants';
 
 export default defineComponent({
@@ -29,12 +29,14 @@ export default defineComponent({
     const state = reactive({
       uploading: false,
       gradeList: [] as any,
-      classList: [] as any
+      classList: [] as any,
+      gradeYearList: [] as any
     });
     const forms = reactive({
       phone: null,
       nickname: null,
       gender: null,
+      gradeYear: null,
       currentGradeNum: null,
       currentClass: null as any
     });
@@ -66,14 +68,46 @@ export default defineComponent({
       });
     };
 
+    const getYearList = async () => {
+      try {
+        const { data } = await api_getCurrentGradeYear({});
+        const temp = [
+          {
+            label: data + 1 + '学级',
+            value: data + 1
+          },
+          {
+            label: data + '学级',
+            value: data
+          }
+        ];
+        state.gradeYearList = temp;
+      } catch {
+        //
+      }
+    };
+
     onMounted(async () => {
       const row = props.row;
+      getYearList();
       if (row.id) {
         forms.nickname = row.nickname;
         forms.phone = row.phone;
         forms.gender = row.gender;
         forms.currentGradeNum = row.currentGradeNum;
         forms.currentClass = row.currentClass;
+        forms.gradeYear = row.gradeYear;
+      }
+
+      // 判断学年数组里面是否有存在,如果没有则追加数据
+      const hasGradeYear = state.gradeYearList.findIndex(
+        (i: any) => i.value === row.gradeYear
+      );
+      if (hasGradeYear === -1 && row.gradeYear) {
+        state.gradeYearList.push({
+          label: row.gradeYear,
+          value: row.gradeYear
+        });
       }
       if (forms.currentGradeNum) {
         const index = gradeNumList.value.findIndex(
@@ -152,6 +186,25 @@ export default defineComponent({
             />
           </NFormItem>
           <NFormItem
+            label="学年"
+            path="gradeYear"
+            rule={[
+              {
+                required: true,
+                message: '请选择学年',
+                trigger: 'change',
+                type: 'number'
+              }
+            ]}>
+            <NSelect
+              v-model:value={forms.gradeYear}
+              placeholder="请选择学年"
+              options={state.gradeYearList as any}
+              clearable
+              filterable
+            />
+          </NFormItem>
+          <NFormItem
             label="年级"
             path="currentGradeNum"
             rule={[