最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue引入sign-canvas實現(xiàn)簽名畫板效果

 更新時間:2023年03月27日 10:32:35   作者:HqL丶1024  
這篇文章主要介紹了Vue引入sign-canvas實現(xiàn)簽名畫板,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Vue引入sign-canvas實現(xiàn)簽名畫板

效果圖

1.安裝

npm i sign-canvas --save

2.使用

<template>
    <div>
        <el-card shadow="hover" header="在線簽名演示">
            <el-alert
                title="感謝優(yōu)秀的 `sign-canvas`,項目地址:https://github.com/langyuxiansheng/vue-sign-canvas"
                type="success"
                :closable="false"
                class="mb15"
            ></el-alert>
            <el-button type="primary" size="small" icon="el-icon-edit" @click="onSignCanvasClick">點擊進(jìn)行簽名</el-button>
        </el-card>
        <el-dialog title="在線簽名" :visible.sync="signVisible" :close-on-click-modal="true" :close-on-press-escape="true" :width="signDialogWidth">
            <sign-canvas class="sign-canvas" ref="SignCanvas" :options="signOptions" v-model="signValue" />
            <div slot="footer" class="dialog-footer">
                <el-button size="small" @click="onCancelSign">取消</el-button>
                <el-button type="danger" size="small" @click="onCanvasClear">清空</el-button>
                <el-button type="primary" size="small" @click="onSaveAsImg">保存</el-button>
            </div>
        </el-dialog>
    </div>
</template>
 
<script>
import SignCanvas from 'sign-canvas';
export default {
    name: 'funSignCanvas',
    components: {
        SignCanvas,
    },
    data() {
        return {
            signVisible: false,
            signDialogWidth: '',
            signValue: '',
            signOptions: {
                lastWriteSpeed: 1,
                lastWriteWidth: 2,
                lineCap: 'round',
                lineJoin: 'round',
                canvasWidth: 729,
                canvasHeight: 460,
                isShowBorder: false,
                bgColor: '#E6E6E6',
                borderWidth: 1,
                borderColor: '#ff787f',
                writeWidth: 5,
                maxWriteWidth: 30,
                minWriteWidth: 5,
                writeColor: '#101010',
                isSign: true,
                imgType: 'png',
            },
        };
    },
    mounted() {
        this.initSignConfig();
        window.addEventListener('resize', this.initSignConfig);
    },
    methods: {
        // 初始化配置信息
        initSignConfig() {
            this.signDialogWidth = `${document.body.offsetWidth / 2 + 40}px`;
            this.signOptions.canvasWidth = document.body.offsetWidth / 2;
            this.signOptions.canvasHeight = document.body.offsetHeight / 2;
        },
        // 打開簽名彈窗
        onSignCanvasClick() {
            this.signVisible = true;
        },
        // 取消簽名
        onCancelSign() {
            this.signVisible = false;
            this.onCanvasClear();
        },
        // 清空簽名
        onCanvasClear() {
            this.$refs.SignCanvas.canvasClear();
        },
        // 保存簽名
        onSaveAsImg() {
            const img = this.$refs.SignCanvas.saveAsImg();
            console.log(img);
        },
    },
    destroyed() {
        window.removeEventListener('resize', this.initSignConfig);
    },
};
</script>

3.生成的base64上傳服務(wù)器

可根據(jù)base64轉(zhuǎn)blod上傳至服務(wù)器

Js圖片Base64位轉(zhuǎn)換為blob上傳到服務(wù)器

//轉(zhuǎn)碼方法
function convertBase64UrlToBlob(urlData){
   var localData= 'data:image/png...'; //假定dataUrl為base64位
   let base = atob(localData.substring(localData.indexOf(',') + 1)); // base是將base64編碼解碼,去掉data:image/png;base64部分
   let length = base.length;
   let url = new Uint8Array(length);
   while (length--) {
       url[length] = base.charCodeAt(length);
   }
   let file = new File([url], 'a.jpg', {
       type: 'image/jpg'
   })
   //最后將file,通過ajax請求做為參數(shù)傳給服務(wù)器就可以了
return file 
}

到此這篇關(guān)于Vue引入sign-canvas實現(xiàn)簽名畫板的文章就介紹到這了,更多相關(guān)Vue簽名畫板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue指令工作原理實現(xiàn)方法

    Vue指令工作原理實現(xiàn)方法

    自定義指令是 vue 中使用頻率僅次于組件,其包含 bind 、 inserted 、 update 、 componentUpdated 、 unbind 五個生命周期鉤子,接下來通過本文給大家詳細(xì)介紹Vue指令工作原理實現(xiàn)方法,需要的朋友參考下吧
    2021-06-06
  • Vue源碼解析之Template轉(zhuǎn)化為AST的實現(xiàn)方法

    Vue源碼解析之Template轉(zhuǎn)化為AST的實現(xiàn)方法

    這篇文章主要介紹了Vue源碼解析之Template轉(zhuǎn)化為AST的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 淺談Vuejs中nextTick()異步更新隊列源碼解析

    淺談Vuejs中nextTick()異步更新隊列源碼解析

    本篇文章主要介紹了淺談Vuejs中nextTick()異步更新隊列源碼解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Vue?基于?vuedraggable?實現(xiàn)選中、拖拽、排序效果

    Vue?基于?vuedraggable?實現(xiàn)選中、拖拽、排序效果

    這篇文章主要介紹了Vue?基于?vuedraggable?實現(xiàn)選中、拖拽、排序效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 學(xué)習(xí)vue.js條件渲染

    學(xué)習(xí)vue.js條件渲染

    這篇文章主要和大家一起學(xué)習(xí)vue.js條件渲染,代碼注釋詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Vue3中關(guān)于setup與自定義指令詳解

    Vue3中關(guān)于setup與自定義指令詳解

    這篇文章主要介紹了Vue3中關(guān)于setup與自定義指令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue自定義指令實現(xiàn)方法詳解

    vue自定義指令實現(xiàn)方法詳解

    這篇文章主要介紹了vue自定義指令實現(xiàn)方法,結(jié)合實例形式分析了vue.js自定義指令相關(guān)定義、注冊、使用方法及操作注意事項,需要的朋友可以參考下
    2019-02-02
  • vue2.0 父組件給子組件傳遞數(shù)據(jù)的方法

    vue2.0 父組件給子組件傳遞數(shù)據(jù)的方法

    在父組件 App.vue 中引用子組件 A.vue,把 name 的值傳給 A 組件。這篇文章主要介紹了vue2.0 父組件給子組件傳遞數(shù)據(jù)的方法,需要的朋友可以參考下
    2018-01-01
  • Vue實現(xiàn)本地購物車功能

    Vue實現(xiàn)本地購物車功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)本地購物車功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • vue-cli+webpack在生成的項目中使用bootstrap實例代碼

    vue-cli+webpack在生成的項目中使用bootstrap實例代碼

    本篇文章主要介紹了vue-cli+webpack在生成的項目中使用bootstrap實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-05-05

最新評論

阿尔山市| 吴堡县| 边坝县| 金山区| 民乐县| 仪征市| 慈利县| 宣武区| 西乌珠穆沁旗| 金寨县| 江油市| 祁连县| 依安县| 泰宁县| 和顺县| 潍坊市| 富平县| 罗江县| 南昌市| 龙海市| 连南| 葫芦岛市| 明溪县| 马公市| 囊谦县| 阿城市| 宝兴县| 驻马店市| 永仁县| 连平县| 泰兴市| 资兴市| 山丹县| 突泉县| 合阳县| 石狮市| 金川县| 台湾省| 永川市| 大同市| 大厂|