添加扫一扫功能,兼容h5、小程序、app
parent
1ef8bfb99c
commit
2002b246ac
|
@ -13,6 +13,8 @@
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
// 引入qrcode.js (必须导出qrcode.js )
|
||||||
|
var qrcode = require('@/jsFile/qrcode.js');
|
||||||
export default {
|
export default {
|
||||||
name:'foot-tab',
|
name:'foot-tab',
|
||||||
props:{
|
props:{
|
||||||
|
@ -105,7 +107,8 @@
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
// 打印qrcode 查看是否引入成功
|
||||||
|
console.log(qrcode,111)
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
choosefoot(index){
|
choosefoot(index){
|
||||||
|
@ -119,7 +122,20 @@
|
||||||
uni.reLaunch({url:'/pages/project/projectList'})
|
uni.reLaunch({url:'/pages/project/projectList'})
|
||||||
break;
|
break;
|
||||||
case 2:
|
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;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
uni.reLaunch({url:'/pages/feedback/feedback'})
|
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>
|
</script>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue