stuLeave.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div id="stuLeave">
  3. <el-row>
  4. <el-col :span="24" class="style">
  5. <el-col :span="24" class="top">
  6. <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
  7. </el-col>
  8. <el-col :span="24" class="main">
  9. <stuleaveList :stuleaveList="stuleaveList" @clickShow="clickShow" @clickDown="clickDown" :leaveInfo="leaveInfo" :show="show"></stuleaveList>
  10. </el-col>
  11. </el-col>
  12. </el-row>
  13. </div>
  14. </template>
  15. <script>
  16. import NavBar from '@/layout/common/topInfo.vue';
  17. import stuleaveList from '@/layout/user/stuleaveList.vue';
  18. import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
  19. const { mapActions: mapClass } = createNamespacedHelpers('classes');
  20. const { mapActions: mapStudent } = createNamespacedHelpers('student');
  21. const { mapActions: mapLeave } = createNamespacedHelpers('leave');
  22. export default {
  23. name: 'stuLeave',
  24. props: {},
  25. components: {
  26. NavBar, //头部导航
  27. stuleaveList, //学生請假列表
  28. },
  29. data: () => ({
  30. stuleaveList: [],
  31. leaveInfo: [
  32. {
  33. name: '你好',
  34. },
  35. ],
  36. show: false,
  37. title: '',
  38. isleftarrow: '',
  39. navShow: true,
  40. }),
  41. created() {
  42. this.searchInfo();
  43. },
  44. computed: {
  45. id() {
  46. return this.$route.query.id;
  47. },
  48. ...mapState(['user']),
  49. },
  50. mounted() {
  51. this.title = this.$route.meta.title;
  52. this.isleftarrow = this.$route.meta.isleftarrow;
  53. },
  54. watch: {
  55. $route(to, from) {
  56. this.title = to.meta.title;
  57. this.isleftarrow = to.meta.isleftarrow;
  58. },
  59. },
  60. methods: {
  61. ...mapClass({ classinfo: 'query', classFetch: 'fetch' }),
  62. ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
  63. ...mapLeave({ leaveinfo: 'query', leaveFetch: 'fetch' }),
  64. // 查询学生列表
  65. async searchInfo({ ...info } = {}) {
  66. let classid = this.id;
  67. const stu = await this.list({ classid });
  68. console.log(stu);
  69. this.$set(this, `stuleaveList`, stu.data);
  70. },
  71. async clickShow(id) {
  72. this.show = true;
  73. const leaveList = await this.leaveinfo(id);
  74. var result = leaveList.data.filter(item => item.studentid === id);
  75. this.$set(this, `leaveInfo`, result);
  76. },
  77. clickDown() {
  78. this.show = false;
  79. },
  80. },
  81. };
  82. </script>
  83. <style lang="less" scoped>
  84. .style {
  85. width: 100%;
  86. min-height: 667px;
  87. position: relative;
  88. background-color: #f9fafc;
  89. }
  90. .top {
  91. height: 46px;
  92. overflow: hidden;
  93. }
  94. .main {
  95. min-height: 570px;
  96. }
  97. </style>