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/jl/index.js

480 lines
14 KiB

// pages/home/jl/index.js
const app = getApp();//新建页面时 默认引入
const req = app.xzjlReq();//初始化一个的request() 实例
import Toast from 'tdesign-miniprogram/toast/index';
Page({
/**
* 页面的初始数据
*/
data: {
singleShow:false,
loverShow:false,
xingxiangtu:{},
userInfo:{},
loverInfo:{},
hours:0,
minute:0,
minutes:0,
pickerValue: [0, 0],
swiperIndex: 0,
prayTime:0, //祈祷时间
prayTimeStr: '选择祈祷时长' ,
prayerContent:'', //祈祷内容
showSexLogo:false,//不展示形象修改按钮
showPray:false, //显示祈祷弹层
showIsPray:false, //显示取消祈祷弹层
showEnergy:false, //显示赠送能量弹层
showEnergyToast:false, //显示赠送能量提示
showEnergySuccess:false, //赠送成功提示
showEnergyFail:false, //赠送成功提示
showInject:false, //显示注入能量
showInEnergy:false, //显示能量注入中
showScsEnergy:false, //显示注册成功提示
showTiming:false, //显示祈祷时间弹层
jmEnergy:false,
showInjectBkc: false //显示注入能量按钮动画
},
ShowOrNotLogoS(){
this.setData({singleShow:!this.data.singleShow})
},
ShowOrNotLogoL(){
this.setData({loverShow:!this.data.loverShow})
},
doSetXxtAnimal(){
this.doSetXxt('animal')
},
doSetXxtMale(){
this.doSetXxt('male')
},
showTiming(){this.setData({showTiming : !this.data.showTiming})},
doSetXxtFemale(){
this.doSetXxt('female')
},
closeJmEnergy(){
this.setData({jmEnergy: false})
},
doSetXxt(e){
req.patchRequest('/api/user/curt',{spriteType:e}).then((res)=>{
if(res.data.code==200){
}
this.getUserInfo()
}).catch((err)=>{
console.log(err);
})
},
doSetXxtAnimalS(){
this.doSetXxtS('animal')
},
doSetXxtMaleS(){
this.doSetXxtS('male')
},
doSetXxtFemaleS(){
this.doSetXxtS('female')
},
doSetXxtS(e){
req.patchRequest('/api/user/curt/lover',{spriteType:e}).then((res)=>{
if(res.data.code==200){
}
this.getUserLoverInfo()
}).catch((err)=>{
console.log(err);
})
},
/**获取形象对应的图片 */
getXxObj(){
const horoscopes = wx.getStorageSync('xy-static-img')
const userType = this.data.userInfo.constellation
const loveType = this.data.loverInfo.constellation
this.setData({
xingxiangtu: horoscopes[userType].sprite,
xingxiangtuLove: horoscopes[loveType].sprite,
elfAvatar: horoscopes[userType][`elf-avatar`]
})
},
ShowOrNotLogo(){
this.setData({showSexLogo:!this.data.showSexLogo})
},
getUserLoverInfo(){
req.getRequest('/api/user/curt/lover',{}).then((res)=>{
if(res.data.code==200){
this.setData({loverInfo:res.data.data})
}
}).catch((err)=>{
console.log(err);
})
},
getTextValue(e){
console.log(e.detail.value);
this.setData({
prayerContent:e.detail.value
})
console.log(this.data.prayerContent);
},
openEnergy(){
this.setData({
showEnergy:!this.data.showEnergy
})
},
cancelEnergy(){
this.setData({
showEnergy:!this.data.showEnergy
})
},
cancelEnergyToast(){
this.setData({
showEnergyToast:false,
showEnergyFail:false
})
},
openPray(){
if(this.data.userInfo.prayerEndTime){
this.setData({
showIsPray:!this.data.showIsPray
})
}else{
this.setData({
showPray:!this.data.showPray,
prayerContent:''
})
}
this.setData({showTiming: false})
},
onPickerChange(e){
console.log(e.detail.value);
const time = e.detail.value[0] + '小时' + e.detail.value[1] + '分钟'
this.setData({prayTimeStr: time})
if(e.detail.value[0] === this.data.hours){
this.setData({
minutes:this.data.minute
})
}else{
this.setData({
minutes:59
})
}
this.setData({
pickerValue: e.detail.value
})
},
openInject(){
console.log('注入能量');
this.setData({
showInjectBkc: true
})
const touchTimer = setTimeout(() => {
this.setData({
showInject:!this.data.showInject
})
}, 3000);
this.setData({
touchTimer: touchTimer
})
},
closeInject(){
console.log('结束');
this.setData({showInjectBkc: false})
clearInterval(this.data.touchTimer)
},
clostBtnInject(){
this.setData({
showInject:!this.data.showInject
})
},
// 注入晶石
btnInject(){
// 判断是否有能量
if (this.data.userInfo.crystallineEnergy) {
this.setData({
showInject:!this.data.showInject,
showInEnergy:!this.data.showInEnergy,
crystallineEnergy: this.data.userInfo.crystallineEnergy
})
req.patchRequest('/api/user/curt/inject-energy-to-pendant',{}).then((res)=>{
console.log('能量注入成功');
})
setTimeout(()=>{
this.setData({
showInEnergy:!this.data.showInEnergy,
showScsEnergy:true
})
this.getUserInfo()
},2000)
// 计算守护时长
const energy = (this.data.userInfo.pendantEnergy + this.data.userInfo.crystallineEnergy) * 4.8
let minute = 0
let hour = 0
if (energy >= 60) {
hour = Math.floor(energy / 60)
minute = Math.floor(energy - (hour * 60 ))
if (minute < 10) {
minute = '0' + minute
}
}
this.setData({
guarTime: `${hour}小时${minute}分钟`
})
}else{
console.log('没有能量');
this.setData({showInject: false})
Toast({
context: this,
selector: '#t-toast',
message: '能量不足',
});
}
},
// 关闭注入弹层
closeEnergy(){this.setData({showScsEnergy:false})},
getUserInfo(){
req.getRequest('/api/user/curt',{}).then((res)=>{
if(res.data.code===200){
// 获取已经祈祷时间
const now = new Date();
const startTime = new Date(res.data.data.prayerStartTime)
const diff = now.getTime() - startTime.getTime();
const hour = Math.floor(diff / (1000 * 60 * 60));
const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((diff % (1000 * 60)) / 1000);
const formattedTime = `${hour.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
// 获取结束祈祷返回能量
const nowTime = new Date();
const endTime = new Date(res.data.data.prayerEndTime)
const TimeDiff = endTime.getTime() - nowTime.getTime();
this.setData({
prayTime: formattedTime,
energy: Math.floor(TimeDiff / 360000)
})
const pendantEnergy = res.data.data.crystallineEnergy
const hours = Math.floor(pendantEnergy * 6 / 60); // 计算小时数
const minute = pendantEnergy * 6 - hours * 60
if(hours>0){
this.setData({
minutes:59
})
}
if(hours<=0){
this.setData({
minutes:minute
})
}
// 技能集满显示提示
if(res.data.data.crystallineEnergy >= 100){
this.setData({jmEnergy: true})
}
this.setData({
userInfo:res.data.data,
hours:hours,
minute:minute,
pendantEnergy:pendantEnergy
})
this.getXxObj()
// console.log(this.data.userInfo);
}
}).catch((err)=>{
console.log(err);
})
},
go2Jlai(){
wx.navigateTo({
url: '/pages/home/jl/jlai/jlai'
})
},
btnOK(){
const prayerEnergy = (this.data.pickerValue[0]*60 + this.data.pickerValue[1])/6
if(this.data.pickerValue[0] === 0 && this.data.pickerValue[1] <= 5){
wx.showToast({
title: '祈祷时间不能小于五分钟',
icon: 'none'
})
}
if(this.data.userInfo.crystallineEnergy < 1){
return Toast({
context: this,
selector: '#t-toast',
message: '能量不足',
});
}
if(this.data.prayerContent === ''){
return Toast({
context: this,
selector: '#t-toast',
message: '祈祷内容不能为空',
});
}
if(this.data.prayerContent.length > 11){
return Toast({
context: this,
selector: '#t-toast',
message: '祈祷内容不能超过11个字',
});
}
req.patchRequest('/api/user/curt/prayer',{
prayerContent:this.data.prayerContent,
prayerEnergy:prayerEnergy
}).then((res) => {
if(res.data.code === 200){
Toast({
context: this,
selector: '#t-toast',
message: '祈祷成功',
});
}else{
Toast({
context: this,
selector: '#t-toast',
message: res.data.msg,
});
}
this.getUserInfo()
this.openPray()
}).catch((err) => {
console.log('祈祷失败',err);
})
this.setData({showTiming: false})
},
btnCancel(){
console.log('111');
req.patchRequest('/api/user/curt/prayer/stop',{}).then((res)=>{
Toast({
context: this,
selector: '#t-toast',
message: '已结束祈祷',
});
this.openPray()
this.getUserInfo()
})
},
btnShare(){
if (this.data.loverInfo.crystallineEnergy === 100) {
return this.setData({
showEnergy:!this.data.showEnergy,
showEnergyToast:!this.data.showEnergyToast,
toast: '对方能量已经满啦~'
})
}
if (this.data.userInfo.crystallineEnergy === 0) {
return this.setData({
showEnergy:!this.data.showEnergy,
showEnergyToast:!this.data.showEnergyToast,
toast: '你剩余的能量不足~'
})
}
req.patchRequest('/api/user/curt/give-crystalline-energy-to-lover',{}).then((res)=>{
console.log(res);
if(res.data.code === 200){
this.setData({
showEnergySuccess:!this.data.showEnergySuccess,
showEnergy:!this.data.showEnergy
})
this.getUserInfo()
this.getUserLoverInfo()
return setTimeout(()=>{
this.setData({
showEnergySuccess:!this.data.showEnergySuccess,
})
},2000)
}else if(res.data.code === 500){
return this.setData({
showEnergy:!this.data.showEnergy,
showEnergyToast:!this.data.showEnergyToast,
toast: '对方能量已经满啦~'
})
}
}).catch((err)=>{
console.log('111');
this.setData({
showEnergyFail:!this.data.showEnergyFail,
showEnergy:!this.data.showEnergy
})
})
},
// 切换轮播图
goLeftSwiper(){
if (this.data.swiperIndex === 0) {
this.setData({swiperIndex: 2})
}else {
this.setData({swiperIndex: this.data.swiperIndex - 1})
}
},
goRightSwiper(){
if (this.data.swiperIndex === 2){
this.setData({swiperIndex: 0})
}else {
this.setData({swiperIndex: this.data.swiperIndex + 1})
}
},
swiperChange(e){
this.setData({swiperIndex: e.detail.current})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getUserInfo()
this.getUserLoverInfo()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.getUserInfo()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
this.getUserInfo()
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
this.getUserInfo()
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
},
ToastDialog(e) {
this.setData({ visible: !this.data.visible });
}
,
onVisibleChange(e) {
this.setData({
visible: e.detail.visible,
});
}
})