electricity_bill_calc_wx/pages/home/index.js

291 lines
6.8 KiB
JavaScript

import { getMeterDetail, getMeterList, getTenementMeterList } from "../../service/meter";
import { getOwnTenementList } from "../../service/tenement";
import { alertInfo, alertSuccess } from "../../utils/index";
import request from '../../utils/request';
import { getDot } from "../../utils/system";
import { getUserInfo } from "../../service/user"
const { OK } = request;
// pages/home/index.js
Page({
/**
* 页面的初始数据
*/
data: {
user: {},
all: [],
park: {},
tenement: {},
show: false,
columns: [],
pickerType: "",
meterList: [],
meterIndex: 0,
rechargeVisible: false,
background: ['demo-text-1', 'demo-text-2', 'demo-text-3'],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
choosePark() {
this.setData({
columns: this.data.all,
show: true,
pickerType: "park"
})
},
chooseTenement() {
const { park = {}} = this.data;
const { tenements } = park;
this.setData({
columns: tenements,
show: true,
pickerType: "tenement"
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
jumpToRecharge() {
const { user } = this.data;
if (!user || !user?.id) {
alertInfo("请先登录")
return;
}
wx.navigateTo({
url: '/pages/recharge/index',
})
},
async setUser() {
const result = await getUserInfo();
if (result.code !== OK) {
// alertInfo(result.message)
const user = wx.getStorageSync('user')
this.setData({ user: user })
return;
}
this.setData({ user: result.data })
wx.setStorageSync('user', result.data)
// const user = wx.getStorageSync('user')
// this.setData({ user: user })
},
onOk(e) {
const { type, index, value } = e.detail;
const currentPark = this.data.park;
switch(type) {
case "park":
// if (value.id === currentPark?.id) {
// this.setData({ show: false })
// return
// }
this.setData({
show: false,
park: value,
tenement: value.tenements?.[0]
})
wx.setStorageSync('park', value)
wx.setStorageSync('tenement', value.tenements?.[0])
break;
case "tenement":
// const currentTenement = this.data.tenement;
// if (value.id === currentTenement?.id) {
// this.setData({ show: false })
// return
// }
wx.setStorageSync('tenement', value)
// wx.setStorageSync('meter', null)
this.setData({
show: false,
tenement: value
})
break;
}
},
async handleGetMeterDetail(meterId) {
const { tenement } = this.data;
const { code, message, data } = await getMeterDetail({ tenement: tenement?.id, id: meterId });
if (code !== OK) {
alertInfo(message);
return;
}
this.setData({
meter: data,
show: false,
})
},
onCancel() {
this.setData({
show: false,
})
},
jumpToLogin() {
wx.navigateTo({
url: '/pages/login/index',
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.getAllList();
this.watchTenement();
this.watchPark();
getDot();
},
watchTenement() {
const that = this;
let value = this.data.tenement; // 获取被监听属性的当前值
// 使用 Object.defineProperty 方法在数据对象上定义属性的 getter 和 setter
Object.defineProperty(this.data, 'tenement', {
configurable: true, // 可配置
enumerable: true, // 可枚举
get: function () {
return value; // 返回属性的当前值
},
set: function (newVal) {
// const oldValue = value;
wx.setStorageSync('tenement', newVal)
that.setUser();
// that.getMeters(newVal);
value = newVal;
}
});
},
watchPark() {
const that = this;
let value = this.data.park; // 获取被监听属性的当前值
// 使用 Object.defineProperty 方法在数据对象上定义属性的 getter 和 setter
Object.defineProperty(this.data, 'park', {
configurable: true, // 可配置
enumerable: true, // 可枚举
get: function () {
return value; // 返回属性的当前值
},
set: function (newVal) {
// const oldValue = value;
value = newVal;
wx.setStorageSync('park', newVal)
}
});
},
watchMeter() {
const that = this;
let value = this.data.meter; // 获取被监听属性的当前值
// 使用 Object.defineProperty 方法在数据对象上定义属性的 getter 和 setter
Object.defineProperty(this.data, 'meter', {
configurable: true, // 可配置
enumerable: true, // 可枚举
get: function () {
return value; // 返回属性的当前值
},
set: function (newVal) {
// const oldValue = value;
value = newVal;
wx.setStorageSync('meter', newVal)
}
});
},
async getMeters({ id }) {
const { code, message, data } = await getTenementMeterList(id);
if (code !== OK) {
alertInfo(message)
this.setData({ meterList: [], meter: {} })
wx.setStorageSync('meter', {})
return;
}
this.setData({
meterList: data || [],
meter: (data?.[0] || {})
})
// if (!storageMeter) {
wx.setStorageSync('meter', data?.[0] || {} )
// }
},
async getAllList() {
const { code, message, data } = await getOwnTenementList()
if (code !== OK) {
alertInfo(message)
return
}
if (!data?.length) {
alertInfo("尚无信息")
wx.redirectTo({
url: '/pages/handleLogin/index?back=false',
})
return;
}
const [firstPark = {}] = data;
const { park, tenement } = this.data;
const updateDatas = {}
if (!park || !park.id) {
const storagePark = wx.getStorageSync('park')
updateDatas.park = storagePark || firstPark
}
if (!tenement || !tenement.id) {
const storageTenement = wx.getStorageSync('tenement')
if (!park || !park.id) {
updateDatas.tenement = storageTenement || firstPark.tenements?.[0]
} else {
updateDatas.tenement = storageTenement || park.tenements?.[0];
}
}
updateDatas.all = data;
this.setData({
...updateDatas
})
},
jumpToShop() {
alertInfo("开发中");
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})