瀏覽代碼

添加导出

lex-xin 5 年之前
父節點
當前提交
7ddb1e11de

File diff suppressed because it is too large
+ 0 - 0
dist/index.html


+ 1 - 1
dist/static/css/chunk-2caeb870.b7226827.css → dist/static/css/chunk-14e73a8a.58deb9d5.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.inputStyle[data-v-6aa153a0]{width:100px;text-align:center}.title[data-v-5fcb358e]{margin-bottom:20px}.amap-demo[data-v-5fcb358e]{height:300px}.inputStyle[data-v-63cd9bec]{width:100px;text-align:center}.work[data-v-63cd9bec]{margin-bottom:30px;font-size:16px}.visible[data-v-25078a32]{visibility:hidden}.cl-container .topFrom[data-v-25078a32]{margin:20px 30px 0}.cl-container .topFrom .classlist[data-v-25078a32]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cl-container .topFrom .classlist ul li[data-v-25078a32]{list-style:none}.cl-container .searchForm[data-v-25078a32]{margin:0 30px}.btnWraps[data-v-25078a32]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btnWraps div[data-v-25078a32]{margin-right:20px}.inputStyle[data-v-25078a32]{width:180px}.red[data-v-25078a32]{color:red}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.inputStyle[data-v-6aa153a0]{width:100px;text-align:center}.title[data-v-5fcb358e]{margin-bottom:20px}.amap-demo[data-v-5fcb358e]{height:300px}.inputStyle[data-v-63cd9bec]{width:100px;text-align:center}.work[data-v-63cd9bec]{margin-bottom:30px;font-size:16px}.visible[data-v-bab6aaa6]{visibility:hidden}.cl-container .topFrom[data-v-bab6aaa6]{margin:20px 30px 0}.cl-container .topFrom .classlist[data-v-bab6aaa6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cl-container .topFrom .classlist ul li[data-v-bab6aaa6]{list-style:none}.cl-container .searchForm[data-v-bab6aaa6]{margin:0 30px}.btnWraps[data-v-bab6aaa6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btnWraps div[data-v-bab6aaa6]{margin-right:20px}.inputStyle[data-v-bab6aaa6]{width:180px}.red[data-v-bab6aaa6]{color:red}.exportBtn[data-v-bab6aaa6]{background:#13817a}

+ 1 - 1
dist/static/css/chunk-64c33787.501fd35d.css → dist/static/css/chunk-1b8cb2f4.94aa8920.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.m-container{-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.m-container[data-v-3813b37e]{-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.newBand[data-v-3813b37e]{display:inline-block}

File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.91877a1b.js


+ 0 - 0
dist/static/js/chunk-13336542.c8b96527.js → dist/static/js/chunk-13336542.fa882956.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-14e73a8a.ee24a06f.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-1b8cb2f4.731e849d.js


+ 0 - 0
dist/static/js/chunk-2441ab90.c1a418ac.js → dist/static/js/chunk-2441ab90.e4220131.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-2caeb870.fa0aabd8.js


+ 0 - 0
dist/static/js/chunk-33fd6bb7.a3795d20.js → dist/static/js/chunk-33fd6bb7.beae7954.js


+ 0 - 0
dist/static/js/chunk-3661e960.92cb7a21.js → dist/static/js/chunk-3661e960.5a0c4ca0.js


+ 0 - 0
dist/static/js/chunk-385f8d18.484c56c5.js → dist/static/js/chunk-385f8d18.4da314d2.js


+ 0 - 0
dist/static/js/chunk-3bcfc2cc.94a7399e.js → dist/static/js/chunk-3bcfc2cc.d0ca5ec7.js


+ 0 - 0
dist/static/js/chunk-4046482a.96e41423.js → dist/static/js/chunk-4046482a.7a9f4222.js


+ 0 - 0
dist/static/js/chunk-4ea01add.a89bfd41.js → dist/static/js/chunk-4ea01add.59681f11.js


+ 0 - 0
dist/static/js/chunk-545b0d0c.fd6a6270.js → dist/static/js/chunk-545b0d0c.118a4a8a.js


+ 0 - 0
dist/static/js/chunk-60578c4b.24d17f3a.js → dist/static/js/chunk-60578c4b.3aa2f486.js


+ 0 - 0
dist/static/js/chunk-62720db2.6f0b099d.js → dist/static/js/chunk-62720db2.864f36c5.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-64c33787.d35864a1.js


+ 0 - 0
dist/static/js/chunk-90bc8dd8.1e037696.js → dist/static/js/chunk-90bc8dd8.3b257fd9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-ed8bca9c.53373aab.js


+ 10 - 1
src/api/vipSeting.js

@@ -152,6 +152,15 @@ export function getVipGroupDetail (data) {
   })
 }
 
+// 根据id获取vip详情
+export function getVipGroupDetailForAudit (data) {
+  return request({
+    url: api + `/vipGroupManage/getVipGroupDetailForAudit`,
+    method: 'GET',
+    params: data
+  })
+}
+
 // 根据vipid获取学员
 export function findVipGroupStudents (data) {
   return request({
@@ -348,4 +357,4 @@ export function findTeacherWithVipGroupOrganAndSubject (data) {
     method: 'get',
     params: data
   })
-}
+}

+ 58 - 0
src/views/teamDetail/teamCourseList.vue

@@ -85,6 +85,11 @@
           <div class='searchBtn'
                @click="search">搜索</div>
         </el-form-item>
+        <el-form-item>
+          <div class='searchBtn exportBtn'
+               v-permission="'export/superFindCourseSchedules'"
+               @click="onCourseExport">导出课表</div>
+        </el-form-item>
       </el-form>
       <div class="btnWraps">
       </div>
@@ -286,6 +291,8 @@ import { courseType } from '@/utils/searchArray'
 import studentRollCall from './componentCourse/studentRollCall'
 import gpsLoction from './componentCourse/gpsLocation'
 import studentWork from './componentCourse/studentWork'
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
 let nowTime = new Date()
 nowTime = nowTime.getFullYear() + '-' + (nowTime.getMonth() + 1) + '-' + nowTime.getDate()
 export default {
@@ -397,6 +404,53 @@ export default {
       this.rules.page = 1;
       this.getList();
     },
+    onCourseExport() { // 课表导出
+      let searchForm = this.searchForm
+      if (!searchForm.timer) {
+        searchForm.timer = []
+      }
+      let obj = {
+        courseStatus: searchForm.courseStatus || null,
+        courseType: searchForm.courseType || null,
+        startTime: searchForm.timer[0] || null,
+        endTime: searchForm.timer[1] || null,
+        classGroupId: searchForm.class || null,
+        organIdList: searchForm.organIdList || null,
+        search: searchForm.search || null,
+        teacherIdList: searchForm.teacherIdList || null,
+        schoolId: searchForm.schoolId || null
+      }
+      let url = '/api-web/export/superFindCourseSchedules'
+      const options = {
+        method: 'get',
+        headers: {
+          'Authorization': getToken()
+        },
+        params: obj,
+        url,
+        responseType: 'blob'
+      }
+      this.$confirm('您确定导出报表', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        axios(options).then(res => {
+          let blob = new Blob([res.data], {
+            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+            type: 'application/vnd.ms-excel;charset=utf-8'
+            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+          })
+          let objectUrl = URL.createObjectURL(blob)
+          let link = document.createElement("a")
+          let fname = '课表列表' + new Date().getTime() //下载文件的名字
+          link.href = objectUrl
+          link.setAttribute("download", fname)
+          document.body.appendChild(link)
+          link.click()
+        })
+      }).catch(() => {})
+    },
     getList () {
       let searchForm = this.searchForm
       if (!searchForm.timer) {
@@ -483,4 +537,8 @@ export default {
 .red {
   color: red;
 }
+
+.exportBtn {
+  background: #13817a;
+}
 </style>

+ 12 - 0
src/views/vipClass/vipDetail/components/vipStudentList.vue

@@ -338,6 +338,14 @@ export default {
         }
       })
     },
+    // 删除循环周
+    removeWeek (item) {
+      for (let i in this.weekList) {
+        if (this.weekList[i].id == item.id) {
+          this.weekList.splice(i, 1)
+        }
+      }
+    },
     leaveSchool (scope) {
       let studentId = scope.row.id;
       let vipGroupId = this.id;
@@ -480,6 +488,10 @@ export default {
       })
     },
     submieRecover () {
+      if(this.weekList.length <= 0) {
+        this.$message.error('排课循环次数不能为空')
+        return
+      }
       this.$refs['adjustmentForm'].validate(res => {
         if (res) {
           // 发请求

+ 49 - 1
src/views/vipClass/vipList.vue

@@ -6,6 +6,9 @@
     <div class="newBand"
          v-permission="'/buildVip'"
          @click='gotoBuildVip'>新建VIP课</div>
+
+    <div class="newBand" v-permission="'export/vipGroupList'"
+         @click='onVIPCourseExport'>导出VIP课</div>
     <div class='m-core'>
       <!-- 搜索类型 -->
       <el-form :inline="true"
@@ -215,6 +218,8 @@ import pagination from '@/components/Pagination/index'
 import { getVipList, vipGroupActivity, closeVip, getVipGroupDetail } from '@/api/vipSeting'
 import { getTeacher, getEmployeeOrgan } from '@/api/buildTeam'
 import store from '@/store'
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
 export default {
   components: { pagination },
   name: 'vipList',
@@ -327,6 +332,46 @@ export default {
       let searchForm = JSON.stringify(this.searchForm)
       this.$router.push({ path: '/business/buildVip', query: { rules, searchForm } })
     },
+    onVIPCourseExport() { // 导出VIP课
+      let searchForm = this.searchForm
+      let data = {
+        teacherId: searchForm.teacherId || null,
+        activityId: searchForm.activityId || null,
+        organId: searchForm.orgin || null,
+        status: searchForm.status || null,
+        search: searchForm.search || null
+      }
+      let url = '/api-web/export/vipGroupList'
+      const options = {
+        method: 'get',
+        headers: {
+          'Authorization': getToken()
+        },
+        params: data,
+        url,
+        responseType: 'blob'
+      }
+      this.$confirm('您确定导出报表', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        axios(options).then(res => {
+          let blob = new Blob([res.data], {
+            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+            type: 'application/vnd.ms-excel;charset=utf-8'
+            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+          })
+          let objectUrl = URL.createObjectURL(blob)
+          let link = document.createElement("a")
+          let fname = 'VIP列表' + new Date().getTime() //下载文件的名字
+          link.href = objectUrl
+          link.setAttribute("download", fname)
+          document.body.appendChild(link)
+          link.click()
+        })
+      }).catch(() => {})
+    },
     // 修改vip
     resetVip (id) {
       let rules = JSON.stringify(this.rules)
@@ -352,10 +397,13 @@ export default {
   }
 }
 </script>
-<style lang="scss" scope>
+<style lang="scss" scoped>
 .m-container {
   box-sizing: border-box;
   background-color: #fff;
   // padding: 18px 95px 55px 60px;
 }
+.newBand {
+  display: inline-block;
+}
 </style>

+ 2 - 2
vue.config.js

@@ -19,9 +19,9 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'https://online.dayaedu.com' //线上
 // let target = 'http://testadm.dayaedu.com/' //test环境
 // let target = 'http://192.168.3.27:8000' // 箭河
-// let target = 'http://192.168.3.28:8000' //邹璇
+let target = 'http://192.168.3.28:8000' //邹璇
 // let target = 'http://192.168.3.8:18000' //勇哥
-let target = 'http://admin.dayaedu.com' // 测试服
+// let target = 'http://admin.dayaedu.com' // 测试服
 // let target = 'http://192.168.3.48:8080' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {

Some files were not shown because too many files changed in this diff