douge
    import { qrcanvas } from \'qrcanvas\';
    import html2canvas from \'html2canvas\';
  • 生成二维码
        created() {
            this.getQrCodeHandler();
        },

        getQrCodeHandler() {
            let that = this;
            that.$nextTick(() => {
                var imgCode = document.querySelectorAll(\'.img-box-code\');
                imgCode.forEach(item => {
                    var canvas1 = qrcanvas({
                        data: 生成二维码的地址,
                        size: 33
                    });
                    item.innerHTML = \'\';
                    item.appendChild(canvas1);
                });
                // this.mateImgHandler();
            });
        },
        // 手势开始
        touchstartHandler(e) {
            // console.log(e);
            e.preventDefault();
            this.startTime = e.touches[0].clientX;
            // let imgBoxName = e.target.parentElement.className;
            // let baseSrc = e.target.src;
            this.timer = setTimeout(() => {
                if (!this.birdFlag) {
                    this.$webridge.showLoadingDialog(\'加载中...\');
                    if (e.target.parentElement.className == \'img-box\') {
                        this.mateImgHandler(e.target.parentElement, \'savePicture\', 0);
                    } else if (e.target.parentElement.parentElement.className == \'img-box\') {
                        this.mateImgHandler(e.target.parentElement.parentElement, \'savePicture\', 0);
                    } else {
                        this.mateImgHandler(e.target.parentElement.parentElement.parentElement, \'savePicture\', 0);
                    }
                } else {
                    console.log(\'我正在移动\');
                }
            }, 700);
        },
        touchmoveHandler(e) {
            this.endTime = e.touches[0].clientX;
            if (Math.abs(this.startTime - this.endTime) >= 30) {
                this.birdFlag = true;
            }
        },
        // 手势结束
        touchendHandler() {
            clearTimeout(this.timer);
            this.birdFlag = false;
            console.log(\'清除定时\');
        },
        // 生成图片的连接
        mateImgHandler(ImageTarget, action, str) {
            // 所有要生成图片的元素
            // console.log(ImageTarget);
            let width = ImageTarget.offsetWidth;
            let height = ImageTarget.offsetHeight;
            var opts = {
                useCORS: true, // 【重要】开启跨域配置
                width: width,
                height: height,
                backgroundColor: \'#FDF1E9\'
            };
            html2canvas(ImageTarget, opts).then(canvas => {
                var baseSrc = canvas.toDataURL();
                this.getPutToken(baseSrc, action, str);
            });
        },
        // 获取token
        getPutToken(pic, action, str) {
            let that = this;
            // var pic = \'填写你的base64后的字符串\';
            var url = \'地址\';
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function() {
                console.log(xhr.readyState)
                if (xhr.readyState == 4) {
                    // console.log(xhr.responseText);
                    if(JSON.parse(xhr.responseText).statusCode == 200){
                        let putb64token = JSON.parse(xhr.responseText).data.uptoken;
                        that.putb64(pic, putb64token, action, str);
                    }else {
                        that.$webridge.hideLoadingDialog();
                        that.toast(\'图片上传失败,请重试\')
                    }
                    
                }
            };
            xhr.open(\'GET\', url, true);
            xhr.setRequestHeader(\'Content-Type\', \'*\');
            xhr.send();
        },
        putb64(pic, putb64token, action, str) {
            // console.log(putb64token);
            let that = this;
            var picUrl = pic.split(\';base64,\')[1];
            // console.log(picUrl);
            var url = \'//upload.qiniup.com/putb64/-1\';
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4) {
                    // console.log(xhr.responseText);
                    if(JSON.parse(xhr.responseText).key){
                        let src = \'域名\' + JSON.parse(xhr.responseText).key;
                        that.seedImgSrcHadnler(src, action, str);
                    }else {
                        that.toast(\'图片上传失败,请重试\')
                    }
                }
            };
            xhr.open(\'POST\', url, true);
            xhr.setRequestHeader(\'Content-Type\', \'application/octet-stream\');
            xhr.setRequestHeader(\'Authorization\', \'UpToken \' + putb64token);
            xhr.send(picUrl);
        }


分类:

技术点:

相关文章: