- 请问云开发套餐是否可以修改?
兄弟们,云开发的套餐是否可以修改呀,现在是基础版,但是容量不够用,想看看有没有其他合适的,但是没找到能切换的套餐,这个连客服都没有嘛?
05-29 - 大佬们,请问小程序云开发怎么使用虚拟号自动打电话语音通知?云开发可以对接阿里云的语音服务吗?
大佬们,想做一个用户提交订单后,使用虚拟号自动给维修师傅打电话提醒(师傅号码是固定的只给总负责人师傅打电话,固定提示内容);阿里云有语音服务但是我现在是小程序云开发,不知道能不能用,文档上都是写的SDK集成,但是云开发怎么集成?有做过的大佬吗?谢谢各位大佬~
2023-09-23 - 请问云开发怎么切换套餐,现在是19.9?
云开发怎么切换套餐,现在是19.9,只有存储不够,想先看看其他套餐是怎么样的?
2023-09-04 - cloud.uploadFile为什么返回null?
下面云函数功能就是通过查询条件查询数据,然后生成excel文件上传到云存储当中,问题就是上传的时候返回null! (return await cloud.uploadFile == null'),不清楚为什么返回null,本地调试都没有问题,真机调试就出现了问题! const cloud = require('wx-server-sdk') //这里最好也初始化一下你的云开发环境 cloud.init({ env: "xxx" }) const db = cloud.database() const _ = db.command //操作excel用的类库 const xlsx = require('node-xlsx'); // 云函数入口函数 exports.main = async (event, context) => { try { let { params } = event var newParams = {}; if (params.username && params.username !== ""){ newParams.username = params.username; } if (params.company && params.company !== ""){ newParams.company = params.company; } if (params.project && params.project !== ""){ newParams.project = params.project; } if (params.bigclassname && params.bigclassname !== ""){ newParams.bigclassname = params.bigclassname; } if (params.pddictData && params.pddictData !== ""){ newParams.orderType = params.pddictData; } // 承载所有读操作的 promise 的数组 const tasks = [] for (let i = 0; i < params.xhcs; i++) { const promise = cloud.database().collection("demoorder").where(_.and([newParams, {date: _.gte(new Date(params.startDate)).and(_.lte(new Date(params.endDate)))}]) ).orderBy('date','desc').skip(i * 20).limit(20).get() tasks.push(promise) } // 等待所有 console.log(tasks); let allData = await Promise.all(tasks) let userdata = []; for (let i = 0; i < allData.length; i++){ userdata = userdata.concat(allData[i].data); } //1,定义excel表格名 // let dataCVS = 'test.xlsx'; dataCVS = (Date.parse(new Date()) / 1000) + ".xlsx"; //2,定义存储数据的 let alldata = []; let row = ['城市', '工程师', '被服务公司', '实施日期', '项目对象', '服务地址', '保修单号', '是否结单', '到场时间', '完成时间', '报销费用', '报销备注', '应收费用', '应收备注', '收费状态', '备注', '计单量', '计单量备注', '发票金额', '所属大类','订单类型','散客提成']; //表属性 alldata.push(row); for (let key in userdata) { let arr = []; arr.push(userdata[key].city); arr.push(userdata[key].username); arr.push(userdata[key].company); arr.push(userdata[key].date); arr.push(userdata[key].project); arr.push(userdata[key].address); arr.push(userdata[key].number); arr.push(userdata[key].isorder); arr.push(userdata[key].arrivetime); arr.push(userdata[key].endtime); arr.push(userdata[key].tripmoney); arr.push(userdata[key].tripdes); arr.push(userdata[key].shouldmoney); arr.push(userdata[key].shoulddes); arr.push(userdata[key].ismoney); arr.push(userdata[key].des); arr.push(userdata[key].jidanliang); arr.push(userdata[key].jidanliangdes); arr.push(userdata[key].fapiaojine); arr.push(userdata[key].bigclassname); arr.push(userdata[key].orderType); alldata.push(arr) } //3,把数据保存到excel里 var buffer = await xlsx.build([{ name: "mySheetName", data: alldata }]); //4,把excel文件保存到云存储里 return await cloud.uploadFile({ cloudPath: 'excel/' + dataCVS, fileContent: buffer, //excel二进制文件 }) } catch (e) { console.error(e) return e } }
2022-05-24 - getTempFileURL设置地址有效期为啥不生效?
wx.cloud.getTempFileURL({ fileList: [{"fileID":fileID,"maxAge": 60 * 1}], success: res => { that.setData({ fileUrl: res.fileList[0].tempFileURL }) }, fail: err => { }
2022-05-21 - 请问canvas保存图片到相册,顶部文字偏移是怎么回事?
我是先画出来,然后会有一个点击按钮,这个按钮触发以下的方法,就是保存相册的方法! wx.canvasToTempFilePath({ canvasId: 'customCanvas', success: function (res) { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success(result) { wx.previewImage({ // current: res.tempFilePath, // 当前显示图片的http链接 urls: [res.tempFilePath], // 需要预览的图片http链接列表 }) // wx.showToast({ // title: '图片保存成功', // icon: 'success', // duration: 2000 // }) } }) } })
2021-06-15 - canvas drawImage d的时候经常出现空白!绘制文字有时候会往左边偏移,导致看不见文字?
getCanvas: function(){ let that = this; var ctx = wx.createCanvasContext("customCanvas"); var wigth=wx.getSystemInfoSync().windowWidth*0.82;// 手机宽度 let height = 900/750*wx.getSystemInfoSync().windowWidth;// rpx-->px return new Promise((resolve,reject)=>{ // 绘制背景图片 let randomNumber = that.random(1, bgUrlArray.length); let bgUrlAAA = bgUrlArray[randomNumber]; let bgUrl = ''; wx.getImageInfo({ src: bgUrlAAA, success: function (res) { bgUrl = res.path; ctx.drawImage(bgUrl, 0, 0, wigth, height); ctx.save(); //绘制头像 let txUrl = wx.getStorageSync('avatarUrl'); wx.getImageInfo({ src: txUrl, success: function(res){ ctx.beginPath(); //开始绘制 // 绘制文字 ctx.font = 'normal 19px 宋体'; ctx.setFillStyle("#FFFFFF"); if (textArray.length <= 0){ textArray = [ '如切如磋 如琢如磨', '言者无罪 闻者足戒', '它山之石 可以攻玉', '投我以桃 报之以李', '靡不有初 鲜克有终', '满招损 谦受益', '辅车相依 唇亡齿寒', '亡羊补牢 犹未迟也', '知己知彼 百战不殆', '千里之行 始于足下', '知识就是力量', '学而时习之 不亦悦乎', '敏而好学 不耻下问', '心不在焉 虽学无成', '重复是学习之母', '读书百遍 其义自见', '错误是智慧的课程', '生活便是寻求新知识', '经验包含着学问', '学而不厌 诲人不倦', '有钱难买经验多', '万川归海海不盈', '到处留心皆学问', '有钱难买少年时', '失落光阴无处寻', '懒人嘴里明天多', '万事莫如亲下手', '不怕没员增 只怕不增员', '不离不弃的 才是真感情', '无人帮你 是公正的命运'] } let randomText = that.random(0, textArray.length).toString().padStart(2,0); let textContent = textArray[Number(randomText)]; textContent = textContent.replaceAll(";",";");// 中文分号替换成英文分号 // textContent = "万事莫如亲下手;万事莫如亲下手;万事莫如亲下手;万事莫如亲下手" let testArr = textContent.toString().split(";");// 按照分号短句 for (let i = 0; i < testArr.length; i ++){ ctx.fillText(testArr[i], 10, (i + 1) * 28); } // ctx.fillText(textTest.toString().substr(0,13), 10, 30); ctx.save(); // 绘制中间文字 ctx.setFillStyle("#FFFFFF"); ctx.font = 'normal 12px 宋体'; ctx.textAlign = 'left'; // 设置位置 ctx.fillText('坚持打卡', 10, 230); ctx.font = 'normal 25px 宋体'; let countSigin = that.data.countSigin + 1; ctx.fillText(continuitySignDays + 1, 10, 260); ctx.font = 'normal 12px 宋体'; if(countSigin < 10){ ctx.fillText('天', 30, 260); }else if (countSigin < 100){ ctx.fillText('天', 42, 260); }else if (countSigin < 1000){ ctx.fillText('天', 55, 260); }else if (countSigin < 10000){ ctx.fillText('天', 70, 260); } ctx.font = 'normal 12px 宋体'; ctx.fillText('今日打卡', 85, 230); ctx.font = 'normal 25px 宋体'; ctx.fillText(nowDate.timeNow, 85, 260); ctx.save(); // 绘制头像 //先画个圆,前两个参数确定了圆心 (x,y) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是false,即顺时针 ctx.arc(60 / 2 + 7, height - 40, 60 / 2, 0, Math.PI * 2, false); ctx.clip(); //画好了圆 剪切 原始画布中剪切任意形状和尺寸。 if (wx.getStorageSync('txUrl') != ""){ ctx.drawImage(wx.getStorageSync('txUrl'), 7, height - 70, 60, 60); }else{ ctx.drawImage(res.path, 10, height - 70, 60, 60); } ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图问下文即状态 还可以继续绘制 // 绘制年月日 ctx.setFillStyle("#FFFFFF") ctx.textAlign = 'left' // 设置位置 ctx.font = 'normal 12px 宋体'; // 字体样式 ctx.fillText(nowDate.yearMonthDay , 72, height - 45); ctx.save(); // 绘制昵称 ctx.setFillStyle("#FFFFFF") ctx.font = 'normal 12px 宋体'; ctx.fillText("Hi," + wx.getStorageSync('nickName'), 72,height - 30); ctx.save() // 绘制推广码 ctx.font = 'normal 10px 宋体'; ctx.textAlign = 'right'; // 设置位置 ctx.fillText('江浙沪区域', wigth - 15, height - 100); ctx.fillText('IT设备安装调试维修', wigth - 15, height - 85); ctx.fillText('扫码一件报修', wigth - 15, height - 70); let ewmUrl = '../../images/signin/ewm.jpg'; ctx.drawImage(ewmUrl, wigth - 65, height - 67,50, 50); ctx.fillText('隽宇网络感谢您的陪伴', wigth - 15, height - 6); } }) }, }) //调用draw()开始绘制 setTimeout(function(){ ctx.draw(false, function() { wx.canvasToTempFilePath({ canvasId: 'customCanvas', success: function(res) { // 获得图片临时路径 that.setData({ imageTempPath: res.tempFilePath }) } }) }); },1000) }) },
2021-05-30 - canvas drawImage d的时候经常出现空白!绘制文字有时候会往左边偏移,导致看不见文字
getCanvas: function(){ let that = this; var ctx = wx.createCanvasContext("customCanvas"); var wigth=wx.getSystemInfoSync().windowWidth*0.82;// 手机宽度 let height = 900/750*wx.getSystemInfoSync().windowWidth;// rpx-->px return new Promise((resolve,reject)=>{ // 绘制背景图片 let randomNumber = that.random(1, bgUrlArray.length); let bgUrlAAA = bgUrlArray[randomNumber]; let bgUrl = ''; wx.getImageInfo({ src: bgUrlAAA, success: function (res) { bgUrl = res.path; ctx.drawImage(bgUrl, 0, 0, wigth, height); ctx.save(); //绘制头像 let txUrl = wx.getStorageSync('avatarUrl'); wx.getImageInfo({ src: txUrl, success: function(res){ ctx.beginPath(); //开始绘制 // 绘制文字 ctx.font = 'normal 19px 宋体'; ctx.setFillStyle("#FFFFFF"); if (textArray.length <= 0){ textArray = [ '如切如磋 如琢如磨', '言者无罪 闻者足戒', '它山之石 可以攻玉', '投我以桃 报之以李', '靡不有初 鲜克有终', '满招损 谦受益', '辅车相依 唇亡齿寒', '亡羊补牢 犹未迟也', '知己知彼 百战不殆', '千里之行 始于足下', '知识就是力量', '学而时习之 不亦悦乎', '敏而好学 不耻下问', '心不在焉 虽学无成', '重复是学习之母', '读书百遍 其义自见', '错误是智慧的课程', '生活便是寻求新知识', '经验包含着学问', '学而不厌 诲人不倦', '有钱难买经验多', '万川归海海不盈', '到处留心皆学问', '有钱难买少年时', '失落光阴无处寻', '懒人嘴里明天多', '万事莫如亲下手', '不怕没员增 只怕不增员', '不离不弃的 才是真感情', '无人帮你 是公正的命运'] } let randomText = that.random(0, textArray.length).toString().padStart(2,0); let textContent = textArray[Number(randomText)]; textContent = textContent.replaceAll(";",";");// 中文分号替换成英文分号 // textContent = "万事莫如亲下手;万事莫如亲下手;万事莫如亲下手;万事莫如亲下手" let testArr = textContent.toString().split(";");// 按照分号短句 for (let i = 0; i < testArr.length; i ++){ ctx.fillText(testArr[i], 10, (i + 1) * 28); } // ctx.fillText(textTest.toString().substr(0,13), 10, 30); ctx.save(); // 绘制中间文字 ctx.setFillStyle("#FFFFFF"); ctx.font = 'normal 12px 宋体'; ctx.textAlign = 'left'; // 设置位置 ctx.fillText('坚持打卡', 10, 230); ctx.font = 'normal 25px 宋体'; let countSigin = that.data.countSigin + 1; ctx.fillText(continuitySignDays + 1, 10, 260); ctx.font = 'normal 12px 宋体'; if(countSigin < 10){ ctx.fillText('天', 30, 260); }else if (countSigin < 100){ ctx.fillText('天', 42, 260); }else if (countSigin < 1000){ ctx.fillText('天', 55, 260); }else if (countSigin < 10000){ ctx.fillText('天', 70, 260); } ctx.font = 'normal 12px 宋体'; ctx.fillText('今日打卡', 85, 230); ctx.font = 'normal 25px 宋体'; ctx.fillText(nowDate.timeNow, 85, 260); ctx.save(); // 绘制头像 //先画个圆,前两个参数确定了圆心 (x,y) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是false,即顺时针 ctx.arc(60 / 2 + 7, height - 40, 60 / 2, 0, Math.PI * 2, false); ctx.clip(); //画好了圆 剪切 原始画布中剪切任意形状和尺寸。 if (wx.getStorageSync('txUrl') != ""){ ctx.drawImage(wx.getStorageSync('txUrl'), 7, height - 70, 60, 60); }else{ ctx.drawImage(res.path, 10, height - 70, 60, 60); } ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图问下文即状态 还可以继续绘制 // 绘制年月日 ctx.setFillStyle("#FFFFFF") ctx.textAlign = 'left' // 设置位置 ctx.font = 'normal 12px 宋体'; // 字体样式 ctx.fillText(nowDate.yearMonthDay , 72, height - 45); ctx.save(); // 绘制昵称 ctx.setFillStyle("#FFFFFF") ctx.font = 'normal 12px 宋体'; ctx.fillText("Hi," + wx.getStorageSync('nickName'), 72,height - 30); ctx.save() // 绘制推广码 ctx.font = 'normal 10px 宋体'; ctx.textAlign = 'right'; // 设置位置 ctx.fillText('江浙沪区域', wigth - 15, height - 100); ctx.fillText('IT设备安装调试维修', wigth - 15, height - 85); ctx.fillText('扫码一件报修', wigth - 15, height - 70); let ewmUrl = '../../images/signin/ewm.jpg'; ctx.drawImage(ewmUrl, wigth - 65, height - 67,50, 50); ctx.fillText('隽宇网络感谢您的陪伴', wigth - 15, height - 6); } }) }, }) //调用draw()开始绘制 setTimeout(function(){ ctx.draw(false, function() { wx.canvasToTempFilePath({ canvasId: 'customCanvas', success: function(res) { // 获得图片临时路径 that.setData({ imageTempPath: res.tempFilePath }) } }) }); },1000) }) },
2021-05-30 - 请问 当用canvas画好图片后想预览,一直转圈不显示,没上线之前测试没事,上线之后就加载不出来了?
// 点击分享图片触发这个方法 wx.canvasToTempFilePath({ canvasId: 'customCanvas', success: function(res) { wx.previewImage({ current: res.tempFilePath, // 当前显示图片的http链接 urls: [res.tempFilePath], // 需要预览的图片http链接列表 }) } }) [图片]
2021-04-20 - 请问layui mini ajax 请求跨域怎么解决?前后台分离项目
// 进行登录操作 form.on('submit(login)', function (data) { alert(":!@3123123213"); let params = data.field; console.log(params.password); $.ajax({ url:'http://localhost:8089/user/login', type:'post', data:JSON.stringify(params), contentType: "application/json;charset=UTF-8", xhrFields: {withCredentials: true}, crossDomain:true, success:function(data){ console.log(data); }, error:function () { layer.msg("密码修改失败") } }) return false; });
2021-04-06