更新记录

1.0.0(2025-12-22) 下载此版本


平台兼容性

uni-app(4.87)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - -

lf-scan 扫码组件

高性能条形码/二维码扫描 uni-app 组件,支持多平台。

平台兼容性

平台 支持情况 实现方式
App-Vue (Android) ✅ 完全支持 uni.scanCode API
App-Vue (iOS) ✅ 完全支持 uni.scanCode API
App-Nvue (Android) ✅ 完全支持 原生 barcode 组件
App-Nvue (iOS) ✅ 完全支持 原生 barcode 组件
微信小程序 ✅ 完全支持 uni.scanCode API
支付宝小程序 ✅ 完全支持 uni.scanCode API
百度小程序 ✅ 完全支持 uni.scanCode API
抖音小程序 ✅ 完全支持 uni.scanCode API
QQ 小程序 ✅ 完全支持 uni.scanCode API
H5 ❌ 不支持 浏览器无原生扫码能力

Vue 版本支持

Vue 版本 支持情况
Vue 2 ✅ 支持
Vue 3 ✅ 支持

功能特性

  • 🚀 高性能扫描 - App 端使用原生能力,小程序使用系统 API
  • 📱 多码识别 - 支持 QR 码、EAN13、EAN8、Code128、Code39 等多种格式
  • 💾 保存图片 - 可选将扫描结果图片保存到相册
  • 🔦 闪光灯控制 - 暗光环境可开启闪光灯
  • 🖼️ 相册识别 - 支持从相册选择图片识别
  • 🎨 自定义样式 - 可配置扫描框、扫描线颜色
  • 🔄 自动放大 - Android 端支持自动放大优化识别

安装使用

1. 复制组件

components/lf-scan 文件夹复制到你的项目 components 目录下。

2. 配置 manifest.json

在 App 端使用需要配置模块:

{
  "app-plus": {
    "modules": {
      "Barcode": {},
      "Camera": {}
    }
  }
}

3. 引入组件

<script>
import fScan from "@/components/lf-scan/lf-scan.vue";

export default {
  components: { fScan },
};
</script>

API

Props

属性 类型 默认值 说明
scanType Array ['barCode', 'qrCode'] 扫码类型
frameColor String '#00C853' 扫描框颜色
scanbarColor String '#00C853' 扫描线颜色
autoStart Boolean true 是否自动开始(nvue)
autoZoom Boolean true 是否自动放大
saveImage Boolean false 是否保存扫描图片
enableAlbum Boolean true 是否允许相册选择
title String '***' 扫描页面标题
tip String '将条码/二维码放入框内...' 提示文字
onlyFromCamera Boolean false 是否仅使用相机

Events

事件名 回调参数 说明
success { result, scanType, charSet, path, imageSaved } 扫描成功
fail { errMsg } 扫描失败
cancel - 取消扫描

Methods

通过 ref 调用:

方法名 说明
startScan() 开始扫描
stopScan() 停止扫描
getLastResult() 获取上次扫描结果
getLastImage() 获取上次保存的图片路径

使用示例

基础用法

<template>
  <lf-scan @success="onSuccess" @fail="onFail" />
</template>

<script>
import fScan from "@/components/lf-scan/lf-scan.vue";

export default {
  components: { fScan },
  methods: {
    onSuccess(result) {
      console.log("扫描结果:", result.result);
    },
    onFail(error) {
      console.log("扫描失败:", error.errMsg);
    },
  },
};
</script>

自定义触发按钮

<template>
  <lf-scan @success="onSuccess">
    <template #trigger="{ startScan }">
      <button @click="startScan">自定义扫码按钮</button>
    </template>
  </lf-scan>
</template>

保存扫描图片

<template>
  <lf-scan :saveImage="true" @success="onSuccess" />
</template>

<script>
export default {
  methods: {
    onSuccess(result) {
      if (result.imageSaved) {
        console.log("图片已保存到相册");
      }
    },
  },
};
</script>

仅扫描二维码

<template>
  <lf-scan
    :scanType="['qrCode']"
    frameColor="#2196F3"
    scanbarColor="#2196F3"
    @success="onSuccess"
  />
</template>

支持的码类型

类型 scanType 值 说明
QR Code qrCode 二维码
条形码 barCode 一维码通用
EAN-13 ean13 商品条码
EAN-8 ean8 商品条码
Code 39 code39 工业条码
Code 93 code93 工业条码
Code 128 code128 高密度条码
Data Matrix datamatrix 二维码
PDF417 pdf417 二维条码

注意事项

  1. 权限配置:App 端需要摄像头权限,manifest.json 中已包含必要权限配置
  2. 真机测试:扫码功能需要在真机上测试,模拟器通常无法使用摄像头
  3. H5 限制:H5 平台因浏览器安全限制无法直接调用摄像头扫码
  4. 小程序审核:使用扫码功能的小程序需要在后台配置相关接口权限

许可证

MIT License

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-feature android:name="android.hardware.camera.autofocus"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.FLASHLIGHT"/> <uses-feature android:name="android.hardware.camera"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。