VUE项目图形验证码功能组件

图形验证码功能


1. 使用方式
<zsy-picture-code ref="pictureCodeRef" v-model="form.codeImgKey" />
2. 父组件主动更新验证码
this.$refs.pictureCodeRef.getCodeImg();
3. 验证码组件
<template>
  <img class="code-img" v-if="codeImg" :src="codeImg" @click="getCodeImg" :style="`width: ${width}px;height: ${height}px;`" alt="">
</template>

<script>
export default {
  emits:['getCodeImg','update:modelValue'],
  props: {
    width: {
      default: 80,
    },
    height: {
      default: 24,
    },
    modelValue:{
      default: ""
    }
  },
  data() {
    return {
      codeImg: '',
      time: 0,
      timer:null
    }
  },
  created() {
    this.getCodeImg()
  },
  methods: {
    async getCodeImg() {
      // this.$API.public.codeImg.get() 验证码获取请求
      const data = await this.$API.public.codeImg.get()
      if (data.code == 200) {
        this.codeImg = data.data.baseImg
        this.$emit('update:modelValue',data.data.graphicalCodeKey)
        this.getNewCode()
      }else{
        this.codeImg = ''
        this.$emit('update:modelValue','')
        this.$message.warning(data.msg)
      }
    },
    async getNewCode() {
      this.time = 60
      this.timer = setInterval(() => {
        this.time -= 1
        if (this.time < 1) {
          clearInterval(this.timer)
          this.getCodeImg()
          this.time = 0
        }
      }, 1000)
    },
  },
  updated(){
    clearInterval(this.timer)
  },
  unmounted(){
    clearInterval(this.timer)
  }
}
</script>

<style lang="scss" scoped>
.code-img{
  cursor: pointer;
}
</style>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值