修改解绑表的时候读数问题,抄表路线的抄表记录可以查看图片

This commit is contained in:
2025-10-28 14:25:59 +08:00
parent 2535720023
commit fe590353df
16 changed files with 197 additions and 29 deletions

View File

@@ -18,9 +18,10 @@ Component({
show: Boolean,
park: String,
isBack: Boolean,
filterBind: Boolean,
},
observers: {
"show,type": function(newShow, newType) {
"show,type,filterBind": function(newShow, newType) {
if (newShow && newType) {
this.onSearch()
}
@@ -96,7 +97,7 @@ Component({
this.triggerEvent("confirm", { data: item, way: index, type } );
},
onSearch() {
const { type } = this.data;
const { type, bind, filterBind } = this.data;
switch(type) {
case "park":
this.onSearchPark();
@@ -125,8 +126,8 @@ Component({
})
},
async onSearchMeter() {
const { searchText = "", park } = this.data;
const { code, message, data: parks = [] } = await getParkSimpleMeterList({keyword: searchText, park});
const { searchText = "", park, filterBind } = this.data;
const { code, message, data: parks = [] } = await getParkSimpleMeterList({keyword: searchText, park, isNeedBind: !filterBind});
if (code !== OK) {
alertInfo(message)
return

View File

@@ -0,0 +1,30 @@
// pages/readingHistory/components/detailModal/index.js
Component({
/**
* 组件的属性列表
*/
properties: {
visible: Boolean,
detail: Object,
},
/**
* 组件的初始数据
*/
data: {
},
/**
* 组件的方法列表
*/
methods: {
showImage() {
this.setData({ show: true })
},
onClose() {
this.setData({ show: false })
}
}
})

View File

@@ -0,0 +1,9 @@
{
"component": true,
"usingComponents": {
"van-dialog": "@vant/weapp/dialog/index",
"van-field": "@vant/weapp/field/index",
"van-image": "@vant/weapp/image/index",
"van-popup": "@vant/weapp/popup/index"
}
}

View File

@@ -0,0 +1,64 @@
<!--pages/readingHistory/components/detailModal/index.wxml-->
<van-dialog
use-slot
title="详情"
show="{{ visible }}"
confirmButtonText="关闭"
bind:close="onClose"
>
<view class="modalContentWrapper">
<van-field
value="{{ detail.readAt }}"
label="时间"
readonly
border="{{ false }}"
use-button-slot
title-width="100rpx"
>
</van-field>
<van-field
value="{{ detail.overall }}"
placeholder="请输入读数"
label="读数"
readonly
type="digit"
border="{{ false }}"
title-width="100rpx"
>
</van-field>
<van-field
wx:if="{{!!detail.url}}"
value="{{ detail.overall }}"
label="图片"
readonly
border="{{ false }}"
title-width="100rpx"
use-button-slot
>
<view slot="input">
<van-image
width="100"
height="100"
fit="contain"
src="{{detail.url}}"
bind:click="showImage"
/>
</view>
</van-field>
</view>
</van-dialog>
<van-popup
show="{{ show }}"
bind:close="onClose"
z-index="99999"
>
<van-image
width="100vw"
height="99.1vh"
fit="contain"
src="{{detail.url}}"
bind:click="onClose"
/>
</van-popup>

View File

@@ -0,0 +1 @@
/* pages/readingHistory/components/detailModal/index.wxss */

View File

@@ -104,6 +104,13 @@ Page({
type: "edit",
})
},
handleDetail(e) {
const { data } = e.currentTarget.dataset;
this.setData({
detail: data,
detailVisible: true
})
},
handleDelete(e) {
const { data } = e.currentTarget.dataset;
const that = this;

View File

@@ -6,7 +6,8 @@
"van-icon": "@vant/weapp/icon/index",
"editModal": "./components/editModal/index",
"pagination": "/components/pagination/index",
"empty": "/components/empty/index"
"empty": "/components/empty/index",
"detailModal": "./components/detailModal/index"
},
"navigationStyle": "custom"
}

View File

@@ -14,8 +14,8 @@
<view class="table">
<view class="thead">
<view class="th" style="width: 40%; text-align: center;"> 抄表时间 </view>
<view class="th" style="width: 35%; text-align: center;"> 抄表读数 </view>
<view class="th" style="width: 25%; text-align: center;"> 操作 </view>
<view class="th" style="width: 30%; text-align: center;"> 抄表读数 </view>
<view class="th" style="width: 30%; text-align: center;"> 操作 </view>
</view>
<view class="tbody">
<view wx:for="{{list}}" wx:for-index="itemIndex" wx:key="item">
@@ -23,13 +23,14 @@
<view class="th" style="width: 40%; text-align: center; font-size: 30rpx;">
{{ item.readAt }}
</view>
<view class="th" style="width: 35%; text-align: center; font-size: 30rpx;">
<view class="th" style="width: 30%; text-align: center; font-size: 30rpx;">
{{ item.overall }}
</view>
<view class="th" style="width: 25%; text-align: center; justify-content: center; display: flex; align-items: center;">
<view class="th" style="width: 30%; text-align: center; justify-content: center; display: flex; align-items: center;">
<van-icon wx:if="{{item.isDelete && disabled !== 'true'}}" name="edit" size="40rpx" bind:tap="handleUpdate" data-data="{{item}}" color="#15755e" />
<van-icon wx:if="{{item.isDelete && disabled !== 'true'}}" name="delete" size="40rpx" bind:tap="handleDelete" data-data="{{item}}" color="#15755e" custom-style="margin-left: 20rpx" />
<van-icon name="ellipsis" size="40rpx" data-data="{{item}}" color="#15755e" bind:tap="handleDetail" custom-style="margin-left: 20rpx" />
</view>
</view>
</view>
@@ -58,4 +59,9 @@
bind:ok="onEditFinish"
startTime="{{startTime}}"
routeId="{{routeId}}"
/>
<detailModal
visible="{{detailVisible}}"
detail="{{detail}}"
/>

View File

@@ -1,5 +1,5 @@
// pages/workBenchNew/components/workBenchReading/index.js
import { getMeterReadingRouteList, changeMeterRouteStatus } from "../../../../service/workBench"
import { getMeterReadingRouteList, changeMeterRouteStatus, checkReadingFinish } from "../../../../service/workBench"
import { alertError, alertSuccess, loadingFunc } from "../../../../utils/index"
import request from "../../../../utils/request"
const { OK } = request
@@ -72,6 +72,10 @@ Page({
that.jumpToReading({ currentTarget: { dataset: { id } } })
}, 500)
},
// async checkFinish(id) {
// return {data, num};
// },
async changeEndStatus(e) {
const that = this;
wx.showModal({
@@ -83,10 +87,38 @@ Page({
}
if (res.confirm) {
const { id, routeid: routeId } = e.currentTarget.dataset;
const { code, message } = await changeMeterRouteStatus({ id, status: 0, routeId })
const { id, routeid: routeId } = e.currentTarget.dataset;
const { code, message, data, num } = await checkReadingFinish(id || this.data.routeId);
if (code !== OK) {
alertError(message)
return;
}
console.log("data", data, "num", num)
if (!data) {
wx.showModal({
title: '提示',
content: `该路线还有${num}块电表还没有抄完,是否确认结束结束抄表?`,
complete: async (res) => {
if (res.cancel) {
}
if (res.confirm) {
const { code: cd, message } = await changeMeterRouteStatus({ id, status: 0, routeId })
if (cd !== OK) {
alertError(message)
return
}
alertSuccess("操作成功")
that.init()
}
}
})
return
}
const { code: c, message: m } = await changeMeterRouteStatus({ id, status: 0, routeId })
if (c !== OK) {
alertError(m)
return
}
alertSuccess("操作成功")

View File

@@ -106,11 +106,11 @@ Component({
return;
}
this.setData({
overall: Number(data?.overall || 0),
critical: Number(data?.sharp || 0),
peak: Number(data?.peak || 0),
flat: Number(data?.flat || 0),
valley: Number(data?.valley || 0),
overall: data?.overall ? Number(data?.overall || 0) : null,
critical: data?.overall ? Number(data?.sharp || 0) : null,
peak: data?.overall ? Number(data?.peak || 0) : null,
flat: data?.overall ? Number(data?.flat || 0) : null,
valley: data?.overall ? Number(data?.valley || 0) : null,
meter04kvType: data?.meter04kvType,
status: data?.breakType ? '合闸' : "分闸",
})

View File

@@ -112,6 +112,7 @@
park="{{park}}"
bindconfirm="onConfirm"
bindcancel="onCancel"
filterBind="{{true}}"
/>
<date-time-picker

View File

@@ -55,11 +55,11 @@ Component({
return;
}
this.setData({
overall: Number(data?.overall || 0),
critical: Number(data?.sharp || 0),
peak: Number(data?.peak || 0),
flat: Number(data?.flat || 0),
valley: Number(data?.valley || 0),
overall: data?.overall ? Number(data?.overall || 0) : null,
critical: data?.overall ? Number(data?.sharp || 0) : null,
peak: data?.overall ? Number(data?.peak || 0) : null,
flat: data?.overall ? Number(data?.flat || 0) : null,
valley: data?.overall ? Number(data?.valley || 0) : null,
meter04kvType: data?.meter04kvType,
status: data?.breakType ? '合闸' : "分闸"
})

View File

@@ -43,13 +43,13 @@ Component({
}
var tempFilePaths = res.tempFilePath;
loadingFunc(async () => {
const { code, message, data } = await uploadOcrFile(tempFilePaths)
const { code, message, data, url } = await uploadOcrFile(tempFilePaths)
if (code !== OK) {
alertError(message)
return
}
setTimeout(() => {
that.triggerEvent("finish", { number: data?.integer + "." + data?.decimal || 0, success: data?.integer != null && data?.integer !== "" })
that.triggerEvent("finish", { number: data?.integer + "." + data?.decimal || 0, success: data?.integer != null && data?.integer !== "", url })
}, 100)
})

View File

@@ -72,13 +72,14 @@ Component({
wx.navigateBack()
},
onPhotoFinish(e) {
const { number, success } = e.detail;
const { number, success, url } = e.detail;
const { meterInfo } = this.data;
if (success) {
this.setData({
currentNumber: `${Number(number)}`,
calcNumber: isNaN(Number(number)) ? 0 : Number(number),
diff: isNaN(Number(number)) ? "-" : (Number(number || 0) - Number(meterInfo.overall)).toFixed(2)
diff: isNaN(Number(number)) ? "-" : (Number(number || 0) - Number(meterInfo.overall)).toFixed(2),
url,
})
alertSuccess("获取成功")
} else {
@@ -86,13 +87,14 @@ Component({
}
},
async onSubmit() {
const { meterInfo, currentNumber, routeId } = this.data;
const { meterInfo, currentNumber, routeId, url } = this.data;
const { parkId, id } = meterInfo;
const { code, message } = await createReading(parkId, id, routeId, {
overall: `${currentNumber}`,
flat: `${currentNumber}`,
readAt: dayjs().format("YYYY-MM-DD HH:mm:ss"),
source: 1,
url
})
if (code !== OK) {
alertError(message)

View File

@@ -23,6 +23,20 @@
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/readingHistory/index",
"pathName": "pages/readingHistory/index",
"query": "meter=METER00114674412879874&park=P00114672412196865&routeId=PR00121172392214529&disabled=false",
"launchMode": "default",
"scene": null
},
{
"name": "pages/workBenchNew/components/workBenchTenement/index",
"pathName": "pages/workBenchNew/components/workBenchTenement/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/workBenchNew/components/workBenchReading/index",
"pathName": "pages/workBenchNew/components/workBenchReading/index",

View File

@@ -23,8 +23,8 @@ export const getParkMeterList = async function({park = "", keyword = "", page =
}
// 获取某一园区下的简洁电表列表
export const getParkSimpleMeterList = async function({park = "", keyword = "", page = 1}) {
return await GET(`/work/getWorkMeter?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}`);
export const getParkSimpleMeterList = async function({park = "", keyword = "", page = 1, isNeedBind}) {
return await GET(`/work/getWorkMeter?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}&isNeedBind=${isNeedBind}`);
}