准备联调抄表记录
This commit is contained in:
		@@ -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()
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
  },
 | 
			
		||||
  /**
 | 
			
		||||
   * 生命周期函数--监听页面隐藏
 | 
			
		||||
   */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user