detail.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div id="detail">
  3. <el-row>
  4. <el-col :span="24" class="index">
  5. <el-col :span="24" class="top">
  6. <topInfo :topTitle="pageTitle"></topInfo>
  7. </el-col>
  8. <el-col :span="24" class="main">
  9. <data-form :fields="fields" :data="form" :rules="rules" @save="drawerSave" :isNew="drawerIsNew"></data-form>
  10. </el-col>
  11. </el-col>
  12. </el-row>
  13. </div>
  14. </template>
  15. <script>
  16. import topInfo from '@/layout/public/top.vue';
  17. import dataForm from '@/components/form.vue';
  18. import { mapState, createNamespacedHelpers } from 'vuex';
  19. const { mapActions: users } = createNamespacedHelpers('users');
  20. export default {
  21. name: 'detail',
  22. props: {},
  23. components: {
  24. topInfo,
  25. dataForm,
  26. },
  27. data: function() {
  28. return {
  29. drawerIsNew: true,
  30. form: {},
  31. fields: [
  32. { label: '机构代码或邀请码', prop: 'code', model: 'code' },
  33. { label: '姓名', prop: 'name', model: 'name' },
  34. { label: '机构名称', prop: 'deptname', model: 'deptname' },
  35. { label: '手机号', prop: 'phone', model: 'phone' },
  36. { label: '密码', prop: 'password', model: 'password', type: 'password' },
  37. ],
  38. rules: {
  39. code: [{ required: true, message: '请输入推荐码' }],
  40. },
  41. };
  42. },
  43. created() {},
  44. methods: {
  45. ...users(['fetch', 'create', 'update']),
  46. async search() {
  47. const res = await this.fetch(this.id);
  48. if (this.$checkRes(res)) this.$set(this, `form`, res.data);
  49. },
  50. // 创建&修改
  51. async drawerSave({ data, isNew }) {
  52. let res;
  53. let msg;
  54. if (this.isNew) {
  55. data.pid = this.user.uid;
  56. data.role = '1';
  57. res = await this.create(data);
  58. msg = '创建成功';
  59. } else {
  60. res = await this.update(data);
  61. msg = '修改成功';
  62. }
  63. this.$router.push({ path: '/adminUser/index' });
  64. },
  65. },
  66. computed: {
  67. ...mapState(['user']),
  68. id() {
  69. return this.$route.query.id;
  70. },
  71. isNew() {
  72. return this.$route.query.id ? false : true;
  73. },
  74. pageTitle() {
  75. return `${this.$route.meta.title}`;
  76. },
  77. },
  78. metaInfo() {
  79. return { title: this.$route.meta.title };
  80. },
  81. watch: {
  82. isNew: {
  83. handler(val) {
  84. if (!val) {
  85. this.search();
  86. }
  87. },
  88. immediate: true,
  89. },
  90. },
  91. };
  92. </script>
  93. <style lang="less" scoped></style>