Explorar o código

Merge branch 'master' of http://git.dayaedu.com/lex/orchestra-app

skyblued %!s(int64=2) %!d(string=hai) anos
pai
achega
7d38f68797

BIN=BIN
src/common/images/icon_jiaofu.png


BIN=BIN
src/common/images/icon_zibei.png


+ 3 - 0
src/school/mass-message/component/class-list/index.tsx

@@ -119,6 +119,7 @@ export default defineComponent({
     }
 
     const onSelect = (type: string) => {
+      console.log(type, '2121')
       forms.checkboxRefs[type].toggle()
 
       const list: any = []
@@ -214,7 +215,9 @@ export default defineComponent({
                           name={item.id}
                           ref={(el: any) => (forms.checkboxRefs[item.id] = el)}
                           onClick={(e: any) => {
+                            e.preventDefault()
                             e.stopPropagation()
+                            onSelect(item.id)
                           }}
                         ></Checkbox>
                       )

+ 2 - 0
src/school/mass-message/component/manage-list/index.tsx

@@ -183,7 +183,9 @@ export default defineComponent({
                           name={item.id}
                           ref={(el: any) => (forms.checkboxRefs[item.id] = el)}
                           onClick={(e: any) => {
+                            e.preventDefault()
                             e.stopPropagation()
+                            onSelect(item.id)
                           }}
                         ></Checkbox>
                       )

+ 2 - 0
src/school/mass-message/component/student-list/index.tsx

@@ -179,7 +179,9 @@ export default defineComponent({
                           name={item.id}
                           ref={(el: any) => (forms.checkboxRefs[item.id] = el)}
                           onClick={(e: any) => {
+                            e.preventDefault()
                             e.stopPropagation()
+                            onSelect(item.id)
                           }}
                         ></Checkbox>
                       )

+ 2 - 0
src/school/mass-message/component/teacher-list/teacher-list.tsx

@@ -184,7 +184,9 @@ export default defineComponent({
                           name={item.id}
                           ref={(el: any) => (forms.checkboxRefs[item.id] = el)}
                           onClick={(e: any) => {
+                            e.preventDefault()
                             e.stopPropagation()
+                            onSelect(item.id)
                           }}
                         ></Checkbox>
                       )

+ 3 - 2
src/school/mass-message/create-message.tsx

@@ -21,11 +21,12 @@ import {
   TimePicker,
   Uploader
 } from 'vant'
-import { computed, defineComponent, getCurrentInstance, onMounted, reactive, watch } from 'vue'
+import { computed, defineComponent, onMounted, reactive } from 'vue'
 import styles from './index.module.less'
 import SelectSned from './select-sned'
 import iconStudent from '@common/images/icon_student.png'
 import iconTeacher from '@common/images/icon_teacher.png'
+import iconJiaoFu from '@common/images/icon_jiaofu.png'
 import ODialog from '@/components/o-dialog'
 import OSticky from '@/components/o-sticky'
 import { useRoute, useRouter } from 'vue-router'
@@ -379,7 +380,7 @@ export default defineComponent({
           {forms.receives.map((item: any) => {
             let img: any = iconStudent
             if (item.receiveType === 'CLASS') {
-              img = ''
+              img = iconJiaoFu
             } else if (item.receiveType === 'STUDENT') {
               img = iconStudent
             } else if (item.receiveType === 'TEACHER' || item.receiveType === 'SCHOOL') {

+ 8 - 0
src/school/mass-message/index.module.less

@@ -19,6 +19,14 @@
       }
     }
   }
+  .messageSend {
+    color: #aaaaaa;
+    :global {
+      .van-cell__value {
+        color: #aaaaaa;
+      }
+    }
+  }
 
   .send {
     color: #aaa;

+ 8 - 4
src/school/mass-message/index.tsx

@@ -132,13 +132,17 @@ export default defineComponent({
           >
             {state.list.map((item: any) => (
               <CellGroup inset onClick={() => onDetail(item)} style={{ marginBottom: '12px' }}>
-                <Cell class={styles.waitSend} titleStyle={{ flex: '1 auto' }}>
+                <Cell
+                  class={[styles.waitSend, item.sendStatus === 'SEND' && styles.messageSend]}
+                  titleStyle={{ flex: '1 auto' }}
+                >
                   {{
                     title: () => (
                       <div class={styles.time}>
-                        <Icon name="clock-o" class={styles.clockO} />
-                        {/* {item.sendStatus === 'WAIT' ? item.createTime : ''} */}
-                        {/* {item.sendStatus === 'SEND' ? item.sendTime : ''} */}
+                        {item.sendStatus === 'WAIT' && (
+                          <Icon name="clock-o" class={styles.clockO} />
+                        )}
+
                         {item.sendTime}
                       </div>
                     ),

+ 23 - 12
src/school/orchestra/compontent/information.tsx

@@ -53,7 +53,7 @@ export default defineComponent({
         page: 1,
         rows: 20
       },
-
+      statistics: {} as any,
       orchestraInfo: {} as any // 乐团详情
     })
 
@@ -107,6 +107,15 @@ export default defineComponent({
 
     const getDetails = async () => {
       try {
+        const { data } = await request.get('/api-school/orchestra/detail/' + route.query.id)
+        state.orchestraInfo = data || {}
+      } catch {
+        //
+      }
+    }
+
+    const getStatistics = async () => {
+      try {
         const { data } = await request.post('/api-school/classGroup/statistics', {
           data: {
             orchestraId: route.query.id,
@@ -114,7 +123,7 @@ export default defineComponent({
             endTime: state.params.endTime
           }
         })
-        state.orchestraInfo = data || {}
+        state.statistics = data || {}
 
         initNumCountUp()
       } catch {
@@ -164,16 +173,17 @@ export default defineComponent({
     const initNumCountUp = () => {
       nextTick(() => {
         // 在读学生
-        const orchestraInfo = state.orchestraInfo
-        new CountUp('currentStudentNum', orchestraInfo.studentNum || 0).start()
-        new CountUp('time1', orchestraInfo.attendanceRate || 0).start()
-        new CountUp('time2', orchestraInfo.homeworkRate || 0).start()
-        new CountUp('time3', orchestraInfo.homeworkQualifiedRate || 0).start()
+        const statistics = state.statistics
+        new CountUp('currentStudentNum', statistics.studentNum || 0).start()
+        new CountUp('time1', statistics.attendanceRate || 0).start()
+        new CountUp('time2', statistics.homeworkRate || 0).start()
+        new CountUp('time3', statistics.homeworkQualifiedRate || 0).start()
       })
     }
 
     onMounted(() => {
       getDetails()
+      getStatistics()
       getList()
     })
 
@@ -205,26 +215,26 @@ export default defineComponent({
         <Grid border={false} class={styles.gridContainer}>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="currentStudentNum">{state.orchestraInfo.studentNum || 0}</span>
+              <span id="currentStudentNum">{state.statistics.studentNum || 0}</span>
               <i>名</i>
             </p>
             <p class={styles.name}>在读学生</p>
           </GridItem>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="time1">{state.orchestraInfo.attendanceRate || 0}</span>%
+              <span id="time1">{state.statistics.attendanceRate || 0}</span>%
             </p>
             <p class={styles.name}>到课率</p>
           </GridItem>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="time2">{state.orchestraInfo.homeworkRate || 0}</span>%
+              <span id="time2">{state.statistics.homeworkRate || 0}</span>%
             </p>
             <p class={styles.name}>作业提交率</p>
           </GridItem>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="time3">{state.orchestraInfo.homeworkQualifiedRate || 0}</span>%
+              <span id="time3">{state.statistics.homeworkQualifiedRate || 0}</span>%
             </p>
             <p class={styles.name}>练习合格率</p>
           </GridItem>
@@ -271,7 +281,8 @@ export default defineComponent({
         )}
 
         {/*  */}
-        {state.orchestraInfo.type === 'DELIVERY' &&
+        {(state.orchestraInfo.deliveryType === 'SINGLE_DELIVERY' ||
+          state.orchestraInfo.deliveryType === 'MULTIPLE_DELIVERY') &&
           ['REGISTER', 'DOING', 'DONE'].includes(state.orchestraInfo.status) && (
             <OSticky position="bottom">
               <div class={'btnGroup'}>

+ 6 - 1
src/school/ranking-list/index.tsx

@@ -26,7 +26,12 @@ export default defineComponent({
       <>
         <OSticky position="top" background="#F8F8F8" onGetHeight={getHeight}>
           <div class={styles.topWrap}>
-            <OHeader color={'#ffffff'} background={'transparent'} border={false}></OHeader>
+            <OHeader
+              color={'#ffffff'}
+              backIconColor="white"
+              background={'transparent'}
+              border={false}
+            ></OHeader>
             <span class={styles.topTime}>{timers.value}</span>
           </div>
           <Tabs

+ 1 - 0
src/school/ranking-list/modals/rank-item.module.less

@@ -41,6 +41,7 @@
       line-height: 22px;
     }
     .tag {
+      display: inline-block;
       background: #ffe7da;
       border-radius: 4px;
       font-size: 12px;

+ 3 - 1
src/school/ranking-list/modals/rank-item.tsx

@@ -24,7 +24,9 @@ export default defineComponent({
               </div>
               <div>
                 <p class={styles.studentName}>{props.item.nickname}</p>
-                <div class={styles.tag}>{props.item.subjectNames}</div>
+                <div class={styles.tag}>
+                  {props.item.subjectNames ? props.item.subjectNames : '暂无声部'}
+                </div>
               </div>
             </div>
             <div class={styles.wrapRight}>

+ 26 - 0
src/student/music-group/layout/index.module.less

@@ -73,4 +73,30 @@
       color: #000 !important;
     }
   }
+
+  .popupContainer {
+    .dialogTitle {
+      i {
+        display: inline-block;
+        width: 4px;
+        height: 14px;
+        background: #ff8057;
+        border-radius: 2px;
+        margin-right: 6px;
+      }
+
+      text-align: left;
+      font-size: 18px;
+      font-weight: 500;
+      color: #333333;
+      line-height: 25px;
+      padding: 20px 0 20px 25px;
+    }
+
+    .popupTips {
+      text-align: center;
+      padding: 15px 0 45px;
+      font-size: 16px;
+    }
+  }
 }

+ 65 - 5
src/student/music-group/layout/login.tsx

@@ -1,11 +1,12 @@
 import { defineComponent } from 'vue'
-import { CellGroup, Field, Button, CountDown, Row, Col, showToast } from 'vant'
+import { CellGroup, Field, Button, CountDown, Row, Col, showToast, Popup } from 'vant'
 import ImgCode from '@/components/o-img-code'
 import { checkPhone } from '@/helpers/validate'
 import { setLogin, state } from '@/state'
 import { removeAuth, setAuth } from './utils'
 import styles from './index.module.less'
 import request from '@/helpers/request'
+import { browser, getUrlCode } from '@/helpers/utils'
 
 type loginType = 'PWD' | 'SMS'
 export default defineComponent({
@@ -19,7 +20,9 @@ export default defineComponent({
       countDownStatus: true, // 是否发送验证码
       countDownTime: 1000 * 120, // 倒计时时间
       // countDownRef: null as any, // 倒计时实例
-      imgCodeStatus: false
+      imgCodeStatus: false,
+      showPopup: false,
+      code: '' // 授权code码
     }
   },
   computed: {
@@ -32,15 +35,57 @@ export default defineComponent({
   mounted() {
     removeAuth()
     this.directNext()
+
+    // 判断是否是微信,只能微信中打开
+    if (browser().weixin) {
+      // 微信公众号支付
+      //授权
+      const code = getUrlCode()
+      console.log('login mounted code: ' + code)
+      if (!code) {
+        this.getAppIdAndCode()
+      } else {
+        this.code = code
+      }
+    } else {
+      this.showPopup = true
+    }
   },
   methods: {
+    async getAppIdAndCode() {
+      try {
+        const { data } = await request.get('/api-student/open/paramConfig/wechatAppId')
+        // 判断是否有微信appId
+        if (data) {
+          this.goAuth(data)
+        }
+      } catch {
+        //
+      }
+    },
+    goAuth(wxAppId: string) {
+      // 用户授权
+      const urlNow = encodeURIComponent(window.location.href)
+      const scope = 'snsapi_base' //snsapi_userinfo   //静默授权 用户无感知
+      const appid = wxAppId || 'wx8654c671631cfade'
+      const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=STATE&connect_redirect=1#wechat_redirect`
+      window.location.replace(url)
+    },
     directNext() {
       if (state.user.status === 'login' || state.user.status === 'error') {
         const { returnUrl, isRegister, ...rest } = this.$route.query
+        console.log(
+          {
+            ...rest,
+            code: this.code
+          },
+          'jump pre registration'
+        )
         this.$router.replace({
           path: returnUrl as any,
           query: {
-            ...rest
+            ...rest,
+            code: this.code
           }
         })
       }
@@ -136,8 +181,7 @@ export default defineComponent({
                 placeholder="请输入验证码"
                 type="tel"
                 maxlength={6}
-                // @ts-ignore
-                vSlots={{
+                v-slots={{
                   button: () =>
                     this.countDownStatus ? (
                       <span class={styles.codeText} onClick={this.onSendCode}>
@@ -173,6 +217,22 @@ export default defineComponent({
             onSendCode={this.onCodeSend}
           />
         ) : null}
+
+        <Popup
+          v-model:show={this.showPopup}
+          round
+          style={{ width: '92%' }}
+          closeOnClickOverlay={false}
+        >
+          <div class={styles.popupContainer}>
+            <div class={styles.dialogTitle}>
+              <i></i>
+              提示
+            </div>
+
+            <p class={styles.popupTips}>请使用微信打开</p>
+          </div>
+        </Popup>
       </div>
     )
   }

+ 21 - 2
src/student/music-group/pre-apply/component/apply.tsx

@@ -13,8 +13,9 @@ import {
   Tag
 } from 'vant'
 import { defineComponent, onMounted, reactive } from 'vue'
-import { useRoute } from 'vue-router'
+import { useRoute, useRouter } from 'vue-router'
 import styles from '../index.module.less'
+import { setLogout } from '@/state'
 
 // 乐团交付,乐团停止或关闭,有新的交付团;则不允许报名
 const classList: any = []
@@ -37,7 +38,9 @@ export default defineComponent({
   emits: ['next'],
   setup(props, { slots, attrs, emit }) {
     const route = useRoute()
+    const router = useRouter()
     const state = reactive({
+      code: '' as any, // 微信授权code码
       detail: {} as any, // 学生详情
       currentGrade: [
         { text: '一年级', value: 1 },
@@ -153,7 +156,8 @@ export default defineComponent({
         }
         await request.post('/api-student/orchestraRegister/save', {
           data: {
-            ...params
+            ...params,
+            code: state.code
           }
         })
         setTimeout(() => {
@@ -166,12 +170,27 @@ export default defineComponent({
     }
 
     onMounted(async () => {
+      state.code = route.query.code || ''
+      console.log('pre register code: ' + state.code)
       await getSubjects()
       // 判断学年制
       if (props.schoolSystem === 'sixYearSystem') {
         state.currentGrade.push({ text: '六年级', value: 6 })
       }
       await studentRegister()
+
+      // 判断是否有授权码
+      if (!state.code) {
+        setLogout()
+        const query = {
+          returnUrl: route.path,
+          ...route.query
+        } as any
+        router.replace({
+          path: '/loginMusic',
+          query: query
+        })
+      }
     })
     return () => (
       <>

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

@@ -15,6 +15,32 @@
     }
   }
 
+  .popupContainer {
+    .dialogTitle {
+      i {
+        display: inline-block;
+        width: 4px;
+        height: 14px;
+        background: #ff8057;
+        border-radius: 2px;
+        margin-right: 6px;
+      }
+
+      text-align: left;
+      font-size: 18px;
+      font-weight: 500;
+      color: #333333;
+      line-height: 25px;
+      padding: 20px 0 20px 25px;
+    }
+
+    .popupTips {
+      text-align: center;
+      padding: 15px 0 45px;
+      font-size: 16px;
+    }
+  }
+
   .banner {
     background: url('./images/banner.png') no-repeat center center;
     background-size: cover;

+ 54 - 1
src/student/music-group/pre-apply/index.tsx

@@ -1,5 +1,5 @@
 import { defineComponent, onMounted, reactive, ref, nextTick } from 'vue'
-import { Image, showDialog, Sticky, Tab, Tabs } from 'vant'
+import { Image, Popup, showDialog, Sticky, Tab, Tabs } from 'vant'
 import styles from './index.module.less'
 // import { useRect } from '@vant/use'
 import Apply from './component/apply'
@@ -9,6 +9,7 @@ import { useRoute, useRouter } from 'vue-router'
 
 import { setLogout } from '@/state'
 import request from '@/helpers/request'
+import { browser, getUrlCode } from '@/helpers/utils'
 
 export default defineComponent({
   name: 'pre-apply',
@@ -22,6 +23,8 @@ export default defineComponent({
       registerInfo: {} as any,
       purchase: false, // 购买状态
       register: true // 是否注册
+      // showPopup: false,
+      // code: '' as any
     })
 
     const onNext = async (name: string) => {
@@ -120,12 +123,46 @@ export default defineComponent({
       }
     }
 
+    // const getAppIdAndCode = async () => {
+    //   try {
+    //     const { data } = await request.get('/api-student/open/paramConfig/wechatAppId')
+    //     // 判断是否有微信appId
+    //     if (data) {
+    //       goAuth(data)
+    //     }
+    //   } catch {
+    //     //
+    //   }
+    // }
+    // const goAuth = (wxAppId: string) => {
+    //   // 用户授权
+    //   const urlNow = encodeURIComponent(window.location.href)
+    //   const scope = 'snsapi_base' //snsapi_userinfo   //静默授权 用户无感知
+    //   const appid = wxAppId || 'wx8654c671631cfade'
+    //   const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=STATE&connect_redirect=1#wechat_redirect`
+    //   window.location.replace(url)
+    // }
+
     // 先请求接口
     getRegisterStatus()
 
     onMounted(() => {
+      // state.code = route.query.code || ''
       // const { height } = useRect(bannerRef.value)
       // state.heightV = height
+      // 判断是否是微信,只能微信中打开
+      // if (browser().weixin) {
+      //   // 微信公众号支付
+      //   //授权
+      //   const code = getUrlCode()
+      //   if (!code || !state.code) {
+      //     getAppIdAndCode()
+      //   } else {
+      //     state.code = code
+      //   }
+      // } else {
+      //   state.showPopup = true
+      // }
     })
     return () => (
       <div class={styles.preApply}>
@@ -157,6 +194,22 @@ export default defineComponent({
         )}
         {state.tabValue === 'payment' && <Payment onNext={onNext} />}
         {state.tabValue === 'order' && <Order onNext={onNext} />}
+
+        {/* <Popup
+          v-model:show={state.showPopup}
+          round
+          style={{ width: '92%' }}
+          closeOnClickOverlay={false}
+        >
+          <div class={styles.popupContainer}>
+            <div class={styles.dialogTitle}>
+              <i></i>
+              提示
+            </div>
+
+            <p class={styles.popupTips}>请使用微信打开</p>
+          </div>
+        </Popup> */}
       </div>
     )
   }

+ 4 - 2
src/student/ranking-list/components/day-bang.tsx

@@ -50,6 +50,7 @@ export default defineComponent({
     const showContact = ref(false)
     const list = ref([])
     const toTop = ref(props.toHeight)
+    const myInfo = ref({} as any)
     console.log(props.toHeight)
     watch(
       () => props.toHeight,
@@ -74,7 +75,7 @@ export default defineComponent({
           refreshing.value = false
         }
 
-        const res = await request.post('/api-school/student/page', {
+        const res = await request.post('/api-student/student/page', {
           data: { ...forms }
         })
 
@@ -89,6 +90,7 @@ export default defineComponent({
         console.log(showContact.value, ' showContact.value ')
         loading.value = false
         finished.value = true
+        myInfo.value = res.data.extra
         // finished.value = res.data.current >= res.data.pages
       } catch (e: any) {
         // console.log(e, 'e')
@@ -129,7 +131,7 @@ export default defineComponent({
                 ))}
               </List>
             </PullRefresh>
-            <MyRankingItem item={list.value[0]}></MyRankingItem>
+            <MyRankingItem item={myInfo.value}></MyRankingItem>
           </div>
         ) : (
           <OEmpty />

+ 4 - 2
src/student/ranking-list/components/timer-bang.tsx

@@ -47,6 +47,7 @@ export default defineComponent({
     const showContact = ref(false)
     const list = ref([])
     const toTop = ref(props.toHeight)
+    const myInfo = ref({} as any)
     watch(
       () => props.toHeight,
       (val: number) => {
@@ -71,7 +72,7 @@ export default defineComponent({
           refreshing.value = false
         }
 
-        const res = await request.post('/api-school/student/page', {
+        const res = await request.post('/api-student/student/page', {
           data: { ...forms }
         })
 
@@ -86,6 +87,7 @@ export default defineComponent({
         console.log(showContact.value, ' showContact.value ')
         loading.value = false
         finished.value = true
+        myInfo.value = res.data.extra
         // finished.value = res.data.current >= res.data.pages
       } catch (e: any) {
         // console.log(e, 'e')
@@ -128,7 +130,7 @@ export default defineComponent({
                 ))}
               </List>
             </PullRefresh>
-            <MyRankingItem item={list.value[0]}></MyRankingItem>
+            <MyRankingItem item={myInfo.value}></MyRankingItem>
           </div>
         ) : (
           <OEmpty />

+ 6 - 1
src/student/ranking-list/index.tsx

@@ -39,7 +39,12 @@ export default defineComponent({
       <>
         <OSticky position="top" background="#F8F8F8" onGetHeight={getHeight}>
           <div class={styles.topWrap}>
-            <OHeader color={'#ffffff'} background={'transparent'} border={false}></OHeader>
+            <OHeader
+              color={'#ffffff'}
+              backIconColor="white"
+              background={'transparent'}
+              border={false}
+            ></OHeader>
             <span class={styles.topTime} onClick={() => (state.showPopoverTime = true)}>
               {forms.timeName} <Icon name={state.showPopoverTime ? 'arrow-up' : 'arrow-down'} />
             </span>

+ 14 - 5
src/student/ranking-list/modals/my-ranking-item.tsx

@@ -15,14 +15,23 @@ export default defineComponent({
               </div>
               <div>
                 <p class={styles.studentName}>{props.item.nickname}</p>
-                <div class={styles.myTag}>{props.item.subjectNames}</div>
+                <div class={styles.myTag}>
+                  {props.item.subjectNames ? props.item.subjectNames : '暂无声部'}
+                </div>
               </div>
             </div>
             <div class={styles.wrapRight}>
-              <p>
-                <span>我的排名</span>
-                {props.item.ranking ? props.item.ranking : 0}
-              </p>
+              {props.item.ranking <= 50 ? (
+                <p>
+                  <span>我的排名</span>
+                  {props.item.ranking <= 50 ? props.item.ranking : 0}
+                </p>
+              ) : (
+                <p>
+                  {' '}
+                  <span>暂无排名</span>
+                </p>
+              )}
             </div>
           </div>
           <div class={styles.wall}></div>

+ 2 - 0
src/student/ranking-list/modals/rank-item.module.less

@@ -42,6 +42,7 @@
       text-align: center;
     }
     .tag {
+      display: inline-block;
       background: #ffe7da;
       border-radius: 4px;
       font-size: 12px;
@@ -106,6 +107,7 @@
       text-align: center;
     }
     .myTag {
+      display: inline-block;
       background: #ff8057;
       border-radius: 12px;
       font-size: 12px;

+ 3 - 1
src/student/ranking-list/modals/rank-item.tsx

@@ -24,7 +24,9 @@ export default defineComponent({
               </div>
               <div>
                 <p class={styles.studentName}>{props.item.nickname}</p>
-                <div class={styles.tag}>{props.item.subjectNames}</div>
+                <div class={styles.tag}>
+                  {props.item.subjectNames ? props.item.subjectNames : '暂无声部'}
+                </div>
               </div>
             </div>
             <div class={styles.wrapRight}>

+ 13 - 15
src/views/attendance-rule/index.tsx

@@ -5,14 +5,7 @@ import { defineComponent, reactive, onMounted } from 'vue'
 import clockIcon from './images/clock-icon.png'
 import styles from './index.module.less'
 import request from '@/helpers/request'
-import {
-  addFormMinute,
-  addFormMinuteAddS,
-  reduceFormMinute,
-  reduceFormMinuteAddS,
-  addFormMinuteMS,
-  reduceFormMinuteMS
-} from '@/helpers/date'
+import { addFormMinute, reduceFormMinute } from '@/helpers/date'
 export default defineComponent({
   name: 'attendance-rule',
   setup() {
@@ -79,7 +72,8 @@ export default defineComponent({
                   <p>
                     课程<span>开始前{forms[15] ? forms[15] : 0}分钟</span>至课程
                     <span>开始前{forms[16] ? forms[16] : 0}分钟</span>
-                    签到GPS定位点在教学点<span>{forms[10] ? forms[10] : 0}米内</span>
+                    签到 <br />
+                    GPS定位点在教学点<span>{forms[10] ? forms[10] : 0}米内</span>
                   </p>
                   <p>
                     时间段:{reduceFormMinute('12:00:00', forms[15])} ~{' '}
@@ -92,7 +86,9 @@ export default defineComponent({
                   <p>
                     课程<span>开始前{forms[17] ? forms[17] : 0}分钟</span>后至课程
                     <span>开始前</span>
-                    签到GPS定位点在教学点<span>{forms[10] ? forms[10] : 0}米外</span>
+                    签到
+                    <br />
+                    GPS定位点在教学点<span>{forms[10] ? forms[10] : 0}米内</span>
                   </p>
                   <p>时间段:{reduceFormMinute('12:00:00', forms[17])} ~ 12:00:00</p>
                   <p>
@@ -172,14 +168,15 @@ export default defineComponent({
                   <p>
                     课程<span>结束后</span>至课程当天24点前
                   </p>
-                  <p>时间段:13:00:00 ~ 23:59:59</p>
+                  <p>时间段:12:00:00 ~ 23:59:59</p>
                 </div>
 
                 <div class={styles.textWrap}>
                   <h4>正常签退:</h4>
                   <p>
                     课程<span>结束后</span>至课程<span>结束后{forms[28] ? forms[28] : 0}分钟</span>
-                    签退GPS定位点在教学点<span>{forms[10] ? forms[10] : 0}米内</span>
+                    签退 <br />
+                    GPS定位点在教学点<span>{forms[10] ? forms[10] : 0}米内</span>
                   </p>
                   <p>时间段:13:00:00 ~ {addFormMinute('13:00:00', forms[28])}</p>
                 </div>
@@ -205,7 +202,7 @@ export default defineComponent({
                   <h4>异常签退:</h4>
                   <p>
                     课程<span>结束前{forms[29] ? forms[29] : 0}分钟</span>至<span>课程结束前</span>
-                    或GPS定位点在教学点<span> {forms[10] ? forms[10] : 0}米</span>
+                    <br /> 或GPS定位点在教学点<span> {forms[10] ? forms[10] : 0}米</span>
                   </p>
                   <p>时间段:{reduceFormMinute('13:00:00', forms[29])} ~ 12:59:59</p>
                   <p>
@@ -245,7 +242,8 @@ export default defineComponent({
                 <div class={styles.textWrap}>
                   <p>
                     <span>
-                      若签到时间在正常范围内 但同时GPS定位在教学点{forms[10] ? forms[10] : 0}
+                      若签到时间在正常范围内
+                      <br /> 但同时GPS定位在教学点{forms[10] ? forms[10] : 0}
                       米外
                     </span>
                   </p>
@@ -260,7 +258,7 @@ export default defineComponent({
                 <div class={styles.textWrap}>
                   <p>
                     <span>
-                      若签退时间在正常范围内 但同时GPS定位在教学点{forms[10] ? forms[10] : 0}
+                      若签退时间在正常范围内 <br /> 但同时GPS定位在教学点{forms[10] ? forms[10] : 0}
                       米外
                     </span>
                   </p>