添加扫一扫功能,兼容h5、小程序、app
parent
1ef8bfb99c
commit
2002b246ac
|
@ -13,6 +13,8 @@
|
|||
</view>
|
||||
</template>
|
||||
<script>
|
||||
// 引入qrcode.js (必须导出qrcode.js )
|
||||
var qrcode = require('@/jsFile/qrcode.js');
|
||||
export default {
|
||||
name:'foot-tab',
|
||||
props:{
|
||||
|
@ -105,7 +107,8 @@
|
|||
};
|
||||
},
|
||||
mounted() {
|
||||
|
||||
// 打印qrcode 查看是否引入成功
|
||||
console.log(qrcode,111)
|
||||
},
|
||||
methods:{
|
||||
choosefoot(index){
|
||||
|
@ -119,7 +122,20 @@
|
|||
uni.reLaunch({url:'/pages/project/projectList'})
|
||||
break;
|
||||
case 2:
|
||||
// uni.reLaunch({url:'/pages/tabbar/project-list/project-list'})
|
||||
// #ifdef APP-PLUS, MP-WEIXIN
|
||||
uni.scanCode({
|
||||
onlyFromCamera:false, // 是否只能从相机扫码,不允许从相册选择图片
|
||||
scanType: ['qrCode'], // barCode:一维码, qrCode:二维码, datamatrix:Data Matrix 码, pdf417:PDF417 条码
|
||||
autoDecodeCharset:true, // 是否启用自动识别字符编码功能,默认为否
|
||||
success: function (res) {
|
||||
console.log('条码类型:' + res.scanType);
|
||||
console.log('条码内容:' + res.result);
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.scanCode();
|
||||
// #endif
|
||||
break;
|
||||
case 3:
|
||||
uni.reLaunch({url:'/pages/feedback/feedback'})
|
||||
|
@ -135,7 +151,95 @@
|
|||
// })
|
||||
// }
|
||||
}
|
||||
}
|
||||
},
|
||||
scanCode() {
|
||||
let that = this
|
||||
// 调用uni提供的调用相机api
|
||||
uni.chooseImage({
|
||||
sizeType: ['original'],
|
||||
count: 1,
|
||||
success: (res)=> {
|
||||
qrcode.decode(this.getObjectURL(res.tempFiles[0]))
|
||||
qrcode.callback = (codeRes) => {
|
||||
if (codeRes.indexOf('error') >= 0) {
|
||||
// 二维码识别失败
|
||||
console.log('不合法二维码:' + codeRes);
|
||||
} else {
|
||||
// 二维码识别成功
|
||||
let r = this.decodeStr(codeRes)
|
||||
// this.qrCodeRes = r
|
||||
console.log(r);
|
||||
}
|
||||
}
|
||||
// const tempFilePaths = res.tempFilePaths[0] // 获取到二维码图片的链接
|
||||
// qrcode.decode(tempFilePaths); // 解析二维码图片
|
||||
// qrcode.callback = function(res1) {
|
||||
// // 解析失败返回 error decoding QR Code
|
||||
// if (res1 == "error decoding QR Code") {
|
||||
// uni.showToast({
|
||||
// title: "识别二维码失败,请重新上传!",
|
||||
// duration: 2000,
|
||||
// icon: 'none'
|
||||
// })
|
||||
// } else {
|
||||
// // 解析成功返回二维码链接
|
||||
// console.log(res1)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
});
|
||||
},
|
||||
// 获取文件地址函数
|
||||
getObjectURL(file) {
|
||||
var url = null
|
||||
if (window.createObjectURL !== undefined) { // basic
|
||||
url = window.createObjectURL(file)
|
||||
} else if (window.URL !== undefined) { // mozilla(firefox)
|
||||
url = window.URL.createObjectURL(file)
|
||||
} else if (window.webkitURL !== undefined) { // webkit or chrome
|
||||
url = window.webkitURL.createObjectURL(file)
|
||||
}
|
||||
return url
|
||||
},
|
||||
// 解码,输出:中文
|
||||
decodeStr(str) {
|
||||
var out, i, len, c;
|
||||
var char2, char3;
|
||||
out = "";
|
||||
len = str.length;
|
||||
i = 0;
|
||||
while (i < len) {
|
||||
c = str.charCodeAt(i++);
|
||||
switch (c >> 4) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
// 0xxxxxxx
|
||||
out += str.charAt(i - 1);
|
||||
break;
|
||||
case 12:
|
||||
case 13:
|
||||
// 110x xxxx 10xx xxxx
|
||||
char2 = str.charCodeAt(i++);
|
||||
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
|
||||
break;
|
||||
case 14:
|
||||
// 1110 xxxx 10xx xxxx 10xx xxxx
|
||||
char2 = str.charCodeAt(i++);
|
||||
char3 = str.charCodeAt(i++);
|
||||
out += String.fromCharCode(((c & 0x0F) << 12) |
|
||||
((char2 & 0x3F) << 6) |
|
||||
((char3 & 0x3F) << 0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue