detail.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <div id="detail">
  3. <detail-frame :title="mainTitle" returns="/classes/index">
  4. <data-form v-loading="loading" :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
  5. </detail-frame>
  6. </div>
  7. </template>
  8. <script>
  9. import detailFrame from '@frame/layout/admin/detail-frame';
  10. import dataForm from '@frame/components/form';
  11. import { createNamespacedHelpers } from 'vuex';
  12. const { mapActions } = createNamespacedHelpers('classes');
  13. export default {
  14. metaInfo: { title: '班级信息' },
  15. name: 'detail',
  16. props: {},
  17. components: {
  18. detailFrame,
  19. dataForm,
  20. },
  21. data: () => ({
  22. loading: true,
  23. info: {},
  24. fields: [
  25. { label: '班级名称', required: true, model: 'name' },
  26. { label: '人数', required: true, model: 'number' },
  27. { label: '批次', required: true, model: 'batch', type: 'select' },
  28. ],
  29. rules: {
  30. name: [{ required: true, message: '请输入班级名称' }],
  31. number: [{ required: true, message: '请输入人数' }],
  32. batch: [{ required: true, message: '请输入批次' }],
  33. },
  34. }),
  35. created() {},
  36. computed: {
  37. id() {
  38. return this.$route.query.id;
  39. },
  40. isNew() {
  41. return this.$route.query.id ? false : true;
  42. },
  43. mainTitle() {
  44. let meta = this.$route.meta;
  45. let main = meta.title || '';
  46. let sub = meta.sub || '';
  47. return `${main}${sub}`;
  48. },
  49. keyWord() {
  50. let meta = this.$route.meta;
  51. let main = meta.title || '';
  52. return main;
  53. },
  54. },
  55. watch: {
  56. isNew: {
  57. immediate: true,
  58. handler(val) {
  59. if (val) this.loading = false;
  60. else this.search();
  61. },
  62. },
  63. },
  64. methods: {
  65. ...mapActions(['fetch', 'create', 'update']),
  66. async search() {
  67. const res = await this.fetch(this.id);
  68. if (this.$checkRes(res)) this.$set(this, `info`, res.data);
  69. this.loading = false;
  70. },
  71. async handleSave({ isNew, data }) {
  72. let res;
  73. let msg;
  74. console.log(isNew);
  75. if (isNew) {
  76. res = await this.create(data);
  77. console.log(res);
  78. msg = `${this.keyWord}添加成功`;
  79. } else {
  80. res = await this.update(data);
  81. msg = `${this.keyWord}修改成功`;
  82. }
  83. if (this.$checkRes(res, msg)) this.$router.push({ path: '/classes/index' });
  84. },
  85. },
  86. };
  87. </script>
  88. <style lang="less" scoped></style>