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

566 lines
16 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/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:'00:00:00', //祈祷时间
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,
jmEnergy2: true,
showInjectBkc: false, //显示注入能量按钮动画
inPrayer: true,
qdTime: '',
ysTime: ''
},
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({jmEnergy2: 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],
})
if (loveType) {
this.setData({
xingxiangtuLove: horoscopes[loveType],
})
}
},
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})
this.getQdTime(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.isInPrayer){
this.setData({
showIsPray:!this.data.showIsPray
})
}else{
this.setData({
showPray:!this.data.showPray,
prayerContent:'',
prayTimeStr: '选择祈祷时长'
})
}
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.pendantLuckInBlessing) {
wx.showToast({
title: '吊坠能量加持未结束',
icon: 'none'
})
return this.setData({
showInject: false
})
}
// 判断是否有能量
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)=>{
if (res.data.code === 200) {
console.log(res, '能量注入成功');
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})
wx.showToast({
title: '能量不足',
icon: 'error'
})
}
},
// 关闭注入弹层
closeEnergy(){this.setData({showScsEnergy:false})},
getUserInfo(){
req.getRequest('/api/user/curt',{}).then((res)=>{
if(res.data.code===200){
this.getQdTime(res.data.data)
// 能量集满显示提示
if(res.data.data.crystallineEnergy >= 100){
this.setData({jmEnergy: true})
}
this.setData({
userInfo:res.data.data,
})
// 判断运势加持是否结束
const endSeconds = new Date(res.data.data.pendantLuckyEndTime)
const nowSeconds = new Date()
if (endSeconds > nowSeconds) {
this.getYsTime(res.data.data.pendantLuckyStartTime)
}
this.getXxObj()
}
}).catch((err)=>{
console.log(err);
})
},
// 计算运势已加持时间
getYsTime(milliseconds){
const statrSeconds = new Date(milliseconds)
const ysTime = setInterval(() => {
const nowSeconds = new Date()
const nowTime = nowSeconds - statrSeconds
const hours = Math.floor(nowTime / 1000 / 3600);
const minutes = Math.floor(nowTime / 1000 / 60 - (hours * 60)) ;
const seconds = Math.floor(nowTime / 1000 - (hours * 3600) - (minutes * 60));
const formattedHours = String(hours).padStart(2, '0');
const formattedMinutes = String(minutes).padStart(2, '0');
const formattedSeconds = String(seconds).padStart(2, '0');
const time = `${formattedHours}:${formattedMinutes}:${formattedSeconds}`
this.setData({ydTime: time})
}, 1000)
this.setData({ysTime: ysTime})
},
// 计算祈祷时间
getQdTime(data){
if (!data.prayerStartTime) {
return
}
const qdTime = setInterval(() => {
// 获取已经祈祷时间
const now = new Date();
const startTime = new Date(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(data.prayerEndTime)
const TimeDiff = endTime.getTime() - nowTime.getTime();
// 判断是否正在祈祷
if (data.isInPrayer) {
this.setData({
prayTime: formattedTime,
energy: Math.floor(TimeDiff / 360000),
})
}
const pendantEnergy = 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
})
}
this.setData({
hours:hours,
minute:minute,
pendantEnergy:pendantEnergy
})
}, 1000);
this.setData({qdTime: qdTime})
},
go2Jlai(){
wx.redirectTo({
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){
return wx.showToast({
title: '祈祷时间不能小于五分钟',
icon: 'none'
})
}
if(this.data.userInfo.crystallineEnergy < 1){
return wx.showToast({
title: '能量不足',
icon: 'none'
});
}
if(this.data.prayerContent === ''){
return wx.showToast({
title: '祈祷内容不能为空',
icon: 'none'
});
}
if(this.data.prayerContent.length > 11){
return wx.showToast({
title: '祈祷内容不能超过11个字',
icon: 'none'
});
}
req.patchRequest('/api/user/curt/prayer',{
prayerContent:this.data.prayerContent,
prayerEnergy:prayerEnergy
}).then((res) => {
if (res.data.code === 1002) {
return wx.showToast({
title: 'Ta正在为你祈祷中请在祈祷结束后再试试~',
icon: 'none'
})
}
if(res.data.code === 200){
wx.showToast({
title: '祈祷成功',
icon: 'success'
})
}
this.getUserInfo()
this.openPray()
}).catch((err) => {
console.log('祈祷失败',err);
})
this.setData({showTiming: false})
},
btnCancel(){
req.patchRequest('/api/user/curt/prayer/stop',{}).then((res)=>{
console.log(res,'2222');
if(res.data.code === 200){
wx.showToast({
title: '已结束祈祷',
icon: 'success'
})
this.openPray()
this.getUserInfo()
clearInterval(this.data.qdTime)
this.setData({prayTime : '00:00:00'})
}else {
wx.showToast({
title: '结束祈祷失败',
icon: 'error'
})
}
})
},
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() {
this.getXxObj()
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.getUserInfo()
this.getXxObj()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
this.getUserInfo()
clearInterval(this.data.ysTime)
clearInterval(this.data.qdTime)
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
this.getUserInfo()
clearInterval(this.data.setInterval)
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
},
ToastDialog(e) {
this.setData({ visible: !this.data.visible });
}
,
onVisibleChange(e) {
this.setData({
visible: e.detail.visible,
});
}
})