Compare commits
23 Commits
8af3586e22
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| 2bb5a51031 | |||
| 990a3a17aa | |||
| 0ef96344ce | |||
| 6fee2d0435 | |||
| 972a267c36 | |||
| 7a33dad81b | |||
| 51a50fcd8d | |||
| 4779cc1718 | |||
| c03d70b221 | |||
| 3a1b7f5a2a | |||
| db1adea70a | |||
| 771bacdafa | |||
| f138fabce9 | |||
| 3259eb2465 | |||
| edfd386e1b | |||
| d7d5366230 | |||
| 496d7fb7d6 | |||
| 1a6071194a | |||
| b940d7a6cc | |||
| 391219bde1 | |||
| 422338f816 | |||
| 7271c982d5 | |||
| e82ffd6bfc |
@@ -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
|
||||
})
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { getLoginParkList, getParkBuildingList } from "../../service/park"
|
||||
import { getParkSimpleMeterList, getParkBoxList, getCardList, getCollectionList, getInventoryMeter } from "../../service/meter"
|
||||
import {
|
||||
getParkSimpleMeterList, getParkBoxList,
|
||||
getCardList, getCollectionList,
|
||||
getInventoryMeter, getCollectorList,
|
||||
getWorkOrderAllMeter,
|
||||
} from "../../service/meter"
|
||||
import { alertInfo } from "../../utils/index";
|
||||
import request from "../../utils/request"
|
||||
import { payWays, feeType, meterType, noticeFlowType, noticeFlowStatus,
|
||||
@@ -19,13 +24,15 @@ Component({
|
||||
type: String,
|
||||
show: Boolean,
|
||||
park: String,
|
||||
building: String,
|
||||
isBack: Boolean,
|
||||
filterBind: Boolean,
|
||||
filterData: Array,
|
||||
filterType: String
|
||||
},
|
||||
observers: {
|
||||
"show,type,filterBind": function(newShow, newType) {
|
||||
if (newShow && newType) {
|
||||
console.log("newShow", newShow,"newType", newType)
|
||||
this.onSearch()
|
||||
}
|
||||
}
|
||||
@@ -68,7 +75,6 @@ Component({
|
||||
},
|
||||
onConfirm(event) {
|
||||
const { index } = event.detail;
|
||||
console.log("index", index)
|
||||
const { list = [], type } = this.data;
|
||||
const item = list[index];
|
||||
if (!item) {
|
||||
@@ -124,7 +130,6 @@ Component({
|
||||
list: [],
|
||||
searchText: ""
|
||||
})
|
||||
console.log("{ data: item, way: index + 1, type }", { data: item, way: index + 1, type })
|
||||
this.triggerEvent("confirm", { data: item, way: index + 1, type } );
|
||||
},
|
||||
onFeeTypeConfirm(event) {
|
||||
@@ -176,8 +181,38 @@ Component({
|
||||
case "collection":
|
||||
this.onSearchCollection();
|
||||
return;
|
||||
case "collector":
|
||||
this.onSearchCollector();
|
||||
break;
|
||||
case "workOrderMeter":
|
||||
this.onSearchWorkOrderMeter();
|
||||
break;
|
||||
}
|
||||
},
|
||||
async onSearchCollector() {
|
||||
const { searchText = "", } = this.data;
|
||||
const { code, message, data = [] } = await getCollectorList(searchText);
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
this.setData({
|
||||
columns: data?.map(item => `${item.collectorAddress}-${item.manufacturer}`),
|
||||
list: data,
|
||||
})
|
||||
},
|
||||
async onSearchWorkOrderMeter() {
|
||||
const { searchText = "", park } = this.data;
|
||||
const { code, message, data = [] } = await getWorkOrderAllMeter({keyword: searchText, park: park, page: 1, size: 20});
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
this.setData({
|
||||
columns: data?.map(item => `${item.address}-${item.meter_no}`),
|
||||
list: data,
|
||||
})
|
||||
},
|
||||
async onSearchPark() {
|
||||
const { searchText = "" } = this.data;
|
||||
const { code, message, data: parks = [] } = await getLoginParkList({keyword: searchText});
|
||||
@@ -191,15 +226,21 @@ Component({
|
||||
})
|
||||
},
|
||||
async onSearchCollection() {
|
||||
const { searchText = "" } = this.data;
|
||||
const { searchText = "", filterData, filterType } = this.data;
|
||||
const { code, message, data: parks = [] } = await getCollectionList({keyword: searchText, page: 1, status: 1});
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
let columns = parks;
|
||||
if (filterType === 'collection') {
|
||||
columns = columns.filter(item => {
|
||||
return !filterData.includes(item.id)
|
||||
})
|
||||
}
|
||||
this.setData({
|
||||
columns: parks?.map(item => `${item.transformerId}-倍率:${item.ratio}-${item.manufacturer}`),
|
||||
list: parks,
|
||||
columns: columns?.map(item => `${item.transformerId}-倍率:${item.ratio}-${item.manufacturer}`),
|
||||
list: columns,
|
||||
})
|
||||
},
|
||||
async onSearchMeter() {
|
||||
@@ -216,7 +257,7 @@ Component({
|
||||
},
|
||||
async onSearchInventoryMeter() {
|
||||
const { searchText = "", park, filterBind } = this.data;
|
||||
const { code, message, data: parks = [] } = await getInventoryMeter({keyword: searchText, park, isNeedBind: !filterBind});
|
||||
const { code, message, data: parks = [] } = await getInventoryMeter({keyword: searchText, park, isNeedBind: !filterBind, status: 1});
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
@@ -251,8 +292,8 @@ Component({
|
||||
})
|
||||
},
|
||||
async onSearchMeterBox() {
|
||||
const { park } = this.data;
|
||||
const { code, message, data = [] } = await getParkBoxList({park});
|
||||
const { park, building } = this.data;
|
||||
const { code, message, data = [] } = await getParkBoxList({park, building});
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
|
||||
@@ -19,6 +19,9 @@ Component({
|
||||
useSlot: Boolean,
|
||||
hideBorder: Boolean,
|
||||
required: Boolean,
|
||||
transparent: Boolean,
|
||||
allowClear: Boolean,
|
||||
hideMargin: Boolean,
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -41,12 +44,14 @@ Component({
|
||||
},
|
||||
onChangeText(e) {
|
||||
this.setData({ text: e.detail });
|
||||
console.log("----------")
|
||||
this.triggerEvent("changeText", e.detail)
|
||||
},
|
||||
onSearchKeyword() {
|
||||
this.triggerEvent("searchKeyword", this.data.keyword)
|
||||
this.setData({ keyword: "" })
|
||||
},
|
||||
onClear() {
|
||||
this.triggerEvent("clear")
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -1,16 +1,16 @@
|
||||
<!--components/searchSelectWrapper/index.wxml-->
|
||||
<view class="wrapper" wx:if="{{type === 'select'}}">
|
||||
<view class="label"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="content" bind:tap="clickTime" bind:tap="onSearch">
|
||||
<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" /> -->
|
||||
<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"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="inputContent" bind:tap="clickTime">
|
||||
<view class="inputContent" bind:tap="clickTime" style="background-color: {{transparent ? 'transparent' : 'white'}};">
|
||||
<van-field
|
||||
value="{{ value }}"
|
||||
placeholder="{{placeholder}}"
|
||||
@@ -23,7 +23,7 @@
|
||||
</view>
|
||||
<view class="wrapper" wx:if="{{type === 'input'}}">
|
||||
<view class="label"><text class="required" wx:if="{{required}}">*</text>{{ label }}</view>
|
||||
<view class="inputContent" bind:tap="clickTime">
|
||||
<view class="inputContent" bind:tap="clickTime" style="background-color: {{transparent ? 'transparent' : 'white'}};">
|
||||
<van-field
|
||||
value="{{ value }}"
|
||||
placeholder="{{placeholder}}"
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
<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;' : ''}}">
|
||||
<view class="inputContent" bind:tap="clickTime" style="{{hideBorder ? 'border: none;' : ''}} {{transparent ? 'background-color: transparent;' : ''}} {{hideMargin ? 'margin: 0;' : ''}}">
|
||||
<slot></slot>
|
||||
</view>
|
||||
</view>
|
||||
@@ -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) },
|
||||
]
|
||||
})
|
||||
},
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// pages/home/index.js
|
||||
import { getMeterDetail, getMeterList, getTenementMeterList } from "../../service/meter";
|
||||
import { getOwnTenementList, getTenementExceptionalCase } from "../../service/tenement";
|
||||
import { getOwnTenementList, getTenementExceptionalCase ,
|
||||
getTenementBackInfo, getTenementDetail, getTenementInfoDetail,
|
||||
} from "../../service/tenement";
|
||||
import { alertInfo, alertSuccess } from "../../utils/index";
|
||||
import request from '../../utils/request';
|
||||
import { getDot } from "../../utils/system";
|
||||
@@ -159,6 +161,19 @@ Page({
|
||||
alertInfo("账号存在异常,无法进行充值,请联系客服处理")
|
||||
return;
|
||||
}
|
||||
const {
|
||||
code: tenementDetailCode,
|
||||
message: tenementDetailMessage,
|
||||
tenement: tenementDetail,
|
||||
} = await getTenementBackInfo(park?.id, tenement?.id)
|
||||
if (tenementDetailCode !== OK) {
|
||||
alertInfo(tenementDetailMessage)
|
||||
return
|
||||
}
|
||||
if (tenementDetail?.stop_top) {
|
||||
alertInfo("您暂不可使用此功能,可联系客服处理。")
|
||||
return;
|
||||
}
|
||||
const that = this;
|
||||
if (!user || !user.id) {
|
||||
alertInfo("请先登录")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// pages/invoiceList/components/notyet/index.js
|
||||
import { getInvoiceList } from '../../../../service/invoice';
|
||||
import { getTenementBackInfo } from '../../../../service/tenement';
|
||||
import { alertInfo, loadingFunc } from '../../../../utils/index';
|
||||
import request from '../../../../utils/request';
|
||||
const { OK } = request;
|
||||
@@ -69,7 +70,18 @@ Component({
|
||||
selectMoney: Number(selectMoney.toFixed(2))
|
||||
})
|
||||
},
|
||||
next() {
|
||||
async next() {
|
||||
const park = wx.getStorageSync("park")
|
||||
const tenement = wx.getStorageSync("tenement")
|
||||
const { code: detailCode, message: detailMessage, tenement: Detail } = await getTenementBackInfo(park?.id, tenement?.id)
|
||||
if (detailCode !== OK) {
|
||||
alertInfo(detailMessage)
|
||||
return;
|
||||
}
|
||||
if (Detail?.stop_invoice) {
|
||||
alertInfo("您暂不可使用此功能,可联系客服处理。")
|
||||
return
|
||||
}
|
||||
const { selectList, list, selectMoney, selectCount } = this.data;
|
||||
let tenementID = "";
|
||||
let tenementName = "";
|
||||
|
||||
@@ -58,7 +58,6 @@ Page({
|
||||
const { token, ...user } = data
|
||||
wx.setStorageSync('user', user)
|
||||
wx.setStorageSync('token', data?.token)
|
||||
console.log("user.workStatus", user.workStatus)
|
||||
if (user.workStatus) {
|
||||
wx.redirectTo({
|
||||
url: '/pages/workBenchNew/index',
|
||||
|
||||
@@ -64,16 +64,17 @@ Component({
|
||||
})
|
||||
},
|
||||
async onSubmit() {
|
||||
const { overall, critical, peak, valley, park, tenement, meter, readAt } = this.data;
|
||||
const { overall, critical, peak, valley, park, tenement, meter, readAt, deepValley } = this.data;
|
||||
const { code, message } = await bindMeter(
|
||||
park,
|
||||
tenement,
|
||||
{
|
||||
code: meter,
|
||||
overall:overall? Number(overall) : overall,
|
||||
critical : critical ? Number(critical) : critical,
|
||||
peak: peak ? Number(peak) : peak,
|
||||
valley : valley ? Number(valley) : valley,
|
||||
overall:overall? Number(overall) : (overall === "" ? null : overall),
|
||||
critical : critical ? Number(critical) : (critical === "" ? null : critical),
|
||||
peak: peak ? Number(peak) : (peak === "" ? null : peak),
|
||||
valley : valley ? Number(valley) : (valley === "" ? null : valley),
|
||||
deepValley : deepValley ? Number(deepValley) : (deepValley === "" ? null : deepValley),
|
||||
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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,16 +69,17 @@ Component({
|
||||
})
|
||||
},
|
||||
async onSubmit() {
|
||||
const { overall, critical, peak, valley, park, tenement, meterId,readAt } = this.data;
|
||||
const { overall, critical, peak, valley, deepValley, park, tenement, meterId,readAt } = this.data;
|
||||
const { code, message, } = await unbindMeter(
|
||||
park,
|
||||
tenement,
|
||||
meterId,
|
||||
{
|
||||
overall:overall? Number(overall) : overall,
|
||||
critical : critical ? Number(critical) : critical,
|
||||
peak: peak ? Number(peak) : peak,
|
||||
valley : valley ? Number(valley) : valley,
|
||||
overall:overall? Number(overall) : (overall === "" ? null : overall),
|
||||
critical : critical ? Number(critical) : (critical === "" ? null : critical),
|
||||
peak: peak ? Number(peak) : (peak === "" ? null : peak),
|
||||
valley : valley ? Number(valley) : (valley === "" ? null : valley),
|
||||
deepValley: deepValley ? Number(deepValley) : (deepValley === "" ? null : deepValley),
|
||||
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||
});
|
||||
if (code !== OK) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -14,6 +14,8 @@ Page({
|
||||
data: {
|
||||
time: "",
|
||||
area: "",
|
||||
placeholder: "",
|
||||
collections: [],
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -144,6 +146,27 @@ Page({
|
||||
collection: "C"
|
||||
})
|
||||
},
|
||||
onBindCollector() {
|
||||
const { park } = this.data;
|
||||
if (!park) {
|
||||
alertInfo("请先选择园区")
|
||||
return;
|
||||
}
|
||||
this.setData({
|
||||
show: true,
|
||||
title: "采集器",
|
||||
type: 'collector',
|
||||
})
|
||||
},
|
||||
clearCollector() {
|
||||
this.setData({
|
||||
show: false,
|
||||
title: "",
|
||||
type: 'collector',
|
||||
collector: null,
|
||||
collectorName: null,
|
||||
})
|
||||
},
|
||||
uploadImage() {
|
||||
const that = this;
|
||||
wx.chooseMedia({
|
||||
@@ -151,7 +174,6 @@ Page({
|
||||
mediaType: ['image'],
|
||||
sourceType: ['album', 'camera'],
|
||||
success: async function(res) {
|
||||
console.log("res", res)
|
||||
const path = res.tempFiles?.[0]?.tempFilePath.toLowerCase()
|
||||
if (!/(\.jpg|\.png|\.jpeg)$/.test(path)) {
|
||||
wx.showToast({
|
||||
@@ -179,10 +201,40 @@ Page({
|
||||
sn: e.detail,
|
||||
})
|
||||
},
|
||||
clearData() {
|
||||
this.setData({
|
||||
tenement: null,
|
||||
tenementName: null,
|
||||
building: null,
|
||||
buildingName: null,
|
||||
meterBox: null,
|
||||
meterBoxName: null,
|
||||
meter: null,
|
||||
meterName: null,
|
||||
card: null,
|
||||
cardName: null,
|
||||
collectionA: null,
|
||||
collectionAName: null,
|
||||
collectionB: null,
|
||||
collectionBName: null,
|
||||
collectionB: null,
|
||||
collectionBName: null,
|
||||
address: null,
|
||||
sharp: null,
|
||||
peak: null,
|
||||
flat: null,
|
||||
valley: null,
|
||||
deepValley: null,
|
||||
area: null,
|
||||
collector: null,
|
||||
collectorName: null,
|
||||
collections: [],
|
||||
})
|
||||
},
|
||||
onConfirm(e) {
|
||||
console.log("e", e)
|
||||
const { type, data = {}, way } = e.detail;
|
||||
const {collection, park, tenement} = this.data;
|
||||
const {collection, park, meterType, tenement, tenementName, overall, sharp, flat, peak, valley, deepValley} = this.data;
|
||||
switch(type) {
|
||||
case "park":
|
||||
this.setData({
|
||||
@@ -191,30 +243,7 @@ Page({
|
||||
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,
|
||||
})
|
||||
this.clearData()
|
||||
}
|
||||
break;
|
||||
case "tenement":
|
||||
@@ -248,11 +277,31 @@ Page({
|
||||
})
|
||||
break;
|
||||
case "meterType":
|
||||
let newMeterData = {};
|
||||
if (way !== 0) {
|
||||
newMeterData = {
|
||||
tenement: null,
|
||||
tenementName: null,
|
||||
overall: null,
|
||||
sharp: null,
|
||||
peak: null,
|
||||
flat: null,
|
||||
valley: null,
|
||||
deepValley: null,
|
||||
}
|
||||
}
|
||||
this.setData({
|
||||
meterType: way,
|
||||
meterTypeName: data,
|
||||
...newMeterData,
|
||||
});
|
||||
break;
|
||||
case "collector":
|
||||
this.setData({
|
||||
collector: data?.id,
|
||||
collectorName: `${data.collectorAddress}-${data.manufacturer}`,
|
||||
});
|
||||
break;
|
||||
case "meter":
|
||||
this.setData({
|
||||
meter: data.id,
|
||||
@@ -266,26 +315,33 @@ Page({
|
||||
});
|
||||
break;
|
||||
case "collection":
|
||||
const newCollects = this.data.collections;
|
||||
let newData = {}
|
||||
if (collection === "A") {
|
||||
newCollects[0] = data.id
|
||||
newData = {
|
||||
collectionA: data.id,
|
||||
collectionAName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
|
||||
collectionARatio: data.ratio,
|
||||
collections: newCollects
|
||||
}
|
||||
}
|
||||
if (collection === "B") {
|
||||
newCollects[1] = data.id
|
||||
newData = {
|
||||
collectionB: data.id,
|
||||
collectionBName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
|
||||
collectionBRatio: data.ratio,
|
||||
collections: newCollects
|
||||
}
|
||||
}
|
||||
if (collection === "C") {
|
||||
newCollects[2] = data.id
|
||||
newData = {
|
||||
collectionC: data.id,
|
||||
collectionCName: `${data.transformerId}-倍率:${data.ratio}-${data.manufacturer}`,
|
||||
collectionCRatio: data.ratio,
|
||||
collections: newCollects
|
||||
}
|
||||
}
|
||||
this.setData(newData);
|
||||
@@ -293,6 +349,39 @@ Page({
|
||||
}
|
||||
this.onCancel();
|
||||
},
|
||||
clearCard() {
|
||||
this.setData({
|
||||
card: null,
|
||||
cardName: null,
|
||||
})
|
||||
},
|
||||
clearCollectionA() {
|
||||
const newCollects = this.data.collections;
|
||||
newCollects[0] = null;
|
||||
this.setData({
|
||||
collectionA: null,
|
||||
collectionAName: null,
|
||||
collections: newCollects,
|
||||
})
|
||||
},
|
||||
clearCollectionB() {
|
||||
const newCollects = this.data.collections;
|
||||
newCollects[1] = null;
|
||||
this.setData({
|
||||
collectionB: null,
|
||||
collectionBName: null,
|
||||
collections: newCollects,
|
||||
})
|
||||
},
|
||||
clearCollectionC() {
|
||||
const newCollects = this.data.collections;
|
||||
newCollects[2] = null;
|
||||
this.setData({
|
||||
collectionC: null,
|
||||
collectionCName: null,
|
||||
collections: newCollects,
|
||||
})
|
||||
},
|
||||
changeAddress(e) {
|
||||
this.setData({
|
||||
address: e.detail
|
||||
@@ -328,6 +417,11 @@ Page({
|
||||
valley: e.detail
|
||||
})
|
||||
},
|
||||
changeDeepValley(e) {
|
||||
this.setData({
|
||||
deepValley: e.detail
|
||||
})
|
||||
},
|
||||
changeRatio(e) {
|
||||
this.setData({
|
||||
ratio: e.detail,
|
||||
@@ -357,10 +451,10 @@ Page({
|
||||
const {
|
||||
park, meter, address, building, meterBox, meterType,
|
||||
ratio, area, card, collectionA, collectionB, collectionC,
|
||||
tenement, sharp, peak, flat, valley, overall, url, sn,
|
||||
collectionARatio, collectionBRatio, collectionCRatio
|
||||
tenement, sharp, peak, flat, valley, deepValley, overall, url, sn,
|
||||
collectionARatio, collectionBRatio, collectionCRatio, collector,
|
||||
} = this.data;
|
||||
if (!park || !(meter || sn) || !address || meterType == null || !building || !meterBox) {
|
||||
if (!park || !(meter || sn) || !address || meterType == null || !building || !meterBox || ratio == null) {
|
||||
alertInfo("请填写必填项后保存")
|
||||
return;
|
||||
}
|
||||
@@ -381,15 +475,31 @@ Page({
|
||||
return;
|
||||
}
|
||||
const { code, data, message } = await installMeter({
|
||||
park, meter, address, building, meterBox, meterType,
|
||||
park, meterSn: meter, address, building, meterBox, meterType,
|
||||
ratio, area, card, collectionA, collectionB, collectionC,
|
||||
tenement, sharp, peak, flat, valley, overall, url, sn
|
||||
tenement,
|
||||
sharp: sharp === "" ? null : sharp,
|
||||
peak: peak === "" ? null : peak,
|
||||
flat: flat === "" ? null : flat,
|
||||
valley: valley === "" ? null : valley,
|
||||
overall: overall === "" ? null : overall,
|
||||
deepValley: deepValley == "" ? null : deepValley,
|
||||
|
||||
url, sn, collector
|
||||
})
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return;
|
||||
}
|
||||
alertSuccess("新增成功")
|
||||
this.setData({
|
||||
park: null,
|
||||
parkName: null,
|
||||
})
|
||||
this.clearData()
|
||||
wx.navigateTo({
|
||||
url: '/pages/workBenchTodoList/index',
|
||||
})
|
||||
},
|
||||
goback() {
|
||||
wx.navigateBack()
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
placeholder="请选择电表箱"
|
||||
text="{{meterBoxName}}"
|
||||
bind:search="onMeterBoxFocus"
|
||||
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
@@ -63,6 +64,7 @@
|
||||
placeholder="请输入倍率"
|
||||
type="input"
|
||||
text="ratio"
|
||||
required="{{true}}"
|
||||
bind:changeText="changeRatio"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
@@ -85,60 +87,89 @@
|
||||
placeholder="请选择卡绑定(选填)"
|
||||
text="{{cardName}}"
|
||||
bind:search="onBindCard"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="clearCard"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="采集器"
|
||||
placeholder="请选择采集器绑定"
|
||||
text="{{collectorName}}"
|
||||
bind:search="onBindCollector"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="clearCollector"
|
||||
/>
|
||||
<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"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="总"
|
||||
placeholder="请输入总"
|
||||
type="input"
|
||||
bind:changeText="changeOverall"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="尖"
|
||||
placeholder="请输入尖"
|
||||
type="input"
|
||||
bind:changeText="changeSharp"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="峰"
|
||||
placeholder="请输入峰"
|
||||
type="input"
|
||||
bind:changeText="changePeak"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="平"
|
||||
placeholder="请输入平"
|
||||
type="input"
|
||||
bind:changeText="changeFlat"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="谷"
|
||||
placeholder="请输入谷"
|
||||
type="input"
|
||||
bind:changeText="changeValley"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="深谷"
|
||||
placeholder="请输入深谷"
|
||||
type="input"
|
||||
bind:changeText="changeDeepValley"
|
||||
wx:if="{{meterType === 0}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="图片"
|
||||
@@ -172,8 +203,12 @@
|
||||
title="{{title}}"
|
||||
type="{{type}}"
|
||||
park="{{park}}"
|
||||
building="{{building}}"
|
||||
bindconfirm="onConfirm"
|
||||
filterData="{{collections}}"
|
||||
filterType="collection"
|
||||
bindcancel="onCancel"
|
||||
placeholder="{{placeholder}}"
|
||||
wx:if="{{show}}"
|
||||
/>
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ Page({
|
||||
phone, building, feeType, park, editType, id, parkName,
|
||||
|
||||
} = this.data;
|
||||
const { code, message } = await createBackTenement(park, { name, shortName, address, contact, phone, building, feeType })
|
||||
const { code, message, tenement } = await createBackTenement(park, { name, shortName, address, contact, phone, building, feeType })
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
@@ -60,7 +60,7 @@ Page({
|
||||
alertSuccess("开户成功")
|
||||
// wx.navigateBack()
|
||||
wx.redirectTo({
|
||||
url: `/pages/workBenchNew/components/workBenchTenement/index?park=${park}&parkName=${parkName}&name=${name}`,
|
||||
url: `/pages/workBenchNew/components/workBenchTenement/index?park=${park}&parkName=${parkName}&name=${name}&id=${tenement}`,
|
||||
})
|
||||
},
|
||||
handleBack() {
|
||||
|
||||
@@ -50,6 +50,7 @@ Page({
|
||||
this.setData({
|
||||
meterName: `${data.meterNo}-${data.address}${data.tenement?.name ? '-' + data.tenement?.name : ''}`,
|
||||
meter: data.id,
|
||||
meterInfo: data,
|
||||
})
|
||||
break;
|
||||
case "pay":
|
||||
@@ -98,7 +99,7 @@ Page({
|
||||
},
|
||||
async handleSubmit() {
|
||||
const that = this;
|
||||
const { park, meter, money, way, voucherNo } = this.data;
|
||||
const { park, meter, money, way, voucherNo, meterInfo } = this.data;
|
||||
if (!park) {
|
||||
alertInfo("请选择园区");
|
||||
return;
|
||||
@@ -125,7 +126,8 @@ Page({
|
||||
meter,
|
||||
paymentType: way,
|
||||
voucherNo,
|
||||
type: 0
|
||||
type: 0 ,
|
||||
tenement: meterInfo?.tenement,
|
||||
})
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
|
||||
@@ -17,11 +17,23 @@
|
||||
<searchSelectWrapper
|
||||
label="金额"
|
||||
placeholder="请输入金额"
|
||||
text="{{meterName}}"
|
||||
fieldType="number"
|
||||
type="input"
|
||||
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="请选择付款方式"
|
||||
@@ -31,9 +43,24 @@
|
||||
<searchSelectWrapper
|
||||
label="凭证"
|
||||
placeholder="请输入凭证"
|
||||
type="input"
|
||||
bind:changeText="onChangeVoucherNo"
|
||||
/>
|
||||
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;">
|
||||
|
||||
@@ -1 +1,17 @@
|
||||
/* pages/workBenchNew/components/recharge/index.wxss */
|
||||
/* 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;
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
import { uninstallMeter, } from "../../../../service/meter";
|
||||
import dayjs from "../../../../utils/dayjs"
|
||||
import request from "../../../../utils/request"
|
||||
import { alertInfo, alertSuccess, loadingFunc} from "../../../../utils/index"
|
||||
import { alertInfo, alertSuccess, loadingFunc, wxModal} from "../../../../utils/index"
|
||||
import { uploadUninstallMeter } from "../../../../service/public"
|
||||
|
||||
const { OK } = request;
|
||||
@@ -42,6 +42,9 @@ Page({
|
||||
this.setData({
|
||||
park: data.id,
|
||||
parkName: data.name,
|
||||
meter: null,
|
||||
meterInfo: null,
|
||||
meterName: null,
|
||||
})
|
||||
break;
|
||||
case "tenement":
|
||||
@@ -113,23 +116,80 @@ Page({
|
||||
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 } = this.data;
|
||||
const { meter, reason, url, meterInfo, critical, peak, flat, valley, overall, deepOverall } = this.data;
|
||||
if (!meter) {
|
||||
alertInfo("请选择表号")
|
||||
return;
|
||||
}
|
||||
const { code, message } = await uninstallMeter({sn: meterInfo.meterSn, images: url, reason})
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
if (!meterInfo?.tenement) {
|
||||
const { code, message } = await uninstallMeter({sn: meter, images: url, reason, tenement: meterInfo.tenement, critical, peak, flat, valley, overall, deepOverall})
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
alertSuccess("拆除成功")
|
||||
setTimeout(() => {
|
||||
wx.navigateTo({
|
||||
url: '/pages/workBenchTodoList/index',
|
||||
})
|
||||
}, 300)
|
||||
return;
|
||||
}
|
||||
alertSuccess("拆除成功")
|
||||
setTimeout(() => {
|
||||
wx.navigateTo({
|
||||
url: '/pages/workBenchTodoList/index',
|
||||
})
|
||||
}, 300)
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '拆出后电表和商户关系,电表和卡的关系会自动解绑,是否拆出',
|
||||
complete: async (res) => {
|
||||
if (res.cancel) {
|
||||
|
||||
}
|
||||
|
||||
if (res.confirm) {
|
||||
const { code, message } = await uninstallMeter({sn: meter, images: url, reason, tenement: meterInfo.tenement, critical, peak, flat, valley, overall, deepOverall})
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
alertSuccess("拆除成功")
|
||||
setTimeout(() => {
|
||||
wx.navigateTo({
|
||||
url: '/pages/workBenchTodoList/index',
|
||||
})
|
||||
}, 300)
|
||||
return;
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
uploadImage() {
|
||||
const that = this;
|
||||
@@ -138,7 +198,6 @@ Page({
|
||||
mediaType: ['image'],
|
||||
sourceType: ['album', 'camera'],
|
||||
success: async function(res) {
|
||||
console.log("res", res)
|
||||
const path = res.tempFiles?.[0]?.tempFilePath.toLowerCase()
|
||||
if (!/(\.jpg|\.png|\.jpeg)$/.test(path)) {
|
||||
wx.showToast({
|
||||
|
||||
@@ -50,6 +50,48 @@
|
||||
</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>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
// pages/workBenchNew/components/workBenchMeter/index.js
|
||||
|
||||
import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index";
|
||||
import { getParkMeterList, handleOperateMeterSwitch } from "../../../../service/meter"
|
||||
import { getParkMeterList, handleOperateMeterMode } from "../../../../service/meter"
|
||||
import { uploadMeterForce } from "../../../../service/public"
|
||||
import request from "../../../../utils/request"
|
||||
const { OK } = request
|
||||
|
||||
@@ -87,7 +88,42 @@ Page({
|
||||
})
|
||||
},
|
||||
handleSubmit() {
|
||||
const { } = this.data;
|
||||
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;
|
||||
@@ -96,7 +132,6 @@ Page({
|
||||
mediaType: ['image'],
|
||||
sourceType: ['album', 'camera'],
|
||||
success: async function(res) {
|
||||
console.log("res", res)
|
||||
const path = res.tempFiles?.[0]?.tempFilePath.toLowerCase()
|
||||
if (!/(\.jpg|\.png|\.jpeg)$/.test(path)) {
|
||||
wx.showToast({
|
||||
@@ -107,7 +142,7 @@ Page({
|
||||
}
|
||||
var tempFilePaths = path;
|
||||
loadingFunc(async () => {
|
||||
const { code, message, url } = await uploadInstallMeter(tempFilePaths)
|
||||
const { code, message, url } = await uploadMeterForce(tempFilePaths)
|
||||
if (code !== OK) {
|
||||
alertError(message)
|
||||
return
|
||||
@@ -119,6 +154,9 @@ Page({
|
||||
}
|
||||
})
|
||||
},
|
||||
goback() {
|
||||
wx.navigateBack();
|
||||
},
|
||||
clearImage() {
|
||||
this.setData({
|
||||
url: ""
|
||||
@@ -178,56 +216,6 @@ Page({
|
||||
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();
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"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",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
text="{{days}}"
|
||||
type="input"
|
||||
bind:changeText="changeDays"
|
||||
required="{{true}}"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="原因"
|
||||
@@ -130,6 +131,7 @@
|
||||
useSlot="{{true}}"
|
||||
type=""
|
||||
hideBorder="{{true}}"
|
||||
transparent="{{true}}"
|
||||
>
|
||||
<view style="display: flex; align-items: center;">
|
||||
<view>
|
||||
@@ -138,12 +140,12 @@
|
||||
<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;" />
|
||||
<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="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>
|
||||
|
||||
@@ -93,7 +93,6 @@ Page({
|
||||
alertError(message)
|
||||
return;
|
||||
}
|
||||
console.log("data", data, "num", num)
|
||||
if (!data) {
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
@@ -146,10 +145,6 @@ Page({
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
const { parkName } = this.data;
|
||||
if (!parkName) {
|
||||
return
|
||||
}
|
||||
this.init()
|
||||
},
|
||||
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
bindcancel="onConcal"
|
||||
/>
|
||||
|
||||
<van-empty description="请先选择园区" wx:if="{{!park}}" />
|
||||
|
||||
<view wx:else>
|
||||
<view>
|
||||
<view wx:if="{{list.length}}">
|
||||
<van-cell
|
||||
wx:for="{{list}}"
|
||||
|
||||
@@ -64,17 +64,18 @@ Component({
|
||||
})
|
||||
},
|
||||
async onSubmit() {
|
||||
const { overall, critical, peak, valley, park, tenement, meter, readAt, flat } = this.data;
|
||||
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,
|
||||
overall:overall? Number(overall) : (overall === "" ? null : overall),
|
||||
critical : critical ? Number(critical) : (critical === "" ? null : critical),
|
||||
peak: peak ? Number(peak) : (peak === "" ? null : peak),
|
||||
flat: flat ? Number(flat) : (flat === "" ? null : flat),
|
||||
valley : valley ? Number(valley) : (valley === "" ? null : valley),
|
||||
deepValley: deepValley ? Number(deepValley) : (deepValley === "" ? null : deepValley),
|
||||
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
)
|
||||
@@ -111,6 +112,7 @@ Component({
|
||||
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 ? '合闸' : "分闸",
|
||||
})
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -60,6 +60,7 @@ Component({
|
||||
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 ? '合闸' : "分闸"
|
||||
})
|
||||
@@ -74,17 +75,18 @@ Component({
|
||||
})
|
||||
},
|
||||
async onSubmit() {
|
||||
const { overall, critical, peak, valley, park, tenement, meterId,readAt, flat } = this.data;
|
||||
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,
|
||||
overall:overall? Number(overall) : (overall === "" ? null : overall),
|
||||
critical : critical ? Number(critical) : (critical === "" ? null : critical),
|
||||
peak: peak ? Number(peak) : (peak === "" ? null : peak),
|
||||
flat: flat ? Number(flat) : (flat === "" ? null : flat),
|
||||
valley : valley ? Number(valley) : (valley === "" ? null : valley),
|
||||
deepValley: deepValley ? Number(deepValley) : (deepValley === null ? "" : deepValley),
|
||||
readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||
});
|
||||
if (code !== OK) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -20,7 +20,6 @@ Page({
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
console.log("options", options)
|
||||
const { park, parkName, name, id } = options
|
||||
this.setData({
|
||||
park,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// pages/workBenchTodoList/index.js
|
||||
import request from "../../utils/request"
|
||||
import { getWorkOrderList } from "../../service/workBench"
|
||||
import { alertInfo, loadingFunc } from "../../utils/index";
|
||||
import { noticeFlowType } from "../../utils/data"
|
||||
import { getWorkOrderList, doNoticeFlow } from "../../service/workBench"
|
||||
import { alertInfo, alertSuccess, loadingFunc } from "../../utils/index";
|
||||
import { noticeFlowType as noticeFlowTypeList } from "../../utils/data"
|
||||
const { OK } = request
|
||||
Page({
|
||||
|
||||
@@ -12,21 +12,63 @@ Page({
|
||||
data: {
|
||||
page: 1,
|
||||
size: 20,
|
||||
noticeFlowType,
|
||||
noticeFlowTypeList,
|
||||
actionItems: [{
|
||||
name: '确认',
|
||||
value: 'status'
|
||||
name: '详情',
|
||||
value: 'detail'
|
||||
}],
|
||||
},
|
||||
showActionMenu(e) {
|
||||
console.log("e", e)
|
||||
const { id, status } = e.currentTarget.dataset;
|
||||
this.setData({
|
||||
currentActionSheet: e.currentTarget.dataset.id
|
||||
currentActionSheet: id,
|
||||
actionItems: status === 0 ? [{
|
||||
name: '详情',
|
||||
value: 'detail'
|
||||
}, {
|
||||
name: '确认',
|
||||
value: 'ok'
|
||||
}] : [{
|
||||
name: '详情',
|
||||
value: 'detail'
|
||||
}]
|
||||
});
|
||||
},
|
||||
onClearPark() {
|
||||
const that = this;
|
||||
this.setData({ park: "", parkName: "", meter: "", meterName: "" }, () => {
|
||||
loadingFunc(async () => {
|
||||
await that.init()
|
||||
})
|
||||
})
|
||||
},
|
||||
onClearMeter() {
|
||||
const that = this;
|
||||
this.setData({ meter: "", meterName: "" }, () => {
|
||||
loadingFunc(async () => {
|
||||
await that.init()
|
||||
})
|
||||
})
|
||||
},
|
||||
onClearType() {
|
||||
const that = this;
|
||||
this.setData({ noticeFlowType: "", noticeFlowTypeName: "" }, () => {
|
||||
loadingFunc(async () => {
|
||||
await that.init()
|
||||
})
|
||||
})
|
||||
},
|
||||
onClearStatus() {
|
||||
const that = this;
|
||||
this.setData({ noticeFlowStatus: "", noticeFlowStatusName: "" }, () => {
|
||||
loadingFunc(async () => {
|
||||
await that.init()
|
||||
})
|
||||
})
|
||||
},
|
||||
hideActionMenu() {
|
||||
this.setData({
|
||||
currentActionSheet: null
|
||||
currentActionSheet: ""
|
||||
});
|
||||
},
|
||||
onMenuSelect(e) {
|
||||
@@ -35,15 +77,42 @@ onMenuSelect(e) {
|
||||
} = e.detail;
|
||||
const id = e.currentTarget.dataset.id;
|
||||
|
||||
if (value === 'detail') {
|
||||
switch(value) {
|
||||
case "detail":
|
||||
this.jumpToDetail(id);
|
||||
break;
|
||||
case "ok":
|
||||
this.handleDoNotice(id);
|
||||
break;
|
||||
}
|
||||
},
|
||||
handleDoNoticeBtn(e) {
|
||||
const id = e.currentTarget.dataset.id;
|
||||
this.handleDoNotice(id)
|
||||
},
|
||||
async handleDoNotice(id) {
|
||||
const { code, message } = await doNoticeFlow(id)
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
alertSuccess("确认成功")
|
||||
const that = this;
|
||||
setTimeout(() => {
|
||||
that.init();
|
||||
}, 300)
|
||||
},
|
||||
jumpToDetail(id) {
|
||||
|
||||
// wx.navigateTo({
|
||||
// url: '/pages/workOrderDetail/index?id=' + id,
|
||||
// })
|
||||
wx.navigateTo({
|
||||
url: '/pages/workOrderDetail/index?id=' + id,
|
||||
})
|
||||
},
|
||||
listJumpToDetail(e) {
|
||||
const { id } = e.currentTarget.dataset;
|
||||
wx.navigateTo({
|
||||
url: '/pages/workOrderDetail/index?id=' + id,
|
||||
})
|
||||
},
|
||||
onConfirm(e) {
|
||||
const { type, data = {}, way } = e.detail;
|
||||
@@ -51,8 +120,8 @@ onMenuSelect(e) {
|
||||
switch(type) {
|
||||
case "park":
|
||||
this.setData({
|
||||
park: data.id,
|
||||
parkName: data.name,
|
||||
park: data?.id,
|
||||
parkName: data?.name,
|
||||
})
|
||||
break;
|
||||
case "tenement":
|
||||
@@ -64,7 +133,7 @@ onMenuSelect(e) {
|
||||
|
||||
case "noticeFlowType":
|
||||
this.setData({
|
||||
noticeFlowType: data,
|
||||
noticeFlowType: way,
|
||||
noticeFlowTypeName: data,
|
||||
page: 1,
|
||||
}, () => {
|
||||
@@ -75,7 +144,7 @@ onMenuSelect(e) {
|
||||
break;
|
||||
case "noticeFlowStatus":
|
||||
this.setData({
|
||||
noticeFlowStatus: data,
|
||||
noticeFlowStatus: way,
|
||||
noticeFlowStatusName: data,
|
||||
page: 1,
|
||||
}, () => {
|
||||
@@ -84,10 +153,10 @@ onMenuSelect(e) {
|
||||
})
|
||||
});
|
||||
break;
|
||||
case "meter":
|
||||
case "workOrderMeter":
|
||||
this.setData({
|
||||
meter: data.id,
|
||||
meterName: data.address,
|
||||
meter: data?.meter_id,
|
||||
meterName: data?.address,
|
||||
meterInfo: data,
|
||||
page: 1,
|
||||
}, () => {
|
||||
@@ -136,7 +205,7 @@ onMenuSelect(e) {
|
||||
this.setData({
|
||||
show: true,
|
||||
title: "电表",
|
||||
type: 'meter'
|
||||
type: 'workOrderMeter'
|
||||
})
|
||||
},
|
||||
onChangePage(e) {
|
||||
@@ -150,18 +219,19 @@ onMenuSelect(e) {
|
||||
})
|
||||
},
|
||||
async init() {
|
||||
const { page, size, park, tenement, meter, noticeFlowType, noticeFlowStatus, time } = this.data;
|
||||
const { page, size, park, tenement = "", meter = "", noticeFlowType, noticeFlowStatus, time } = this.data;
|
||||
|
||||
const { code, message, data, total } = await getWorkOrderList({ page, size, park, tenement, meter, type: noticeFlowType, time, status: noticeFlowStatus })
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return;
|
||||
}
|
||||
this.setData({
|
||||
list: data?.map(item => {
|
||||
list: Array.isArray(data) ? data?.map(item => {
|
||||
item.time = item?.created_at?.slice(0, 10)
|
||||
item.address = item?.target?.meter_data?.address;
|
||||
return item;
|
||||
}),
|
||||
}) : [],
|
||||
totalPage: Math.ceil(total / size),
|
||||
})
|
||||
},
|
||||
@@ -169,9 +239,7 @@ onMenuSelect(e) {
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
loadingFunc(async () => {
|
||||
await this.init()
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -185,7 +253,9 @@ onMenuSelect(e) {
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
loadingFunc(async () => {
|
||||
await this.init()
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"navigator": "/components/navigator/index",
|
||||
"van-field": "@vant/weapp/field/index",
|
||||
"van-popup": "@vant/weapp/popup/index",
|
||||
"van-row": "@vant/weapp/row/index",
|
||||
"van-col": "@vant/weapp/col/index",
|
||||
"search-select": "/components/searchSelect/index",
|
||||
"van-field": "@vant/weapp/field/index",
|
||||
"van-button": "@vant/weapp/button/index",
|
||||
"searchSelectWrapper": "/components/searchSelectWrapper/index",
|
||||
"van-empty": "@vant/weapp/empty/index",
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
placeholder="请选择园区"
|
||||
text="{{parkName}}"
|
||||
bind:search="onParkFocus"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="onClearPark"
|
||||
/>
|
||||
|
||||
<searchSelectWrapper
|
||||
@@ -13,18 +15,24 @@
|
||||
placeholder="请选择电表"
|
||||
text="{{meterName}}"
|
||||
bind:search="onMeterFocus"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="onClearMeter"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="流程类型"
|
||||
placeholder="请选择流程类型"
|
||||
text="{{noticeFlowTypeName}}"
|
||||
bind:search="onNoticeFlowFocus"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="onClearType"
|
||||
/>
|
||||
<searchSelectWrapper
|
||||
label="确认状态"
|
||||
placeholder="请选择确认状态"
|
||||
text="{{noticeFlowStatusName}}"
|
||||
bind:search="onNoticeFlowStatusFocus"
|
||||
allowClear="{{true}}"
|
||||
bind:clear="onClearStatus"
|
||||
/>
|
||||
<view>
|
||||
<view wx:if="{{list.length}}">
|
||||
@@ -38,42 +46,44 @@
|
||||
<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 wx:for="{{list}}" wx:for-index="itemIndex" wx:key="item" catch:tap="listJumpToDetail" data-id="{{item.id}}">
|
||||
<view class="tr" style="display: flex; align-items: center; ">
|
||||
<view class="th" style="flex: 0 0 130rpx;">
|
||||
{{ item.time }}
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 150rpx;">
|
||||
{{ noticeFlowType[item.types - 1] }}
|
||||
{{ noticeFlowTypeList[item.types - 1] }}
|
||||
</view>
|
||||
|
||||
<view class="th" style="flex: 0 0 150rpx;">
|
||||
{{ item.address }}
|
||||
</view>
|
||||
<view class="th" style="flex: 0 0 150rpx;">
|
||||
{{ item.flow_status === 1 ? "处理中" : "已确认" }}
|
||||
<view
|
||||
class="primaryTextBtn"
|
||||
wx:if="{{item.current_user_audit_status === 0}}"
|
||||
data-id="{{item.id}}"
|
||||
catch:tap="handleDoNoticeBtn"
|
||||
> 确认 </view>
|
||||
<view wx:else> 已确认 </view>
|
||||
</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-data="{{index}}" class="more-icon" />
|
||||
<van-icon name="ellipsis" size="24px" catch:tap="showActionMenu" data-id="{{item.id}}" data-data="{{index}}" data-status="{{item.current_user_audit_status}}" 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
|
||||
class="primaryTextBtn"
|
||||
wx:if="{{item.flow_status === 1}}"
|
||||
data-id="{{item.id}}"
|
||||
> 确认 </view>
|
||||
/>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</block>
|
||||
</van-radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -1,20 +1,73 @@
|
||||
import { loadingFunc, alertSuccess, alertInfo } from "../../utils/index";
|
||||
import request from "../../utils/request"
|
||||
import { getNoticeFlowDetail, doNoticeFlow } from "../../service/workBench"
|
||||
|
||||
const { OK } = request;
|
||||
|
||||
// pages/workOrderDetail/index.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
detail: {},
|
||||
header: [
|
||||
// { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address },
|
||||
{ title: '操作人',renderBody: (item) => { return item.user_name } },
|
||||
{ title: '状态',renderBody: (item) => { return item.status === 0 ? "未确认" : "已确认" } },
|
||||
],
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
const { id } = options;
|
||||
const that = this;
|
||||
loadingFunc(async () => {
|
||||
that.getDetail(id)
|
||||
})
|
||||
},
|
||||
showImage() {
|
||||
this.setData({
|
||||
imageShow: true
|
||||
})
|
||||
},
|
||||
onClose() {
|
||||
this.setData({
|
||||
imageShow: false
|
||||
})
|
||||
},
|
||||
goback() {
|
||||
wx.navigateBack();
|
||||
},
|
||||
async onSubmit() {
|
||||
const {detail} = this.data;
|
||||
const {id} = detail;
|
||||
const { code, message } = await doNoticeFlow(id)
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return
|
||||
}
|
||||
alertSuccess("确认成功")
|
||||
const that = this;
|
||||
setTimeout(() => {
|
||||
loadingFunc(async () => {
|
||||
await that.getDetail(id)
|
||||
})
|
||||
}, 300)
|
||||
|
||||
},
|
||||
|
||||
async getDetail(id) {
|
||||
const { code, data ,message } = await getNoticeFlowDetail(id)
|
||||
if (code !== OK) {
|
||||
alertInfo(message)
|
||||
return;
|
||||
}
|
||||
this.setData({
|
||||
detail: data
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
"usingComponents": {
|
||||
"navigator": "/components/navigator/index",
|
||||
"van-popup": "@vant/weapp/popup/index",
|
||||
"van-field": "@vant/weapp/field/index",
|
||||
"van-button": "@vant/weapp/button/index",
|
||||
"custom-table": "/components/table/table",
|
||||
"van-image": "@vant/weapp/image/index"
|
||||
},
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
@@ -1,2 +1,93 @@
|
||||
<!--pages/workOrderDetail/index.wxml-->
|
||||
<text>pages/workOrderDetail/index.wxml</text>
|
||||
<navigator title="工单详情" canBack="{{true}}" />
|
||||
<view>
|
||||
<van-field
|
||||
value="{{ detail.target.meter_data.park_name || '-' }}"
|
||||
label="园区"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ detail.target.full_name || '-' }}"
|
||||
label="商户全称"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ detail.target.meter_data.meter_sn || '-' }}"
|
||||
label="电表编号"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ detail.target.meter_data.address || '-' }}"
|
||||
label="电表地址"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
label="图片"
|
||||
title-width="132rpx"
|
||||
>
|
||||
<view slot="input" >
|
||||
<view style="display: flex; align-items: center;" wx:if="{{detail.images}}">
|
||||
<van-image width="100" height="100" src="{{detail.images}}" bind:tap="showImage" />
|
||||
</view>
|
||||
<view wx:else> - </view>
|
||||
</view>
|
||||
</van-field>
|
||||
<van-field
|
||||
value="{{ detail.created_at || '-' }}"
|
||||
label="发起时间"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ detail.created_name || '-' }}"
|
||||
label="发起人"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<!-- <van-field
|
||||
value="{{ detail.target.meter_data.meter_sn || '-' }}"
|
||||
label="电表编号"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/> -->
|
||||
<van-field
|
||||
value="{{ detail.reason || '-' }}"
|
||||
label="批注"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<van-field
|
||||
value="{{ detail.current_user_audit_status === 0 ? '未确认' : '已确认' }}"
|
||||
label="工单状态"
|
||||
readonly
|
||||
title-width="132rpx"
|
||||
/>
|
||||
<view style="margin: 20rpx;">
|
||||
<custom-table header="{{header}}" list="{{detail.notifier}}" />
|
||||
</view>
|
||||
<view class="wrapper">
|
||||
<view class="operate">
|
||||
<view class="submit" wx:if="{{detail.current_user_audit_status === 0}}"> <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>
|
||||
</view>
|
||||
|
||||
|
||||
<van-popup
|
||||
show="{{ imageShow }}"
|
||||
bind:close="onClose"
|
||||
z-index="99999"
|
||||
>
|
||||
<van-image
|
||||
width="100vw"
|
||||
height="99.1vh"
|
||||
fit="contain"
|
||||
src="{{detail.images}}"
|
||||
bind:click="onClose"
|
||||
/>
|
||||
</van-popup>
|
||||
@@ -1 +1,16 @@
|
||||
/* pages/workOrderDetail/index.wxss */
|
||||
/* pages/workOrderDetail/index.wxss */
|
||||
|
||||
|
||||
.operate {
|
||||
display: flex;
|
||||
padding-top: 24rpx;
|
||||
padding-bottom: 36rpx;
|
||||
}
|
||||
|
||||
.submit, .cancel {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.submit {
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
@@ -23,6 +23,34 @@
|
||||
"condition": {
|
||||
"miniprogram": {
|
||||
"list": [
|
||||
{
|
||||
"name": "pages/invoiceList/index",
|
||||
"pathName": "pages/invoiceList/index",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "pages/workBenchNew/components/installMeter/index",
|
||||
"pathName": "pages/workBenchNew/components/installMeter/index",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "pages/workBenchTodoList/index",
|
||||
"pathName": "pages/workBenchTodoList/index",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "pages/workOrderDetail/index",
|
||||
"pathName": "pages/workOrderDetail/index",
|
||||
"query": "id=NM00123091982548993",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "pages/workBenchTodoList/index",
|
||||
"pathName": "pages/workBenchTodoList/index",
|
||||
|
||||
@@ -37,14 +37,20 @@ export const getBackTenementMeters = async function(park, tenement) {
|
||||
export const handleOperateMeterSwitch = async function({ ids = [], status }) {
|
||||
return await PUT(`/equipment/batchSwtich`, { ids, status });
|
||||
}
|
||||
|
||||
// 预付费模式
|
||||
export const handleOperateMeterMode = async function({ ids = [], mode, days, images, reason }) {
|
||||
return await PUT(`/equipment/batchSetMode`, { ids, mode, days, images, reason });
|
||||
}
|
||||
|
||||
// 绑定时获取电表的最新信息
|
||||
export const getWorkMeterDetail = async function(code = '') {
|
||||
return await GET(`/vx/getWorkMeterDetail?code=${code}`);
|
||||
}
|
||||
|
||||
// 获取某一园区下的电表箱列表
|
||||
export const getParkBoxList = async function({park = "", keyword = "", page = 1}) {
|
||||
return await GET(`/box/${park}?page=${page}&keyword=${replaceSpecialIcon(keyword)}`);
|
||||
export const getParkBoxList = async function({park = "", keyword = "", page = 1, building =- ""}) {
|
||||
return await GET(`/box/${park}?page=${page}&keyword=${replaceSpecialIcon(keyword)}&building=${building}`);
|
||||
}
|
||||
|
||||
// 获取卡列表
|
||||
@@ -60,8 +66,8 @@ export const getCollectionList = async function({park = "", keyword = "", page =
|
||||
|
||||
|
||||
// 获取库存电表列表
|
||||
export const getInventoryMeter = async function({park = "", keyword = "", page = 1}) {
|
||||
return await GET(`/electricity/list?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}`);
|
||||
export const getInventoryMeter = async function({park = "", keyword = "", page = 1, status = 1}) {
|
||||
return await GET(`/electricity/list?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}&status=${status}`);
|
||||
}
|
||||
|
||||
// 新装电表
|
||||
@@ -70,6 +76,16 @@ export const installMeter = async function(data) {
|
||||
}
|
||||
|
||||
// 拆表
|
||||
export const uninstallMeter = async function({sn = "", reason = "", images = ""}) {
|
||||
return await DELETE(`/flow/doMeterRemoveApproval?sn=${sn}&reason=${reason}&images=${images}`);
|
||||
export const uninstallMeter = async function(data) {
|
||||
return await POST(`/flow/doMeterRemoveApproval`, data);
|
||||
}
|
||||
|
||||
// 获取商户下的电表,后台
|
||||
export const getCollectorList = async function(keyword) {
|
||||
return await GET(`/collector/list?collectorAddress=${replaceSpecialIcon(keyword)}`);
|
||||
}
|
||||
|
||||
// 微信工单列表查询所有电表
|
||||
export const getWorkOrderAllMeter = async function({ keyword, park, page = 1, size = 20 }) {
|
||||
return await GET(`/vx/getAllMeter?keyword=${replaceSpecialIcon(keyword)}&pid=${park}&page=${page}&size=${size}`,);
|
||||
}
|
||||
@@ -63,6 +63,25 @@ export const uploadInstallMeter = (filePath) => {
|
||||
})
|
||||
}
|
||||
|
||||
export const uploadMeterForce = (filePath) => {
|
||||
const { api } = getConfigByEnv();
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.uploadFile({
|
||||
filePath: filePath,
|
||||
name: 'data',
|
||||
url: `${api}/image/meter/force`,
|
||||
header: {
|
||||
authorization: 'Bearer ' + wx.getStorageSync("token")
|
||||
},
|
||||
success: (res) => {
|
||||
resolve(res?.data ? JSON.parse(res?.data) : res?.data);
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err);
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
export const uploadUninstallMeter = (filePath) => {
|
||||
const { api } = getConfigByEnv();
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
@@ -56,4 +56,15 @@ export const getWorkOrderList = async function({
|
||||
page, size, park = "", meter = "", tenement = "", status = "", type = "", time = ""
|
||||
}) {
|
||||
return await GET(`/noticeFlow/getDisposeList?page=${page}&size=${size}&park=${park}&meter=${meter}&tenement=${tenement}&status=${status}&type=${type}&time=${time}`,);
|
||||
}
|
||||
}
|
||||
|
||||
// 确认当前流程
|
||||
export const doNoticeFlow = async function(id) {
|
||||
return await PUT(`/noticeFlow/${id}/meter/dispose`,);
|
||||
}
|
||||
|
||||
// 当前流程详情
|
||||
export const getNoticeFlowDetail = async function(id) {
|
||||
return await GET(`/noticeFlow/${id}/detail`,);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ export function getConfigByEnv() {
|
||||
api = "http://localhost:8000"
|
||||
// api = "https://zgd.hbhcbn.com/api3"
|
||||
// TODO: 发布正式时使用此路径
|
||||
// api = "https://zgd.hbhcbn.com/wxApi"
|
||||
// api = "https://zgd.hbhcbn.com/wxApi"
|
||||
// api = "http://127.0.0.1:4523/m1/4143821-0-default"
|
||||
break;
|
||||
// 体验版
|
||||
|
||||
Reference in New Issue
Block a user