Browse Source

添加页面

lex-xin 5 years ago
parent
commit
de6620fa57

+ 42 - 2
src/api/app.js

@@ -28,18 +28,58 @@ const queryTenantAccountDetail = (data) => {
   })
 }
 
+// 课时使用记录列表
+const teacherCourseMinutes = (data) => {
+  return axios({
+    url: api + '/teacherCourseSchedule/teacherCourseMinutes',
+    method: 'get',
+    params: data
+  })
+}
+
+// 分页查询活动列表
+const tenantEntryActivitesList = (data) => {
+  return axios({
+    url: api + '/tenantEntryActivities/queryPage',
+    method: 'get',
+    params: data
+  })
+}
+
+// 帮助中心分类
+const helpCenterCatalogList = (data) => {
+  return axios({
+    url: '/api-cms/helpCenterCatalog/list',
+    method: 'get',
+    params: data
+  })
+}
+
 // 帮助中心
 const helpCenterContentList = (data) => {
   return axios({
-    url: '/api-cms/helpCenterCatalog/list',
+    url: '/api-cms/helpCenterContent/list',
     method: 'get',
     params: data
   })
 }
 
+// 获取用户基本信息
+const queryUserInfo = (data) => {
+  return axios({
+      url: '/api-auth/queryUserInfo',
+      method: 'get',
+      params: data
+  })
+}
+
 export {
     createCourseGroup,
     sysTenantAccountGet,
     queryTenantAccountDetail,
-    helpCenterContentList
+    helpCenterCatalogList,
+    helpCenterContentList,
+    teacherCourseMinutes,
+    tenantEntryActivitesList,
+    queryUserInfo
 }

+ 35 - 2
src/common/vueFilters.js

@@ -14,10 +14,10 @@ Vue.filter('bandStatus', value => {
 
 // 合并数组
 Vue.filter('joinArray', (value, type) => {
-    if(!type) {
+    if (!type) {
         type = ' '
     }
-    if(typeof value == 'object' && value != null) {
+    if (typeof value == 'object' && value != null) {
         return value.join(type)
     } else {
         return value
@@ -55,6 +55,39 @@ Vue.filter('teachModeStatus', value => {
     return templateStatus[value]
 })
 
+// 消耗类型
+Vue.filter('periodRecordStatus', value => {
+    let templateStatus = {
+        NOT_START: "未开始",
+        APPLYING: "报名中",
+        NORMAL: "正常",
+        LOCK: "锁定",
+        FINISH: "结束",
+        CANCEL: "取消"
+    }
+    return templateStatus[value]
+})
+
+// 计算分钟数
+Vue.filter('calcMinute', (minute) => {
+    if (minute <= 0) {
+        return '0分钟'
+    }
+    let minutes = minute % 60 // 算出分钟
+    let hours = 0 // 小时
+    if (minute >= 60) {
+        hours = (minute - minutes) / 60
+    }
+    let text = ''
+    if (hours) {
+        text = hours + '小时'
+    }
+    if (minutes) {
+        text += minutes + '分钟'
+    }
+    return text
+})
+
 Vue.filter('formatDate', value => {
     let d = new Date(value.replace(/-/ig, '/'))
     let hour = d.getHours() >= 10 ? d.getHours() : '0' + d.getHours()

+ 3 - 3
src/views/app/CourseApply.vue

@@ -88,7 +88,7 @@
 <script>
 /* eslint-disable */
 import MHeader from '@/components/MHeader'
-import { browser }  from '@/common/common'
+import { browser, calcMinute }  from '@/common/common'
 import { findSubSubjects } from '@/api/teacher'
 import { createCourseGroup, sysTenantAccountGet } from '@/api/app'
 let minutes = []  // 分钟数
@@ -184,7 +184,7 @@ export default {
                 let tempResult = result.data
                 if(tempResult) {
                     this.usePeriod = tempResult.availableMinutes ? tempResult.availableMinutes : 0
-                    this.usePeriodText = this.usePeriod + '分钟'
+                    this.usePeriodText = calcMinute(this.usePeriod)
                 }
             } else {
                 this.$toast(result.msg)
@@ -356,7 +356,7 @@ export default {
             }
             let countMinutes = form.singleClassMinutes * form.courseCount
             this.consumePeriod = countMinutes
-            this.consumePeriodText = (countMinutes) + '分钟'
+            this.consumePeriodText = calcMinute(countMinutes)
         },
         onShowTimeTable() { // 显示排课列表
             this.statusList.classTime = true

+ 12 - 0
src/views/app/CourseEvaluation.vue

@@ -48,6 +48,10 @@
             </div>
             <div slot="default" class="content">盼望着,盼望着,东风来了,春天的脚步近了。一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来</div>
         </van-panel>
+
+        <div class="button-group">
+            <van-button type="primary" @click="onSubmit" round size="large">确认</van-button>
+        </div>
     </div>
 </template>
 <script>
@@ -166,4 +170,12 @@ export default {
         color: #666666;
     }
 }
+
+.button-group {
+    margin: .3rem .26rem .2rem;
+    .van-button--primary {
+        background: @mColor;
+        font-size: .18rem;
+    }
+}
 </style>

+ 44 - 7
src/views/app/HelpCenter.vue

@@ -1,8 +1,8 @@
 <template>
     <div class="help">
         <m-header v-if="headerStatus" />
-        <van-collapse v-if="dataList.length > 0" v-model="activeNames" accordion>
-            <van-collapse-item v-for="(item, index) in dataList" :key="index" title="标题1" name="1">内容</van-collapse-item>
+        <van-collapse v-if="dataStatus" v-model="activeNames" accordion>
+            <van-collapse-item v-for="(item, index) in dataList" :key="index" title-class="van-ellipsis" :title="item.title" :name="index"><div v-html="item.content"></div></van-collapse-item>
         </van-collapse>
         <m-empty class="empty" v-else key="data" />
     </div>
@@ -12,14 +12,15 @@
 import MHeader from '@/components/MHeader'
 import MEmpty from '@/components/MEmpty'
 import { browser, calcMinute }  from '@/common/common'
-import { helpCenterContentList } from '@/api/app'
+import { helpCenterCatalogList, helpCenterContentList } from '@/api/app'
 export default {
     name: 'courseApply',
     components: { MHeader, MEmpty },
     data() {
         return {
             headerStatus: true,
-            activeNames: ['1'],
+            activeNames: [0],
+            dataStatus: true,
             dataList: []
         }
     },
@@ -38,15 +39,51 @@ export default {
         this.__init()
     },
     methods: {
-        __init() {
-            helpCenterContentList().then(res => {
+        async __init() {
+            let loadingStatus = true
+            this.$toast.loading({
+                duration: 0,
+                message: '加载中...',
+                forbidClick: true,
+                loadingType: 'spinner'
+            })
+            let catalogResult = []
+            await helpCenterCatalogList().then(res => {
                 let result = res.data
                 if(result.code == 200) {
-                    this.dataList = result.data
+                    catalogResult = result.data
                 } else {
                     this.$toast(result.msg)
+                    loadingStatus = false
                 }
             })
+            if(catalogResult.length > 0) {
+                await helpCenterContentList({
+                    catalogIds: catalogResult[0].id,
+                    page: 1,
+                    rows: 100
+                }).then(res => {
+                    let result = res.data
+                    loadingStatus = false
+                    if(result.code == 200) {
+                        this.dataList = result.data.rows ? result.data.rows : []
+                        if(this.dataList.length > 0) {
+                            this.dataStatus = true
+                        } else {
+                            this.dataStatus = false
+                        }
+                    } else {
+                        this.$toast(result.msg)
+                    }
+                })
+            } else {
+                loadingStatus = false
+            }
+            
+            console.log(loadingStatus)
+            if(!loadingStatus) {
+                this.$toast.clear()
+            }
         }
     },
     destroyed() {

+ 54 - 32
src/views/app/PeriodExchange.vue

@@ -5,40 +5,41 @@
         <van-cell-group>
             <van-cell :center="true">
                 <template slot="icon">
-                    <img class="logo" src="@/assets/images/icon_teacher.png" alt="">
+                    <img class="logo" v-if="userInfo.avatar" :src="userInfo.avatar" alt="">
+                    <img class="logo" v-else src="@/assets/images/icon_teacher.png" alt="">
                 </template>
                 <template slot="title">
-                    <p class="exchangeText">刘老师</p>
+                    <p class="exchangeText">{{ userInfo.realName }}</p>
                 </template>
                 <template slot="label">
-                    <p class="info">剩余时长:2000</p>
+                    <p class="info">剩余时长:{{ availableMinutes }}</p>
                 </template>
             </van-cell>
         </van-cell-group>
+
+        <div class="activeList">
+            <div class="active" v-for="(item, index) in dataList" :key="index">
+                <img :src="item.coverImg" alt="">
+            </div>
+        </div>
     
-        <div class="pay_btn" >确认兑换</div>
+        <!-- <div class="pay_btn" >确认兑换</div> -->
     </div>
 </template>
 <script>
 /* eslint-disable */
 import MHeader from '@/components/MHeader'
-import { browser }  from '@/common/common'
-import { queryTenantAccountDetail } from '@/api/app'
+import { browser, calcMinute }  from '@/common/common'
+import { tenantEntryActivitesList, queryUserInfo, sysTenantAccountGet } from '@/api/app'
 
 export default {
     name: 'courseApply',
     components: { MHeader },
     data() {
         return {
+            userInfo: {},
+            availableMinutes: 0,
             headerStatus: true,
-            loading: false,
-            finished: false,
-            params: {
-                search: null,
-                page: 1,
-                rows: 20
-            },
-            dataShow: true, // 是否有数据
             dataList: []
         }
     },
@@ -53,33 +54,42 @@ export default {
         if(browser().android || browser().iPhone) {
             this.headerStatus = false
         }
+
+        this.__init()
+        
+        this.getActivitesList()
     },
     methods: {
-        getAccountDetail() {
-            let params = this.params
-            queryTenantAccountDetail(params).then(res => {
+        __init() {
+            queryUserInfo().then(res => {
+                let result = res.data
+                if(result) {
+                    this.userInfo = result
+                }
+            })
+
+            sysTenantAccountGet().then(res => {
                 let result = res.data
-                this.loading = false
                 if(result.code == 200) {
-                    params.page = result.data.pageNo
-                    this.dataList = this.dataList.concat(result.data.rows)
-                    if(params.page >= result.data.totalPage) {
-                        this.finished = true
+                    let tempResult = result.data
+                    if(tempResult) {
+                        this.availableMinutes = calcMinute(tempResult.availableMinutes ? tempResult.availableMinutes : 0)
                     }
-                    this.params.page++
                 } else {
-                    this.finished = true
-                }
-                // 判断是否有数据
-                if(this.dataList.length <= 0) {
-                    this.dataShow = false
+                    this.$toast(result.msg)
                 }
             })
         },
-        desensitPhone(phone) { // 手机号脱敏
-            let first = phone.substr(0, 3)
-            let last  = phone.substr(-4)
-            return first + '****' + last
+        getActivitesList() {
+            let params = this.params
+            tenantEntryActivitesList(params).then(res => {
+                let result = res.data
+                if(result.code == 200) {
+                    this.dataList = result.data.rows
+                } else {
+                    this.$toast(result.msg)
+                }
+            })
         }
     }
 }
@@ -109,6 +119,18 @@ export default {
     }
     
 }
+.activeList {
+    padding: 0 .16rem;
+    margin-top: -.6rem;
+    position: relative;
+    z-index: 99;
+    .active {
+        margin-bottom: .15rem;
+    }
+    img {
+        width: 100%;
+    }
+}
 .pay_btn {
     background: #14928A;
     line-height: 0.45rem;

+ 11 - 13
src/views/app/PeriodRecord.vue

@@ -5,19 +5,19 @@
         <van-list v-model="loading" v-if="dataShow" key="data"
             :finished="finished"
             finished-text="我是有底线的"
-            @load="getAccountDetail">
+            @load="getTeacherCourse">
             <van-cell-group>
-                <van-cell  v-for="i in 5" :key="i" :center="true">
+                <van-cell  v-for="(item, index) in dataList" :key="index" :center="true">
                     <template slot="title">
-                        <p class="exchangeText">长笛基础课</p>
+                        <p class="exchangeText">{{ item.name }}</p>
                     </template>
                     <template slot="label">
-                        <p class="info">进行中</p>
-                        <p class="info">02-28 18:18</p>
+                        <p class="info">{{ item.status | periodRecordStatus }}</p>
+                        <p class="info">{{ item.createTime }}</p>
                     </template>
                     <template slot="default">
-                        <p class="exchangeText enum">冻结2000小时</p>
-                        <p class="info">已消耗2020小时</p>
+                        <p class="exchangeText enum">冻结{{ item.freezeMinutes | calcMinute }}</p>
+                        <p class="info">已消耗{{ item.consumeMinutes | calcMinute }}</p>
                     </template>
                 </van-cell>
             </van-cell-group>
@@ -29,8 +29,8 @@
 /* eslint-disable */
 import MHeader from '@/components/MHeader'
 import MEmpty from '@/components/MEmpty'
-import { browser }  from '@/common/common'
-import { queryTenantAccountDetail } from '@/api/app'
+import { browser, calcMinute }  from '@/common/common'
+import { teacherCourseMinutes } from '@/api/app'
 
 export default {
     name: 'courseApply',
@@ -41,8 +41,6 @@ export default {
             loading: false,
             finished: false,
             params: {
-                search: null,
-                transType: 'RECHARGE',
                 page: 1,
                 rows: 20
             },
@@ -63,9 +61,9 @@ export default {
         }
     },
     methods: {
-        getAccountDetail() {
+        getTeacherCourse() {
             let params = this.params
-            queryTenantAccountDetail(params).then(res => {
+            teacherCourseMinutes(params).then(res => {
                 let result = res.data
                 this.loading = false
                 if(result.code == 200) {

+ 7 - 0
vue.config.js

@@ -61,6 +61,13 @@ module.exports = {
         ws: true,
         '^/api-web': '/api-web',
         xfwd: true
+      },
+      '/api-auth': {
+        target: targetUrl,
+        changeOrigin: true,
+        ws: true,
+        '^/api-auth': '/api-auth',
+        xfwd: true
       }
     }, // string | Object
   },