index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <div id="index">
  3. <list-frame :title="mainTitle" @query="search" :total="total" :needAdd="false" :needFilter="false">
  4. <!-- <el-form :inline="true" size="mini">
  5. <el-form-item label="选择计划">
  6. <el-select v-model="searchInfo.planid" @change="getTerm" clearable>
  7. <el-option v-for="(i, index) in planList" :key="index" :label="i.title" :value="i.id"></el-option>
  8. </el-select>
  9. </el-form-item>
  10. <el-form-item label="选择期">
  11. <el-select v-model="searchInfo.termid" clearable>
  12. <el-option v-for="(i, index) in termList" :key="index" :label="i.term" :value="i._id"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item>
  16. <el-button type="primary" @click="search">查询</el-button>
  17. </el-form-item>
  18. </el-form> -->
  19. <data-table :fields="fields" :data="list" :opera="opera"></data-table>
  20. </list-frame>
  21. </div>
  22. </template>
  23. <script>
  24. import listFrame from '@frame/layout/admin/list-frame';
  25. import dataTable from '@frame/components/data-table';
  26. import { createNamespacedHelpers } from 'vuex';
  27. const { mapActions } = createNamespacedHelpers('leave');
  28. const { mapActions: mapstudent } = createNamespacedHelpers('student');
  29. const { mapActions: trainplan } = createNamespacedHelpers('trainplan');
  30. export default {
  31. metaInfo: { title: '请假和退出管理' },
  32. name: 'index',
  33. props: {},
  34. components: {
  35. listFrame,
  36. dataTable,
  37. },
  38. data: () => ({
  39. opera: [],
  40. fields: [
  41. { label: '学生名称', prop: 'stuName' },
  42. { label: '开始时间', prop: 'starttime' },
  43. { label: '结束时间', prop: 'endtime' },
  44. { label: '请假理由', prop: 'reason' },
  45. {
  46. label: '状态',
  47. prop: 'status',
  48. format: item => {
  49. return item === '0' ? '审核中' : item === '1' ? '通过' : '未通过';
  50. },
  51. },
  52. { label: '拒绝原因', prop: 'refcause' },
  53. {
  54. label: '类型',
  55. prop: 'type',
  56. format: item => {
  57. return item === '0' ? '请假' : '退出';
  58. },
  59. },
  60. ],
  61. searchInfo: {},
  62. list: [],
  63. planList: [],
  64. termList: [],
  65. total: 0,
  66. }),
  67. created() {
  68. this.search();
  69. },
  70. computed: {
  71. mainTitle() {
  72. let meta = this.$route.meta;
  73. let main = meta.title || '';
  74. let sub = meta.sub || '';
  75. return `${main}${sub}`;
  76. },
  77. keyWord() {
  78. let meta = this.$route.meta;
  79. let main = meta.title || '';
  80. return main;
  81. },
  82. },
  83. methods: {
  84. ...mapActions(['query', 'delete']),
  85. ...mapstudent({ lists: 'fetch' }),
  86. async search({ skip = 0, limit = 10, ...info } = {}) {
  87. const res = await this.query({ skip, limit, ...info });
  88. for (const val of res.data) {
  89. const stuName = await this.lists(val.studentid);
  90. console.log(stuName);
  91. val.stuName = stuName.data.name;
  92. }
  93. console.log(res.data);
  94. this.$set(this, `list`, res.data);
  95. this.$set(this, `total`, res.total);
  96. },
  97. getTerm(data) {
  98. let term = this.planList.find(f => f.id === data);
  99. if (term) this.$set(this, `termList`, term.termnum);
  100. else this.$set(this, `termList`, []);
  101. },
  102. },
  103. };
  104. </script>
  105. <style lang="less" scoped></style>