index.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <div id="index">
  3. <list-frame :title="pageTitle" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: './detail' })">
  4. <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
  5. </list-frame>
  6. </div>
  7. </template>
  8. <script>
  9. import listFrame from '@frame/layout/admin/list-frame';
  10. import dataTable from '@frame/components/data-table';
  11. import { mapState, createNamespacedHelpers } from 'vuex';
  12. const { mapActions: school } = createNamespacedHelpers('school');
  13. export default {
  14. name: 'index',
  15. props: {},
  16. components: { listFrame, dataTable },
  17. data: () => {
  18. return {
  19. opera: [
  20. {
  21. label: '编辑',
  22. icon: 'el-icon-edit',
  23. method: 'edit',
  24. },
  25. {
  26. label: '删除',
  27. icon: 'el-icon-delete',
  28. method: 'delete',
  29. confirm: true,
  30. },
  31. ],
  32. fields: [
  33. { label: '学校名称', prop: 'name' },
  34. { label: '学校代码', prop: 'code' },
  35. { label: '学校地点', prop: 'address' },
  36. { label: '学校简称', prop: 'shortname' },
  37. { label: '每期人数', prop: 'number' },
  38. ],
  39. list: [],
  40. total: 0,
  41. };
  42. },
  43. created() {
  44. this.search();
  45. },
  46. methods: {
  47. ...school(['query', 'delete']),
  48. async search({ skip = 0, limit = 10, ...info } = {}) {
  49. const res = await this.query({ skip, limit, ...info });
  50. if (this.$checkRes(res)) {
  51. this.$set(this, `list`, res.data);
  52. this.$set(this, `total`, res.total);
  53. }
  54. },
  55. toEdit({ data }) {
  56. this.$router.push({ path: './detail', query: { id: data.id } });
  57. },
  58. async toDelete({ data }) {
  59. const res = await this.delete(data.id);
  60. this.$checkRes(res, '删除成功', '删除失败');
  61. this.search();
  62. },
  63. },
  64. computed: {
  65. ...mapState(['user']),
  66. pageTitle() {
  67. return `${this.$route.meta.title}`;
  68. },
  69. },
  70. metaInfo() {
  71. return { title: this.$route.meta.title };
  72. },
  73. };
  74. </script>
  75. <style lang="less" scoped></style>