Browse Source

更新样式

1、团练宝
2、乐团报名
3、测验
lex 2 years ago
parent
commit
e6320eb12a
27 changed files with 317 additions and 176 deletions
  1. 3 0
      public/project/css/initiation.css
  2. 3 0
      public/project/css/preRegister.css
  3. 25 17
      public/project/initiation.html
  4. 21 15
      public/project/preRegister.html
  5. 25 5
      src/school/companion-teacher/companion-teacher-register.tsx
  6. 4 4
      src/school/manage-teacher/manage-teacher-register.tsx
  7. 2 2
      src/school/school-detail/eidt-school.tsx
  8. BIN
      src/student/member-center/images/member-1.png
  9. BIN
      src/student/member-center/images/member-2.png
  10. BIN
      src/student/member-center/images/member-3.png
  11. 9 3
      src/student/member-center/index.module.less
  12. 10 2
      src/student/member-center/index.tsx
  13. 17 2
      src/student/music-group/goods-detail/index.module.less
  14. 11 0
      src/student/music-group/goods-detail/index.tsx
  15. 4 2
      src/student/music-group/member-bao/index.tsx
  16. 76 32
      src/student/music-group/pre-apply/component/payment.tsx
  17. BIN
      src/student/music-group/pre-apply/images/member_bao-1.png
  18. BIN
      src/student/music-group/pre-apply/images/member_bao-2.png
  19. BIN
      src/student/music-group/pre-apply/images/member_bao-3.png
  20. 1 0
      src/student/music-group/pre-apply/index.module.less
  21. 53 28
      src/student/music-group/pre-apply/index.tsx
  22. 35 48
      src/student/music-group/pre-apply/order-detail.tsx
  23. 2 11
      src/student/music-group/shop-address/address-operation.tsx
  24. 1 1
      src/student/payment-result/index.tsx
  25. 5 0
      src/views/unit-test/unit-list/index.module.less
  26. 1 1
      src/views/unit-test/unit-list/index.tsx
  27. 9 3
      src/views/unit-test/unit-list/unitDetail.tsx

+ 3 - 0
public/project/css/initiation.css

@@ -37,6 +37,9 @@ span {
   font-size: 16px;
   font-weight: 500;
 }
+.van-field--disabled .van-field__label {
+  color: #333;
+}
 
 .van-cell--required::before {
   left: 15px;

+ 3 - 0
public/project/css/preRegister.css

@@ -37,6 +37,9 @@ span {
   font-size: 16px;
   font-weight: 500;
 }
+.van-field--disabled .van-field__label {
+  color: #333;
+}
 
 .van-cell--required::before {
   left: 15px;

+ 25 - 17
public/project/initiation.html

@@ -192,8 +192,9 @@
           v-model="stu.phone" name="phone" :rules="[{ pattern, message: '输入监护人手机号码有误' }]" placeholder="请输入监护人手机号码">
         </van-field>
         <van-field label="学员姓名" :rules="[{ validator, message }]" name="username" v-model="stu.username"
-          placeholder="请填写学员真实姓名" :disabled='checkPhone'></van-field>
-        <van-field label="性别" name="sex" :disabled='checkPhone' :rules="[{ required: true, message: '请选择性别' }]">
+          placeholder="请填写学员真实姓名" :disabled='checkPhone' @click="onCheckInsertPhone"></van-field>
+        <van-field label="性别" name="sex" :disabled='checkPhone' @click="onCheckInsertPhone"
+          :rules="[{ required: true, message: '请选择性别' }]">
           <template #input>
             <van-radio-group v-model="stu.sex" :disabled='checkPhone' checked-color="#FF8057" direction="horizontal">
               <van-tag size="large" type="primary" :color="!(stu.sex === 1) || checkPhone ? '#EAEAEA' : '#FF8057'"
@@ -207,24 +208,25 @@
             </van-radio-group>
           </template>
         </van-field>
-        <van-field label="在读年级" :disabled='checkPhone' v-model="stu.currentGrade" readonly name="currentGrade"
-          :rules="[{ required: true, message: '请选择在读年级', trigger: 'onChange' }]" @click="() => showPicker = true"
-          placeholder="请选择在读年级" clickable>
+        <van-field label="在读年级" :disabled='checkPhone' @click="onCheckInsertPhone" v-model="stu.currentGrade" readonly
+          name="currentGrade" :rules="[{ required: true, message: '请选择在读年级', trigger: 'onChange' }]"
+          @click="() => showPicker = true" placeholder="请选择在读年级">
           <template #right-icon>
             <van-icon name="arrow" :color="checkPhone ? '#aaa' : '#323233'" size="16"></van-icon>
           </template>
         </van-field>
-        <van-field v-show="false" v-model="stu.currentGradeNum" name="currentGradeNum" readonly></van-field>
-        <van-field label="所在班级" :disabled='checkPhone' v-model="stu.currentClass" readonly name="currentClass"
-          :rules="[{ required: true, message: '请选择所在班级', trigger: 'onChange' }]" @click="() => classPicker = true"
-          placeholder="请选择所在班级">
+        <van-field v-show="false" v-model="stu.currentGradeNum" @click="onCheckInsertPhone" name="currentGradeNum"
+          readonly></van-field>
+        <van-field label="所在班级" :disabled='checkPhone' @click="onCheckInsertPhone" v-model="stu.currentClass" readonly
+          name="currentClass" :rules="[{ required: true, message: '请选择所在班级', trigger: 'onChange' }]"
+          @click="() => classPicker = true" placeholder="请选择所在班级">
           <template #right-icon>
             <van-icon name="arrow" :color="checkPhone ? '#aaa' : '#323233'" size="16"></van-icon>
           </template>
         </van-field>
 
-        <van-field label="孩子是否有学习过乐器" :disabled='checkPhone' name="musicalInstrumentsLearning"
-          :rules="[{ required: true, message: '请选择孩子是否有学习过乐器' }]">
+        <van-field label="孩子是否有学习过乐器" :disabled='checkPhone' @click="onCheckInsertPhone"
+          name="musicalInstrumentsLearning" :rules="[{ required: true, message: '请选择孩子是否有学习过乐器' }]">
           <template #input>
             <van-radio-group v-model="stu.hasLearningExperience" :disabled='checkPhone' checked-color="#FF8057"
               direction="horizontal">
@@ -243,10 +245,10 @@
             </van-radio-group>
           </template>
         </van-field>
-        <van-field label="所学乐器" :disabled='checkPhone' v-if="stu.hasLearningExperience==1" name="learningSubjectName"
-          v-model="stu.learningSubjectName" placeholder="(非必填)请选择所学乐器"></van-field>
-        <van-field label="是否报名参加管乐团家长会了解相关情况" :disabled='checkPhone' name="joinParentMeeting"
-          :rules="[{ required: true, message: '请选择是否报名参加管乐团家长会了解相关情况' }]">
+        <van-field label="所学乐器" :disabled='checkPhone' @click="onCheckInsertPhone" v-if="stu.hasLearningExperience==1"
+          name="learningSubjectName" v-model="stu.learningSubjectName" placeholder="(非必填)请选择所学乐器"></van-field>
+        <van-field label="是否报名参加管乐团家长会了解相关情况" :disabled='checkPhone' @click="onCheckInsertPhone"
+          name="joinParentMeeting" :rules="[{ required: true, message: '请选择是否报名参加管乐团家长会了解相关情况' }]">
           <template #input>
             <van-radio-group v-model="stu.joinParentMeeting" :disabled='checkPhone' checked-color="#FF8057"
               direction="horizontal">
@@ -263,8 +265,9 @@
             </van-radio-group>
           </template>
         </van-field>
-        <van-field :border="true" label="您对校管乐团的组建有什么建议" :disabled='checkPhone' type="textarea" rows="3"
-          name="personalSuggestion" v-model="stu.personalSuggestion" placeholder="(非必填)请填写您的建议内容">
+        <van-field :border="true" label="您对校管乐团的组建有什么建议" :disabled='checkPhone' @click="onCheckInsertPhone"
+          type="textarea" rows="3" name="personalSuggestion" v-model="stu.personalSuggestion"
+          placeholder="(非必填)请填写您的建议内容">
         </van-field>
       </van-cell-group>
 
@@ -464,6 +467,11 @@
             vant.closeToast()
           }
         },
+        onCheckInsertPhone() {
+          if (this.checkPhone) {
+            vant.showToast('请输入联系电话')
+          }
+        },
         onConfirm(options) {
           var stu = this.stu
           stu.currentGrade = options.selectedOptions[0].text

+ 21 - 15
public/project/preRegister.html

@@ -191,9 +191,10 @@
         <van-field type="tel" @blur='checkchangePhone' maxlength="11" minlength="11" label="联系电话(直接监护人)"
           v-model="stu.phone" name="phone" :rules="[{ pattern, message: '输入监护人手机号码有误' }]" placeholder="请输入监护人手机号码">
         </van-field>
-        <van-field label="学员姓名" :rules="[{ validator, message }]" name="username" v-model="stu.username"
-          placeholder="请填写学员真实姓名" :disabled='checkPhone'></van-field>
-        <van-field label="性别" name="sex" :disabled='checkPhone' :rules="[{ required: true, message: '请选择性别' }]">
+        <van-field label="学员姓名" :rules="[{ validator, message }]" @click="onCheckInsertPhone" name="username"
+          v-model="stu.username" placeholder="请填写学员真实姓名" :disabled='checkPhone'></van-field>
+        <van-field label="性别" name="sex" :disabled='checkPhone' @click="onCheckInsertPhone"
+          :rules="[{ required: true, message: '请选择性别' }]">
           <template #input>
             <van-radio-group v-model="stu.sex" :disabled='checkPhone' checked-color="#9A64FF" direction="horizontal">
               <van-tag size="large" type="primary" :color="!(stu.sex === 1) || checkPhone ? '#EAEAEA' : '#64A9FF'"
@@ -207,16 +208,16 @@
             </van-radio-group>
           </template>
         </van-field>
-        <van-field label="在读年级" :disabled='checkPhone' v-model="stu.currentGrade" readonly name="currentGrade"
-          :rules="[{ required: true, message: '请选择在读年级', trigger: 'onChange' }]" @click="pickerChange"
-          placeholder="请选择在读年级" clickable>
+        <van-field label="在读年级" :disabled='checkPhone' @click="onCheckInsertPhone" v-model="stu.currentGrade" readonly
+          name="currentGrade" :rules="[{ required: true, message: '请选择在读年级', trigger: 'onChange' }]"
+          @click="pickerChange" placeholder="请选择在读年级">
           <template #right-icon>
             <van-icon name="arrow" :color="checkPhone ? '#aaa' : '#323233'" size="16"></van-icon>
           </template>
         </van-field>
-        <van-field label="所在班级" :disabled='checkPhone' v-model="stu.currentClass" readonly name="currentClass"
-          :rules="[{ required: true, message: '请选择所在班级', trigger: 'onChange' }]" @click="pickerChange1"
-          placeholder="请选择所在班级">
+        <van-field label="所在班级" :disabled='checkPhone' @click="onCheckInsertPhone" v-model="stu.currentClass" readonly
+          name="currentClass" :rules="[{ required: true, message: '请选择所在班级', trigger: 'onChange' }]"
+          @click="pickerChange1" placeholder="请选择所在班级">
           <template #right-icon>
             <van-icon name="arrow" :color="checkPhone ? '#aaa' : '#323233'" size="16"></van-icon>
           </template>
@@ -224,15 +225,15 @@
       </van-cell-group>
 
       <van-cell-group inset class="cell-group">
-        <van-field label="选报声部" :disabled='checkPhone' v-model="stu.registerSubjectId" readonly name="registerSubjectId"
-          :rules="[{ required: true, message: '请选择选报声部', trigger: 'onChange' }]" @click="pickerChange2"
-          placeholder="请选择选报声部">
+        <van-field label="选报声部" :disabled='checkPhone' @click="onCheckInsertPhone" v-model="stu.registerSubjectId"
+          readonly name="registerSubjectId" :rules="[{ required: true, message: '请选择选报声部', trigger: 'onChange' }]"
+          @click="pickerChange2" placeholder="请选择选报声部">
           <template #right-icon>
             <van-icon name="arrow" :color="checkPhone ? '#aaa' : '#323233'" size="16"></van-icon>
           </template>
         </van-field>
 
-        <van-field label="乐器准备方式" :disabled='checkPhone' name="instrumentsPrepareMode"
+        <van-field label="乐器准备方式" :disabled='checkPhone' @click="onCheckInsertPhone" name="instrumentsPrepareMode"
           :rules="[{ required: true, message: '请选择乐器准备方式' }]">
           <template #input>
             <van-radio-group v-model="stu.instrumentsPrepareMode" :disabled='checkPhone' checked-color="#9A64FF"
@@ -253,8 +254,8 @@
           </template>
         </van-field>
 
-        <van-field label="乐团学习系统准备方式" :disabled='checkPhone' name="learningSystemPrepareMode"
-          :rules="[{ required: true, message: '请选择乐团学习系统准备方式' }]">
+        <van-field label="乐团学习系统准备方式" :disabled='checkPhone' @click="onCheckInsertPhone"
+          name="learningSystemPrepareMode" :rules="[{ required: true, message: '请选择乐团学习系统准备方式' }]">
           <template #input>
             <van-radio-group v-model="stu.learningSystemPrepareMode" :disabled='checkPhone' checked-color="#9A64FF"
               direction="horizontal">
@@ -506,6 +507,11 @@
           }
           this.btnLoading = false
         },
+        onCheckInsertPhone() {
+          if (this.checkPhone) {
+            vant.showToast('请输入手机号码')
+          }
+        },
         setLoading(status) {
           if (status) {
             vant.showLoadingToast({

+ 25 - 5
src/school/companion-teacher/companion-teacher-register.tsx

@@ -346,6 +346,12 @@ export default defineComponent({
       }
     }
 
+    const onCheckInsertPhone = () => {
+      if (state.checkPhone) {
+        showToast('请输入手机号码')
+      }
+    }
+
     return () => (
       <div class={styles.register}>
         <div class={styles.title}>
@@ -369,12 +375,17 @@ export default defineComponent({
               onBlur={checkchangePhone}
               type="tel"
             ></Field>
+            <div class={styles.phoneTips}>
+              <Icon name="warning" size="16" />
+              提示:手机号码将成为您管乐团老师端登录账号
+            </div>
             <Field
               label="真实姓名"
               v-model={state.forms.realName}
               rules={[{ required: true, message: '请填写真实姓名' }]}
               name="realName"
               placeholder="请填写真实姓名"
+              onClick={onCheckInsertPhone}
               maxlength="5"
               disabled={state.checkPhone}
             ></Field>
@@ -382,6 +393,7 @@ export default defineComponent({
             <Field
               label="身份证号码"
               v-model={state.forms.idCardNo}
+              onClick={onCheckInsertPhone}
               rules={[
                 { required: true, message: '请输入身份证号' },
                 {
@@ -396,7 +408,12 @@ export default defineComponent({
               disabled={state.checkPhone}
             ></Field>
 
-            <Field label="性别" name="gender" rules={[{ required: true, message: '请选择性别' }]}>
+            <Field
+              label="性别"
+              name="gender"
+              onClick={onCheckInsertPhone}
+              rules={[{ required: true, message: '请选择性别' }]}
+            >
               {{
                 input: () => (
                   <RadioGroup
@@ -434,6 +451,7 @@ export default defineComponent({
               label="身份证照片正面"
               v-model={state.forms.idcardFrontImg}
               readonly
+              onClick={onCheckInsertPhone}
               name="idcardFrontImg"
               rules={[{ required: true, message: '请上传身份证正面', trigger: 'onChange' }]}
               placeholder="请上传身份证正面"
@@ -454,6 +472,7 @@ export default defineComponent({
               v-model={state.forms.idcardBackImg}
               readonly
               name="idcardBackImg"
+              onClick={onCheckInsertPhone}
               rules={[{ required: true, message: '请上传身份证反面', trigger: 'onChange' }]}
               placeholder="请上传身份证反面"
             >
@@ -476,6 +495,7 @@ export default defineComponent({
               disabled={state.checkPhone}
               name="educationBackground"
               onClick={() => {
+                onCheckInsertPhone()
                 if (state.checkPhone) return
                 state.showEducation = true
               }}
@@ -495,6 +515,7 @@ export default defineComponent({
               v-model={state.forms.graduateSchool}
               rules={[{ required: true, message: '请输入毕业学校' }]}
               name="graduateSchool"
+              onClick={onCheckInsertPhone}
               placeholder="请输入毕业学校"
             ></Field>
 
@@ -505,6 +526,7 @@ export default defineComponent({
               disabled={state.checkPhone}
               name="cityCodeName"
               onClick={() => {
+                onCheckInsertPhone()
                 if (state.checkPhone) return
                 state.showPicker = true
               }}
@@ -525,6 +547,7 @@ export default defineComponent({
               name="showSubjectIds"
               disabled={state.checkPhone}
               onClick={() => {
+                onCheckInsertPhone()
                 if (state.checkPhone) return
                 state.showSubject = true
               }}
@@ -571,6 +594,7 @@ export default defineComponent({
               rules={[{ required: true, message: '请输入验证码', trigger: 'onChange' }]}
               placeholder="请输入验证码"
               maxlength={6}
+              onClick={onCheckInsertPhone}
               disabled={state.checkPhone}
               type="tel"
             >
@@ -601,10 +625,6 @@ export default defineComponent({
                   )
               }}
             </Field>
-            <div class={styles.phoneTips}>
-              <Icon name="warning" size="16" />
-              提示:手机号码将成为您管乐团老师端登录账号
-            </div>
           </CellGroup>
 
           <div class={styles.protocol}>

+ 4 - 4
src/school/manage-teacher/manage-teacher-register.tsx

@@ -238,6 +238,10 @@ export default defineComponent({
               maxlength={11}
               type="tel"
             ></Field>
+            <div class={styles.phoneTips}>
+              <Icon name="warning" size="16" />
+              提示:手机号码将成为您管乐团管理端登录账号
+            </div>
 
             <Field
               label="身份证号码"
@@ -315,10 +319,6 @@ export default defineComponent({
                   )
               }}
             </Field>
-            <div class={styles.phoneTips}>
-              <Icon name="warning" size="16" />
-              提示:手机号码将成为您管乐团管理端登录账号
-            </div>
           </CellGroup>
 
           <div class={styles.protocol}>

+ 2 - 2
src/school/school-detail/eidt-school.tsx

@@ -202,7 +202,7 @@ export default defineComponent({
                 rows={3}
                 v-model={forms.email}
                 maxlength={50}
-                placeholder="邮箱"
+                placeholder="请输入邮箱"
               >
                 {{ label: () => <p class={styles.addP}>邮箱</p> }}
               </Field>
@@ -211,7 +211,7 @@ export default defineComponent({
                 rows={3}
                 v-model={forms.emergencyContact}
                 maxlength={50}
-                placeholder="负责人"
+                placeholder="请输入负责人姓名"
               >
                 {{ label: () => <p class={styles.addP}>负责人</p> }}
               </Field>

BIN
src/student/member-center/images/member-1.png


BIN
src/student/member-center/images/member-2.png


BIN
src/student/member-center/images/member-3.png


+ 9 - 3
src/student/member-center/index.module.less

@@ -86,6 +86,13 @@
     }
   }
 
+  .memberImgs {
+    img {
+      margin-bottom: 6px;
+      width: 100%;
+    }
+  }
+
   .intro {
     background: url('./images/tip_bg.png') no-repeat center;
     background-size: contain;
@@ -156,7 +163,6 @@
     box-sizing: content-box;
     padding-top: 16px;
     padding-bottom: 10px;
-    margin-bottom: 10px;
   }
   .system-item {
     display: flex;
@@ -169,7 +175,7 @@
     box-sizing: border-box;
     background: #ffffff;
     border-radius: 12px;
-    border: 1px solid #e5e5e5;
+    // border: 1px solid #e5e5e5;
     .title {
       font-weight: 500;
       font-size: 14px;
@@ -211,7 +217,7 @@
       // background: linear-gradient(215deg, #ffe7c4 0%, rgba(250, 211, 156, 0.21) 100%);
       background: url('./images/vip_bg.png') no-repeat center center;
       background-size: cover;
-      border: 1px solid #b1652e;
+      // border: 1px solid #b1652e;
       position: relative;
       .title {
         color: #814014;

+ 10 - 2
src/student/member-center/index.tsx

@@ -12,6 +12,9 @@ import dayjs from 'dayjs'
 import { memberType } from '@/constant'
 import { moneyFormat } from '@/helpers/utils'
 import OHeader from '@/components/o-header'
+import member1 from './images/member-1.png'
+import member2 from './images/member-2.png'
+import member3 from './images/member-3.png'
 
 export const getAssetsHomeFile = (fileName: string) => {
   const path = `./images/${fileName}`
@@ -252,8 +255,13 @@ export default defineComponent({
               </div>
             </div>
           </div>
+          <div class={styles.memberImgs}>
+            <img src={member1} />
+            <img src={member2} />
+            <img src={member3} />
+          </div>
 
-          <div class={[styles.intro]}>
+          {/* <div class={[styles.intro]}>
             <p>
               团练宝会员使用包括平台提供教材的所有训练乐谱,并专享“乐器练习云教练”八大核心功能,孩子在家就能轻松完成乐器自主规范练习。
             </p>
@@ -270,7 +278,7 @@ export default defineComponent({
                 </div>
               ))}
             </div>
-          </div>
+          </div> */}
         </div>
         <div class={styles.btnGroup}>
           <div class={styles.priceSection}>

+ 17 - 2
src/student/music-group/goods-detail/index.module.less

@@ -19,10 +19,25 @@
   padding: 8px 0;
   :global {
     .van-cell {
-      padding-top: 5px;
-      padding-bottom: 5px;
+      padding: 5px 16px;
     }
   }
+
+  .sectionTips {
+    margin: 6px 16px;
+    display: flex;
+    align-items: center;
+    font-size: 14px;
+    color: #ff4e19;
+    padding: 5px 6px;
+    background: #ffebdd;
+    border-radius: 6px;
+  }
+  .iconGives {
+    width: 32px;
+    height: 18px;
+    margin-right: 8px;
+  }
 }
 
 .priceGroup {

+ 11 - 0
src/student/music-group/goods-detail/index.tsx

@@ -3,6 +3,7 @@ import { moneyFormat } from '@/helpers/utils'
 import { Swipe, SwipeItem, Image, CellGroup, Cell, showImagePreview } from 'vant'
 import { defineComponent } from 'vue'
 import styles from './index.module.less'
+import iconGives from '../pre-apply/images/icon-gives.png'
 
 export default defineComponent({
   name: 'goods-detail',
@@ -11,6 +12,10 @@ export default defineComponent({
       type: Number,
       default: 0
     },
+    goodsInfo: {
+      type: Object,
+      default: () => ({})
+    },
     id: {
       type: String,
       defualt: ''
@@ -200,6 +205,12 @@ export default defineComponent({
             title={product.name}
             titleClass={[styles.goodsName, 'van-ellipsis']}
           />
+          {this.goodsInfo.showFree && (
+            <div class={styles.sectionTips}>
+              <Image src={iconGives} class={styles.iconGives} />
+              赠价值{this.goodsInfo.originalPrice}元乐器维保服务一年
+            </div>
+          )}
         </CellGroup>
 
         {this.detailMobileHtml && (

+ 4 - 2
src/student/music-group/member-bao/index.tsx

@@ -2,15 +2,17 @@ import { Image } from 'vant'
 import { defineComponent } from 'vue'
 import bg1 from '../pre-apply/images/member_bao-1.png'
 import bg2 from '../pre-apply/images/member_bao-2.png'
+import bg3 from '../pre-apply/images/member_bao-3.png'
 
 export default defineComponent({
   name: 'member-bao',
   setup() {
     return () => (
-      <>
+      <div style={{ lineHeight: '0' }}>
         <Image src={bg1} />
         <Image src={bg2} />
-      </>
+        <Image src={bg3} />
+      </div>
     )
   }
 })

+ 76 - 32
src/student/music-group/pre-apply/component/payment.tsx

@@ -23,6 +23,7 @@ import { CountUp } from 'countup.js'
 import OPopup from '@/components/o-popup'
 import MemberBao from '../../member-bao'
 import GoodsDetail from '../../goods-detail'
+import ODialog from '@/components/o-dialog'
 
 export default defineComponent({
   name: 'payment',
@@ -46,7 +47,11 @@ export default defineComponent({
       memberBaoStatus: false, // 团练宝详情状态
       goodsStatus: false, //
       selectGoodsId: null as any,
-      currentPrice: 0
+      currentPrice: 0,
+      selectGoodsInfo: {} as any,
+      dialogStatus: false,
+      dialogMessage: '',
+      dialogConfig: {} as any
     })
 
     // 查询未支付订单
@@ -55,29 +60,9 @@ export default defineComponent({
         const { data } = await request.get('/api-student/userPaymentOrder/unpaid')
         // 判断是否有待支付订单
         if (data.id) {
-          showConfirmDialog({
-            message: '您有待支付的订单,是否继续支付',
-            cancelButtonText: '取消订单',
-            confirmButtonText: '继续支付'
-          })
-            .then(() => {
-              const paymentConfig = data.paymentConfig
-              router.push({
-                path: '/orderDetail',
-                query: {
-                  pm: 1, // h5乐团报名
-                  config: JSON.stringify(paymentConfig.paymentConfig),
-                  orderNo: paymentConfig.orderNo
-                }
-              })
-            })
-            .catch(async () => {
-              try {
-                await request.post('/api-student/userPaymentOrder/cancelPayment/' + data.orderNo)
-              } catch {
-                //
-              }
-            })
+          state.dialogMessage = '您有待支付的订单,是否继续支付'
+          state.dialogStatus = true
+          state.dialogConfig = data
         }
       } catch {
         //
@@ -285,7 +270,6 @@ export default defineComponent({
             2、所有参与乐团的学生免费赠送选报声部教材,教材随乐器一同发放,若您自备乐器,则需承担教材运费。
           </p>
         </div>
-
         <CheckboxGroup
           v-model={state.check}
           style={{ paddingBottom: '20px' }}
@@ -331,11 +315,24 @@ export default defineComponent({
                             e.stopPropagation()
                             state.selectGoodsId = state.goodsInfo.goodsId
                             state.currentPrice = state.goodsInfo.currentPrice
+                            state.selectGoodsInfo = {
+                              showFree: true,
+                              originalPrice: state.repaireInfo.originalPrice
+                            }
                             state.goodsStatus = true
                           }}
                         />
                         <div class={styles.sectionContent}>
-                          <h2>{state.goodsInfo.goodsName}</h2>
+                          <h2
+                            onClick={(e: any) => {
+                              e.stopPropagation()
+                              state.selectGoodsId = state.goodsInfo.goodsId
+                              state.currentPrice = state.goodsInfo.currentPrice
+                              state.goodsStatus = true
+                            }}
+                          >
+                            {state.goodsInfo.goodsName}
+                          </h2>
                           <Tag
                             color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
                             textColor="#fff"
@@ -428,11 +425,22 @@ export default defineComponent({
                             e.stopPropagation()
                             state.selectGoodsId = state.textBookInfo.goodsId
                             state.currentPrice = state.textBookInfo.currentPrice
+                            state.selectGoodsInfo = {}
                             state.goodsStatus = true
                           }}
                         />
                         <div class={styles.sectionContent}>
-                          <h2>{state.textBookInfo.goodsName}</h2>
+                          <h2
+                            onClick={(e: any) => {
+                              e.stopPropagation()
+                              state.selectGoodsId = state.textBookInfo.goodsId
+                              state.currentPrice = state.textBookInfo.currentPrice
+                              state.selectGoodsInfo = {}
+                              state.goodsStatus = true
+                            }}
+                          >
+                            {state.textBookInfo.goodsName}
+                          </h2>
                           <Tag
                             color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
                             textColor="#fff"
@@ -522,7 +530,14 @@ export default defineComponent({
                           }}
                         />
                         <div class={styles.sectionContent}>
-                          <h2>{state.vipInfo.goodsName}</h2>
+                          <h2
+                            onClick={(e: any) => {
+                              e.stopPropagation()
+                              state.memberBaoStatus = true
+                            }}
+                          >
+                            {state.vipInfo.goodsName}
+                          </h2>
                           <Tag
                             color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
                             textColor="#fff"
@@ -563,7 +578,6 @@ export default defineComponent({
             </>
           )}
         </CheckboxGroup>
-
         <OSticky position="bottom" background="white">
           <div class={styles.paymentContainer}>
             <div class={styles.payemntPrice}>
@@ -591,16 +605,46 @@ export default defineComponent({
             </div>
           </div>
         </OSticky>
-
         <OPopup v-model:modelValue={state.memberBaoStatus} position="right">
           <MemberBao />
         </OPopup>
-
         <OPopup v-model:modelValue={state.goodsStatus} position="right" destroy>
           {state.goodsStatus && (
-            <GoodsDetail id={state.selectGoodsId} groupPrice={state.currentPrice} />
+            <GoodsDetail
+              id={state.selectGoodsId}
+              groupPrice={state.currentPrice}
+              goodsInfo={state.selectGoodsInfo}
+            />
           )}
         </OPopup>
+        <ODialog
+          title="提示"
+          v-model:show={state.dialogStatus}
+          message={state.dialogMessage}
+          confirmButtonText="继续支付"
+          cancelButtonText="取消订单"
+          showCancelButton
+          onConfirm={() => {
+            const paymentConfig = state.dialogConfig.paymentConfig
+            router.push({
+              path: '/orderDetail',
+              query: {
+                pm: 1, // h5乐团报名
+                config: JSON.stringify(paymentConfig.paymentConfig),
+                orderNo: paymentConfig.orderNo
+              }
+            })
+          }}
+          onCancel={async () => {
+            try {
+              await request.post(
+                '/api-student/userPaymentOrder/cancelPayment/' + state.dialogConfig.orderNo
+              )
+            } catch {
+              //
+            }
+          }}
+        />
       </>
     )
   }

BIN
src/student/music-group/pre-apply/images/member_bao-1.png


BIN
src/student/music-group/pre-apply/images/member_bao-2.png


BIN
src/student/music-group/pre-apply/images/member_bao-3.png


+ 1 - 0
src/student/music-group/pre-apply/index.module.less

@@ -112,6 +112,7 @@
   background: #ffffff;
   border-radius: 10px;
   padding: 12px 14px;
+  margin-bottom: 12px;
   font-size: 14px;
   color: #777;
   line-height: 20px;

+ 53 - 28
src/student/music-group/pre-apply/index.tsx

@@ -10,6 +10,7 @@ import { useRoute, useRouter } from 'vue-router'
 import { setLogout } from '@/state'
 import request from '@/helpers/request'
 import { browser, getUrlCode } from '@/helpers/utils'
+import ODialog from '@/components/o-dialog'
 
 export default defineComponent({
   name: 'pre-apply',
@@ -24,6 +25,8 @@ export default defineComponent({
       register: true, // 是否注册
       // showPopup: false,
       code: '' as any,
+      dialogStatus: false,
+      dialogMessage: '',
 
       // 是否开启微信登录(测试使用)默认为false
       testIsWeixin: false
@@ -73,40 +76,44 @@ export default defineComponent({
         // 判断乐团报名,只有 乐团报名 乐团交付 已交付才可以报名
         const oStatus = data.status // 乐团状态
         if (oStatus !== 'REGISTER' && oStatus !== 'DOING' && oStatus !== 'DONE') {
-          showDialog({
-            title: '提示',
-            message: '乐团建设中,请稍等'
-          }).then(() => {
-            setLogout()
+          // showDialog({
+          //   title: '提示',
+          //   message: '乐团建设中,请稍等'
+          // }).then(() => {
+          //   setLogout()
 
-            const query = {
-              returnUrl: route.path,
-              ...route.query
-            } as any
-            router.replace({
-              path: '/loginMusic',
-              query: query
-            })
-          })
+          //   const query = {
+          //     returnUrl: route.path,
+          //     ...route.query
+          //   } as any
+          //   router.replace({
+          //     path: '/loginMusic',
+          //     query: query
+          //   })
+          // })
+          state.dialogMessage = '乐团建设中,请稍等'
+          state.dialogStatus = true
           return
         }
 
         // 判断乐团
         if (data.registerOrchestra >= 1) {
-          showDialog({
-            title: '提示',
-            message: '您已在其它乐团'
-          }).then(() => {
-            setLogout()
-            const query = {
-              returnUrl: route.path,
-              ...route.query
-            } as any
-            router.replace({
-              path: '/loginMusic',
-              query: query
-            })
-          })
+          // showDialog({
+          //   title: '提示',
+          //   message: '您已在其它乐团'
+          // }).then(() => {
+          //   setLogout()
+          //   const query = {
+          //     returnUrl: route.path,
+          //     ...route.query
+          //   } as any
+          //   router.replace({
+          //     path: '/loginMusic',
+          //     query: query
+          //   })
+          // })
+          state.dialogMessage = '您已在其它乐团'
+          state.dialogStatus = true
           return
         }
 
@@ -242,6 +249,24 @@ export default defineComponent({
             <p class={styles.popupTips}>请使用微信打开</p>
           </div>
         </Popup> */}
+
+        <ODialog
+          title="提示"
+          v-model:show={state.dialogStatus}
+          message={state.dialogMessage}
+          confirmButtonText="确定"
+          onConfirm={() => {
+            setLogout()
+            const query = {
+              returnUrl: route.path,
+              ...route.query
+            } as any
+            router.replace({
+              path: '/loginMusic',
+              query: query
+            })
+          }}
+        />
       </div>
     )
   }

+ 35 - 48
src/student/music-group/pre-apply/order-detail.tsx

@@ -16,6 +16,8 @@ import UserAuth from './component/user-auth'
 import qs from 'query-string'
 import MemberBao from '../member-bao'
 import GoodsDetail from '../goods-detail'
+import ODialog from '@/components/o-dialog'
+import { orderStatus } from '@/constant'
 
 export default defineComponent({
   name: 'order-detail',
@@ -40,7 +42,9 @@ export default defineComponent({
       memberBaoStatus: false, // 团练宝详情状态
       goodsStatus: false, //
       selectGoodsId: null as any,
-      currentPrice: 0
+      currentPrice: 0,
+      dialogStatus: false,
+      dialogMessage: ''
     })
 
     const orderType = computed(() => {
@@ -92,17 +96,19 @@ export default defineComponent({
         // REFUNDED: '已退款'
         if (data.status !== 'WAIT_PAY' && data.status !== 'PAYING') {
           // status
-          showConfirmDialog({
-            message: '订单处理中,请稍等',
-            showCancelButton: false
-          }).then(() => {
-            router.replace({
-              path: '/payment-result',
-              query: {
-                orderNo: state.orderNo
-              }
-            })
-          })
+          state.dialogStatus = true
+          state.dialogMessage = '订单' + orderStatus[data.status]
+          // showConfirmDialog({
+          //   message: '订单处理中,请稍等',
+          //   showCancelButton: false
+          // }).then(() => {
+          //   router.replace({
+          //     path: '/payment-result',
+          //     query: {
+          //       orderNo: state.orderNo
+          //     }
+          //   })
+          // })
         }
       } catch {
         //
@@ -113,18 +119,6 @@ export default defineComponent({
       const config: any = state.config
       state.pay_channel = val.pay_channel
       if (val.payCode === 'payResult') {
-        // router.push({
-        //   path: '/payResult',
-        //   query: {
-        //     pay_channel: val.pay_channel,
-        //     wxAppId: config.wxAppId,
-        //     body: config.body,
-        //     price: config.price,
-        //     orderNo: config.merOrderNo,
-        //     userId: config.userId
-        //   }
-        // })
-
         window.location.href =
           window.location.origin +
           '/orchestra-student/#/payResult?' +
@@ -260,18 +254,7 @@ export default defineComponent({
         const { data } = await request.get('/api-student/userPaymentOrder/detail/' + state.orderNo)
         console.log(data)
         state.pay_channel = data.paymentChannel
-        if (data.status === 'PAID') {
-          // showConfirmDialog({
-          //   message: '该订单已支付成功',
-          //   showCancelButton: false
-          // }).then(() => {
-          //   router.replace({
-          //     path: '/payment-result',
-          //     query: {
-          //       orderNo: state.orderNo
-          //     }
-          //   })
-          // })
+        if (data.status !== 'WAIT_PAY' && data.status !== 'PAYING') {
           router.replace({
             path: '/payment-result',
             query: {
@@ -315,18 +298,7 @@ export default defineComponent({
         })
         console.log(data)
         state.pay_channel = data.paymentChannel
-        if (data.status === 'PAID') {
-          // showConfirmDialog({
-          //   message: '该订单已支付成功',
-          //   showCancelButton: false
-          // }).then(() => {
-          //   router.replace({
-          //     path: '/payment-result',
-          //     query: {
-          //       orderNo: state.orderNo
-          //     }
-          //   })
-          // })
+        if (data.status !== 'WAIT_PAY' && data.status !== 'PAYING') {
           router.replace({
             path: '/payment-result',
             query: {
@@ -559,6 +531,21 @@ export default defineComponent({
             <GoodsDetail id={state.selectGoodsId} groupPrice={state.currentPrice} />
           )}
         </OPopup>
+
+        <ODialog
+          title="提示"
+          v-model:show={state.dialogStatus}
+          message={state.dialogMessage}
+          confirmButtonText="确定"
+          onConfirm={() => {
+            router.replace({
+              path: '/payment-result',
+              query: {
+                orderNo: state.orderNo
+              }
+            })
+          }}
+        />
       </>
     )
   }

+ 2 - 11
src/student/music-group/shop-address/address-operation.tsx

@@ -69,28 +69,19 @@ export default defineComponent({
               ...params
             }
           })
-          setTimeout(() => {
-            showToast('修改成功')
-          }, 100)
         } else {
           await request.post('/api-student/userReceiveAddress/save', {
             data: {
               ...params
             }
           })
-          setTimeout(() => {
-            showToast('添加成功')
-          }, 100)
         }
 
-        setTimeout(() => {
-          state.isClick = false
-          router.back()
-        }, 1100)
+        state.isClick = false
+        router.back()
       } catch (e: any) {
         //
         state.isClick = false
-        console.log(e)
       }
     }
 

+ 1 - 1
src/student/payment-result/index.tsx

@@ -166,7 +166,7 @@ export default defineComponent({
                     </Tag>
                   </div>
                 ),
-                value: () => <span>x 1</span>
+                value: () => <span>{goods.goodsType === 'VIP' ? '6个月' : 'x 1'}</span>
               }}
             </Cell>
           ))}

+ 5 - 0
src/views/unit-test/unit-list/index.module.less

@@ -109,6 +109,11 @@
       font-size: 16px;
       line-height: 22px;
       color: #333;
+      span {
+        width: 80px;
+        display: inline-block;
+        text-align: right;
+      }
     }
   }
   :global {

+ 1 - 1
src/views/unit-test/unit-list/index.tsx

@@ -95,7 +95,7 @@ export default defineComponent({
       <div class={styles.unitTest}>
         <OSticky position="top">
           {/* */}
-          <OHeader isBack>
+          <OHeader>
             {{
               right: () =>
                 platformApi == '/api-teacher' ? (

+ 9 - 3
src/views/unit-test/unit-list/unitDetail.tsx

@@ -140,9 +140,15 @@ export default defineComponent({
                   根据学生入团的批次对不同训练阶段的学生进行分类,不同训练阶段的学生可布置不同标准的课后训练和单元测验内容。
                 </p>
                 <br />
-                <p>I类学生:最新进入本乐团的学员</p>
-                <p>II类学生:较早进入本乐团的学员</p>
-                <p>III类学生:最早进入本乐团的学员</p>
+                <p>
+                  <span>I类学生:</span>最新进入本乐团的学员
+                </p>
+                <p>
+                  <span>II类学生:</span>较早进入本乐团的学员
+                </p>
+                <p>
+                  <span>III类学生:</span>最早进入本乐团的学员
+                </p>
               </div>
             )
           }}