Kaynağa Gözat

学员考勤拆分

lex-xin 3 yıl önce
ebeveyn
işleme
67d4990113

+ 12 - 0
src/store/modules/permission.js

@@ -205,6 +205,18 @@ function setDetailRoute(accessedRoutes) {
             activeMenu: '/main/main'
             activeMenu: '/main/main'
           }
           }
         },
         },
+        {
+          name: '学员请假列表',
+          path: 'studentLeaveList',
+          component: () => import('@/views/main/studentLeaveList'),
+          hidden: true,
+          meta: {
+            noCache: '1',
+            title: '学员请假列表',
+            belongTopMenu: "/main",
+            activeMenu: '/main/main'
+          }
+        },
         //
         //
       ])
       ])
     }
     }

+ 1 - 4
src/utils/searchArray.js

@@ -152,10 +152,7 @@ export const visitChiose = [
 ]
 ]
 export const visitChiose1 = [
 export const visitChiose1 = [
   { value: '课程推荐', label: '课程推荐', children: [{ value: '新课推荐', label: '新课推荐' }, { value: '续费提醒', label: '续费提醒' }] },
   { value: '课程推荐', label: '课程推荐', children: [{ value: '新课推荐', label: '新课推荐' }, { value: '续费提醒', label: '续费提醒' }] },
-  { value: '常规回访', label: '常规回访', children: [{ value: '课后及作业回访', label: '课后及作业回访' }, { value: '练习及乐团表现', label: '练习及乐团表现' },{
-    label:'考勤申诉',
-    value:'考勤申诉'
-   }] },
+  { value: '常规回访', label: '常规回访', children: [{ value: '课后及作业回访', label: '课后及作业回访' }, { value: '练习及乐团表现', label: '练习及乐团表现' },{ label:'考勤申诉',  value:'考勤申诉' }, { value: "异常请假回访", label: "异常请假回访" }] },
   { value: '其它', label: '其它', children: [{ value: '其它', label: '其它' }] }
   { value: '其它', label: '其它', children: [{ value: '其它', label: '其它' }] }
 ]
 ]
 
 

+ 199 - 0
src/views/main/studentLeaveList.vue

@@ -0,0 +1,199 @@
+<!--  -->
+<template>
+    <div class="m-container">
+        <h2>
+            <div class="squrt"></div>
+            学员请假列表
+        </h2>
+        <div class="m-core">
+            <save-form
+                :inline="true"
+                @submit="search"
+                @reset="onReSet"
+                ref="searchFrom"
+                :model="searchForm"
+            >
+                <el-form-item prop="musicGroupSearch">
+                    <el-input
+                        v-model.trim="searchForm.musicGroupSearch"
+                        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="学员姓名/编号"
+                    ></el-input>
+                </el-form-item>
+                <el-form-item prop="organIds">
+                    <el-select
+                        placeholder="请选择分部"
+                        v-model="searchForm.organIds"
+                        clearable
+                    >
+                        <el-option
+                        v-for="(item, index) in selects.branchs"
+                        :label="item.name"
+                        :value="item.id"
+                        :key="index"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="danger" native-type="submit">搜索</el-button>
+                    <el-button native-type="reset" type="primary">重置</el-button>
+                </el-form-item>
+            </save-form>
+            <div class="tableWrap">
+                <el-table
+                style="width: 100%"
+                :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+                :data="tableList"
+                >
+                <el-table-column align="center" label="分部">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.organName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员编号">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.studentId }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员姓名">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.studentName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="手机号" prop="subjectName">
+                </el-table-column>
+                <el-table-column align="center" label="近两个月请假次数" prop="subjectName">
+                </el-table-column>
+                <el-table-column align="center" label="本月请假次数" prop="subjectName">
+                </el-table-column>
+                <el-table-column align="center" label="操作">
+                    <template slot-scope="scope">
+                        <auth :auths="['notClassStudent/nowLook', '/resetTeaming']" mulit>
+                            <el-button type="text" @click="showDetail(scope.row)">查看</el-button>
+                        </auth>
+                         <el-button type="text" @click="addVisit(scope.row)">新增回访</el-button>
+                    </template>
+                </el-table-column>
+                </el-table>
+                <pagination
+                sync
+                :total.sync="pageInfo.total"
+                :page.sync="pageInfo.page"
+                :limit.sync="pageInfo.limit"
+                :page-sizes="pageInfo.page_size"
+                @pagination="getList"
+                />
+            </div>
+        </div>
+
+        <el-dialog
+            title="新增回访"
+            width="500px"
+            :visible.sync="visitVisible"
+            append-to-body
+        >
+            <visit
+                v-if="visitVisible && detail"
+                :detail="detail"
+                :username="detail.username"
+                @close="visitVisible = false"
+                @submited="getList"
+                :useVisitType="['常规回访','异常请假回访']"
+            />
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import visit from "@/views/withdrawal-application/modals/visit";
+import { queryNoClassMusicStudentInfo } from './api.js'
+export default {
+    components: { pagination, visit },
+    data() {
+        return {
+            searchForm: {
+                musicGroupSearch: null,
+                studentSearch: null,
+                organIds: null,
+            },
+            visitVisible: false,
+            detail: null,
+            pageInfo: {
+                // 分页规则
+                limit: 10, // 限制显示条数
+                page: 1, // 当前页
+                total: 0, // 总条数
+                page_size: [10, 20, 40, 50], // 选择限制显示条数
+            },
+            tableList: []
+        };
+    },
+    //生命周期 - 挂载完成(可以访问DOM元素)
+    mounted() {
+        const { query } = this.$route
+        if (query.organId) {
+            this.searchForm.organIds = Number(query.organId)
+        }
+        this.$store.dispatch("setBranchs");
+
+        this.getList()
+    },
+    methods: {
+        addVisit(row) {
+            this.visitVisible = true;
+            this.detail = row;
+        },
+        search() {
+            this.pageInfo.page = 1;
+            this.getList();
+        },
+        onReSet() {
+            this.$refs['searchFrom'].resetFields()
+            this.getList()
+        },
+        async getList() {
+            try {
+                const { ...search } = this.searchForm
+                const params = {
+                    ...search,
+                    page: this.pageInfo.page,
+                    rows: this.pageInfo.limit
+                }
+                let res = await queryNoClassMusicStudentInfo(params)
+                this.tableList = res.data.rows;
+                this.pageInfo.total = res.data.total;
+            } catch (err) {
+                //
+            }
+        },
+        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
+                }
+            })
+        }
+    },
+};
+</script>
+<style lang='scss' scoped>
+
+</style>

+ 10 - 8
src/views/withdrawal-application/modals/visit.vue

@@ -7,8 +7,6 @@
        <auth :auths="['webCurseHomework/getStudentHomeWorks','extracurricularExercisesReply/queryPageList']">
        <auth :auths="['webCurseHomework/getStudentHomeWorks','extracurricularExercisesReply/queryPageList']">
          <el-button type="text" @click="workVisible=true">作业情况</el-button>
          <el-button type="text" @click="workVisible=true">作业情况</el-button>
        </auth>
        </auth>
-
-
     </div>
     </div>
     <el-form
     <el-form
       :model="visitForm"
       :model="visitForm"
@@ -22,7 +20,7 @@
       </el-form-item>
       </el-form-item>
       <el-form-item label="回访类型" prop="visitType">
       <el-form-item label="回访类型" prop="visitType">
         <el-cascader
         <el-cascader
-        :disabled='isMainGo'
+          :disabled='isMainGo || !!useVisitType'
           expand-trigger="hover"
           expand-trigger="hover"
           clearable
           clearable
           style="width: 80% !important"
           style="width: 80% !important"
@@ -90,7 +88,7 @@
       :visible.sync="workVisible"
       :visible.sync="workVisible"
       append-to-body
       append-to-body
     >
     >
-    <studentWork  :studentId="this.detail.userId"/>
+    <studentWork :studentId="this.detail.userId"/>
     </el-dialog>
     </el-dialog>
   </div>
   </div>
 </template>
 </template>
@@ -101,7 +99,8 @@ import { addVisit } from "@/views/returnVisitManager/api";
 import record from './record'
 import record from './record'
 import studentWork from './studentWork'
 import studentWork from './studentWork'
 export default {
 export default {
-  props: ["detail", "username",'isMainGo'],
+  // useVisitType 自定义回访类型
+  props: ["detail", "username",'isMainGo', "useVisitType"],
   components:{record,studentWork},
   components:{record,studentWork},
   data() {
   data() {
     return {
     return {
@@ -129,9 +128,12 @@ export default {
   },
   },
   mounted(){
   mounted(){
     if(this.isMainGo){
     if(this.isMainGo){
-     this.visitChiose = visitChiose1
-    this.$set(this.visitForm,'visitType',['常规回访','考勤申诉'])
-    }else{
+      this.visitChiose = visitChiose1
+      this.$set(this.visitForm,'visitType',['常规回访','考勤申诉'])
+    } else if(this.useVisitType) {
+      this.visitChiose = visitChiose1
+      this.$set(this.visitForm,'visitType', this.useVisitType)
+    } else{
       this.visitChiose = visitChiose
       this.visitChiose = visitChiose
     }
     }
   },
   },

+ 1 - 1
vue.config.js

@@ -55,7 +55,7 @@ module.exports = {
     //   warnings: false,
     //   warnings: false,
     //   errors: true
     //   errors: true
     // },
     // },
-    https: true,
+    https: false,
     proxy: {
     proxy: {
       // change xxx-api/login => mock/login
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       // detail: https://cli.vuejs.org/config/#devserver-proxy