index.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <template>
  2. <div id="index">
  3. <list-frame title="教师列表页" @query="search" :total="total" :filter="filFields" :needAdd="false">
  4. <template #options="{item}">
  5. <template v-if="item.model == 'gender'">
  6. <el-option v-for="(item, index) in gender" :key="index" :value="item.label"></el-option>
  7. </template>
  8. <template v-if="item.model == 'status'">
  9. <el-option v-for="(item, index) in lists" :key="index" :value="item.label"></el-option>
  10. </template>
  11. </template>
  12. <!-- <data-table :fields="fields" :data="index" :opera="opera" @edit="toEdit" @select="toSelect"></data-table> -->
  13. <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete" @select="toSelect"></data-table>
  14. </list-frame>
  15. </div>
  16. </template>
  17. <script>
  18. import listFrame from '@frame/layout/admin/list-frame';
  19. import dataTable from '@frame/components/data-table';
  20. import { createNamespacedHelpers } from 'vuex';
  21. const { mapActions } = createNamespacedHelpers('teacher');
  22. export default {
  23. name: 'index',
  24. props: {},
  25. components: {
  26. listFrame,
  27. dataTable,
  28. },
  29. data: () => ({
  30. gender: [
  31. { label: '男', value: '男' },
  32. { label: '女', value: '女' },
  33. ],
  34. lists: [
  35. { label: '注册', value: 0 },
  36. { label: '确认身份', value: 1 },
  37. { label: '资料评分', value: 2 },
  38. { label: '面试评分', value: 3 },
  39. { label: '确认入库', value: 4 },
  40. ],
  41. opera: [
  42. {
  43. label: '编辑',
  44. icon: 'el-icon-edit',
  45. method: 'edit',
  46. },
  47. {
  48. label: '审核',
  49. icon: 'el-icon-s-order',
  50. method: 'select',
  51. display: item => {
  52. return item.status === '2' || item.status === '3';
  53. },
  54. },
  55. ],
  56. fields: [
  57. { label: '姓名', prop: 'name' },
  58. { label: '性别', prop: 'gender', options: { width: `80px` } },
  59. { label: '手机号', prop: 'phone' },
  60. { label: '学校名称', prop: 'schname' },
  61. { label: '邮箱', prop: 'email' },
  62. { label: '年龄', prop: 'age', options: { width: `80px` } },
  63. { label: '专业', prop: 'major' },
  64. {
  65. label: '是/否是礼仪老师',
  66. prop: 'islyteacher',
  67. format: item => {
  68. return item === '0' ? '否' : item === '1' ? '是' : '其他';
  69. },
  70. },
  71. { label: '资料评分', prop: 'file_score', options: { width: `100px` } },
  72. { label: '面试评分', prop: 'interview_score', options: { width: `100px` } },
  73. {
  74. label: '状态',
  75. prop: 'status',
  76. format: item => {
  77. return item === '0'
  78. ? '注册'
  79. : item === '1'
  80. ? '已确定身份'
  81. : item === '2'
  82. ? '已上传资料'
  83. : item === '3'
  84. ? '已选择面试'
  85. : item === '4'
  86. ? '确认入库'
  87. : '其他';
  88. },
  89. },
  90. ],
  91. list: [],
  92. filFields: [
  93. { label: '教师名称', model: 'name' },
  94. { label: '年龄', model: 'age' },
  95. {
  96. label: '状态',
  97. model: 'status',
  98. type: 'select',
  99. },
  100. {
  101. label: '性别',
  102. model: 'gender',
  103. type: 'select',
  104. },
  105. ],
  106. total: 0,
  107. }),
  108. created() {
  109. this.search();
  110. },
  111. computed: {},
  112. methods: {
  113. ...mapActions(['query', 'delete']),
  114. async search({ skip = 0, limit = 10, ...info } = {}) {
  115. const res = await this.query({ skip, limit, ...info });
  116. if (this.$checkRes(res)) {
  117. this.$set(this, `list`, res.data);
  118. this.$set(this, `total`, res.total);
  119. }
  120. },
  121. toEdit({ data }) {
  122. console.log(`in toEdit`);
  123. console.log(data);
  124. this.$router.push({ path: '/teacher/detail', query: { id: data.id } });
  125. },
  126. toSelect({ data }) {
  127. console.log(`in Select`);
  128. console.log(data);
  129. this.$router.push({ path: '/teacher/verify', query: { id: data.id, status: data.status } });
  130. },
  131. async toDelete(data) {
  132. const res = await this.delete(data.id);
  133. this.$checkRes(res, '删除成功', '删除失败');
  134. this.search();
  135. },
  136. },
  137. };
  138. </script>
  139. <style lang="less" scoped></style>