detail.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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="{}" @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: 'name', model: 'name' },
  33. { label: '机构名称', prop: 'deptname', model: 'deptname' },
  34. { label: '手机号', prop: 'phone', model: 'phone' },
  35. { label: '密码', prop: 'password', model: 'password', type: 'password' },
  36. ],
  37. };
  38. },
  39. created() {},
  40. methods: {
  41. ...users(['fetch', 'create', 'update']),
  42. async search() {
  43. const res = await this.fetch(this.id);
  44. if (this.$checkRes(res)) this.$set(this, `form`, res.data);
  45. },
  46. // 创建&修改
  47. async drawerSave({ data, isNew }) {
  48. let res;
  49. let msg;
  50. if (this.isNew) {
  51. data.pid = this.user.uid;
  52. data.role = '4';
  53. res = await this.create(data);
  54. msg = '创建成功';
  55. } else {
  56. res = await this.update(data);
  57. msg = '修改成功';
  58. }
  59. this.$router.push({ path: '/adminUser/index' });
  60. },
  61. },
  62. computed: {
  63. ...mapState(['user']),
  64. id() {
  65. return this.$route.query.id;
  66. },
  67. isNew() {
  68. return this.$route.query.id ? false : true;
  69. },
  70. pageTitle() {
  71. return `${this.$route.meta.title}`;
  72. },
  73. },
  74. metaInfo() {
  75. return { title: this.$route.meta.title };
  76. },
  77. watch: {
  78. isNew: {
  79. handler(val) {
  80. if (!val) {
  81. this.search();
  82. }
  83. },
  84. immediate: true,
  85. },
  86. },
  87. };
  88. </script>
  89. <style lang="less" scoped></style>