Browse Source

添加报名

lex 1 year ago
parent
commit
36c5772974

+ 96 - 7
src/views/student-register/index.tsx

@@ -206,8 +206,21 @@ export default defineComponent({
       paymentStatus: false,
       orderTimer: null as any
     });
+
+    /*
+      新用户:
+      autoRegister: true
+      loginType: 'SMS'
+
+      已存在用户:
+      autoRegister: false
+      loginType: 'TOKEN'
+      password: xxx
+    */
+
     const studentInfo = reactive({
       autoRegister: true,
+      multiUser: true, // 是否为多用户
       client_id: 'cooleshow-student',
       client_secret: 'cooleshow-student',
       extra: {
@@ -448,7 +461,8 @@ export default defineComponent({
           forms.submitLoading = false;
           return;
         }
-        const { extra, ...res } = studentInfo;
+        const { extra, loginType, autoRegister, password, ...res } =
+          studentInfo;
         if (
           forms.studentItem.nickname !== extra.nickname &&
           forms.isRegister === ''
@@ -487,7 +501,8 @@ export default defineComponent({
         // 判断是否为同一个学校
         if (
           forms.studentItem.schoolId !== forms.registerDetails.schoolId &&
-          !forms.isChangeSchool
+          !forms.isChangeSchool &&
+          forms.isRegister !== 'create'
         ) {
           otherParams.showOtherMessage = `您已绑定【${
             forms.registerDetails.schoolName || ''
@@ -518,15 +533,39 @@ export default defineComponent({
         //     return;
         //   }
         // }
+
+        /*
+      新用户:
+      autoRegister: true
+      loginType: 'SMS'
+
+      已存在用户:
+      autoRegister: false
+      loginType: 'TOKEN'
+      password: xxx
+    */
+        let tLoginType = loginType,
+          tAutoRegister = autoRegister,
+          tPassword = password;
+        if (forms.isRegister === 'update') {
+          tLoginType = 'TOKEN';
+          tAutoRegister = false;
+          tPassword = forms.studentItem.token;
+        }
         const result = await request.post('/edu-app/userlogin', {
           requestType: 'form',
           data: {
+            loginType: tLoginType,
+            autoRegister: tAutoRegister,
+            password: tPassword,
             ...res,
             extra: JSON.stringify({
               ...extra,
               giftVipDay:
                 forms.detailVip.membershipDays || 0 + forms.giftVipDay || 0,
-              schoolId: forms.schoolId
+              schoolId: forms.isChangeSchool
+                ? forms.studentItem.schoolId
+                : forms.schoolId
             })
           }
         });
@@ -575,14 +614,14 @@ export default defineComponent({
           });
           setLogin(res.data);
 
-          await onRegisterSubmit();
+          // await onRegisterSubmit();
         }
       } catch {
-      } finally {
-        forms.submitLoading = false;
         // 重置信息
         forms.isRegister = '';
         forms.isChangeSchool = false;
+      } finally {
+        forms.submitLoading = false;
       }
     };
 
@@ -621,6 +660,9 @@ export default defineComponent({
         await paymentContinue();
       } catch {
         //
+        // 重置信息
+        forms.isRegister = '';
+        forms.isChangeSchool = false;
       }
     };
 
@@ -744,6 +786,9 @@ export default defineComponent({
         }
       } catch {
         //
+        // 重置信息
+        forms.isRegister = '';
+        forms.isChangeSchool = false;
       }
       return result;
     };
@@ -838,6 +883,9 @@ export default defineComponent({
         }
       } catch (e: any) {
         console.log(e, 'any');
+        // 重置信息
+        forms.isRegister = '';
+        forms.isChangeSchool = false;
       }
     };
 
@@ -875,6 +923,9 @@ export default defineComponent({
         }
       } catch {
         //
+        // 重置信息
+        forms.isRegister = '';
+        forms.isChangeSchool = false;
       }
     };
 
@@ -1265,7 +1316,11 @@ export default defineComponent({
                       styles.studentIcon,
                       !forms.studentItem.userId && styles.studentIconAdd
                     ]}></i>
-                  <span>新增学生</span>
+                  <span>
+                    {forms.studentItem.userId
+                      ? forms.studentItem.nickname
+                      : '新增学生'}
+                  </span>
                 </div>
               )}
 
@@ -1805,6 +1860,40 @@ export default defineComponent({
           <SelectStudent
             studentItem={forms.studentItem}
             list={forms.studentList}
+            onClose={() => (forms.showSelectStudent = false)}
+            onConfirm={(val: any) => {
+              forms.studentItem = val;
+              if (val.userId) {
+                const firstStudent = val;
+                studentInfo.extra.nickname = firstStudent.nickname;
+                const tempGrade: any = forms.gradeList || [];
+                tempGrade?.forEach((i: any) => {
+                  if (i.value === firstStudent.currentGradeNum) {
+                    forms.instrumentCode = i.instrumentCode;
+                    forms.gradeNumText = i.text;
+                    studentInfo.extra.currentGradeNum =
+                      firstStudent.currentGradeNum;
+                    if (forms.schoolInstrumentSetType === 'CLASS') {
+                      forms.classList = i.classList;
+                    }
+                  }
+                });
+                forms.classList.forEach((i: any) => {
+                  if (i.value === firstStudent.currentClass) {
+                    forms.currentClassText = i.text;
+                    studentInfo.extra.currentClass = firstStudent.currentClass;
+                  }
+                });
+                studentInfo.extra.gender = firstStudent.gender;
+              } else {
+                forms.isRegister = 'create';
+                forms.isChangeSchool = false;
+                studentInfo.extra.nickname = '';
+                studentInfo.extra.currentGradeNum = '';
+                studentInfo.extra.currentClass = '';
+                studentInfo.extra.gender = 1;
+              }
+            }}
           />
         </Popup>
       </div>

+ 2 - 1
src/views/student-register/modal/select-student/index.module.less

@@ -8,6 +8,8 @@
 }
 
 .selectStudent {
+  padding: 0 20px 22px;
+
   .cell {
     display: flex;
     align-items: center;
@@ -64,7 +66,6 @@
 }
 
 .addStudentBtn {
-  margin: 0 20px 32px;
 
   .iconAdd {
     display: inline-block;

+ 17 - 11
src/views/student-register/modal/select-student/index.tsx

@@ -21,8 +21,8 @@ export default defineComponent({
     const radioChecked = ref();
 
     onMounted(() => {
-      if (props.studentItem && props.studentItem.id) {
-        radioChecked.value = props.studentItem.id;
+      if (props.studentItem && props.studentItem.userId) {
+        radioChecked.value = props.studentItem.userId;
       }
     });
     return () => (
@@ -33,9 +33,14 @@ export default defineComponent({
             <div
               class={[
                 styles.cell,
-                radioChecked.value === item.id && styles.cellSelected
-              ]}>
-              <Radio name={item.id}>
+                radioChecked.value === item.userId && styles.cellSelected
+              ]}
+              onClick={() => {
+                radioChecked.value = item.userId;
+                emit('confirm', item);
+                emit('close');
+              }}>
+              <Radio name={item.userId}>
                 {{
                   icon: (props: any) => (
                     <Image
@@ -47,14 +52,13 @@ export default defineComponent({
               </Radio>
 
               <div class={styles.userInfo}>
-                <Image class={styles.userImg} fit="cover" />
+                <Image src={item.avatar} class={styles.userImg} fit="cover" />
 
                 <div class={styles.usernames}>
-                  <div class={styles.name}>李木子</div>
-                  <div class={styles.schoolname}>
-                    武汉市洪山区第二小学武汉市洪山区第二小学
-                    武汉市洪山区第二小学
-                  </div>
+                  <div class={styles.name}>{item.nickname}</div>
+                  {item.schoolName && (
+                    <div class={styles.schoolname}>{item.schoolName}</div>
+                  )}
                 </div>
               </div>
             </div>
@@ -66,6 +70,8 @@ export default defineComponent({
               color="linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)"
               onClick={() => {
                 //
+                emit('confirm', {});
+                emit('close');
               }}>
               <i class={styles.iconAdd}></i>
               <span>新增学生</span>

+ 1 - 1
vite.config.ts

@@ -15,7 +15,7 @@ function resolve(dir: string) {
 // https://github.com/vitejs/vite/issues/1930 .env
 // const proxyUrl = 'https://test.lexiaoya.cn/';
 // const proxyUrl = 'https://kt.colexiu.com/';
-// const proxyUrl = 'http://192.168.3.143:7989/';
+// const proxyUrl = 'http://192.168.3.143:7093/';
 const proxyUrl = 'https://dev.kt.colexiu.com/';
 export default defineConfig({
   base: './',