今天在整一个有关于快递的小程序,快递单号一般比较长,手动录入会很麻烦。
然后就找了一下,其实微信小程序 API 中自带一个扫码识别的功能。
wx.scanCode(Object object)
调起客户端扫码界面进行扫码。
示例代码:
// 允许从相机和相册扫码
wx.scanCode({
success(res) {
console.log(res)
}
})
// 只允许从相机扫码
wx.scanCode({
onlyFromCamera: true,
success(res) {
console.log(res)
}
})
WXSS就不贴了
WXML部分(应用):
<view class='form-list'>
<text>运单号码</text>
<input type='text' value='{{scanCodeMsg}}'></input>
<image class='scan' bindtap='scanCode' src='/images/scanCode.png' mode='widthFix'></image>
</view>
给扫描按钮的图片绑定一个事件,点击调用摄像头扫码,扫描成功将数值赋给 input 输入框的 value 值。效果如下图:

JS 部分(应用):
data: {
scanCodeMsg: "",
},
scanCode: function() {
var that = this;
wx.scanCode({ //扫描API
success(res) { //扫描成功
console.log(res) //输出回调信息
that.setData({
scanCodeMsg: res.result
});
wx.showToast({
title: '成功',
duration: 1000
})
}
})
},
参数 Object object
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| onlyFromCamera | boolean | false | 是否只能从相机扫码,不允许从相册选择图片 |
| scanType | Array.<string> | ['barCode', 'qrCode'] | 扫码类型 |
| success | function | 接口调用成功的回调函数 | |
| fail | function | 接口调用失败的回调函数 | |
| complete | function | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.scanType 的合法值
| 值 | 说明 |
|---|---|
| barCode | 一维码 |
| qrCode | 二维码 |
| datamatrix | Data Matrix 码 |
| pdf417 | PDF417 条码 |
object.success 回调函数
参数
Object res
| 属性 | 类型 | 说明 |
|---|---|---|
| result | string | 所扫码的内容 |
| scanType | string | 所扫码的类型 |
| charSet | string | 所扫码的字符集 |
| path | string | 当所扫的码为当前小程序二维码时,会返回此字段,内容为二维码携带的 path |
| rawData | string | 原始数据,base64编码 |
res.scanType 的合法值
| 值 | 说明 |
|---|---|
| QR_CODE | 二维码 |
| AZTEC | 一维码 |
| CODABAR | 一维码 |
| CODE_39 | 一维码 |
| CODE_93 | 一维码 |
| CODE_128 | 一维码 |
| DATA_MATRIX | 二维码 |
| EAN_8 | 一维码 |
| EAN_13 | 一维码 |
| ITF | 一维码 |
| MAXICODE | 一维码 |
| PDF_417 | 二维码 |
| RSS_14 | 一维码 |
| RSS_EXPANDED | 一维码 |
| UPC_A | 一维码 |
| UPC_E | 一维码 |
| UPC_EAN_EXTENSION | 一维码 |
| WX_CODE | 二维码 |
| CODE_25 | 一维码 |
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/228410.html