ソースを参照

Merge branch 'master' into LaoMo

mo 4 年 前
コミット
fa9576ba35
38 ファイル変更172 行追加17 行削除
  1. 0 0
      dist/app.79acc37e537ceffb531b.js
  2. 0 0
      dist/app.fec1ebfa4e7a06a7b565.js
  3. 0 0
      dist/css/VIPApply.81479b75.css
  4. 0 0
      dist/css/VIPApply.90fb4e51.css
  5. 0 1
      dist/css/VIPApply~addVisit.5d0ce117.css
  6. 0 0
      dist/css/addVisit.658b044b.css
  7. 0 0
      dist/css/addVisit.e9eff564.css
  8. 0 0
      dist/css/order.9e65ff04.css
  9. 0 1
      dist/css/order.c0acfade.css
  10. 0 0
      dist/index.html
  11. 0 0
      dist/js/Account~AppLogin~AppRegister~AppSetInfo~ClassDetail~CourseApply~CourseDetail~ExchangeRecord~HelpCent~99ca2482.5fc5278b.js
  12. 0 0
      dist/js/Account~AppLogin~AppRegister~AppSetInfo~ClassDetail~CourseApply~CourseDetail~ExchangeRecord~HelpCent~99ca2482.a94dbf5d.js
  13. 0 0
      dist/js/Account~AppLogin~AppRegister~AppSetInfo~ClassDetail~CourseApply~CourseDetail~ExchangeRecord~HelpCent~e87c52b3.9b3237f9.js
  14. 0 0
      dist/js/Approval.4d99e7f5.js
  15. 0 0
      dist/js/Approval~Attendance~CallNames~CourseApply~CourseEvaluation~IStarted~Leave~PeriodAdjust~PeriodChange~~39f0f730.286a7db9.js
  16. 0 0
      dist/js/Approval~Attendance~CallNames~CourseApply~CourseEvaluation~IStarted~Leave~PeriodAdjust~PeriodChange~~39f0f730.7ab965ac.js
  17. 0 0
      dist/js/Attendance.5e82b4ad.js
  18. 0 0
      dist/js/CallNames.133a1d52.js
  19. 0 0
      dist/js/CourseApply.d8c2479b.js
  20. 0 0
      dist/js/CourseEvaluation.87c542b2.js
  21. 0 0
      dist/js/IStarted.0f4b8325.js
  22. 0 0
      dist/js/Leave.1dc99632.js
  23. 0 0
      dist/js/PeriodAdjust.fbba7b32.js
  24. 0 0
      dist/js/PeriodChange.1384aa89.js
  25. 0 0
      dist/js/TeachingSchool.cd3059e8.js
  26. 0 0
      dist/js/TeachingSet.1127a89d.js
  27. 0 0
      dist/js/VIPApply.256798c5.js
  28. 0 0
      dist/js/VIPApply.a48283af.js
  29. 0 0
      dist/js/VIPApply~addVisit.6921d5f7.js
  30. 0 0
      dist/js/addVisit.8a73e5e8.js
  31. 0 0
      dist/js/addVisit.96f0d52e.js
  32. 0 0
      dist/js/order.6b9b1918.js
  33. 8 0
      dist/js/order.ff19a1a1.js
  34. 0 0
      dist/js/privacy.63f17ef9.js
  35. 1 1
      dist/js/specialDetail.6b2b1f79.js
  36. 0 0
      dist/js/visitList.e132012c.js
  37. 10 0
      src/api/teacher.js
  38. 153 14
      src/views/teacher/order.vue

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/app.79acc37e537ceffb531b.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/app.fec1ebfa4e7a06a7b565.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/css/VIPApply.81479b75.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/css/VIPApply.90fb4e51.css


+ 0 - 1
dist/css/VIPApply~addVisit.5d0ce117.css

@@ -1 +0,0 @@
-.mheader[data-v-61d0e2e4]{height:.44rem;overflow:hidden}.m-nav-header[data-v-61d0e2e4]{position:absolute;left:0;top:0;width:100%;height:.44rem;line-height:.44rem;background-color:#14928a;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fff}.m-nav-header.fixed[data-v-61d0e2e4]{position:fixed;z-index:99}.m-nav-header .m-nav-bar__title[data-v-61d0e2e4]{max-width:60%;margin:0 auto;color:#fff;font-weight:500;font-size:.16rem}.m-nav-header .m-nav-bar__left[data-v-61d0e2e4],.m-nav-header .m-nav-bar__right[data-v-61d0e2e4]{position:absolute;bottom:0}.m-nav-header .m-nav-bar__left[data-v-61d0e2e4]{left:.12rem}.m-nav-header .m-nav-bar__left .arrow-left[data-v-61d0e2e4]{font-size:.21rem;vertical-align:middle}.m-nav-header .m-nav-bar__right[data-v-61d0e2e4]{right:.12rem}.icon[data-v-67669af7]{width:2rem;height:2rem;margin:.5rem auto .05rem}.icon_nodata[data-v-67669af7]{background:url(../img/icon_nodata.81c87d57.png) no-repeat 50%;background-size:contain}.msg[data-v-67669af7]{color:#aaa;font-size:.16rem;text-align:center;line-height:.22rem}

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/css/addVisit.658b044b.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/css/addVisit.e9eff564.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/css/order.9e65ff04.css


+ 0 - 1
dist/css/order.c0acfade.css

@@ -1 +0,0 @@
-.order[data-v-cb02c95e]{background:#fff;min-height:100vh}header[data-v-cb02c95e]{height:.4rem;line-height:.4rem;color:#000;font-size:.17rem;background:#fff;-webkit-box-shadow:0 1px 8px 0 rgba(0,0,0,.07);box-shadow:0 1px 8px 0 rgba(0,0,0,.07);text-align:center}h2[data-v-cb02c95e]{font-size:.16rem;color:#fff;padding:.1rem 0;text-align:center;background:#14928a}.table .title[data-v-cb02c95e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;border-bottom:1px solid #eaeaea}.table span[data-v-cb02c95e]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:.08rem 0;font-size:.14rem}.table span[data-v-cb02c95e]:first-child{width:.3rem;-webkit-box-flex:inherit;-ms-flex:inherit;flex:inherit}.table .content>div[data-v-cb02c95e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center}.table .content>div[data-v-cb02c95e]:nth-child(2n+2){background:#eaeaea}[data-v-cb02c95e] .van-dropdown-menu{height:.4rem;position:absolute;right:.15rem;top:0}[data-v-cb02c95e] .van-dropdown-menu .van-dropdown-menu__bar{height:.4rem;-webkit-box-shadow:none;box-shadow:none}

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/index.html


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Account~AppLogin~AppRegister~AppSetInfo~ClassDetail~CourseApply~CourseDetail~ExchangeRecord~HelpCent~99ca2482.5fc5278b.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Account~AppLogin~AppRegister~AppSetInfo~ClassDetail~CourseApply~CourseDetail~ExchangeRecord~HelpCent~99ca2482.a94dbf5d.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Account~AppLogin~AppRegister~AppSetInfo~ClassDetail~CourseApply~CourseDetail~ExchangeRecord~HelpCent~e87c52b3.9b3237f9.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Approval.4d99e7f5.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Approval~Attendance~CallNames~CourseApply~CourseEvaluation~IStarted~Leave~PeriodAdjust~PeriodChange~~39f0f730.286a7db9.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Approval~Attendance~CallNames~CourseApply~CourseEvaluation~IStarted~Leave~PeriodAdjust~PeriodChange~~39f0f730.7ab965ac.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Attendance.5e82b4ad.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/CallNames.133a1d52.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/CourseApply.d8c2479b.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/CourseEvaluation.87c542b2.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/IStarted.0f4b8325.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/Leave.1dc99632.js


+ 0 - 0
dist/js/PeriodAdjust.a920611f.js → dist/js/PeriodAdjust.fbba7b32.js


+ 0 - 0
dist/js/PeriodChange.95603a34.js → dist/js/PeriodChange.1384aa89.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/TeachingSchool.cd3059e8.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/TeachingSet.1127a89d.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/VIPApply.256798c5.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/VIPApply.a48283af.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/VIPApply~addVisit.6921d5f7.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/addVisit.8a73e5e8.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/addVisit.96f0d52e.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/order.6b9b1918.js


ファイルの差分が大きいため隠しています
+ 8 - 0
dist/js/order.ff19a1a1.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/privacy.63f17ef9.js


+ 1 - 1
dist/js/specialDetail.10ea342c.js → dist/js/specialDetail.6b2b1f79.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["specialDetail"],{"0372":function(t,a,i){},"18de":function(t,a,i){"use strict";i.r(a);var e=function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"specialdetail"},[i("div",{staticClass:"sd-container"},[i("h2",[t._v(t._s(t.dataInfo.title))]),i("div",{staticClass:"msgWrap quill-editor ql-editor",domProps:{innerHTML:t._s(t.dataInfo.content)}})]),i("van-image-preview",{attrs:{startPosition:t.startPosition,images:t.images},model:{value:t.show,callback:function(a){t.show=a},expression:"show"}})],1)},o=[],n=i("9afb"),s={data:function(){return{dataInfo:{},images:[],show:!1,startPosition:0}},mounted:function(){var t=this;localStorage.removeItem("Authorization"),localStorage.removeItem("userInfo"),this.__init(),window.onLook=function(a){var i=document.querySelectorAll(".msgWrap img"),e=[];i.forEach(function(i,o){e.push(i.src),a==i&&(t.startPosition=o)}),t.show=!0,t.images=e}},methods:{__init:function(){var t=this;this.$toast.loading({message:"加载中...",duration:1e5,forbidClick:!0,loadingType:"spinner"}),Object(n["y"])({id:this.$route.query.id}).then(function(a){var i=a.data,e=i.data?i.data.content:null;if(e&&(e=e.replace(/<img/gi,'<img onClick="onLook(this)" style="width: 100% !important;"'),e=e.replace(/<video/gi,'<video style="width: 100% !important;height: 1.95rem;"'),i.data.content=e),t.$toast.clear(),200==i.code&&i.data){t.dataInfo=i.data;var o={1:"精彩活动详情",2:"热门资讯详情",3:"活动列表详情",4:"专项训练详情",7:"知识库详情",9:"系统通知"};document.title=o[i.data.type];var n=document.querySelectorAll("meta");n.forEach(function(a){"description"==a.name&&(a.content=t.dataInfo.title)})}})}}},r=s,c=(i("8844"),i("2877")),l=Object(c["a"])(r,e,o,!1,null,"17c66f02",null);a["default"]=l.exports},8844:function(t,a,i){"use strict";var e=i("0372"),o=i.n(e);o.a}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["specialDetail"],{"0372":function(t,a,i){},"18de":function(t,a,i){"use strict";i.r(a);var e=function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"specialdetail"},[i("div",{staticClass:"sd-container"},[i("h2",[t._v(t._s(t.dataInfo.title))]),i("div",{staticClass:"msgWrap quill-editor ql-editor",domProps:{innerHTML:t._s(t.dataInfo.content)}})]),i("van-image-preview",{attrs:{startPosition:t.startPosition,images:t.images},model:{value:t.show,callback:function(a){t.show=a},expression:"show"}})],1)},o=[],n=i("9afb"),s={data:function(){return{dataInfo:{},images:[],show:!1,startPosition:0}},mounted:function(){var t=this;localStorage.removeItem("Authorization"),localStorage.removeItem("userInfo"),this.__init(),window.onLook=function(a){var i=document.querySelectorAll(".msgWrap img"),e=[];i.forEach(function(i,o){e.push(i.src),a==i&&(t.startPosition=o)}),t.show=!0,t.images=e}},methods:{__init:function(){var t=this;this.$toast.loading({message:"加载中...",duration:1e5,forbidClick:!0,loadingType:"spinner"}),Object(n["z"])({id:this.$route.query.id}).then(function(a){var i=a.data,e=i.data?i.data.content:null;if(e&&(e=e.replace(/<img/gi,'<img onClick="onLook(this)" style="width: 100% !important;"'),e=e.replace(/<video/gi,'<video style="width: 100% !important;height: 1.95rem;"'),i.data.content=e),t.$toast.clear(),200==i.code&&i.data){t.dataInfo=i.data;var o={1:"精彩活动详情",2:"热门资讯详情",3:"活动列表详情",4:"专项训练详情",7:"知识库详情",9:"系统通知"};document.title=o[i.data.type];var n=document.querySelectorAll("meta");n.forEach(function(a){"description"==a.name&&(a.content=t.dataInfo.title)})}})}}},r=s,c=(i("8844"),i("2877")),l=Object(c["a"])(r,e,o,!1,null,"17c66f02",null);a["default"]=l.exports},8844:function(t,a,i){"use strict";var e=i("0372"),o=i.n(e);o.a}}]);

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/js/visitList.e132012c.js


+ 10 - 0
src/api/teacher.js

@@ -239,6 +239,15 @@ const querySubByMusicGroupId = (data) => {
   })
 }
 
+// 获取报名/预报名列表
+const getRegisterOrPreList = (data) => {
+  return axios({
+    url: api + '/teacher/getRegisterOrPreList',
+    method: 'get',
+    params: data
+  })
+}
+
 // 调剂
 const updateSubject = (data) => {
   return axios({
@@ -473,6 +482,7 @@ export {
   statisticsList,
   queryStudentApply,
   querySubByMusicGroupId,
+  getRegisterOrPreList,
   updateSubject,
   findVipSchoolByTeacher2,
   getFortuneBag,

+ 153 - 14
src/views/teacher/order.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="order">
-        <header>支付列表
+        <header>缴费详情
             <van-dropdown-menu>
                 <van-dropdown-item @change="onChange" v-model="voicyPart" :options="voicyPartList" />
             </van-dropdown-menu>
@@ -47,11 +47,11 @@
                             <span> {{ data.currentClass }} </span>
                             <span> {{ data.subjectName }} </span>
                             <span> {{ data.remark }} </span>
-                            <span><van-button 
-                                    :disabled="data.paymentStatus == 2 ? true : false" 
-                                    round 
+                            <span><van-button
+                                    :disabled="data.paymentStatus == 2 ? true : false"
+                                    round
                                     @click = "adjust(data)"
-                                    type = "danger" 
+                                    type = "danger"
                                     size = "small">调剂</van-button> </span>
                         </div>
                     </div>
@@ -63,12 +63,57 @@
                     @cancel="adjustStatus = false"
                     @select="adjustSelect" />
             </van-tab>
+            <van-tab title="数据统计">
+                <div style="width: 100%;overflow-x: auto;">
+                    <div class="table" style="width: 145%;">
+                        <van-row style="border: 1px solid #eaeaea">
+                            <van-col span="1">&nbsp;</van-col>
+                            <van-col span="3">学员编号</van-col>
+                            <van-col span="2">姓名</van-col>
+                            <van-col span="2">声部</van-col>
+                            <van-col span="4">
+                                <div style="display: flex;align-items: center;justify-content: center;" @click="onChangeSort('1')">
+                                    预报名时间
+                                    <div>
+                                        <i class="box box-up" :class="[orderByPerRegister == 'ASC' ? 'active' : null]" style="margin-bottom: .02rem;"></i>
+                                        <i class="box box-down" :class="[orderByPerRegister == 'DESC' ? 'active' : null]"></i>
+                                    </div>
+                                </div>
+                            </van-col>
+                            <van-col span="4">预报名时间差</van-col>
+                            <van-col span="4">
+                                <div style="display: flex;align-items: center;justify-content: center;" @click="onChangeSort('2')">
+                                    缴费时间
+                                    <div>
+                                        <i class="box box-up" :class="[orderByPayTime == 'ASC' ? 'active' : null]" style="margin-bottom: .02rem;"></i>
+                                        <i class="box box-down" :class="[orderByPayTime == 'DESC' ? 'active' : null]"></i>
+                                    </div>
+                                </div>
+                            </van-col>
+                            <van-col span="4">缴费时间差</van-col>
+                        </van-row>
+                        <van-row v-for="(data, index) in countList" :key="data.id" style="border: 1px solid #ebedf0">
+                            <van-col span="1">{{ ++index }}</van-col>
+                            <van-col span="3">{{ data.userId }}</van-col>
+                            <van-col span="2">{{ data.studentName }}</van-col>
+                            <van-col span="2">{{ data.actualSubjectName }}</van-col>
+                            <van-col span="4">{{ data.perRegisterTime }}</van-col>
+                            <van-col span="4">{{ data.perRegIntervalStr }}</van-col>
+                            <van-col span="4">{{ data.payTime }}</van-col>
+                            <van-col span="4">{{ data.payIntervalStr }}</van-col>
+                        </van-row>
+                    </div>
+                </div>
+            </van-tab>
         </van-tabs>
     </div>
 </template>
 
 <script>
-import { queryStudentApply, querySubByMusicGroupId, updateSubject } from '@/api/teacher'
+import { queryStudentApply, querySubByMusicGroupId, getRegisterOrPreList, updateSubject } from '@/api/teacher'
+import setLoading from '@/utils/loading'
+import moment from 'moment'
+import cleanDeep from 'clean-deep'
 export default {
     name: 'order',
     data() {
@@ -79,6 +124,7 @@ export default {
             amountCount: 0, // 总额
             studentList: {}, // 学生列表
             couresList: [],
+            countList: [],
             voicyPart: 0,
             voicyPartList: [{
                 text: '全部声部',
@@ -86,13 +132,15 @@ export default {
             }],
             adjustStatus: false, //
             changeStudent: null, // 修改的学生对象
+            orderByPerRegister: null, // 预报名时间排序状态
+            orderByPayTime: null, // 缴费时间排序状态
         }
     },
-    mounted() {
+    async mounted() {
         window.localStorage.removeItem('userInfo') // 删除用户信息
         window.localStorage.removeItem('Authorization') // 删除用户信息
-
-        querySubByMusicGroupId({ musicGroupId: this.musicGroupId }).then(res => {
+        setLoading(true)
+        await querySubByMusicGroupId({ musicGroupId: this.musicGroupId }).then(res => {
             let result = res.data
             if(result.code == 200) {
                 result.data.forEach(r => {
@@ -108,11 +156,11 @@ export default {
                 })
             }
         })
-        
+        setLoading(false)
         // 获取订单信息
         this.getOrderList()
         this.getOrderStudentList()
-        
+        this.getRegisterOrPreList()
     },
     methods: {
         adjust(item) {
@@ -171,11 +219,67 @@ export default {
                 }
             })
         },
+        async getRegisterOrPreList() {
+            setLoading(true)
+            // 获取订单信息
+            await getRegisterOrPreList(cleanDeep({
+                musicGroupId: this.musicGroupId,
+                rows: 9999,
+                subjectId: this.voicyPart ? this.voicyPart : '',
+                orderByPerRegister: this.orderByPerRegister,
+                orderByPayTime: this.orderByPayTime,
+                page: 1
+            })).then(res => {
+                let result = res.data
+                if(result.code == 200) {
+                    this.countList = result.data.rows
+                }
+            })
+            setLoading(false)
+        },
         onChange() {
             // 切换声部时
             // let subId = value ? value : ''
             this.getOrderList(this.voicyPart)
             this.getOrderStudentList(this.voicyPart)
+            this.getRegisterOrPreList(this.voicyPart)
+        },
+        async onChangeSort(sort) {
+            if(sort == 1) {
+                this.orderByPayTime = null
+                if(this.orderByPerRegister == 'ASC') {
+                    this.orderByPerRegister = 'DESC'
+                } else if(this.orderByPerRegister == 'DESC') {
+                    this.orderByPerRegister = null
+                } else {
+                    this.orderByPerRegister = 'ASC'
+                }
+            } else if(sort == 2) {
+                this.orderByPerRegister = null
+                if(this.orderByPayTime == 'ASC') {
+                    this.orderByPayTime = 'DESC'
+                } else if(this.orderByPayTime == 'DESC') {
+                    this.orderByPayTime = null
+                } else {
+                    this.orderByPayTime = 'ASC'
+                }
+            }
+            await this.getRegisterOrPreList()
+        }
+    },
+    filters: {
+        formatterTimes(second){
+            if (second < 60) {
+                return second + "秒";
+            } else if (60 < second && second < 3600) {
+                return moment(second * 1000).format("m分钟");
+            } else if (3600 < second && second < 86400) {
+                return moment(second * 1000).format("HH小时mm分钟");
+            } else if (second > 86400) {
+                return moment(second * 1000).format("DD天HH小时mm分钟");
+            } else {
+                return "--";
+            }
         }
     }
 }
@@ -223,9 +327,6 @@ h2 {
     }
 
     .content > div{
-        // border: 1px solid #ccc;
-        // border-left: 0;
-        // border-right: 0;
         width: 100%;
         display: flex;
         align-items: center;
@@ -246,4 +347,42 @@ h2 {
         box-shadow: none;
     }
 }
+
+/deep/.van-col {
+    font-size: 0.14rem;
+    text-align: center;
+    padding: .08rem 0;
+}
+/deep/.van-row {
+    &:nth-child(2n+3) {
+        background: #eaeaea;
+    }
+}
+
+.box {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-left: .02rem;
+}
+.box-up {
+    width: 0;
+    height: 0;
+    border-left: 4px solid transparent;
+    border-right: 4px solid transparent;
+    border-bottom: 6px solid #ccc;
+    &.active {
+        border-bottom-color: #14928a;
+    }
+}
+.box-down {
+    width: 0;
+    height: 0;
+    border-left: 4px solid transparent;
+    border-right: 4px solid transparent;
+    border-top: 6px solid #ccc;
+    &.active {
+        border-top-color: #14928a;
+    }
+}
 </style>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません