准备联调抄表记录

This commit is contained in:
2025-09-16 17:35:49 +08:00
194 changed files with 6560 additions and 1095 deletions

View File

@@ -1,6 +1,7 @@
// pages/electricQuery/index.js
import { exportElectricityList, getAccountingList, getElectricityList, getMeterReadingList } from "../../../service/accounting";
import { getTenementMeterList } from "../../../service/meter";
import { getParkInfoByTime } from "../../../service/park";
import dayjs from "../../../utils/dayjs";
import request from '../../../utils/request';
import * as echarts from '../../components/echarts/echarts';
@@ -22,26 +23,32 @@ Page({
year: dayjs().format('YYYY'),
yearMonth: dayjs().format("YYYY-MM"),
yearMonthDay: dayjs().format("YYYY-MM-DD"),
yearStamp: new Date().getTime(),
yearMonthStamp: new Date().getTime(),
yearMonthDayStamp: new Date().getTime(),
header: [
{ key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address },
// { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address },
{ title: '时间',renderBody: (item) => { return item.time } },
{ key: 'number', title: '耗量' },
],
meterReadingHeader: [
{ key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address },
{ title: '倍率', key: 'ratio' },
{ key: 'number', title: '抄表记录' },
valleyHeader: [
// { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address },
{ title: '时间',renderBody: (item) => { return item.time } },
{ key: 'critical', title: '' },
{ key: 'peak', title: '峰' },
{ key: 'flat', title: '平' },
{ key: 'valley', title: '谷' },
],
list: [],
visible: false,
meterReadingList: [],
accountingList: [],
electricNumber: 0,
meterNumber: 0,
page: 1,
readingPage: 1,
},
changeQueryType(e) {
const { type } = e.currentTarget.dataset
@@ -53,10 +60,10 @@ Page({
})
break;
case 1:
loadingFunc(async () => {
await this.getReadingList();
})
break;
// loadingFunc(async () => {
// await this.getReadingList();
// })
// break;
case 2:
loadingFunc(async () => {
await this.getAccountingBalanceList();
@@ -74,8 +81,9 @@ Page({
visible: true
})
},
changeTimeType(e) {
const { type } = e.currentTarget.dataset
const { type } = e.currentTarget.dataset;
const that = this;
this.setData({ timeType: type }, () => {
loadingFunc(async () => {
@@ -89,11 +97,13 @@ Page({
*/
onLoad(options) {
loadingFunc(async () => {
await this.getMeters()
await this.getParkInfo()
await this.init()
})
},
async init() {
const { queryType, timeType, meterId, year, yearMonth, yearMonthDay, page } = this.data;
const { queryType, timeType, meterId, year, yearMonth, yearMonthDay, page, parkInfo } = this.data;
let time;
switch(timeType) {
case 1:
@@ -128,12 +138,18 @@ Page({
devicePixelRatio: getPixelRatio(),
});
const ids = [...new Set(data?.map(item => item?.meter?.id))]
const point = data?.[0]?.time?.slice(-1)
const times = [...new Set(data?.map(item => item.time))].
map(item => Number(item.replace(point, ""))).
sort((a, b) => a - b).
map(ele => `${ele}${point}`.padStart(3, "0"));
const options = {
tooltip: {
trigger: 'axis'
},
legend: {
data: data?.map(item => item?.meter?.address),
data: data?.map(item => item?.meter?.address),
},
grid: {
left: '3%',
@@ -144,18 +160,25 @@ Page({
xAxis: {
type: 'category',
boundaryGap: false,
data: [...new Set(data?.map(item => item.time))]
data: times
},
yAxis: {
type: 'value'
},
series: ids?.map(item => {
const element = data?.find(i => i?.meter?.id === item)
const list = data?.filter(ele => ele?.meter?.id === item)
const newList = [...times].map(item => {
const exist = list.find(ele => ele.time === item)
if (exist) {
return Number(exist.critical)+ Number(exist.peak)+Number(exist.flat)+Number(exist.valley);
}
return null
})
return {
name: element?.meter?.address,
type: 'line',
stack: 'Total',
data: data?.filter(ele => ele?.meter?.id === item).map(item => item.number)
data: newList
}})
};
@@ -164,15 +187,7 @@ Page({
return pieChart;
});
},
async getReadingList() {
const { meterId } = this.data;
const { code, message, data } = await getMeterReadingList(meterId)
if (code !== OK) {
alertInfo(message)
return;
}
this.setData({ meterReadingList: data, totalPage: 1 })
},
async export() {
loadingFunc(async () => {
const { queryType, timeType, meterId, year, yearMonth, yearMonthDay } = this.data;
@@ -196,6 +211,7 @@ Page({
wx.openDocument({
filePath: data.tempFilePath,
fileType: ['xlsx'],
showMenu: true,
success() {
},
fail(err) {
@@ -229,15 +245,44 @@ Page({
alertInfo(message)
return;
}
const first = data?.[0]
this.setData({
meterList: data || [],
meterId: first?.id,
meterAddress: first?.address,
meterCode: first?.code,
}, () => {
const { queryType, } = this.data;
switch(queryType) {
case 1:
loadingFunc(async () => {
await this.getReadingList();
})
break;
case 2:
loadingFunc(async () => {
await this.getAccountingBalanceList();
})
break;
default:
loadingFunc(async () => {
await this.init();
})
break;
}
})
},
clickMeter() {
this.setData({
type: "meter",
columns: [{ id: "", name: "全部", code: "" }, ...this.data.meterList.map(item => ({ id: item.id, name: `${item.code}-${item.address}`, code: item.code }))],
columns: [
// { id: "", name: "全部", code: "" },
...this.data.meterList.map(item => ({
id: item.id,
name: `${item.code}-${item.address}`,
code: item.code,
address: item.address
}))],
show: true,
title: "表计"
})
@@ -251,11 +296,12 @@ Page({
})
},
onOk(e) {
const { id, code } = e.detail.value;
const { id, code, address } = e.detail.value;
this.setData({
// year: currentYear,
meterId: id,
meterCode: code,
meterAddress: address,
type: "",
show: false,
title: ""
@@ -287,12 +333,14 @@ Page({
onTimeCancel() {
this.setData({ visible: false })
},
onTimeConfirm(e) {
const { type, time } = e.detail;
switch(type) {
case "year":
this.setData({ year: time, visible: false, }, () => {
loadingFunc(async () => {
await this.getParkInfo()
await this.init();
})
});
@@ -301,6 +349,7 @@ Page({
const [year, month] = time.split("-")
this.setData({ yearMonth: time, yearMonthStamp: new Date(Number(year), Number(month) - 1, 1).getTime(), visible: false }, () => {
loadingFunc(async () => {
await this.getParkInfo()
await this.init();
})
});
@@ -313,11 +362,15 @@ Page({
page: 1,
}, () => {
loadingFunc(async () => {
await this.getParkInfo()
await this.init();
})
})
break;
}
},
readingChangeTime(e) {
},
/**
* 生命周期函数--监听页面初次渲染完成
@@ -330,9 +383,39 @@ Page({
* 生命周期函数--监听页面显示
*/
onShow() {
this.getMeters()
},
},
async getParkInfo() {
const park = wx.getStorageSync('park');
const { timeType, yearMonthDay, yearMonth, year } = this.data;
let time = ''
switch(timeType) {
case 0:
time = yearMonthDay;
break;
case 1:
time = yearMonth;
break;
case 2:
time = year;
}
const { park:parkInfo, code, message } = await getParkInfoByTime(park?.id, `${time}`, `${timeType}`,)
if (code !== OK) {
alertInfo(message)
return;
}
const that = this;
return new Promise((resolve) => {
that.setData({
parkInfo: parkInfo
}, () => {
resolve()
})
})
},
/**
* 生命周期函数--监听页面隐藏
*/