Selaa lähdekoodia

添加下载页,和处理bug

lex 2 vuotta sitten
vanhempi
commit
733d2c89a0

+ 8 - 0
src/router/routes-student.ts

@@ -14,6 +14,14 @@ const noLoginRouter = [
     meta: {
       title: '支付详情'
     }
+  },
+  {
+    path: '/download',
+    name: 'download',
+    component: () => import('@/student/download/index'),
+    meta: {
+      title: '下载管乐团学生端'
+    }
   }
 ]
 

+ 11 - 2
src/school/companion-teacher/companion-teacher-register.tsx

@@ -27,6 +27,7 @@ import iconClose from './images/icon-close.png'
 import topBanner1 from './images/top-banner1.png'
 import { checkPhone } from '@/helpers/validate'
 import OUpload from '@/components/o-upload'
+import router from '@/router'
 
 export default defineComponent({
   name: 'companion-teacher-register',
@@ -543,7 +544,11 @@ export default defineComponent({
             <img
               class={styles['icon-close']}
               src={iconClose}
-              onClick={() => (state.submitStatus = false)}
+              onClick={() => {
+                state.submitStatus = false
+                window.location.href =
+                  window.location.origin + '/orchestra-student/#/download?type=teacher'
+              }}
             />
             <img src={topBanner1} class={styles['submit-img']} />
             <div class={styles['submit-container']}>
@@ -557,7 +562,11 @@ export default defineComponent({
                 color="#FF8057"
                 block
                 round
-                onClick={() => (state.submitStatus = false)}
+                onClick={() => {
+                  state.submitStatus = false
+                  window.location.href =
+                    window.location.origin + '/orchestra-student/#/download?type=teacher'
+                }}
               >
                 立即下载
               </Button>

+ 10 - 2
src/school/manage-teacher/manage-teacher-register.tsx

@@ -307,7 +307,11 @@ export default defineComponent({
             <img
               class={styles['icon-close']}
               src={iconClose}
-              onClick={() => (state.submitStatus = false)}
+              onClick={() => {
+                state.submitStatus = false
+                window.location.href =
+                  window.location.origin + '/orchestra-student/#/download?type=manage'
+              }}
             />
             <img src={topBanner1} class={styles['submit-img']} />
             <div class={styles['submit-container']}>
@@ -321,7 +325,11 @@ export default defineComponent({
                 color="#64A9FF"
                 block
                 round
-                onClick={() => (state.submitStatus = false)}
+                onClick={() => {
+                  state.submitStatus = false
+                  window.location.href =
+                    window.location.origin + '/orchestra-student/#/download?type=manage'
+                }}
               >
                 立即下载
               </Button>

+ 1 - 1
src/school/school-detail/index.tsx

@@ -84,7 +84,7 @@ export default defineComponent({
               <p>学年制:{schoolSystem[state.info.schoolSystem]} </p>
               <p>邮箱:{state.info.email}</p>
               <p>管理老师:{state.info.educationalAdministrationUsername}</p>
-              <p>负责人:{state.info.emergencyContactPosition}</p>
+              <p>负责人:{state.info.emergencyContact}</p>
             </div>
           </div>
           <div class={styles.teacherList}>

+ 31 - 6
src/school/train-planning/component/practice-detail/index.tsx

@@ -78,7 +78,6 @@ export default defineComponent({
         dayjs(f.lastTime).format('YYYY-MM-DD') + ' ' + item.selectedValues.join(':') + ':00'
       ).add(f.selectItem.trainTimer, 'minute')
 
-      // console.log(times.isAfter(f.lastTime), times, f.lastTime)
       if (times.isAfter(f.lastTime)) {
         showToast('开始时间超过可选时间范围')
         return
@@ -91,8 +90,39 @@ export default defineComponent({
 
       forms.timerStatus = false
     }
+    const checkForms = () => {
+      const list = forms.classPracticeList
+
+      let status = false
+      let message = ''
+      list.forEach((item: any) => {
+        console.log(item)
+        if (!status && !item.trainTimer) {
+          status = true
+          message = '请输入训练时长'
+        }
+        if (!status && !item.startTime) {
+          status = true
+          message = '请选择开始时间'
+        }
+        if (!status && !item.times) {
+          status = true
+          message = '请输入课时数'
+        }
+        if (!status && item.classIdList.length <= 0) {
+          status = true
+          message = '请选择训练班级'
+        }
+      })
+
+      if (status) {
+        showToast(message)
+      }
+      return status
+    }
 
     const onSubmit = async () => {
+      if (checkForms()) return
       try {
         const list = forms.classPracticeList
         const trainingPlanClassList: any = []
@@ -162,11 +192,6 @@ export default defineComponent({
               <i></i>
               {trainCourseEmnu[item.classType]}
             </div>
-            {/* classType: item,
-          startTime: null as any,
-          trainTimer: null as any,
-          times: null as any,
-          classIdList: [] as any */}
             <CellGroup inset class={styles.cellGroup}>
               <Field
                 label="训练时长"

BIN
src/student/download/images/manage_bg.png


BIN
src/student/download/images/student_bg.png


BIN
src/student/download/images/teacher_bg.png


BIN
src/student/download/images/wx_bg.png


+ 25 - 0
src/student/download/index.module.less

@@ -0,0 +1,25 @@
+.student {
+  background: url('./images/student_bg.png') no-repeat top center;
+  min-height: 100vh;
+  background-size: cover;
+}
+
+.btn {
+  // style={{ width: '60%', margin: '0 20%' }}
+  width: 60%;
+  margin: 85vh 20% 0;
+}
+
+.wxpopup {
+  width: 100%;
+  height: 100vh;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background: rgba(0, 0, 0, 0.5);
+  z-index: 9999;
+  img {
+    width: 88%;
+    margin: 0 6%;
+  }
+}

+ 92 - 0
src/student/download/index.tsx

@@ -0,0 +1,92 @@
+import { Button, showToast } from 'vant'
+import { defineComponent, onMounted, reactive } from 'vue'
+import { useRoute } from 'vue-router'
+import styles from './index.module.less'
+import wxBg from './images/wx_bg.png'
+import { browser } from '@/helpers/utils'
+
+export default defineComponent({
+  name: 'download',
+  setup() {
+    const route = useRoute()
+
+    const state = reactive({
+      wxStatus: false,
+      type: 'student',
+      buttonText: '下载管乐团学生端'
+    })
+
+    const onDownload = () => {
+      if (browser().weixin) {
+        state.wxStatus = true
+        return
+      }
+
+      let urlIos = ''
+      let urlAndroid = ''
+      if (location.origin.indexOf('online.colexiu.com') > -1) {
+        if (state.type === 'student') {
+          urlIos = 'https://itunes.apple.com/cn/app/id1626971695?mt=8'
+          urlAndroid = 'https://appstore.ks3-cn-beijing.ksyuncs.com/clx-student-domain.apk'
+        } else if (state.type === 'teacher') {
+          urlIos = 'https://itunes.apple.com/cn/app/id1626971149?mt=8'
+          urlAndroid = 'https://appstore.ks3-cn-beijing.ksyuncs.com/clx-teacher-domain.apk'
+        } else if (state.type === 'manage') {
+          urlIos = 'https://itunes.apple.com/cn/app/id1626971149?mt=8'
+          urlAndroid = 'https://appstore.ks3-cn-beijing.ksyuncs.com/clx-teacher-domain.apk'
+        }
+      } else {
+        if (state.type === 'student') {
+          urlIos = 'https://www.pgyer.com/powy'
+          urlAndroid = 'https://www.pgyer.com/70e7'
+        } else if (state.type === 'teacher') {
+          urlIos = 'https://www.pgyer.com/iO0m'
+          urlAndroid = 'https://www.pgyer.com/N2U3'
+        } else if (state.type === 'manage') {
+          urlIos = 'https://www.pgyer.com/iO0m'
+          urlAndroid = 'https://www.pgyer.com/N2U3'
+        }
+      }
+
+      if (browser().ios || /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
+        window.location.href = urlIos
+      } else if (/(Android)/i.test(navigator.userAgent)) {
+        window.location.href = urlAndroid
+      } else {
+        showToast('请用手机或移动设备打开')
+      }
+    }
+
+    onMounted(() => {
+      const type: any = route.query.type
+      state.type = type ? type : 'student'
+      if (type === 'student') {
+        state.buttonText = '下载管乐团学生端'
+      } else if (type === 'teacher') {
+        state.buttonText = '下载管乐团伴学端'
+      } else if (type === 'manage') {
+        state.buttonText = '下载管乐团管理端'
+      }
+
+      document.title = state.buttonText
+    })
+    return () => (
+      <div class={[styles.student]}>
+        <Button round size="large" color="#FF8057" class={styles.btn} onClick={onDownload}>
+          {state.buttonText}
+        </Button>
+
+        {state.wxStatus && (
+          <div
+            class={styles.wxpopup}
+            onClick={() => {
+              state.wxStatus = false
+            }}
+          >
+            <img src={wxBg} alt="" />
+          </div>
+        )}
+      </div>
+    )
+  }
+})

+ 0 - 6
src/student/music-group/shop-address/address-operation.tsx

@@ -199,12 +199,6 @@ export default defineComponent({
             }}
           />
         </Popup>
-
-        {/* 
-        <van-popup v-model:show="showPicker" position="bottom" round>
-      <van-picker show-toolbar :columns="columns" @cancel="showPicker = false" @confirm="onConfirm"
-        :columns-field-names="{ text: 'name', value: 'code', children: 'areas' }" />
-    </van-popup> */}
       </div>
     )
   }