Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 771bacdafa | |||
| f138fabce9 | |||
| 3259eb2465 | |||
| edfd386e1b | |||
| d7d5366230 | |||
| 496d7fb7d6 | |||
| 1a6071194a | |||
| b940d7a6cc | |||
| 391219bde1 | |||
| 422338f816 | |||
| 7271c982d5 | |||
| e82ffd6bfc | |||
| 8af3586e22 | |||
| ed5fea105f | |||
| 48f35e2e91 | |||
| 07add88856 | |||
| 639f92540f | |||
| 0d38e006e1 | |||
| c5a8bdfd81 | |||
| 5573c78b23 | |||
| 750f2d8d39 | |||
| 1539304999 | |||
| fe590353df | |||
| 2535720023 | |||
| 5e2b2dcfda | |||
| 612dd4eac1 | |||
| 87bb23a9a4 | |||
| a2f92a0959 | |||
| e64318f174 | |||
| 195a6d7c48 | |||
| 76746682fa | |||
| ad4d9323ad | |||
| d4f357d624 | |||
| 9b00bb3561 | |||
| d77af4b78f | |||
| 345a362c74 | |||
| aea85af0f9 | |||
| b61f3287fb | |||
| 49aeeb05a7 | |||
| 95e6937d06 | |||
| 4308096394 |
15
app.json
15
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": [
|
||||
{
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
<view class="colContentValue2">峰: {{ detail.comprehensive.peakAmount }} </view>
|
||||
<view class="colContentValue2">平: {{ detail.comprehensive.flatAmount }} </view>
|
||||
<view class="colContentValue2">谷: {{ detail.comprehensive.valleyAmount }} </view>
|
||||
<view class="colContentValue2">深谷: {{ detail.comprehensive.deepValleyAmount }} </view>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="12">
|
||||
@@ -141,6 +142,7 @@
|
||||
<view class="colContentValue2">峰: {{ detail.comprehensive.pricePeak }} </view>
|
||||
<view class="colContentValue2">平: {{ detail.comprehensive.priceFlat }} </view>
|
||||
<view class="colContentValue2">谷: {{ detail.comprehensive.priceValley }} </view>
|
||||
<view class="colContentValue2">深谷: {{ detail.comprehensive.priceDeepValley }} </view>
|
||||
</view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
|
||||
@@ -136,6 +136,13 @@
|
||||
readonly
|
||||
wx:if="{{park.meter04kvType === 1|| park.meter04kvType === 2}}"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ readingDetail.deepValley }}"
|
||||
border="{{ false }}"
|
||||
label="当前表字(深谷)"
|
||||
readonly
|
||||
wx:if="{{park.meter04kvType === 1|| park.meter04kvType === 2}}"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ readingDetail.valleyAmount }}"
|
||||
border="{{ false }}"
|
||||
@@ -143,6 +150,13 @@
|
||||
readonly
|
||||
wx:if="{{park.meter04kvType === 1|| park.meter04kvType === 2}}"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ readingDetail.deepValleyAmount }}"
|
||||
border="{{ false }}"
|
||||
label="深谷用电量"
|
||||
readonly
|
||||
wx:if="{{park.meter04kvType === 1|| park.meter04kvType === 2}}"
|
||||
/>
|
||||
<view class="text">上次抄表记录起,至现在时间内的用电量</view>
|
||||
</van-cell-group>
|
||||
|
||||
|
||||
@@ -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
|
||||
})
|
||||
|
||||
@@ -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(),
|
||||
})
|
||||
}
|
||||
},
|
||||
/**
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { getLoginParkList, getParkBuildingList } from "../../service/park"
|
||||
import { getParkSimpleMeterList } from "../../service/meter"
|
||||
import { getParkSimpleMeterList, getParkBoxList, getCardList, getCollectionList, getInventoryMeter } 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 +19,12 @@ Component({
|
||||
type: String,
|
||||
show: Boolean,
|
||||
park: String,
|
||||
building: String,
|
||||
isBack: Boolean,
|
||||
filterBind: Boolean,
|
||||
},
|
||||
observers: {
|
||||
"show,type": function(newShow, newType) {
|
||||
"show,type,filterBind": function(newShow, newType) {
|
||||
if (newShow && newType) {
|
||||
this.onSearch()
|
||||
}
|
||||
@@ -34,6 +38,10 @@ Component({
|
||||
searchText: "",
|
||||
payWays,
|
||||
feeType,
|
||||
meterType,
|
||||
noticeFlowType,
|
||||
noticeFlowStatus,
|
||||
meterMode,
|
||||
},
|
||||
lifetimes: {
|
||||
attached() {
|
||||
@@ -71,7 +79,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 +103,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 +136,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,12 +156,24 @@ 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;
|
||||
}
|
||||
},
|
||||
async onSearchPark() {
|
||||
@@ -124,9 +188,21 @@ Component({
|
||||
list: parks,
|
||||
})
|
||||
},
|
||||
async onSearchCollection() {
|
||||
const { searchText = "" } = this.data;
|
||||
const { code, message, data: parks = [] } = await getCollectionList({keyword: searchText, page: 1, status: 1});
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
this.setData({
|
||||
columns: parks?.map(item => `${item.transformerId}-倍率:${item.ratio}-${item.manufacturer}`),
|
||||
list: parks,
|
||||
})
|
||||
},
|
||||
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 +212,18 @@ Component({
|
||||
list: parks || [],
|
||||
})
|
||||
},
|
||||
async onSearchInventoryMeter() {
|
||||
const { searchText = "", park, filterBind } = this.data;
|
||||
const { code, message, data: parks = [] } = await getInventoryMeter({keyword: searchText, park, isNeedBind: !filterBind, a : 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 +248,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,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -26,6 +26,46 @@
|
||||
bind:confirm="onFeeTypeConfirm"
|
||||
/>
|
||||
</view>
|
||||
<view wx:elif="{{type === 'meterType'}}">
|
||||
<van-picker
|
||||
custom-style="width: 100%;"
|
||||
columns="{{ meterType }}"
|
||||
title="{{title}}"
|
||||
show-toolbar="{{true}}"
|
||||
bind:cancel="onCancel"
|
||||
bind:confirm="onMeterTypeConfirm"
|
||||
/>
|
||||
</view>
|
||||
<view wx:elif="{{type === 'noticeFlowType'}}">
|
||||
<van-picker
|
||||
custom-style="width: 100%;"
|
||||
columns="{{ noticeFlowType }}"
|
||||
title="{{title}}"
|
||||
show-toolbar="{{true}}"
|
||||
bind:cancel="onCancel"
|
||||
bind:confirm="onNoticeFlowTypeConfirm"
|
||||
/>
|
||||
</view>
|
||||
<view wx:elif="{{type === 'meterMode'}}">
|
||||
<van-picker
|
||||
custom-style="width: 100%;"
|
||||
columns="{{ meterMode }}"
|
||||
title="{{title}}"
|
||||
show-toolbar="{{true}}"
|
||||
bind:cancel="onCancel"
|
||||
bind:confirm="onMeterModeConfirm"
|
||||
/>
|
||||
</view>
|
||||
<view wx:elif="{{type === 'noticeFlowStatus'}}">
|
||||
<van-picker
|
||||
custom-style="width: 100%;"
|
||||
columns="{{ noticeFlowStatus }}"
|
||||
title="{{title}}"
|
||||
show-toolbar="{{true}}"
|
||||
bind:cancel="onCancel"
|
||||
bind:confirm="onNoticeFlowStatusConfirm"
|
||||
/>
|
||||
</view>
|
||||
<view wx:elif="{{type !== 'pay'}}">
|
||||
<van-search
|
||||
value="{{ value }}"
|
||||
|
||||
@@ -15,7 +15,13 @@ Component({
|
||||
type: {
|
||||
type: String,
|
||||
value: "select"
|
||||
}
|
||||
},
|
||||
useSlot: Boolean,
|
||||
hideBorder: Boolean,
|
||||
required: Boolean,
|
||||
transparent: Boolean,
|
||||
allowClear: Boolean,
|
||||
hideMargin: Boolean,
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -43,6 +49,9 @@ Component({
|
||||
onSearchKeyword() {
|
||||
this.triggerEvent("searchKeyword", this.data.keyword)
|
||||
this.setData({ keyword: "" })
|
||||
},
|
||||
onClear() {
|
||||
this.triggerEvent("clear")
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -1,15 +1,16 @@
|
||||
<!--components/searchSelectWrapper/index.wxml-->
|
||||
<view class="wrapper" wx:if="{{type === 'select'}}">
|
||||
<view class="label"> {{ label }} </view>
|
||||
<view class="content" bind:tap="clickTime" bind:tap="onSearch">
|
||||
<view class="label"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="content" bind:tap="clickTime" bind:tap="onSearch" style="background-color: {{transparent ? 'transparent' : 'white'}};">
|
||||
<view class="text" wx:if="{{!text}}" style="color: #ccc;"> {{placeholder}} </view>
|
||||
<view class="text" wx:else> {{text}} </view>
|
||||
<van-icon name="close" custom-style="margin-right: 16rpx" wx:if="{{allowClear}}" catch:tap="onClear" />
|
||||
<van-icon name="arrow-down" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="wrapper" wx:if="{{type === 'inputSearch'}}">
|
||||
<view class="label"> {{ label }} </view>
|
||||
<view class="inputContent" bind:tap="clickTime">
|
||||
<view class="label"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="inputContent" bind:tap="clickTime" style="background-color: {{transparent ? 'transparent' : 'white'}};">
|
||||
<van-field
|
||||
value="{{ value }}"
|
||||
placeholder="{{placeholder}}"
|
||||
@@ -21,8 +22,8 @@
|
||||
<van-button type="info" size="small" bind:click="onSearchKeyword"> 搜索 </van-button>
|
||||
</view>
|
||||
<view class="wrapper" wx:if="{{type === 'input'}}">
|
||||
<view class="label"> {{ label }} </view>
|
||||
<view class="inputContent" bind:tap="clickTime">
|
||||
<view class="label"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="inputContent" bind:tap="clickTime" style="background-color: {{transparent ? 'transparent' : 'white'}};">
|
||||
<van-field
|
||||
value="{{ value }}"
|
||||
placeholder="{{placeholder}}"
|
||||
@@ -33,3 +34,10 @@
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="wrapper" wx:if="{{useSlot}}">
|
||||
<view class="label"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="inputContent" bind:tap="clickTime" style="{{hideBorder ? 'border: none;' : ''}} {{transparent ? 'background-color: transparent;' : ''}} {{hideMargin ? 'margin: 0;' : ''}}">
|
||||
<slot></slot>
|
||||
</view>
|
||||
</view>
|
||||
@@ -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;
|
||||
width: 130rpx;
|
||||
}
|
||||
|
||||
.required {
|
||||
color: rgb(209, 83, 25);
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) },
|
||||
]
|
||||
})
|
||||
},
|
||||
|
||||
@@ -87,7 +87,6 @@ Page({
|
||||
},
|
||||
fail: function (e) {
|
||||
// alertError("打开失败")
|
||||
// console.log('打开失败错误为', e)
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '打开失败,请复制链接后通过浏览器打开',
|
||||
|
||||
@@ -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',
|
||||
})
|
||||
|
||||
@@ -11,46 +11,6 @@
|
||||
</view>
|
||||
|
||||
<view class="customTable" wx:if="{{list.length}}">
|
||||
<!-- <view class="customTableTile">
|
||||
<van-row>
|
||||
<van-col span="4">
|
||||
<view style="text-align: center;"> 日期 </view>
|
||||
</van-col>
|
||||
<van-col span="6">
|
||||
<view style="text-align: center;"> 充值金额 </view>
|
||||
</van-col>
|
||||
<van-col span="6">
|
||||
<view style="text-align: center;"> 电费 </view>
|
||||
</van-col>
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;"> 电表余额 </view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
<view class="customTableContent" wx:for="{{list}}" wx:key="id">
|
||||
<view class="tableRow">
|
||||
<van-row>
|
||||
<van-col span="4">
|
||||
<view style="text-align: center;"> {{ item.day }} </view>
|
||||
</van-col>
|
||||
<van-col span="6">
|
||||
<view style="text-align: center;" wx:if="{{item.type === 1 || item.type === 7}}"> {{ item.topFee }} </view>
|
||||
<view style="text-align: center;" wx:elif="{{item.type === 5 || item.type === 6 || item.type === 8}}"> -{{ item.topFee }} </view>
|
||||
<view style="text-align: center;" wx:else> 0 </view>
|
||||
</van-col>
|
||||
<van-col span="6">
|
||||
<view style="text-align: center;" wx:if="{{item.type == 1 || item.type === 5 || item.type === 6 || item.type === 7 || item.type === 8}}">
|
||||
0
|
||||
</view>
|
||||
<view style="text-align: center;" wx:else> {{item.money}} </view>
|
||||
</van-col>
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;"> {{item.balance}} </view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
|
||||
</view> -->
|
||||
<table
|
||||
header="{{header}}"
|
||||
list="{{list}}"
|
||||
|
||||
@@ -97,7 +97,7 @@ Page({
|
||||
},
|
||||
jumpToWorkBench() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/workBench/index',
|
||||
url: '/pages/workBenchNew/index',
|
||||
})
|
||||
},
|
||||
jumpToIntegral() {
|
||||
|
||||
30
pages/readingHistory/components/detailModal/index.js
Normal file
30
pages/readingHistory/components/detailModal/index.js
Normal file
@@ -0,0 +1,30 @@
|
||||
// pages/readingHistory/components/detailModal/index.js
|
||||
Component({
|
||||
|
||||
/**
|
||||
* 组件的属性列表
|
||||
*/
|
||||
properties: {
|
||||
visible: Boolean,
|
||||
detail: Object,
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的方法列表
|
||||
*/
|
||||
methods: {
|
||||
showImage() {
|
||||
this.setData({ show: true })
|
||||
},
|
||||
onClose() {
|
||||
this.setData({ show: false })
|
||||
}
|
||||
}
|
||||
})
|
||||
9
pages/readingHistory/components/detailModal/index.json
Normal file
9
pages/readingHistory/components/detailModal/index.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"van-dialog": "@vant/weapp/dialog/index",
|
||||
"van-field": "@vant/weapp/field/index",
|
||||
"van-image": "@vant/weapp/image/index",
|
||||
"van-popup": "@vant/weapp/popup/index"
|
||||
}
|
||||
}
|
||||
64
pages/readingHistory/components/detailModal/index.wxml
Normal file
64
pages/readingHistory/components/detailModal/index.wxml
Normal file
@@ -0,0 +1,64 @@
|
||||
<!--pages/readingHistory/components/detailModal/index.wxml-->
|
||||
<van-dialog
|
||||
use-slot
|
||||
title="详情"
|
||||
show="{{ visible }}"
|
||||
confirmButtonText="关闭"
|
||||
bind:close="onClose"
|
||||
>
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value="{{ detail.readAt }}"
|
||||
label="时间"
|
||||
readonly
|
||||
border="{{ false }}"
|
||||
use-button-slot
|
||||
title-width="100rpx"
|
||||
>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ detail.overall }}"
|
||||
placeholder="请输入读数"
|
||||
label="读数"
|
||||
readonly
|
||||
type="digit"
|
||||
border="{{ false }}"
|
||||
title-width="100rpx"
|
||||
>
|
||||
</van-field>
|
||||
<van-field
|
||||
wx:if="{{!!detail.url}}"
|
||||
value="{{ detail.overall }}"
|
||||
label="图片"
|
||||
readonly
|
||||
border="{{ false }}"
|
||||
title-width="100rpx"
|
||||
use-button-slot
|
||||
>
|
||||
<view slot="input">
|
||||
<van-image
|
||||
width="100"
|
||||
height="100"
|
||||
fit="contain"
|
||||
src="{{detail.url}}"
|
||||
bind:click="showImage"
|
||||
/>
|
||||
</view>
|
||||
</van-field>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
|
||||
<van-popup
|
||||
show="{{ show }}"
|
||||
bind:close="onClose"
|
||||
z-index="99999"
|
||||
>
|
||||
<van-image
|
||||
width="100vw"
|
||||
height="99.1vh"
|
||||
fit="contain"
|
||||
src="{{detail.url}}"
|
||||
bind:click="onClose"
|
||||
/>
|
||||
</van-popup>
|
||||
1
pages/readingHistory/components/detailModal/index.wxss
Normal file
1
pages/readingHistory/components/detailModal/index.wxss
Normal file
@@ -0,0 +1 @@
|
||||
/* pages/readingHistory/components/detailModal/index.wxss */
|
||||
@@ -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) {
|
||||
|
||||
@@ -17,14 +17,16 @@
|
||||
use-button-slot
|
||||
title-width="100rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onTimeFocus">
|
||||
<!-- <van-button slot="button" size="small" type="info" bind:click="onTimeFocus" wx:if="{{!idProps}}">
|
||||
选择
|
||||
</van-button>
|
||||
</van-button> -->
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ number }}"
|
||||
placeholder="请输入读数"
|
||||
label="读数"
|
||||
bind:change="onChange"
|
||||
data-name="number"
|
||||
type="digit"
|
||||
border="{{ false }}"
|
||||
title-width="100rpx"
|
||||
@@ -44,7 +46,9 @@
|
||||
/>
|
||||
|
||||
<date-time-picker
|
||||
wx:if="{{dateTimeShow}}"
|
||||
show="{{dateTimeShow}}"
|
||||
time="{{startTime}}"
|
||||
bind:confirm="dateTimeConfirm"
|
||||
bind:cancel="dateTimeCancal"
|
||||
/>
|
||||
|
||||
@@ -20,3 +20,7 @@
|
||||
font-size: 30rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.status {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
<!--pages/readingHistory/index.wxml-->
|
||||
<navigator title="历史抄表记录" canBack="{{true}}" />
|
||||
|
||||
<view class="wrapper">
|
||||
<meterInfo meterInfo="{{meterInfo}}" />
|
||||
<view class="historyTitle">
|
||||
<view class="text">
|
||||
抄表记录历史
|
||||
</view>
|
||||
<van-button type="info" size="small" icon="plus" bind:tap="handleCreate"> 新增记录 </van-button>
|
||||
<van-button disabled="{{disabled === 'true'}}" type="info" size="small" icon="plus" bind:tap="handleCreate"> 新增记录 </van-button>
|
||||
</view>
|
||||
<view>
|
||||
<view wx:if="{{list.length}}">
|
||||
@@ -15,22 +14,23 @@
|
||||
<view class="table">
|
||||
<view class="thead">
|
||||
<view class="th" style="width: 40%; text-align: center;"> 抄表时间 </view>
|
||||
<view class="th" style="width: 35%; text-align: center;"> 抄表读数 </view>
|
||||
<view class="th" style="width: 25%; text-align: center;"> 操作 </view>
|
||||
<view class="th" style="width: 30%; text-align: center;"> 抄表读数 </view>
|
||||
<view class="th" style="width: 30%; text-align: center;"> 操作 </view>
|
||||
</view>
|
||||
<view class="tbody">
|
||||
<view wx:for="{{list}}" wx:for-index="itemIndex" wx:key="item">
|
||||
<view class="tr" style="display: flex; align-items: center; ">
|
||||
<view class="th" style="width: 40%; text-align: center; font-size: 30rpx;">
|
||||
{{ item.time }}
|
||||
{{ item.readAt }}
|
||||
</view>
|
||||
<view class="th" style="width: 35%; text-align: center; font-size: 30rpx;">
|
||||
{{ item.number }}
|
||||
<view class="th" style="width: 30%; text-align: center; font-size: 30rpx;">
|
||||
{{ item.overall }}
|
||||
</view>
|
||||
|
||||
<view class="th" style="width: 25%; text-align: center; justify-content: center; display: flex; align-items: center;">
|
||||
<van-icon name="edit" size="40rpx" bind:tap="handleUpdate" data-data="{{item}}" color="#15755e" />
|
||||
<van-icon name="delete" size="40rpx" bind:tap="handleDelete" data-id="{{item.id}}" color="#15755e" custom-style="margin-left: 20rpx" />
|
||||
<view class="th" style="width: 30%; text-align: center; justify-content: center; display: flex; align-items: center;">
|
||||
<van-icon wx:if="{{item.isDelete && disabled !== 'true'}}" name="edit" size="40rpx" bind:tap="handleUpdate" data-data="{{item}}" color="#15755e" />
|
||||
<van-icon wx:if="{{item.isDelete && disabled !== 'true'}}" name="delete" size="40rpx" bind:tap="handleDelete" data-data="{{item}}" color="#15755e" custom-style="margin-left: 20rpx" />
|
||||
<van-icon name="ellipsis" size="40rpx" data-data="{{item}}" color="#15755e" bind:tap="handleDetail" custom-style="margin-left: 20rpx" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -41,9 +41,27 @@
|
||||
<pagination currentIndex="{{page}}" totalPage="{{totalPage}}" bind:pagingChange="onChangePage" />
|
||||
|
||||
</view>
|
||||
<empty bind:refresh="init" wx:else />
|
||||
<empty bind:refresh="refresh" wx:else />
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<editModal title="{{title}}" visible="{{visible}}" timeProps="{{time}}" numberProps="{{number}}" id="{{id}}" />
|
||||
<editModal
|
||||
wx:if="{{visible}}"
|
||||
title="{{title}}"
|
||||
visible="{{visible}}"
|
||||
timeProps="{{time}}"
|
||||
timeStamp="{{readAtTimestamp}}"
|
||||
numberProps="{{number}}"
|
||||
idProps="{{id}}"
|
||||
park="{{park}}"
|
||||
meter="{{meter}}"
|
||||
bind:ok="onEditFinish"
|
||||
startTime="{{startTime}}"
|
||||
routeId="{{routeId}}"
|
||||
/>
|
||||
|
||||
<detailModal
|
||||
visible="{{detailVisible}}"
|
||||
detail="{{detail}}"
|
||||
/>
|
||||
@@ -11,6 +11,11 @@ page {
|
||||
.historyTitle {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.historyTitle .text {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.table {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<van-empty description="请先选择园区" wx:if="{{!park}}" />
|
||||
|
||||
<view wx:else>
|
||||
<view wx:if="{{list.length}}">
|
||||
<van-cell
|
||||
wx:for="{{list}}"
|
||||
wx:key="id"
|
||||
@@ -58,4 +59,6 @@
|
||||
> 结束抄表 </van-button>
|
||||
</view>
|
||||
</van-cell>
|
||||
</view>
|
||||
<empty wx:else bind:refresh="init" />
|
||||
</view>
|
||||
|
||||
@@ -64,7 +64,7 @@ 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,
|
||||
@@ -74,6 +74,7 @@ Component({
|
||||
critical : critical ? Number(critical) : critical,
|
||||
peak: peak ? Number(peak) : peak,
|
||||
valley : valley ? Number(valley) : valley,
|
||||
deepValley : deepValley ? Number(deepValley) : deepValley,
|
||||
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
)
|
||||
|
||||
@@ -101,6 +101,16 @@
|
||||
type="digit"
|
||||
placeholder="请输入有功(谷)"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ deepValley }}"
|
||||
label="深谷"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="deepValley"
|
||||
type="digit"
|
||||
placeholder="请输入有功(深谷)"
|
||||
/>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
|
||||
@@ -69,7 +69,7 @@ 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,
|
||||
@@ -79,6 +79,7 @@ Component({
|
||||
critical : critical ? Number(critical) : critical,
|
||||
peak: peak ? Number(peak) : peak,
|
||||
valley : valley ? Number(valley) : valley,
|
||||
deepValley: deepValley ? Number(deepValley) : deepValley,
|
||||
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||
});
|
||||
if (code !== OK) {
|
||||
|
||||
@@ -89,6 +89,16 @@
|
||||
data-name="valley"
|
||||
placeholder="请输入有功(谷)"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ deepValley }}"
|
||||
label="深谷"
|
||||
type="number"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="deepValley"
|
||||
placeholder="请输入有功(深谷)"
|
||||
/>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
|
||||
@@ -5,7 +5,7 @@ Page({
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
active: 4
|
||||
active: 0
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
458
pages/workBenchNew/components/installMeter/index.js
Normal file
458
pages/workBenchNew/components/installMeter/index.js
Normal file
@@ -0,0 +1,458 @@
|
||||
// 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: "",
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
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"
|
||||
})
|
||||
},
|
||||
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,
|
||||
})
|
||||
},
|
||||
onConfirm(e) {
|
||||
console.log("e", e)
|
||||
const { type, data = {}, way } = e.detail;
|
||||
const {collection, park, tenement} = this.data;
|
||||
switch(type) {
|
||||
case "park":
|
||||
this.setData({
|
||||
park: data.id,
|
||||
parkName: data.name,
|
||||
selfManagement: data.selfManagement,
|
||||
})
|
||||
if (park !== data.id) {
|
||||
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,
|
||||
area: null,
|
||||
})
|
||||
}
|
||||
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":
|
||||
this.setData({
|
||||
meterType: way,
|
||||
meterTypeName: data,
|
||||
});
|
||||
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":
|
||||
let newData = {}
|
||||
if (collection === "A") {
|
||||
newData = {
|
||||
collectionA: data.id,
|
||||
collectionAName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
|
||||
collectionARatio: data.ratio,
|
||||
}
|
||||
}
|
||||
if (collection === "B") {
|
||||
newData = {
|
||||
collectionB: data.id,
|
||||
collectionBName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
|
||||
collectionBRatio: data.ratio,
|
||||
}
|
||||
}
|
||||
if (collection === "C") {
|
||||
newData = {
|
||||
collectionC: data.id,
|
||||
collectionCName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
|
||||
collectionCRatio: data.ratio,
|
||||
}
|
||||
}
|
||||
this.setData(newData);
|
||||
break;
|
||||
}
|
||||
this.onCancel();
|
||||
},
|
||||
clearCard() {
|
||||
this.setData({
|
||||
card: null,
|
||||
cardName: null,
|
||||
})
|
||||
},
|
||||
clearCollectionA() {
|
||||
this.setData({
|
||||
collectionA: null,
|
||||
collectionAName: null,
|
||||
})
|
||||
},
|
||||
clearCollectionB() {
|
||||
this.setData({
|
||||
collectionB: null,
|
||||
collectionBName: null,
|
||||
})
|
||||
},
|
||||
clearCollectionC() {
|
||||
this.setData({
|
||||
collectionC: null,
|
||||
collectionCName: null,
|
||||
})
|
||||
},
|
||||
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
|
||||
})
|
||||
},
|
||||
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, overall, url, sn,
|
||||
collectionARatio, collectionBRatio, collectionCRatio
|
||||
} = 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, peak, flat, valley, overall, url, sn
|
||||
})
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return;
|
||||
}
|
||||
alertSuccess("新增成功")
|
||||
wx.navigateTo({
|
||||
url: '/pages/workBenchTodoList/index',
|
||||
})
|
||||
},
|
||||
goback() {
|
||||
wx.navigateBack()
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
||||
12
pages/workBenchNew/components/installMeter/index.json
Normal file
12
pages/workBenchNew/components/installMeter/index.json
Normal file
@@ -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"
|
||||
}
|
||||
204
pages/workBenchNew/components/installMeter/index.wxml
Normal file
204
pages/workBenchNew/components/installMeter/index.wxml
Normal file
@@ -0,0 +1,204 @@
|
||||
<!--pages/workBenchNew/components/createMeter/index.wxml-->
|
||||
<navigator canBack="{{true}}" title="新装电表" />
|
||||
|
||||
<view class="wrapper">
|
||||
<searchSelectWrapper
|
||||
label="当前时间"
|
||||
placeholder="请选择园区"
|
||||
useSlot
|
||||
type=""
|
||||
hideBorder="{{true}}"
|
||||
>
|
||||
<view> {{time}} </view>
|
||||
</searchSelectWrapper>
|
||||
<searchSelectWrapper
|
||||
label="选择园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
required="{{true}}"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
label="选择电表"
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
required="{{true}}"
|
||||
wx:if="{{selfManagement === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="SN"
|
||||
placeholder="请输入sn"
|
||||
text="{{sn}}"
|
||||
type="input"
|
||||
bind:changeText="changeSn"
|
||||
required="{{true}}"
|
||||
wx:if="{{selfManagement === 1}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="选择建筑"
|
||||
placeholder="请选择建筑"
|
||||
text="{{buildingName}}"
|
||||
bind:search="onBuildingFocus"
|
||||
required="{{true}}"
|
||||
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="电表箱"
|
||||
placeholder="请选择电表箱"
|
||||
text="{{meterBoxName}}"
|
||||
bind:search="onMeterBoxFocus"
|
||||
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="电表类型"
|
||||
placeholder="请选择电表类型"
|
||||
text="{{meterTypeName}}"
|
||||
bind:search="onMeterTypeFocus"
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="倍率"
|
||||
placeholder="请输入倍率"
|
||||
type="input"
|
||||
text="ratio"
|
||||
required="{{true}}"
|
||||
bind:changeText="changeRatio"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="电表地址"
|
||||
placeholder="请输入电表地址"
|
||||
text="area"
|
||||
type="input"
|
||||
required="{{true}}"
|
||||
bind:changeText="changeAddress"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="所辖面积"
|
||||
placeholder="请输入所辖面积"
|
||||
text="area"
|
||||
type="input"
|
||||
bind:changeText="changeArea"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="绑定卡"
|
||||
placeholder="请选择卡绑定(选填)"
|
||||
text="{{cardName}}"
|
||||
bind:search="onBindCard"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="clearCard"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="互感器A"
|
||||
placeholder="请选择互感器绑定"
|
||||
text="{{collectionAName}}"
|
||||
bind:search="onBindCollectionA"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="clearCollectionA"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="互感器B"
|
||||
placeholder="请选择互感器绑定"
|
||||
text="{{collectionBName}}"
|
||||
bind:search="onBindCollectionB"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="clearCollectionB"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="互感器C"
|
||||
placeholder="请选择互感器绑定"
|
||||
text="{{collectionCName}}"
|
||||
bind:search="onBindCollectionC"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="clearCollectionC"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="商户"
|
||||
placeholder="请选择商户"
|
||||
text="{{ tenementName }}"
|
||||
bind:search="onTenementFocus"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="总"
|
||||
placeholder="请输入总"
|
||||
type="input"
|
||||
bind:changeText="changeOverall"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="尖"
|
||||
placeholder="请输入尖"
|
||||
type="input"
|
||||
bind:changeText="changeSharp"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="峰"
|
||||
placeholder="请输入峰"
|
||||
type="input"
|
||||
bind:changeText="changePeak"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="平"
|
||||
placeholder="请输入平"
|
||||
type="input"
|
||||
bind:changeText="changeFlat"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="谷"
|
||||
placeholder="请输入谷"
|
||||
type="input"
|
||||
bind:changeText="changeValley"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="图片"
|
||||
useSlot="{{true}}"
|
||||
type=""
|
||||
hideBorder="{{true}}"
|
||||
>
|
||||
<view style="display: flex; align-items: center;">
|
||||
<view>
|
||||
<van-button type="info" size="small" bind:click="uploadImage" custom-style="margin-right: 20rpx;"> 上传 </van-button>
|
||||
<view style="margin-top: 20rpx" wx:if="{{!!url}}">
|
||||
<van-button type="danger" size="small" bind:click="clearImage" custom-style="margin-right: 20rpx;"> 清除 </van-button>
|
||||
</view>
|
||||
</view>
|
||||
<van-image wx:if="{{!!url}}" width="100" height="100" src="{{url}}" custom-style="margin-left: 20rpx;" />
|
||||
</view>
|
||||
|
||||
</searchSelectWrapper>
|
||||
<view class="operate">
|
||||
<view class="submit"> <van-button type="info" block bind:click="handleSubmit"> 提交 </van-button> </view>
|
||||
<view class="cancel"> <van-button block bind:tap="goback"> 返回 </van-button> </view>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
building="{{building}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
placeholder="{{placeholder}}"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
|
||||
<van-popup
|
||||
show="{{ imageShow }}"
|
||||
bind:close="onClose"
|
||||
z-index="99999"
|
||||
>
|
||||
<van-image
|
||||
width="100vw"
|
||||
height="99.1vh"
|
||||
fit="contain"
|
||||
src="{{url}}"
|
||||
bind:click="onClose"
|
||||
/>
|
||||
</van-popup>
|
||||
15
pages/workBenchNew/components/installMeter/index.wxss
Normal file
15
pages/workBenchNew/components/installMeter/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
149
pages/workBenchNew/components/kaihu/index.js
Normal file
149
pages/workBenchNew/components/kaihu/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
10
pages/workBenchNew/components/kaihu/index.json
Normal file
10
pages/workBenchNew/components/kaihu/index.json
Normal file
@@ -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"
|
||||
}
|
||||
111
pages/workBenchNew/components/kaihu/index.wxml
Normal file
111
pages/workBenchNew/components/kaihu/index.wxml
Normal file
@@ -0,0 +1,111 @@
|
||||
<!--pages/workBenchNew/components/kaihu/index.wxml-->
|
||||
<navigator canBack="{{true}}" title="开户" />
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value="{{ parkName }}"
|
||||
placeholder="请选择园区"
|
||||
label="园区"
|
||||
use-button-slot
|
||||
readonly
|
||||
title-width="120rpx"
|
||||
required
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onParkFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{name}}"
|
||||
data-name="name"
|
||||
bind:change="onChange"
|
||||
label="商户全称"
|
||||
type="textarea"
|
||||
placeholder="请输入商户全称"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{shortName}}"
|
||||
data-name="shortName"
|
||||
bind:change="onChange"
|
||||
label="商户简称"
|
||||
placeholder="请输入商户简称"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{address}}"
|
||||
data-name="address"
|
||||
bind:change="onChange"
|
||||
label="联系地址"
|
||||
placeholder="请输入联系地址"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{contact}}"
|
||||
data-name="contact"
|
||||
bind:change="onChange"
|
||||
label="联系人"
|
||||
placeholder="请输入联系人"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{phone}}"
|
||||
data-name="phone"
|
||||
bind:change="onChange"
|
||||
label="联系电话"
|
||||
placeholder="请输入联系电话"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{ buildingName }}"
|
||||
placeholder="请选择建筑"
|
||||
label="建筑"
|
||||
use-button-slot
|
||||
readonly
|
||||
title-width="120rpx"
|
||||
required
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onBuildingFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ feeTypeName }}"
|
||||
placeholder="请选择收费类型"
|
||||
label="收费类型"
|
||||
readonly
|
||||
use-button-slot
|
||||
title-width="120rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onFeeTypeFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
</view>
|
||||
<view class="operate">
|
||||
<view style="margin-top: 60rpx; margin-bottom: 60rpx;display: flex; justify-content: center; align-items: center;">
|
||||
<van-button type="info" size="small" style="margin-right: 30rpx;" bind:click="onSubmit" data-status="0"> 保存 </van-button>
|
||||
<van-button size="small" bind:click="handleBack" data-status="1"> 返回 </van-button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
/>
|
||||
1
pages/workBenchNew/components/kaihu/index.wxss
Normal file
1
pages/workBenchNew/components/kaihu/index.wxss
Normal file
@@ -0,0 +1 @@
|
||||
/* pages/workBenchNew/components/kaihu/index.wxss */
|
||||
27
pages/workBenchNew/components/operateButton/index.js
Normal file
27
pages/workBenchNew/components/operateButton/index.js
Normal file
@@ -0,0 +1,27 @@
|
||||
// pages/workBenchNew/components/operateButton/index.js
|
||||
Component({
|
||||
|
||||
/**
|
||||
* 组件的属性列表
|
||||
*/
|
||||
properties: {
|
||||
text: String,
|
||||
style: String,
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的方法列表
|
||||
*/
|
||||
methods: {
|
||||
handleClick() {
|
||||
this.triggerEvent("click")
|
||||
}
|
||||
}
|
||||
})
|
||||
4
pages/workBenchNew/components/operateButton/index.json
Normal file
4
pages/workBenchNew/components/operateButton/index.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
2
pages/workBenchNew/components/operateButton/index.wxml
Normal file
2
pages/workBenchNew/components/operateButton/index.wxml
Normal file
@@ -0,0 +1,2 @@
|
||||
<!--pages/workBenchNew/components/operateButton/index.wxml-->
|
||||
<view class="buttonWrapper" style="{{style}}" bind:tap="handleClick"> {{ text }} </view>
|
||||
12
pages/workBenchNew/components/operateButton/index.wxss
Normal file
12
pages/workBenchNew/components/operateButton/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
194
pages/workBenchNew/components/recharge/index.js
Normal file
194
pages/workBenchNew/components/recharge/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
11
pages/workBenchNew/components/recharge/index.json
Normal file
11
pages/workBenchNew/components/recharge/index.json
Normal file
@@ -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"
|
||||
}
|
||||
78
pages/workBenchNew/components/recharge/index.wxml
Normal file
78
pages/workBenchNew/components/recharge/index.wxml
Normal file
@@ -0,0 +1,78 @@
|
||||
<!--pages/workBenchNew/components/recharge/index.wxml-->
|
||||
<navigator canBack="{{true}}" title="充值" />
|
||||
<van-cell-group>
|
||||
<searchSelectWrapper
|
||||
label="园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
label="电表"
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="金额"
|
||||
placeholder="请输入金额"
|
||||
text="{{money}}"
|
||||
bind:changeText="onChangeMoney"
|
||||
useSlot="{{true}}"
|
||||
hideBorder="{{true}}"
|
||||
hideMargin="{{true}}"
|
||||
type=""
|
||||
>
|
||||
<view class="inputContent">
|
||||
<van-field
|
||||
value="{{ money }}"
|
||||
placeholder="请输入金额"
|
||||
border="{{ false }}"
|
||||
bind:change="onChangeMoney"
|
||||
custom-style="padding: 8rpx 0;font-size: 30rpx;line-height: 32rpx;"
|
||||
/>
|
||||
</view>
|
||||
</searchSelectWrapper>
|
||||
<searchSelectWrapper
|
||||
label="付款方式"
|
||||
placeholder="请选择付款方式"
|
||||
text="{{payName}}"
|
||||
bind:search="onPayFocus"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="凭证"
|
||||
placeholder="请输入凭证"
|
||||
text="{{voucherNo}}"
|
||||
fieldType="number"
|
||||
bind:changeText="onChangeMoney"
|
||||
useSlot="{{true}}"
|
||||
hideBorder="{{true}}"
|
||||
hideMargin="{{true}}"
|
||||
type=""
|
||||
>
|
||||
<view class="inputContent">
|
||||
<van-field
|
||||
value="{{ voucherNo }}"
|
||||
placeholder="请输入凭证"
|
||||
border="{{ false }}"
|
||||
bind:change="onChangeVoucherNo"
|
||||
custom-style="padding: 8rpx 0;font-size: 30rpx;line-height: 32rpx;"
|
||||
/>
|
||||
</view>
|
||||
</searchSelectWrapper>
|
||||
</van-cell-group>
|
||||
|
||||
<view style="margin-top: 60rpx;display: flex; justify-content: center; align-items: center;">
|
||||
<van-button type="info" size="small" style="margin-right: 30rpx;" bind:click="handleSubmit"> 确认 </van-button>
|
||||
<van-button size="small" bind:click="handleClear"> 清空 </van-button>
|
||||
</view>
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
17
pages/workBenchNew/components/recharge/index.wxss
Normal file
17
pages/workBenchNew/components/recharge/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
275
pages/workBenchNew/components/uninstallMeter/index.js
Normal file
275
pages/workBenchNew/components/uninstallMeter/index.js
Normal file
@@ -0,0 +1,275 @@
|
||||
// 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} 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;
|
||||
}
|
||||
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)
|
||||
},
|
||||
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() {
|
||||
|
||||
}
|
||||
})
|
||||
12
pages/workBenchNew/components/uninstallMeter/index.json
Normal file
12
pages/workBenchNew/components/uninstallMeter/index.json
Normal file
@@ -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"
|
||||
}
|
||||
125
pages/workBenchNew/components/uninstallMeter/index.wxml
Normal file
125
pages/workBenchNew/components/uninstallMeter/index.wxml
Normal file
@@ -0,0 +1,125 @@
|
||||
<!--pages/workBenchNew/components/uninstallMeter/index.wxml-->
|
||||
<navigator canBack="{{true}}" title="拆表" />
|
||||
|
||||
<view class="wrapper">
|
||||
<searchSelectWrapper
|
||||
label="当前时间"
|
||||
placeholder="请选择园区"
|
||||
useSlot
|
||||
type=""
|
||||
hideBorder="{{true}}"
|
||||
>
|
||||
<view> {{time}} </view>
|
||||
</searchSelectWrapper>
|
||||
<searchSelectWrapper
|
||||
label="选择园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
required="{{true}}"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
label="选择电表"
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="原因"
|
||||
placeholder="请输入原因"
|
||||
text="reason"
|
||||
type="input"
|
||||
bind:changeText="changeReason"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="图片"
|
||||
useSlot="{{true}}"
|
||||
type=""
|
||||
hideBorder="{{true}}"
|
||||
>
|
||||
<view style="display: flex; align-items: center;">
|
||||
<view>
|
||||
<van-button type="info" size="small" bind:click="uploadImage" custom-style="margin-right: 20rpx;"> 上传 </van-button>
|
||||
<view style="margin-top: 20rpx" wx:if="{{!!url}}">
|
||||
<van-button type="danger" size="small" bind:click="clearImage" custom-style="margin-right: 20rpx;"> 清除 </van-button>
|
||||
</view>
|
||||
</view>
|
||||
<van-image wx:if="{{!!url}}" width="100" height="100" src="{{url}}" custom-style="margin-left: 20rpx;" bind:tap="showImage" />
|
||||
</view>
|
||||
|
||||
</searchSelectWrapper>
|
||||
<searchSelectWrapper
|
||||
label="总"
|
||||
placeholder="请输入总"
|
||||
type="input"
|
||||
bind:changeText="changeOverall"
|
||||
wx:if="{{meterInfo.tenement}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="尖"
|
||||
placeholder="请输入尖"
|
||||
type="input"
|
||||
bind:changeText="changeCritical"
|
||||
wx:if="{{meterInfo.tenement}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="峰"
|
||||
placeholder="请输入峰"
|
||||
type="input"
|
||||
bind:changeText="changePeak"
|
||||
wx:if="{{meterInfo.tenement}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="平"
|
||||
placeholder="请输入平"
|
||||
type="input"
|
||||
bind:changeText="changeFlat"
|
||||
wx:if="{{meterInfo.tenement}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="谷"
|
||||
placeholder="请输入谷"
|
||||
type="input"
|
||||
bind:changeText="changeValley"
|
||||
wx:if="{{meterInfo.tenement}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="深谷"
|
||||
placeholder="请输入深谷"
|
||||
type="input"
|
||||
bind:changeText="changeDeepValley"
|
||||
wx:if="{{meterInfo.tenement}}"
|
||||
/>
|
||||
<view class="operate">
|
||||
<view class="submit"> <van-button type="info" block bind:click="onSubmit"> 提交 </van-button> </view>
|
||||
<view class="cancel"> <van-button block bind:tap="goback"> 返回 </van-button> </view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
|
||||
<van-popup
|
||||
show="{{ imageShow }}"
|
||||
bind:close="onClose"
|
||||
z-index="99999"
|
||||
>
|
||||
<van-image
|
||||
width="100vw"
|
||||
height="99.1vh"
|
||||
fit="contain"
|
||||
src="{{url}}"
|
||||
bind:click="onClose"
|
||||
/>
|
||||
</van-popup>
|
||||
15
pages/workBenchNew/components/uninstallMeter/index.wxss
Normal file
15
pages/workBenchNew/components/uninstallMeter/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<!--pages/workBench/components/recharge/components/waitApprove/index.wxml-->
|
||||
<searchSelectWrapper label="园区" placeholder="请选择园区" text="{{parkName}}" bind:search="onParkFocus" />
|
||||
|
||||
<searchSelectWrapper label="关键字" placeholder="请输入关键字" text="{{meterName}}" bind:searchKeyword="onSearchKeyword" type="inputSearch" />
|
||||
<view>
|
||||
<view wx:if="{{list.length}}">
|
||||
<view class="operate" wx:if="{{status === 2}}">
|
||||
<view style="margin-top: 60rpx; margin-bottom: 60rpx;display: flex; justify-content: center; align-items: center;">
|
||||
<van-button type="info" size="small" style="margin-right: 30rpx;" bind:click="handleApprove" data-status="0" disabled="{{!record}}"> 同意 </van-button>
|
||||
<van-button size="small" bind:click="handleClear" disabled="{{!record}}" bind:click="handleApprove" data-status="1"> 拒绝 </van-button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tableWrapper">
|
||||
<view class="table">
|
||||
<view class="thead">
|
||||
<view class="th" style="flex: 0 0 80rpx; display: {{status === 2 ? 'block' : 'none'}};"> </view>
|
||||
<!-- <view class="th" style="flex: 0 0 0rpx; display: {{status === 1 ? 'block' : 'none'}};"> </view> -->
|
||||
<view class="th" style="flex: 0 0 130rpx;"> 商户名字</view>
|
||||
<view class="th" style="flex: 0 0 150rpx;"> 充值金额 </view>
|
||||
<view class="th" style="flex: 0 0 150rpx; display: {{status === 1 ? 'block' : 'none'}};">状态</view>
|
||||
<view class="th" style="flex: 0 0 150rpx;">提交时间</view>
|
||||
<view class="th"style="flex: 0 0 120rpx; justify-content: flex-end; display: flex; align-items: center;"> 操作 </view>
|
||||
</view>
|
||||
<view class="tbody">
|
||||
<van-radio-group value="{{ record }}" bind:change="onChangeSelectRecharge">
|
||||
<block wx:for="{{list}}" wx:for-index="itemIndex" wx:key="item">
|
||||
<view class="tr" style="display: flex; align-items: center; ">
|
||||
<view class="th" style="flex: 0 0 80rpx; ; display: {{status === 2 ? 'block' : 'none'}};">
|
||||
<van-radio wx:if="{{status === 2}}" name="{{item.id}}"></van-radio>
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 130rpx;">
|
||||
{{ item.tenement.shortName }}
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 150rpx;">
|
||||
{{ item.money }}
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 150rpx; display: {{status === 1 ? 'block' : 'none'}};">
|
||||
<view class="tag">{{item.orderStatus}}</view>
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 150rpx; font-size: 30rpx;">
|
||||
{{item.topTime}}
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 120rpx; justify-content: flex-end; display: flex; align-items: center;">
|
||||
<van-icon name="ellipsis" size="24px" bind:tap="showActionMenu" data-id="{{item.id}}" class="more-icon" />
|
||||
<van-action-sheet show="{{ currentActionSheet === item.id }}" actions="{{ actionItems }}" bind:close="hideActionMenu" bind:select="onMenuSelect" data-id="{{item.id}}" close-on-click-action />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</block>
|
||||
</van-radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<pagination currentIndex="{{page}}" totalPage="{{totalPage}}" bind:pagingChange="onChangePage" />
|
||||
|
||||
</view>
|
||||
<empty bind:refresh="init" wx:else />
|
||||
|
||||
</view>
|
||||
|
||||
<search-select show="{{show}}" title="{{title}}" type="{{type}}" park="{{park}}" bindconfirm="onConfirm" bindcancel="onCancel" />
|
||||
|
||||
<van-dialog use-slot title="审核" show="{{ approveShow }}" show-cancel-button bind:close="onApproveClose" bind:confirm="onApproveConfirm">
|
||||
<van-field label="拒绝理由" value="{{ reason }}" placeholder="请输入拒绝理由" bind:change="onChangeReason" />
|
||||
</van-dialog>
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<!--pages/workBench/components/recharge/components/reharge/index.wxml-->
|
||||
<van-cell-group>
|
||||
<searchSelectWrapper
|
||||
label="园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
label="电表"
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="金额"
|
||||
placeholder="请输入金额"
|
||||
text="{{meterName}}"
|
||||
fieldType="number"
|
||||
type="input"
|
||||
bind:changeText="onChangeMoney"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="付款方式"
|
||||
placeholder="请选择付款方式"
|
||||
text="{{payName}}"
|
||||
bind:search="onPayFocus"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="凭证"
|
||||
placeholder="请输入凭证"
|
||||
type="input"
|
||||
bind:changeText="onChangeVoucherNo"
|
||||
/>
|
||||
</van-cell-group>
|
||||
|
||||
<view style="margin-top: 60rpx;display: flex; justify-content: center; align-items: center;">
|
||||
<van-button type="info" size="small" style="margin-right: 30rpx;" bind:click="handleSubmit"> 确认 </van-button>
|
||||
<van-button size="small" bind:click="handleClear"> 清空 </van-button>
|
||||
</view>
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/workBench/components/recharge/components/reharge/index.wxss */
|
||||
72
pages/workBenchNew/components/workBenchApprove/index.js
Normal file
72
pages/workBenchNew/components/workBenchApprove/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
12
pages/workBenchNew/components/workBenchApprove/index.json
Normal file
12
pages/workBenchNew/components/workBenchApprove/index.json
Normal file
@@ -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"
|
||||
}
|
||||
18
pages/workBenchNew/components/workBenchApprove/index.wxml
Normal file
18
pages/workBenchNew/components/workBenchApprove/index.wxml
Normal file
@@ -0,0 +1,18 @@
|
||||
<!--pages/workBench/components/recharge/index.wxml-->
|
||||
<navigator title="充值审核" canBack="{{true}}" />
|
||||
<view>
|
||||
<view class="typeQuery">
|
||||
<van-row>
|
||||
<van-col span="12">
|
||||
<view class="typeQueryText" style="color: {{active === 0 ? '#0958d9' : '#000'}}" bind:tap="changeQueryType" data-type="{{0}}"> 待审核 </view>
|
||||
</van-col>
|
||||
<van-col span="12">
|
||||
<view class="typeQueryText" style="color: {{active === 1 ? '#0958d9' : '#000'}}" bind:tap="changeQueryType" data-type="{{1}}"> 已审核 </view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<approve status="{{2}}" wx:if="{{active === 0}}" />
|
||||
<approve status="{{1}}" wx:if="{{active === 1}}" />
|
||||
<recharge wx:if="{{active === 2}}" />
|
||||
27
pages/workBenchNew/components/workBenchApprove/index.wxss
Normal file
27
pages/workBenchNew/components/workBenchApprove/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
218
pages/workBenchNew/components/workBenchMeter/index.js
Normal file
218
pages/workBenchNew/components/workBenchMeter/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
19
pages/workBenchNew/components/workBenchMeter/index.json
Normal file
19
pages/workBenchNew/components/workBenchMeter/index.json
Normal file
@@ -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"
|
||||
}
|
||||
102
pages/workBenchNew/components/workBenchMeter/index.wxml
Normal file
102
pages/workBenchNew/components/workBenchMeter/index.wxml
Normal file
@@ -0,0 +1,102 @@
|
||||
<!--pages/workBench/components/record/index.wxml-->
|
||||
<navigator title="电表信息" canBack="{{true}}" />
|
||||
<searchSelectWrapper
|
||||
label="园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
label="电表"
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
/>
|
||||
<van-empty wx:if="{{!meter}}" description="选择电表后查看" />
|
||||
<view wx:else>
|
||||
<view wx:if="{{list.length}}">
|
||||
<view class="operate">
|
||||
<view style="margin-top: 24rpx; margin-bottom: 24rpx;display: flex; justify-content: center; align-items: center;">
|
||||
<van-button
|
||||
type="info"
|
||||
size="small"
|
||||
style="margin-right: 30rpx;"
|
||||
bind:click="handleMeterSwitchOn"
|
||||
disabled="{{!meter}}"
|
||||
> 合闸 </van-button>
|
||||
<van-button size="small" bind:click="handleClear" disabled="{{!meter}}" bind:click="handleMeterSwitchOff"> 拉闸 </van-button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="customTable" wx:for="{{list}}" wx:key="id">
|
||||
<view class="customTableTile">
|
||||
<van-row>
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;"> {{item.tenement.shortName}} </view>
|
||||
</van-col>
|
||||
<van-col span="16"><view style="margin-left: 16rpx;">{{item.tenement.name}}</view> </van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
<view class="customTableContent">
|
||||
<van-row >
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8" wx:if="{{item.type === 0}}">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 商户电表 </view></van-col>
|
||||
<van-col span="8" wx:elif="{{item.type === 2}}">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 公摊电表 </view></van-col>
|
||||
<van-col span="8" wx:else>
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 园区电表 </view></van-col>
|
||||
<van-col span="16">表号:{{item.meterNo}}</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> {{item.address}} </view>
|
||||
</van-col>
|
||||
<van-col span="16">SN:{{item.meterSn}}</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 表字:{{item.amount}} </view>
|
||||
</van-col>
|
||||
<van-col span="16">余额:{{item.money}}</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8" wx:if="{{item.onPosition === 0}}">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;">合闸</view> </van-col>
|
||||
<van-col span="8" wx:else><view style="text-align: center;border-right: 1rpx solid #ccc;">拉闸</view> </van-col>
|
||||
<van-col span="8" wx:if="{{item.canConnect}}"><view style="text-align: center;">在线</view> </van-col>
|
||||
<van-col span="8" wx:else><view style="text-align: center;">失联</view> </van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<empty bind:refresh="init" wx:else />
|
||||
|
||||
</view>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
63
pages/workBenchNew/components/workBenchMeter/index.wxss
Normal file
63
pages/workBenchNew/components/workBenchMeter/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
267
pages/workBenchNew/components/workBenchMeterControl/index.js
Normal file
267
pages/workBenchNew/components/workBenchMeterControl/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
165
pages/workBenchNew/components/workBenchMeterControl/index.wxml
Normal file
165
pages/workBenchNew/components/workBenchMeterControl/index.wxml
Normal file
@@ -0,0 +1,165 @@
|
||||
<!--pages/workBench/components/record/index.wxml-->
|
||||
<navigator title="电表操作" canBack="{{true}}" />
|
||||
<searchSelectWrapper
|
||||
label="园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
label="电表"
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
/>
|
||||
<van-empty wx:if="{{!meter}}" description="选择电表后查看" />
|
||||
<view wx:else>
|
||||
<view wx:if="{{list.length}}">
|
||||
<!-- <view class="operate">
|
||||
<view style="margin-top: 24rpx; margin-bottom: 24rpx;display: flex; justify-content: center; align-items: center;">
|
||||
<van-button
|
||||
type="info"
|
||||
size="small"
|
||||
style="margin-right: 30rpx;"
|
||||
bind:click="handleMeterSwitchOn"
|
||||
disabled="{{!meter}}"
|
||||
> 合闸 </van-button>
|
||||
<van-button size="small" bind:click="handleClear" disabled="{{!meter}}" bind:click="handleMeterSwitchOff"> 拉闸 </van-button>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="customTable" wx:for="{{list}}" wx:key="id">
|
||||
<view class="customTableTile">
|
||||
<van-row>
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;"> {{item.tenement.shortName}} </view>
|
||||
</van-col>
|
||||
<van-col span="16"><view style="margin-left: 16rpx;">{{item.tenement.name}}</view> </van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
<view class="customTableContent">
|
||||
<van-row >
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8" wx:if="{{item.type === 0}}">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 商户电表 </view></van-col>
|
||||
<van-col span="8" wx:elif="{{item.type === 2}}">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 公摊电表 </view></van-col>
|
||||
<van-col span="8" wx:else>
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 园区电表 </view></van-col>
|
||||
<van-col span="16">表号:{{item.meterNo}}</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> {{item.address}} </view>
|
||||
</van-col>
|
||||
<van-col span="16">SN:{{item.meterSn}}</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;"> 表字:{{item.amount}} </view>
|
||||
</van-col>
|
||||
<van-col span="16">余额:{{item.money}}</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="24">
|
||||
<view class="tableRow">
|
||||
<van-row gutter="5">
|
||||
<van-col span="8" wx:if="{{item.onPosition === 0}}">
|
||||
<view style="text-align: center;border-right: 1rpx solid #ccc;">合闸</view> </van-col>
|
||||
<van-col span="8" wx:else><view style="text-align: center;border-right: 1rpx solid #ccc;">拉闸</view> </van-col>
|
||||
<van-col span="8" wx:if="{{item.canConnect}}">
|
||||
|
||||
<view style="display: flex;align-items: center;">
|
||||
<view style="text-align: center; margin-right: 24rpx;">在线</view>
|
||||
<view wx:if="{{item.mode === 0}}"> 预付费 </view>
|
||||
<view wx:if="{{item.mode === 1}}"> 强控 </view>
|
||||
<view wx:if="{{item.mode === 2}}"> 临时强控 </view>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="8" wx:else>
|
||||
<view style="display: flex;align-items: center; margin-right: 24rpx;">
|
||||
<view style="text-align: center;">失联</view>
|
||||
<view wx:if="{{item.mode === 0}}"> 预付费 </view>
|
||||
<view wx:if="{{item.mode === 1}}"> 强控 </view>
|
||||
<view wx:if="{{item.mode === 2}}"> 临时强控 </view>
|
||||
</view>
|
||||
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
</view>
|
||||
<view class="wrapper">
|
||||
<searchSelectWrapper
|
||||
label="强控类型"
|
||||
placeholder="请选择强控类型"
|
||||
text="{{modeName}}"
|
||||
bind:search="onModeFocus"
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
wx:if="{{mode === 2}}"
|
||||
label="天数"
|
||||
placeholder="请输入天数"
|
||||
text="{{days}}"
|
||||
type="input"
|
||||
bind:changeText="changeDays"
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="原因"
|
||||
placeholder="请输入原因"
|
||||
text="{{reason}}"
|
||||
type="input"
|
||||
bind:changeText="changeReason"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="图片"
|
||||
useSlot="{{true}}"
|
||||
type=""
|
||||
hideBorder="{{true}}"
|
||||
transparent="{{true}}"
|
||||
>
|
||||
<view style="display: flex; align-items: center;">
|
||||
<view>
|
||||
<van-button type="info" size="small" bind:click="uploadImage" custom-style="margin-right: 20rpx;"> 上传 </van-button>
|
||||
<view style="margin-top: 20rpx" wx:if="{{!!url}}">
|
||||
<van-button type="danger" size="small" bind:click="clearImage" custom-style="margin-right: 20rpx;"> 清除 </van-button>
|
||||
</view>
|
||||
</view>
|
||||
<van-image wx:if="{{url}}" width="100" height="100" src="{{url}}" custom-style="margin-left: 20rpx;" />
|
||||
</view>
|
||||
|
||||
</searchSelectWrapper>
|
||||
<view class="operate">
|
||||
<view class="submit"> <van-button type="info" block bind:click="handleSubmit"> 确认 </van-button> </view>
|
||||
<view class="cancel"> <van-button block bind:tap="goback"> 返回 </van-button> </view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<empty bind:refresh="init" wx:else />
|
||||
|
||||
</view>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
@@ -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;
|
||||
}
|
||||
185
pages/workBenchNew/components/workBenchReading/index.js
Normal file
185
pages/workBenchNew/components/workBenchReading/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
17
pages/workBenchNew/components/workBenchReading/index.json
Normal file
17
pages/workBenchNew/components/workBenchReading/index.json
Normal file
@@ -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"
|
||||
}
|
||||
71
pages/workBenchNew/components/workBenchReading/index.wxml
Normal file
71
pages/workBenchNew/components/workBenchReading/index.wxml
Normal file
@@ -0,0 +1,71 @@
|
||||
<!--pages/workBench/components/reading/index.wxml-->
|
||||
<navigator title="抄表记录录入" canBack="{{true}}" />
|
||||
<van-field
|
||||
value="{{ parkName }}"
|
||||
placeholder="请选择园区"
|
||||
label="园区"
|
||||
readonly
|
||||
border="{{ false }}"
|
||||
use-button-slot
|
||||
title-width="100rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="primary" bind:click="onParkFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onConcal"
|
||||
/>
|
||||
|
||||
|
||||
<view>
|
||||
<view wx:if="{{list.length}}">
|
||||
<van-cell
|
||||
wx:for="{{list}}"
|
||||
wx:key="id"
|
||||
title="{{item.readingRouteName}}"
|
||||
label="包含{{item.meterRoute}}个抄表点"
|
||||
data-id="{{item.id}}"
|
||||
data-type="look"
|
||||
catch:click="jumpToReading"
|
||||
>
|
||||
<view slot="right-icon">
|
||||
<van-button
|
||||
type="primary"
|
||||
size="small"
|
||||
type="primary"
|
||||
catch:tap="changeStartStatus"
|
||||
data-routeId="{{item.readingRouteId}}"
|
||||
custom-style="margin-right: 20rpx;"
|
||||
data-id="{{item.id}}"
|
||||
|
||||
wx:if="{{item.status === 0}}"
|
||||
> 开始抄表 </van-button>
|
||||
<van-button
|
||||
type="primary"
|
||||
size="small"
|
||||
catch:tap="jumpToReading"
|
||||
data-id="{{item.id}}"
|
||||
data-type="edit"
|
||||
custom-style="margin-right: 20rpx;"
|
||||
wx:if="{{item.status === 1}}"
|
||||
> 去抄表 </van-button>
|
||||
<van-button
|
||||
size="small"
|
||||
type="danger"
|
||||
catch:tap="changeEndStatus"
|
||||
data-id="{{item.id}}"
|
||||
wx:if="{{item.status === 1}}"
|
||||
data-routeId="{{item.readingRouteId}}"
|
||||
> 结束抄表 </van-button>
|
||||
</view>
|
||||
</van-cell>
|
||||
</view>
|
||||
<empty wx:else bind:refresh="init" />
|
||||
</view>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/workBenchNew/components/workBenchReading/index.wxss */
|
||||
@@ -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,
|
||||
critical : critical ? Number(critical) : critical,
|
||||
peak: peak ? Number(peak) : peak,
|
||||
flat: flat ? Number(flat) : flat,
|
||||
valley : valley ? Number(valley) : valley,
|
||||
deepValley: deepValley ? Number(deepValley) : 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 })
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
<!--pages/workBench/components/tenement/components/bindMeter/index.wxml-->
|
||||
<van-dialog
|
||||
use-slot
|
||||
title="绑定表计"
|
||||
show="{{ visible }}"
|
||||
show-cancel-button
|
||||
bind:confirm="onSubmit"
|
||||
bind:close="onClose"
|
||||
>
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value="{{tenementName}}"
|
||||
label="商户名称"
|
||||
readonly
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ meterName }}"
|
||||
placeholder="请选择电表"
|
||||
label="电表"
|
||||
readonly
|
||||
border="{{ false }}"
|
||||
use-button-slot
|
||||
title-width="100rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onMeterFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ status }}"
|
||||
label="状态"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
readonly
|
||||
type="digit"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ readAt }}"
|
||||
placeholder="请选择绑定时间"
|
||||
label="时间"
|
||||
readonly
|
||||
border="{{ false }}"
|
||||
use-button-slot
|
||||
title-width="100rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onTimeFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ overall }}"
|
||||
label="表字"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="overall"
|
||||
placeholder="请输入表字"
|
||||
type="digit"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ critical }}"
|
||||
label="尖"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="critical"
|
||||
placeholder="请输入有功(尖)"
|
||||
type="digit"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ peak }}"
|
||||
label="峰"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="peak"
|
||||
placeholder="请输入有功(峰)"
|
||||
type="digit"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ flat }}"
|
||||
label="平"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="flat"
|
||||
placeholder="请输入有功(平)"
|
||||
type="digit"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ valley }}"
|
||||
label="谷"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="valley"
|
||||
type="digit"
|
||||
placeholder="请输入有功(谷)"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ deepValley }}"
|
||||
label="深谷"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="deepValley"
|
||||
type="digit"
|
||||
placeholder="请输入有功(深谷)"
|
||||
/>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
filterBind="{{true}}"
|
||||
/>
|
||||
|
||||
<date-time-picker
|
||||
show="{{dateTimeShow}}"
|
||||
bind:confirm="dateTimeConfirm"
|
||||
bind:cancel="dateTimeCancal"
|
||||
/>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/workBench/components/tenement/components/bindMeter/index.wxss */
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<!--pages/workBench/components/tenement/components/createTenement/index.wxml-->
|
||||
<navigator title="开户" canBack="{{true}}" beforeBack="beforeBack" />
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value=""
|
||||
label="商户全称"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value=""
|
||||
label="商户简称"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value=""
|
||||
label="联系地址"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value=""
|
||||
label="联系人"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value=""
|
||||
label="联系电话"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{ meterName }}"
|
||||
placeholder="请选择建筑"
|
||||
label="建筑"
|
||||
use-button-slot
|
||||
title-width="120rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onBuildingFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ meterName }}"
|
||||
placeholder="请选择收费类型"
|
||||
label="收费类型"
|
||||
use-button-slot
|
||||
title-width="120rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onFeeTypeFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
</view>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
/>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/workBench/components/tenement/components/createTenement/index.wxss */
|
||||
@@ -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")
|
||||
}
|
||||
},
|
||||
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<!--pages/workBench/components/tenement/components/kaihu/index.wxml-->
|
||||
<van-dialog
|
||||
use-slot
|
||||
title="{{title}}"
|
||||
show="{{ visible }}"
|
||||
show-cancel-button
|
||||
bind:close="onClose"
|
||||
bind:confirm="onSubmit"
|
||||
>
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value="{{name}}"
|
||||
data-name="name"
|
||||
bind:change="onChange"
|
||||
label="商户全称"
|
||||
type="textarea"
|
||||
placeholder="请输入商户全称"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{shortName}}"
|
||||
data-name="shortName"
|
||||
bind:change="onChange"
|
||||
label="商户简称"
|
||||
placeholder="请输入商户简称"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{address}}"
|
||||
data-name="address"
|
||||
bind:change="onChange"
|
||||
label="联系地址"
|
||||
placeholder="请输入联系地址"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{contact}}"
|
||||
data-name="contact"
|
||||
bind:change="onChange"
|
||||
label="联系人"
|
||||
placeholder="请输入联系人"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{phone}}"
|
||||
data-name="phone"
|
||||
bind:change="onChange"
|
||||
label="联系电话"
|
||||
placeholder="请输入联系电话"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
value="{{ buildingName }}"
|
||||
placeholder="请选择建筑"
|
||||
label="建筑"
|
||||
use-button-slot
|
||||
readonly
|
||||
title-width="120rpx"
|
||||
required
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onBuildingFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ feeTypeName }}"
|
||||
placeholder="请选择收费类型"
|
||||
label="收费类型"
|
||||
readonly
|
||||
use-button-slot
|
||||
title-width="120rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onFeeTypeFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
</view>
|
||||
</van-dialog>
|
||||
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
/>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/workBench/components/tenement/components/kaihu/index.wxss */
|
||||
@@ -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,
|
||||
critical : critical ? Number(critical) : critical,
|
||||
peak: peak ? Number(peak) : peak,
|
||||
flat: flat ? Number(flat) : flat,
|
||||
valley : valley ? Number(valley) : valley,
|
||||
deepValley: deepValley ? Number(deepValley) : 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 })
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
<!--pages/workBench/components/tenement/components/bindMeter/index.wxml-->
|
||||
<van-dialog
|
||||
use-slot
|
||||
title="解绑电表"
|
||||
show="{{ visible }}"
|
||||
show-cancel-button
|
||||
bind:confirm="onSubmit"
|
||||
bind:close="onClose"
|
||||
>
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value="{{tenementName}}"
|
||||
label="商户名称"
|
||||
readonly
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
/>
|
||||
<van-field
|
||||
value="{{meterAddress}}"
|
||||
label="电表地址"
|
||||
readonly
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ readAt }}"
|
||||
placeholder="请选择解绑时间"
|
||||
label="时间"
|
||||
readonly
|
||||
border="{{ false }}"
|
||||
use-button-slot
|
||||
title-width="100rpx"
|
||||
>
|
||||
<van-button slot="button" size="small" type="info" bind:click="onTimeFocus">
|
||||
选择
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ overall }}"
|
||||
label="表字"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="overall"
|
||||
placeholder="请输入表字"
|
||||
type="number"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ critical }}"
|
||||
label="尖"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="critical"
|
||||
placeholder="请输入有功(尖)"
|
||||
type="number"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ peak }}"
|
||||
label="峰"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="peak"
|
||||
placeholder="请输入有功(峰)"
|
||||
type="number"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ flat }}"
|
||||
label="平"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="flat"
|
||||
type="number"
|
||||
placeholder="请输入有功(平)"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ valley }}"
|
||||
label="谷"
|
||||
type="number"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="valley"
|
||||
placeholder="请输入有功(谷)"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ deepValley }}"
|
||||
label="深谷"
|
||||
type="number"
|
||||
title-width="132rpx"
|
||||
border="{{false}}"
|
||||
bind:change="onChange"
|
||||
data-name="deepValley"
|
||||
placeholder="请输入有功(深谷)"
|
||||
/>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
|
||||
<date-time-picker
|
||||
show="{{dateTimeShow}}"
|
||||
bind:confirm="dateTimeConfirm"
|
||||
bind:cancel="dateTimeCancal"
|
||||
/>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/workBench/components/tenement/components/bindMeter/index.wxss */
|
||||
242
pages/workBenchNew/components/workBenchTenement/index.js
Normal file
242
pages/workBenchNew/components/workBenchTenement/index.js
Normal file
@@ -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() {
|
||||
|
||||
}
|
||||
})
|
||||
16
pages/workBenchNew/components/workBenchTenement/index.json
Normal file
16
pages/workBenchNew/components/workBenchTenement/index.json
Normal file
@@ -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"
|
||||
}
|
||||
138
pages/workBenchNew/components/workBenchTenement/index.wxml
Normal file
138
pages/workBenchNew/components/workBenchTenement/index.wxml
Normal file
@@ -0,0 +1,138 @@
|
||||
<!--pages/workBench/components/tenement/index.wxml-->
|
||||
<navigator title="商户信息" canBack="{{true}}" />
|
||||
<view>
|
||||
<searchSelectWrapper
|
||||
label="园区"
|
||||
placeholder="请选择园区"
|
||||
text="{{ parkName }}"
|
||||
bind:search="onParkFocus"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="商户"
|
||||
placeholder="请选择商户"
|
||||
text="{{ tenementName }}"
|
||||
bind:search="onTenementFocus"
|
||||
/>
|
||||
</view>
|
||||
<view style="display: flex; align-items: center;margin: 20rpx">
|
||||
<view wx:if="{{tenement}}">
|
||||
<van-button
|
||||
style="margin-right: 20rpx;"
|
||||
type="info"
|
||||
size="small"
|
||||
bind:click="startBind"
|
||||
> 绑定电表 </van-button>
|
||||
<van-button
|
||||
style="margin-right: 20rpx;"
|
||||
type="info"
|
||||
size="small"
|
||||
bind:tap="startUpdateInfo"
|
||||
> 修改信息 </van-button>
|
||||
</view>
|
||||
<van-button type="info" size="small" bind:click="startKh" wx:if="{{!!park}}"> 开户 </van-button>
|
||||
</view>
|
||||
<van-empty wx:if="{{!tenement}}" description="选择园区和商户后查看" />
|
||||
<view wx:else>
|
||||
<view class="customTable">
|
||||
<view class="customTableTile">
|
||||
<van-row>
|
||||
<van-col span="24">
|
||||
<view class="tableTitleRow">
|
||||
<view class="tbody">
|
||||
<view class="tr">
|
||||
<view style="width: 250rpx;text-align: center;"> {{tenementInfo.shortName}} </view>
|
||||
<view> {{tenementInfo.fullName}} </view>
|
||||
</view>
|
||||
<view class="tr">
|
||||
<view wx:if="{{tenementInfo.feeType === 0}}" class="th" style="width: 250rpx;text-align: center;"> 华昌宝能收费 </view>
|
||||
<view wx:if="{{tenementInfo.feeType === 1}}" class="th" style="width: 250rpx;text-align: center;"> 物业代收1 </view>
|
||||
<view wx:if="{{tenementInfo.feeType === 2}}" class="th" style="width: 250rpx;text-align: center;"> 物业代收2 </view>
|
||||
<view wx:if="{{tenementInfo.feeType === 3}}" class="th" style="width: 250rpx;text-align: center;"> 物业代收线损 </view>
|
||||
<view> {{tenementInfo.contact}} {{tenementInfo.phone}} </view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</van-col>
|
||||
|
||||
|
||||
<!-- <van-row gutter="5">
|
||||
<van-col span="8">
|
||||
<view style="text-align: center;"> 华昌宝能收费 </view> </van-col>
|
||||
<van-col span="8" wx:elif="{{tenementInfo.feeType === 1}}">
|
||||
<view style="text-align: center;"> 物业代收1 </view> </van-col>
|
||||
<van-col span="8" wx:elif="{{tenementInfo.feeType === 2}}">
|
||||
<view style="text-align: center;"> 物业代收2 </view> </van-col>
|
||||
<van-col span="8" wx:else> <view style="text-align: center;"> 物业代收线损 </view> </van-col>
|
||||
<van-col span="16">{{tenementInfo.contact}} {{tenementInfo.phone}} </van-col>
|
||||
</van-row> -->
|
||||
|
||||
|
||||
</van-row>
|
||||
</view>
|
||||
<view class="customTableContent">
|
||||
|
||||
<van-row>
|
||||
<van-radio-group value="{{ record }}" bind:change="onChangeSelectRecharge">
|
||||
<block wx:for="{{meterList}}" wx:for-index="itemIndex" wx:key="item">
|
||||
<view class="tbody">
|
||||
<view class="tr tableRow">
|
||||
<view class="th" style="width: 250rpx;padding-right: 16rpx;box-sizing: border-box;border-right: 1rpx solid #ccc;"> {{ item.address }} </view>
|
||||
<view class="th" style="width: 250rpx;padding-right: 16rpx;box-sizing: border-box;border-right: 1rpx solid #ccc;"> {{ item.meterSn }} </view>
|
||||
<view class="th" style="width: 200rpx">
|
||||
<view
|
||||
class="primaryTextBtn"
|
||||
bind:tap="unbind"
|
||||
data-id="{{item.meterId}}"
|
||||
data-address="{{item.address}}"
|
||||
>
|
||||
解绑
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</van-radio-group>
|
||||
</van-row>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<search-select
|
||||
show="{{show}}"
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
isBack="{{true}}"
|
||||
bindconfirm="onConfirm"
|
||||
bindcancel="onCancel"
|
||||
/>
|
||||
<kaihu
|
||||
wx:if="{{kaihuVisible}}"
|
||||
park="{{park}}"
|
||||
visible="{{kaihuVisible}}"
|
||||
defaultValue="{{defaultValue}}"
|
||||
bind:close="onKaihuClose"
|
||||
bind:ok="onKaihuConfirm"
|
||||
editType="{{editType}}"
|
||||
title="{{title}}"
|
||||
/>
|
||||
|
||||
<bindMeter
|
||||
visible="{{bindVisible}}"
|
||||
wx:if="{{bindVisible}}"
|
||||
park="{{park}}"
|
||||
tenement="{{tenement}}"
|
||||
tenementName="{{tenementName}}"
|
||||
bind:ok="onBindOk"
|
||||
bind:close="onBindClose"
|
||||
/>
|
||||
|
||||
<unBindMeter
|
||||
wx:if="{{unbindVisible}}"
|
||||
visible="{{unbindVisible}}"
|
||||
park="{{park}}"
|
||||
tenement="{{tenement}}"
|
||||
tenementName="{{tenementName}}"
|
||||
meterId="{{meterId}}"
|
||||
meterAddress="{{meterAddress}}"
|
||||
bind:ok="onUnbindOk"
|
||||
/>
|
||||
70
pages/workBenchNew/components/workBenchTenement/index.wxss
Normal file
70
pages/workBenchNew/components/workBenchTenement/index.wxss
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"van-dialog": "@vant/weapp/dialog/index",
|
||||
"search-select": "/components/searchSelect/index",
|
||||
"van-field": "@vant/weapp/field/index"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<!--pages/workBench/components/account/components/editModal/index.wxml-->
|
||||
<van-dialog
|
||||
use-slot
|
||||
title="{{title}}"
|
||||
show="{{ visible }}"
|
||||
show-cancel-button
|
||||
bind:confirm="onSubmit"
|
||||
bind:cancel="onCancel"
|
||||
>
|
||||
<view class="modalContentWrapper">
|
||||
<van-field
|
||||
value="{{data.name}}"
|
||||
label="昵称"
|
||||
placeholder="请输入昵称"
|
||||
type="textarea"
|
||||
autosize="{{true}}"
|
||||
title-width="120rpx"
|
||||
border="{{false}}"
|
||||
data-name="name"
|
||||
bind:change="onChange"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ data.phone }}"
|
||||
placeholder="请输入手机号"
|
||||
label="手机号"
|
||||
border="{{ false }}"
|
||||
title-width="120rpx"
|
||||
data-name="phone"
|
||||
bind:change="onChange"
|
||||
>
|
||||
</van-field>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user