账单支持峰谷

This commit is contained in:
qiaomu 2025-04-27 08:59:56 +08:00
parent 34995ef9a3
commit 3e9857bdcd
10 changed files with 315 additions and 54 deletions

View File

@ -32,7 +32,8 @@
"pages/discountCoupon/index",
"pages/integralRecord/index",
"pages/meterList/index",
"pages/workBench/components/tenement/components/createTenement/index"
"pages/workBench/components/tenement/components/createTenement/index",
"pages/billMeterDetail/index"
],
"subPackages": [
{

View File

@ -2,8 +2,11 @@ import { getReportDetail } from "../../../service/report";
import { alertInfo, alertSuccess, getPixelRatio, loadingFunc } from "../../../utils/index";
import request from '../../../utils/request'
import * as echarts from '../../components/echarts/echarts';
import { getRoundNumber } from "../../../utils/index"
const { OK } = request
// pages/billDetail/index.js
Page({
@ -53,8 +56,11 @@ Page({
detail,
amount: amount,
meters: detail?.meters?.map(item => {
const finalAmount = Number(item?.overall?.amount || 0) + Number(item?.loss?.amount || 0) + Number(item?.publicAmount || 0)
item.finalAmount = Number(finalAmount).toFixed(2)
if (item?.loss?.amount) {
item.loss.amount = getRoundNumber(Number(item.loss.amount))
}
// const finalAmount = Number(item?.overall?.amount || 0) + Number(item?.loss?.amount || 0) + Number(item?.publicAmount || 0)
item.finalAmount = getRoundNumber(Number(item.finalAmount))
return item;
})
})
@ -162,6 +168,13 @@ Page({
return pieChart;
});
},
jumpToDetail(e) {
const { meter } = e.currentTarget.dataset;
console.log("meter", meter)
wx.navigateTo({
url: '/pages/billMeterDetail/index?data=' + JSON.stringify(meter),
})
},
download() {
const { id: tenement } = wx.getStorageSync('tenement')
const { id } = this.data;

View File

@ -50,14 +50,7 @@
</van-row>
<view class="line"></view>
<view class="contentTitle"> 电费构成 </view>
<echarts
style="width:200rpx;height:180rpx;"
id="echarts"
class='mychart-bar'
canvas-id="mychart-bar"
ec="{{ ec }}"
forceUseOldCanvas="{{false}}"
>
<echarts style="width:200rpx;height:180rpx;" id="echarts" class='mychart-bar' canvas-id="mychart-bar" ec="{{ ec }}" forceUseOldCanvas="{{false}}">
</echarts>
<view class="tooltip">
(本月电量+本月线损电量)*电单价+摊薄公摊电费+摊薄调整电费
@ -113,7 +106,7 @@
<van-col span="12">
<view class="colContent">
<view class="colContentTitle">本期用电量</view>
<view class="colContentValue" > {{ amount }} 千瓦时 </view>
<view class="colContentValue"> {{ detail.comprehensive.finalAmount }} 千瓦时 </view>
</view>
</van-col>
<van-col span="12">
@ -126,40 +119,28 @@
<view class="line"></view>
<view class="contentTitle"> 分时明细 </view>
<van-row gutter="10">
<van-col span="8">
<van-col span="12">
<view class="colContent">
<view class="colContentTitle">
分时电量
<view> (千瓦时) </view>
</view>
<view class="colContentValue2" >尖: {{ detail.comprehensive.sharpAmount }} </view>
<view class="colContentValue2" >峰: {{ detail.comprehensive.peakAmount }} </view>
<view class="colContentValue2" >平: {{ detail.comprehensive.flatAmount }} </view>
<view class="colContentValue2" >谷: {{ detail.comprehensive.valleyAmount }} </view>
<view class="colContentValue2">尖: {{ detail.comprehensive.sharpAmount }} </view>
<view class="colContentValue2">峰: {{ detail.comprehensive.peakAmount }} </view>
<view class="colContentValue2">平: {{ detail.comprehensive.flatAmount }} </view>
<view class="colContentValue2">谷: {{ detail.comprehensive.valleyAmount }} </view>
</view>
</van-col>
<van-col span="8">
<van-col span="12">
<view class="colContent">
<view class="colContentTitle">
分时单价
<view> (元/千瓦时) </view>
</view>
<view class="colContentValue2" >尖: {{ detail.comprehensive.priceSharp }} </view>
<view class="colContentValue2" >峰: {{ detail.comprehensive.pricePeak }} </view>
<view class="colContentValue2" >平: {{ detail.comprehensive.priceFlat }} </view>
<view class="colContentValue2" >谷: {{ detail.comprehensive.priceValley }} </view>
</view>
</van-col>
<van-col span="8">
<view class="colContent">
<view class="colContentTitle">
分时电费
<view> (元) </view>
</view>
<view class="colContentValue2" >尖: {{ detail.comprehensive.sharpFee }} </view>
<view class="colContentValue2" >峰: {{ detail.comprehensive.peakFee }} </view>
<view class="colContentValue2" >平: {{ detail.comprehensive.flatFee }} </view>
<view class="colContentValue2" >谷: {{ detail.comprehensive.valleyFee }} </view>
<view class="colContentValue2">尖: {{ detail.comprehensive.priceSharp }} </view>
<view class="colContentValue2">峰: {{ detail.comprehensive.pricePeak }} </view>
<view class="colContentValue2">平: {{ detail.comprehensive.priceFlat }} </view>
<view class="colContentValue2">谷: {{ detail.comprehensive.priceValley }} </view>
</view>
</van-col>
</van-row>
@ -169,46 +150,117 @@
</view>
<view class="line"></view>
<view class="contentTitle"> 分时电量明细 </view>
<view class="tableWrapper" wx:for="{{meters}}">
<view style="font-size: 30rpx;font-weight: 600;"> 尖 </view>
<view class="tableWrapper">
<view class="meterListItem" wx:for="{{meters}}" wx:key="id">
<div class="top">
<view class="address">{{item.address}}</view>
<view class="detail primaryTextBtn" bind:tap="jumpToDetail" data-meter="{{item}}"> 详情 </view>
</div>
<view style="margin: 20rpx 0; background-color: #fff;">
<van-row custom-style="height: 100%;display: flex;flex-direction: column;overflow: hidden;">
<van-col span="6">
<view class="tableTitle"> 电表地址 </view>
<view class="tableContent"> {{item.address}} </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 起码 </view>
<view class="tableContent"> {{item.startSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 止码 </view>
<view class="tableContent"> {{item.endSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 电度电量 </view>
<view class="tableContent"> {{item.critical.amount}} </view>
</van-col>
</van-row>
<van-row>
<van-col span="6">
<view class="tableTitle"> 线损电量 </view>
<view class="tableContent"> {{item.lossSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 公摊电量 </view>
<view class="tableContent"> {{item.poolSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 合计电量 </view>
<view class="tableContent"> {{item.finalSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 合计电费 </view>
</van-col>
</van-row>
<van-row class="meterListItemContent">
<van-col span="6">
<view class="tableContent"> {{item.overall.amount}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.loss.amount}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.finalAmount}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.finalTotal}} </view>
</van-col>
</van-row>
</view>
</view>
<!-- <view style="font-size: 30rpx;font-weight: 600;"> 尖 </view> -->
<!-- <view style="margin: 20rpx 0; background-color: #fff;">
<van-row custom-style="height: 100%;display: flex;flex-direction: column;overflow: hidden;">
<van-col span="6">
<view class="tableTitle"> 电表地址 </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 起码 </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 止码 </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 电度电量 </view>
</van-col>
</van-row>
<view class="top">
<view class="meterListItem" wx:for="{{meters}}" wx:key="id">
<van-row>
<van-col span="6">
<view class="tableContent"> {{item.address}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.startSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.endSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.critical.amount}} </view>
</van-col>
</van-row>
</view>
</view>
<van-row>
<van-col span="6">
<view class="tableTitle"> 线损电量 </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 公摊电量 </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 合计电量 </view>
</van-col>
<van-col span="6">
<view class="tableTitle"> 合计电费 </view>
</van-col>
</van-row>
<view class="bottom">
<view class="meterListItem" wx:for="{{meters}}" wx:key="id">
<van-row>
<van-col span="6">
<view class="tableContent"> {{item.lossSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.poolSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.finalSharp}} </view>
</van-col>
<van-col span="6">
<view class="tableContent"> {{item.chargeSharp}} </view>
</van-col>
</van-row>
</view>
</view>
</view>
<view style="font-size: 30rpx;font-weight: 600;"> 峰 </view>
<view style="margin: 20rpx 0; background-color: #fff;">
<van-row custom-style="height: 100%;display: flex;flex-direction: column;overflow: hidden;">
@ -327,7 +379,7 @@
<view class="tableContent"> {{item.chargeValley}} </view>
</van-col>
</van-row>
</view>
</view> -->
</view>
</view>
<view style="height: 20rpx;"></view>

View File

@ -74,7 +74,7 @@ page {
.colContentValue2 {
padding-bottom: 20rpx;
padding-left: 20rpx;
padding-left: 40rpx;
overflow: hidden;
}
@ -100,6 +100,7 @@ page {
background-color: #fff;
box-sizing: border-box;
flex: 1;
word-break: break-all;
}
.download {
@ -107,3 +108,29 @@ page {
top: 20rpx;
right: 20rpx;
}
.meterListItem {
font-size: 32rpx;
}
.meterListItem .top {
display: flex;
align-items: center;
}
.meterListItem .address {
flex: 1;
}
/* .top .meterListItem:nth-child(even) .tableContent,
.bottom .meterListItem:nth-child(even) .tableContent,
.top .meterListItem:nth-child(even),
.bottom .meterListItem:nth-child(even)
{
} */
.meterListItemContent, .meterListItemContent .tableContent {
background-color: #fff;
}

View File

@ -0,0 +1,87 @@
// pages/billMeterDetail/index.js
import { getRoundNumber } from "../../utils/index"
Page({
/**
* 页面的初始数据
*/
data: {
data: {},
headers: [
{ key: 'type', title: '' },
{ title: '尖',renderBody: (item) => { return item?.sharp } },
{ title: '峰',renderBody: (item) => { return item?.peak } },
{ title: '平',renderBody: (item) => { return item?.flat } },
{ title: '谷',renderBody: (item) => { return item?.valley } },
],
list: []
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
const data = JSON.parse(options.data) || {}
this.setData({
data: data,
list: [
{ type: "起码", sharp: data.startSharp, peak: data.startPeak, flat: data.startFlat, valley: data.startValley },
{ type: "止码", sharp: data.endSharp, peak: data.endPeak, flat: data.endFlat, valley: data.endValley },
{ type: "退补电量", sharp: data.refundSharp, peak: data.refundPeak, flat: data.refundFlat, valley: data.refundValley },
{ type: "从表电量", sharp: getRoundNumber(data.nestSharp), peak: getRoundNumber(data.nestPeak), flat: getRoundNumber(data.nestFlat), valley: getRoundNumber(data.nestValley) },
{ type: "电度电量", sharp: getRoundNumber(data?.critical?.amount), peak: getRoundNumber(data.peak?.amount), flat: getRoundNumber(data.flat?.amount), valley: getRoundNumber(data.valley?.amount) },
{ type: "分时单价", sharp: data.critical?.price, peak: data.peak?.price, flat: data.flat?.price, valley: data.valley?.price },
{ type: "电费", sharp: getRoundNumber(data.chargeSharp), peak: getRoundNumber(data.chargePeak), flat: getRoundNumber(data.chargeFlat), valley: getRoundNumber(data.chargeValley) },
]
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,10 @@
{
"usingComponents": {
"navigator": "/components/navigator/index",
"van-row": "@vant/weapp/row/index",
"van-col": "@vant/weapp/col/index",
"van-field": "@vant/weapp/field/index",
"table": "/components/table/table"
},
"navigationStyle": "custom"
}

View File

@ -0,0 +1,45 @@
<!--pages/billMeterDetail/index.wxml-->
<navigator title="详情" canBack="{{true}}" />
<view class="contentWrapper">
<van-field
label="电表编号"
readonly="{{true}}"
border="{{false}}"
custom-style="padding-left: 0; padding-right: 0;"
title-width="132rpx"
value="{{data.meterNo}}"
/>
<van-field
label="电表地址"
readonly="{{true}}"
custom-style="padding-left: 0; padding-right: 0;"
title-width="132rpx"
border="{{false}}"
value="{{data.address}}"
/>
<van-field
label="倍率"
readonly="{{true}}"
border="{{false}}"
custom-style="padding-left: 0; padding-right: 0;"
title-width="132rpx"
value="{{data.ratio}}"
/>
<view class="table">
<table header="{{headers}}" list="{{list}}" />
</view>
<view class="total">
<van-row>
<van-col span="12">
<view class="totalNumber">
电度电量:{{data.overall.amount}}
</view>
</van-col>
<van-col span="12">
<view class="totalNumber">
电度电费:{{data.overall.fee}}
</view>
</van-col>
</van-row>
</view>
</view>

View File

@ -0,0 +1,22 @@
/* pages/billMeterDetail/index.wxss */
.infoItem {
word-break: break-all;
}
.contentWrapper {
margin: 20rpx;
}
.table {
border: 1rpx solid rgba(204,204,204,.5);
margin-bottom: 40rpx;
}
.total {
padding-top: 30rpx;
padding-bottom: 40rpx;
}
.totalNumber {
word-break: break-all;
}

View File

@ -13,7 +13,7 @@
{
"name": "childPackage/pages/billDetail/index",
"pathName": "childPackage/pages/billDetail/index",
"query": "id=R00102714036256769&time=2025-03",
"query": "id=R00103882183475201&time=2025-03",
"launchMode": "default",
"scene": null
},

View File

@ -45,10 +45,10 @@ export function getConfigByEnv() {
switch (envVersion) {
// 开发版
case 'develop':
api = "http://localhost:8000"
// api = "http://localhost:8000"
// api = "https://zgd.hbhcbn.com/api3"
// api = "https://zgd.hbhcbn.com/api3"
// api = "https://zgd.hbhcbn.com/wxApi"
api = "https://zgd.hbhcbn.com/wxApi"
// api = "http://127.0.0.1:4523/m1/4143821-0-default"
break;
// 体验版
@ -250,3 +250,7 @@ export function getFileName(path) {
export function replaceSpecialIcon(str) {
return str.replace(/#/g, escape("#"))
}
export function getRoundNumber(number) {
return (Math.round(number * 100) / 100).toFixed(2)
}