diff --git a/app.json b/app.json index 643ed06..13da7c7 100644 --- a/app.json +++ b/app.json @@ -1,8 +1,8 @@ { "pages": [ - "pages/electricQuery/index", - "pages/billList/index", "pages/home/index", + "pages/billList/index", + "pages/electricQuery/index", "pages/rechargeRecord/index", "pages/invoiceList/index", "pages/invoiceDetail/index", diff --git a/components/timePicker/index.js b/components/timePicker/index.js new file mode 100644 index 0000000..093f07c --- /dev/null +++ b/components/timePicker/index.js @@ -0,0 +1,77 @@ +// components/timePicker/index.js + +const dayjs = require("../../utils/dayjs"); + +function generateYearArray(startYear) { + const currentYear = new Date().getFullYear(); + const years = []; + for (let i = startYear; i <= currentYear; i++) { + years.push(i); + } + return years; +} + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + type: String, + value: Number, + show: Boolean, + year: String, + month: Number, + day: Number, + }, + /** + * 组件的初始数据 + */ + data: { + minDate: new Date(2024,0,1).getTime(), + maxDate: new Date().getTime(), + formatter(type, value) { + if (type === 'year') { + return `${value}年`; + } + if (type === 'month') { + return `${value}月`; + } + if (type === 'day') { + return `${value}日`; + } + return value; + }, + years: generateYearArray(2024) + }, + /** + * 组件的方法列表 + */ + methods: { + onInput(e) { + + }, + onClose() { + this.triggerEvent("close") + }, + onCancel() { + this.triggerEvent("cancel") + }, + onConfirm(e) { + const { type } = this.data; + let time; + switch(type) { + case "day": + time = dayjs(new Date(e.detail)).format('YYYY-MM-DD'); + break; + case 'month': + time = dayjs(new Date(e.detail)).format('YYYY-MM'); + break; + case 'year': + time = dayjs(new Date(e.detail.value, 0, 1)).format('YYYY'); + break; + } + this.triggerEvent("confirm", { type, time }) + } + } +}) \ No newline at end of file diff --git a/components/timePicker/index.json b/components/timePicker/index.json new file mode 100644 index 0000000..a40d48b --- /dev/null +++ b/components/timePicker/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-datetime-picker": "@vant/weapp/datetime-picker/index", + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index" + } +} \ No newline at end of file diff --git a/components/timePicker/index.wxml b/components/timePicker/index.wxml new file mode 100644 index 0000000..b9ad1ad --- /dev/null +++ b/components/timePicker/index.wxml @@ -0,0 +1,44 @@ + + + + + + + diff --git a/components/timePicker/index.wxss b/components/timePicker/index.wxss new file mode 100644 index 0000000..a860b5a --- /dev/null +++ b/components/timePicker/index.wxss @@ -0,0 +1 @@ +/* components/timePicker/index.wxss */ \ No newline at end of file diff --git a/pages/billDetail/index.js b/pages/billDetail/index.js index b86f799..337391b 100644 --- a/pages/billDetail/index.js +++ b/pages/billDetail/index.js @@ -12,7 +12,12 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - + const { id: report } = options; + const { id: tenement } = wx.getStorageSync('tenement') + this.setData({ + // url: `https://zgd.hbhcbn.com/h5/?report=${report}&tenement=${tenement}` + url: `http://localhost:3000/?report=${report}&tenement=${tenement}` + }) }, /** diff --git a/pages/billDetail/index.wxml b/pages/billDetail/index.wxml index 2a4992e..0d726f6 100644 --- a/pages/billDetail/index.wxml +++ b/pages/billDetail/index.wxml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/pages/billList/index.js b/pages/billList/index.js index cb0d4d4..fed180e 100644 --- a/pages/billList/index.js +++ b/pages/billList/index.js @@ -31,9 +31,10 @@ Page({ page: page + 1, }) }, - jumpToDetail() { + jumpToDetail(e) { + const { id } = e.currentTarget.dataset wx.navigateTo({ - url: '/pages/billDetail/index', + url: '/pages/billDetail/index?id=' + id, }) }, /** diff --git a/pages/billList/index.wxml b/pages/billList/index.wxml index 794a8f9..b88ef27 100644 --- a/pages/billList/index.wxml +++ b/pages/billList/index.wxml @@ -4,5 +4,5 @@ {{ item.time }} - 查看详细 + 查看详细 \ No newline at end of file diff --git a/pages/electricQuery/components/accountingCard/index.js b/pages/electricQuery/components/accountingCard/index.js new file mode 100644 index 0000000..922326c --- /dev/null +++ b/pages/electricQuery/components/accountingCard/index.js @@ -0,0 +1,24 @@ +// pages/electricQuery/components/accountingCard/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + data: Object + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) \ No newline at end of file diff --git a/pages/electricQuery/components/accountingCard/index.json b/pages/electricQuery/components/accountingCard/index.json new file mode 100644 index 0000000..f23defa --- /dev/null +++ b/pages/electricQuery/components/accountingCard/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index" + } +} \ No newline at end of file diff --git a/pages/electricQuery/components/accountingCard/index.wxml b/pages/electricQuery/components/accountingCard/index.wxml new file mode 100644 index 0000000..45e6978 --- /dev/null +++ b/pages/electricQuery/components/accountingCard/index.wxml @@ -0,0 +1,33 @@ + + + + {{data.meter.address}} + + + + 初始余额 + + + 储值累计金额 + + + 电费 + + + 账务余额 + + + {{data.startMoney}} + + + {{data.rechargeMoney}} + + + {{data.electricMoney}} + + + {{data.currentMoney}} + + + + \ No newline at end of file diff --git a/pages/electricQuery/components/accountingCard/index.wxss b/pages/electricQuery/components/accountingCard/index.wxss new file mode 100644 index 0000000..c538ef6 --- /dev/null +++ b/pages/electricQuery/components/accountingCard/index.wxss @@ -0,0 +1,24 @@ +/* pages/electricQuery/components/accountingCard/index.wxss */ +.wrapper { + background-color: #fff; + margin-top: 30rpx; +} + +.title { + padding: 20rpx; + border-bottom: 1rpx solid #ccc; + font-size: 34rpx; +} + +.tableTitle { + font-size: 32rpx; + margin: 20rpx 0 14rpx; + text-align: center; +} + +.tableContent { + margin-top: 10rpx; + margin-bottom: 20rpx; + text-align: center; + font-size: 32rpx; +} \ No newline at end of file diff --git a/pages/electricQuery/index.js b/pages/electricQuery/index.js index 2548883..d82d9d0 100644 --- a/pages/electricQuery/index.js +++ b/pages/electricQuery/index.js @@ -1,11 +1,10 @@ // pages/electricQuery/index.js -import { getElectricityList } from "../../service/accounting"; +import { getAccountingList, getElectricityList, getMeterReadingList } from "../../service/accounting"; import { getTenementMeterList } from "../../service/meter"; import dayjs from "../../utils/dayjs"; import request from '../../utils/request'; -import * as echarts from '../..//components/echarts/echarts'; +import * as echarts from '../../components/echarts/echarts'; const { OK } = request; -const piedata = [1,2,3,4,5] Page({ /** @@ -22,17 +21,46 @@ 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 }, { title: '时间',renderBody: (item) => { return item.time } }, { key: 'number', title: '耗量' }, ], - list: [] + meterReadingHeader: [ + { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, + { title: '倍率', key: 'ratio' }, + { key: 'number', title: '抄表记录' }, + ], + list: [], + visible: false, + meterReadingList: [], + accountingList: [] }, changeQueryType(e) { const { type } = e.currentTarget.dataset this.setData({ queryType: type },() => { - this.init() + switch(type) { + case 0: + this.init() + break; + case 1: + this.getReadingList(); + break; + case 2: + this.getAccountingBalanceList(); + break; + } + + }) + }, + clickTime() { + const { timeType } = this.data; + this.setData({ + timePickerType: timeType === 0 ? "day" : (timeType === 1 ? 'month' : 'year'), + visible: true }) }, changeTimeType(e) { @@ -51,9 +79,18 @@ Page({ async init() { const { queryType, timeType, meterId } = this.data; const { code, message, data } = await getElectricityList({ type: queryType, meter: meterId, time: timeType }) - console.log('data', data) this.setData({ list: data }) }, + async getReadingList() { + const { meterId } = this.data; + const { code, message, data } = await getMeterReadingList(meterId) + this.setData({ meterReadingList: data }) + }, + async getAccountingBalanceList() { + const { meterId } = this.data; + const { code, message, data } = await getAccountingList(meterId) + this.setData({ accountingList: data }) + }, async getMeters() { const { id } = wx.getStorageSync('tenement') const { code, message, data } = await getTenementMeterList(id); @@ -99,6 +136,33 @@ Page({ this.init(); }) }, + onTimeClose() { + this.setData({ visible: false }) + }, + onTimeCancel() { + this.setData({ visible: false }) + }, + onTimeConfirm(e) { + const { type, time } = e.detail; + switch(type) { + case "year": + this.setData({ year: time, visible: false, }, () => { + this.init(); + }); + break; + case "month": + const [year, month] = time.split("-") + this.setData({ yearMonth: time, yearMonthStamp: new Date(Number(year), Number(month) - 1, 1).getTime(), visible: false }, () => { + this.init(); + }); + break; + case "day": + this.setData({ yearMonthDay: time, yearMonthDayStamp: new Date(time).getTime(), visible: false }, () => { + this.init(); + }) + break; + } + }, /** * 生命周期函数--监听页面初次渲染完成 */ diff --git a/pages/electricQuery/index.json b/pages/electricQuery/index.json index d342677..7865dbb 100644 --- a/pages/electricQuery/index.json +++ b/pages/electricQuery/index.json @@ -7,7 +7,9 @@ "van-col": "@vant/weapp/col/index", "van-button": "@vant/weapp/button/index", "table": "/components/table/table", - "empty": "/components/empty/index" + "empty": "/components/empty/index", + "timePicker": "/components/timePicker/index", + "accountingCard": "./components/accountingCard/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/electricQuery/index.wxml b/pages/electricQuery/index.wxml index ca98753..36689f2 100644 --- a/pages/electricQuery/index.wxml +++ b/pages/electricQuery/index.wxml @@ -41,26 +41,56 @@ - - 不包括线损电量,显示为电表实际消耗电量。仅供参考,实际能耗电量以电费账单为主。如有疑问,请联系客服。 - - - 选择时间 - - {{yearMonthDay}} - + + + 不包括线损电量,显示为电表实际消耗电量。仅供参考,实际能耗电量以电费账单为主。如有疑问,请联系客服。 + + + 选择时间 + + {{yearMonthDay}} + {{yearMonth}} + {{year}} + + + 导出 + + + + + 显示为最新的一条抄表记录。电表更新数据有延迟,仅供参考,实际以电表上显示为准。 + + + + + 账务余额更新时间为:每次预存电费后,每次账单发布后,剩余的实际金额。电表余额与账务余额相差较大的用户,每半年统一处理一次。 - 导出 - - - - + + +
+ + + + 合计:表计数量:10,耗电量100 + - - 合计:表计数量:10,耗电量100 + + +
+ + + + + + + + + + +