lex il y a 1 an
Parent
commit
d4f6e9d08c

BIN
src/common/images/wx-no-bg.png


BIN
src/common/images/wx-no-top.png


+ 20 - 2
src/components/m-sticky/index.tsx

@@ -36,7 +36,7 @@ export default defineComponent({
     }
   },
   emits: ['barHeight'],
-  setup(props, { slots, emit }) {
+  setup(props, { slots, emit, expose }) {
     const forms = reactive({
       divStyle: {} as any,
       heightV: 0,
@@ -70,7 +70,7 @@ export default defineComponent({
       // resize.observe(divRef.value);
 
       try {
-        useResizeObserver(div2Ref.value, (entries: any) => {
+        useResizeObserver(divRef.value, (entries: any) => {
           const entry = entries[0];
           const { height } = entry.contentRect;
           if (Math.abs(height - forms.heightV) > 1) {
@@ -107,6 +107,20 @@ export default defineComponent({
       // });
     });
 
+    const onChnageHeight = () => {
+      try {
+        useResizeObserver(div2Ref.value, (entries: any) => {
+          const entry = entries[0];
+          const { height } = entry.contentRect;
+          if (Math.abs(height - forms.heightV) > 1) {
+            setTimeout(() => {
+              __initHeight(height);
+            }, 10);
+          }
+        });
+      } catch {}
+    };
+
     watch(
       () => props.offsetTop,
       () => {
@@ -119,6 +133,10 @@ export default defineComponent({
         forms.divStyle.bottom = props.offsetBottom;
       }
     );
+
+    expose({
+      onChnageHeight
+    });
     return () => (
       <div
         style={[forms.sectionStyle]}

+ 6 - 7
src/components/m-wx-tip/index.module.less

@@ -6,14 +6,14 @@
   &::before {
     position: absolute;
     content: ' ';
-    top: -73px;
+    top: -23px;
     left: 50%;
-    margin-left: -86px;
+    margin-left: -45px;
     display: inline-block;
     background: url('../../common/images/wx-no-top.png') no-repeat top center;
     background-size: contain;
-    width: 172px;
-    height: 154px;
+    width: 89px;
+    height: 57px;
   }
 }
 
@@ -34,8 +34,7 @@
   }
 
   .popupTips {
-    padding-top: 16px;
-    padding-bottom: 16px;
+    padding: 16px 20px;
     text-align: center;
     font-size: 15px;
     color: #777777;
@@ -50,4 +49,4 @@
     color: #777;
     border-color: #E7E7E7;
   }
-}
+}

+ 1 - 1
src/components/m-wx-tip/index.tsx

@@ -53,7 +53,7 @@ export default defineComponent({
         <Popup
           v-model:show={showPopup.value}
           round
-          style={{ width: '88%', maxWidth: '520px' }}
+          style={{ width: '70%', maxWidth: '520px' }}
           closeOnClickOverlay={false}
           class={styles.wxPopupDialog}>
           <div class={styles.popupContainer}>

BIN
src/views/download/images/student-center.png


+ 3 - 3
src/views/download/index.module.less

@@ -3,12 +3,12 @@
   background: url('./images/download_bg.png') no-repeat top center;
   background-size: cover;
   min-height: 100vh;
-  padding: 0 8px 0 23px;
+  padding: 25px 23px 0 23px;
   text-align: center;
 
   :global {
     .van-image {
-      margin-top: 25px;
+      // margin-top: 25px;
     }
   }
 }
@@ -44,4 +44,4 @@
 
 .downImg {
   width: 275px;
-}
+}

BIN
src/views/student-register/images/new/icon-2.png


BIN
src/views/student-register/images/new/icon-4.png


BIN
src/views/student-register/images/new/icon-6.png


BIN
src/views/student-register/images/new/icon-gift.png


+ 40 - 22
src/views/student-register/index.module.less

@@ -19,7 +19,7 @@
   background: linear-gradient(90deg, #FFBBD1 0%, #FFEFE2 100%), linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.7) 100%);
   border-radius: 16px;
   margin: 0 14px 12px;
-  padding: 14px 16px 10px;
+  padding: 10px 16px 10px;
   border: 2px solid #FFFFFF;
 
   &::before {
@@ -75,7 +75,7 @@
     background: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 100%);
     border-radius: 12px;
     text-align: center;
-    padding: 4px 10px;
+    padding: 4px 6px;
     font-size: 11px;
     color: #69717C;
     line-height: 16px;
@@ -93,6 +93,10 @@
   border-radius: 18px 18px 0px 0px;
 
 
+  .payemntPrice {
+    // line-height: 0;
+  }
+
   .giftTip {
     width: 52px;
     height: 18px;
@@ -108,13 +112,18 @@
     padding-right: 6px;
 
     span {
-      font-size: 28px;
+      font-size: 24px;
       margin-right: 2px;
     }
 
     i {
       // margin-top: -3px;
       vertical-align: text-bottom;
+      font-weight: 400;
+
+      &.unit {
+        font-size: 12px;
+      }
     }
   }
 
@@ -143,10 +152,12 @@
 
   .traditionBtn {
     flex: 1;
+    text-align: center;
 
     :global {
       .van-button {
-        width: 100%
+        width: 100%;
+        max-width: 325px;
       }
     }
   }
@@ -164,6 +175,10 @@
     background: linear-gradient(180deg, #DBF6FD 0%, #FFFFFF 20%);
   }
 
+  &.noSendDay {
+    padding-bottom: 0;
+  }
+
   // .title1,
   // .title2 {
   //   width: 285px;
@@ -231,7 +246,7 @@
     font-size: 16px;
     color: #728088;
     // transform: skewX(-15deg);
-    background: url('./images/new/btn-left-default.png');
+    background: url('./images/new/btn-left-default.png') no-repeat center;
     background-size: contain;
 
 
@@ -245,19 +260,20 @@
 
     &.checked {
       // background: linear-gradient(315deg, #31C7FF 0%, #007AFE 100%);
-      background: url('./images/new/btn-left-active.png') !important;
+      background: url('./images/new/btn-left-active.png') no-repeat center !important;
       background-size: contain !important;
       color: #fff;
       font-weight: 600;
 
-      // &+.goodsItem {
-      //   background: url('./images/new/btn-right-active.png');
-      //   background-size: contain;
-      // }
+    }
+
+    &.checked1 {
+
+      background: url('./images/new/btn-right-active.png') no-repeat center !important;
+      background-size: contain !important;
+      color: #fff;
+      font-weight: 600;
 
-      .goodsInner {
-        // background: linear-gradient(315deg, #31C7FF 0%, #007AFE 100%);
-      }
     }
 
     .proposalTip {
@@ -275,7 +291,7 @@
       // margin-left: 8px;
       // border-radius: 4px 20px 20px 4px;
       // transform: skewX(-15deg);
-      background: url('./images/new/btn-right-default.png');
+      background: url('./images/new/btn-right-default.png') no-repeat center;
       background-size: contain;
       // &.checked {
       //   background: linear-gradient(315deg, #31C7FF 0%, #007AFE 100%);
@@ -307,7 +323,7 @@
     color: #EC763B;
     line-height: 18px;
     background: #FFF8EB;
-    border-radius: 8px;
+    border-radius: 4px;
     padding: 4px 10px;
   }
 
@@ -345,6 +361,7 @@
       padding: 18px 14px;
     }
 
+
     .van-field__label {
       font-size: 16px;
       color: #666666;
@@ -353,6 +370,7 @@
 
     .van-field__control {
       font-size: 16px;
+      color: #131415;
     }
   }
 
@@ -482,10 +500,10 @@
   padding: 16px 16px 0;
 
   .img {
-    margin-right: 13px;
+    margin-right: 10px;
     width: 98px;
     height: 98px;
-    // border-radius: 10px;
+    border-radius: 8px;
     overflow: hidden;
     flex-shrink: 0;
   }
@@ -529,11 +547,11 @@
       align-items: center;
 
       i {
-        width: 5px;
-        height: 5px;
+        width: 4px;
+        height: 4px;
         border-radius: 50%;
         display: inline-block;
-        margin-right: 6px;
+        margin-right: 4px;
         background: #FF711B;
       }
     }
@@ -607,7 +625,7 @@
 
     &::before {
       content: '';
-      border-left: 1px dashed #0987FE;
+      border-left: 1px dashed rgba(9, 135, 254, 0.4);
       position: absolute;
       left: 15px;
       top: 0;
@@ -627,6 +645,7 @@
       font-size: 14px;
       color: #777777;
       line-height: 24px;
+      text-align: justify;
 
       span {
         font-weight: 500;
@@ -652,7 +671,6 @@
         border-radius: 50%;
         width: 22px;
         height: 22px;
-        font-family: AlimamaShuHeiTi, AlimamaShuHeiTi;
         font-weight: bold;
         font-size: 13px;
         color: #FFFFFF;

+ 79 - 38
src/views/student-register/index.tsx

@@ -77,20 +77,20 @@ const GRADE_ENUM = {
   '8': '八年级',
   '9': '九年级'
 } as any;
-const getGradeList = (gradeYear: string) => {
+const getGradeList = (gradeYear: string, instrumentCode?: string) => {
   let tempList: any = [];
   const five = [
-    { text: '一年级', value: 1 },
-    { text: '二年级', value: 2 },
-    { text: '三年级', value: 3 },
-    { text: '四年级', value: 4 },
-    { text: '五年级', value: 5 }
+    { text: '一年级', value: 1, instrumentCode },
+    { text: '二年级', value: 2, instrumentCode },
+    { text: '三年级', value: 3, instrumentCode },
+    { text: '四年级', value: 4, instrumentCode },
+    { text: '五年级', value: 5, instrumentCode }
   ];
-  const one = [{ text: '六年级', value: 6 }];
+  const one = [{ text: '六年级', value: 6, instrumentCode }];
   const three = [
-    { text: '七年级', value: 7 },
-    { text: '八年级', value: 8 },
-    { text: '九年级', value: 9 }
+    { text: '七年级', value: 7, instrumentCode },
+    { text: '八年级', value: 8, instrumentCode },
+    { text: '九年级', value: 9, instrumentCode }
   ];
   if (gradeYear === 'FIVE_YEAR_SYSTEM') {
     tempList.push(...[...five]);
@@ -115,6 +115,7 @@ export default defineComponent({
     // 初始化学校编号
     studentRegisterStore.setShoolId(route.query.sId as any);
     const countDownRef = ref();
+    const mstickyRef = ref();
     const forms = reactive({
       schoolId: route.query.sId as any,
       paymentType: '', // 支付类型
@@ -210,13 +211,17 @@ export default defineComponent({
     const overCountDown = useCountDown({
       time: forms.activeOverTime,
       onFinish() {
-        if (forms.submitLoading) return;
-        forms.showTips = true;
-        forms.showMessage = '团购时间已截止,感谢您的参与';
-        forms.showButton = false;
         forms.activeOverStatus = true;
+        if (forms.submitLoading) return;
+        applyOver();
       }
     });
+    /** 报名结束提示 */
+    const applyOver = () => {
+      forms.showTips = true;
+      forms.showMessage = '团购时间已截止,感谢您的参与';
+      forms.showButton = false;
+    };
 
     const onCodeSend = () => {
       forms.countDownStatus = false;
@@ -270,9 +275,7 @@ export default defineComponent({
             overCountDown.reset(forms.activeOverTime);
             overCountDown.start();
           } else {
-            forms.showTips = true;
-            forms.showMessage = '团购时间已截止,感谢您的参与';
-            forms.showButton = false;
+            applyOver();
             forms.activeOverStatus = true;
           }
         }
@@ -287,7 +290,8 @@ export default defineComponent({
         studentInfo.extra.registerType = data.registerType;
         const schoolInstrumentList = data.schoolInstrumentList || [];
         if (data.schoolInstrumentSetType === 'SCHOOL') {
-          forms.gradeList = getGradeList(data.gradeYear);
+          const instrumentCode = schoolInstrumentList[0]?.instrumentCode;
+          forms.gradeList = getGradeList(data.gradeYear, instrumentCode);
           forms.classList = classList;
         } else if (data.schoolInstrumentSetType === 'GRADE') {
           schoolInstrumentList.forEach((item: any) => {
@@ -325,7 +329,8 @@ export default defineComponent({
                 list.instrumentName = item.instrumentName;
                 list.classList.push({
                   text: item.classNum + '班',
-                  value: item.classNum
+                  value: item.classNum,
+                  instrumentCode: item.instrumentCode
                 });
               }
             });
@@ -461,15 +466,6 @@ export default defineComponent({
           );
           pageTimer.counter.value = 0;
 
-          // 传统方式
-          if (forms.joinType === 'tradition') {
-            setTimeout(() => {
-              showToast('报名成功');
-              router.push('/download');
-            }, 100);
-            return;
-          }
-
           // 获取用户信息
           const res = await request.get('/edu-app/user/getUserInfo', {
             requestType: 'form'
@@ -498,6 +494,16 @@ export default defineComponent({
           forms.dialogConfirmStatus = true;
           return;
         }
+
+        // 传统方式
+        if (forms.joinType === 'tradition') {
+          setTimeout(() => {
+            showToast('报名成功');
+            router.push('/download');
+          }, 100);
+          return;
+        }
+
         await paymentContinue();
       } catch {
         //
@@ -523,12 +529,13 @@ export default defineComponent({
 
           if (!studentInfo.extra.currentGradeNum) {
             const tempGrade: any = forms.gradeList || [];
-            console.log(tempGrade, 'tempGrade');
+            // console.log(tempGrade, 'tempGrade');
             tempGrade?.forEach((i: any) => {
               if (i.value === data.currentGradeNum) {
                 forms.instrumentCode = i.instrumentCode;
                 forms.gradeNumText = i.text;
                 studentInfo.extra.currentGradeNum = data.currentGradeNum;
+                forms.classList = i.classList;
               }
             });
           }
@@ -946,7 +953,11 @@ export default defineComponent({
           )}
 
           <div
-            class={[styles.studentSection, styles.studentSectionForm]}
+            class={[
+              styles.studentSection,
+              styles.studentSectionForm,
+              forms.giftVipDay <= 0 && styles.noSendDay
+            ]}
             // style={{ display: 'none' }}
           >
             <div class={styles.title1}></div>
@@ -1132,11 +1143,17 @@ export default defineComponent({
                   forms.joinType === 'digitalize' && styles.checked
                 ]}
                 onClick={() => {
-                  if (!forms.gradeNumText) {
-                    showToast('请先选择所在年级');
+                  if (!forms.gradeNumText || !forms.currentClassText) {
+                    showToast('请先选择所在年级班级');
                     return;
                   }
                   forms.joinType = 'digitalize';
+                  nextTick(() => {
+                    mstickyRef.value?.onChnageHeight();
+                    setTimeout(() => {
+                      window.scrollTo(0, 1000);
+                    }, 50);
+                  });
                 }}>
                 <div class={styles.goodsInner}>
                   <i class={styles.proposalTip}></i>
@@ -1147,14 +1164,20 @@ export default defineComponent({
                 class={[
                   styles.goodsItem,
                   styles.tradition,
-                  forms.joinType === 'tradition' && styles.checked
+                  forms.joinType === 'tradition' && styles.checked1
                 ]}
                 onClick={() => {
-                  if (!forms.gradeNumText) {
-                    showToast('请先选择所在年级');
+                  if (!forms.gradeNumText || !forms.currentClassText) {
+                    showToast('请先选择所在年级班级');
                     return;
                   }
                   forms.joinType = 'tradition';
+                  nextTick(() => {
+                    mstickyRef.value?.onChnageHeight();
+                    setTimeout(() => {
+                      window.scrollTo(0, 1000);
+                    }, 50);
+                  });
                 }}>
                 <div class={styles.goodsInner}>传统方式</div>
               </div>
@@ -1241,7 +1264,7 @@ export default defineComponent({
           )}
 
           {forms.joinType && (
-            <MSticky position="bottom">
+            <MSticky position="bottom" ref={mstickyRef}>
               <div class={styles.paymentContainer}>
                 {forms.joinType === 'digitalize' && (
                   <>
@@ -1251,7 +1274,9 @@ export default defineComponent({
                         <span class={styles.needPrice}>
                           <i style="font-style: normal">¥ </i>
                           <span>{moneyFormat(calcPrice.value.amount)}</span>
-                          <i style="font-style: normal">/年</i>
+                          <i class={styles.unit} style="font-style: normal">
+                            /年
+                          </i>
                         </span>
                         {calcPrice.value.originAmount >
                         calcPrice.value.amount ? (
@@ -1325,8 +1350,11 @@ export default defineComponent({
               const selectedOption = val.selectedOptions[0];
               studentInfo.extra.currentGradeNum = selectedOption.value;
               forms.gradeNumText = selectedOption.text;
-              forms.instrumentCode = selectedOption.instrumentCode;
               forms.gradeStatus = false;
+              if (['SCHOOL', 'GRADE'].includes(forms.schoolInstrumentSetType)) {
+                forms.instrumentCode = selectedOption.instrumentCode;
+              }
+
               if (forms.schoolInstrumentSetType === 'CLASS') {
                 forms.classList = selectedOption.classList;
               }
@@ -1352,6 +1380,9 @@ export default defineComponent({
               studentInfo.extra.currentClass = selectedOption.value;
               forms.currentClassText = selectedOption.text;
               forms.classStatus = false;
+              if (['CLASS'].includes(forms.schoolInstrumentSetType)) {
+                forms.instrumentCode = selectedOption.instrumentCode;
+              }
             }}
           />
         </Popup>
@@ -1368,6 +1399,12 @@ export default defineComponent({
           onConfirm={async () => {
             await paymentContinue();
           }}
+          onCancel={() => {
+            //取消支付,判断是否有结束时间,是否已经结束
+            if (forms.registerExpireTime && forms.activeOverStatus) {
+              applyOver();
+            }
+          }}
         />
 
         <MDialog
@@ -1387,6 +1424,10 @@ export default defineComponent({
           }}
           onCancel={(val: any) => {
             countDown.pause();
+            //取消支付,判断是否有结束时间,是否已经结束
+            if (forms.registerExpireTime && forms.activeOverStatus) {
+              applyOver();
+            }
           }}
         />
 

+ 1 - 1
vite.config.ts

@@ -16,7 +16,7 @@ function resolve(dir: string) {
 // const proxyUrl = 'https://test.lexiaoya.cn/';
 // const proxyUrl = 'https://kt.colexiu.com/';
 // const proxyUrl = 'http://192.168.3.143:7989/';
-const proxyUrl = 'https://dev.kt.colexiu.com/';
+const proxyUrl = 'https://test.kt.colexiu.com/';
 export default defineConfig({
   base: './',
   plugins: [