You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xzjl-ui/pages/home/xyc/index.js

487 lines
13 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// pages/home/xyc/index.js
import FormData from './../../../utils/formdata/index'
import Toast from 'tdesign-miniprogram/toast/index';
import Wxml2Canvas from 'wxml2canvas';
const app = getApp();//新建页面时 默认引入
const req = app.xzjlReq();//初始化一个的request() 实例
Page({
/**
* 页面的初始数据
*/
data: {
xyLink:'',
xyContent:'',
imgUrl:'',
fileList: [],//图片list
form:{
content:"",
deadline:'',
link:'',
img:''
},
minDate:new Date().getTime() + 24 * 60 * 60 * 1000,
cvisible: false,
note: '',
xyForm:{},
visible:false,//弹窗
single:true,
xzInfo:{},
userInfo:{},
xyNfc:true,
xyInfo:{},
showXyz:false, //显示许愿中弹层
showDetail:false, //许愿成功回显弹层
shareVisible:false, //显示分享页面
showToast:false, //显示提示弹层
showCanvas:false
},
// 添加图片
handleAdd(e){
// 上传图片显示loading
wx.showLoading({
title: '图片上传中',
mask: true
})
this.uploadFile(e.detail.files[0])
},
handleRemove(e){/**删除图片 */
const { index } = e.detail;
const { fileList } = this.data;
fileList.splice(index, 1);
this.setData({
fileList,
});
},
uploadFile(file) {/**执行 */
wx.uploadFile({
url: 'https://xzjl-api.windymuse.cn/api/resource',
filePath: file.url,
name: 'file',
header: {
'Authorization': wx.getStorageSync('token'),
'Content-Type': 'multipart/form-data'
},
formData: {
type: 'poster'
},
success: res => {
let data = JSON.parse(res.data);
if (data.code === 200) {
this.setData({
imgUrl: data.data.abUrl,
fileList: [file]
})
wx.hideLoading()
}
},
fail(res) {
showToast('图片上传失败');
}
});
},
go2MyYw(){
wx.navigateTo({
url: '/pages/home/xyc/wdyw/wdyw'
})
},
go2TaYw(){
wx.navigateTo({
url: '/pages/home/xyc/tdyw/tdyw'
})
},
doXzTime(){
this.setData({ cvisible: true });
},
// 显示提示
showToast(){
console.log('11');
this.setData({showToast: !this.data.showToast})
},
handleConfirm(e) {
console.log(e,'111');
const { value } = e.detail;
const format = (val) => {
const date = new Date(val);
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
};
this.setData({
note: format(value)
});
},
onClose({ detail }) {
console.log(detail.trigger);
},
doXyPop(){/**弹出许愿弹窗 */
console.log('执行力。。。。。')
this.setData({visible:true})
},
onVisibleChange(e) {
this.setData({
visible: e.detail.visible,
});
},
doCancelXy(){/**取消许愿 */
this.setData({
visible: false,
xyContent: '',
note: '',
xyLink: '',
fileList: []
});
},
doFinishXy(e){/**许愿 */
if(!this.data.xyContent){
wx.showToast({
title:'许愿内容不能为空!',
icon: 'none',
duration: 5000
})
}else if(!this.data.note){
wx.showToast({
title:'期望事件不能为空!',
icon: 'none',
duration: 5000
})
}else if(!this.data.imgUrl){
wx.showToast({
title:'许愿图片不能为空!',
icon: 'none',
duration: 5000
})
}else{
// 判断是否修改数据
if (this.data.id) {
return req.patchRequest(`/api/user/curt/wish/${this.data.id}`,{
content:this.data.xyContent,
deadline:this.data.note,
img:this.data.imgUrl,
link:this.data.xyLink}).then(res => {
console.log(res);
if (res.data.code === 200) {
this.setData({
visible: false,
xyContent:'',
xyLink:'',
note:'',
imgUrl:'',
fileList:[]
})
wx.showToast({
title: '修改愿望成功',
icon: 'success'
})
}
})
}
req.postRequest('/api/user/curt/wish',{
content:this.data.xyContent,
deadline:this.data.note,
img:this.data.imgUrl,
link:this.data.xyLink
}).then((res)=>{
if(res.data.code === 200){
this.setData({
visible: false,
});
this.setData({userInfo:res.data.data})
if(res.data.data&&res.data.data.loverId&&res.data.data.loverId!=null){
this.setData({single:false})
}
this.setData({xyContent:'',xyLink:'',note:'',imgUrl:'',fileList:[],showXyz:true})
setTimeout(()=>{
this.setData({
showXyz:false,
showDetail:true,
item:res.data.data
})
wx.hideTabBar()
},2000)
this.initXy()
}else{
wx.showToast({
title:res.data.msg,
icon: 'none',
duration: 5000
})
}
}).catch((err)=>{
wx.showToast({
title:'出错了:'+err.data.msg,
icon: 'none',
duration: 5000
})
})
}
},
initXy(){
req.getRequest('/api/user/curt',{}).then((res)=>{
console.log(res)
if(res.data.code==200){
this.setData({userInfo:res.data.data})
if(res.data.data&&res.data.data.loverId&&res.data.data.loverId!=null){
this.setData({single:false})
}
}
}).catch((err)=>{
console.log(err);
})
this.setData({xyInfo:wx.getStorageSync('nfc')})
},
// 关闭回显
closeDetail(){
this.setData({
showDetail: false,
showCanvas: false
})
wx.showTabBar()
},
// 分享
openShare(event){
this.setData({
shareVisible:!this.data.shareVisible
})
wx.hideTabBar()
},
shareQQ(){
console.log('分享到qq')
},
downLoad(){
console.log('下载图片');
wx.downloadFile({
url: 'https://res.wx.qq.com/wxdoc/dist/assets/img/demo.ef5c5bef.jpg',
success: (res) => {
wx.showShareImageMenu({
path: res.tempFilePath
})
}
})
},
gitImg(){
console.log('获取图片');
this.drawMyCanvas()
this.setData({showCanvas: true,shareVisible: false})
},
drawMyCanvas() {
wx.showLoading({
title: '图片生成中'
})
const that = this
const query = wx.createSelectorQuery().in(this);
query.select('#my-canvas').fields({ // 选择需要生成canvas的范围
size: true,
scrollOffset: true
}, data => {
let width = data.width;
let height = data.height;
that.setData({
width,
height
})
setTimeout(() => {
that.startDraw()
}, 1500);
}).exec()
},
startDraw() {
let that = this
// 创建wxml2canvas对象
let drawMyImage = new Wxml2Canvas({
element: 'myCanvas', // canvas的id,
obj: that, // 传入当前组件的this
width: that.data.width ,
height: that.data.height,
background: '#fff', // 生成图片的背景色
progress(percent) { // 进度
// console.log(percent);
},
finish(url) { // 生成的图片
wx.hideLoading()
console.log(url);
that.savePoster(url)
},
error(res) { // 失败原因
console.log(res);
wx.hideLoading()
}
}, this);
let data = {
// 获取wxml数据
list: [{
type: 'wxml',
class: '.my_canvas .my_draw_canvas', // my_canvas要绘制的wxml元素根类名 my_draw_canvas单个元素的类名所有要绘制的单个元素都要添加该类名
limit: '.my_canvas', // 要绘制的wxml元素根类名
x: 0,
y: 0
}]
}
// 绘制canvas
drawMyImage.draw(data, this);
},
savePoster(url) {
const that = this
wx.saveImageToPhotosAlbum({
filePath: url,
success: () => {
wx.showToast({
title: '保存成功',
icon: 'none',
duration: 1500
});
this.setData({showCanvas: false})
},
fail(err) {
if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail authorize no response") {
wx.showModal({
title: '提示',
content: '需要您授权保存相册',
showCancel: false,
success: modalSuccess => {
wx.openSetting({
success(settingdata) {
if (settingdata.authSetting['scope.writePhotosAlbum']) {
wx.saveImageToPhotosAlbum({
filePath: url,
success: function () {
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 2000
})
},
})
} else {
wx.showToast({
title: '授权失败,请稍后重新获取',
icon: 'none',
duration: 1500
});
}
}
})
}
})
}
}
})
},
// 获取我的许愿
getMyWish(){
req.getRequest('/api/user/curt/wish',{limit: '-1'}).then((res)=>{
if(res.data.code==200){
this.setData({wishes:res.data.data.records})
}
}).catch((err)=>{
console.log(err);
})
req.getRequest('/api/user/curt/lover/wish',{limit: '-1'}).then((res)=>{
if(res.data.code==200){
this.setData({LoveWishes:res.data.data.records})
}
}).catch((err)=>{
console.log(err);
})
},
// 获取愿望详情 修改愿望
getWishDetaile(id){
req.getRequest(`/api/user/curt/wish/${id}`,{}).then(res => {
console.log(res,'22222');
if (res.data.code === 200) {
const data = res.data.data
const list = [{
url: data.img,
type: 'image'
}]
this.setData({
visible: true,
xyContent: data.content,
note: data.deadline,
xyLink: data.link,
fileList: list,
imgUrl: data.img,
id: data.id
})
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.initXy()
this.getMyWish()
// 修改愿望
if (options.id) {
this.getWishDetaile(options.id)
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
this.initXy()
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.getMyWish()
this.initXy()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
},
// 分享到朋友圈
onShareTimeline(){}
})