lex 11 months ago
parent
commit
a4a4e5493f

+ 1 - 1
src/views/activation-code/activation-register/index.tsx

@@ -649,7 +649,7 @@ export default defineComponent({
     const getSchoolAreaList = async (name?: string) => {
       forms.schoolLoading = true;
       try {
-        const { data } = await request.post('/edu-app/schoolArea/list', {
+        const { data } = await request.post('/edu-app/open/schoolArea/list', {
           data: {
             name,
             provinceCode: forms.provinceCode,

+ 5 - 0
src/views/activation-code/index.module.less

@@ -13,6 +13,11 @@
       background: url('./images/woring-bg.png') no-repeat top center;
       background-size: 100%;
     }
+
+    .van-calendar__confirm {
+      --van-calendar-confirm-button-height: 40px;
+      --van-button-normal-padding: 18px;
+    }
   }
 }
 

+ 19 - 15
src/views/activation-code/instrument-registration/detail.module.less

@@ -57,26 +57,30 @@
     align-items: center;
     justify-content: center;
 
-    &.selectStudentGroupChecked {
-      span::after {
-        transform: rotate(180deg);
-      }
-    }
+    // &.selectStudentGroupChecked {
+    //   span::after {
+    //     transform: rotate(180deg);
+    //   }
+    // }
 
     span {
       display: flex;
       align-items: center;
       justify-content: center;
-
-      &::after {
-        display: inline-block;
-        content: '';
-        width: 9px;
-        height: 5px;
-        margin-left: 4px;
-        background: url('../../student-register/images/new/icon-n-6.png') no-repeat center;
-        background-size: contain;
-      }
+      background: rgba(17, 137, 255, 0.08);
+      border-radius: 20px;
+      border: 1px solid rgba(17, 137, 255, 0.6);
+      padding: 0px 8px;
+
+      // &::after {
+      //   display: inline-block;
+      //   content: '';
+      //   width: 9px;
+      //   height: 5px;
+      //   margin-left: 4px;
+      //   background: url('../../student-register/images/new/icon-n-6.png') no-repeat center;
+      //   background-size: contain;
+      // }
     }
   }
 

+ 111 - 46
src/views/activation-code/instrument-registration/detail.tsx

@@ -102,45 +102,101 @@ export default defineComponent({
       submitLoading: false,
       showSelectStudent: false, // 选择学生
       studentList: [], // 手机号关联学生列表
-      studentItem: {} as any // 选择的学生
-      // bugGoods: false, // 是否购买AI
+      studentItem: {} as any, // 选择的学生
+
+      registerAllFlag: false // 是否全部登记
     });
 
     const studentInfo = reactive({
-      autoRegister: true,
-      multiUser: true, // 是否为多用户
-      client_id: 'cooleshow-student',
-      client_secret: 'cooleshow-student',
-      extra: {
-        nickname: '',
-        currentGradeNum: '' as any,
-        currentClass: '' as any,
-        gender: 1 as any,
-        registerType: null as any, // 报名类型
-        giftVipDay: 0 // 赠送会员天数
-      },
-      grant_type: 'password',
-      loginType: 'SMS',
-      password: '',
-      username: ''
+      nickname: '',
+      areaName: '',
+      schoolName: '',
+      currentGradeNum: '' as any,
+      gender: 1 as any,
+      registerType: null as any // 报名类型
+    });
+
+    const btnText = computed(() => {
+      if (forms.registerAllFlag) {
+        return '该账号学生已全部登记';
+      }
+      if (forms.studentItem?.registerFlag) {
+        return '该学生已登记';
+      }
+      return '登记';
     });
 
     const getDetail = async () => {
       try {
         const { data } = await request.post(
-          '/edu-app/open/instrumentRegister/instrumentUseRegister',
+          '/edu-app/open/instrumentRegister/getStudentActivationRecord',
           {
             requestType: 'form',
             data: {
-              activationCodeRecordId: forms.activationCodeRecordId
+              mobile: route.query.mobile
             }
           }
         );
+
+        forms.studentList = data || [];
+
+        let count = 0;
+        forms.studentList.forEach((item: any) => {
+          if (!item.registerFlag && !forms.studentItem?.userId) {
+            forms.studentItem = item;
+          }
+          if (item.registerFlag) {
+            count++;
+          }
+        });
+        if (forms.studentList.length === count) {
+          forms.registerAllFlag = true;
+          forms.studentItem = forms.studentList[0];
+        }
+        formatData(forms.studentItem);
       } catch {
         //
       }
     };
 
+    const formatData = (item: any) => {
+      studentInfo.nickname = item.nickname;
+      studentInfo.gender = item.gender;
+      const tempArea = [] as any;
+      if (item.provinceName) {
+        tempArea.push(item.provinceName);
+      }
+      if (item.cityName) {
+        tempArea.push(item.cityName);
+      }
+      if (item.regionName) {
+        tempArea.push(item.regionName);
+      }
+      studentInfo.areaName = tempArea.join(' ');
+
+      studentInfo.schoolName = item.schoolName;
+      studentInfo.currentGradeNum =
+        item.currentGradeNum + '年级' + item.currentClass + '班';
+    };
+
+    const onSubmit = async () => {
+      forms.submitLoading = true;
+      try {
+        const { data } = await request.post(
+          '/edu-app/open/instrumentRegister/instrumentUseRegister',
+          {
+            requestType: 'form',
+            data: {
+              activationCodeRecordId: forms.studentItem.activationCodeRecordId
+            }
+          }
+        );
+
+        forms.statusShow = true;
+      } catch {}
+      forms.submitLoading = false;
+    };
+
     onMounted(() => {
       getDetail();
     });
@@ -158,16 +214,12 @@ export default defineComponent({
                 autocomplete="off"
                 readonly
                 maxlength={14}
-                v-model={studentInfo.extra.nickname}>
+                v-model={studentInfo.nickname}>
                 {{
                   extra: () =>
                     forms.studentList.length > 1 && (
                       <div
-                        class={[
-                          styles.selectStudentGroup,
-                          forms.showSelectStudent &&
-                            styles.selectStudentGroupChecked
-                        ]}
+                        class={[styles.selectStudentGroup]}
                         onClick={() => (forms.showSelectStudent = true)}>
                         <span>切换学生</span>
                       </div>
@@ -185,19 +237,19 @@ export default defineComponent({
                   input: () => (
                     <RadioGroup
                       checked-color="linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)"
-                      v-model={studentInfo.extra.gender}
+                      v-model={studentInfo.gender}
                       direction="horizontal"
                       disabled>
                       <Tag
                         size="large"
                         type="primary"
                         color={
-                          !(studentInfo.extra.gender === 1)
+                          !(studentInfo.gender === 1)
                             ? '#F5F6FA'
                             : 'linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)'
                         }
                         textColor={
-                          !(studentInfo.extra.gender === 1) ? '#626264' : '#fff'
+                          !(studentInfo.gender === 1) ? '#626264' : '#fff'
                         }
                         class={styles.radioSection}>
                         <Radio class={styles.radioItem} name={1}></Radio>男
@@ -206,12 +258,12 @@ export default defineComponent({
                         size="large"
                         type="primary"
                         color={
-                          !(studentInfo.extra.gender === 0)
+                          !(studentInfo.gender === 0)
                             ? '#F5F6FA'
                             : 'linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)'
                         }
                         textColor={
-                          !(studentInfo.extra.gender === 0) ? '#626264' : '#fff'
+                          !(studentInfo.gender === 0) ? '#626264' : '#fff'
                         }
                         class={styles.radioSection}>
                         <Radio class={styles.radioItem} name={0}></Radio>女
@@ -228,13 +280,7 @@ export default defineComponent({
                 placeholder="请选择地区"
                 readonly
                 clickable={false}
-                // modelValue={forms.gradeNumText}
-                // onClick={() => {
-                //   if (forms.isRegister !== 'update') {
-                //     forms.gradePopupIndex = [studentInfo.extra.currentGradeNum];
-                //     forms.gradeStatus = true;
-                //   }
-                // }}
+                modelValue={studentInfo.areaName}
               />
               <Field
                 clearable={false}
@@ -244,7 +290,7 @@ export default defineComponent({
                 placeholder="请选择互通学校"
                 readonly
                 clickable={false}
-                // modelValue={forms.gradeNumText}
+                modelValue={studentInfo.schoolName}
               />
               <Field
                 clearable={false}
@@ -254,7 +300,7 @@ export default defineComponent({
                 placeholder="请选择班级"
                 readonly
                 clickable={false}
-                // modelValue={forms.currentClassText}
+                modelValue={studentInfo.currentGradeNum}
               />
             </Form>
           </div>
@@ -263,7 +309,7 @@ export default defineComponent({
             <div class={styles.paymentContainer}>
               <Button
                 onClick={() => {
-                  // onSubmit();
+                  onSubmit();
                   // if (checkForm() || checkSubmit()) {
                   //   forms.submitLoading = false;
                   //   return;
@@ -272,9 +318,13 @@ export default defineComponent({
                 }}
                 round
                 block
-                disabled={forms.submitLoading}
+                disabled={
+                  forms.submitLoading ||
+                  forms.registerAllFlag ||
+                  forms.studentItem.registerFlag
+                }
                 loading={forms.submitLoading}>
-                登记
+                {btnText.value}
               </Button>
             </div>
           </MSticky>
@@ -287,10 +337,15 @@ export default defineComponent({
           safeAreaInsetBottom
           closeable>
           <SelectStudent
+            showAdd={false}
             studentItem={forms.studentItem}
             list={forms.studentList}
             onClose={() => (forms.showSelectStudent = false)}
-            onConfirm={(val: any) => {}}
+            onConfirm={(val: any) => {
+              console.log(val, 'val');
+              formatData(val);
+              forms.studentItem = val;
+            }}
           />
         </Popup>
 
@@ -304,13 +359,23 @@ export default defineComponent({
             <img class={styles.title} src={loginSuccess} />
 
             <div class={styles.content}>
-              <span>李木子</span>已登记成功,乐器将在开课时发至学生
+              <span>{forms.studentItem.nickname}</span>
+              已登记成功,乐器将在开课时发至学生
             </div>
             <div class={styles.pBtnGroup}>
               <Button
                 round
                 block
-                onClick={() => (forms.statusShow = false)}
+                onClick={() => {
+                  forms.statusShow = false;
+                  forms.studentItem.registerFlag = true;
+
+                  forms.studentList.forEach((item: any) => {
+                    if (item.userId === forms.studentItem?.userId) {
+                      item.registerFlag = true;
+                    }
+                  });
+                }}
                 color="linear-gradient( 305deg, #40C8FF 0%, #3192FF 100%)">
                 我知道了
               </Button>

+ 6 - 0
src/views/activation-code/instrument-registration/index.module.less

@@ -38,6 +38,12 @@
       margin: 30px 73px 0;
       --van-button-default-height: 52px;
 
+      .progress {
+        margin-top: 18px;
+        margin-left: 34px;
+        margin-right: 34px;
+      }
+
       :global {
         .van-button--disabled::before {
           opacity: 0;

+ 17 - 2
src/views/activation-code/instrument-registration/index.tsx

@@ -1,13 +1,15 @@
 import { defineComponent, reactive } from 'vue';
 import styles from './index.module.less';
-import { Button, Field, Popup, showToast } from 'vant';
+import { Button, Field, Popup, Progress, showToast } from 'vant';
 import iconKey from './images/icon-phone.png';
 import loginError from './images/login-error.png';
 import request from '@/helpers/request';
+import { useRouter } from 'vue-router';
 
 export default defineComponent({
   name: 'instrument-registration',
   setup() {
+    const router = useRouter();
     const state = reactive({
       statusShow: false,
       mobile: '',
@@ -32,8 +34,14 @@ export default defineComponent({
 
         if (res.code !== 200) {
           state.statusShow = true;
+        } else {
+          router.push({
+            path: '/activationRegistrationDetail',
+            query: {
+              mobile: state.mobile
+            }
+          });
         }
-        console.log(res);
       } catch {
         //
       }
@@ -48,6 +56,7 @@ export default defineComponent({
               class={styles.input}
               leftIcon={iconKey}
               v-model={state.mobile}
+              autocomplete="off"
               placeholder="请输入【音乐数字课堂】激活成功时的手机号"
             />
 
@@ -63,6 +72,12 @@ export default defineComponent({
                   {state.loading ? '请稍后······' : '多子女需多次核验'}
                 </span>
               </Button>
+              <Progress
+                showPivot={false}
+                strokeWidth={4}
+                percentage={30}
+                class={styles.progress}
+              />
             </div>
           </div>
         </div>

+ 6 - 38
src/views/activation-code/record.tsx

@@ -18,8 +18,8 @@ export default defineComponent({
       showPopoverTime: false
     });
     const forms = reactive({
-      startTime: dayjs().day(1).format('YYYYMMDD'),
-      endTime: dayjs().day(7).format('YYYY-MM-DD')
+      startTime: dayjs().subtract(1, 'months').format('YYYYMMDD'),
+      endTime: dayjs().format('YYYY-MM-DD')
     });
     return () => (
       <div
@@ -141,9 +141,8 @@ export default defineComponent({
         <Calendar
           v-model:show={state.showPopoverTime}
           firstDayOfWeek={1}
-          showConfirm={false}
+          safeAreaInsetBottom
           type="range"
-          maxRange={7}
           title="周期选择"
           minDate={new Date('2023-02-27')}
           defaultDate={[
@@ -153,40 +152,9 @@ export default defineComponent({
           style={{
             height: '70%'
           }}
-          onSelect={(item: any) => {
-            forms.startTime = '';
-            forms.endTime = '';
-            if (
-              !dayjs(item[0]).isBetween(
-                dayjs(forms.startTime),
-                dayjs(forms.endTime)
-              )
-            ) {
-              // forms.startTime = dayjs(item[0]).day(1).format('YYYYMMDD')
-              // forms.endTime = dayjs(item[0]).day(7).format('YYYY-MM-DD')
-
-              const week = dayjs(item[0]).day();
-              if (week === 0) {
-                // 星期天
-                forms.startTime = dayjs(item[0])
-                  .subtract(6, 'day')
-                  .format('YYYYMMDD');
-                forms.endTime = dayjs(item[0]).format('YYYY-MM-DD');
-              } else if (week === 1) {
-                // 星期一
-                forms.startTime = dayjs(item[0]).format('YYYYMMDD');
-                forms.endTime = dayjs(item[0])
-                  .add(6, 'day')
-                  .format('YYYY-MM-DD');
-              } else {
-                forms.startTime = dayjs(item[0])
-                  .subtract(week - 1, 'day')
-                  .format('YYYYMMDD');
-                forms.endTime = dayjs(item[0])
-                  .add(7 - week, 'day')
-                  .format('YYYY-MM-DD');
-              }
-            }
+          onConfirm={(item: any) => {
+            forms.startTime = dayjs(item[0]).format('YYYYMMDD');
+            forms.endTime = dayjs(item[1]).format('YYYY-MM-DD');
             state.showPopoverTime = false;
           }}
         />

+ 4 - 0
src/views/student-register/modal/select-student/index.module.less

@@ -14,6 +14,7 @@
   overflow-y: auto;
 
   .cell {
+    position: relative;
     display: flex;
     align-items: center;
     padding: 12px 10px;
@@ -27,6 +28,9 @@
     }
 
     .tag {
+      position: absolute;
+      top: 0;
+      right: 0;
       padding: 3px 4px;
       font-weight: 500;
       font-size: 12px;

+ 3 - 1
src/views/student-register/modal/select-student/index.tsx

@@ -78,7 +78,9 @@ export default defineComponent({
                 </div>
               </div>
 
-              {!props.showAdd && <span class={styles.tag}>已登记</span>}
+              {!props.showAdd && item.registerFlag && (
+                <span class={styles.tag}>已登记</span>
+              )}
             </div>
           ))}
         </RadioGroup>