首页 > 其他分享 >vue3+ts使用插件vue3-esign完成签字、重签(h5、vant)

vue3+ts使用插件vue3-esign完成签字、重签(h5、vant)

时间:2024-01-30 15:35:19浏览次数:29  
标签:插件 const error transform h5 vue3 esign ref

1.安装vue3-esign:npm i vue3-esign

2.main.ts中引入:

import Vue3Esign from 'vue3-esign' app.use(Vue3Esign) 3.页面中代码:
<van-nav-bar title="手写签字" left-arrow fixed />
    <div id="sign_box">
      <div class="text">
        请在空白区域横向书写
      </div>
      <div class="canvaspanel">
        <div class="canvasborder">
          <Vue3Esign
            ref="vueEsignRef" :width="clientWidth" :height="clientHeight" :is-crop="isCrop" :line-width="lineWidth" :line-color="lineColor"
          />
        </div>
        <div class="buttongroup">
          <van-button color="#d4e8ff" style="color: #000;width: 100px;" @click="esignReset">
            重写
          </van-button>
          <van-button color="linear-gradient(to right, #2E9BEF, #0168B7)" style="margin-left: 10px;width: 100px;" @click="create">
            确认
          </van-button>
        </div>
      </div>
    </div>
<script setup lang="ts">
const vueEsignRef = ref<any>(null)
const lineWidth = ref(5)
const lineColor = ref('#000000')
const isCrop = ref<boolean>(true)
const hasSign = ref<boolean>(false)
const clientWidth = ref<number>(400)
const clientHeight = ref<number>(700)

const esignReset = async () => {
  vueEsignRef.value.reset()
}
const create = async () => {
  try {
    const res = await vueEsignRef.value.generate()
    // const bl = convertBase64UrlToBlob(res)
    addByBaseCode({ // 此处用了项目中一个接口向后端传了base64的图片
      imgStr: res,
    }).then((response) => {
      hasSign.value = true
    })
  }
  catch (error) {
    console.error('error', error)
    showToast('请先签字')
  }
}
</script>
<style lang="less" scoped>
#sign_box{
  //横向操作
  .nav-bar.van-nav-bar__placeholder{
    width: 100%;
    height: 46px !important;
    transform: rotate(90deg);
    position: fixed;
    top: 0;
    right: -100%;
    transform-origin: 0% 0%;
    z-index: 10;
  }
}
.canvasborder {
  border: solid 1px #ccc;
}
.canvaspanel {
  position: relative;
}
.text {
    color: #919191;
    display: flex;
    justify-content: center;
    align-items: center;
    transform: rotate(90deg);
    z-index: 10;
    right: -16vw;
    position: fixed;
    top: 32vw;
}

.buttongroup {
    display: flex;
    justify-content: center;
    align-items: center;
    transform: rotate(90deg);
    z-index: 10;
    left: -16vw;
    position: fixed;
    bottom: 100px;
}
</style>

效果:

 

标签:插件,const,error,transform,h5,vue3,esign,ref
From: https://www.cnblogs.com/ai01/p/17997218

相关文章

  • vue3+js使用canvas实现签字、重签
    <el-dialogtitle="签字板"v-model="visible"width="1000px"append-to-body><canvas@mousemove="canvasMove"@mouseup="canvasUp"ref="canvas"width="1000"height="5......
  • vue3+ts+vite项目中使用vite-plugin-svg-icons插件处理svg
    1.安装依赖:npminstallvite-plugin-svg-icons-D2.vite.config.ts中配置:import{createSvgIconsPlugin}from'vite-plugin-svg-icons'//在exportdefault({command,mode}:ConfigEnv):UserConfig中的plugins数组中添加代码plugins:[createSvgIconsPlugin......
  • MySQL连接控制插件导致的连接数过多问题处理
    生产环境收到一波连接数告警,而该业务实际压力并不大。查看后发现有大量的waitinginconnection_controlplugin状态的连接等待。该等待连接数有一千多个。connection_control组件是由于前段时间的安全合规审查要求安装的。怕影响生产真实连接,将单个用户的登陆失败重试connectio......
  • 跟收费说拜拜,IDEA接口调试插件推荐
    IDEA插件市场中的API调试插件不是收费(FastRequest)就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用!这款插件由Apipost团队开发的,其官方介绍是:用于IDEA项目快速生成API文档,快速查询接口、接口代码功能,并支持在IDEA中进行API......
  • 推荐几款IDEA插件,助你玩转Mybatis开发
    在软件开发的征程中,MyBatis框架一直是Java开发者中的首选,其简洁的SQL映射和强大的灵活性使其成为持久层框架的瑰宝。然而,在我们开发过程中,很多人都曾面对过一个相对繁琐的问题:如何高效而准确地将数据库表映射到实体类和相应的Mapper文件中?如何将单测日志中的SQLLOG快速高......
  • Jenkins插件Extended Choice Parameter
    1.安装ExtendedChoiceParameter插件 2.参数化构建过程中添加ExtendedChoiceParameteMulti-LevelSingleSelect多级单选:用户从下拉列表中选择一个选项,然后出现另一个下拉列表,其中的选项取决于第一个值,在第二次选择时,可能会出现第三个下拉列表,具体取决于前两个选择,依此类推......
  • 有这4类大学必备搜题神器(包含APP和网页插件)
    现在读书可不像小时候,以前想要校对试题答案,都得找到对应的纸质版答案查看,而且有的还只有答案,没有解析,无法弄清楚答案的由来。但是现在不一样了,现在我们可以通过搜题软件,寻找试题的答案,而且还会附带答案解析,分析答案的由来,方便又好用。今天就分享几款搜题软件给大家,满足大家各种搜题......
  • 整理h5跳转支付宝的注意事项
    直接上代码api({...}).then(e=>{//触发支付宝支付api//window.location.href=`alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(e.url)}`window.location.href=`${e.url}`})window.location.href=`a......
  • vue3使用自定义指令实现图片懒加载
    //自定义指令app.directive('lazy',{mounted(el,binding){//绑定的元素,绑定的值//IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内,而不需要频繁的计算来做这个判断constobserve=newIntersectionObserver(([{isIntersec......
  • 多个cni插件共存时kubelet调用哪个
    k8sv1.19.0默认情况下,k8s不支持多个cni插件混用。在/etc/cni/net.d存在多个cni配置时,dockershim只会加载按字母顺序排序的第1个插件。cmd/kubelet/app/options/container_runtime.goNewContainerRuntimeOptions函数pkg/kubelet/dockershim/network/cni/cni.gogetDefaultCNINe......