wuhongyu 5 éve
szülő
commit
5209f9f288

+ 18 - 10
src/layout/class/groupList.vue

@@ -7,24 +7,32 @@
             <template slot="title">
               <el-col :span="2">{{ index + 1 }}.</el-col>
               <el-col :span="6" class="groupName"> {{ item.name }} {{ item.students.length }}人</el-col>
-              <el-col :span="24" v-if="item.status === '0'">
+              <el-col :span="24" v-if="item.status !== '1'">
                 <el-col :span="2">
-                  <el-button v-if="item.students.length >= 10" round plain type="danger" size="mini" disabled>已满员</el-button>
+                  <el-button v-if="item.students.length >= 10" style="width:55px" round plain type="danger" size="mini" disabled>已满员</el-button>
                 </el-col>
-                <el-col :span="1"></el-col>
-                <el-col :span="4">
-                  <el-button round type="danger" plain size="mini" @click="deleteGroup(item.id)">删除</el-button>
+                <el-col :span="2"></el-col>
+                <el-col :span="6">
+                  <el-button round type="danger" style="width:55px" plain size="mini" @click="deleteGroup(item.id)">删除</el-button>
                 </el-col>
                 <el-col :span="1"></el-col>
-                <el-col :span="4">
-                  <el-button round type="success" size="mini" v-if="stuIdAndGroupId.groupId === '' && item.students.length <= 10" @click="joinGroup(item.id)"
+                <el-col :span="6">
+                  <el-button
+                    round
+                    type="success"
+                    size="mini"
+                    style="width:55px"
+                    v-if="stuIdAndGroupId.groupId === '' && item.students.length <= 10"
+                    @click="joinGroup(item.id)"
                     >加入</el-button
                   >
-                  <el-button round type="danger" size="mini" v-if="stuIdAndGroupId.groupId === item.id" plain @click="exitGroup(item.id)">退出</el-button>
+                  <el-button round type="danger" size="mini" style="width:55px" v-if="stuIdAndGroupId.groupId === item.id" plain @click="exitGroup(item.id)"
+                    >退出</el-button
+                  >
                 </el-col>
                 <el-col :span="1"></el-col>
-                <el-col :span="4" v-if="user.job === '班长'">
-                  <el-button round type="danger" plain size="mini" @click.native="save(item)">确认</el-button>
+                <el-col :span="6" v-if="user.job === '班长'">
+                  <el-button round type="danger" style="width:55px" plain size="mini" @click.native="save(item)">确认</el-button>
                 </el-col>
               </el-col>
             </template>

+ 5 - 3
src/layout/class/headStuList.vue

@@ -9,7 +9,7 @@
     </el-row>
     <el-row>
       <el-col :span="24" class="info">
-        <el-col :span="6" class="list" v-for="(item, index) in headStuList" :key="index" @click.native="clickAssign(item.id)">
+        <el-col :span="6" class="list" v-for="(item, index) in headStuList" :key="index" @click.native="clickAssign(item)">
           <p class="name" :style="`font-size:${changeNum(item.name)}px`">{{ item.name }}</p>
           <p class="job" v-if="item.job">{{ item.job }}<i class="el-icon-circle-check"></i></p>
         </el-col>
@@ -48,8 +48,10 @@ export default {
   created() {},
   computed: {},
   methods: {
-    clickAssign(id) {
-      this.$emit('assign', id);
+    clickAssign(item) {
+      let id = item.id;
+
+      this.$emit('assign', { id, item });
     },
     outAssignShow() {
       this.$emit('outForm');

+ 47 - 0
src/layout/common/topTitle.vue

@@ -0,0 +1,47 @@
+<template>
+  <div id="topInfo">
+    <el-row>
+      <el-col :span="24" class="topInfos">
+        <!-- <van-nav-bar title="日程安排" left-text="返回" left-arrow fixed @click-left="onClickLeft" /> -->
+        <van-nav-bar :title="title" :left-arrow="isleftarrow" @click-left="onClickLeft" fixed />
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'topInfo',
+  props: {
+    title: null,
+    isleftarrow: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    onClickLeft() {
+      console.log('a');
+      this.$router.push({ path: '/user/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+// .topInfos {
+// }
+/deep/.van-nav-bar {
+  background: #2c69fe;
+}
+/deep/.van-nav-bar__title {
+  color: #fff;
+}
+/deep/.van-nav-bar__text {
+  color: #fff;
+}
+/deep/.van-nav-bar .van-icon {
+  color: #fff;
+}
+</style>

+ 4 - 1
src/layout/user/clickBtn.vue

@@ -19,7 +19,10 @@
           <van-cell is-link @click="$router.push({ path: '/user/socre' })">评分</van-cell>
         </el-col>
         <el-col :span="24" class="native" v-if="this.user.type === '4'">
-          <van-cell is-link @click="$router.push({ path: '/user/quit' })">退出管理</van-cell>
+          <van-cell is-link @click="$router.push({ path: '/user/quit' })">退出</van-cell>
+        </el-col>
+        <el-col :span="24" class="native" v-if="this.user.type === '1'">
+          <van-cell is-link @click="$router.push({ path: '/user/teaquit' })">退出</van-cell>
         </el-col>
       </el-col>
     </el-row>

+ 3 - 1
src/layout/user/leaveList.vue

@@ -12,7 +12,9 @@
           <p>开始时间:{{ item.starttime }}</p>
           <p>结束时间:{{ item.endtime }}</p>
         </el-col>
-        <el-col :span="10" class="ispass"> 请假结果:{{ item.status === '0' ? '未通过' : item.status === '1' ? '通过' : '审核中' }} </el-col>
+        <el-col :span="10" class="time">
+          <p>结果:{{ item.status === '0' ? '审核中' : item.status === '1' ? '通过' : item.status === '2' ? '未通过' : '' }}</p></el-col
+        >
         <!-- <el-col :span="10" @click="deleteBtn(item.id)">删除</el-col> -->
       </el-col>
     </el-row>

+ 20 - 2
src/layout/user/leaveRefuse.vue

@@ -2,10 +2,14 @@
   <div id="leaveRefuse">
     <el-row>
       <el-col :span="24">
-        <el-col :span="24" class="top">
+        <el-col :span="24" class="top" v-if="refuseInfo.type == '0'">
           请假审核结果
         </el-col>
-        <el-col :span="24" class="main">
+        <el-col :span="24" class="top" v-if="refuseInfo.type == '1'">
+          退出结果审核
+        </el-col>
+
+        <el-col :span="24" class="main" v-if="refuseInfo.type == '0'">
           <el-col :span="24" class="message">
             <p>开始时间</p>
             <p class="info">{{ refuseInfo.starttime }}</p>
@@ -23,6 +27,20 @@
             <p class="info">{{ refuseInfo.refcause }}</p>
           </el-col>
         </el-col>
+        <el-col :span="24" class="main" v-if="refuseInfo.type == '1'">
+          <el-col :span="24" class="message">
+            <p>退出时间</p>
+            <p class="info">{{ refuseInfo.starttime }}</p>
+          </el-col>
+          <el-col :span="24" class="message">
+            <p>退出理由</p>
+            <p class="info">{{ refuseInfo.reason }}</p>
+          </el-col>
+          <el-col :span="24" v-if="refuseInfo.status === '2'" class="message">
+            <p>拒绝理由</p>
+            <p class="info">{{ refuseInfo.refcause }}</p>
+          </el-col>
+        </el-col>
       </el-col>
     </el-row>
   </div>

+ 23 - 1
src/layout/user/leaveRequest.vue

@@ -2,7 +2,7 @@
   <div id="leaveRequest">
     <el-row>
       <el-col :span="24">
-        <el-form ref="form" :model="form">
+        <el-form ref="form" :model="form" v-if="types == 0">
           <el-form-item>
             <span slot="label">
               <i class="el-icon-date date"></i>
@@ -26,6 +26,24 @@
             <el-button @click="cancelClick()">取消</el-button>
           </el-form-item>
         </el-form>
+
+        <el-form ref="form" :model="form" v-if="types == '1'">
+          <el-form-item>
+            <span slot="label">
+              <i class="el-icon-date date"></i>
+              退出时间
+            </span>
+            <el-date-picker v-model="form.starttime" type="date" placeholder="选择开始日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <span slot="label">退出事由</span>
+            <el-input type="textarea" v-model="form.reason" :rows="4" placeholder="请输入退出事由"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="onSubmits">提交</el-button>
+            <el-button @click="cancelClick()">取消</el-button>
+          </el-form-item>
+        </el-form>
       </el-col>
     </el-row>
   </div>
@@ -36,6 +54,7 @@ export default {
   name: 'leaveRequest',
   props: {
     form: null,
+    types: null,
   },
   components: {},
   data: () => ({
@@ -47,6 +66,9 @@ export default {
     onSubmit() {
       this.$emit('submit', { data: this.form });
     },
+    onSubmits() {
+      this.$emit('submits', { data: this.form });
+    },
     cancelClick() {
       this.$emit('cancelClick');
     },

+ 5 - 4
src/layout/user/quitList.vue

@@ -6,13 +6,14 @@
         class="list"
         v-for="(item, index) in leaveList"
         :key="index"
-        @click.native="$router.push({ path: '/user/quitReason', query: { id: item.id } })"
+        @click.native="$router.push({ path: '/user/leaveReason', query: { id: item.id } })"
       >
         <el-col :span="14" class="time">
-          <p>开始时间:{{ item.starttime }}</p>
-          <p>结束时间:{{ item.endtime }}</p>
+          <p>退出时间:{{ item.starttime }}</p>
         </el-col>
-        <el-col :span="10" class="ispass"> 请假结果:{{ item.status === '0' ? '未通过' : item.status === '1' ? '通过' : '审核中' }} </el-col>
+        <el-col :span="10" class="time">
+          <p>结果:{{ item.status === '0' ? '审核中' : item.status === '1' ? '通过' : item.status === '2' ? '未通过' : '' }}</p></el-col
+        >
         <!-- <el-col :span="10" @click="deleteBtn(item.id)">删除</el-col> -->
       </el-col>
     </el-row>

+ 21 - 13
src/layout/user/stuleaveList.vue

@@ -16,20 +16,24 @@
       <div class="wrapper" @click="clickDown">
         <el-col :span="24" class="leaveInfo">
           <p class="jilu">请假记录</p>
-          <template v-if="leaveInfo.length > 0">
-            <el-col :span="24" class="leavelist" v-for="(item, index) in leaveInfo" :key="index">
-              <el-col :span="14" class="date">
-                <p>开始时间:{{ item.starttime }}</p>
-                <p>结束时间:{{ item.endtime }}</p>
+
+          <el-col :span="24" class="info">
+            <template v-if="leaveInfo.length > 0">
+              <el-col :span="24" class="leavelist" v-for="(item, index) in leaveInfo" :key="index">
+                <el-col :span="14" class="date">
+                  <p>开始时间:{{ item.starttime }}</p>
+                  <p>结束时间:{{ item.endtime }}</p>
+                </el-col>
+                <el-col :span="10" class="status"> 审核结果:{{ item.status == 0 ? '审核中' : item.status == 1 ? '通过' : '未通过' }} </el-col>
+              </el-col>
+            </template>
+
+            <template v-if="leaveInfo.length == 0">
+              <el-col :span="24" class="leavelist" style="text-align:center">
+                <p>暂无请假记录</p>
               </el-col>
-              <el-col :span="10" class="status"> 审核结果:{{ item.status == 0 ? '审核中' : item.status == 1 ? '通过' : '未通过' }} </el-col>
-            </el-col>
-          </template>
-          <template>
-            <el-col :span="24" class="leavelist" style="text-align:center">
-              <p>暂无请假记录</p>
-            </el-col>
-          </template>
+            </template>
+          </el-col>
         </el-col>
       </div>
     </van-overlay>
@@ -90,6 +94,10 @@ p {
   padding: 0 0 10px 0;
   border-radius: 10px;
 }
+.info {
+  height: 450px;
+  overflow-y: auto;
+}
 .jilu {
   text-align: center;
   padding: 10px 0;

+ 114 - 0
src/layout/user/stulquitList.vue

@@ -0,0 +1,114 @@
+<template>
+  <div id="stuleaveList">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="list" v-for="(item, index) in stuleaveList" :key="index">
+          <el-col :span="18" class="name">
+            <p>{{ item.name }}</p>
+          </el-col>
+          <el-col :span="6" class="btn">
+            <el-link :underline="false" @click="clickShow(item.id)">退出信息</el-link>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+    <van-overlay :show="show" @click="clickDown">
+      <div class="wrapper" @click="clickDown">
+        <el-col :span="24" class="leaveInfo">
+          <p class="jilu">退出记录</p>
+
+          <el-col :span="24" class="info">
+            <template v-if="leaveInfo.length > 0">
+              <el-col :span="24" class="leavelist" v-for="(item, index) in leaveInfo" :key="index">
+                <el-col :span="14" class="date">
+                  <p>开始时间:{{ item.starttime }}</p>
+                  <p>结束时间:{{ item.endtime }}</p>
+                </el-col>
+                <el-col :span="10" class="status"> 审核结果:{{ item.status == 0 ? '审核中' : item.status == 1 ? '通过' : '未通过' }} </el-col>
+              </el-col>
+            </template>
+
+            <template v-if="leaveInfo.length == 0">
+              <el-col :span="24" class="leavelist" style="text-align:center">
+                <p>暂无退出记录</p>
+              </el-col>
+            </template>
+          </el-col>
+        </el-col>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'stuleaveList',
+  props: {
+    stuleaveList: null,
+    leaveInfo: null,
+    show: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickShow(id) {
+      this.$emit('clickShow', id);
+    },
+    clickDown() {
+      this.$emit('clickDown');
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  margin: 10px 10px 0 10px;
+  background: #fff;
+  width: 95%;
+  padding: 10px;
+  border-radius: 10px;
+}
+.list .name {
+  padding: 5px 0;
+}
+.list .btn {
+  padding: 5px 0;
+  text-align: center;
+}
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.leaveInfo {
+  width: 90%;
+  background: #ffffff;
+  padding: 0 0 10px 0;
+  border-radius: 10px;
+}
+.info {
+  height: 450px;
+  overflow-y: auto;
+}
+.jilu {
+  text-align: center;
+  padding: 10px 0;
+}
+.leavelist {
+  padding: 10px 10px 0 10px;
+}
+.leavelist .date p {
+  padding: 0;
+}
+.leavelist .status {
+  padding: 10px 0;
+}
+</style>

+ 54 - 0
src/layout/user/teaquitList.vue

@@ -0,0 +1,54 @@
+<template>
+  <div id="teaLeaveList">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="list" v-for="(item, index) in classList" :key="index">
+          <el-col :span="18" class="mess">
+            <p>班级:{{ item.name }}</p>
+            <p>班级人数:{{ item.number }}</p>
+          </el-col>
+          <el-col :span="6" class="btn">
+            <el-link :underline="false" @click="$router.push({ path: '/user/stuquit', query: { id: item.id } })">退出管理</el-link>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'teaLeaveList',
+  props: {
+    classList: null,
+  },
+  components: {},
+  data: () => ({
+    openCollapse: [],
+  }),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  background: #fff;
+  margin: 10px;
+  width: 94%;
+  padding: 10px;
+  border-radius: 20px;
+}
+.list .mess p {
+  padding: 5px 0;
+}
+.list .btn {
+  padding: 20px 0;
+  text-align: center;
+}
+</style>

+ 16 - 1
src/router/index.js

@@ -163,9 +163,24 @@ const routes = [
   //个人信息-退出审请
   {
     path: '/user/quit',
-    meta: { title: '退出管理', isleftarrow: true },
+    meta: { title: '退出', isleftarrow: true },
     component: () => import('../views/user/quit.vue'),
   },
+  //个人信息-班主任退出管理
+  {
+    path: '/user/teaquit',
+    meta: { title: '退出管理', isleftarrow: true },
+    component: () => import('../views/user/teaquit.vue'),
+  },
+
+  //个人信息-班主任退出管理学生列表
+  {
+    path: '/user/stuquit',
+    meta: { title: '退出学生列表', isleftarrow: true },
+    component: () => import('../views/user/stuquit.vue'),
+  },
+  //学生退出申请
+
   {
     path: '/user/quitReason',
     meta: { title: '退出申请', isleftarrow: true },

+ 78 - 2
src/views/class/classStuList.vue

@@ -39,14 +39,45 @@ export default {
     headStuList: [],
     assignShow: false,
     assignForm: {},
-    job_list: [
+    job_list: [],
+
+    job1: [
       {
         name: '班长',
       },
       {
         name: '学委',
       },
+      {
+        name: '普通学生',
+      },
+    ],
+    job2: [
+      {
+        name: '班长',
+      },
+
+      {
+        name: '普通学生',
+      },
     ],
+
+    job3: [
+      {
+        name: '学委',
+      },
+
+      {
+        name: '普通学生',
+      },
+    ],
+
+    job4: [
+      {
+        name: '普通学生',
+      },
+    ],
+
     title: '',
     isleftarrow: '',
     navShow: true,
@@ -76,19 +107,64 @@ export default {
     async searchInfo() {
       let classid = this.id;
       const res = await this.list({ classid });
+      console.log(res.data);
+
       if (this.$checkRes(res)) {
         this.$set(this, `headStuList`, res.data);
       }
     },
     //点击派遣
-    async clickAssign(id) {
+    async clickAssign({ id, item }) {
+      var banzhang = this.headStuList.filter(item => item.job == '班长');
+      var xuewei = this.headStuList.filter(item => item.job == '学委');
+      console.log(banzhang);
+      console.log(xuewei.length);
+
+      if (xuewei.length == '1') {
+        if (banzhang.length == '2') {
+          if (item.job == '班长') {
+            this.$set(this, `job_list`, this.job2);
+          } else if (item.job == '学委') {
+            this.$set(this, `job_list`, this.job3);
+          } else {
+            this.$set(this, `job_list`, this.job4);
+          }
+        } else if (banzhang.length < '2') {
+          console.log('cc');
+
+          if (item.job == '学委') {
+            this.$set(this, `job_list`, this.job1);
+          } else {
+            this.$set(this, `job_list`, this.job2);
+          }
+        } else if (xuewei.length == '0') {
+        }
+      } else if (xuewei.length == '0') {
+        console.log('a');
+
+        if (banzhang.length == '0') {
+          this.$set(this, `job_list`, this.job1);
+        } else if (banzhang.length == '2') {
+          if (item.job == '班长') {
+            this.$set(this, `job_list`, this.job1);
+          } else {
+            this.$set(this, `job_list`, this.job3);
+          }
+        } else {
+          this.$set(this, `job_list`, this.job1);
+        }
+      }
+
       this.assignShow = true;
       const res = await this.fet(id);
       this.$set(this, `assignForm`, res.data);
     },
     //指派职务
     async onAssignShow(assignForm) {
+      console.log(assignForm);
+
       let data = this.assignForm;
+
       let res = await this.updates(data);
       if (this.$checkRes(res)) {
         this.$message({

+ 3 - 1
src/views/class/index.vue

@@ -233,7 +233,9 @@ export default {
       this.form.groupid = item.id;
       this.$set(this, 'columns', item.students);
       if (this.user.job === '班长') {
-        this.show = true;
+        if (item.status != '1') {
+          this.show = true;
+        }
       }
     },
     onvalue(value) {

+ 4 - 3
src/views/user/leave.vue

@@ -20,7 +20,7 @@
 </template>
 
 <script>
-import NavBar from '@/layout/common/topInfo.vue';
+import NavBar from '@/layout/common/topTitle.vue';
 import leaveList from '@/layout/user/leaveList.vue';
 import { createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapLeave } = createNamespacedHelpers('leave');
@@ -56,12 +56,13 @@ export default {
   methods: {
     ...mapLeave(['query']),
     async searchInfo({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.query({ skip, limit, ...info });
+      let type = 0;
+      const res = await this.query({ skip, limit, type, ...info });
       this.$set(this, `leaveList`, res.data);
     },
     // 跳转到请假
     onClickRight() {
-      this.$router.push({ path: '/user/leaveDetail' });
+      this.$router.push({ path: '/user/leaveDetail', query: { type: 0 } });
     },
   },
 };

+ 35 - 3
src/views/user/leaveDetail.vue

@@ -6,7 +6,7 @@
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
-          <leaveRequest :form="form" @submit="submitForm" @cancelClick="cancelClick"></leaveRequest>
+          <leaveRequest :form="form" @submits="submits" @submit="submitForm" @cancelClick="cancelClick" :types="types"></leaveRequest>
         </el-col>
       </el-col>
     </el-row>
@@ -31,9 +31,15 @@ export default {
     isleftarrow: '',
     transitionName: 'fade',
     navShow: true,
+    types: '',
   }),
-  created() {},
+  created() {
+    this.search();
+  },
   computed: {
+    type() {
+      return this.$route.query.type;
+    },
     ...mapState(['user']),
     keyWord() {
       let meta = this.$route.meta;
@@ -53,10 +59,31 @@ export default {
   },
   methods: {
     ...mapLeave(['create']),
+    async search() {
+      console.log(this.type);
+      this.$set(this, `types`, this.type);
+    },
     async submitForm(form) {
       // this.form.studentid = '5e4f3d096a90e861b0f30871';
       this.form.studentid = this.user.userid;
+      this.form.type = '0';
+      let data = this.form;
+
+      let res = await this.create(data);
+      if (res.errcode === 0) {
+        let msg = `${this.keyWord}添加成功`;
+        if (this.$checkRes(res, msg)) this.cancelClick();
+      } else {
+        let msg = `${this.keyWord}添加失败`;
+      }
+    },
+
+    async submits(form) {
+      // this.form.studentid = '5e4f3d096a90e861b0f30871';
+      this.form.studentid = this.user.userid;
+      this.form.type = '1';
       let data = this.form;
+
       let res = await this.create(data);
       if (res.errcode === 0) {
         let msg = `${this.keyWord}添加成功`;
@@ -65,8 +92,13 @@ export default {
         let msg = `${this.keyWord}添加失败`;
       }
     },
+
     cancelClick() {
-      this.$router.push({ path: '/user/leave' });
+      if (this.types == 0) {
+        this.$router.push({ path: '/user/leave' });
+      } else {
+        this.$router.push({ path: '/user/quit' });
+      }
     },
   },
 };

+ 4 - 3
src/views/user/quit.vue

@@ -20,7 +20,7 @@
 </template>
 
 <script>
-import NavBar from '@/layout/common/topInfo.vue';
+import NavBar from '@/layout/common/topTitle.vue';
 import quitList from '@/layout/user/quitList.vue';
 import { createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapLeave } = createNamespacedHelpers('leave');
@@ -56,12 +56,13 @@ export default {
   methods: {
     ...mapLeave(['query']),
     async searchInfo({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.query({ skip, limit, ...info });
+      let type = 1;
+      const res = await this.query({ skip, limit, type, ...info });
       this.$set(this, `leaveList`, res.data);
     },
     // 跳转到请假
     onClickRight() {
-      this.$router.push({ path: '/user/leaveDetail' });
+      this.$router.push({ path: '/user/leaveDetail', query: { type: 1 } });
     },
   },
 };

+ 0 - 2
src/views/user/socre.vue

@@ -81,10 +81,8 @@ export default {
   },
   methods: {
     ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
-
     ...mapScore({ scorelist: 'query', scorecreate: 'create' }),
     ...maplesson({ lessonfetch: 'fetch', lessonlist: 'query' }),
-
     // 平时成绩学生名单查询+作业成绩学生名单查询
     async search() {
       let classid;

+ 3 - 1
src/views/user/stuLeave.vue

@@ -73,7 +73,9 @@ export default {
       this.show = true;
       const leaveList = await this.leaveinfo(id);
       var result = leaveList.data.filter(item => item.studentid === id);
-      this.$set(this, `leaveInfo`, result);
+      var acc = result.filter(item => item.type === '0');
+      console.log();
+      this.$set(this, `leaveInfo`, acc);
     },
     clickDown() {
       this.show = false;

+ 101 - 0
src/views/user/stuquit.vue

@@ -0,0 +1,101 @@
+<template>
+  <div id="stuLeave">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="main">
+          <stulquitList :stuleaveList="stuleaveList" @clickShow="clickShow" @clickDown="clickDown" :leaveInfo="leaveInfo" :show="show"></stulquitList>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import stulquitList from '@/layout/user/stulquitList.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('classes');
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+const { mapActions: mapLeave } = createNamespacedHelpers('leave');
+export default {
+  name: 'stuLeave',
+  props: {},
+  components: {
+    NavBar, //头部导航
+    stulquitList, //学生請假列表
+  },
+  data: () => ({
+    stuleaveList: [],
+    leaveInfo: [
+      {
+        name: '你好',
+      },
+    ],
+    show: false,
+    title: '',
+    isleftarrow: '',
+    navShow: true,
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  watch: {
+    $route(to, from) {
+      this.title = to.meta.title;
+      this.isleftarrow = to.meta.isleftarrow;
+    },
+  },
+  methods: {
+    ...mapClass({ classinfo: 'query', classFetch: 'fetch' }),
+    ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
+    ...mapLeave({ leaveinfo: 'query', leaveFetch: 'fetch' }),
+    // 查询学生列表
+    async searchInfo({ ...info } = {}) {
+      let classid = this.id;
+      const stu = await this.list({ classid });
+      console.log(stu);
+      this.$set(this, `stuleaveList`, stu.data);
+    },
+    async clickShow(id) {
+      this.show = true;
+      const leaveList = await this.leaveinfo(id);
+      var result = leaveList.data.filter(item => item.studentid === id);
+      var acc = result.filter(item => item.type === '1');
+      console.log(acc);
+      this.$set(this, `leaveInfo`, acc);
+    },
+    clickDown() {
+      this.show = false;
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.style {
+  width: 100%;
+  min-height: 667px;
+  position: relative;
+  background-color: #f9fafc;
+}
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
+}
+</style>

+ 77 - 0
src/views/user/teaquit.vue

@@ -0,0 +1,77 @@
+<template>
+  <div id="teaLeave">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="main">
+          <teaquitList :classList="classList"></teaquitList>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import teaquitList from '@/layout/user/teaquitList.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('classes');
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+export default {
+  name: 'leave',
+  props: {},
+  components: {
+    NavBar, //头部导航
+    teaquitList, //班主任学生请假列表
+  },
+  data: () => ({
+    classList: [],
+    title: '',
+    isleftarrow: '',
+    navShow: true,
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  watch: {
+    $route(to, from) {
+      this.title = to.meta.title;
+      this.isleftarrow = to.meta.isleftarrow;
+    },
+  },
+  methods: {
+    ...mapClass({ classinfo: 'query' }),
+    ...mapStudent({ stuQuery: 'query', stuFetch: 'fetch' }),
+    async searchInfo({ ...info } = {}) {
+      const res = await this.classinfo({ ...info });
+      var result = res.data.filter(item => item.headteacherid === this.user.userid);
+      this.$set(this, `classList`, result);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.style {
+  width: 100%;
+  min-height: 667px;
+  position: relative;
+  background-color: #f9fafc;
+}
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
+}
+</style>