国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端生成批量二維碼,并且下載到本地

這篇具有很好參考價(jià)值的文章主要介紹了前端生成批量二維碼,并且下載到本地。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Ⅰ- 壹 - 功能展示和使用需求

需求描述

前端生成批量二維碼,并且下載,本項(xiàng)目使用了 vue3.

功能展示

前端生成批量二維碼,并且下載到本地,前端
前端生成批量二維碼,并且下載到本地,前端
前端生成批量二維碼,并且下載到本地,前端

Ⅱ - 貳 - 封裝代碼

需要的庫(kù)

yanr add qrcodejs2-fix // 生成二維碼
yarn add html2canvas // 轉(zhuǎn)圖片
yarn add jszip// 壓縮包
yarn add file-saver// 下載

index.scss

#HomePage {
    height: 100vh;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;

    .tabs-box {
        width: 90%;
        height: 90vh;
        margin-bottom: 15px;
    }
    .qrcode-pic{
        position: absolute;
        bottom: 100px;
        display: flex;
        // display: none;
    }
}

index.vue

<!--
    * @Author: whq
    * @Date: 2022-12-28 11:28:13
 * @LastEditTime: 2023-07-24 16:03:10
 * @LastEditors: whq
    * @Description: 
 * @FilePath: \newEraUniform\src\view\HomePage\index.vue
   -->
<template>
    <div id="HomePage">
        <div class="tabs-query"></div>
        <el-button size="small" @click="handleClick('QRcode')">下載二維碼</el-button>
        <div class="tabs-box">
            <el-table ref="multipleTableRef" :data="state.dataList" style="width: 100%"
                @selection-change="handleSelectionChange">
                <el-table-column type="selection" width="55" />
                <el-table-column label="時(shí)間" width="120">
                    <template #default="scope">{{ scope.row.date }}</template>
                </el-table-column>

                <el-table-column property="name" label="名稱(chēng)" width="120" />
                <el-table-column property="address" label="電話號(hào)碼" show-overflow-tooltip />
            </el-table>
        </div>

        <el-pagination v-model:currentPage="state.pages.currentPage" :page-sizes="[20, 30, 50, 100]"
            :page-size="state.pages.size" layout=" prev, pager, next, jumper,total, sizes," :background="true"
            :total="state.pages.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
        <div class="qrcode-pic">
            <div v-for="(v, i) in state.multipleSelection" :key="i">
                <div ref="codeItem"></div>
            </div>
        </div>
        <div v-for="(v, i) in state.QRcodeArr" :key="i">
            <el-image style="width: 100px; height: 100px" :src="v.imgurl" fit="fill" />
        </div>
        <!-- 必須存在的dom 生成的二維碼通過(guò)這種方式隱藏 -->
        <div id="qrid" :style="{ 'margin-top': '-99999999999999999px', position: 'fixed' }"></div>
    </div>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, watch } from 'vue'
import QRcode from "qrcodejs2-fix";
import html2canvas from 'html2canvas'
import JSZip from "jszip"
import FileSaver from 'file-saver';
import { ElMessage } from 'element-plus';
const codeItem = ref<any>(null)

const state = reactive<any>({
    QRcodeArr: [],
    dataList: [
        {
            id: "1001",
            date: '2016-05-03',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1002",
            date: '2016-05-02',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1003",
            date: '2016-05-01',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1004",
            date: '2016-05-08',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1005",
            date: '2016-05-06',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1006",
            date: '2016-05-07',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1007",
            date: '2016-05-03',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1008",
            date: '2016-05-02',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1009",
            date: '2016-05-04',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1010",
            date: '2016-05-01',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1011",
            date: '2016-05-08',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1012",
            date: '2016-05-06',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
        {
            id: "1013",
            date: '2016-05-07',
            name: 'Tom',
            address: 'No. 189, Grove St, Los Angeles',
        },
    ],
    multipleSelection: [],
    pages: {
        total: 500,//總數(shù)據(jù)
        currentPage: 1,// 當(dāng)前頁(yè)數(shù)
        size: 20,// 一頁(yè)顯示多少條
    }
})
const handleSelectionChange = (val: any) => {
    state.multipleSelection = val
    console.log(val);

}
const handleSizeChange = (val: number) => {
    console.log(`${val} items per page`)
}
const handleCurrentChange = (val: number) => {
    console.log(`current page: ${val}`)
}

//  生成二維碼圖片
const setQRcodeArr = async () => {
    let qridElement: any = document.querySelector('#qrid')
    qridElement.innerHTML = ''
    for (const itemIterator of state.multipleSelection) {
        let newDivElement: any = document.createElement("div")
        newDivElement.innerHTML = "";

        var qrcode = new QRcode(newDivElement, {
            text: 'https://www.baidu.com/', //二維碼內(nèi)容
            width: 120,
            height: 120,
            render: 'table',
            colorDark: "#333333", //二維碼顏色
            colorLight: "#ffffff", //二維碼背景色
            correctLevel: QRcode.CorrectLevel.H
        })
        qridElement.appendChild(newDivElement)

        // 創(chuàng)建畫(huà)布放二維碼,方便下載
        let canvas: any = document.createElement("canvas"),
            scale = 1;
        canvas.width = 120;
        canvas.height = 120;
        canvas.getContext("2d").scale(scale, scale);
        let opts = {
            canvas: canvas,
            logging: false,
            width: 120,
            height: 120,
            useCORS: true,
            allowTaint: true,//允許跨域圖片
            scale: 1, // 處理模糊問(wèn)題
            dpi: 300, // 處理模糊問(wèn)題
            background: "#ffffff",
        }
        // 生成二維碼圖片
        await html2canvas(newDivElement, opts).then((canvas) => {
            const qrContentImage = canvas.toDataURL('image/png', 1.0);// 生成的圖片
            state.QRcodeArr.push({
                ...itemIterator,
                imgurl: qrContentImage
            })

        }).catch(function (reason) {
            console.log(reason);
        });
        //下載文件

    }
    qridElement.innerHTML = ''
    //創(chuàng)建壓縮對(duì)象
    var zip = new JSZip();

    for (const QRcodeIterator of state.QRcodeArr) {
        zip.file(`${QRcodeIterator.id}.png`, QRcodeIterator.imgurl.replace(/^data:image\/(png|jpg);base64,/, ""), { base64: true }); //第一個(gè)參數(shù)是圖片名字和后綴
    }

    //下載壓縮包
    zip.generateAsync({ type: "blob" }).then(function (content: any) {
        FileSaver(content, "二維碼.zip");
    });
}

const handleClick = async (type: any) => {

    switch (type) {
        case 'QRcode':

            if (!state.multipleSelection.length) {
                return ElMessage({
                    message: '請(qǐng)選擇要下載的信息',
                    type: 'warning',
                })
            }
            await setQRcodeArr()


            break;

        default:
            break;
    }

}

onMounted(() => {

})

</script>
<style lang="scss" scoped>
@import "./index.scss";
</style>

總結(jié)

經(jīng)測(cè)試如果100以上生成不建議是用這種方式,會(huì) 超級(jí)慢,還是建議后端去做這個(gè)事情文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-610040.html

到了這里,關(guān)于前端生成批量二維碼,并且下載到本地的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端生成二維碼

    在現(xiàn)代的 web 開(kāi)發(fā)中,生成二維碼是一項(xiàng)常見(jiàn)的需求。Vue 作為一個(gè)流行的前端框架,提供了多種方法來(lái)生成和顯示二維碼。本文將介紹如何使用 Vue 和一個(gè)流行的二維碼生成庫(kù) qrcode 來(lái)生成二維碼。 步驟 1:創(chuàng)建新的 Vue 項(xiàng)目 首先,確保你已經(jīng)安裝了 Node.js 和 Vue CLI。打開(kāi)終端

    2024年04月26日
    瀏覽(28)
  • 【前端】JQ生成二維碼

    提供兩種方法,兩種都是借助JQ插件生成。 所需文件: https://download.csdn.net/download/qq_25285531/88204985 https://download.csdn.net/download/qq_25285531/88204985 方法一: 方法二:比較簡(jiǎn)單

    2024年02月13日
    瀏覽(86)
  • 前端 Js二維碼生成

    1.頁(yè)面 2.uqrcode.js 結(jié)束了

    2024年02月14日
    瀏覽(35)
  • 前端vue項(xiàng)目:生成二維碼,掃二維碼跳轉(zhuǎn)到相應(yīng)頁(yè)面

    Vue2項(xiàng)目 1、安裝依賴::npm i?arale-qrcode --save 2、引入:import AraleQRCode from \\\"arale-qrcode\\\"; 接下來(lái)讓我們純前端生成一個(gè)二維碼 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【PS:親測(cè)有效,大家可以放心使用 CV 大法哈? !】 HTML JS 需求中遇到的情況,也是百度了很久參考了很多大佬的文章

    2024年02月07日
    瀏覽(92)
  • 前端qrcode生成二維碼詳解

    前端qrcode生成二維碼詳解

    qrcode 是一個(gè)基于JavaScript的二維碼生成庫(kù),主要是通過(guò)獲取 DOM 的標(biāo)簽,再通過(guò) HTML5 Canvas 繪制而成,不依賴任何庫(kù)。 官方文檔:https://www.npmjs.com/package/qrcode qrcode理論上支持所有現(xiàn)代瀏覽器以及部分老版本瀏覽器。具體而言,只要這些瀏覽器支持HTML5 Canvas和/或DOM操作,就可以

    2024年02月21日
    瀏覽(49)
  • Vue中qrcode的使用方法(生成二維碼插件) / 前端頁(yè)面根據(jù)URL鏈接生成二維碼

    1.下載 npm install qrcode --save-dev 2.引入(在所需要的頁(yè)面中引入) import QRCode from “qrcode”; //引入生成二維碼插件 3.生成二維碼 作者:微微一笑絕絕子 出處:Vue中qrcode的使用方法(生成二維碼插件) / 前端頁(yè)面根據(jù)URL鏈接生成二維碼 - 微微一笑絕絕子 - 博客園 本博客文章均為作者

    2024年02月15日
    瀏覽(47)
  • uniapp小程序生成二維碼+手機(jī)保存到本地

    1. 準(zhǔn)備工作(具體參考哪位博主的忘了就沒(méi)加鎖參考的地方了) 1. 下載好所需文件(uqrCode.js)放在文末只要復(fù)制文末代碼文件命名可自定義 2. 開(kāi)始擼碼 解決戰(zhàn)斗 下面代碼內(nèi)容屬于 開(kāi)頭所說(shuō)文件

    2024年02月11日
    瀏覽(17)
  • 微信小程序生成二維碼并保存到本地方法

    微信小程序生成二維碼并保存到本地方法

    辦法一 官方weapp-qrcode插件 github鏈接 功能完成樣子 wxml js文件 如果github進(jìn)不去可以直接復(fù)制我這個(gè)js到項(xiàng)目里 weapp-qrcode.js 辦法二 如圖所示 先下載依賴 然后點(diǎn)擊小程序頂部菜單欄工具-構(gòu)建npm 使用方法 wxml js 參數(shù)詳解 條形碼 函數(shù)名:barcode 函數(shù)原型:barcode(id, code, width, heig

    2024年02月04日
    瀏覽(24)
  • 純前端實(shí)現(xiàn)二維碼生成(原生/vue方法)(超簡(jiǎn)單)

    純前端實(shí)現(xiàn)二維碼生成(原生/vue方法)(超簡(jiǎn)單)

    我們借用了qrcode.js插件,這個(gè)插件可以幫助我們生成二維碼,超簡(jiǎn)單超好用 下面是我生成了一個(gè)主頁(yè)的二維碼,大家可以掃碼查看效果 1.本地文件引入 本地引入依賴包地址:下載地址 ?1.首先引入插件,這里我是script標(biāo)簽引入的,如果用vue直接全局引入即可 2.npm方式引入 2

    2024年04月22日
    瀏覽(36)
  • 前端二維碼生成工具小程序:構(gòu)建營(yíng)銷(xiāo)神器的技術(shù)解析

    前端二維碼生成工具小程序:構(gòu)建營(yíng)銷(xiāo)神器的技術(shù)解析

    摘要: 隨著數(shù)字化營(yíng)銷(xiāo)的不斷深入,二維碼作為一種快速、便捷的信息傳遞方式,已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域。本文旨在探討如何通過(guò)前端技術(shù)構(gòu)建一個(gè)功能豐富、操作簡(jiǎn)便的二維碼生成工具小程序,為企業(yè)和個(gè)人提供高效的營(yíng)銷(xiāo)支持。 一、引言 二維碼作為一種特殊的編碼方

    2024年04月14日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包