Compare commits

..

7 Commits

Author SHA1 Message Date
d77af4b78f 修改问题 2025-09-19 15:29:26 +08:00
345a362c74 修改样式,修改不能输入负数的问题 2025-09-19 14:37:33 +08:00
aea85af0f9 修改样式 2025-09-18 15:34:44 +08:00
b61f3287fb 抄表记录时间戳 2025-09-17 17:23:40 +08:00
49aeeb05a7 抄表记录修改时间格式调整 2025-09-17 16:58:48 +08:00
95e6937d06 抄表记录提交 2025-09-17 16:48:57 +08:00
4308096394 准备联调抄表记录 2025-09-17 14:51:36 +08:00
32 changed files with 476 additions and 88 deletions

View File

@@ -8,8 +8,19 @@ Component({
*/ */
properties: { properties: {
show: Boolean, show: Boolean,
// time: String,
}, },
// observers: {
// time: function(newValue) {
// console.log("time newValue", newValue)
// if (!newValue) {
// return;
// }
// this.setData({
// currentDate: new Date(newValue).getTime(),
// })
// }
// },
/** /**
* 组件的初始数据 * 组件的初始数据
*/ */
@@ -20,7 +31,10 @@ Component({
}, },
lifetimes: { lifetimes: {
attached() { attached() {
this.setData({
maxDate: new Date().getTime(),
currentDate: new Date().getTime(),
})
} }
}, },
/** /**

View File

@@ -1,8 +1,8 @@
// pages/workBench/components/tenement/components/bindMeter/index.js // pages/workBench/components/tenement/components/bindMeter/index.js
// 0015980101 // 0015980101
import { bindMeter, } from "../../../../service/tenement" import { createReading, updateReading } from "../../../../service/workBench"
import { getWorkMeterDetail } from "../../../../service/meter" import { getWorkMeterDetail } from "../../../../service/meter"
import { alertInfo, alertSuccess } from "../../../../utils/index"; import { alertInfo, alertSuccess, alertError } from "../../../../utils/index";
import request from "../../../../utils/request" import request from "../../../../utils/request"
import dayjs from "../../../../utils/dayjs" import dayjs from "../../../../utils/dayjs"
const { OK } = request const { OK } = request
@@ -16,12 +16,16 @@ Component({
title: String, title: String,
timeProps: String, timeProps: String,
numberProps: String, numberProps: String,
id: String idProps: String,
meter: String,
park: String
}, },
observers: { observers: {
"timeProps": function(newValue) { "timeProps": function(newValue) {
// console.log("newValue", newValue)
this.setData({ this.setData({
time: newValue time: newValue,
// startTime: newValue
}) })
}, },
"numberProps": function(newValue) { "numberProps": function(newValue) {
@@ -29,6 +33,9 @@ Component({
number: newValue number: newValue
}) })
}, },
"idProps": function(newValue) {
console.log("new id", newValue)
}
}, },
/** /**
* 组件的初始数据 * 组件的初始数据
@@ -63,12 +70,40 @@ Component({
}) })
}, },
async onSubmit() { async onSubmit() {
const { time, number } = this.data; const { time, number, idProps, park, meter, timeProps } = this.data;
if (time == null || number == null) { if (time == null || number == null) {
alertInfo("请正确填写后保存") alertInfo("请正确填写后保存")
return; return;
} }
this.triggerEvent("ok") if (!idProps) {
const { code, message } = await createReading(park, meter, {
overall: `${number}`,
flat: `${number}`,
readAt: time
})
if (code !== OK) {
alertError(message)
return
}
alertSuccess("录入成功")
this.setData({ number: null, time: null, startTime: null })
} else {
console.log("timeProps", timeProps)
const { code, message } = await updateReading(park, meter, new Date(timeProps).getTime() * 1000, {
overall: `${number}`,
flat: `${number}`,
})
if (code !== OK) {
alertError(message)
return
}
alertSuccess("录入成功")
this.setData({ number: null, time: null, startTime: null })
}
const that = this;
setTimeout(() => {
that.triggerEvent("ok")
}, 300)
}, },
dateTimeConfirm(e) { dateTimeConfirm(e) {

View File

@@ -17,7 +17,7 @@
use-button-slot use-button-slot
title-width="100rpx" title-width="100rpx"
> >
<van-button slot="button" size="small" type="info" bind:click="onTimeFocus"> <van-button slot="button" size="small" type="info" bind:click="onTimeFocus" wx:if="{{!idProps}}">
选择 选择
</van-button> </van-button>
</van-field> </van-field>
@@ -25,6 +25,8 @@
value="{{ number }}" value="{{ number }}"
placeholder="请输入读数" placeholder="请输入读数"
label="读数" label="读数"
bind:change="onChange"
data-name="number"
type="digit" type="digit"
border="{{ false }}" border="{{ false }}"
title-width="100rpx" title-width="100rpx"
@@ -44,7 +46,9 @@
/> />
<date-time-picker <date-time-picker
wx:if="{{dateTimeShow}}"
show="{{dateTimeShow}}" show="{{dateTimeShow}}"
time="{{startTime}}"
bind:confirm="dateTimeConfirm" bind:confirm="dateTimeConfirm"
bind:cancel="dateTimeCancal" bind:cancel="dateTimeCancal"
/> />

View File

@@ -19,4 +19,8 @@
justify-content: space-between; justify-content: space-between;
font-size: 30rpx; font-size: 30rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
}
.status {
font-size: 30rpx;
} }

View File

@@ -1,7 +1,7 @@
// pages/readingHistory/index.js // pages/readingHistory/index.js
import { getMeterReadingRouteMeterDetail } from "../../service/workBench" import { getMeterReadingRouteMeterDetail, getReadingList, deleteReading } from "../../service/workBench"
import request from "../../utils/request" import request from "../../utils/request"
import { alertInfo, alertSuccess, alertError } from "../../utils/index" import { alertInfo, alertSuccess, alertError, loadingFunc } from "../../utils/index"
const { OK } = request; const { OK } = request;
Page({ Page({
@@ -9,7 +9,9 @@ Page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
list: [{time: "2025-05-05 14:10:09", number: 90803.87}] list: [],
page: 1,
size: 20,
}, },
/** /**
@@ -17,12 +19,33 @@ Page({
*/ */
onLoad(options) { onLoad(options) {
const { meter, park } = options; const { meter, park } = options;
const that = this;
this.setData({ this.setData({
meter, meter,
park park
}, () => {
that.refresh();
}) })
this.getMeterInfo(meter); this.getMeterInfo(meter);
}, },
refresh() {
const that = this;
loadingFunc(async () => {
await that.getList();
})
},
onEditFinish() {
this.setData({
title: null,
visible: null,
time: null,
number: null,
id: null,
readAtTimestamp: null,
type: null,
})
this.refresh()
},
async getMeterInfo(id) { async getMeterInfo(id) {
const { code, message, data } = await getMeterReadingRouteMeterDetail(id) const { code, message, data } = await getMeterReadingRouteMeterDetail(id)
if (code !== OK) { if (code !== OK) {
@@ -31,6 +54,27 @@ Page({
} }
this.setData({ meterInfo: data }) this.setData({ meterInfo: data })
}, },
async getList() {
const { meter, park, page, size } = this.data;
const { code, message, records: data } = await getReadingList(park, meter, page)
if (code !== OK) {
alertError(message)
return;
}
this.setData({
list: data,
totalPage: Math.ceil(data?.length / size)
})
},
async onChangePage(e) {
const newPage = e.detail.currentIndex;
const that = this;
this.setData({
page: newPage
}, () => {
that.getList();
})
},
/** /**
* 生命周期函数--监听页面初次渲染完成 * 生命周期函数--监听页面初次渲染完成
*/ */
@@ -40,30 +84,46 @@ Page({
handleCreate() { handleCreate() {
this.setData({ this.setData({
title: "新增记录", title: "新增记录",
visible: true visible: true,
type: "create"
}) })
}, },
handleUpdate() { handleUpdate(e) {
const { data } = e.currentTarget.dataset;
console.log("data", data);
this.setData({ this.setData({
title: "编辑记录", title: "编辑记录",
visible: true, visible: true,
time: "2025-09-11", time: data.readAt,
number: 100, number: data.overall,
id: "" id: data.id,
readAtTimestamp: data.readAtTimestamp,
type: "edit",
}, () => {
console.log("this.data---------", this.data)
}) })
}, },
handleDelete(e) { handleDelete(e) {
const { id } = e.currentTarget.dataset; const { data } = e.currentTarget.dataset;
const that = this;
wx.showModal({ wx.showModal({
title: '删除确认', title: '删除确认',
content: '确认要删除这一项记录吗?', content: '确认要删除这一项记录吗?',
complete: (res) => { complete: async (res) => {
if (res.cancel) { if (res.cancel) {
} }
if (res.confirm) { if (res.confirm) {
const { code, message } = await deleteReading(data?.id, data?.overall)
if (code !== OK) {
alertError(message)
return
}
alertSuccess("删除成功")
setTimeout(() => {
that.refresh()
}, 300)
} }
} }
}) })

View File

@@ -4,7 +4,9 @@
"meterInfo": "./components/meterInfo/index", "meterInfo": "./components/meterInfo/index",
"van-button": "@vant/weapp/button/index", "van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index", "van-icon": "@vant/weapp/icon/index",
"editModal": "./components/editModal/index" "editModal": "./components/editModal/index",
"pagination": "/components/pagination/index",
"empty": "/components/empty/index"
}, },
"navigationStyle": "custom" "navigationStyle": "custom"
} }

View File

@@ -1,6 +1,5 @@
<!--pages/readingHistory/index.wxml--> <!--pages/readingHistory/index.wxml-->
<navigator title="历史抄表记录" canBack="{{true}}" /> <navigator title="历史抄表记录" canBack="{{true}}" />
<view class="wrapper"> <view class="wrapper">
<meterInfo meterInfo="{{meterInfo}}" /> <meterInfo meterInfo="{{meterInfo}}" />
<view class="historyTitle"> <view class="historyTitle">
@@ -22,15 +21,15 @@
<view wx:for="{{list}}" wx:for-index="itemIndex" wx:key="item"> <view wx:for="{{list}}" wx:for-index="itemIndex" wx:key="item">
<view class="tr" style="display: flex; align-items: center; "> <view class="tr" style="display: flex; align-items: center; ">
<view class="th" style="width: 40%; text-align: center; font-size: 30rpx;"> <view class="th" style="width: 40%; text-align: center; font-size: 30rpx;">
{{ item.time }} {{ item.readAt }}
</view> </view>
<view class="th" style="width: 35%; text-align: center; font-size: 30rpx;"> <view class="th" style="width: 35%; text-align: center; font-size: 30rpx;">
{{ item.number }} {{ item.overall }}
</view> </view>
<view class="th" style="width: 25%; text-align: center; justify-content: center; display: flex; align-items: center;"> <view class="th" style="width: 25%; text-align: center; justify-content: center; display: flex; align-items: center;">
<van-icon name="edit" size="40rpx" bind:tap="handleUpdate" data-data="{{item}}" color="#15755e" /> <van-icon name="edit" size="40rpx" bind:tap="handleUpdate" data-data="{{item}}" color="#15755e" />
<van-icon name="delete" size="40rpx" bind:tap="handleDelete" data-id="{{item.id}}" color="#15755e" custom-style="margin-left: 20rpx" /> <van-icon name="delete" size="40rpx" bind:tap="handleDelete" data-data="{{item}}" color="#15755e" custom-style="margin-left: 20rpx" />
</view> </view>
</view> </view>
</view> </view>
@@ -41,9 +40,21 @@
<pagination currentIndex="{{page}}" totalPage="{{totalPage}}" bind:pagingChange="onChangePage" /> <pagination currentIndex="{{page}}" totalPage="{{totalPage}}" bind:pagingChange="onChangePage" />
</view> </view>
<empty bind:refresh="init" wx:else /> <empty bind:refresh="refresh" wx:else />
</view> </view>
</view> </view>
<editModal title="{{title}}" visible="{{visible}}" timeProps="{{time}}" numberProps="{{number}}" id="{{id}}" /> <editModal
wx:if="{{visible}}"
title="{{title}}"
visible="{{visible}}"
timeProps="{{time}}"
timeStamp="{{readAtTimestamp}}"
numberProps="{{number}}"
idProps="{{id}}"
park="{{park}}"
meter="{{meter}}"
bind:ok="onEditFinish"
startTime="{{startTime}}"
/>

View File

@@ -11,6 +11,11 @@ page {
.historyTitle { .historyTitle {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center;
}
.historyTitle .text {
font-size: 32rpx;
} }
.table { .table {

View File

@@ -80,7 +80,7 @@ Component({
alertSuccess("操作成功") alertSuccess("操作成功")
this.init() this.init()
setTimeout(() => { setTimeout(() => {
that.jumpToReading() that.jumpToReading({ currentTarget: { dataset: { id } } })
}, 500) }, 500)
}, },
async changeEndStatus(e) { async changeEndStatus(e) {

View File

@@ -5,7 +5,7 @@ Page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
active: 4 active: 0
}, },
/** /**

View File

@@ -0,0 +1,66 @@
// pages/workBench/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"navigator": "/components/navigator/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,3 @@
<!--pages/workBench/index.wxml-->
<navigator title="工作台" canBack="{{true}}" />

View File

@@ -0,0 +1 @@
/* pages/workBench/index.wxss */

View File

@@ -19,6 +19,11 @@ Component({
* 组件的方法列表 * 组件的方法列表
*/ */
methods: { methods: {
jumpToHistory() {
const { meterInfo } = this.data;
wx.navigateTo({
url: `/pages/readingHistory/index?meter=${meterInfo?.id}&park=${meterInfo?.parkId}`,
})
},
} }
}) })

View File

@@ -3,6 +3,7 @@
"usingComponents": { "usingComponents": {
"van-tag": "@vant/weapp/tag/index", "van-tag": "@vant/weapp/tag/index",
"van-row": "@vant/weapp/row/index", "van-row": "@vant/weapp/row/index",
"van-col": "@vant/weapp/col/index" "van-col": "@vant/weapp/col/index",
"van-button": "@vant/weapp/button/index"
} }
} }

View File

@@ -1,12 +1,18 @@
<!--pages/writeReading/components/meterInfo/index.wxml--> <!--pages/writeReading/components/meterInfo/index.wxml-->
<view class="wrapper"> <view class="wrapper">
<view class="title"> <view class="title" style="display: flex; justify-content: space-between; align-items: center;">
<text> 电表列表 </text> <text> 电表详情 </text>
<view class="time">
<!-- 2025年9月5日 -->
<van-button size="small" type="info" bind:click="jumpToHistory">
历史记录
</van-button>
</view>
</view> </view>
<view class="info"> <view class="info">
<view class="title"> <view class="title">
<view class="address"> <view class="address">
标1东-307 {{ meterInfo.address }}
</view> </view>
<view class="meterType"> <view class="meterType">
<van-tag type="primary">华昌宝能收费</van-tag> <van-tag type="primary">华昌宝能收费</van-tag>
@@ -17,7 +23,7 @@
<van-row gutter="20"> <van-row gutter="20">
<van-col span="12"> <van-col span="12">
<view class="text"> <view class="text">
<view> <view class="titleText">
编号 编号
</view> </view>
<view> <view>
@@ -27,7 +33,7 @@
</van-col> </van-col>
<van-col span="12"> <van-col span="12">
<view class="text"> <view class="text">
<view> <view class="titleText">
类型 类型
</view> </view>
<view wx:if="{{meterInfo.meterBelongType === 0}}"> <view wx:if="{{meterInfo.meterBelongType === 0}}">
@@ -43,7 +49,7 @@
</van-col> </van-col>
<van-col span="12"> <van-col span="12">
<view class="text"> <view class="text">
<view> <view class="titleText">
状态 状态
</view> </view>
<view wx:if="{{meterInfo.enabled}}"> <view wx:if="{{meterInfo.enabled}}">
@@ -56,7 +62,7 @@
</van-col> </van-col>
<van-col span="12"> <van-col span="12">
<view class="text"> <view class="text">
<view> <view class="titleText">
读数 读数
</view> </view>
<view> <view>

View File

@@ -30,4 +30,12 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-size: 30rpx; font-size: 30rpx;
}
.wrapper > .title {
font-size: 32rpx;
}
.titleText {
color: rgb(150, 137, 137);
} }

View File

@@ -12,7 +12,8 @@ Component({
properties: { properties: {
list: Array, list: Array,
active: Number, active: Number,
meterInfo: Object meterInfo: Object,
finishNumber: Number,
}, },
observers: { observers: {
"active,list": function(newActive, newList) { "active,list": function(newActive, newList) {

View File

@@ -2,7 +2,7 @@
<view class="wrapper"> <view class="wrapper">
<view class="title"> <view class="title">
<text> 电表列表 </text> <text> 电表列表 (总计{{list.length}}块,已抄{{finishNumber}}块) </text>
</view> </view>
<view style="display: flex; align-items: center;margin-top: 20rpx;"> <view style="display: flex; align-items: center;margin-top: 20rpx;">
<van-icon name="arrow-left" size="50rpx" bind:tap="scrollLeft" /> <van-icon name="arrow-left" size="50rpx" bind:tap="scrollLeft" />

View File

@@ -6,6 +6,7 @@
.title { .title {
margin-top: 20rpx; margin-top: 20rpx;
font-size: 32rpx;
} }
.meterListScrollView { .meterListScrollView {

View File

@@ -1,4 +1,8 @@
// pages/writeReading/components/photo/index.js // pages/writeReading/components/photo/index.js
import { uploadOcrFile } from "../../../../service/public"
import request from "../../../../utils/request"
import { alertError, alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index"
const { OK } = request;
Component({ Component({
/** /**
@@ -19,6 +23,28 @@ Component({
* 组件的方法列表 * 组件的方法列表
*/ */
methods: { methods: {
chooseImage() {
const that = this;
wx.chooseMedia({
count: 1,
mediaType: ['image'],
sourceType: ['album', 'camera'],
success: async function(res) {
// console.log(res.tempFiles[0].tempFilePath)
// console.log(res.tempFiles[0].size)
loadingFunc(async () => {
const { code, message, data } = await uploadOcrFile(res.tempFiles[0].tempFilePath)
if (code !== OK) {
alertError(message)
return
}
setTimeout(() => {
that.triggerEvent("finish", { number: data?.integer, success: data?.integer != null && data?.integer !== "" })
}, 100)
})
}
})
}
} }
}) })

View File

@@ -1,4 +1,6 @@
{ {
"component": true, "component": true,
"usingComponents": {} "usingComponents": {
"van-button": "@vant/weapp/button/index"
}
} }

View File

@@ -1,4 +1,8 @@
<!--pages/writeReading/components/photo/index.wxml--> <!--pages/writeReading/components/photo/index.wxml-->
<view class="wrapper"> <view class="wrapper">
拍照 <van-button
type="info"
size="small"
bind:tap="chooseImage"
> 拍照 </van-button>
</view> </view>

View File

@@ -1,7 +1,7 @@
// pages/writeReading/components/readingInfo/index.js // pages/writeReading/components/readingInfo/index.js
import { createReading } from "../../../../service/workBench" import { createReading, checkReadingFinish, changeMeterRouteStatus } from "../../../../service/workBench"
import { alertError, alertInfo, alertSuccess } from "../../../../utils/index" import { alertError, alertInfo, alertSuccess, wxModal } from "../../../../utils/index"
import request from "../../../../utils/request" import request from "../../../../utils/request"
const { OK } = request const { OK } = request
@@ -14,25 +14,32 @@ Component({
meterInfo: Object, meterInfo: Object,
showLeft: Boolean, showLeft: Boolean,
showRight: Boolean, showRight: Boolean,
routeId: String
},
observers: {
"routeId": function(newValue) {
if (!newValue) {
return;
}
this.checkFinish(newValue)
}
}, },
/** /**
* 组件的初始数据 * 组件的初始数据
*/ */
data: { data: {
currentNumber: null currentNumber: null
}, },
lifetimes: {
attached() {
}
},
/** /**
* 组件的方法列表 * 组件的方法列表
*/ */
methods: { methods: {
jumpToHistory() {
const { meterInfo } = this.data;
wx.navigateTo({
url: `/pages/readingHistory/index?meter=${meterInfo?.id}&park=${meterInfo?.park}`,
})
},
handlePrev() { handlePrev() {
this.triggerEvent("prev") this.triggerEvent("prev")
}, },
@@ -41,7 +48,8 @@ Component({
}, },
onChange(e) { onChange(e) {
this.setData({ this.setData({
currentNumber: e.detail ? Number(e.detail) : 0 currentNumber: e.detail,
calcNumber: isNaN(e.detail) ? 0 : Number(e.detail)
}) })
}, },
handleClear() { handleClear() {
@@ -49,6 +57,28 @@ Component({
currentNumber: null, currentNumber: null,
}) })
}, },
async changeEndStatus() {
const { routeId: id } = this.data;
const { code, message } = await changeMeterRouteStatus({ id, status: 0 })
if (code !== OK) {
alertError(message)
return
}
alertSuccess("操作成功")
wx.navigateBack()
},
onPhotoFinish(e) {
const { number, success } = e.detail;
if (success) {
this.setData({
currentNumber: `${Number(number)}`,
calcNumber: isNaN(number) ? 0 : Number(number)
})
alertSuccess("获取成功")
} else {
alertInfo("未能获取到")
}
},
async onSubmit() { async onSubmit() {
const { meterInfo, currentNumber } = this.data; const { meterInfo, currentNumber } = this.data;
const { parkId, id } = meterInfo; const { parkId, id } = meterInfo;
@@ -61,8 +91,40 @@ Component({
return return
} }
alertSuccess("录入成功") alertSuccess("录入成功")
this.handleNext() const that = this;
this.handleClear() setTimeout(async () => {
const isFinished = await that.checkFinish()
if (isFinished) {
wx.showModal({
title: '提示',
content: '所有电表都已抄完,是否返回?',
complete: async (res) => {
if (res.cancel) {
}
if (res.confirm) {
// await that.changeEndStatus()
wx.navigateBack()
}
}
})
} else {
that.handleNext()
that.handleClear()
}
}, 300)
},
async checkFinish(id) {
const { code, message, data, num } = await checkReadingFinish(id || this.data.routeId);
if (code !== OK) {
alertError(message)
return;
}
this.triggerEvent("finishNumber", num)
return data;
}, },
handleCreateReading() { handleCreateReading() {
const { meterInfo, currentNumber } = this.data; const { meterInfo, currentNumber } = this.data;
@@ -80,7 +142,7 @@ Component({
} }
if (res.confirm) { if (res.confirm) {
if (meterInfo.consumption < currentNumber) { if (meterInfo.consumption < currentNumber - meterInfo.overall) {
wx.showModal({ wx.showModal({
title: '提示', title: '提示',
content: '本次用电量已抄过历史平均水平的100%,是否确认录入?', content: '本次用电量已抄过历史平均水平的100%,是否确认录入?',

View File

@@ -1,24 +1,21 @@
<!--pages/writeReading/components/readingInfo/index.wxml--> <!--pages/writeReading/components/readingInfo/index.wxml-->
<view class="wrapper"> <view class="wrapper">
<view class="bodyTitle"> <!-- <view class="bodyTitle">
<view class="text"> <view class="text">
<!-- 电表数据记录器 -->
</view> </view>
<view class="time" bind:tap="jumpToHistory">
<!-- 2025年9月5日 --> </view> -->
历史记录
</view>
</view>
<view class="contentWrapper"> <view class="contentWrapper">
<view class="currentMeter"> <!-- <view class="currentMeter">
<view class="text"> <view class="text">
当前电表 当前电表
</view> </view>
<view class="address"> <view class="address">
{{meterInfo.address}} {{meterInfo.address}}
</view> </view>
</view> </view> -->
<view style="height: 10rpx;"></view>
<view class="change"> <view class="change">
<van-button wx:if="{{showLeft}}" type="info" size="small" bind:click="handlePrev"> <van-button wx:if="{{showLeft}}" type="info" size="small" bind:click="handlePrev">
<van-icon name="arrow-left" /> <van-icon name="arrow-left" />
@@ -31,7 +28,7 @@
</van-button> </van-button>
<view wx:else></view> <view wx:else></view>
</view> </view>
<van-divider /> <van-divider custom-style="margin: 20rpx 0;" />
<view class="readingNumber"> <view class="readingNumber">
<view class="lastNumber"> <view class="lastNumber">
<view class="title"> <view class="title">
@@ -52,36 +49,40 @@
</view> </view>
<view class="number"> <view class="number">
<van-field <view style="flex: 1;">
value="{{currentNumber}}" <van-field
placeholder="请输入本次读数" value="{{currentNumber}}"
bind:change="onChange" placeholder="请输入本次读数"
border="{{false}}" bind:change="onChange"
custom-style="border: 1rpx solid #ccc; padding: 2px 14rpx; font-size: 32rpx; border-radius: 10rpx;" border="{{false}}"
/> custom-style="border: 1rpx solid #ccc; padding: 2px 14rpx; font-size: 32rpx; border-radius: 10rpx;flex: 1;"
/>
</view>
<photo bind:finish="onPhotoFinish" />
</view> </view>
</view> </view>
<view class="photo"> <!-- <view class="photo">
<photo />
</view> </view> -->
</view> </view>
<view class="calc"> <view class="calc">
<view class="title"> <view class="title">
表字差 表字差
</view> </view>
<view class="rightNumber" wx:if="{{currentNumber - meterInfo.overall >= 0}}"> <view class="rightNumber" wx:if="{{calcNumber - meterInfo.overall >= 0}}">
{{(currentNumber || 0) - meterInfo.overall}} {{(calcNumber || 0) - meterInfo.overall}}
</view> </view>
<view class="wrongNumber" wx:else> <view class="wrongNumber" wx:else>
{{(currentNumber || 0) - meterInfo.overall}} {{(calcNumber || 0) - meterInfo.overall}}
</view> </view>
</view> </view>
<view class="operate"> <view class="operate">
<view style="flex: 1;"> <view style="flex: 1;">
<van-button size="small" type="info" block bind:click="handleCreateReading"> 确定录入 </van-button> <van-button type="info" block bind:click="handleCreateReading"> 确定录入 </van-button>
</view> </view>
<view style="flex: 1; margin-left: 20rpx;"> <view style="flex: 1; margin-left: 20rpx;">
<van-button size="small" block bind:click="handleClear"> 清除记录 </van-button> <van-button block bind:click="handleClear"> 清除记录 </van-button>
</view> </view>
</view> </view>
</view> </view>

View File

@@ -46,8 +46,8 @@
} }
.change { .change {
margin-top: 20rpx; margin-top: 10rpx;
margin-bottom: 20rpx; /* margin-bottom: 10rpx; */
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
@@ -65,6 +65,7 @@
font-size: 42rpx; font-size: 42rpx;
font-weight: 800; font-weight: 800;
margin-top: 12rpx; margin-top: 12rpx;
margin-bottom: 12rpx;
} }
.readingNumber .lastTime { .readingNumber .lastTime {
font-size: 32rpx; font-size: 32rpx;
@@ -72,7 +73,7 @@
.nextReadingNumber { .nextReadingNumber {
display: flex; display: flex;
align-items: bottom;
} }
.nextReadingNumber .title { .nextReadingNumber .title {
@@ -81,12 +82,19 @@
.nextReadingNumber .number { .nextReadingNumber .number {
margin-top: 12rpx; margin-top: 12rpx;
display: flex;
align-items: center;
flex: 1;
} }
.currentNumber { .currentNumber {
flex: 1; flex: 1;
} }
.currentNumber .title {
margin-bottom: 24rpx;
}
.calc { .calc {
margin-top: 24rpx; margin-top: 24rpx;
} }

View File

@@ -19,6 +19,7 @@ Page({
*/ */
onLoad(options) { onLoad(options) {
const { id } = options; const { id } = options;
this.getMeterList(id) this.getMeterList(id)
}, },
async getMeterList(id) { async getMeterList(id) {
@@ -29,7 +30,8 @@ Page({
} }
this.setData({ this.setData({
meterList: data?.meterRouteDetail || [], meterList: data?.meterRouteDetail || [],
meterInfo: data?.meterRouteDetail?.[0] || {} meterInfo: data?.meterRouteDetail?.[0] || {},
routeId: id
}) })
}, },
changeMeter(e) { changeMeter(e) {
@@ -46,7 +48,7 @@ Page({
handleNext() { handleNext() {
const { active = 0, meterList } = this.data; const { active = 0, meterList } = this.data;
let newIndex = active + 1 let newIndex = active + 1
if (active > meterList?.length - 1) { if (newIndex > meterList?.length - 1) {
newIndex = meterList?.length - 1 newIndex = meterList?.length - 1
} }
this.setData({ this.setData({
@@ -58,6 +60,11 @@ Page({
active: this.data.active === 0 ? 0 : this.data.active - 1 active: this.data.active === 0 ? 0 : this.data.active - 1
}) })
}, },
onSetFinishNumber(e) {
this.setData({
finishNumber: e.detail,
})
},
/** /**
* 生命周期函数--监听页面初次渲染完成 * 生命周期函数--监听页面初次渲染完成
*/ */

View File

@@ -6,6 +6,7 @@
bind:changeMeterAndIndex="changeMeterAndIndex" bind:changeMeterAndIndex="changeMeterAndIndex"
active="{{active}}" active="{{active}}"
meterInfo="{{meterInfo}}" meterInfo="{{meterInfo}}"
finishNumber="{{onSetFinishNumber}}"
/> />
<meter-info meterInfo="{{meterInfo}}" /> <meter-info meterInfo="{{meterInfo}}" />
<reading-info <reading-info
@@ -14,4 +15,6 @@
showRight="{{active < meterList.length - 1}}" showRight="{{active < meterList.length - 1}}"
bind:prev="handlePrev" bind:prev="handlePrev"
bind:next="handleNext" bind:next="handleNext"
routeId="{{routeId}}"
bind:finishNumber="onSetFinishNumber"
/> />

View File

@@ -26,7 +26,7 @@
{ {
"name": "pages/writeReading/index", "name": "pages/writeReading/index",
"pathName": "pages/writeReading/index", "pathName": "pages/writeReading/index",
"query": "id=PR00117566262804481", "query": "id=PR00118027286020097",
"launchMode": "default", "launchMode": "default",
"scene": null "scene": null
}, },

View File

@@ -22,6 +22,28 @@ export const uploadFile = (filePath) => {
}) })
} }
export const uploadOcrFile = (filePath) => {
const { api } = getConfigByEnv();
return new Promise((resolve, reject) => {
wx.uploadFile({
filePath: filePath,
name: 'data',
url: `${api}/image/to/meter/reading`,
header: {
authorization: 'Bearer ' + wx.getStorageSync("token")
},
success: (res) => {
console.log("res", res)
resolve(res?.data ? JSON.parse(res?.data) : res?.data);
},
fail: (err) => {
reject(err);
}
})
})
}
export const uploadPublicFile = (filePath) => { export const uploadPublicFile = (filePath) => {
const { api } = getConfigByEnv(); const { api } = getConfigByEnv();
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {

View File

@@ -24,4 +24,24 @@ export const getMeterReadingRouteMeterDetail = async function(id) {
// 新建一条抄表记录 // 新建一条抄表记录
export const createReading = async function(park, code, data) { export const createReading = async function(park, code, data) {
return await POST(`/reading/${park}/${code}`, data); return await POST(`/reading/${park}/${code}`, data);
}
// 查询符合指定条件的抄表记录
export const getReadingList = async function(park, keyword, page) {
return await GET(`/reading/${park}?keyword=${keyword}&page=${page}`,);
}
// 删除抄表记录
export const deleteReading = async function(id, overall) {
return await DELETE(`/meter/delete/records/${id}`, { overall });
}
// 修改抄表记录
export const updateReading = async function(park, code, read_at, data) {
return await PUT(`/reading/${park}/${code}/${read_at}`, data);
}
// 检查是否抄表完全
export const checkReadingFinish = async function(id) {
return await GET(`/park/meter/${id}/route/status`,);
} }