chenyc
2024-12-23 000a89a294e2cdb493bb3ce178d686e58bd40196
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<template>
    <el-dialog title="密码修改" v-model="isShowDialog" width="400px">
      <div class="personal-info">
  
        <el-form :model="form" label-width="120px" :rules="rules" ref="formRef" size="small">
          <el-form-item label="新密码:" prop="newUserPassword">
            <el-input  type="password" show-password v-model="form.newUserPassword" placeholder="输入输入新密码"></el-input>
          </el-form-item>
          <el-form-item label="确认密码:" prop="userPassword">
            <el-input type="password" show-password v-model="form.userPassword" placeholder="输入输入确认密码"></el-input>
          </el-form-item>
        </el-form>
      </div>
      <template #footer>
        <div style="text-align:center">
          <el-button type="danger" @click="isShowDialog = false" size="small">取消</el-button>
          <el-button type="primary" size="small" @click="save">保存</el-button>
        </div>
      </template>
    </el-dialog>
  </template>
  <script lang="ts">
  import { reactive, toRefs, getCurrentInstance } from 'vue'
  import { editUserInfo } from '/@/api/login'
  import { ElMessage, ElMessageBox } from 'element-plus';
  import { Session, Local } from '/@/utils/storage';
  import { useRouter } from 'vue-router';
  export default {
    name: 'personalInfo',
    setup() {
      const {proxy} = getCurrentInstance() as any
      const router = useRouter();
      const state = reactive({
        // 是否显示dialog
        isShowDialog: false,
        // 表单
        form: {
          id: 0,
          // 用户名
          userNo: '',
          // 用户姓名
          userName: '',
          // 用户手机号
          userMobile: '',
          newUserPassword:'',
          // 用户密码
          userPassword: '',
          // 邮箱
          userEmail: ''
        },
        // 表单校验
        rules: {
          newUserPassword: { min: 6, max:16,required: true,   message: '请输入6-16位密码', trigger: 'blur'},
          userPassword: [{ min: 6, max:16,required: true,   message: '请输入6-16位密码', trigger: 'blur' },
          {
            validator: (rule, value, callback) => {
              if (value !== state.form.newUserPassword) callback(new Error('两次密码不一致'))
                else callback()
              },
            
          }],
              }
      })
      // 保存
        const save = () => {
          proxy.$refs['formRef'].validate((valid:boolean) => {
            if (valid) {
              const pasm={
                id:state.form.id,
                userPassword:state.form.userPassword
              }
              editUserInfo(pasm).then(() => {
                state.isShowDialog = false
                ElMessageBox.confirm(
                '密码修改成功,您需要重新登录吗??',
                '提示',
                {
                  confirmButtonText: '确认',
                  cancelButtonText: '取消',
                  type: 'warning',
                }
              )
                .then(() => {
                  Session.clear(); // 清除缓存/token等
                  router.push('/login');
                })
                .catch(() => {
                 
                })
  
              })
            }
          })
        }
      // 打开dialog
      const openDialog = (content) => {
        console.log('打开--')
        console.log(content)
        state.form.id = content.id
        state.form.newUserPassword = ''
        state.form.userPassword = ''
        state.isShowDialog = true
      }
      return {
        // 保存
        save,
        ...toRefs(state),
        // 打开dialog
        openDialog
      }
    }
  }
  </script>
  <style lang="scss" scoped>
  .personal-info {
  
  }
  </style>