- 模版消息违规拦截具体原因是什么?
你好,以下模板因营销推广对用户造成骚扰,现被平台拦截违规内容下发: 模板id:BBxVv9Dmma98M0L9eFIXSEGPO9koD7wc66iNJa7-joE 模板标题:预约成功通知 这个模版是用户通过小程序预约到厂办理业务,请问这个模版违规的具体原因是什么? [图片]
2023-08-21 - wxml-to-canvas生成图片的问题?
使用wxml-to-canvas组件生成图片后保存到本地是空白图片,调试也没有报错,手机无法保存到本地,有无大佬帮忙看看。 --index.xml <button bindtap="ons">生成图片</button> <button bindtap="on">保存图片</button> <image src="{{src}}" wx:if="{{src.length>0}}" style="width: 570px;height: 289px;margin-top: 311px;margin-left: 90rpx;transform: rotate(90deg);transform-origin: top;"></image> <wxml-to-canvas class="widget" width="570" height="289"></wxml-to-canvas> --index.js const app = getApp() const {wxml, style} = require('../network.js') Page({ data: { }, onLoad() { this.widget = this.selectComponent('.widget') //onload方法里节点没加载完,设置定时器 setTimeout(() => { //渲染到 canvas,传入 wxml 模板 和 style 对象,返回的容器对象包含布局和样式 //信息。 const p1 = this.widget.renderToCanvas({ wxml: wxml, style, }); p1.then((res) => { this.container = res; wx.hideLoading(); }); }, 500); }, renderToCanvas() { const p1 = this.widget.renderToCanvas({ wxml, style }) p1.then((res) => { this.container = res this.extraImage() }) }, extraImage() { const p2 = this.widget.canvasToTempFilePath() p2.then(res => { this.setData({ src: res.tempFilePath, }) }) }, ons(){ this.renderToCanvas() }, on(){ if(this.data.src.length>0){ let that = this //若二维码未加载完毕,加个动画提高用户体验 wx.showToast({ icon: 'loading', title: '正在保存图片', duration: 1000 }) //判断用户是否授权"保存到相册" wx.getSetting({ success (res) { //没有权限,发起授权 if (!res.authSetting['scope.writePhotosAlbum']) { wx.authorize({ scope: 'scope.writePhotosAlbum', success () {//用户允许授权,保存图片到相册 that.savePhoto(); }, fail () {//用户点击拒绝授权,跳转到设置页,引导用户授权 wx.openSetting({ success () { wx.authorize({ scope: 'scope.writePhotosAlbum', success() { that.savePhoto(); } }) } }) } }) } else {//用户已授权,保存到相册 that.savePhoto() } } }) } }, //保存图片到相册,提示保存成功 savePhoto() { let that = this wx.downloadFile({ url: that.data.src, success: function (res) { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success(res) { console.log("保存成功") wx.showToast({ title: '保存成功', icon: "success", duration: 1000 }) }, fail(e){ console.log("保存失败"+e) } }) } }) } }) --network.js const wxml =` <view style="width: 570px;height: 289px;"> <view id="id" style="width: 570px;height: 219px;"> <view style="height: 10%;margin-top: 10rpx;"> <text class="font" space="emsp">检 斤 单</text> </view> <view style="height: 7%;"> <text class="fonta" space="emsp"> 工 厂:</text> <text class="fonta" space="emsp" style="float: right;"> NO: </text> </view> <view style="height: 7%;margin-top: 10rpx;"> <text class="fonta" space="emsp"> IC卡号: 车牌号码: 打印时间:</text> </view> <view style="height: 60%;margin-top: 15rpx;padding-left: 20rpx;padding-right: 30rpx;"> <view> <view style="width:25%;float: left;" class="border"> <text class="fontc" space="emsp"> 货物名称</text> </view> <view style="width:33%;float: left;" class="border"></view> <view style="width:16%;float: left;" class="border"> <text class="fontc" space="emsp"> 毛重</text> </view> <view style="width:25%;float: left;" class="borderr"></view> </view> <view> <view style="width:25%;float: left;" class="border"> <text class="fontc" space="emsp"> 货物规格</text> </view> <view style="width:33%;float: left;" class="border"></view> <view style="width:16%;float: left;" class="border"> <text class="fontc" space="emsp"> 皮重</text> </view> <view style="width:25%;float: left;" class="borderr"></view> </view> <view> <view style="width:25%;float: left;" class="border"> <text class="fontc" space="emsp"> 客户/供应商</text> </view> <view style="width:33%;float: left;" class="border"></view> <view style="width:16%;float: left;" class="border"> <text class="fontc" space="emsp"> 净重</text> </view> <view style="width:25%;float: left;" class="borderr"></view> </view> <view> <view style="width:25%;float: left;" class="border"> <text class="fontc" space="emsp"> 运输单位</text> </view> <view style="width:33%;float: left;" class="border"></view> <view style="width:16%;float: left;" class="border"> <text class="fontc" space="emsp"> 流向</text> </view> <view style="width:25%;float: left;" class="borderr"></view> </view> <view> <view style="width:25%;float: left;" class="borders"> <text class="fontc" space="emsp"> 末检时间</text> </view> <view style="width:33%;float: left;" class="borders"></view> <view style="width:16%;float: left;" class="borders"> <text class="fontc" space="emsp"> 备注</text> </view> <view style="width:25%;float: left;" class="bordere"></view> </view> </view> <view style="height: 10%;"> <text class="fonta" space="emsp"> 司磅员:</text> <text class="fonta" space="emsp"> 司机:</text> <text class="fonta" space="emsp" style="float: right;"> 第 次打印: </text> </view> </view> </view>` const style = { canvas:{ width: '570px', height: '289px', marginTop: '311px', marginLeft: '90rpx', transform: 'rotate(90deg)', transformOrigin: 'top', backgroundColor:'white', }, font:{ display: 'flex', alignItems: 'center', justifyContent: 'center', textAlign: 'justify', fontSize: "38rpx", }, fonta:{ fontSize: '28rpx', }, border:{ borderTop: 'black 3rpx solid', borderLeft: 'black 3rpx solid', height: '33px', paddingTop: '8rpx', }, borders:{ borderTop: 'black 3rpx solid', borderLeft: 'black 3rpx solid', borderBottom: 'black 3rpx solid', height: '33px', paddingTop: '8rpx', }, borderr:{ borderTop: 'black 3rpx solid', borderLeft: 'black 3rpx solid', borderRight: 'black 3rpx solid', height: '33px', paddingTop: '8rpx', }, bordere:{ border: 'black 3rpx solid', height: '33px', paddingTop: '8rpx', }, fontc:{ fontSize: '30rpx', } } module.exports = { wxml, style }
2022-12-05