소스 검색

03/30 18:23

网管课改造
Xiao_Mo 5 년 전
부모
커밋
9268f8f49e

+ 8 - 1
src/api/buildTeam.js

@@ -959,7 +959,14 @@ export function practiceCourseTeacherAdjust(data) {
     data: qs.stringify(data)
   })
 }
-
+// 网管课购买列表
+export function practiceGroupManageStudentBuys(data) {
+  return request({
+    url: api + '/practiceGroupManage/studentBuys',
+    method: 'get',
+    params: data
+  })
+}
 // 清除考情记录
 export function cleanAttendance(data) {
   return request({

+ 3 - 0
src/router/index.js

@@ -245,6 +245,9 @@ export const asyncRoutes = {
   accompanyList: () => import('@/views/accompanyManager/accompanyList'),
   // 网管课详情
   accompanys: () => import('@/views/accompanyManager/accompanys'),
+  accompany: () => import('@/views/accompanyManager'),
+  // 网管课购买
+  accompanyBuys:() => import('@/views/accompanyManager/accompanyBuys'),
   // 版本控制
   editionList: () => import('@/views/editionManager/editionList'),
   // 定时任务

+ 240 - 0
src/views/accompanyManager/accompanyBuys.vue

@@ -0,0 +1,240 @@
+<!--  -->
+<template>
+  <div class="m-core">
+    <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
+      <!-- 状态 指导老师 活动方案-->
+      <el-form-item>
+        <el-input
+          v-model.trim="searchForm.search"
+          @keyup.enter.native="search"
+          placeholder="学员编号 学员名称"
+        ></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-select
+          class="multiple"
+          v-model.trim="searchForm.organIdList"
+          filterable
+          clearable
+          placeholder="请选择分部"
+        >
+          <el-option
+            v-for="(item,index) in organList"
+            :key="index"
+            :label="item.name"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <!-- statusList -->
+      <el-form-item prop="buy">
+        <el-select
+          class="multiple"
+          v-model.trim="searchForm.buy"
+          filterable
+          clearable
+          placeholder="购买网管课"
+        >
+          <el-option label="是" value="true"></el-option>
+          <el-option label="否" value="false"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="search" type="danger">搜索</el-button>
+        <el-button @click="onReSet" type="primary">重置</el-button>
+       
+      </el-form-item>
+      <el-form-item>
+           <!-- <div class="newBand" @click="onExport">导出</div> -->
+            <el-button @click="onExport" type="primary"  v-permission="'export/studentBuyPractice'" style="background-color: #14928a; border: 1px solid #14928a;">导出</el-button>
+      </el-form-item>
+    </el-form>
+    <div class="tableWrap">
+      <el-table
+        style="width: 100%"
+        :header-cell-style="{background:'#EDEEF0',color:'#444'}"
+        :data="tableData"
+      >
+        <el-table-column align="center" prop="studentId" label="学员编号"></el-table-column>
+        <el-table-column align="center" prop="studentName" label="学员名称"></el-table-column>
+        <el-table-column align="center" prop="organName" label="所属分部"></el-table-column>
+        <!-- educationalTeacherId -->
+        <el-table-column align="center" prop="phone" label="手机号"></el-table-column>
+        <el-table-column align="center" label="是否购买">
+          <template slot-scope="scope">
+            <div>
+              <p>{{scope.row.buyPractice?'是':'否'}}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="lastClassDate" label="结束日期">
+          <template slot-scope="scope">
+            <div>
+              <p>{{scope.row.lastClassDate | formatTimer}}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="firstBuyTime" label="购买日期">
+          <template slot-scope="scope">
+            <div>
+              <p>{{scope.row.firstBuyTime | formatTimer}}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="intervalDay" label="时间差">
+              <template slot-scope="scope">
+            <div>
+              <p>{{scope.row.intervalDay + '天'}}</p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        :total="rules.total"
+        :page.sync="rules.page"
+        :limit.sync="rules.limit"
+        :page-sizes="rules.page_size"
+        @pagination="getList"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  practiceGroupManageStudentBuys,
+  getEmployeeOrgan
+} from "@/api/buildTeam";
+import pagination from "@/components/Pagination/index";
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
+import load from '@/utils/loading'
+import qs from 'qs'
+export default {
+  components: { pagination },
+  data() {
+    return {
+      searchForm: {
+        search: null,
+        buy: null,
+        organIdList:null
+      },
+      tableData: [],
+      organList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      }
+    };
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.init();
+  },
+  activated() {},
+  methods: {
+    init() {
+      // 获取分部
+      getEmployeeOrgan().then(res => {
+        if (res.code == 200) {
+          this.organList = res.data;
+        }
+      });
+      this.getList()
+    },
+    getList() {
+      let obj = {
+        page: this.rules.page,
+        rows: this.rules.limit
+      };
+      this.searchForm.search ? (obj.search = this.searchForm.search) : null;
+      this.searchForm.buy
+        ? (obj.buyPractice = this.searchForm.buy)
+        : null;
+         this.searchForm.organIdList
+        ? (obj.organId = this.searchForm.organIdList)
+        : null;
+      practiceGroupManageStudentBuys(obj).then(res => {
+        if (res.code == 200) {
+            this.tableData = res.data.rows
+                this.rules.total = res.data.total;
+        }
+      });
+    },
+    search() {
+      this.rules.page = 1;
+      this.getList();
+    },
+    onReSet() {
+      this.searchForm = {
+        search: null,
+        buy: null,
+        organIdList:null
+      };
+      this.search();
+    },
+    // 导出
+    onExport(){
+        let searchForm = this.searchForm;
+      let data = {
+        buyPractice: searchForm.buy || null,
+        organId: searchForm.organIdList || null,
+        search: searchForm.search || null
+      };
+      let url = "/api-web/export/studentBuyPractice";
+      const options = {
+        method: "POST",
+        headers: {
+          Authorization: getToken()
+        },
+        params: data,
+        url,
+        responseType: "blob"
+      };
+      this.$confirm("您确定导出报表", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          load.startLoading()
+          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 text = (new Response(blob)).text()
+            text.then(res => {
+              // 判断是否报错
+              if(res.indexOf('code') != -1) {
+                let json = JSON.parse(res)
+                this.$message.error(json.msg)
+              } else {
+                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();
+              }
+            })
+            load.endLoading();
+          }).catch(error => {
+            this.$message.error('导出数据失败,请连接管理员');
+            load.endLoading();
+          });
+        }).catch(() => {});
+    }
+  }
+};
+</script>
+<style lang='scss' scoped>
+</style>

+ 3 - 3
src/views/accompanyManager/accompanyList.vue

@@ -1,8 +1,8 @@
 <template>
-  <div class="m-container">
-    <h2>
+  <div class="">
+    <!-- <h2>
       <div class="squrt"></div>网管课列表
-    </h2>
+    </h2> -->
 
     <div class="m-core">
       <el-form :inline="true" class="searchForm" v-model.trim="searchForm">

+ 1 - 1
src/views/accompanyManager/accompanys.vue

@@ -504,7 +504,7 @@ export default {
     },
     goBack() {
       this.$router.push({
-        path: "/business/accompanyList",
+        path: "/business/accompany",
         query: { rules: this.Frules, searchForm: this.FsearchForm }
       });
     },

+ 44 - 0
src/views/accompanyManager/index.vue

@@ -0,0 +1,44 @@
+<!--  -->
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>网管课管理
+    </h2>
+    <div class="m-core">
+      <el-tabs v-model.trim="activeIndex" type="card" @tab-click="handleClick">
+        <el-tab-pane label="网管课管理" name="1">
+            <accompanyList/>
+        </el-tab-pane>
+        <el-tab-pane label="网管课购买" name="2">
+            <accompanyBuys/>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+
+<script>
+import accompanyList from "@/views/accompanyManager/accompanyList";
+import accompanyBuys from '@/views/accompanyManager/accompanyBuys'
+export default {
+components: { accompanyList,accompanyBuys},
+data() {
+return {
+     activeIndex: "1",
+};
+},
+//生命周期 - 创建完成(可以访问当前this实例)
+created() {
+
+},
+//生命周期 - 挂载完成(可以访问DOM元素)
+mounted() {
+
+},
+methods: {
+    handleClick(){}
+},
+}
+</script>
+<style lang='scss' scoped>
+</style>