reset-pwd.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <el-dialog v-model="visibleDialog" title="分配角色" :width="550" destroy-on-close @closed="handleCancel">
  3. <el-form :label-position="'top'" label-width="100px" :model="formLabelAlign" style="max-width: 460px">
  4. <el-form-item label="请输入新的密码">
  5. <el-input v-model="formLabelAlign.password" />
  6. </el-form-item>
  7. </el-form>
  8. <template #footer>
  9. <el-button @click="handleCancel">取 消</el-button>
  10. <el-button type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
  11. </template>
  12. </el-dialog>
  13. </template>
  14. <script setup>
  15. import { ref, computed, reactive } from 'vue'
  16. import { ElMessage } from 'element-plus'
  17. import user from '@/api/system/user'
  18. const myProps = defineProps({
  19. modelValue: {
  20. type: Boolean,
  21. default: false
  22. },
  23. userIds: {
  24. type: Array,
  25. default: () => []
  26. }
  27. })
  28. const isSaveing = ref(false)
  29. const formLabelAlign = reactive({
  30. password: ''
  31. })
  32. // 同步值
  33. const $myEmit = defineEmits(['update:modelValue', 'successFn'])
  34. // 关闭按钮
  35. const closeDrawer = () => {
  36. $myEmit('successFn')
  37. $myEmit('update:modelValue', false)
  38. }
  39. const handleCancel = () => {
  40. closeDrawer()
  41. }
  42. // 保存
  43. const submit = async () => {
  44. const _param = {
  45. ids: myProps.userIds,
  46. ...formLabelAlign
  47. }
  48. if (!_param.password.trim()) {
  49. return ElMessage.error('请输入新的密码')
  50. }
  51. const reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{6,20}$/
  52. if (!reg.test(_param.password)) {
  53. return ElMessage.error('密码必须为6-20位大小写字母数字特殊字符组合')
  54. }
  55. isSaveing.value = true
  56. try {
  57. await user.userResetPasswordApi(_param)
  58. ElMessage.success('重置成功')
  59. isSaveing.value = false
  60. visibleDialog.value = false
  61. } catch (e) {
  62. ElMessage.error('重置失败')
  63. isSaveing.value = false
  64. visibleDialog.value = false
  65. }
  66. }
  67. const visibleDialog = computed({
  68. get() {
  69. return myProps.modelValue
  70. },
  71. set(val) {
  72. $myEmit('update:modelValue', val)
  73. }
  74. })
  75. </script>