diff --git a/app.json b/app.json
index 78684f3..09a5502 100644
--- a/app.json
+++ b/app.json
@@ -23,6 +23,7 @@
"pages/encyclopedia/index",
"pages/encyclopediaDetail/index",
"pages/workBench/index",
+ "pages/workBenchNew/index",
"pages/webPage/index",
"pages/aid/finance/index",
"pages/aid/law/index",
@@ -36,7 +37,19 @@
"pages/meterList/index",
"pages/workBench/components/tenement/components/createTenement/index",
"pages/billMeterDetail/index",
- "pages/meterBalanceRecord/index"
+ "pages/meterBalanceRecord/index",
+ "pages/workBenchNew/components/workBenchMeter/index",
+ "pages/workBenchNew/components/workBenchMeterControl/index",
+ "pages/workBenchNew/components/workBenchTenement/index",
+ "pages/workBenchNew/components/workBenchApprove/index",
+ "pages/workBenchNew/components/workBenchWxUser/index",
+ "pages/workBenchNew/components/workBenchReading/index",
+ "pages/workBenchNew/components/recharge/index",
+ "pages/workBenchNew/components/installMeter/index",
+ "pages/workBenchNew/components/uninstallMeter/index",
+ "pages/workBenchTodoList/index",
+ "pages/workBenchNew/components/kaihu/index",
+ "pages/workOrderDetail/index"
],
"subPackages": [
{
diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml
index 443e46a..f69d1a3 100644
--- a/childPackage/pages/billDetail/index.wxml
+++ b/childPackage/pages/billDetail/index.wxml
@@ -129,6 +129,7 @@
峰: {{ detail.comprehensive.peakAmount }}
平: {{ detail.comprehensive.flatAmount }}
谷: {{ detail.comprehensive.valleyAmount }}
+ 深谷: {{ detail.comprehensive.deepValleyAmount }}
@@ -141,6 +142,7 @@
峰: {{ detail.comprehensive.pricePeak }}
平: {{ detail.comprehensive.priceFlat }}
谷: {{ detail.comprehensive.priceValley }}
+ 深谷: {{ detail.comprehensive.priceDeepValley }}
diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml
index 7aff417..01ca838 100644
--- a/childPackage/pages/electricQuery/components/reading/index.wxml
+++ b/childPackage/pages/electricQuery/components/reading/index.wxml
@@ -136,6 +136,13 @@
readonly
wx:if="{{park.meter04kvType === 1|| park.meter04kvType === 2}}"
/>
+
+
上次抄表记录起,至现在时间内的用电量
diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js
index 2e15552..9ae7766 100644
--- a/childPackage/pages/electricQuery/index.js
+++ b/childPackage/pages/electricQuery/index.js
@@ -41,6 +41,7 @@ Page({
{ key: 'peak', title: '峰' },
{ key: 'flat', title: '平' },
{ key: 'valley', title: '谷' },
+ { key: 'deepValley', title: '深谷' },
],
list: [],
visible: false,
@@ -171,7 +172,7 @@ Page({
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 Number(exist.critical || 0)+ Number(exist.peak || 0)+Number(exist.flat || 0)+Number(exist.valley || 0)+Number(exist.deepValley || 0);
}
return null
})
diff --git a/components/DateTimePicker/index.js b/components/DateTimePicker/index.js
index da3090c..e0d3960 100644
--- a/components/DateTimePicker/index.js
+++ b/components/DateTimePicker/index.js
@@ -8,8 +8,18 @@ Component({
*/
properties: {
show: Boolean,
+ // time: String,
},
-
+ // observers: {
+ // time: function(newValue) {
+ // if (!newValue) {
+ // return;
+ // }
+ // this.setData({
+ // currentDate: new Date(newValue).getTime(),
+ // })
+ // }
+ // },
/**
* 组件的初始数据
*/
@@ -20,7 +30,10 @@ Component({
},
lifetimes: {
attached() {
-
+ this.setData({
+ maxDate: new Date().getTime(),
+ currentDate: new Date().getTime(),
+ })
}
},
/**
diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js
index c75c854..14279c1 100644
--- a/components/searchSelect/index.js
+++ b/components/searchSelect/index.js
@@ -1,8 +1,15 @@
import { getLoginParkList, getParkBuildingList } from "../../service/park"
-import { getParkSimpleMeterList } from "../../service/meter"
+import {
+ getParkSimpleMeterList, getParkBoxList,
+ getCardList, getCollectionList,
+ getInventoryMeter, getCollectorList,
+ getWorkOrderAllMeter,
+} from "../../service/meter"
import { alertInfo } from "../../utils/index";
import request from "../../utils/request"
-import { payWays, feeType } from "../../utils/data";
+import { payWays, feeType, meterType, noticeFlowType, noticeFlowStatus,
+ meterMode
+} from "../../utils/data";
import { getTenementList, getWxTenementList } from "../../service/tenement";
const { OK } = request;
@@ -17,10 +24,14 @@ Component({
type: String,
show: Boolean,
park: String,
+ building: String,
isBack: Boolean,
+ filterBind: Boolean,
+ filterData: Array,
+ filterType: String
},
observers: {
- "show,type": function(newShow, newType) {
+ "show,type,filterBind": function(newShow, newType) {
if (newShow && newType) {
this.onSearch()
}
@@ -34,6 +45,10 @@ Component({
searchText: "",
payWays,
feeType,
+ meterType,
+ noticeFlowType,
+ noticeFlowStatus,
+ meterMode,
},
lifetimes: {
attached() {
@@ -71,7 +86,18 @@ Component({
list: [],
searchText: ""
})
- this.triggerEvent("confirm", { data: item, type } );
+ this.triggerEvent("confirm", { data: item, type, index } );
+ },
+ onMeterModeConfirm(event) {
+ const { index } = event.detail;
+ const { meterMode = [], type } = this.data;
+ const item = meterMode[index];
+ this.setData({
+ columns: [],
+ list: [],
+ searchText: ""
+ })
+ this.triggerEvent("confirm", { data: item, way: index, type } );
},
onPayConfirm(event) {
const { index } = event.detail;
@@ -84,6 +110,28 @@ Component({
})
this.triggerEvent("confirm", { data: item, way: index, type } );
},
+ onNoticeFlowTypeConfirm(event) {
+ const { index } = event.detail;
+ const { noticeFlowType = [], type } = this.data;
+ const item = noticeFlowType[index];
+ this.setData({
+ columns: [],
+ list: [],
+ searchText: ""
+ })
+ this.triggerEvent("confirm", { data: item, way: index + 1, type } );
+ },
+ onNoticeFlowStatusConfirm(event) {
+ const { index } = event.detail;
+ const { noticeFlowStatus = [], type } = this.data;
+ const item = noticeFlowStatus[index];
+ this.setData({
+ columns: [],
+ list: [],
+ searchText: ""
+ })
+ this.triggerEvent("confirm", { data: item, way: index + 1, type } );
+ },
onFeeTypeConfirm(event) {
const { index } = event.detail;
const { feeType = [], type } = this.data;
@@ -95,8 +143,19 @@ Component({
})
this.triggerEvent("confirm", { data: item, way: index, type } );
},
+ onMeterTypeConfirm(event) {
+ const { index } = event.detail;
+ const { meterType = [], type } = this.data;
+ const item = meterType[index];
+ this.setData({
+ columns: [],
+ list: [],
+ searchText: ""
+ })
+ 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();
@@ -104,14 +163,56 @@ Component({
case "meter":
this.onSearchMeter();
return
+ case "inventoryMeter":
+ this.onSearchInventoryMeter();
+ return
case "tenement":
this.onSearchTenement();
return;
case "building":
this.onSearchBuilding();
return;
+ case "meterBox":
+ this.onSearchMeterBox();
+ return;
+ case "card":
+ this.onSearchCard();
+ return;
+ case "collection":
+ this.onSearchCollection();
+ return;
+ case "collector":
+ this.onSearchCollector();
+ break;
+ case "workOrderMeter":
+ this.onSearchWorkOrderMeter();
+ break;
}
},
+ async onSearchCollector() {
+ const { searchText = "", } = this.data;
+ const { code, message, data = [] } = await getCollectorList(searchText);
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ this.setData({
+ columns: data?.map(item => `${item.collectorAddress}-${item.manufacturer}`),
+ list: data,
+ })
+ },
+ async onSearchWorkOrderMeter() {
+ const { searchText = "", park } = this.data;
+ const { code, message, data = [] } = await getWorkOrderAllMeter({keyword: searchText, park: park, page: 1, size: 20});
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ this.setData({
+ columns: data?.map(item => `${item.address}-${item.meter_no}`),
+ list: data,
+ })
+ },
async onSearchPark() {
const { searchText = "" } = this.data;
const { code, message, data: parks = [] } = await getLoginParkList({keyword: searchText});
@@ -124,9 +225,27 @@ Component({
list: parks,
})
},
+ async onSearchCollection() {
+ const { searchText = "", filterData, filterType } = this.data;
+ const { code, message, data: parks = [] } = await getCollectionList({keyword: searchText, page: 1, status: 1});
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ let columns = parks;
+ if (filterType === 'collection') {
+ columns = columns.filter(item => {
+ return !filterData.includes(item.id)
+ })
+ }
+ this.setData({
+ columns: columns?.map(item => `${item.transformerId}-倍率:${item.ratio}-${item.manufacturer}`),
+ list: columns,
+ })
+ },
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
@@ -136,6 +255,18 @@ Component({
list: parks || [],
})
},
+ async onSearchInventoryMeter() {
+ const { searchText = "", park, filterBind } = this.data;
+ const { code, message, data: parks = [] } = await getInventoryMeter({keyword: searchText, park, isNeedBind: !filterBind, status: 1});
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ this.setData({
+ columns: parks?.map(item => `${item.sn}`) || [],
+ list: parks || [],
+ })
+ },
async onSearchTenement() {
const { searchText = "", park, isBack } = this.data;
const { code, message, data = [] } = isBack ? await getWxTenementList({keyword: searchText, park}) : await getTenementList({keyword: searchText, park});
@@ -160,6 +291,30 @@ Component({
list: data,
})
},
+ async onSearchMeterBox() {
+ const { park, building } = this.data;
+ const { code, message, data = [] } = await getParkBoxList({park, building});
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ this.setData({
+ columns: data?.length ? data?.map(item => item?.address) : [],
+ list: data,
+ })
+ },
+ async onSearchCard() {
+ const { park } = this.data;
+ const { code, message, data = [] } = await getCardList({park});
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ this.setData({
+ columns: data?.length ? data?.map(item => item?.sim_number) : [],
+ list: data,
+ })
+ }
}
})
diff --git a/components/searchSelect/index.wxml b/components/searchSelect/index.wxml
index 6f4c8bc..bfef00f 100644
--- a/components/searchSelect/index.wxml
+++ b/components/searchSelect/index.wxml
@@ -26,6 +26,46 @@
bind:confirm="onFeeTypeConfirm"
/>
+
+
+
+
+
+
+
+
+
+
+
+
- {{ label }}
-
+ *{{ label }}
+
{{placeholder}}
{{text}}
+
- {{ label }}
-
+ *{{ label }}
+
搜索
- {{ label }}
-
+ *{{ label }}
+
+
+
+
+ *{{ label }}
+
+
+
\ No newline at end of file
diff --git a/components/searchSelectWrapper/index.wxss b/components/searchSelectWrapper/index.wxss
index cd7bdc4..eafae3e 100644
--- a/components/searchSelectWrapper/index.wxss
+++ b/components/searchSelectWrapper/index.wxss
@@ -8,24 +8,26 @@
.content {
flex: 1;
- margin-left: 30rpx;
+ margin-left: 20rpx;
margin-right: 30rpx;
display: flex;
padding: 10rpx 20rpx;
border-radius: 12rpx;
border: 1rpx solid #ccc;
background-color: #fff;
+ position: relative;
}
.inputContent {
flex: 1;
- margin-left: 30rpx;
+ margin-left: 20rpx;
margin-right: 30rpx;
display: flex;
padding: 0 20rpx;
border-radius: 12rpx;
border: 1rpx solid #ccc;
background-color: #fff;
+ position: relative;
}
.text {
@@ -33,5 +35,11 @@
}
.label {
- width: 120rpx;
-}
\ No newline at end of file
+ width: 130rpx;
+}
+
+.required {
+ color: rgb(209, 83, 25);
+ font-size: 30rpx;
+}
+
diff --git a/pages/billMeterDetail/index.js b/pages/billMeterDetail/index.js
index a768265..6fd67ec 100644
--- a/pages/billMeterDetail/index.js
+++ b/pages/billMeterDetail/index.js
@@ -13,6 +13,7 @@ Page({
{ title: '峰',renderBody: (item) => { return item?.peak } },
{ title: '平',renderBody: (item) => { return item?.flat } },
{ title: '谷',renderBody: (item) => { return item?.valley } },
+ { title: '深谷',renderBody: (item) => { return item?.deepValley } },
],
list: []
},
@@ -25,13 +26,13 @@ Page({
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) },
+ { type: "起码", sharp: data.startSharp, peak: data.startPeak, flat: data.startFlat, valley: data.startValley, deepValley: data.startDeepValley },
+ { type: "止码", sharp: data.endSharp, peak: data.endPeak, flat: data.endFlat, valley: data.endValley, deepValley: data.endDeepValley },
+ { type: "退补电量", sharp: data.refundSharp, peak: data.refundPeak, flat: data.refundFlat, valley: data.refundValley, deepValley: data.refundDeepValley },
+ { type: "从表电量", sharp: getRoundNumber(data.nestSharp), peak: getRoundNumber(data.nestPeak), flat: getRoundNumber(data.nestFlat), valley: getRoundNumber(data.nestValley), deepValley: getRoundNumber(data.nestDeepValley) },
+ { type: "电度电量", sharp: getRoundNumber(data?.critical?.amount), peak: getRoundNumber(data.peak?.amount), flat: getRoundNumber(data.flat?.amount), valley: getRoundNumber(data.valley?.amount), deepValley: getRoundNumber(data?.deepValley?.amount) },
+ { type: "分时单价", sharp: data.critical?.price, peak: data.peak?.price, flat: data.flat?.price, valley: data.valley?.price , valley: data.valley?.price, deepValley: data.deepValley?.price},
+ { type: "电费", sharp: getRoundNumber(data.chargeSharp), peak: getRoundNumber(data.chargePeak), flat: getRoundNumber(data.chargeFlat), valley: getRoundNumber(data.chargeValley), deepValley: getRoundNumber(data.chargeDeepValley) },
]
})
},
diff --git a/pages/home/index.js b/pages/home/index.js
index cbea2c1..bcf3e81 100644
--- a/pages/home/index.js
+++ b/pages/home/index.js
@@ -1,6 +1,8 @@
// pages/home/index.js
import { getMeterDetail, getMeterList, getTenementMeterList } from "../../service/meter";
-import { getOwnTenementList, getTenementExceptionalCase } from "../../service/tenement";
+import { getOwnTenementList, getTenementExceptionalCase ,
+ getTenementBackInfo, getTenementDetail, getTenementInfoDetail,
+} from "../../service/tenement";
import { alertInfo, alertSuccess } from "../../utils/index";
import request from '../../utils/request';
import { getDot } from "../../utils/system";
@@ -159,6 +161,19 @@ Page({
alertInfo("账号存在异常,无法进行充值,请联系客服处理")
return;
}
+ const {
+ code: tenementDetailCode,
+ message: tenementDetailMessage,
+ tenement: tenementDetail,
+ } = await getTenementBackInfo(park?.id, tenement?.id)
+ if (tenementDetailCode !== OK) {
+ alertInfo(tenementDetailMessage)
+ return
+ }
+ if (tenementDetail?.stop_top) {
+ alertInfo("您暂不可使用此功能,可联系客服处理。")
+ return;
+ }
const that = this;
if (!user || !user.id) {
alertInfo("请先登录")
diff --git a/pages/invoiceDetail/index.js b/pages/invoiceDetail/index.js
index 8414c5c..0a71aa9 100644
--- a/pages/invoiceDetail/index.js
+++ b/pages/invoiceDetail/index.js
@@ -87,7 +87,6 @@ Page({
},
fail: function (e) {
// alertError("打开失败")
- // console.log('打开失败错误为', e)
wx.showModal({
title: '提示',
content: '打开失败,请复制链接后通过浏览器打开',
diff --git a/pages/invoiceList/components/notyet/index.js b/pages/invoiceList/components/notyet/index.js
index aa9fe41..6c10e41 100644
--- a/pages/invoiceList/components/notyet/index.js
+++ b/pages/invoiceList/components/notyet/index.js
@@ -1,5 +1,6 @@
// pages/invoiceList/components/notyet/index.js
import { getInvoiceList } from '../../../../service/invoice';
+import { getTenementBackInfo } from '../../../../service/tenement';
import { alertInfo, loadingFunc } from '../../../../utils/index';
import request from '../../../../utils/request';
const { OK } = request;
@@ -69,7 +70,18 @@ Component({
selectMoney: Number(selectMoney.toFixed(2))
})
},
- next() {
+ async next() {
+ const park = wx.getStorageSync("park")
+ const tenement = wx.getStorageSync("tenement")
+ const { code: detailCode, message: detailMessage, tenement: Detail } = await getTenementBackInfo(park?.id, tenement?.id)
+ if (detailCode !== OK) {
+ alertInfo(detailMessage)
+ return;
+ }
+ if (Detail?.stop_invoice) {
+ alertInfo("您暂不可使用此功能,可联系客服处理。")
+ return
+ }
const { selectList, list, selectMoney, selectCount } = this.data;
let tenementID = "";
let tenementName = "";
diff --git a/pages/login/index.js b/pages/login/index.js
index 13b8484..5e6b8c5 100644
--- a/pages/login/index.js
+++ b/pages/login/index.js
@@ -58,6 +58,12 @@ Page({
const { token, ...user } = data
wx.setStorageSync('user', user)
wx.setStorageSync('token', data?.token)
+ if (user.workStatus) {
+ wx.redirectTo({
+ url: '/pages/workBenchNew/index',
+ })
+ return
+ }
wx.switchTab({
url: '/pages/home/index',
})
diff --git a/pages/meterBalanceRecord/index.wxml b/pages/meterBalanceRecord/index.wxml
index e22637d..81e16b7 100644
--- a/pages/meterBalanceRecord/index.wxml
+++ b/pages/meterBalanceRecord/index.wxml
@@ -11,46 +11,6 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/readingHistory/components/detailModal/index.wxss b/pages/readingHistory/components/detailModal/index.wxss
new file mode 100644
index 0000000..4da0fd5
--- /dev/null
+++ b/pages/readingHistory/components/detailModal/index.wxss
@@ -0,0 +1 @@
+/* pages/readingHistory/components/detailModal/index.wxss */
\ No newline at end of file
diff --git a/pages/readingHistory/components/editModal/index.js b/pages/readingHistory/components/editModal/index.js
index f066012..4511a8b 100644
--- a/pages/readingHistory/components/editModal/index.js
+++ b/pages/readingHistory/components/editModal/index.js
@@ -1,8 +1,8 @@
// pages/workBench/components/tenement/components/bindMeter/index.js
// 0015980101
-import { bindMeter, } from "../../../../service/tenement"
+import { createReading, updateReading } from "../../../../service/workBench"
import { getWorkMeterDetail } from "../../../../service/meter"
-import { alertInfo, alertSuccess } from "../../../../utils/index";
+import { alertInfo, alertSuccess, alertError } from "../../../../utils/index";
import request from "../../../../utils/request"
import dayjs from "../../../../utils/dayjs"
const { OK } = request
@@ -16,12 +16,16 @@ Component({
title: String,
timeProps: String,
numberProps: String,
- id: String
+ idProps: String,
+ meter: String,
+ park: String,
+ routeId: String,
},
observers: {
"timeProps": function(newValue) {
this.setData({
- time: newValue
+ time: newValue,
+ // startTime: newValue
})
},
"numberProps": function(newValue) {
@@ -63,12 +67,40 @@ Component({
})
},
async onSubmit() {
- const { time, number } = this.data;
+ const { time, number, idProps, park, meter, timeProps, routeId } = this.data;
if (time == null || number == null) {
alertInfo("请正确填写后保存")
return;
}
- this.triggerEvent("ok")
+ if (!idProps) {
+ const { code, message } = await createReading(park, meter, routeId, {
+ overall: `${number}`,
+ flat: `${number}`,
+ readAt: time,
+ source: 1,
+ })
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ alertSuccess("录入成功")
+ this.setData({ number: null, time: null, startTime: null })
+ } else {
+ 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) {
diff --git a/pages/readingHistory/components/editModal/index.wxml b/pages/readingHistory/components/editModal/index.wxml
index 12356ca..ba9fcf0 100644
--- a/pages/readingHistory/components/editModal/index.wxml
+++ b/pages/readingHistory/components/editModal/index.wxml
@@ -17,14 +17,16 @@
use-button-slot
title-width="100rpx"
>
-
+
diff --git a/pages/readingHistory/components/meterInfo/index.wxss b/pages/readingHistory/components/meterInfo/index.wxss
index c257812..b7f616d 100644
--- a/pages/readingHistory/components/meterInfo/index.wxss
+++ b/pages/readingHistory/components/meterInfo/index.wxss
@@ -19,4 +19,8 @@
justify-content: space-between;
font-size: 30rpx;
margin-bottom: 20rpx;
+}
+
+.status {
+ font-size: 30rpx;
}
\ No newline at end of file
diff --git a/pages/readingHistory/index.js b/pages/readingHistory/index.js
index 792222d..69586c7 100644
--- a/pages/readingHistory/index.js
+++ b/pages/readingHistory/index.js
@@ -1,28 +1,54 @@
// pages/readingHistory/index.js
-import { getMeterReadingRouteMeterDetail } from "../../service/workBench"
+import { getMeterReadingRouteMeterDetail, getReadingList, deleteReading } from "../../service/workBench"
import request from "../../utils/request"
-import { alertInfo, alertSuccess, alertError } from "../../utils/index"
+import { alertInfo, alertSuccess, alertError, loadingFunc } from "../../utils/index"
const { OK } = request;
+import dayjs from "../../utils/dayjs"
Page({
/**
* 页面的初始数据
*/
data: {
- list: [{time: "2025-05-05 14:10:09", number: 90803.87}]
+ list: [],
+ page: 1,
+ size: 20,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
- const { meter, park } = options;
+ const { meter, park, routeId, disabled } = options;
+ const that = this;
this.setData({
meter,
- park
+ park,
+ routeId,
+ disabled
+ }, () => {
+ that.refresh();
})
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) {
const { code, message, data } = await getMeterReadingRouteMeterDetail(id)
if (code !== OK) {
@@ -31,6 +57,27 @@ Page({
}
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 +87,51 @@ Page({
handleCreate() {
this.setData({
title: "新增记录",
- visible: true
+ visible: true,
+ type: "create",
+ time: dayjs().format("YYYY-MM-DD HH:mm:ss")
})
},
- handleUpdate() {
+ handleUpdate(e) {
+ const { data } = e.currentTarget.dataset;
this.setData({
title: "编辑记录",
visible: true,
- time: "2025-09-11",
- number: 100,
- id: ""
+ time: data.readAt,
+ number: data.overall,
+ id: data.id,
+ readAtTimestamp: data.readAtTimestamp,
+ type: "edit",
+ })
+ },
+ handleDetail(e) {
+ const { data } = e.currentTarget.dataset;
+ this.setData({
+ detail: data,
+ detailVisible: true
})
},
handleDelete(e) {
- const { id } = e.currentTarget.dataset;
+ const { data } = e.currentTarget.dataset;
+ const that = this;
wx.showModal({
title: '删除确认',
content: '确认要删除这一项记录吗?',
- complete: (res) => {
+ complete: async (res) => {
if (res.cancel) {
}
if (res.confirm) {
-
+ const { code, message } = await deleteReading(data?.id, data?.overall)
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ alertSuccess("删除成功")
+ setTimeout(() => {
+ that.refresh()
+ }, 300)
}
}
})
diff --git a/pages/readingHistory/index.json b/pages/readingHistory/index.json
index f773837..aed3603 100644
--- a/pages/readingHistory/index.json
+++ b/pages/readingHistory/index.json
@@ -4,7 +4,10 @@
"meterInfo": "./components/meterInfo/index",
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index",
- "editModal": "./components/editModal/index"
+ "editModal": "./components/editModal/index",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "detailModal": "./components/detailModal/index"
},
"navigationStyle": "custom"
}
\ No newline at end of file
diff --git a/pages/readingHistory/index.wxml b/pages/readingHistory/index.wxml
index 664201d..e005fff 100644
--- a/pages/readingHistory/index.wxml
+++ b/pages/readingHistory/index.wxml
@@ -1,13 +1,12 @@
-
抄表记录历史
- 新增记录
+ 新增记录
@@ -15,22 +14,23 @@
抄表时间
- 抄表读数
- 操作
+ 抄表读数
+ 操作
- {{ item.time }}
+ {{ item.readAt }}
-
- {{ item.number }}
+
+ {{ item.overall }}
-
-
-
+
+
+
+
@@ -41,9 +41,27 @@
-
+
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/pages/readingHistory/index.wxss b/pages/readingHistory/index.wxss
index b5113d5..ba36133 100644
--- a/pages/readingHistory/index.wxss
+++ b/pages/readingHistory/index.wxss
@@ -11,6 +11,11 @@ page {
.historyTitle {
display: flex;
justify-content: space-between;
+ align-items: center;
+}
+
+.historyTitle .text {
+ font-size: 32rpx;
}
.table {
diff --git a/pages/workBench/components/reading/index.js b/pages/workBench/components/reading/index.js
index 45709a1..0002a79 100644
--- a/pages/workBench/components/reading/index.js
+++ b/pages/workBench/components/reading/index.js
@@ -20,7 +20,13 @@ Component({
park: "",
parkName: ""
},
-
+ lifetimes: {
+ attached() {
+ if (this.data.parkName) {
+ this.init();
+ }
+ }
+ },
/**
* 组件的方法列表
*/
@@ -80,7 +86,7 @@ Component({
alertSuccess("操作成功")
this.init()
setTimeout(() => {
- that.jumpToReading()
+ that.jumpToReading({ currentTarget: { dataset: { id } } })
}, 500)
},
async changeEndStatus(e) {
diff --git a/pages/workBench/components/reading/index.wxml b/pages/workBench/components/reading/index.wxml
index 31f4711..ede8f2c 100644
--- a/pages/workBench/components/reading/index.wxml
+++ b/pages/workBench/components/reading/index.wxml
@@ -25,37 +25,40 @@
-
-
- 开始抄表
- 去抄表
- 结束抄表
-
-
+
+
+
+ 开始抄表
+ 去抄表
+ 结束抄表
+
+
+
+
diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js
index 0ad9d61..9710e08 100644
--- a/pages/workBench/components/tenement/components/bindMeter/index.js
+++ b/pages/workBench/components/tenement/components/bindMeter/index.js
@@ -64,16 +64,17 @@ Component({
})
},
async onSubmit() {
- const { overall, critical, peak, valley, park, tenement, meter, readAt } = this.data;
+ const { overall, critical, peak, valley, park, tenement, meter, readAt, deepValley } = this.data;
const { code, message } = await bindMeter(
park,
tenement,
{
code: meter,
- overall:overall? Number(overall) : overall,
- critical : critical ? Number(critical) : critical,
- peak: peak ? Number(peak) : peak,
- valley : valley ? Number(valley) : valley,
+ overall:overall? Number(overall) : (overall === "" ? null : overall),
+ critical : critical ? Number(critical) : (critical === "" ? null : critical),
+ peak: peak ? Number(peak) : (peak === "" ? null : peak),
+ valley : valley ? Number(valley) : (valley === "" ? null : valley),
+ deepValley : deepValley ? Number(deepValley) : (deepValley === "" ? null : deepValley),
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
}
)
diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml
index 0e2ed30..159812d 100644
--- a/pages/workBench/components/tenement/components/bindMeter/index.wxml
+++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml
@@ -101,6 +101,16 @@
type="digit"
placeholder="请输入有功(谷)"
/>
+
diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.js b/pages/workBench/components/tenement/components/unBindMeter/index.js
index ebdda83..87b9868 100644
--- a/pages/workBench/components/tenement/components/unBindMeter/index.js
+++ b/pages/workBench/components/tenement/components/unBindMeter/index.js
@@ -69,16 +69,17 @@ Component({
})
},
async onSubmit() {
- const { overall, critical, peak, valley, park, tenement, meterId,readAt } = this.data;
+ const { overall, critical, peak, valley, deepValley, park, tenement, meterId,readAt } = this.data;
const { code, message, } = await unbindMeter(
park,
tenement,
meterId,
{
- overall:overall? Number(overall) : overall,
- critical : critical ? Number(critical) : critical,
- peak: peak ? Number(peak) : peak,
- valley : valley ? Number(valley) : valley,
+ overall:overall? Number(overall) : (overall === "" ? null : overall),
+ critical : critical ? Number(critical) : (critical === "" ? null : critical),
+ peak: peak ? Number(peak) : (peak === "" ? null : peak),
+ valley : valley ? Number(valley) : (valley === "" ? null : valley),
+ deepValley: deepValley ? Number(deepValley) : (deepValley === "" ? null : deepValley),
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
});
if (code !== OK) {
diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.wxml b/pages/workBench/components/tenement/components/unBindMeter/index.wxml
index 7a9952f..9a5ac1e 100644
--- a/pages/workBench/components/tenement/components/unBindMeter/index.wxml
+++ b/pages/workBench/components/tenement/components/unBindMeter/index.wxml
@@ -89,6 +89,16 @@
data-name="valley"
placeholder="请输入有功(谷)"
/>
+
diff --git a/pages/workBench/index.js b/pages/workBench/index.js
index 0480db6..b2de2eb 100644
--- a/pages/workBench/index.js
+++ b/pages/workBench/index.js
@@ -5,14 +5,14 @@ Page({
* 页面的初始数据
*/
data: {
- active: 4
+ active: 0
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
-
+
},
onTabChange(e) {
this.setData({ active: e.detail.index })
diff --git a/pages/workBenchNew/components/installMeter/index.js b/pages/workBenchNew/components/installMeter/index.js
new file mode 100644
index 0000000..d9ebac9
--- /dev/null
+++ b/pages/workBenchNew/components/installMeter/index.js
@@ -0,0 +1,541 @@
+// pages/workBenchNew/components/createMeter/index.js
+import dayjs from "../../../../utils/dayjs"
+import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index"
+import { uploadInstallMeter } from "../../../../service/public"
+import request from "../../../../utils/request"
+import { installMeter } from "../../../../service/meter"
+const { OK } = request
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ time: "",
+ area: "",
+ placeholder: "",
+ collections: [],
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ this.setData({
+ time: dayjs().format("YYYY-MM-DD HH:mm:ss")
+ })
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'inventoryMeter'
+ })
+ },
+ onBuildingFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "建筑",
+ type: 'building'
+ })
+ },
+ clearImage() {
+ this.setData({
+ url: ""
+ })
+ },
+ onMeterBoxFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表箱",
+ type: 'meterBox'
+ })
+ },
+ onMeterTypeFocus() {
+ this.setData({
+ show: true,
+ title: "电表类型",
+ type: 'meterType'
+ })
+ },
+ onBindCard() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "卡",
+ type: 'card'
+ })
+ },
+ onBindCollectionA() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "互感器A",
+ type: 'collection',
+ collection: "A"
+ })
+ },
+ onBindCollectionB() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "互感器B",
+ type: 'collection',
+ collection: "B"
+ })
+ },
+ onBindCollectionC() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "互感器C",
+ type: 'collection',
+ collection: "C"
+ })
+ },
+ onBindCollector() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "采集器",
+ type: 'collector',
+ })
+ },
+ clearCollector() {
+ this.setData({
+ show: false,
+ title: "",
+ type: 'collector',
+ collector: null,
+ collectorName: null,
+ })
+ },
+ uploadImage() {
+ const that = this;
+ wx.chooseMedia({
+ count: 1,
+ mediaType: ['image'],
+ sourceType: ['album', 'camera'],
+ success: async function(res) {
+ const path = res.tempFiles?.[0]?.tempFilePath.toLowerCase()
+ if (!/(\.jpg|\.png|\.jpeg)$/.test(path)) {
+ wx.showToast({
+ title: '请上传jpg、png或jpeg格式的图片',
+ icon: 'none',
+ });
+ return;
+ }
+ var tempFilePaths = path;
+ loadingFunc(async () => {
+ const { code, message, url } = await uploadInstallMeter(tempFilePaths)
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ that.setData({
+ url: url
+ })
+ })
+ }
+ })
+ },
+ changeSn(e) {
+ this.setData({
+ sn: e.detail,
+ })
+ },
+ clearData() {
+ this.setData({
+ tenement: null,
+ tenementName: null,
+ building: null,
+ buildingName: null,
+ meterBox: null,
+ meterBoxName: null,
+ meter: null,
+ meterName: null,
+ card: null,
+ cardName: null,
+ collectionA: null,
+ collectionAName: null,
+ collectionB: null,
+ collectionBName: null,
+ collectionB: null,
+ collectionBName: null,
+ address: null,
+ sharp: null,
+ peak: null,
+ flat: null,
+ valley: null,
+ deepValley: null,
+ area: null,
+ collector: null,
+ collectorName: null,
+ collections: [],
+ })
+ },
+ onConfirm(e) {
+ console.log("e", e)
+ const { type, data = {}, way } = e.detail;
+ const {collection, park, meterType, tenement, tenementName, overall, sharp, flat, peak, valley, deepValley} = this.data;
+ switch(type) {
+ case "park":
+ this.setData({
+ park: data.id,
+ parkName: data.name,
+ selfManagement: data.selfManagement,
+ })
+ if (park !== data.id) {
+ this.clearData()
+ }
+ break;
+ case "tenement":
+ this.setData({
+ tenement: data.id,
+ tenementName: data.name,
+ })
+ break;
+ case "inventoryMeter":
+ this.setData({
+ meter: data.id,
+ meterName: data?.sn,
+ })
+ break;
+ case "building":
+ this.setData({
+ building: data.id,
+ buildingName: data.name,
+ });
+ break;
+ case "meterBox":
+ this.setData({
+ meterBox: data.id,
+ meterBoxName: data.address,
+ });
+ break;
+ case "tenement":
+ this.setData({
+ tenement: data.id,
+ tenementName: data.name,
+ })
+ break;
+ case "meterType":
+ let newMeterData = {};
+ if (way !== 0) {
+ newMeterData = {
+ tenement: null,
+ tenementName: null,
+ overall: null,
+ sharp: null,
+ peak: null,
+ flat: null,
+ valley: null,
+ deepValley: null,
+ }
+ }
+ this.setData({
+ meterType: way,
+ meterTypeName: data,
+ ...newMeterData,
+ });
+ break;
+ case "collector":
+ this.setData({
+ collector: data?.id,
+ collectorName: `${data.collectorAddress}-${data.manufacturer}`,
+ });
+ break;
+ case "meter":
+ this.setData({
+ meter: data.id,
+ meterName: data.address,
+ });
+ break;
+ case "card":
+ this.setData({
+ card: data.id,
+ cardName: data.sim_number,
+ });
+ break;
+ case "collection":
+ const newCollects = this.data.collections;
+ let newData = {}
+ if (collection === "A") {
+ newCollects[0] = data.id
+ newData = {
+ collectionA: data.id,
+ collectionAName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
+ collectionARatio: data.ratio,
+ collections: newCollects
+ }
+ }
+ if (collection === "B") {
+ newCollects[1] = data.id
+ newData = {
+ collectionB: data.id,
+ collectionBName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
+ collectionBRatio: data.ratio,
+ collections: newCollects
+ }
+ }
+ if (collection === "C") {
+ newCollects[2] = data.id
+ newData = {
+ collectionC: data.id,
+ collectionCName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
+ collectionCRatio: data.ratio,
+ collections: newCollects
+ }
+ }
+ this.setData(newData);
+ break;
+ }
+ this.onCancel();
+ },
+ clearCard() {
+ this.setData({
+ card: null,
+ cardName: null,
+ })
+ },
+ clearCollectionA() {
+ const newCollects = this.data.collections;
+ newCollects[0] = null;
+ this.setData({
+ collectionA: null,
+ collectionAName: null,
+ collections: newCollects,
+ })
+ },
+ clearCollectionB() {
+ const newCollects = this.data.collections;
+ newCollects[1] = null;
+ this.setData({
+ collectionB: null,
+ collectionBName: null,
+ collections: newCollects,
+ })
+ },
+ clearCollectionC() {
+ const newCollects = this.data.collections;
+ newCollects[2] = null;
+ this.setData({
+ collectionC: null,
+ collectionCName: null,
+ collections: newCollects,
+ })
+ },
+ changeAddress(e) {
+ this.setData({
+ address: e.detail
+ })
+ },
+ changeArea(e) {
+ this.setData({
+ area: e.detail
+ })
+ },
+ changeOverall(e) {
+ this.setData({
+ overall: e.detail
+ })
+ },
+ changeSharp(e) {
+ this.setData({
+ sharp: e.detail
+ })
+ },
+ changePeak(e) {
+ this.setData({
+ peak: e.detail
+ })
+ },
+ changeFlat(e) {
+ this.setData({
+ flat: e.detail
+ })
+ },
+ changeValley(e) {
+ this.setData({
+ valley: e.detail
+ })
+ },
+ changeDeepValley(e) {
+ this.setData({
+ deepValley: e.detail
+ })
+ },
+ changeRatio(e) {
+ this.setData({
+ ratio: e.detail,
+ })
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onTenementFocus(e) {
+ const { park } = this.data;
+ const that = this;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "商户",
+ type: 'tenement'
+ })
+ },
+ async handleSubmit() {
+ const {
+ park, meter, address, building, meterBox, meterType,
+ ratio, area, card, collectionA, collectionB, collectionC,
+ tenement, sharp, peak, flat, valley, deepValley, overall, url, sn,
+ collectionARatio, collectionBRatio, collectionCRatio, collector,
+ } = this.data;
+ if (!park || !(meter || sn) || !address || meterType == null || !building || !meterBox || ratio == null) {
+ alertInfo("请填写必填项后保存")
+ return;
+ }
+ if (
+ (collectionA == collectionB && collectionA != null && collectionB != null) ||
+ (collectionA == collectionC&& collectionA != null && collectionC != null) ||
+ (collectionC == collectionB && collectionB != null && collectionC != null)
+ ) {
+ alertInfo("互感器不能重复选择")
+ return;
+ }
+ if (
+ (collectionARatio != collectionBRatio && collectionARatio != null && collectionBRatio != null) ||
+ (collectionARatio != collectionCRatio&& collectionARatio != null && collectionCRatio != null) ||
+ (collectionCRatio != collectionBRatio && collectionBRatio != null && collectionCRatio != null)
+ ) {
+ alertInfo("互感器倍率不一致")
+ return;
+ }
+ const { code, data, message } = await installMeter({
+ park, meterSn: meter, address, building, meterBox, meterType,
+ ratio, area, card, collectionA, collectionB, collectionC,
+ tenement,
+ sharp: sharp === "" ? null : sharp,
+ peak: peak === "" ? null : peak,
+ flat: flat === "" ? null : flat,
+ valley: valley === "" ? null : valley,
+ overall: overall === "" ? null : overall,
+ deepValley: deepValley == "" ? null : deepValley,
+
+ url, sn, collector
+ })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("新增成功")
+ this.setData({
+ park: null,
+ parkName: null,
+ })
+ this.clearData()
+ wx.navigateTo({
+ url: '/pages/workBenchTodoList/index',
+ })
+ },
+ goback() {
+ wx.navigateBack()
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/installMeter/index.json b/pages/workBenchNew/components/installMeter/index.json
new file mode 100644
index 0000000..e28e099
--- /dev/null
+++ b/pages/workBenchNew/components/installMeter/index.json
@@ -0,0 +1,12 @@
+{
+ "usingComponents": {
+ "navigator": "/components/navigator/index",
+ "van-popup": "@vant/weapp/popup/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "van-image": "@vant/weapp/image/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/installMeter/index.wxml b/pages/workBenchNew/components/installMeter/index.wxml
new file mode 100644
index 0000000..bde7fde
--- /dev/null
+++ b/pages/workBenchNew/components/installMeter/index.wxml
@@ -0,0 +1,227 @@
+
+
+
+
+
+ {{time}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传
+
+ 清除
+
+
+
+
+
+
+
+ 提交
+ 返回
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/installMeter/index.wxss b/pages/workBenchNew/components/installMeter/index.wxss
new file mode 100644
index 0000000..9af2e92
--- /dev/null
+++ b/pages/workBenchNew/components/installMeter/index.wxss
@@ -0,0 +1,15 @@
+/* pages/workBenchNew/components/createMeter/index.wxss */
+
+.operate {
+ display: flex;
+ padding-top: 24rpx;
+ padding-bottom: 36rpx;
+}
+
+.submit, .cancel {
+ flex: 1;
+}
+
+.submit {
+ margin-right: 30rpx;
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/kaihu/index.js b/pages/workBenchNew/components/kaihu/index.js
new file mode 100644
index 0000000..71d2b19
--- /dev/null
+++ b/pages/workBenchNew/components/kaihu/index.js
@@ -0,0 +1,149 @@
+// pages/workBenchNew/components/kaihu/index.js
+import { alertInfo, alertSuccess } from "../../../../utils/index"
+import { createBackTenement, updateTenementBackInfo } from "../../../../service/tenement"
+import request from "../../../../utils/request"
+import { payWays, feeType as feeTypeList } from "../../../../utils/data";
+const { OK } = request;
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onBuildingFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "建筑",
+ type: 'building'
+ })
+ },
+ onChange(e) {
+ const { name } = e.currentTarget.dataset;
+ this.setData({
+ [name]: e.detail
+ })
+ },
+ onFeeTypeFocus() {
+ this.setData({
+ show: true,
+ title: "收费类型",
+ type: 'feeType'
+ })
+ },
+ onCancel() {
+ this.setData({ show: false })
+ },
+ async onSubmit() {
+ const { name, shortName, address, contact,
+ phone, building, feeType, park, editType, id, parkName,
+
+ } = this.data;
+ const { code, message, tenement } = await createBackTenement(park, { name, shortName, address, contact, phone, building, feeType })
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("开户成功")
+ // wx.navigateBack()
+ wx.redirectTo({
+ url: `/pages/workBenchNew/components/workBenchTenement/index?park=${park}&parkName=${parkName}&name=${name}&id=${tenement}`,
+ })
+ },
+ handleBack() {
+ wx.navigateBack()
+ },
+ onConfirm(e) {
+ const { type, data, way } = e.detail;
+ switch(type) {
+ case "park":
+ this.setData({
+ park: data.id,
+ parkName: data.name,
+ show: false,
+ })
+ return;
+ case "building":
+ this.setData({
+ building: data.id,
+ buildingName: data.name,
+ show: false,
+ })
+ return;
+ case "feeType":
+ this.setData({
+ feeTypeName: data,
+ feeType: way,
+ show: false,
+ })
+ }
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/kaihu/index.json b/pages/workBenchNew/components/kaihu/index.json
new file mode 100644
index 0000000..b46458f
--- /dev/null
+++ b/pages/workBenchNew/components/kaihu/index.json
@@ -0,0 +1,10 @@
+{
+ "usingComponents": {
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "navigator": "/components/navigator/index",
+ "van-dialog": "@vant/weapp/dialog/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/kaihu/index.wxml b/pages/workBenchNew/components/kaihu/index.wxml
new file mode 100644
index 0000000..ff351a5
--- /dev/null
+++ b/pages/workBenchNew/components/kaihu/index.wxml
@@ -0,0 +1,111 @@
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+ 选择
+
+
+
+
+
+ 保存
+ 返回
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/kaihu/index.wxss b/pages/workBenchNew/components/kaihu/index.wxss
new file mode 100644
index 0000000..a604f74
--- /dev/null
+++ b/pages/workBenchNew/components/kaihu/index.wxss
@@ -0,0 +1 @@
+/* pages/workBenchNew/components/kaihu/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/operateButton/index.js b/pages/workBenchNew/components/operateButton/index.js
new file mode 100644
index 0000000..8ad1d7e
--- /dev/null
+++ b/pages/workBenchNew/components/operateButton/index.js
@@ -0,0 +1,27 @@
+// pages/workBenchNew/components/operateButton/index.js
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ text: String,
+ style: String,
+ },
+
+ /**
+ * 组件的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ handleClick() {
+ this.triggerEvent("click")
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/operateButton/index.json b/pages/workBenchNew/components/operateButton/index.json
new file mode 100644
index 0000000..e8cfaaf
--- /dev/null
+++ b/pages/workBenchNew/components/operateButton/index.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/operateButton/index.wxml b/pages/workBenchNew/components/operateButton/index.wxml
new file mode 100644
index 0000000..e58adc9
--- /dev/null
+++ b/pages/workBenchNew/components/operateButton/index.wxml
@@ -0,0 +1,2 @@
+
+ {{ text }}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/operateButton/index.wxss b/pages/workBenchNew/components/operateButton/index.wxss
new file mode 100644
index 0000000..9691159
--- /dev/null
+++ b/pages/workBenchNew/components/operateButton/index.wxss
@@ -0,0 +1,12 @@
+/* pages/workBenchNew/components/operateButton/index.wxss */
+
+.buttonWrapper {
+ height: 100rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border: 1rpx solid #ccc;
+ border-radius: 10rpx;
+ margin-bottom: 24rpx;
+ margin-top: 24rpx;
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/recharge/index.js b/pages/workBenchNew/components/recharge/index.js
new file mode 100644
index 0000000..71d0d16
--- /dev/null
+++ b/pages/workBenchNew/components/recharge/index.js
@@ -0,0 +1,194 @@
+// pages/workBenchNew/components/recharge/index.js
+import { handleRecharge } from "../../../../service/recharge";
+import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index";
+import request from '../../../../utils/request'
+const { OK } = request;
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+ onParkFocus() {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onMeterFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ onConfirm(e) {
+ const { data, type, way } = e.detail;
+ switch(type) {
+ case "park":
+ this.setData({
+ parkName: data.name,
+ park: data.id,
+ })
+ break;
+ case "meter":
+ this.setData({
+ meterName: `${data.meterNo}-${data.address}${data.tenement?.name ? '-' + data.tenement?.name : ''}`,
+ meter: data.id,
+ meterInfo: data,
+ })
+ break;
+ case "pay":
+ this.setData({
+ payName: data,
+ way: way,
+ });
+ break;
+ }
+ this.onCancel();
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onPayFocus() {
+ this.setData({
+ show: true,
+ title: "付款方式",
+ type: 'pay'
+ })
+ },
+ onChangeMoney(e) {
+ this.setData({ money: e.detail })
+ },
+ onChangeVoucherNo(e) {
+ this.setData({ voucherNo: e.detail })
+ },
+ handleClear() {
+ this.setData({
+ park: "",
+ parkName: "",
+ meter: "",
+ meterName: "",
+ way: "",
+ payName: "",
+ show: false,
+ title: "",
+ type: "",
+ money: null,
+ voucherNo: null
+ })
+ },
+ async handleSubmit() {
+ const that = this;
+ const { park, meter, money, way, voucherNo, meterInfo } = this.data;
+ if (!park) {
+ alertInfo("请选择园区");
+ return;
+ }
+ if (!meter) {
+ alertInfo("请选择电表")
+ return;
+ }
+ if (!money) {
+ alertInfo("请输入金额")
+ return
+ }
+ if (!way && way !== 0) {
+ alertInfo("请选择付款方式")
+ return
+ }
+ if (!voucherNo) {
+ alertInfo("请输入凭证号")
+ return
+ }
+ loadingFunc(async () => {
+ const { code, message } = await handleRecharge(park, {
+ amount: `${money || ''}`,
+ meter,
+ paymentType: way,
+ voucherNo,
+ type: 0 ,
+ tenement: meterInfo?.tenement,
+ })
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("充值成功")
+ setTimeout(() => {
+ that.handleClear()
+ that.setData({
+
+ })
+ }, 500)
+ })
+
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/recharge/index.json b/pages/workBenchNew/components/recharge/index.json
new file mode 100644
index 0000000..4e12d5e
--- /dev/null
+++ b/pages/workBenchNew/components/recharge/index.json
@@ -0,0 +1,11 @@
+{
+ "usingComponents": {
+ "van-popup": "@vant/weapp/popup/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index",
+ "navigator": "/components/navigator"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/recharge/index.wxml b/pages/workBenchNew/components/recharge/index.wxml
new file mode 100644
index 0000000..ec5e587
--- /dev/null
+++ b/pages/workBenchNew/components/recharge/index.wxml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认
+ 清空
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/recharge/index.wxss b/pages/workBenchNew/components/recharge/index.wxss
new file mode 100644
index 0000000..c7e9761
--- /dev/null
+++ b/pages/workBenchNew/components/recharge/index.wxss
@@ -0,0 +1,17 @@
+/* pages/workBenchNew/components/recharge/index.wxss */
+
+
+.inputContent {
+ flex: 1;
+ margin-right: 10rpx;
+ display: flex;
+ padding: 0 20rpx;
+ border-radius: 12rpx;
+ border: 1rpx solid #ccc;
+ background-color: #fff;
+ position: relative;
+}
+
+.text {
+ flex: 1;
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/uninstallMeter/index.js b/pages/workBenchNew/components/uninstallMeter/index.js
new file mode 100644
index 0000000..5ee1d46
--- /dev/null
+++ b/pages/workBenchNew/components/uninstallMeter/index.js
@@ -0,0 +1,302 @@
+// pages/workBenchNew/components/uninstallMeter/index.js
+import { uninstallMeter, } from "../../../../service/meter";
+import dayjs from "../../../../utils/dayjs"
+import request from "../../../../utils/request"
+import { alertInfo, alertSuccess, loadingFunc, wxModal} from "../../../../utils/index"
+import { uploadUninstallMeter } from "../../../../service/public"
+
+const { OK } = request;
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ onConfirm(e) {
+ const { type, data = {} } = e.detail;
+ const {collection} = this.data;
+ switch(type) {
+ case "park":
+ this.setData({
+ park: data.id,
+ parkName: data.name,
+ meter: null,
+ meterInfo: null,
+ meterName: null,
+ })
+ break;
+ case "tenement":
+ this.setData({
+ tenement: data.id,
+ tenementName: data.name,
+ })
+ break;
+ case "building":
+ this.setData({
+ building: data.id,
+ buildingName: data.name,
+ });
+ break;
+ case "meterBox":
+ this.setData({
+ meterBox: data.id,
+ meterBoxName: data.address,
+ });
+ break;
+ case "meterType":
+ this.setData({
+ meterType: data.way,
+ meterTypeName: data,
+ });
+ break;
+ case "meter":
+ this.setData({
+ meter: data.id,
+ meterName: data.address,
+ meterInfo: data,
+ });
+ break;
+ case "card":
+ this.setData({
+ card: data.id,
+ cardName: data.sim_number,
+ });
+ break;
+ case "collection":
+ let newData = {}
+ if (collection === "A") {
+ newData = {
+ collectionA: data.id,
+ collectionAName: data.name,
+ }
+ }
+ if (collection === "B") {
+ newData = {
+ collectionB: data.id,
+ collectionBName: data.name,
+ }
+ }
+ if (collection === "C") {
+ newData = {
+ collectionC: data.id,
+ collectionCName: data.name,
+ }
+ }
+ this.setData(newData);
+ break;
+ }
+ this.onCancel();
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ changeCritical(e) {
+ this.setData({
+ critical: e.detail,
+ })
+ },
+ changePeak(e) {
+ this.setData({
+ peak: e.detail,
+ })
+ },
+ changeFlat(e) {
+ this.setData({
+ flat: e.detail,
+ })
+ },
+ changeValley(e) {
+ this.setData({
+ valley: e.detail,
+ })
+ },
+ changeOverall(e) {
+ this.setData({
+ overall: e.detail,
+ })
+ },
+ changeDeppValley(e) {
+ this.setData({
+ deepOverall: e.detail,
+ })
+ },
+ async onSubmit() {
+ const { meter, reason, url, meterInfo, critical, peak, flat, valley, overall, deepOverall } = this.data;
+ if (!meter) {
+ alertInfo("请选择表号")
+ return;
+ }
+ if (!meterInfo?.tenement) {
+ const { code, message } = await uninstallMeter({sn: meter, images: url, reason, tenement: meterInfo.tenement, critical, peak, flat, valley, overall, deepOverall})
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("拆除成功")
+ setTimeout(() => {
+ wx.navigateTo({
+ url: '/pages/workBenchTodoList/index',
+ })
+ }, 300)
+ return;
+ }
+ wx.showModal({
+ title: '提示',
+ content: '拆出后电表和商户关系,电表和卡的关系会自动解绑,是否拆出',
+ complete: async (res) => {
+ if (res.cancel) {
+
+ }
+
+ if (res.confirm) {
+ const { code, message } = await uninstallMeter({sn: meter, images: url, reason, tenement: meterInfo.tenement, critical, peak, flat, valley, overall, deepOverall})
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("拆除成功")
+ setTimeout(() => {
+ wx.navigateTo({
+ url: '/pages/workBenchTodoList/index',
+ })
+ }, 300)
+ return;
+ }
+ }
+ })
+ },
+ uploadImage() {
+ const that = this;
+ wx.chooseMedia({
+ count: 1,
+ mediaType: ['image'],
+ sourceType: ['album', 'camera'],
+ success: async function(res) {
+ const path = res.tempFiles?.[0]?.tempFilePath.toLowerCase()
+ if (!/(\.jpg|\.png|\.jpeg)$/.test(path)) {
+ wx.showToast({
+ title: '请上传jpg、png或jpeg格式的图片',
+ icon: 'none',
+ });
+ return;
+ }
+ var tempFilePaths = path;
+ loadingFunc(async () => {
+ const { code, message, url } = await uploadUninstallMeter(tempFilePaths)
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ that.setData({
+ url: url
+ })
+ })
+ }
+ })
+ },
+ clearImage() {
+ this.setData({
+ url: ""
+ })
+ },
+ showImage() {
+ this.setData({
+ imageShow: true
+ })
+ },
+ onClose() {
+ this.setData({
+ imageShow: false
+ })
+ },
+ goback() {
+ wx.navigateBack()
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ this.setData({
+ time: dayjs().format("YYYY-MM-DD HH:mm:ss")
+ })
+ },
+ changeReason(e) {
+ this.setData({
+ reason: e.detail,
+ })
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/uninstallMeter/index.json b/pages/workBenchNew/components/uninstallMeter/index.json
new file mode 100644
index 0000000..003c648
--- /dev/null
+++ b/pages/workBenchNew/components/uninstallMeter/index.json
@@ -0,0 +1,12 @@
+{
+ "usingComponents": {
+ "navigator": "/components/navigator/index",
+ "van-popup": "@vant/weapp/popup/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index",
+ "van-image": "@vant/weapp/image/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/uninstallMeter/index.wxml b/pages/workBenchNew/components/uninstallMeter/index.wxml
new file mode 100644
index 0000000..a1bb62c
--- /dev/null
+++ b/pages/workBenchNew/components/uninstallMeter/index.wxml
@@ -0,0 +1,125 @@
+
+
+
+
+
+ {{time}}
+
+
+
+
+
+
+
+
+ 上传
+
+ 清除
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+ 返回
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/uninstallMeter/index.wxss b/pages/workBenchNew/components/uninstallMeter/index.wxss
new file mode 100644
index 0000000..7d468e2
--- /dev/null
+++ b/pages/workBenchNew/components/uninstallMeter/index.wxss
@@ -0,0 +1,15 @@
+/* pages/workBenchNew/components/uninstallMeter/index.wxss */
+
+.operate {
+ display: flex;
+ padding-top: 24rpx;
+ padding-bottom: 36rpx;
+}
+
+.submit, .cancel {
+ flex: 1;
+}
+
+.submit {
+ margin-right: 30rpx;
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/approve/index.js b/pages/workBenchNew/components/workBenchApprove/components/approve/index.js
new file mode 100644
index 0000000..0a156f7
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/approve/index.js
@@ -0,0 +1,279 @@
+// pages/workBench/components/recharge/components/waitApprove/index.js
+import {
+ alertInfo,
+ alertSuccess,
+ loadingFunc
+} from "../../../../../../utils/index";
+import {
+ getRechargeApproveList,
+ rechargeApprove
+} from "../../../../../../service/recharge"
+import request from "../../../../../../utils/request"
+import dayjs from "../../../../../../utils/dayjs"
+const {
+ OK
+} = request
+
+// pages/workBench/components/record/index.js
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ status: Number
+ },
+
+ /**
+ * 组件的初始数据
+ */
+ data: {
+ keyword: "",
+ keywordTemp: "",
+ page: 1,
+ currentActionSheet: null,
+ actionItems: [{
+ name: '查看详细',
+ value: 'detail'
+ }],
+ },
+
+ lifetimes: {
+ attached() {
+ loadingFunc(async () => {
+ await this.init();
+ })
+ }
+ },
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onConfirm(e) {
+ const {
+ data
+ } = e.detail;
+ const that = this;
+ this.setData({
+ parkName: data.name,
+ park: data.id,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ this.onCancel();
+ },
+ onSearchKeyword(e) {
+ const that = this;
+ that.setData({
+ keyword: e.detail
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ onChangeKeyword(e) {
+ this.setData({
+ keywordTemp: e.detail
+ })
+ },
+ onSearch() {
+ const that = this;
+ that.setData({
+ keyword: that.data.keywordTemp
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ async init() {
+ const {
+ page,
+ keyword,
+ park,
+ status
+ } = this.data;
+ const {
+ code,
+ message,
+ data,
+ total
+ } = await getRechargeApproveList({
+ park,
+ page,
+ keyword,
+ status
+ })
+ if (code !== OK) {
+ alertInfo(message);
+ return;
+ }
+ this.setData({
+ list: data.map(item => {
+ item.topTime = dayjs(item.topTime).format("MM-DD")
+ return item
+ }),
+ total: total,
+ totalPage: Math.ceil(total / 20)
+ })
+ },
+ onChangeReason(e) {
+ this.setData({
+ reason: e.detail,
+ })
+ },
+ onApproveClose() {
+ this.setData({
+ reason: "",
+ approveShow: false,
+ })
+ },
+ onApproveConfirm() {
+ const {
+ reason,
+ record
+ } = this.data;
+ const that = this;
+ if (!reason) {
+ alertInfo("请输入拒绝理由")
+ return;
+ }
+ loadingFunc(async () => {
+ const {
+ code,
+ message
+ } = await rechargeApprove({
+ id: record,
+ status: 1,
+ reason
+ })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("已拒绝")
+ that.init();
+ that.setData({
+ reason: "",
+ approveShow: false,
+ record: "",
+ })
+ })
+
+ },
+ handleApprove(e) {
+ const status = e.currentTarget.dataset.status;
+ const that = this;
+ if (status === '1') {
+ this.setData({
+ approveShow: true
+ })
+ return;
+ }
+ const {
+ record,
+ list
+ } = this.data;
+ const item = list.find(ele => ele.id === record)
+
+ wx.showModal({
+ title: '提示',
+ content: `您确认要同意${item?.tenement?.shortName || 当前记录}吗?`,
+ complete: async (res) => {
+ if (res.cancel) {
+
+ }
+ if (res.confirm) {
+ loadingFunc(async () => {
+ const {
+ code,
+ message
+ } = await rechargeApprove({
+ id: record,
+ status: 0,
+ })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("已同意")
+ that.init();
+ })
+
+ }
+ }
+ })
+ },
+
+ showActionMenu(e) {
+ this.setData({
+ currentActionSheet: e.currentTarget.dataset.id
+ });
+ },
+
+ hideActionMenu() {
+ this.setData({
+ currentActionSheet: null
+ });
+ },
+
+ onMenuSelect(e) {
+ const {
+ value
+ } = e.detail;
+ const id = e.currentTarget.dataset.id;
+
+ if (value === 'detail') {
+ this.jumpToDetail({
+ currentTarget: {
+ dataset: {
+ id
+ }
+ }
+ });
+ }
+ },
+
+ jumpToDetail(e) {
+ const {
+ id
+ } = e.currentTarget.dataset;
+ wx.navigateTo({
+ url: '/pages/rechargeDetail/index?id=' + id,
+ })
+ },
+ async onChangePage(e) {
+ const page = e.detail.currentIndex;
+ const that = this;
+ this.setData({
+ page
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onChangeSelectRecharge(e) {
+ this.setData({
+ record: e.detail
+ })
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/approve/index.json b/pages/workBenchNew/components/workBenchApprove/components/approve/index.json
new file mode 100644
index 0000000..145ec1b
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/approve/index.json
@@ -0,0 +1,18 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "search-select": "/components/searchSelect/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "table": "/components/table/table",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "van-radio": "@vant/weapp/radio/index",
+ "van-radio-group": "@vant/weapp/radio-group/index",
+ "van-dialog": "@vant/weapp/dialog/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index",
+ "van-icon": "@vant/weapp/icon/index",
+ "van-action-sheet": "@vant/weapp/action-sheet/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/approve/index.wxml b/pages/workBenchNew/components/workBenchApprove/components/approve/index.wxml
new file mode 100644
index 0000000..6e2a30a
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/approve/index.wxml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+ 同意
+ 拒绝
+
+
+
+
+
+
+
+ 商户名字
+ 充值金额
+ 状态
+ 提交时间
+ 操作
+
+
+
+
+
+
+
+
+
+ {{ item.tenement.shortName }}
+
+
+ {{ item.money }}
+
+
+ {{item.orderStatus}}
+
+
+ {{item.topTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/approve/index.wxss b/pages/workBenchNew/components/workBenchApprove/components/approve/index.wxss
new file mode 100644
index 0000000..641964d
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/approve/index.wxss
@@ -0,0 +1,70 @@
+/* pages/workBench/components/recharge/components/waitApprove/index.wxss */
+.table {
+ width: 500rpx;
+
+}
+
+.tableWrapper {
+ width: 100vw;
+ overflow-x: auto;
+}
+
+.thead {
+
+ display: flex;
+ flex-wrap: nowrap;
+
+}
+
+.thead .th {
+ padding: 10rpx;
+ white-space: nowrap;
+ text-align: center;
+ box-sizing: border-box;
+}
+
+.primaryTextBtn {
+ color: #1989fa;
+ }
+
+.tbody {
+ width: 500rpx;
+}
+
+.tbody .tr {
+ padding: 10rpx;
+ border-bottom: 1rpx solid #EEEEEE;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+}
+
+.tbody .tr {
+ word-break: break-all;
+ text-align: center;
+}
+
+.more-icon {
+ padding: 20rpx;
+ color: #1989fa;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+/* 基础标签样式 */
+.tag {
+ display: inline-block;
+ padding: 4px 5px;
+ margin-right: 0px;
+ border-radius: 16px;
+ background: #07c160;
+ color: white;
+ font-size: 25rpx;
+ }
+
+ /* 激活状态样式 */
+ .tag.active {
+ background: #07c160;
+ color: white;
+ }
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/reharge/index.js b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.js
new file mode 100644
index 0000000..c6ccf9b
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.js
@@ -0,0 +1,152 @@
+// pages/workBench/components/recharge/components/reharge/index.js
+
+import { handleRecharge } from "../../../../../../service/recharge";
+import { alertInfo, alertSuccess, loadingFunc } from "../../../../../../utils/index";
+import request from '../../../../../../utils/request'
+const { OK } = request;
+
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+
+ },
+
+ /**
+ * 组件的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ onParkFocus() {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onMeterFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ onConfirm(e) {
+ const { data, type, way } = e.detail;
+ switch(type) {
+ case "park":
+ this.setData({
+ parkName: data.name,
+ park: data.id,
+ })
+ break;
+ case "meter":
+ this.setData({
+ meterName: `${data.meterNo}-${data.address}${data.tenement?.name ? '-' + data.tenement?.name : ''}`,
+ meter: data.id,
+ })
+ break;
+ case "pay":
+ this.setData({
+ payName: data,
+ way: way,
+ });
+ break;
+ }
+ this.onCancel();
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onPayFocus() {
+ this.setData({
+ show: true,
+ title: "付款方式",
+ type: 'pay'
+ })
+ },
+ onChangeMoney(e) {
+ this.setData({ money: e.detail })
+ },
+ onChangeVoucherNo(e) {
+ this.setData({ voucherNo: e.detail })
+ },
+ handleClear() {
+ this.setData({
+ park: "",
+ parkName: "",
+ meter: "",
+ meterName: "",
+ way: "",
+ payName: "",
+ show: false,
+ title: "",
+ type: "",
+ money: null,
+ voucherNo: null
+ })
+ },
+ async handleSubmit() {
+ const that = this;
+ const { park, meter, money, way, voucherNo } = this.data;
+ if (!park) {
+ alertInfo("请选择园区");
+ return;
+ }
+ if (!meter) {
+ alertInfo("请选择电表")
+ return;
+ }
+ if (!money) {
+ alertInfo("请输入金额")
+ return
+ }
+ if (!way && way !== 0) {
+ alertInfo("请选择付款方式")
+ return
+ }
+ if (!voucherNo) {
+ alertInfo("请输入凭证号")
+ return
+ }
+ loadingFunc(async () => {
+ const { code, message } = await handleRecharge(park, {
+ amount: `${money || ''}`,
+ meter,
+ paymentType: way,
+ voucherNo,
+ type: 0
+ })
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("充值成功")
+ setTimeout(() => {
+ that.handleClear()
+ that.setData({
+
+ })
+ }, 500)
+ })
+
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/reharge/index.json b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.json
new file mode 100644
index 0000000..b387e17
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-popup": "@vant/weapp/popup/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/components/reharge/index.wxml b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.wxml
new file mode 100644
index 0000000..c300e2b
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.wxml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+ 确认
+ 清空
+
+
diff --git a/pages/workBenchNew/components/workBenchApprove/components/reharge/index.wxss b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.wxss
new file mode 100644
index 0000000..c33c12d
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/components/reharge/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/recharge/components/reharge/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/index.js b/pages/workBenchNew/components/workBenchApprove/index.js
new file mode 100644
index 0000000..b2ba3c8
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/index.js
@@ -0,0 +1,72 @@
+// pages/workBenchNew/components/workBenchApprove/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ active: 0,
+ segmentedList: ['待审核', '已审核', '充值'],
+ },
+ changeQueryType(e) {
+ const { type } = e.currentTarget.dataset;
+ this.setData({
+ active: type
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/index.json b/pages/workBenchNew/components/workBenchApprove/index.json
new file mode 100644
index 0000000..b9fefcf
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/index.json
@@ -0,0 +1,12 @@
+{
+ "usingComponents": {
+ "van-button": "@vant/weapp/button/index",
+ "segmented": "/components/Segmented/index",
+ "recharge": "./components/reharge/index",
+ "approve": "./components/approve/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "navigator": "/components/navigator/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/index.wxml b/pages/workBenchNew/components/workBenchApprove/index.wxml
new file mode 100644
index 0000000..66420fb
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/index.wxml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 待审核
+
+
+ 已审核
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchApprove/index.wxss b/pages/workBenchNew/components/workBenchApprove/index.wxss
new file mode 100644
index 0000000..cf8d8a0
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchApprove/index.wxss
@@ -0,0 +1,27 @@
+/* pages/workBench/components/recharge/index.wxss */
+page {
+ background-color: rgb(228,240,236);
+ font-size: 32rpx;
+ }
+
+
+ .query {
+ margin: 20rpx 0rpx;
+ }
+
+ .typeQueryText {
+ text-align: center;
+ padding: 20rpx;
+ background-color: var(--light-green);
+ font-size: 32rpx;
+ }
+
+ .select {
+ border: 1rpx solid #ccc;
+ padding: 12rpx;
+ border-radius: 12rpx;
+ flex: 1;
+ display: flex;
+ justify-content: space-between;
+ font-size: 30rpx;
+ }
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchMeter/index.js b/pages/workBenchNew/components/workBenchMeter/index.js
new file mode 100644
index 0000000..43e759e
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeter/index.js
@@ -0,0 +1,218 @@
+// pages/workBenchNew/components/workBenchMeter/index.js
+
+import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index";
+import { getParkMeterList, handleOperateMeterSwitch } from "../../../../service/meter"
+import request from "../../../../utils/request"
+const { OK } = request
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ keyword: "",
+ keywordTemp: "",
+ page: 1,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ onConfirm(e) {
+ const { data, type } = e.detail;
+ const that = this;
+ switch(type) {
+ case "park":
+ this.setData({
+ parkName: data.name,
+ park: data.id,
+ })
+ break;
+ case "meter":
+ this.setData({
+ meterName: data.address,
+ meter: data.id,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ break;
+ }
+
+ this.onCancel();
+ },
+ onChangeKeyword(e) {
+ this.setData({ keywordTemp: e.detail })
+ },
+ onSearch() {
+ const that = this;
+ that.setData({
+ keyword: that.data.keywordTemp
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ async init() {
+ const { page, park, meter } = this.data;
+ if (!park) {
+ return;
+ }
+ const { code, message, data, total } = await getParkMeterList({ park, keyword: meter, page })
+ if (code !== OK) {
+ alertInfo(message);
+ return;
+ }
+ this.setData({
+ list: data,
+ total: total,
+ totalPage: Math.ceil(total / 20)
+ })
+ },
+ async onChangePage(e) {
+ const page = e.detail.currentIndex;
+ const that = this;
+ this.setData({
+ page
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onChangeSelectMeter(e) {
+ this.setData({
+ meter: e.detail
+ })
+ },
+ async handleMeterSwitchOn() {
+ const that = this;
+ const { meter, meterName } = this.data;
+ wx.showModal({
+ title: '提示',
+ content: `您确认要对${meterName || 当前电表}进行合闸吗?`,
+ complete: async (res) => {
+ if (res.cancel) {
+
+ }
+
+ if (res.confirm) {
+ loadingFunc(async () => {
+ const { code, message } = await handleOperateMeterSwitch({ ids: [meter], status: 0 })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("合闸成功")
+ that.init();
+ })
+
+ }
+ }
+ })
+ },
+ async handleMeterSwitchOff() {
+ const that = this;
+ const { meter, meterName } = this.data;
+ wx.showModal({
+ title: '提示',
+ content: `您确认要对${meterName || 当前电表}进行拉闸吗?`,
+ complete: async (res) => {
+ if (res.cancel) {
+ return;
+ }
+ if (res.confirm) {
+ loadingFunc(async () => {
+ const { code, message } = await handleOperateMeterSwitch({ ids: [meter], status: 1 })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("拉闸成功")
+ that.init();
+ })
+ }
+ }
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchMeter/index.json b/pages/workBenchNew/components/workBenchMeter/index.json
new file mode 100644
index 0000000..62b403a
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeter/index.json
@@ -0,0 +1,19 @@
+{
+ "usingComponents": {
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "search-select": "/components/searchSelect/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "table": "/components/table/table",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "van-radio": "@vant/weapp/radio/index",
+ "van-radio-group": "@vant/weapp/radio-group/index",
+ "van-tag": "@vant/weapp/tag/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "navigator": "/components/navigator/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchMeter/index.wxml b/pages/workBenchNew/components/workBenchMeter/index.wxml
new file mode 100644
index 0000000..37b1e35
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeter/index.wxml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+ 合闸
+ 拉闸
+
+
+
+
+
+
+ {{item.tenement.shortName}}
+
+ {{item.tenement.name}}
+
+
+
+
+
+
+
+
+ 商户电表
+
+ 公摊电表
+
+ 园区电表
+ 表号:{{item.meterNo}}
+
+
+
+
+
+
+
+ {{item.address}}
+
+ SN:{{item.meterSn}}
+
+
+
+
+
+
+
+ 表字:{{item.amount}}
+
+ 余额:{{item.money}}
+
+
+
+
+
+
+
+ 合闸
+ 拉闸
+ 在线
+ 失联
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/workBenchNew/components/workBenchMeter/index.wxss b/pages/workBenchNew/components/workBenchMeter/index.wxss
new file mode 100644
index 0000000..59a86ed
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeter/index.wxss
@@ -0,0 +1,63 @@
+/* pages/workBench/components/record/index.wxss */
+.table {
+ width: 890rpx;
+
+}
+
+.classWrapper {
+ width: 100vw;
+ overflow-x: auto;
+}
+
+.thead {
+ display: flex;
+ flex-wrap: nowrap;
+ border-bottom: 1rpx solid #EEEEEE;
+}
+
+.thead .th {
+ padding: 20rpx;
+ white-space: nowrap;
+ text-align: center;
+ box-sizing: border-box;
+
+}
+
+.tbody {
+ width: 890rpx;
+}
+
+.tbody .tr {
+ padding: 20rpx;
+ border-bottom: 1rpx solid #EEEEEE;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+}
+
+.tbody .th {
+ word-break: break-all;
+ text-align: center;
+}
+
+.customTable {
+ margin: 20rpx;
+}
+
+.customTableTile {
+ background-color: var(--light-green);
+ padding: 16rpx;
+ box-sizing: border-box;
+ font-weight: 700;
+}
+
+.tableRow {
+ padding: 16rpx;
+ border: 1rpx solid #ccc;
+ border-top: 0rpx;
+}
+
+page {
+ background-color: rgb(228,240,236);
+ font-size: 32rpx;
+ }
diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.js b/pages/workBenchNew/components/workBenchMeterControl/index.js
new file mode 100644
index 0000000..9a5fe6d
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeterControl/index.js
@@ -0,0 +1,267 @@
+// pages/workBenchNew/components/workBenchMeter/index.js
+
+import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index";
+import { getParkMeterList, handleOperateMeterMode } from "../../../../service/meter"
+import { uploadMeterForce } from "../../../../service/public"
+import request from "../../../../utils/request"
+const { OK } = request
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ keyword: "",
+ keywordTemp: "",
+ page: 1,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onModeFocus(e) {
+ this.setData({
+ show: true,
+ title: "强控类型",
+ type: 'meterMode'
+ })
+ },
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ onConfirm(e) {
+ const { data, type, way } = e.detail;
+ const that = this;
+ switch(type) {
+ case "park":
+ this.setData({
+ parkName: data.name,
+ park: data.id,
+ })
+ break;
+ case "meterMode":
+ this.setData({
+ modeName: data,
+ mode: way,
+ })
+ break;
+ case "meter":
+ this.setData({
+ meterName: data.address,
+ meter: data.id,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ break;
+ }
+
+ this.onCancel();
+ },
+ onChangeKeyword(e) {
+ this.setData({ keywordTemp: e.detail })
+ },
+ changeDays(e) {
+ this.setData({
+ days: e.detail,
+ })
+ },
+ handleSubmit() {
+ const that = this;
+ const { mode, days, reason, meter, meterName, url } = this.data;
+ if (mode === 2 && days == null) {
+ alertInfo("请填写天数")
+ return;
+ }
+ wx.showModal({
+ title: '提示',
+ content: `确定要对${meterName}进行${["预付费", "强控", "临时强控"][mode]}操作吗?`,
+ complete: async (res) => {
+ if (res.cancel) {
+
+ }
+
+ if (res.confirm) {
+ loadingFunc(async () => {
+ const { code, message } = await handleOperateMeterMode({ ids: [meter], mode, days: days == null ? undefined : Number(days), reason, images: url })
+ if (code !== OK) {
+ alertInfo(message)
+ await that.init();
+ return
+ }
+ alertSuccess("操作成功")
+
+ await that.init();
+ this.setData({
+ mode: null,
+ modeName: null,
+ days: null,
+ reason: null,
+ url: null,
+ })
+ })
+ }
+ }
+ })
+ },
+ uploadImage() {
+ const that = this;
+ wx.chooseMedia({
+ count: 1,
+ mediaType: ['image'],
+ sourceType: ['album', 'camera'],
+ success: async function(res) {
+ const path = res.tempFiles?.[0]?.tempFilePath.toLowerCase()
+ if (!/(\.jpg|\.png|\.jpeg)$/.test(path)) {
+ wx.showToast({
+ title: '请上传jpg、png或jpeg格式的图片',
+ icon: 'none',
+ });
+ return;
+ }
+ var tempFilePaths = path;
+ loadingFunc(async () => {
+ const { code, message, url } = await uploadMeterForce(tempFilePaths)
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ that.setData({
+ url: url
+ })
+ })
+ }
+ })
+ },
+ goback() {
+ wx.navigateBack();
+ },
+ clearImage() {
+ this.setData({
+ url: ""
+ })
+ },
+ changeReason(e) {
+ this.setData({
+ reason: e.detail,
+ })
+ },
+ onSearch() {
+ const that = this;
+ that.setData({
+ keyword: that.data.keywordTemp
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ async init() {
+ const { page, park, meter } = this.data;
+ if (!park) {
+ return;
+ }
+ const { code, message, data, total } = await getParkMeterList({ park, keyword: meter, page })
+ if (code !== OK) {
+ alertInfo(message);
+ return;
+ }
+ this.setData({
+ list: data,
+ total: total,
+ totalPage: Math.ceil(total / 20)
+ })
+ },
+ async onChangePage(e) {
+ const page = e.detail.currentIndex;
+ const that = this;
+ this.setData({
+ page
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onChangeSelectMeter(e) {
+ this.setData({
+ meter: e.detail
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.json b/pages/workBenchNew/components/workBenchMeterControl/index.json
new file mode 100644
index 0000000..01fad66
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeterControl/index.json
@@ -0,0 +1,21 @@
+{
+ "usingComponents": {
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "search-select": "/components/searchSelect/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "van-image": "@vant/weapp/image/index",
+ "table": "/components/table/table",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "van-radio": "@vant/weapp/radio/index",
+ "van-radio-group": "@vant/weapp/radio-group/index",
+ "van-tag": "@vant/weapp/tag/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "navigator": "/components/navigator/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index",
+ "van-popup": "@vant/weapp/popup/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.wxml b/pages/workBenchNew/components/workBenchMeterControl/index.wxml
new file mode 100644
index 0000000..c057ffe
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeterControl/index.wxml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.tenement.shortName}}
+
+ {{item.tenement.name}}
+
+
+
+
+
+
+
+
+ 商户电表
+
+ 公摊电表
+
+ 园区电表
+ 表号:{{item.meterNo}}
+
+
+
+
+
+
+
+ {{item.address}}
+
+ SN:{{item.meterSn}}
+
+
+
+
+
+
+
+ 表字:{{item.amount}}
+
+ 余额:{{item.money}}
+
+
+
+
+
+
+
+ 合闸
+ 拉闸
+
+
+
+ 在线
+ 预付费
+ 强控
+ 临时强控
+
+
+
+
+ 失联
+ 预付费
+ 强控
+ 临时强控
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传
+
+ 清除
+
+
+
+
+
+
+
+ 确认
+ 返回
+
+
+
+
+
+
+
+
diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.wxss b/pages/workBenchNew/components/workBenchMeterControl/index.wxss
new file mode 100644
index 0000000..d259093
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchMeterControl/index.wxss
@@ -0,0 +1,78 @@
+/* pages/workBench/components/record/index.wxss */
+.table {
+ width: 890rpx;
+
+}
+
+.classWrapper {
+ width: 100vw;
+ overflow-x: auto;
+}
+
+.thead {
+ display: flex;
+ flex-wrap: nowrap;
+ border-bottom: 1rpx solid #EEEEEE;
+}
+
+.thead .th {
+ padding: 20rpx;
+ white-space: nowrap;
+ text-align: center;
+ box-sizing: border-box;
+
+}
+
+.tbody {
+ width: 890rpx;
+}
+
+.tbody .tr {
+ padding: 20rpx;
+ border-bottom: 1rpx solid #EEEEEE;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+}
+
+.tbody .th {
+ word-break: break-all;
+ text-align: center;
+}
+
+.customTable {
+ margin: 20rpx;
+}
+
+.customTableTile {
+ background-color: var(--light-green);
+ padding: 16rpx;
+ box-sizing: border-box;
+ font-weight: 700;
+}
+
+.tableRow {
+ padding: 16rpx;
+ border: 1rpx solid #ccc;
+ border-top: 0rpx;
+}
+
+page {
+ background-color: rgb(228,240,236);
+ font-size: 32rpx;
+ }
+
+
+ .operate {
+ display: flex;
+ padding-top: 24rpx;
+ padding-bottom: 36rpx;
+}
+
+.submit, .cancel {
+ flex: 1;
+}
+
+.submit {
+ margin-right: 30rpx;
+}
diff --git a/pages/workBenchNew/components/workBenchReading/index.js b/pages/workBenchNew/components/workBenchReading/index.js
new file mode 100644
index 0000000..7cda274
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchReading/index.js
@@ -0,0 +1,185 @@
+// pages/workBenchNew/components/workBenchReading/index.js
+import { getMeterReadingRouteList, changeMeterRouteStatus, checkReadingFinish } from "../../../../service/workBench"
+import { alertError, alertSuccess, loadingFunc } from "../../../../utils/index"
+import request from "../../../../utils/request"
+const { OK } = request
+
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ park: "",
+ parkName: "",
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ async init() {
+ const { parkName, park } = this.data;
+ const { code, message, data } = await getMeterReadingRouteList(parkName)
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ this.setData({
+ list: data
+ })
+ },
+ onConfirm(e) {
+ const { data } = e.detail;
+ const that = this;
+ this.setData({
+ parkName: data.name,
+ park: data.id,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init();
+ })
+ })
+ this.onConcal();
+ },
+ onConcal() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ jumpToReading(e) {
+ const { id, type } = e.currentTarget.dataset;
+ wx.navigateTo({
+ url: `/pages/writeReading/index?id=${id}&type=${type}`,
+ })
+ },
+ async changeStartStatus(e) {
+ const that = this;
+ const { id, routeid: routeId } = e.currentTarget.dataset;
+ const { code, message } = await changeMeterRouteStatus({ id, status: 1, routeId })
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ alertSuccess("操作成功")
+ this.init()
+ setTimeout(() => {
+ that.jumpToReading({ currentTarget: { dataset: { id } } })
+ }, 500)
+ },
+ // async checkFinish(id) {
+
+ // return {data, num};
+ // },
+ async changeEndStatus(e) {
+ const that = this;
+ wx.showModal({
+ title: '提示',
+ content: '确认要结束吗?',
+ complete: async (res) => {
+ if (res.cancel) {
+
+ }
+
+ if (res.confirm) {
+ const { id, routeid: routeId } = e.currentTarget.dataset;
+ const { code, message, data, num } = await checkReadingFinish(id || this.data.routeId);
+ if (code !== OK) {
+ alertError(message)
+ return;
+ }
+ 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("操作成功")
+ that.init()
+ }
+ }
+ })
+
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ this.init()
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchReading/index.json b/pages/workBenchNew/components/workBenchReading/index.json
new file mode 100644
index 0000000..d707c66
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchReading/index.json
@@ -0,0 +1,17 @@
+{
+ "usingComponents": {
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "search-select": "/components/searchSelect/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "table": "/components/table/table",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "van-radio": "@vant/weapp/radio/index",
+ "van-radio-group": "@vant/weapp/radio-group/index",
+ "van-dialog": "@vant/weapp/dialog/index",
+ "van-cell": "@vant/weapp/cell/index",
+ "navigator": "/components/navigator/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchReading/index.wxml b/pages/workBenchNew/components/workBenchReading/index.wxml
new file mode 100644
index 0000000..f153059
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchReading/index.wxml
@@ -0,0 +1,71 @@
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 开始抄表
+ 去抄表
+ 结束抄表
+
+
+
+
+
diff --git a/pages/workBenchNew/components/workBenchReading/index.wxss b/pages/workBenchNew/components/workBenchReading/index.wxss
new file mode 100644
index 0000000..c6d9511
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchReading/index.wxss
@@ -0,0 +1 @@
+/* pages/workBenchNew/components/workBenchReading/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.js b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.js
new file mode 100644
index 0000000..086d5a5
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.js
@@ -0,0 +1,130 @@
+// pages/workBench/components/tenement/components/bindMeter/index.js
+// 0015980101
+import { bindMeter, } from "../../../../../../service/tenement"
+import { getWorkMeterDetail } from "../../../../../../service/meter"
+import { alertInfo, alertSuccess } from "../../../../../../utils/index";
+import request from "../../../../../../utils/request"
+import dayjs from "../../../../../../utils/dayjs"
+const { OK } = request
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ tenement: String,
+ tenementName: String,
+ park: String,
+ visible: Boolean,
+ meterId: String,
+ },
+
+ /**
+ * 组件的初始数据
+ */
+ data: {
+ dateTimeShow: false,
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ // this.triggerEvent("close")
+ },
+ onClose() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onChange(e) {
+ const { name } = e.currentTarget.dataset;
+ this.setData({
+ [name]: e.detail
+ })
+ },
+ async onSubmit() {
+ const { overall, critical, peak, valley, deepValley, park, tenement, meter, readAt, flat } = this.data;
+ const { code, message } = await bindMeter(
+ park,
+ tenement,
+ {
+ code: meter,
+ overall:overall? Number(overall) : (overall === "" ? null : overall),
+ critical : critical ? Number(critical) : (critical === "" ? null : critical),
+ peak: peak ? Number(peak) : (peak === "" ? null : peak),
+ flat: flat ? Number(flat) : (flat === "" ? null : flat),
+ valley : valley ? Number(valley) : (valley === "" ? null : valley),
+ deepValley: deepValley ? Number(deepValley) : (deepValley === "" ? null : deepValley),
+ readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
+ }
+ )
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("绑定成功")
+ this.triggerEvent("ok")
+ },
+ onConfirm(e) {
+ const { type, data } = e.detail;
+ const that = this;
+ switch(type) {
+ case "meter":
+ this.setData({
+ meter: data.id,
+ meterName: data.address,
+ show: false,
+ })
+ this.getMeterDetail(data.id);
+ break;
+ }
+ },
+ async getMeterDetail(id) {
+ const { code, message, data } = await getWorkMeterDetail(id)
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ 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,
+ deepValley: data?.deepValley ? Number(data?.deepValley || 0) : null,
+ meter04kvType: data?.meter04kvType,
+ status: data?.breakType ? '合闸' : "分闸",
+ })
+ },
+ dateTimeConfirm(e) {
+ this.setData({ readAt: e.detail.time, dateTimeShow: false })
+ },
+ dateTimeCancal(e) {
+ this.setData({ dateTimeShow: false })
+ },
+ onTimeFocus() {
+ this.setData({ dateTimeShow: true })
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.json b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.json
new file mode 100644
index 0000000..3c2b870
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-dialog": "@vant/weapp/dialog/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "date-time-picker": "/components/DateTimePicker/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.wxml b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.wxml
new file mode 100644
index 0000000..96d2d15
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.wxml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.wxss b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.wxss
new file mode 100644
index 0000000..3fb490f
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/bindMeter/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/tenement/components/bindMeter/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.js b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.js
new file mode 100644
index 0000000..da2774b
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.js
@@ -0,0 +1,103 @@
+// pages/workBench/components/tenement/components/createTenement/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ this.setData(options)
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+ onBuildingFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "建筑",
+ type: 'building'
+ })
+ },
+ onFeeTypeFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "建筑",
+ type: 'building'
+ })
+ },
+ beforeBack() {
+ let pages = getCurrentPages(); // 获取当前页面栈
+ let prevPage = pages[pages.length - 2]; // 获取上一页
+ const { tenement = '', tenementName = '', park = '', parkName = '' } = this.data;
+ // 修改上一页的数据
+ prevPage.setData({
+ needBackShow: true,
+ tenement,
+ tenementName,
+ park,
+ parkName
+ });
+
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.json b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.json
new file mode 100644
index 0000000..b97afff
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.json
@@ -0,0 +1,8 @@
+{
+ "usingComponents": {
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "navigator": "/components/navigator/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.wxml b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.wxml
new file mode 100644
index 0000000..e1f06bb
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.wxml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+ 选择
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.wxss b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.wxss
new file mode 100644
index 0000000..45f4ed9
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/createTenement/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/tenement/components/createTenement/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.js b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.js
new file mode 100644
index 0000000..f51c36d
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.js
@@ -0,0 +1,124 @@
+// pages/workBench/components/tenement/components/kaihu/index.js
+import { alertInfo, alertSuccess } from "../../../../../../utils/index"
+import { createBackTenement, updateTenementBackInfo } from "../../../../../../service/tenement"
+import request from "../../../../../../utils/request"
+import { payWays, feeType as feeTypeList } from "../../../../../../utils/data";
+const { OK } = request;
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ park: String,
+ visible: Boolean,
+ defaultValue: Object,
+ editType: String,
+ title: String,
+ },
+ observers: {
+ 'defaultValue': function(defaultValue) {
+ const { fullName, shortName, phone, id, feeType, address, building, buildingName, contact,} = defaultValue;
+ this.setData({
+ name: fullName,
+ shortName,
+ phone, id, feeType, address, building, buildingName, contact,
+ feeTypeName: feeTypeList[feeType]
+ })
+ }
+ },
+ /**
+ * 组件的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ onBuildingFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "建筑",
+ type: 'building'
+ })
+ },
+ onFeeTypeFocus() {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "收费类型",
+ type: 'feeType'
+ })
+ },
+ onConfirm(e) {
+ const { type, data, way } = e.detail;
+ switch(type) {
+ case "building":
+ this.setData({
+ building: data.id,
+ buildingName: data.name,
+ show: false,
+ })
+ return;
+ case "feeType":
+ this.setData({
+ feeTypeName: data,
+ feeType: way,
+ show: false,
+ })
+ }
+ },
+
+ onCancel() {
+ this.setData({ show: false })
+ },
+ onClose() {
+ this.triggerEvent("close")
+ },
+ onChange(e) {
+ const { name } = e.currentTarget.dataset;
+ this.setData({
+ [name]: e.detail
+ })
+ },
+ clear() {
+ this.setData({
+ name: "", shortName: "", address: "", contact: "", phone: "",
+ building: "", feeType: "", buildingName: "", feeTypeName: "", id,
+ })
+ },
+ async onSubmit() {
+ const { name, shortName, address, contact, phone, building, feeType, park, editType, id } = this.data;
+ if (editType === "add") {
+ const { code, message } = await createBackTenement(park, { name, shortName, address, contact, phone, building, feeType })
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("开户成功")
+ this.triggerEvent("ok")
+ return;
+ }
+ const { code, message } = await updateTenementBackInfo(park, id, { name, shortName, address, contact, phone, building, feeType })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("编辑成功")
+ this.triggerEvent("ok")
+ }
+ },
+
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.json b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.json
new file mode 100644
index 0000000..f5d5fc8
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "navigator": "/components/navigator/index",
+ "van-dialog": "@vant/weapp/dialog/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.wxml b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.wxml
new file mode 100644
index 0000000..04ff43a
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.wxml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+ 选择
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.wxss b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.wxss
new file mode 100644
index 0000000..d4caef1
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/kaihu/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/tenement/components/kaihu/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.js b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.js
new file mode 100644
index 0000000..883c9e5
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.js
@@ -0,0 +1,109 @@
+// pages/workBench/components/tenement/components/bindMeter/index.js
+
+import { unbindMeter, } from "../../../../../../service/tenement"
+import request from "../../../../../../utils/request"
+import { alertInfo, alertSuccess } from "../../../../../../utils/index";
+const { OK } = request
+import { getWorkMeterDetail } from "../../../../../../service/meter"
+import dayjs from "../../../../../../utils/dayjs"
+
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ tenement: String,
+ park: String,
+ tenementName: String,
+ meterId: String,
+ meterAddress: String,
+ visible:Boolean,
+ },
+ observers: {
+ "meterId": function(newValue) {
+ this.getMeterDetail(newValue)
+ }
+ },
+ /**
+ * 组件的初始数据
+ */
+ data: {
+ dateTimeShow: false
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'meter'
+ })
+ },
+ async getMeterDetail(id) {
+ const { code, message, data } = await getWorkMeterDetail(id)
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ 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,
+ deepValley: data?.deepValley ? Number(data?.deepValley || 0) : null,
+ meter04kvType: data?.meter04kvType,
+ status: data?.breakType ? '合闸' : "分闸"
+ })
+ },
+ onClose() {
+ this.triggerEvent("close")
+ },
+ onChange(e) {
+ const { name } = e.currentTarget.dataset;
+ this.setData({
+ [name]: e.detail
+ })
+ },
+ async onSubmit() {
+ const { overall, critical, peak, valley, deepValley, park, tenement, meterId,readAt, flat } = this.data;
+ const { code, message, } = await unbindMeter(
+ park,
+ tenement,
+ meterId,
+ {
+ overall:overall? Number(overall) : (overall === "" ? null : overall),
+ critical : critical ? Number(critical) : (critical === "" ? null : critical),
+ peak: peak ? Number(peak) : (peak === "" ? null : peak),
+ flat: flat ? Number(flat) : (flat === "" ? null : flat),
+ valley : valley ? Number(valley) : (valley === "" ? null : valley),
+ deepValley: deepValley ? Number(deepValley) : (deepValley === null ? "" : deepValley),
+ readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
+ });
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("解绑成功")
+ this.triggerEvent("ok")
+ },
+ dateTimeConfirm(e) {
+ this.setData({ readAt: e.detail.time, dateTimeShow: false })
+ },
+ dateTimeCancal(e) {
+ this.setData({ dateTimeShow: false })
+ },
+ onTimeFocus() {
+ this.setData({ dateTimeShow: true })
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.json b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.json
new file mode 100644
index 0000000..3c2b870
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-dialog": "@vant/weapp/dialog/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "date-time-picker": "/components/DateTimePicker/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.wxml b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.wxml
new file mode 100644
index 0000000..4c225f3
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.wxml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.wxss b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.wxss
new file mode 100644
index 0000000..3fb490f
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/components/unBindMeter/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/tenement/components/bindMeter/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/index.js b/pages/workBenchNew/components/workBenchTenement/index.js
new file mode 100644
index 0000000..99faf2e
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/index.js
@@ -0,0 +1,242 @@
+// pages/workBenchNew/components/workBenchTenement/index.js
+import { alertInfo, alertSuccess } from "../../../../utils/index";
+import { getTenementBackInfo, unbindMeter, } from "../../../../service/tenement"
+import { getBackTenementMeters, } from "../../../../service/meter"
+import request from "../../../../utils/request"
+const { OK } = request
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ defaultValue: {},
+ editType: "",
+ meterList: [],
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ const { park, parkName, name, id } = options
+ this.setData({
+ park,
+ parkName,
+ tenementName: name,
+ tenement: id
+ })
+ if (id) {
+ this.getTenementInfo();
+ }
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onTenementFocus(e) {
+ const { park } = this.data;
+ const that = this;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "商户",
+ type: 'tenement'
+ })
+ },
+ async init() {
+
+ },
+ async getTenementInfo() {
+ const { tenement, park } = this.data;
+ if (!tenement || !park) {
+ return;
+ }
+ const { code, message, tenement: data } = await getTenementBackInfo(park, tenement)
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ tenementInfo: data,
+ })
+ },
+ onConfirm(e) {
+ const { type, data } = e.detail;
+ const that = this;
+ switch(type) {
+ case "park":
+ this.setData({
+ park: data.id,
+ parkName: data.name,
+ show: false,
+ })
+ break;
+ case "tenement":
+ this.setData({
+ tenement: data.id,
+ tenementName: data.name,
+ show: false,
+ } , () => {
+ that.getTenementInfo();
+ that.getTenementMeters();
+ })
+ break;
+ }
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ })
+ },
+ startKh() {
+ this.setData({
+ kaihuVisible: true,
+ editType: "add",
+ title: "开户",
+ defaultValue: { feeType: 0, feeTypeName: "华昌宝能收费" }
+ })
+ },
+ startUpdateInfo() {
+ const { tenementInfo } = this.data;
+ this.setData({
+ kaihuVisible: true,
+ defaultValue: tenementInfo,
+ editType: "update",
+ title: "开户"
+ })
+ },
+ async getTenementMeters() {
+ const { park, tenement } = this.data;
+ const { code, message, data } = await getBackTenementMeters(park, tenement)
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ this.setData({ meterList: data });
+ },
+ onKaihuClose() {
+ this.setData({
+ kaihuVisible: false,
+ defaultValue: {},
+ title: "编辑",
+ editType: "",
+ })
+ },
+ onBindClose() {
+ this.setData({
+ bindVisible: false,
+ })
+ },
+ async onKaihuConfirm() {
+ this.getTenementInfo();
+ this.onKaihuClose();
+ },
+ unbind(e) {
+ const that = this;
+ const { park, tenement } = this.data;
+ const { address, id } = e.currentTarget.dataset;
+ this.setData({
+ unbindVisible: true,
+ meterId: id,
+ meterAddress: address
+ })
+ // wx.showModal({
+ // title: '提示',
+ // content: `确认要解绑${address}吗?`,
+ // complete: async (res) => {
+ // if (res.cancel) {
+
+ // }
+
+ // if (res.confirm) {
+ // const { code, message, } = await unbindMeter(park, tenement, id);
+ // if (code !== OK) {
+ // alertInfo(message)
+ // return
+ // }
+ // alertSuccess("解绑成功")
+ // that.getTenementMeters();
+ // return
+ // }
+ // }
+ // })
+ },
+ onUnbindOk() {
+ this.setData({
+ unbindVisible: false,
+ meterId: "",
+ meterAddress: "",
+ })
+ this.getTenementMeters();
+ },
+ startBind() {
+ this.setData({
+ bindVisible: true
+ })
+ },
+ onBindOk() {
+ this.setData({
+ bindVisible: false,
+ })
+ this.getTenementMeters();
+ },
+ onTimeConfirm(e) {
+
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/index.json b/pages/workBenchNew/components/workBenchTenement/index.json
new file mode 100644
index 0000000..b965871
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/index.json
@@ -0,0 +1,16 @@
+{
+ "usingComponents": {
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "search-select": "/components/searchSelect/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "kaihu": "./components/kaihu/index",
+ "bindMeter": "./components/bindMeter/index",
+ "unBindMeter": "./components/unBindMeter/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "navigator": "/components/navigator/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchTenement/index.wxml b/pages/workBenchNew/components/workBenchTenement/index.wxml
new file mode 100644
index 0000000..bf34e00
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/index.wxml
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+ 绑定电表
+ 修改信息
+
+ 开户
+
+
+
+
+
+
+
+
+
+
+ {{tenementInfo.shortName}}
+ {{tenementInfo.fullName}}
+
+
+ 华昌宝能收费
+ 物业代收1
+ 物业代收2
+ 物业代收线损
+ {{tenementInfo.contact}} {{tenementInfo.phone}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.address }}
+ {{ item.meterSn }}
+
+
+ 解绑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/workBenchNew/components/workBenchTenement/index.wxss b/pages/workBenchNew/components/workBenchTenement/index.wxss
new file mode 100644
index 0000000..09f3390
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchTenement/index.wxss
@@ -0,0 +1,70 @@
+/* pages/workBench/components/tenement/index.wxss */
+
+.table {
+ width: 890rpx;
+}
+
+.classWrapper {
+ width: 100vw;
+ overflow-x: auto;
+}
+
+.thead {
+ display: flex;
+ flex-wrap: nowrap;
+ border-bottom: 1rpx solid #EEEEEE;
+}
+
+.thead .th {
+ padding: 20rpx;
+ white-space: nowrap;
+ text-align: center;
+ box-sizing: border-box;
+
+}
+
+.tbody .tr {
+ padding: 20rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+}
+
+.tbody .th {
+ word-break: break-all;
+ text-align: center;
+}
+
+.primaryTextBtn {
+ color: #1989fa;
+}
+
+
+.customTable {
+ margin: 20rpx;
+ font-size: 32rpx;
+}
+
+.customTableTile {
+ background-color: var(--light-green);
+ box-sizing: border-box;
+ font-weight: 700;
+}
+
+.tableTitleRow {
+ padding: 16rpx;
+}
+
+.tableRow {
+
+ padding: 16rpx;
+ border: 1rpx solid #ccc;
+ border-top: 0rpx;
+ font-size: 32rpx;
+}
+
+page {
+ background-color: rgb(228,240,236);
+ font-size: 32rpx;
+ }
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.js b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.js
new file mode 100644
index 0000000..3fcc8dd
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.js
@@ -0,0 +1,74 @@
+import { alertInfo, alertSuccess } from "../../../../../../utils/index";
+import { createTenementWxUser } from "../../../../../../service/tenement";
+import request from "../../../../../../utils/request"
+const { OK } = request
+// pages/workBench/components/account/components/editModal/index.js
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ type: String,
+ title: String,
+ visible: Boolean,
+ onCancel: Function,
+ park: String,
+ tenement: String,
+ parentPhone:String,
+ parentName:String,
+ parentId:String,
+ },
+ observers: {
+ "parentName,parentId,parentPhone": function(newName, newId, newPhone) {
+ this.setData({ data: { name: newName, id: newId, phone: newPhone } })
+ },
+ },
+ /**
+ * 组件的初始数据
+ */
+ data: {
+ data: { name: "", phone: "", id: "" }
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ async onSubmit() {
+ const { data = {}, tenement, park, type } = this.data;
+ if (!data.phone) {
+ alertInfo("请输入手机号")
+ return
+ }
+ if (!data.name) {
+ alertInfo("请输入昵称")
+ return
+ }
+ const { code, message } = await createTenementWxUser({ ...data, tenement, park })
+ if (code !== OK) {
+ alertInfo(message)
+ this.triggerEvent("cancel")
+ return;
+ }
+ alertSuccess("操作成功")
+ this.triggerEvent("ok")
+ this.setData({ data: {} })
+ return;
+
+
+ },
+ onChange(e) {
+ const { name } = e.currentTarget.dataset;
+ const newData = this.data.data;
+ newData[name] = e.detail;
+ this.setData({
+ data: newData,
+ })
+ },
+ onCancel() {
+ this.setData({ data: {} })
+ this.triggerEvent("cancel")
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.json b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.json
new file mode 100644
index 0000000..953d7ac
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-dialog": "@vant/weapp/dialog/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.wxml b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.wxml
new file mode 100644
index 0000000..cbf0761
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.wxml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.wxss b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.wxss
new file mode 100644
index 0000000..5ddf238
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/editModal/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/account/components/editModal/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.js b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.js
new file mode 100644
index 0000000..6c15979
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.js
@@ -0,0 +1,68 @@
+// pages/workBench/components/account/components/updatePhoneModa/index.js
+import { alertInfo, alertSuccess } from "../../../../../../utils/index";
+import { updateAdminPhone } from "../../../../../../service/tenement";
+import request from "../../../../../../utils/request"
+const { OK } = request
+Component({
+
+ /**
+ * 组件的属性列表
+ */
+ properties: {
+ type: String,
+ title: String,
+ visible: Boolean,
+ onCancel: Function,
+ park: String,
+ tenement: String,
+ parentPhone:String,
+ parentName:String,
+ parentId:String,
+ },
+ observers: {
+ "parentPhone": function (newPhone) {
+ this.setData({ phone: newPhone })
+ }
+ },
+ /**
+ * 组件的初始数据
+ */
+ data: {
+ phone: "",
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ async onSubmit() {
+ const { phone, tenement, park, type } = this.data;
+ if (!phone) {
+ alertInfo("请输入手机号")
+ return
+ }
+ const { code, message } = await updateAdminPhone({tenement, phone: phone })
+ if (code !== OK) {
+ alertInfo(message)
+ this.triggerEvent("cancel")
+ return;
+ }
+ alertSuccess("操作成功")
+ this.triggerEvent("ok")
+ this.setData({ phone: "" })
+ return;
+
+
+ },
+ onChange(e) {
+
+ this.setData({
+ phone: e.detail,
+ })
+ },
+ onCancel() {
+ this.setData({ phone: "" })
+ this.triggerEvent("cancel")
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.json b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.json
new file mode 100644
index 0000000..953d7ac
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-dialog": "@vant/weapp/dialog/index",
+ "search-select": "/components/searchSelect/index",
+ "van-field": "@vant/weapp/field/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.wxml b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.wxml
new file mode 100644
index 0000000..b222848
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.wxml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.wxss b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.wxss
new file mode 100644
index 0000000..d296a65
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/components/updatePhoneModal/index.wxss
@@ -0,0 +1 @@
+/* pages/workBench/components/account/components/updatePhoneModa/index.wxss */
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/index.js b/pages/workBenchNew/components/workBenchWxUser/index.js
new file mode 100644
index 0000000..7525b41
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/index.js
@@ -0,0 +1,224 @@
+// pages/workBenchNew/components/workBenchWxUser/index.js
+import request from "../../../../utils/request"
+import { getTenementBackInfo, updateUserApp} from "../../../../service/tenement"
+import { getBackApproveList, removeUser } from "../../../../service/user"
+import { alertInfo, alertSuccess, wxModal } from "../../../../utils/index"
+const { OK } = request
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ list: [],
+ tenementInfo: {},
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onTenementFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "商户",
+ type: 'tenement'
+ })
+ },
+ onConfirm(e) {
+ const that = this;
+ const { type, data } = e.detail;
+ switch(type) {
+ case "park":
+ this.setData({
+ park: data.id,
+ parkName: data.name,
+ show: false,
+ })
+ break;
+ case "tenement":
+ this.setData({
+ tenement: data.id,
+ tenementName: data.name,
+ show: false,
+ }, () => {
+ that.initUserList();
+ that.getTenementInfo();
+ })
+ break;
+ }
+ },
+ async setAdmin(e) {
+ const { id, name } = e.currentTarget.dataset;
+ const { tenement } = this.data;
+ await wxModal({ content: `确认要将${name}设置为管理吗?` })
+ const { code, message } = await updateUserApp({ userId: id, type: 2, tenement: tenement })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("转交成功")
+ this.initUserList();
+ this.getTenementInfo();
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ })
+ },
+ handleDelete(e) {
+ const { id, name } = e.currentTarget.dataset;
+ const { tenement } = this.data;
+ const that = this;
+ wx.showModal({
+ title: '提示',
+ content: `确认要移除${name}吗?`,
+ complete: async (res) => {
+ if (res.cancel) {
+
+ }
+
+ if (res.confirm) {
+ const { code, message } = await removeUser(id, tenement)
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ alertSuccess("删除成功")
+ that.initUserList();
+ }
+ }
+ })
+ },
+ onEditConfirm() {
+ this.initUserList()
+ this.handleCancel();
+ },
+ onUpdatePhoneConfirm() {
+ this.setData({ parentPhone: "", phone: "", type: "", title: "" })
+ this.getTenementInfo();
+ this.initUserList()
+ },
+ async getTenementInfo() {
+ const { tenement, park } = this.data;
+ const { code, message, tenement: data } = await getTenementBackInfo(park, tenement)
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ tenementInfo: data,
+ })
+ },
+ async initUserList() {
+ const { tenement } = this.data;
+ const { code, message, data } = await getBackApproveList(tenement, 1);
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ list: data,
+ })
+ },
+ handleAddSon() {
+ this.setData({
+ visible: true,
+ type: "add",
+ title: "新建子账号"
+ })
+ },
+ handleChangeMain() {
+ const { tenementInfo = {} } = this.data;
+ this.setData({
+ updatePhoneVisible: true,
+ type: "update",
+ title: "编辑管理员",
+ parentPhone: tenementInfo.phone,
+ // name: main.WechatUserName,
+ // id: main.WechatUserID,
+ })
+ },
+ handleUpdatePhoneCancel() {
+ this.setData({
+ updatePhoneVisible: false,
+ type: "",
+ phone: "",
+ parentPhone: "",
+ name: "",
+ id: "",
+ })
+ },
+ handleCancel() {
+ this.setData({
+ visible: false,
+ type: "",
+ phone: "",
+ name: "",
+ id: "",
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/index.json b/pages/workBenchNew/components/workBenchWxUser/index.json
new file mode 100644
index 0000000..654f431
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/index.json
@@ -0,0 +1,22 @@
+{
+ "usingComponents": {
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "search-select": "/components/searchSelect/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "table": "/components/table/table",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "van-radio": "@vant/weapp/radio/index",
+ "van-radio-group": "@vant/weapp/radio-group/index",
+ "van-tag": "@vant/weapp/tag/index",
+ "edit-modal": "./components/editModal/index",
+ "updatePhoneModal": "./components/updatePhoneModal/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index",
+ "van-image": "@vant/weapp/image/index",
+ "navigator": "/components/navigator/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/index.wxml b/pages/workBenchNew/components/workBenchWxUser/index.wxml
new file mode 100644
index 0000000..3e43d29
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/index.wxml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+ 添加子账号
+ 修改主账号
+
+
+
+
+
+
+
+
+
+ {{tenementInfo.shortName}}
+ {{tenementInfo.fullName}}
+
+
+
+
+
+
+
+
+
+ 华昌宝能收费
+ 物业代收1
+ 物业代收2
+ 物业代收线损
+ {{tenementInfo.contact}} {{tenementInfo.phone}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.WechatUserName }}
+ {{ item.WechatPhone }}
+
+
+
+
+
+
+
+
+
+
+
+ 管理员
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/components/workBenchWxUser/index.wxss b/pages/workBenchNew/components/workBenchWxUser/index.wxss
new file mode 100644
index 0000000..007d999
--- /dev/null
+++ b/pages/workBenchNew/components/workBenchWxUser/index.wxss
@@ -0,0 +1,71 @@
+/* pages/workBench/components/account/index.wxss */
+
+.operateBox {
+ margin: 20rpx;
+}
+
+.table {
+ width: 890rpx;
+
+}
+
+.classWrapper {
+ width: 100vw;
+ overflow-x: auto;
+}
+
+.thead {
+ display: flex;
+ flex-wrap: nowrap;
+ border-bottom: 1rpx solid #EEEEEE;
+}
+
+.thead .th {
+ padding: 20rpx;
+ white-space: nowrap;
+ text-align: center;
+ box-sizing: border-box;
+
+}
+
+
+.tr {
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+}
+
+.tbody .th {
+ word-break: break-all;
+ text-align: center;
+}
+.primaryTextBtn {
+ color: #1989fa;
+ display: inline-block;
+}
+
+.customTable {
+ margin: 20rpx;
+ font-size: 32rpx;
+}
+
+.customTableTile {
+ background-color: var(--light-green);
+ box-sizing: border-box;
+}
+
+.tableTitleRow {
+ padding: 16rpx;
+ font-weight: 700;
+}
+
+.tableRow {
+ padding: 16rpx;
+ border: 1rpx solid #ccc;
+ border-top: 0rpx;
+}
+
+page {
+ background-color: rgb(228,240,236);
+ font-size: 32rpx;
+ }
\ No newline at end of file
diff --git a/pages/workBenchNew/index.js b/pages/workBenchNew/index.js
new file mode 100644
index 0000000..dfec314
--- /dev/null
+++ b/pages/workBenchNew/index.js
@@ -0,0 +1,142 @@
+// pages/workBench/index.js
+import { getWorkBenchHome } from "../../service/workBench"
+import { alertError, alertSuccess, loadingFunc } from "../../utils/index"
+import request from "../../utils/request"
+const { OK } = request
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ this.init()
+ const user = wx.getStorageSync('user')
+ this.setData({
+ workStatus: !!user.workStatus
+ })
+ },
+ async init() {
+ const { code, message, data } = await getWorkBenchHome()
+ if (code !== OK) {
+ alertError(message)
+ return
+ }
+ this.setData({ data })
+ },
+ jumpToMeter() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/workBenchMeter/index',
+ })
+ },
+ jumpToTenement() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/workBenchTenement/index',
+ })
+ },
+ jumpToPay() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/workBenchApprove/index',
+ })
+ },
+ jumpToWxUser() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/workBenchWxUser/index',
+ })
+ },
+ jumpToRoute() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/workBenchReading/index',
+ })
+ },
+ jumpToHome() {
+ wx.switchTab({
+ url: '/pages/home/index',
+ })
+ },
+ jumpToRecharge() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/recharge/index',
+ })
+ },
+ jumpToInstallMeter() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/installMeter/index',
+ })
+ },
+ jumpToUninstallMeter() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/uninstallMeter/index',
+ })
+ },
+ jumpToKaihu() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/kaihu/index',
+ })
+ },
+ jumpToMeterControl() {
+ wx.navigateTo({
+ url: '/pages/workBenchNew/components/workBenchMeterControl/index',
+ })
+ },
+ workOrder() {
+ wx.navigateTo({
+ url: '/pages/workBenchTodoList/index',
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchNew/index.json b/pages/workBenchNew/index.json
new file mode 100644
index 0000000..abce341
--- /dev/null
+++ b/pages/workBenchNew/index.json
@@ -0,0 +1,10 @@
+{
+ "usingComponents": {
+ "navigator": "/components/navigator/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "van-button": "@vant/weapp/button/index",
+ "operate-button": "./components/operateButton/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchNew/index.wxml b/pages/workBenchNew/index.wxml
new file mode 100644
index 0000000..ec91b45
--- /dev/null
+++ b/pages/workBenchNew/index.wxml
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+ 通用操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 现场操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 回到首页
+
+
\ No newline at end of file
diff --git a/pages/workBenchNew/index.wxss b/pages/workBenchNew/index.wxss
new file mode 100644
index 0000000..c220f08
--- /dev/null
+++ b/pages/workBenchNew/index.wxss
@@ -0,0 +1,48 @@
+/* pages/workBench/index.wxss */
+
+.wrapper {
+ margin:20rpx 0rpx;
+}
+
+.contentWrapper {
+ background-color: white;
+ width: 100%;
+ margin-bottom: 24rpx;
+}
+
+.image {
+ padding: 50rpx 0;
+ display: flex;
+ justify-content: center;
+}
+
+.title {
+ font-size: 32rpx;
+ font-weight: 600;
+ /* margin-top: 30rpx; */
+ margin-bottom: 20rpx;
+ text-align: center;
+}
+
+.number {
+ font-size: 40rpx;
+ font-weight: 700;
+ color: var(--deep-green);
+ text-align: center;
+ padding-bottom: 30rpx;
+}
+
+.imageContent {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 12rpx;
+ background-color: var(--light-green);
+}
+
+page {
+ background-color: rgb(242,243,245);
+}
+
+.operate {
+ padding-bottom: 24rpx;
+}
\ No newline at end of file
diff --git a/pages/workBenchTodoList/index.js b/pages/workBenchTodoList/index.js
new file mode 100644
index 0000000..51ea683
--- /dev/null
+++ b/pages/workBenchTodoList/index.js
@@ -0,0 +1,295 @@
+// pages/workBenchTodoList/index.js
+import request from "../../utils/request"
+import { getWorkOrderList, doNoticeFlow } from "../../service/workBench"
+import { alertInfo, alertSuccess, loadingFunc } from "../../utils/index";
+import { noticeFlowType as noticeFlowTypeList } from "../../utils/data"
+const { OK } = request
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ page: 1,
+ size: 20,
+ noticeFlowTypeList,
+ actionItems: [{
+ name: '详情',
+ value: 'detail'
+ }],
+ },
+ showActionMenu(e) {
+ const { id, status } = e.currentTarget.dataset;
+ this.setData({
+ currentActionSheet: id,
+ actionItems: status === 0 ? [{
+ name: '详情',
+ value: 'detail'
+ }, {
+ name: '确认',
+ value: 'ok'
+ }] : [{
+ name: '详情',
+ value: 'detail'
+ }]
+ });
+},
+onClearPark() {
+ const that = this;
+ this.setData({ park: "", parkName: "", meter: "", meterName: "" }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ })
+},
+onClearMeter() {
+ const that = this;
+ this.setData({ meter: "", meterName: "" }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ })
+},
+onClearType() {
+ const that = this;
+ this.setData({ noticeFlowType: "", noticeFlowTypeName: "" }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ })
+},
+onClearStatus() {
+ const that = this;
+ this.setData({ noticeFlowStatus: "", noticeFlowStatusName: "" }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ })
+},
+hideActionMenu() {
+ this.setData({
+ currentActionSheet: ""
+ });
+},
+onMenuSelect(e) {
+ const {
+ value
+ } = e.detail;
+ const id = e.currentTarget.dataset.id;
+
+ switch(value) {
+ case "detail":
+ this.jumpToDetail(id);
+ break;
+ case "ok":
+ this.handleDoNotice(id);
+ break;
+ }
+},
+handleDoNoticeBtn(e) {
+ const id = e.currentTarget.dataset.id;
+ this.handleDoNotice(id)
+},
+ async handleDoNotice(id) {
+ const { code, message } = await doNoticeFlow(id)
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("确认成功")
+ const that = this;
+ setTimeout(() => {
+ that.init();
+ }, 300)
+ },
+ jumpToDetail(id) {
+
+ wx.navigateTo({
+ url: '/pages/workOrderDetail/index?id=' + id,
+ })
+ },
+ listJumpToDetail(e) {
+ const { id } = e.currentTarget.dataset;
+ wx.navigateTo({
+ url: '/pages/workOrderDetail/index?id=' + id,
+ })
+ },
+ onConfirm(e) {
+ const { type, data = {}, way } = e.detail;
+ const that = this;
+ switch(type) {
+ case "park":
+ this.setData({
+ park: data?.id,
+ parkName: data?.name,
+ })
+ break;
+ case "tenement":
+ this.setData({
+ tenement: data.id,
+ tenementName: data.name,
+ })
+ break;
+
+ case "noticeFlowType":
+ this.setData({
+ noticeFlowType: way,
+ noticeFlowTypeName: data,
+ page: 1,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ });
+ break;
+ case "noticeFlowStatus":
+ this.setData({
+ noticeFlowStatus: way,
+ noticeFlowStatusName: data,
+ page: 1,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ });
+ break;
+ case "workOrderMeter":
+ this.setData({
+ meter: data?.meter_id,
+ meterName: data?.address,
+ meterInfo: data,
+ page: 1,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ });
+ break;
+ }
+ this.onCancel();
+ },
+ onCancel() {
+ this.setData({
+ show: false,
+ title: "",
+ type: "",
+ })
+ },
+ onParkFocus(e) {
+ this.setData({
+ show: true,
+ title: "园区",
+ type: 'park'
+ })
+ },
+ onNoticeFlowFocus() {
+ this.setData({
+ show: true,
+ title: "类型",
+ type: 'noticeFlowType'
+ })
+ },
+ onNoticeFlowStatusFocus() {
+ this.setData({
+ show: true,
+ title: "确认状态",
+ type: 'noticeFlowStatus'
+ })
+ },
+ onMeterFocus(e) {
+ const { park } = this.data;
+ if (!park) {
+ alertInfo("请先选择园区")
+ return;
+ }
+ this.setData({
+ show: true,
+ title: "电表",
+ type: 'workOrderMeter'
+ })
+ },
+ onChangePage(e) {
+ const that = this;
+ this.setData({
+ page: e.detail.currentIndex,
+ }, () => {
+ loadingFunc(async () => {
+ await that.init()
+ })
+ })
+ },
+ async init() {
+ const { page, size, park, tenement = "", meter = "", noticeFlowType, noticeFlowStatus, time } = this.data;
+
+ const { code, message, data, total } = await getWorkOrderList({ page, size, park, tenement, meter, type: noticeFlowType, time, status: noticeFlowStatus })
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ list: Array.isArray(data) ? data?.map(item => {
+ item.time = item?.created_at?.slice(0, 10)
+ item.address = item?.target?.meter_data?.address;
+ return item;
+ }) : [],
+ totalPage: Math.ceil(total / size),
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ loadingFunc(async () => {
+ await this.init()
+ })
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workBenchTodoList/index.json b/pages/workBenchTodoList/index.json
new file mode 100644
index 0000000..8705131
--- /dev/null
+++ b/pages/workBenchTodoList/index.json
@@ -0,0 +1,23 @@
+{
+ "usingComponents": {
+ "navigator": "/components/navigator/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-popup": "@vant/weapp/popup/index",
+ "van-row": "@vant/weapp/row/index",
+ "van-col": "@vant/weapp/col/index",
+ "search-select": "/components/searchSelect/index",
+ "van-button": "@vant/weapp/button/index",
+ "searchSelectWrapper": "/components/searchSelectWrapper/index",
+ "van-empty": "@vant/weapp/empty/index",
+ "table": "/components/table/table",
+ "pagination": "/components/pagination/index",
+ "empty": "/components/empty/index",
+ "van-radio": "@vant/weapp/radio/index",
+ "van-radio-group": "@vant/weapp/radio-group/index",
+ "van-dialog": "@vant/weapp/dialog/index",
+ "van-icon": "@vant/weapp/icon/index",
+ "van-action-sheet": "@vant/weapp/action-sheet/index"
+
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workBenchTodoList/index.wxml b/pages/workBenchTodoList/index.wxml
new file mode 100644
index 0000000..7cdcb55
--- /dev/null
+++ b/pages/workBenchTodoList/index.wxml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 时间
+ 类型
+ 电表地址
+ 状态
+ 操作
+
+
+
+
+
+
+ {{ item.time }}
+
+
+ {{ noticeFlowTypeList[item.types - 1] }}
+
+
+
+ {{ item.address }}
+
+
+ 确认
+ 已确认
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/workBenchTodoList/index.wxss b/pages/workBenchTodoList/index.wxss
new file mode 100644
index 0000000..ea6fa96
--- /dev/null
+++ b/pages/workBenchTodoList/index.wxss
@@ -0,0 +1,71 @@
+/* pages/workBenchTodoList/index.wxss */
+
+.table {
+ width: 500rpx;
+
+}
+
+.tableWrapper {
+ width: 100vw;
+ overflow-x: auto;
+}
+
+.thead {
+
+ display: flex;
+ flex-wrap: nowrap;
+
+}
+
+.thead .th {
+ padding: 10rpx;
+ white-space: nowrap;
+ text-align: center;
+ box-sizing: border-box;
+}
+
+.primaryTextBtn {
+ color: #1989fa;
+ }
+
+.tbody {
+ width: 500rpx;
+}
+
+.tbody .tr {
+ padding: 10rpx;
+ border-bottom: 1rpx solid #EEEEEE;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+}
+
+.tbody .tr {
+ word-break: break-all;
+ text-align: center;
+}
+
+.more-icon {
+ padding: 20rpx;
+ color: #1989fa;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+/* 基础标签样式 */
+.tag {
+ display: inline-block;
+ padding: 4px 5px;
+ margin-right: 0px;
+ border-radius: 16px;
+ background: #07c160;
+ color: white;
+ font-size: 25rpx;
+ }
+
+ /* 激活状态样式 */
+ .tag.active {
+ background: #07c160;
+ color: white;
+ }
\ No newline at end of file
diff --git a/pages/workOrderDetail/index.js b/pages/workOrderDetail/index.js
new file mode 100644
index 0000000..f6e279e
--- /dev/null
+++ b/pages/workOrderDetail/index.js
@@ -0,0 +1,119 @@
+import { loadingFunc, alertSuccess, alertInfo } from "../../utils/index";
+import request from "../../utils/request"
+import { getNoticeFlowDetail, doNoticeFlow } from "../../service/workBench"
+
+const { OK } = request;
+
+// pages/workOrderDetail/index.js
+Page({
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ detail: {},
+ header: [
+ // { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address },
+ { title: '操作人',renderBody: (item) => { return item.user_name } },
+ { title: '状态',renderBody: (item) => { return item.status === 0 ? "未确认" : "已确认" } },
+ ],
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ const { id } = options;
+ const that = this;
+ loadingFunc(async () => {
+ that.getDetail(id)
+ })
+ },
+ showImage() {
+ this.setData({
+ imageShow: true
+ })
+ },
+ onClose() {
+ this.setData({
+ imageShow: false
+ })
+ },
+ goback() {
+ wx.navigateBack();
+ },
+ async onSubmit() {
+ const {detail} = this.data;
+ const {id} = detail;
+ const { code, message } = await doNoticeFlow(id)
+ if (code !== OK) {
+ alertInfo(message)
+ return
+ }
+ alertSuccess("确认成功")
+ const that = this;
+ setTimeout(() => {
+ loadingFunc(async () => {
+ await that.getDetail(id)
+ })
+ }, 300)
+
+ },
+ async getDetail(id) {
+ const { code, data ,message } = await getNoticeFlowDetail(id)
+ if (code !== OK) {
+ alertInfo(message)
+ return;
+ }
+ this.setData({
+ detail: data
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/workOrderDetail/index.json b/pages/workOrderDetail/index.json
new file mode 100644
index 0000000..653d399
--- /dev/null
+++ b/pages/workOrderDetail/index.json
@@ -0,0 +1,11 @@
+{
+ "usingComponents": {
+ "navigator": "/components/navigator/index",
+ "van-popup": "@vant/weapp/popup/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "custom-table": "/components/table/table",
+ "van-image": "@vant/weapp/image/index"
+ },
+ "navigationStyle": "custom"
+}
\ No newline at end of file
diff --git a/pages/workOrderDetail/index.wxml b/pages/workOrderDetail/index.wxml
new file mode 100644
index 0000000..cedf8dc
--- /dev/null
+++ b/pages/workOrderDetail/index.wxml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认
+ 返回
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/workOrderDetail/index.wxss b/pages/workOrderDetail/index.wxss
new file mode 100644
index 0000000..112aa5a
--- /dev/null
+++ b/pages/workOrderDetail/index.wxss
@@ -0,0 +1,16 @@
+/* pages/workOrderDetail/index.wxss */
+
+
+.operate {
+ display: flex;
+ padding-top: 24rpx;
+ padding-bottom: 36rpx;
+}
+
+.submit, .cancel {
+ flex: 1;
+}
+
+.submit {
+ margin-right: 30rpx;
+}
\ No newline at end of file
diff --git a/pages/writeReading/components/meterInfo/index.js b/pages/writeReading/components/meterInfo/index.js
index 355005b..be37581 100644
--- a/pages/writeReading/components/meterInfo/index.js
+++ b/pages/writeReading/components/meterInfo/index.js
@@ -6,6 +6,8 @@ Component({
*/
properties: {
meterInfo: Object,
+ routeId: String,
+ disabled: Boolean,
},
/**
@@ -19,6 +21,11 @@ Component({
* 组件的方法列表
*/
methods: {
-
+ jumpToHistory() {
+ const { meterInfo, routeId, disabled } = this.data;
+ wx.navigateTo({
+ url: `/pages/readingHistory/index?meter=${meterInfo?.id}&park=${meterInfo?.parkId}&routeId=${routeId}&disabled=${disabled}`,
+ })
+ },
}
})
\ No newline at end of file
diff --git a/pages/writeReading/components/meterInfo/index.json b/pages/writeReading/components/meterInfo/index.json
index 5ec888c..8fe022d 100644
--- a/pages/writeReading/components/meterInfo/index.json
+++ b/pages/writeReading/components/meterInfo/index.json
@@ -3,6 +3,7 @@
"usingComponents": {
"van-tag": "@vant/weapp/tag/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"
}
}
\ No newline at end of file
diff --git a/pages/writeReading/components/meterInfo/index.wxml b/pages/writeReading/components/meterInfo/index.wxml
index 8321adf..ee25922 100644
--- a/pages/writeReading/components/meterInfo/index.wxml
+++ b/pages/writeReading/components/meterInfo/index.wxml
@@ -1,15 +1,24 @@
-
- 电表列表
+
+ 电表详情
+
+
+
+ 历史记录
+
+
- 标1东-307
+ {{ meterInfo.address }}
- 华昌宝能收费
+ 物业代收1
+ 物业代收2
+ 物业代收线损
+ 华昌宝能收费
@@ -17,7 +26,7 @@
-
+
编号
@@ -27,7 +36,7 @@
-
+
类型
@@ -43,24 +52,26 @@
-
- 状态
+
+ 建筑
-
+
+ {{ meterInfo.buildingName || "-" }}
-
- 读数
+
+ 楼层
- {{meterInfo.overall}}
+ {{ meterInfo.floor || "-" }}
+
diff --git a/pages/writeReading/components/meterInfo/index.wxss b/pages/writeReading/components/meterInfo/index.wxss
index 311201b..acbe1a1 100644
--- a/pages/writeReading/components/meterInfo/index.wxss
+++ b/pages/writeReading/components/meterInfo/index.wxss
@@ -20,6 +20,15 @@
.info .title .address {
font-size: 36rpx;
font-weight: 800;
+ flex: 1;
+ margin-right: 24rpx;
+ word-break: break-all;
+}
+
+.info .title .meterType {
+ display: flex;
+ justify-content: end;
+ width: 180rpx;
}
.info .detail {
@@ -30,4 +39,12 @@
display: flex;
justify-content: space-between;
font-size: 30rpx;
+}
+
+.wrapper > .title {
+ font-size: 32rpx;
+}
+
+.titleText {
+ color: rgb(150, 137, 137);
}
\ No newline at end of file
diff --git a/pages/writeReading/components/meterList/components/meterItem/index.js b/pages/writeReading/components/meterList/components/meterItem/index.js
index 8295f38..a34d5fa 100644
--- a/pages/writeReading/components/meterList/components/meterItem/index.js
+++ b/pages/writeReading/components/meterList/components/meterItem/index.js
@@ -6,7 +6,8 @@ Component({
*/
properties: {
active: Boolean,
- meter: Object
+ meter: Object,
+ status: Number,
},
observers: {
"active": function (newValue) {
diff --git a/pages/writeReading/components/meterList/components/meterItem/index.wxml b/pages/writeReading/components/meterList/components/meterItem/index.wxml
index e097bcc..bc1bf49 100644
--- a/pages/writeReading/components/meterList/components/meterItem/index.wxml
+++ b/pages/writeReading/components/meterList/components/meterItem/index.wxml
@@ -1,4 +1,4 @@
-
+
{{meter.meterAddress}}
\ No newline at end of file
diff --git a/pages/writeReading/components/meterList/components/meterItem/index.wxss b/pages/writeReading/components/meterList/components/meterItem/index.wxss
index c0decfc..f39e216 100644
--- a/pages/writeReading/components/meterList/components/meterItem/index.wxss
+++ b/pages/writeReading/components/meterList/components/meterItem/index.wxss
@@ -19,6 +19,10 @@
}
.deepBg {
- background-color: var(--deep-green);
+ background-color: var(--deep-green) !important;
color: white;
+}
+
+.done {
+ background-color: #ccc;
}
\ No newline at end of file
diff --git a/pages/writeReading/components/meterList/index.js b/pages/writeReading/components/meterList/index.js
index c63547a..9c42753 100644
--- a/pages/writeReading/components/meterList/index.js
+++ b/pages/writeReading/components/meterList/index.js
@@ -12,7 +12,8 @@ Component({
properties: {
list: Array,
active: Number,
- meterInfo: Object
+ meterInfo: Object,
+ finishNumber: Number,
},
observers: {
"active,list": function(newActive, newList) {
@@ -22,7 +23,7 @@ Component({
if (newActive === 0) {
this.setData({ scrollLeft: 0 })
} else if (newActive > 0) {
- this.setData({ scrollLeft: 220 * newList.length - 20 })
+ this.setData({ scrollLeft: (220 * (newActive) - 20) + "rpx" })
}
const { scrollWidth } = this.data;
if (scrollWidth) {
@@ -30,7 +31,7 @@ Component({
maxScrollLeft: newList?.length ? 220 * newList.length - (scrollWidth || 0) - 20 : 0,
})
}
- }
+ },
},
/**
* 组件的初始数据
@@ -53,9 +54,7 @@ Component({
maxScrollLeft:length ? 220 * list.length - (res?.[0]?.width || 0) - 20 : 0,
scrollWidth: res?.[0]?.width || 0
})
- })
-
-
+ })
}
},
/**
@@ -109,13 +108,12 @@ Component({
},
// onScroll(e) {
// // 实时更新当前滚动位置,可用于更复杂的边界判断
- // console.log("e", e)
// this.setData({
// scrollLeft: e.detail.scrollLeft
// });
// },
- scrollLeft() {
+ handleScrollLeft() {
// 向左滚动:减少 scrollLeft,但不能小于0
const newScrollLeft = Math.max(0, this.data.scrollLeft - 200);
this.setData({
@@ -123,7 +121,7 @@ Component({
});
},
- scrollRight() {
+ handleScrollRight() {
// 向右滚动:增加 scrollLeft,但不能超过 maxScrollLeft
const newScrollLeft = Math.min(this.data.maxScrollLeft, this.data.scrollLeft + 200);
this.setData({
diff --git a/pages/writeReading/components/meterList/index.wxml b/pages/writeReading/components/meterList/index.wxml
index e0929e8..151514e 100644
--- a/pages/writeReading/components/meterList/index.wxml
+++ b/pages/writeReading/components/meterList/index.wxml
@@ -2,16 +2,16 @@
- 电表列表
+ 电表列表 (总计{{list.length}}块,已抄{{list.length - finishNumber}}块)
-
+
-
+
-
diff --git a/pages/writeReading/components/meterList/index.wxss b/pages/writeReading/components/meterList/index.wxss
index 17aa19c..4195376 100644
--- a/pages/writeReading/components/meterList/index.wxss
+++ b/pages/writeReading/components/meterList/index.wxss
@@ -6,6 +6,7 @@
.title {
margin-top: 20rpx;
+ font-size: 32rpx;
}
.meterListScrollView {
diff --git a/pages/writeReading/components/photo/index.js b/pages/writeReading/components/photo/index.js
index 08c7f28..dc6a657 100644
--- a/pages/writeReading/components/photo/index.js
+++ b/pages/writeReading/components/photo/index.js
@@ -1,4 +1,8 @@
// 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({
/**
@@ -19,6 +23,53 @@ Component({
* 组件的方法列表
*/
methods: {
-
+ chooseImage() {
+ const that = this;
+ wx.chooseMedia({
+ count: 1,
+ mediaType: ['image'],
+ sourceType: ['album', 'camera'],
+ success: async function(res) {
+ wx.cropImage({
+ src: res.tempFiles[0].tempFilePath, // 图片路径
+ cropScale: '16:9', // 裁剪比例
+ success: function (res) {
+ if (!/(\.jpg|\.png|\.jpeg)$/.test(res.tempFilePath.toLowerCase())) {
+ wx.showToast({
+ title: '请上传jpg、png或jpeg格式的图片',
+ icon: 'none',
+ });
+ return;
+ }
+ var tempFilePaths = res.tempFilePath;
+ loadingFunc(async () => {
+ 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 !== "", url })
+ }, 100)
+ })
+
+ }
+
+ })
+
+ // 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)
+ // })
+
+ }
+ })
+ }
}
})
\ No newline at end of file
diff --git a/pages/writeReading/components/photo/index.json b/pages/writeReading/components/photo/index.json
index e8cfaaf..3b51cdc 100644
--- a/pages/writeReading/components/photo/index.json
+++ b/pages/writeReading/components/photo/index.json
@@ -1,4 +1,6 @@
{
"component": true,
- "usingComponents": {}
+ "usingComponents": {
+ "van-button": "@vant/weapp/button/index"
+ }
}
\ No newline at end of file
diff --git a/pages/writeReading/components/photo/index.wxml b/pages/writeReading/components/photo/index.wxml
index 1f539de..e4e2fe4 100644
--- a/pages/writeReading/components/photo/index.wxml
+++ b/pages/writeReading/components/photo/index.wxml
@@ -1,4 +1,8 @@
- 拍照
+ 拍照
\ No newline at end of file
diff --git a/pages/writeReading/components/readingInfo/index.js b/pages/writeReading/components/readingInfo/index.js
index 5271828..95fcfa4 100644
--- a/pages/writeReading/components/readingInfo/index.js
+++ b/pages/writeReading/components/readingInfo/index.js
@@ -1,8 +1,9 @@
// pages/writeReading/components/readingInfo/index.js
-import { createReading } from "../../../../service/workBench"
-import { alertError, alertInfo, alertSuccess } from "../../../../utils/index"
+import { createReading, checkReadingFinish, changeMeterRouteStatus } from "../../../../service/workBench"
+import { alertError, alertInfo, alertSuccess, wxModal } from "../../../../utils/index"
import request from "../../../../utils/request"
+import dayjs from "../../../../utils/dayjs"
const { OK } = request
Component({
@@ -14,25 +15,34 @@ Component({
meterInfo: Object,
showLeft: Boolean,
showRight: Boolean,
+ routeId: String,
+ disabled: Boolean,
+ },
+ observers: {
+ "routeId": function(newValue) {
+ if (!newValue) {
+ return;
+ }
+ this.checkFinish(newValue)
+ },
},
-
/**
* 组件的初始数据
*/
data: {
- currentNumber: null
+ currentNumber: null,
+ diff: "-"
+ },
+ lifetimes: {
+ attached() {
+
+ }
},
-
/**
* 组件的方法列表
*/
methods: {
- jumpToHistory() {
- const { meterInfo } = this.data;
- wx.navigateTo({
- url: `/pages/readingHistory/index?meter=${meterInfo?.id}&park=${meterInfo?.park}`,
- })
- },
+
handlePrev() {
this.triggerEvent("prev")
},
@@ -41,7 +51,9 @@ Component({
},
onChange(e) {
this.setData({
- currentNumber: e.detail ? Number(e.detail) : 0
+ currentNumber: e.detail,
+ calcNumber: isNaN(Number(e.detail)) ? 0 : Number(e.detail),
+ diff: isNaN(Number(e.detail)) ? "-" : (Number(e.detail) - this.data.meterInfo?.overall).toFixed(2)
})
},
handleClear() {
@@ -49,20 +61,91 @@ Component({
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, 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),
+ url,
+ })
+ alertSuccess("获取成功")
+ } else {
+ alertInfo("未能识别数字")
+ }
+ },
async onSubmit() {
- const { meterInfo, currentNumber } = this.data;
+ const { meterInfo, currentNumber, routeId, url } = this.data;
const { parkId, id } = meterInfo;
- const { code, message } = await createReading(parkId, id, {
+ const { code, message } = await createReading(parkId, id, routeId, {
overall: `${currentNumber}`,
- flat: `${currentNumber}`
+ flat: `${currentNumber}`,
+ readAt: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ source: 1,
+ url
})
if (code !== OK) {
alertError(message)
return
}
+ this.setData({
+ currentNumber: null,
+ calcNumber: null,
+ diff: "-"
+ })
alertSuccess("录入成功")
- this.handleNext()
- this.handleClear()
+ const that = this;
+ that.triggerEvent("onSubmit")
+ 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()
+ // const pages = getCurrentPages();
+ // const prevPage = pages[pages.length - 2];
+ // if (prevPage.init){
+ // prevPage.init()
+ // }
+ }
+ }
+ })
+ } 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() {
const { meterInfo, currentNumber } = this.data;
@@ -80,7 +163,7 @@ Component({
}
if (res.confirm) {
- if (meterInfo.consumption < currentNumber) {
+ if (meterInfo.consumption < currentNumber - meterInfo.overall) {
wx.showModal({
title: '提示',
content: '本次用电量已抄过历史平均水平的100%,是否确认录入?',
diff --git a/pages/writeReading/components/readingInfo/index.wxml b/pages/writeReading/components/readingInfo/index.wxml
index 83ff7f5..2233074 100644
--- a/pages/writeReading/components/readingInfo/index.wxml
+++ b/pages/writeReading/components/readingInfo/index.wxml
@@ -1,24 +1,21 @@
-
+
-
-
- 历史记录
-
-
+
+ -->
-
+
+
@@ -31,7 +28,7 @@
-
+
@@ -52,36 +49,41 @@
-
+
+
+
+
+
-
-
-
+
表字差
-
- {{(currentNumber || 0) - meterInfo.overall}}
+
+ {{diff}}
- {{(currentNumber || 0) - meterInfo.overall}}
+ {{diff}}
- 确定录入
+ 确定录入
- 清除记录
+ 清除记录
diff --git a/pages/writeReading/components/readingInfo/index.wxss b/pages/writeReading/components/readingInfo/index.wxss
index 7278d2c..55f709c 100644
--- a/pages/writeReading/components/readingInfo/index.wxss
+++ b/pages/writeReading/components/readingInfo/index.wxss
@@ -46,8 +46,8 @@
}
.change {
- margin-top: 20rpx;
- margin-bottom: 20rpx;
+ margin-top: 10rpx;
+ /* margin-bottom: 10rpx; */
display: flex;
justify-content: space-between;
}
@@ -65,6 +65,7 @@
font-size: 42rpx;
font-weight: 800;
margin-top: 12rpx;
+ margin-bottom: 12rpx;
}
.readingNumber .lastTime {
font-size: 32rpx;
@@ -72,7 +73,7 @@
.nextReadingNumber {
display: flex;
- align-items: bottom;
+
}
.nextReadingNumber .title {
@@ -81,12 +82,19 @@
.nextReadingNumber .number {
margin-top: 12rpx;
+ display: flex;
+ align-items: center;
+ flex: 1;
}
.currentNumber {
flex: 1;
}
+.currentNumber .title {
+ margin-bottom: 24rpx;
+}
+
.calc {
margin-top: 24rpx;
}
diff --git a/pages/writeReading/index.js b/pages/writeReading/index.js
index eb45049..fd3ed2a 100644
--- a/pages/writeReading/index.js
+++ b/pages/writeReading/index.js
@@ -18,7 +18,8 @@ Page({
* 生命周期函数--监听页面加载
*/
onLoad(options) {
- const { id } = options;
+ const { id, type } = options;
+ this.setData({ id, type })
this.getMeterList(id)
},
async getMeterList(id) {
@@ -29,7 +30,8 @@ Page({
}
this.setData({
meterList: data?.meterRouteDetail || [],
- meterInfo: data?.meterRouteDetail?.[0] || {}
+ meterInfo: data?.meterRouteDetail?.[0] || {},
+ routeId: id
})
},
changeMeter(e) {
@@ -43,14 +45,17 @@ Page({
active: e.detail.index,
})
},
+ onSubmit() {
+ this.getMeterList(this.data.routeId)
+ },
handleNext() {
const { active = 0, meterList } = this.data;
let newIndex = active + 1
- if (active > meterList?.length - 1) {
+ if (newIndex > meterList?.length - 1) {
newIndex = meterList?.length - 1
}
this.setData({
- active: newIndex
+ active: newIndex,
})
},
handlePrev() {
@@ -58,6 +63,11 @@ Page({
active: this.data.active === 0 ? 0 : this.data.active - 1
})
},
+ onSetFinishNumber(e) {
+ this.setData({
+ finishNumber: e.detail,
+ })
+ },
/**
* 生命周期函数--监听页面初次渲染完成
*/
diff --git a/pages/writeReading/index.wxml b/pages/writeReading/index.wxml
index 5d4aabe..faa425a 100644
--- a/pages/writeReading/index.wxml
+++ b/pages/writeReading/index.wxml
@@ -6,12 +6,22 @@
bind:changeMeterAndIndex="changeMeterAndIndex"
active="{{active}}"
meterInfo="{{meterInfo}}"
+ finishNumber="{{finishNumber}}"
/>
-
+
+
\ No newline at end of file
diff --git a/project.private.config.json b/project.private.config.json
index f3e205e..edd72a1 100644
--- a/project.private.config.json
+++ b/project.private.config.json
@@ -24,71 +24,50 @@
"miniprogram": {
"list": [
{
- "name": "pages/writeReading/index",
- "pathName": "pages/writeReading/index",
- "query": "id=PR00117566262804481",
- "launchMode": "default",
- "scene": null
- },
- {
- "name": "pages/readingHistory/index",
- "pathName": "pages/readingHistory/index",
+ "name": "pages/invoiceList/index",
+ "pathName": "pages/invoiceList/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
- "name": "pages/workBench/index",
- "pathName": "pages/workBench/index",
+ "name": "pages/workBenchNew/components/installMeter/index",
+ "pathName": "pages/workBenchNew/components/installMeter/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
- "name": "pages/workBench/index",
- "pathName": "pages/workBench/index",
+ "name": "pages/workBenchTodoList/index",
+ "pathName": "pages/workBenchTodoList/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
- "name": "childPackage/pages/electricQuery/index",
- "pathName": "childPackage/pages/electricQuery/index",
+ "name": "pages/workOrderDetail/index",
+ "pathName": "pages/workOrderDetail/index",
+ "query": "id=NM00123091982548993",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "pages/workBenchTodoList/index",
+ "pathName": "pages/workBenchTodoList/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
- "name": "pages/workBench/index",
- "pathName": "pages/workBench/index",
+ "name": "pages/workBenchNew/components/uninstallMeter/index",
+ "pathName": "pages/workBenchNew/components/uninstallMeter/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
- "name": "childPackage/pages/electricQuery/index",
- "pathName": "childPackage/pages/electricQuery/index",
- "query": "",
- "launchMode": "default",
- "scene": null
- },
- {
- "name": "pages/workBench/index",
- "pathName": "pages/workBench/index",
- "query": "",
- "launchMode": "default",
- "scene": null
- },
- {
- "name": "childPackage/pages/electricQuery/index",
- "pathName": "childPackage/pages/electricQuery/index",
- "query": "",
- "launchMode": "default",
- "scene": null
- },
- {
- "name": "childPackage/pages/electricQuery/index",
- "pathName": "childPackage/pages/electricQuery/index",
+ "name": "pages/workBenchNew/index",
+ "pathName": "pages/workBenchNew/index",
"query": "",
"launchMode": "default",
"scene": null
diff --git a/service/meter.js b/service/meter.js
index 14d3b57..e5ed6af 100644
--- a/service/meter.js
+++ b/service/meter.js
@@ -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}`);
}
@@ -37,7 +37,55 @@ export const getBackTenementMeters = async function(park, tenement) {
export const handleOperateMeterSwitch = async function({ ids = [], status }) {
return await PUT(`/equipment/batchSwtich`, { ids, status });
}
+
+// 预付费模式
+export const handleOperateMeterMode = async function({ ids = [], mode, days, images, reason }) {
+ return await PUT(`/equipment/batchSetMode`, { ids, mode, days, images, reason });
+}
+
// 绑定时获取电表的最新信息
export const getWorkMeterDetail = async function(code = '') {
return await GET(`/vx/getWorkMeterDetail?code=${code}`);
+}
+
+// 获取某一园区下的电表箱列表
+export const getParkBoxList = async function({park = "", keyword = "", page = 1, building =- ""}) {
+ return await GET(`/box/${park}?page=${page}&keyword=${replaceSpecialIcon(keyword)}&building=${building}`);
+}
+
+// 获取卡列表
+export const getCardList = async function({park = "", keyword = "", page = 1}) {
+ return await GET(`/equipment/getCardList?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}`);
+}
+
+
+// 获取互感器列表
+export const getCollectionList = async function({park = "", keyword = "", page = 1}) {
+ return await GET(`/transformer/list/select?page=${page}&park=${park}&transformerId=${replaceSpecialIcon(keyword)}`);
+}
+
+
+// 获取库存电表列表
+export const getInventoryMeter = async function({park = "", keyword = "", page = 1, status = 1}) {
+ return await GET(`/electricity/list?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}&status=${status}`);
+}
+
+// 新装电表
+export const installMeter = async function(data) {
+ return await POST(`/wx/workBench/installMeter`, data);
+}
+
+// 拆表
+export const uninstallMeter = async function(data) {
+ return await POST(`/flow/doMeterRemoveApproval`, data);
+}
+
+// 获取商户下的电表,后台
+export const getCollectorList = async function(keyword) {
+ return await GET(`/collector/list?collectorAddress=${replaceSpecialIcon(keyword)}`);
+}
+
+// 微信工单列表查询所有电表
+export const getWorkOrderAllMeter = async function({ keyword, park, page = 1, size = 20 }) {
+ return await GET(`/vx/getAllMeter?keyword=${replaceSpecialIcon(keyword)}&pid=${park}&page=${page}&size=${size}`,);
}
\ No newline at end of file
diff --git a/service/public.js b/service/public.js
index 54e2045..731f413 100644
--- a/service/public.js
+++ b/service/public.js
@@ -22,6 +22,86 @@ 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) => {
+ resolve(res?.data ? JSON.parse(res?.data) : res?.data);
+ },
+ fail: (err) => {
+ reject(err);
+ }
+ })
+ })
+}
+
+export const uploadInstallMeter = (filePath) => {
+ const { api } = getConfigByEnv();
+ return new Promise((resolve, reject) => {
+ wx.uploadFile({
+ filePath: filePath,
+ name: 'data',
+ url: `${api}/image/meter/reading`,
+ header: {
+ authorization: 'Bearer ' + wx.getStorageSync("token")
+ },
+ success: (res) => {
+ resolve(res?.data ? JSON.parse(res?.data) : res?.data);
+ },
+ fail: (err) => {
+ reject(err);
+ }
+ })
+ })
+}
+
+export const uploadMeterForce = (filePath) => {
+ const { api } = getConfigByEnv();
+ return new Promise((resolve, reject) => {
+ wx.uploadFile({
+ filePath: filePath,
+ name: 'data',
+ url: `${api}/image/meter/force`,
+ header: {
+ authorization: 'Bearer ' + wx.getStorageSync("token")
+ },
+ success: (res) => {
+ resolve(res?.data ? JSON.parse(res?.data) : res?.data);
+ },
+ fail: (err) => {
+ reject(err);
+ }
+ })
+ })
+}
+export const uploadUninstallMeter = (filePath) => {
+ const { api } = getConfigByEnv();
+ return new Promise((resolve, reject) => {
+ wx.uploadFile({
+ filePath: filePath,
+ name: 'data',
+ url: `${api}/image/meter/delete`,
+ header: {
+ authorization: 'Bearer ' + wx.getStorageSync("token")
+ },
+ success: (res) => {
+ resolve(res?.data ? JSON.parse(res?.data) : res?.data);
+ },
+ fail: (err) => {
+ reject(err);
+ }
+ })
+ })
+}
+
export const uploadPublicFile = (filePath) => {
const { api } = getConfigByEnv();
return new Promise((resolve, reject) => {
diff --git a/service/workBench.js b/service/workBench.js
index d9a6032..e52212a 100644
--- a/service/workBench.js
+++ b/service/workBench.js
@@ -22,6 +22,49 @@ export const getMeterReadingRouteMeterDetail = async function(id) {
}
// 新建一条抄表记录
-export const createReading = async function(park, code, data) {
- return await POST(`/reading/${park}/${code}`, data);
-}
\ No newline at end of file
+export const createReading = async function(park, code, routeId, data) {
+ return await POST(`/reading/hand/${park}/${code}?parkRouteId=${routeId}`, 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`,);
+}
+
+// 获取工作台首页
+export const getWorkBenchHome = async function() {
+ return await GET(`/workHome/mainPage`,);
+}
+
+// 获取工单列表
+export const getWorkOrderList = async function({
+ page, size, park = "", meter = "", tenement = "", status = "", type = "", time = ""
+}) {
+ return await GET(`/noticeFlow/getDisposeList?page=${page}&size=${size}&park=${park}&meter=${meter}&tenement=${tenement}&status=${status}&type=${type}&time=${time}`,);
+}
+
+// 确认当前流程
+export const doNoticeFlow = async function(id) {
+ return await PUT(`/noticeFlow/${id}/meter/dispose`,);
+}
+
+// 当前流程详情
+export const getNoticeFlowDetail = async function(id) {
+ return await GET(`/noticeFlow/${id}/detail`,);
+}
+
diff --git a/utils/data.js b/utils/data.js
index 22c17b0..b9c09b9 100644
--- a/utils/data.js
+++ b/utils/data.js
@@ -9,4 +9,11 @@ export const getRechargeOperateWay = (num) => {
return payWays[num];
}
-export const feeType = ['华昌宝能收费', "物业代收1", "物业代收2", "物业代收线损"]
\ No newline at end of file
+export const feeType = ['华昌宝能收费', "物业代收1", "物业代收2", "物业代收线损"]
+
+export const meterType = ['商户电表', '园区电表', '公摊电表']
+
+export const noticeFlowType = ['拆表', '装表', '开户', "解绑", "绑定"]
+export const noticeFlowStatus = ["已确认", "待确认"]
+
+export const meterMode = ["预付费", "强控", "临时强控"]
\ No newline at end of file
diff --git a/utils/index.js b/utils/index.js
index 6d79893..dfaec5a 100644
--- a/utils/index.js
+++ b/utils/index.js
@@ -48,7 +48,7 @@ export function getConfigByEnv() {
api = "http://localhost:8000"
// api = "https://zgd.hbhcbn.com/api3"
// TODO: 发布正式时使用此路径
- // api = "https://zgd.hbhcbn.com/wxApi"
+ // api = "https://zgd.hbhcbn.com/wxApi"
// api = "http://127.0.0.1:4523/m1/4143821-0-default"
break;
// 体验版
diff --git a/utils/request.js b/utils/request.js
index 5418e6f..15be215 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -44,7 +44,6 @@ const request = async function (options, config = {}) {
const setCookie = response.header['set-cookie'] || response.header['Set-Cookie'];
if (setCookie) {
const cookieMap = {};
-
if (localCookieString) {
const localCookies = localCookieString.split('; ');
for (const localCookie of localCookies) {
@@ -93,7 +92,6 @@ const parseResponse = function (response, url) {
alertError("服务错误")
return
}
- console.log('url', url,'statusCode', statusCode, 'response.data', response?.data)
if (code === 401) {
const currentUrl = getPageUrl()
@@ -146,7 +144,6 @@ const CUD = async function (method, uri, data = null) {
options.data = data;
}
const response = await request(options);
- console.log("response---------",response)
return parseResponse(response);
};