personal.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <div id="personal">
  3. <el-row>
  4. <el-col :span="24" class="main">
  5. <el-col :span="24" class="crumbs">
  6. <el-breadcrumb separator="/">
  7. <el-breadcrumb-item> <i class="el-icon-lx-cascades"></i> 个人信息维护管理 </el-breadcrumb-item>
  8. </el-breadcrumb>
  9. </el-col>
  10. <el-col :span="24" class="container">
  11. <data-form :data="form" :fields="fields" :rules="rules" @save="turnSave"> </data-form>
  12. </el-col>
  13. </el-col>
  14. </el-row>
  15. </div>
  16. </template>
  17. <script>
  18. import dataForm from '@/components/frame/form.vue';
  19. import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
  20. const { mapActions: user } = createNamespacedHelpers('user');
  21. export default {
  22. metaInfo: { title: '个人信息维护管理' },
  23. name: 'personal',
  24. props: {},
  25. components: { dataForm },
  26. data: function() {
  27. return {
  28. form: {},
  29. fields: [
  30. { label: '名字', required: true, model: 'name', options: {} },
  31. { label: '手机号', required: true, model: 'tel', options: { maxlength: 11, minlength: 11, placeholder: '请谨慎修改手机,此处关联系统登录' } },
  32. ],
  33. // 验证
  34. rules: {
  35. name: [{ required: true, message: '请输入名字', trigger: 'blur' }],
  36. tel: [{ required: true, message: '请输入电话,请谨慎修改手机,此处关联系统登录', trigger: 'blur' }],
  37. },
  38. };
  39. },
  40. created() {
  41. if (this.user) {
  42. this.$set(this, `form`, this.user);
  43. }
  44. },
  45. methods: {
  46. ...user(['update']),
  47. ...mapMutations(['setUser']),
  48. // 修改保存个人信息
  49. async turnSave({ data }) {
  50. let res = await this.update(data);
  51. this.$message({
  52. message: '修改信息成功',
  53. type: 'success',
  54. });
  55. localStorage.setItem('user', JSON.stringify(res.data));
  56. this.setUser();
  57. location.reload();
  58. },
  59. },
  60. computed: {
  61. ...mapState(['user']),
  62. },
  63. };
  64. </script>
  65. <style lang="less" scoped></style>