生成二维码小程序和H5码

html代码:

html 复制代码
<el-table-column label="二维码">
  <template slot-scope="{ row }">
    <el-button type="primary" @click="showQrCode1(row)">查看</el-button>
  </template>
</el-table-column>

<el-dialog :close-on-click-modal="false" title="二维码" :visible.sync="qrCodeShow1" append-to-body>
  <div class="btns">
    <el-button type="primary" @click="showQrCode2(1)">H5码</el-button>
    <el-button type="primary" @click="showQrCode2(2)">小程序码</el-button>
  </div>
  <div>
    <div class="copy_main">
      <p>
        h5链接:
        <span id="inviteH5Code">{{ `${users.merchant.domain}/h5/#/pages/videoDetail/videoDetail?id=${qrCodeCurrentData.id}` }}</span> 
      </p>
      <el-button @click="copyData(0)" style="color: skyblue">复制</el-button>
    </div>
    <div class="copy_main">
      <p>
        小程序路径:
        <span id="invitePcCode">{{ `/pages/videoDetail/videoDetail?id=${qrCodeCurrentData.id}` }}</span>
      </p>
      <el-button @click="copyData(1)" style="color: skyblue">复制</el-button>
    </div>
  </div>
</el-dialog>

<el-dialog :close-on-click-modal="false" :title="qrCodeType == 1 ? 'H5码' : '小程序码'" width="500px" :visible.sync="qrCodeShow2" append-to-body>
  <div style="text-align: center" v-loading="qrCodeLoading">
    <vue-qr v-if="qrCodeType == 1" :logoSrc="users.merchant.logo" :logoScale="0.2" :text="qrCodeSrc" :size="300"></vue-qr>
    <div v-else>
      <img style="width: 60%" :src="users.hostUrl + qrCodeSrc" />
      <div style="margin-top: 10px">
        <el-button type="primary" @click="showQrCode2(2)">刷新二维码</el-button>
      </div>
    </div>
  </div>
</el-dialog>

js组件和变量:

javascript 复制代码
import vueQr from "vue-qr";

components: { vueQr }

qrCodeShow1: false,  // 二维码1显示
qrCodeShow2: false,  // 二维码2显示
qrCodeType: "",  // 二维码类型
qrCodeSrc: "",  // 二维码链接
qrCodeCurrentData: {},  // 详情
qrCodeLoading: false  // 二维码重新加载loading

js方法:

javascript 复制代码
/**
 * 显示二维码弹框1
 */
showQrCode1(row) {
  this.qrCodeShow1 = true;
  this.qrCodeCurrentData = row;
},
/**
 * 显示二维码弹框2
 */
async showQrCode2(type) {
  this.qrCodeType = type;
  switch (type) {
    case 1:
      this.qrCodeSrc = `${this.users.merchant.domain}/h5/#/pages/videoDetail/videoDetail?id=${this.qrCodeCurrentData.id}`;
      break;
    case 2:
      this.qrCodeLoading = true;
      let params = {
        path: `/pages/videoDetail/videoDetail?id=${this.qrCodeCurrentData.id}`
      }
      let res = await question.getCodeImg(params);
      if (res.code == 200) {
        this.qrCodeSrc = res.data.src;
      } else {
        this.$message.error("生成失败,请点击刷新二维码按钮重新生成");
      }
      this.qrCodeLoading = false;
      break;
  }
  this.qrCodeShow2 = true;
}
相关推荐
不瘦80斤不改名17 小时前
JavaScript 基础语法完全指南
开发语言·javascript·ecmascript
peepeeman17 小时前
vue组件透传
前端·javascript·vue.js
镜宇秋霖丶17 小时前
2026.5.12@霖宇博客制作中遇见的问题
前端·vue.js·elementui
a11177618 小时前
细胞结构实验室(react 开源)
前端·javascript·开源·html
Dxy123931021618 小时前
JS如何获取元素高度
开发语言·javascript·ecmascript
豹哥学前端18 小时前
5分钟搞懂事件委托
前端·javascript·面试
Giggle121818 小时前
开发上门维修(家政)小程序系统的核心功能和便捷方案
大数据·小程序
绝世唐门三哥18 小时前
ES6 --- import/export 全解析
开发语言·前端·javascript
yqcoder18 小时前
JavaScript 异步基石:Promise 完全指南
开发语言·前端·javascript
代码煮茶18 小时前
Vue3 上传组件实战 | 从 0 封装大文件分片上传组件(断点续传 / 秒传 / 进度条)
javascript·vue.js