lex-xin 4 年 前
コミット
048b30be0b

+ 1 - 1
src/main.js

@@ -55,7 +55,7 @@ class DonMessage {
     // console.log(type, options, Message)
     let params = {
       message: options,
-      offset: 150
+      offset: 90
     }
     if (single) {
       // 判断是否已存在Message

+ 2 - 2
src/store/modules/permission.js

@@ -491,7 +491,7 @@ function setDetailRoute(accessedRoutes) {
             noCache: '1',
             title: '进货清单',
             belongTopMenu: "/shopManager",
-            activeMenu: '/shopManager'
+            activeMenu: '/shopList'
           }
         },
         {
@@ -503,7 +503,7 @@ function setDetailRoute(accessedRoutes) {
             noCache: '1',
             title: '添加修改商品',
             belongTopMenu: "/shopManager",
-            activeMenu: '/shopManager'
+            activeMenu: '/shopList'
           }
         },
       ])

+ 15 - 0
src/views/main/api.js

@@ -117,3 +117,18 @@ export const queryNoClassMusicStudentInfo = (data) => request2({
   method: 'get',
   params: data
 })
+
+// 获取学生请假异常列表
+export const queryStudentErrorLeaveList = (data) => request2({
+  url: '/api-web/studentManage/queryStudentErrorLeaveList',
+  method: 'get',
+  params: data
+})
+
+// 获取学生请假课程列表
+export const queryStudentLeaveCourseList = (data) => request2({
+  url: '/api-web/studentManage/queryStudentLeaveCourseList',
+  method: 'get',
+  params: data
+})
+

+ 7 - 0
src/views/main/constant.js

@@ -96,6 +96,13 @@ export const errorType = {
     permission: '/notClassStudent',
     always: true,
   },
+  STUDENT_ERROR_LEAVE: {
+    name: '学员异常请假',
+    isError: true,
+    url: '/main/studentLeaveList',
+    permission: '/studentLeaveList',
+    always: true,
+  },
   STUDENT_ARREARAGE:{
     name: '未缴费学员数',
     isError: true,

+ 176 - 0
src/views/main/modals/studentLeaveDetail.vue

@@ -0,0 +1,176 @@
+<template>
+  <div>
+    <el-form :inline="true" :model="searchForm" ref="searchForm">
+      <el-form-item prop="search">
+        <el-input
+            v-model.trim="searchForm.search"
+            clearable
+            @keyup.enter.native="search"
+            placeholder="老师编号/姓名/课程编号"
+        ></el-input>
+        </el-form-item>
+      <el-form-item prop="leaveVisitFlag">
+        <el-select placeholder="是否回访" v-model="searchForm.leaveVisitFlag" clearable>
+          <el-option label="是" value="1"></el-option>
+          <el-option label="否" value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+          <el-select
+            v-model.trim="searchForm.courseType"
+            clearable
+            filterable
+            placeholder="课程类型"
+          >
+            <el-option
+              v-for="(item, index) in courseType"
+              :key="index"
+              :value="item.value"
+              :label="item.label"
+            ></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>
+
+    <el-table
+      style="width: 100%"
+      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      :data="tableList"
+    >
+        <el-table-column
+            align="center"
+            prop="actualTeacherId"
+            label="老师编号"
+            width="120px"
+        >
+            <template slot-scope="scope">
+                <copy-text>{{ scope.row.actualTeacherId }}</copy-text>
+            </template>
+        </el-table-column>
+        <el-table-column
+            align="center"
+            prop="teacherName"
+            label="老师姓名"
+            width="120px"
+        >
+            <template slot-scope="scope">
+                <copy-text>{{ scope.row.teacherName }}</copy-text>
+            </template>
+        </el-table-column>
+        <el-table-column
+            align="center"
+            prop="groupId"
+            label="课程组编号"
+            width="120px"
+        >
+        </el-table-column>
+        <el-table-column
+            align="center"
+            prop="courseScheduleId"
+            label="课程编号"
+            width="120px"
+        >
+            <template slot-scope="scope">
+                <copy-text>{{ scope.row.courseScheduleId }}</copy-text>
+            </template>
+        </el-table-column>
+        <el-table-column
+            align="center"
+            label="课程类型"
+             width="120px"
+        >
+            <template slot-scope="scope">
+                {{ scope.row.groupType | coursesType }}
+            </template>
+        </el-table-column>
+        <el-table-column
+            align="center"
+            prop="courseName"
+            label="课程名称"
+        ></el-table-column>
+        <el-table-column
+            align="center"
+            label="上课时间"
+        >
+            <template slot-scope="scope">
+                {{ scope.row.classDate + ' ' + scope.row.startClassTime.substr(0, 5) + '-' + scope.row.endClassTime.substr(0, 5) }}
+            </template>
+        </el-table-column>
+        <el-table-column
+            align="center"
+            label="是否回访"
+            width="120px"
+        >
+            <template slot-scope="scope">
+                {{ scope.row.leaveVisitFlag ? '是' : '否' }}
+            </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>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { queryStudentLeaveCourseList } from "../api";
+import { courseType } from "@/utils/searchArray";
+import dayjs from "dayjs";
+export default {
+  props: ["studentId"],
+  components: { pagination },
+  data() {
+    return {
+        courseType,
+        searchForm: {
+            leaveVisitFlag: null,
+            courseType: null,
+            userId: null
+        },
+        tableList: [],
+        rules: {
+            // 分页规则
+            limit: 10, // 限制显示条数
+            page: 1, // 当前页
+            total: 0, // 总条数
+            page_size: [10, 20, 40, 50] // 选择限制显示条数
+        }
+    };
+  },
+  mounted() {
+    this.searchForm.userId = this.studentId;
+    this.getList();
+  },
+  methods: {
+    search() {
+      this.rules.page = 1;
+      this.getList();
+    },
+    onReSet() {
+      this.$refs.searchForm.resetFields();
+      this.search();
+    },
+    async getList() {
+      const { ...rest } = this.searchForm;
+      let obj = {
+        ...rest,
+        page: this.rules.page,
+        rows: this.rules.limit,
+      };
+      try {
+        const result = await queryStudentLeaveCourseList(obj);
+        this.tableList = result.data.rows;
+        this.rules.total = result.data.total
+      } catch {}
+    }
+  }
+};
+</script>

+ 25 - 33
src/views/main/studentLeaveList.vue

@@ -13,20 +13,12 @@
                 ref="searchFrom"
                 :model="searchForm"
             >
-                <el-form-item prop="musicGroupSearch">
+                <el-form-item prop="search">
                     <el-input
-                        v-model.trim="searchForm.musicGroupSearch"
+                        v-model.trim="searchForm.search"
                         clearable
                         @keyup.enter.native="search"
-                        placeholder="乐团名称/编号"
-                    ></el-input>
-                </el-form-item>
-                <el-form-item prop="studentSearch">
-                    <el-input
-                        v-model.trim="searchForm.studentSearch"
-                        clearable
-                        @keyup.enter.native="search"
-                        placeholder="学员姓名/编号"
+                        placeholder="学员编号/姓名/手机号"
                     ></el-input>
                 </el-form-item>
                 <el-form-item prop="organIds">
@@ -61,7 +53,7 @@
                 </el-table-column>
                 <el-table-column align="center" label="学员编号">
                     <template slot-scope="scope">
-                        <copy-text>{{ scope.row.studentId }}</copy-text>
+                        <copy-text>{{ scope.row.userId }}</copy-text>
                     </template>
                 </el-table-column>
                 <el-table-column align="center" label="学员姓名">
@@ -69,11 +61,11 @@
                         <copy-text>{{ scope.row.studentName }}</copy-text>
                     </template>
                 </el-table-column>
-                <el-table-column align="center" label="手机号" prop="subjectName">
+                <el-table-column align="center" label="手机号" prop="phone">
                 </el-table-column>
-                <el-table-column align="center" label="近两个月请假次数" prop="subjectName">
+                <el-table-column align="center" label="近两个月请假次数" prop="totalNum">
                 </el-table-column>
-                <el-table-column align="center" label="本月请假次数" prop="subjectName">
+                <el-table-column align="center" label="本月请假次数" prop="currentNum">
                 </el-table-column>
                 <el-table-column align="center" label="操作">
                     <template slot-scope="scope">
@@ -96,6 +88,14 @@
         </div>
 
         <el-dialog
+            title="查看"
+            width="1000px"
+            :visible.sync="leaveVisible"
+            append-to-body>
+            <student-leave-detail v-if="leaveVisible" :studentId="studentId" />
+        </el-dialog>
+
+        <el-dialog
             title="新增回访"
             width="500px"
             :visible.sync="visitVisible"
@@ -116,13 +116,14 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import visit from "@/views/withdrawal-application/modals/visit";
-import { queryNoClassMusicStudentInfo } from './api.js'
+import studentLeaveDetail from './modals/studentLeaveDetail'
+import { queryStudentErrorLeaveList } from './api.js'
 export default {
-    components: { pagination, visit },
+    components: { pagination, visit, studentLeaveDetail },
     data() {
         return {
             searchForm: {
-                musicGroupSearch: null,
+                search: null,
                 studentSearch: null,
                 organIds: null,
             },
@@ -135,7 +136,9 @@ export default {
                 total: 0, // 总条数
                 page_size: [10, 20, 40, 50], // 选择限制显示条数
             },
-            tableList: []
+            tableList: [],
+            leaveVisible: false,
+            studentId: null,
         };
     },
     //生命周期 - 挂载完成(可以访问DOM元素)
@@ -169,7 +172,7 @@ export default {
                     page: this.pageInfo.page,
                     rows: this.pageInfo.limit
                 }
-                let res = await queryNoClassMusicStudentInfo(params)
+                let res = await queryStudentErrorLeaveList(params)
                 this.tableList = res.data.rows;
                 this.pageInfo.total = res.data.total;
             } catch (err) {
@@ -177,19 +180,8 @@ export default {
             }
         },
         showDetail(item) {
-            // ?status=PROGRESS&id=21040114171500001&name=0401莫莫2&organId=1&type=resetTeam&team_status=PROGRESS&tabrouter=5
-            this.$router.push({
-                path: '/business/resetTeaming',
-                query: {
-                    type: 'resetTeam',
-                    status: 'PROGRESS',
-                    team_status: 'PROGRESS',
-                    id: item.groupId,
-                    name: item.groupName,
-                    organId: item.organId,
-                    tabrouter: 5
-                }
-            })
+            this.leaveVisible = true
+            this.studentId = item.userId
         }
     },
 };

+ 1 - 1
src/views/withdrawal-application/modals/visit.vue

@@ -161,7 +161,7 @@ export default {
           };
           addVisit(cleanDeep(data)).then((res) => {
             if (res.code === 200) {
-              this.$message.success("新增成功");
+              this.$message.success("保存成功");
               this.$emit("close");
               this.$emit("submited");
             }