vue-element根据后端返回的值,在表格内生成二维码并且下载

1:安装qrcode

npm i qrcode

2:引入qrcode

import QRCode from 'qrcode'

3:页面

 <el-table-column label="二维码">
          <template slot-scope="scope">
            <div style="width: 50px;">
              <img :src="scope.row.qrCode" style="width: 50px;" />
              <el-button type="text" size="small" @click="editProductCode('下载',scope.row)" style="text-align: center;width: 50px">下载</el-button>
            </div>
          </template>
        </el-table-column>

4:方法

   // 封装方法生产二维码
    async getCode (data) {
      console.log(data, ';;;')
      try {
        const dataSting = data.toString()
        const qrCodeData = await QRCode.toDataURL(dataSting)
        return qrCodeData
      } catch (e) {
        console.error(e)
        return null
      }
    },
    
    // 获取后端的数据
    async getData(){
      // 例如list是后端的数据
      for (const i of list) {
            i.qrCode = await this.getCode(i.equipment_code)
        }
    }
     // 下载二维码
    downloadCode(val,type){
       QRCode.toDataURL(val.equipment_code)
        .then((url) => {
          // 创建一个下载链接
          const link = document.createElement('a')
          link.href = url
          link.download = `${type}-${val.name}.png` // 下载文件名,可以根据需要进行修改

          // 模拟点击下载链接
          link.click()
        })
        .catch((error) => {
          console.error(error)
        })

   }
    
    
### 构建 Vue 邮箱输入框自动补全组件 为了创建一个适用于 Vue 项目的邮箱输入框自动补全组件,可以基于 `vuejs-autocomplete` 组件库来构建[^2]。此方案不仅能够提供基本的自动完成功能,还支持通过远程数据源获取建议列表。 #### 自动补全组件基础结构 首先安装依赖项: ```bash npm install vuejs-autocomplete --save ``` 接着,在项目中引入并配置该插件: ```javascript import Vue from 'vue'; import Autocomplete from 'vuejs-autocomplete'; Vue.use(Autocomplete); ``` 随后定义一个新的组件用于处理电子邮件地址的特殊需求: ```html <template> <div class="email-input"> <!-- 使用 v-model 双向绑定 value --> <autocomplete :search="searchEmails" placeholder="请输入电子邮箱..." aria-label="邮箱输入框" @submit="onSubmit" ref="autocomplete" /> </div> </template> <script> export default { data() { return { emails: [] }; }, methods: { async searchEmails(text) { // 这里可以根据实际业务逻辑调整查询方式 const response = await fetch(`/api/search-email?q=${text}`); this.emails = await response.json(); return this.emails.map(email => ({ label: email, value: email })); }, onSubmit(item) { console.log(`Selected Email: ${item.value}`); } } }; </script> ``` 上述代码片段展示了如何利用现有的 `vuejs-autocomplete` 实现了一个简单的邮件输入框,并且实现了异步加载候选邮箱的功能。 对于更复杂的场景,比如需要过滤本地存储的数据或是结合其他验证规则,则可能还需要进一步扩展这个例子中的方法和属性设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值