Vue main.js引入全局changePassword组件原型实例,修改密码组件原型实例

main.js引入全局changePassword组件原型实例

  • [changePassword 实例](#changePassword 实例)
    • [1. changePassword.vue](#1. changePassword.vue)
    • [2. proto.js](#2. proto.js)
  • 引入及使用

main.js引入全局组件原型实例

changePassword 实例

1. changePassword.vue

javascript 复制代码
<template>
  <el-dialog title="修改密码" :visible.sync="visible" :show-close="false" :modal="true" :close-on-click-modal="false" :close-on-press-escape="false" width="500px">
    <div class="dialog-box">
      <!-- 表单 -->
      <el-form :rules="rules" ref="passwordInfo" :model="passwordInfo" label-width="80px">
        <el-form-item label="原密码" prop="oldPassword">
          <el-input v-model="passwordInfo.oldPassword" show-password placeholder="原密码"></el-input>
        </el-form-item>
        <el-form-item label="新密码" prop="newPassword">
          <el-input v-model="passwordInfo.newPassword" show-password placeholder="新密码"></el-input>
        </el-form-item>
        <el-form-item label="确认密码" prop="newTwoPassword">
          <el-input v-model="passwordInfo.newTwoPassword" show-password placeholder="确认密码"></el-input>
        </el-form-item>
      </el-form>
    </div>
    <template #footer>
      <el-button @click.stop="cancelModal('passwordInfo')">关闭</el-button>
      <el-button type="primary" @click="holdPassword('passwordInfo')">修改</el-button>
    </template>
  </el-dialog>
</template>

<script>
import { user_changePassword } from '@/common/js/api'
export default {
  name: "changePassword",
  props: {},
  data() {
    var validatePass2 = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请再次输入密码'))
      } else if (value !== this.passwordInfo.newPassword) {
        callback(new Error('两次输入密码不一致!'))
      } else {
        callback()
      }
    }
    return {
      visible: false,
      passwordInfo: {
        oldPassword: '',
        newPassword: '',
        newTwoPassword: '',
      },
      rules: {
        oldPassword: [
          { required: true, message: '不能为空', trigger: ['blur', 'change'] }
        ],
        newPassword: [
          { required: true, message: '请输入密码', trigger: ['blur', 'change'] },
          {
            pattern: /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,20}$/,
            message: '密码为数字、英文、字符中的两种以上,长度 6 - 20位'
          }
        ],
        newTwoPassword: [
          { required: true, validator: validatePass2, trigger: 'blur' }
        ]
      },
    }
  },
  methods: {
    // 修改密码-保存新密码
    holdPassword(refForm) {
      this.$refs[refForm].validate((valid) => {
        if (valid) {
          var param = {
            uId: this.sideBarKey,
            oldPassword: this.$md5(this.passwordInfo.oldPassword),
            newPassword: this.$md5(this.passwordInfo.newPassword),
          }
          user_changePassword(param).then(res => {
            this.cancelModal(refForm)
          })
        } else {
          this.$message.warning('请按照提示把必填项补充完整')
          return false
        }
      })
    },
    // 关闭弹窗
    cancelModal(refForm) {
      this.visible = false
      this.$refs[refForm].resetFields()
    },
  },
}
</script>

2. proto.js

javascript 复制代码
import changePasswordVue from './changePassword.vue'
export default {
  install: (Vue) => {
    // ------------------ changePassword 修改密码弹窗 ------------------
    const PasswordComponent = Vue.extend(changePasswordVue);
    const newPasswordCom = new PasswordComponent();
    const tp2 = newPasswordCom.$mount().$el;
    document.body.appendChild(tp2);
    Vue.prototype.$showchangePassword = () => {
      newPasswordCom.visible = true
    }
    Vue.prototype.$hidechangePassword = () => {
      newPasswordCom.visible = false
    }
  }
}

引入及使用

main.js

javascript 复制代码
// 全局组件原型实例
import publicProto from '@/common/js/proto.js'
Vue.use(publicProto)

login.js

javascript 复制代码
this.$showchangePassword()

相关推荐
修己xj4 小时前
告别手动存图!这款叫 Fatkun 的浏览器插件,简直是素材收集神器
前端
袋鼠云数栈5 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
AskHarries5 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment5 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
qcx235 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
kyriewen6 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试
我叫黑大帅7 小时前
解决聊天页内部滚轮改为页面滚动问题
javascript·后端·面试
郑洁文7 小时前
基于Python的Web命令执行漏洞自动化检测系统
前端·python·网络安全·自动化
新酱爱学习7 小时前
手搓 10 个 Skill 后,我把重复劳动收敛成了一套零依赖 CLI 工具
前端·javascript·人工智能
罗超驿7 小时前
13.JavaScript 新手入门指南:语法、变量、流程控制全解析
开发语言·javascript