From 639f92540f1c88cba7f71883f5079269ef829821 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Sun, 9 Nov 2025 17:33:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 4 +- components/searchSelect/index.js | 44 ++- components/searchSelect/index.wxml | 30 ++ components/searchSelectWrapper/index.wxml | 1 + components/searchSelectWrapper/index.wxss | 5 +- pages/workBenchNew/components/kaihu/index.js | 85 +++++- .../workBenchNew/components/kaihu/index.wxml | 30 +- .../components/uninstallMeter/index.js | 61 +++- .../components/uninstallMeter/index.wxml | 12 +- .../components/workBenchMeterControl/index.js | 276 ++++++++++++++++++ .../workBenchMeterControl/index.json | 20 ++ .../workBenchMeterControl/index.wxml | 163 +++++++++++ .../workBenchMeterControl/index.wxss | 78 +++++ .../components/workBenchTenement/index.js | 12 +- pages/workBenchNew/index.js | 12 +- pages/workBenchNew/index.wxml | 7 +- pages/workBenchTodoList/index.js | 164 ++++++++++- pages/workBenchTodoList/index.json | 12 +- pages/workBenchTodoList/index.wxml | 105 ++++++- pages/workBenchTodoList/index.wxss | 72 ++++- pages/workOrderDetail/index.js | 66 +++++ pages/workOrderDetail/index.json | 3 + pages/workOrderDetail/index.wxml | 2 + pages/workOrderDetail/index.wxss | 1 + service/meter.js | 5 + service/workBench.js | 7 + utils/data.js | 7 +- 27 files changed, 1257 insertions(+), 27 deletions(-) create mode 100644 pages/workBenchNew/components/workBenchMeterControl/index.js create mode 100644 pages/workBenchNew/components/workBenchMeterControl/index.json create mode 100644 pages/workBenchNew/components/workBenchMeterControl/index.wxml create mode 100644 pages/workBenchNew/components/workBenchMeterControl/index.wxss create mode 100644 pages/workOrderDetail/index.js create mode 100644 pages/workOrderDetail/index.json create mode 100644 pages/workOrderDetail/index.wxml create mode 100644 pages/workOrderDetail/index.wxss diff --git a/app.json b/app.json index ffe9845..09a5502 100644 --- a/app.json +++ b/app.json @@ -39,6 +39,7 @@ "pages/billMeterDetail/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", @@ -47,7 +48,8 @@ "pages/workBenchNew/components/installMeter/index", "pages/workBenchNew/components/uninstallMeter/index", "pages/workBenchTodoList/index", - "pages/workBenchNew/components/kaihu/index" + "pages/workBenchNew/components/kaihu/index", + "pages/workOrderDetail/index" ], "subPackages": [ { diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index 3cadbc3..5702dcf 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -2,7 +2,9 @@ import { getLoginParkList, getParkBuildingList } from "../../service/park" import { getParkSimpleMeterList, getParkBoxList, getCardList, getCollectionList, getInventoryMeter } from "../../service/meter" import { alertInfo } from "../../utils/index"; import request from "../../utils/request" -import { payWays, feeType, meterType } from "../../utils/data"; +import { payWays, feeType, meterType, noticeFlowType, noticeFlowStatus, + meterMode +} from "../../utils/data"; import { getTenementList, getWxTenementList } from "../../service/tenement"; const { OK } = request; @@ -23,6 +25,7 @@ Component({ observers: { "show,type,filterBind": function(newShow, newType) { if (newShow && newType) { + console.log("newShow", newShow,"newType", newType) this.onSearch() } } @@ -35,7 +38,10 @@ Component({ searchText: "", payWays, feeType, - meterType + meterType, + noticeFlowType, + noticeFlowStatus, + meterMode, }, lifetimes: { attached() { @@ -76,6 +82,17 @@ Component({ }) 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; const { payWays = [], type } = this.data; @@ -87,6 +104,29 @@ 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: "" + }) + 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) { const { index } = event.detail; const { feeType = [], type } = this.data; diff --git a/components/searchSelect/index.wxml b/components/searchSelect/index.wxml index 55957fe..bfef00f 100644 --- a/components/searchSelect/index.wxml +++ b/components/searchSelect/index.wxml @@ -36,6 +36,36 @@ bind:confirm="onMeterTypeConfirm" /> + + + + + + + + + {{placeholder}} {{text}} + diff --git a/components/searchSelectWrapper/index.wxss b/components/searchSelectWrapper/index.wxss index 523629c..eafae3e 100644 --- a/components/searchSelectWrapper/index.wxss +++ b/components/searchSelectWrapper/index.wxss @@ -15,6 +15,7 @@ border-radius: 12rpx; border: 1rpx solid #ccc; background-color: #fff; + position: relative; } .inputContent { @@ -26,6 +27,7 @@ border-radius: 12rpx; border: 1rpx solid #ccc; background-color: #fff; + position: relative; } .text { @@ -39,4 +41,5 @@ .required { color: rgb(209, 83, 25); font-size: 30rpx; -} \ No newline at end of file +} + diff --git a/pages/workBenchNew/components/kaihu/index.js b/pages/workBenchNew/components/kaihu/index.js index 6c01e64..264a79b 100644 --- a/pages/workBenchNew/components/kaihu/index.js +++ b/pages/workBenchNew/components/kaihu/index.js @@ -1,4 +1,9 @@ // 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({ /** @@ -7,7 +12,85 @@ 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 } = 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}`, + }) + }, + 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, + }) + } + }, /** * 生命周期函数--监听页面加载 */ diff --git a/pages/workBenchNew/components/kaihu/index.wxml b/pages/workBenchNew/components/kaihu/index.wxml index 71f2ddd..ff351a5 100644 --- a/pages/workBenchNew/components/kaihu/index.wxml +++ b/pages/workBenchNew/components/kaihu/index.wxml @@ -1,6 +1,19 @@ + + + 选择 + + - \ No newline at end of file + + + + 保存 + 返回 + + + + \ No newline at end of file diff --git a/pages/workBenchNew/components/uninstallMeter/index.js b/pages/workBenchNew/components/uninstallMeter/index.js index 0ae2e6a..f785687 100644 --- a/pages/workBenchNew/components/uninstallMeter/index.js +++ b/pages/workBenchNew/components/uninstallMeter/index.js @@ -1,6 +1,11 @@ // pages/workBenchNew/components/uninstallMeter/index.js +import { uninstallMeter } from "../../../../service/meter"; import dayjs from "../../../../utils/dayjs" -import { alertInfo, } from "../../../../utils/index" +import request from "../../../../utils/request" +import { alertInfo, alertSuccess, } from "../../../../utils/index" + +const { OK } = request; + Page({ /** @@ -66,6 +71,7 @@ Page({ this.setData({ meter: data.id, meterName: data.address, + meterInfo: data, }); break; case "card": @@ -106,6 +112,59 @@ Page({ type: "", }) }, + async onSubmit() { + const { meter, } = this.data; + if (!meter) { + alertInfo("请选择表号") + return; + } + const { code, message } = await uninstallMeter(meter) + 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) { + console.log("res", 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 + }) + }) + } + }) + }, + clearImage() { + this.setData({ + url: "" + }) + }, goback() { wx.navigateBack() }, diff --git a/pages/workBenchNew/components/uninstallMeter/index.wxml b/pages/workBenchNew/components/uninstallMeter/index.wxml index 8941895..91330e9 100644 --- a/pages/workBenchNew/components/uninstallMeter/index.wxml +++ b/pages/workBenchNew/components/uninstallMeter/index.wxml @@ -39,11 +39,19 @@ type="" hideBorder="{{true}}" > - 上传 + + + 上传 + + 清除 + + + + - 提交 + 提交 返回 diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.js b/pages/workBenchNew/components/workBenchMeterControl/index.js new file mode 100644 index 0000000..a148276 --- /dev/null +++ b/pages/workBenchNew/components/workBenchMeterControl/index.js @@ -0,0 +1,276 @@ +// 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' + }) + }, + 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, + }) + }, + uploadImage() { + const that = this; + wx.chooseMedia({ + count: 1, + 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({ + 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 + }) + }) + } + }) + }, + 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 + }) + }, + async handleMeterSwitchOn() { + const that = this; + const { meter, meterName } = this.data; + wx.showModal({ + title: '提示', + content: `您确认要对${meterName || 当前电表}进行合闸吗?`, + complete: async (res) => { + if (res.cancel) { + + } + + if (res.confirm) { + loadingFunc(async () => { + const { code, message } = await handleOperateMeterSwitch({ ids: [meter], status: 0 }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("合闸成功") + that.init(); + }) + + } + } + }) + }, + async handleMeterSwitchOff() { + const that = this; + const { meter, meterName } = this.data; + wx.showModal({ + title: '提示', + content: `您确认要对${meterName || 当前电表}进行拉闸吗?`, + complete: async (res) => { + if (res.cancel) { + return; + } + if (res.confirm) { + loadingFunc(async () => { + const { code, message } = await handleOperateMeterSwitch({ ids: [meter], status: 1 }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("拉闸成功") + that.init(); + }) + } + } + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.json b/pages/workBenchNew/components/workBenchMeterControl/index.json new file mode 100644 index 0000000..cf25777 --- /dev/null +++ b/pages/workBenchNew/components/workBenchMeterControl/index.json @@ -0,0 +1,20 @@ +{ + "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", + "van-popup": "@vant/weapp/popup/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.wxml b/pages/workBenchNew/components/workBenchMeterControl/index.wxml new file mode 100644 index 0000000..97a2091 --- /dev/null +++ b/pages/workBenchNew/components/workBenchMeterControl/index.wxml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + {{item.tenement.shortName}} + + {{item.tenement.name}} + + + + + + + + + 商户电表 + + 公摊电表 + + 园区电表 + 表号:{{item.meterNo}} + + + + + + + + {{item.address}} + + SN:{{item.meterSn}} + + + + + + + + 表字:{{item.amount}} + + 余额:{{item.money}} + + + + + + + + 合闸 + 拉闸 + + + + 在线 + 预付费 + 强控 + 临时强控 + + + + + 失联 + 预付费 + 强控 + 临时强控 + + + + + + + + + + + + + + + + + 上传 + + 清除 + + + + + + + + 提交 + 返回 + + + + + + + + diff --git a/pages/workBenchNew/components/workBenchMeterControl/index.wxss b/pages/workBenchNew/components/workBenchMeterControl/index.wxss new file mode 100644 index 0000000..d259093 --- /dev/null +++ b/pages/workBenchNew/components/workBenchMeterControl/index.wxss @@ -0,0 +1,78 @@ +/* pages/workBench/components/record/index.wxss */ +.table { + width: 890rpx; + +} + +.classWrapper { + width: 100vw; + overflow-x: auto; +} + +.thead { + display: flex; + flex-wrap: nowrap; + border-bottom: 1rpx solid #EEEEEE; +} + +.thead .th { + padding: 20rpx; + white-space: nowrap; + text-align: center; + box-sizing: border-box; + +} + +.tbody { + width: 890rpx; +} + +.tbody .tr { + padding: 20rpx; + border-bottom: 1rpx solid #EEEEEE; + display: flex; + align-items: center; + flex-wrap: nowrap; +} + +.tbody .th { + word-break: break-all; + text-align: center; +} + +.customTable { + margin: 20rpx; +} + +.customTableTile { + background-color: var(--light-green); + padding: 16rpx; + box-sizing: border-box; + font-weight: 700; +} + +.tableRow { + padding: 16rpx; + border: 1rpx solid #ccc; + border-top: 0rpx; +} + +page { + background-color: rgb(228,240,236); + font-size: 32rpx; + } + + + .operate { + display: flex; + padding-top: 24rpx; + padding-bottom: 36rpx; +} + +.submit, .cancel { + flex: 1; +} + +.submit { + margin-right: 30rpx; +} diff --git a/pages/workBenchNew/components/workBenchTenement/index.js b/pages/workBenchNew/components/workBenchTenement/index.js index 59f3cb2..ce91abd 100644 --- a/pages/workBenchNew/components/workBenchTenement/index.js +++ b/pages/workBenchNew/components/workBenchTenement/index.js @@ -20,7 +20,17 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - + console.log("options", options) + const { park, parkName, name, id } = options + this.setData({ + park, + parkName, + tenementName: name, + tenement: id + }) + if (id) { + this.getTenementInfo(); + } }, onParkFocus(e) { this.setData({ diff --git a/pages/workBenchNew/index.js b/pages/workBenchNew/index.js index aa4fd6b..dfec314 100644 --- a/pages/workBenchNew/index.js +++ b/pages/workBenchNew/index.js @@ -78,7 +78,17 @@ Page({ }, jumpToKaihu() { wx.navigateTo({ - url: 'pages/workBenchNew/components/kaihu/index', + url: '/pages/workBenchNew/components/kaihu/index', + }) + }, + jumpToMeterControl() { + wx.navigateTo({ + url: '/pages/workBenchNew/components/workBenchMeterControl/index', + }) + }, + workOrder() { + wx.navigateTo({ + url: '/pages/workBenchTodoList/index', }) }, /** diff --git a/pages/workBenchNew/index.wxml b/pages/workBenchNew/index.wxml index e237b49..ec91b45 100644 --- a/pages/workBenchNew/index.wxml +++ b/pages/workBenchNew/index.wxml @@ -114,10 +114,13 @@ - + - + + + + diff --git a/pages/workBenchTodoList/index.js b/pages/workBenchTodoList/index.js index 4b9ffea..521b868 100644 --- a/pages/workBenchTodoList/index.js +++ b/pages/workBenchTodoList/index.js @@ -1,18 +1,178 @@ // 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" +const { OK } = request Page({ /** * 页面的初始数据 */ data: { - + page: 1, + size: 20, + noticeFlowType, + actionItems: [{ + name: '确认', + value: 'status' + }], }, + showActionMenu(e) { + console.log("e", 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(id); + } +}, + jumpToDetail(id) { + + // wx.navigateTo({ + // url: '/pages/workOrderDetail/index?id=' + id, + // }) + }, + onConfirm(e) { + const { type, data = {}, way } = e.detail; + const that = this; + switch(type) { + case "park": + this.setData({ + park: data.id, + parkName: data.name, + }) + break; + case "tenement": + this.setData({ + tenement: data.id, + tenementName: data.name, + }) + break; + + case "noticeFlowType": + this.setData({ + noticeFlowType: data, + noticeFlowTypeName: data, + page: 1, + }, () => { + loadingFunc(async () => { + await that.init() + }) + }); + break; + case "noticeFlowStatus": + this.setData({ + noticeFlowStatus: data, + noticeFlowStatusName: data, + page: 1, + }, () => { + loadingFunc(async () => { + await that.init() + }) + }); + break; + case "meter": + this.setData({ + meter: data.id, + meterName: data.address, + meterInfo: data, + page: 1, + }, () => { + loadingFunc(async () => { + await that.init() + }) + }); + break; + } + this.onCancel(); + }, + onCancel() { + this.setData({ + show: false, + title: "", + type: "", + }) + }, + onParkFocus(e) { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + onNoticeFlowFocus() { + this.setData({ + show: true, + title: "类型", + type: 'noticeFlowType' + }) + }, + onNoticeFlowStatusFocus() { + this.setData({ + show: true, + title: "确认状态", + type: 'noticeFlowStatus' + }) + }, + onMeterFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "电表", + type: 'meter' + }) + }, + onChangePage(e) { + const that = this; + this.setData({ + page: e.detail.currentIndex, + }, () => { + loadingFunc(async () => { + await that.init() + }) + }) + console.log("e", e) + }, + async init() { + const { page, size, park, tenement, meter, type, time, status } = this.data; + const { code, message, data, total } = await getWorkOrderList({ page, size, park, tenement, meter, type, time, status }) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + list: data?.map(item => { + item.time = item?.created_at?.slice(0, 10) + item.address = item?.target?.meter_data?.address; + return item; + }), + totalPage: Math.ceil(total / size), + }) + }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - + loadingFunc(async () => { + await this.init() + }) }, /** diff --git a/pages/workBenchTodoList/index.json b/pages/workBenchTodoList/index.json index aff1cbd..ede92dd 100644 --- a/pages/workBenchTodoList/index.json +++ b/pages/workBenchTodoList/index.json @@ -7,7 +7,17 @@ "search-select": "/components/searchSelect/index", "van-field": "@vant/weapp/field/index", "van-button": "@vant/weapp/button/index", - "searchSelectWrapper": "/components/searchSelectWrapper/index" + "searchSelectWrapper": "/components/searchSelectWrapper/index", + "van-empty": "@vant/weapp/empty/index", + "table": "/components/table/table", + "pagination": "/components/pagination/index", + "empty": "/components/empty/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "van-dialog": "@vant/weapp/dialog/index", + "van-icon": "@vant/weapp/icon/index", + "van-action-sheet": "@vant/weapp/action-sheet/index" + }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/workBenchTodoList/index.wxml b/pages/workBenchTodoList/index.wxml index 8603edb..0d26819 100644 --- a/pages/workBenchTodoList/index.wxml +++ b/pages/workBenchTodoList/index.wxml @@ -1,12 +1,99 @@ - - - 1 - - - 2 - - - \ No newline at end of file + + + + + + + + + + + 时间 + 类型 + 电表地址 + 状态 + 操作 + + + + + + + {{ item.time }} + + + {{ noticeFlowType[item.types - 1] }} + + + + {{ item.address }} + + + {{ item.flow_status === 1 ? "处理中" : "已确认" }} + + + + 确认 + + + + + + + + + + + + + + + + + + + + diff --git a/pages/workBenchTodoList/index.wxss b/pages/workBenchTodoList/index.wxss index f05fa3a..ea6fa96 100644 --- a/pages/workBenchTodoList/index.wxss +++ b/pages/workBenchTodoList/index.wxss @@ -1 +1,71 @@ -/* pages/workBenchTodoList/index.wxss */ \ No newline at end of file +/* pages/workBenchTodoList/index.wxss */ + +.table { + width: 500rpx; + +} + +.tableWrapper { + width: 100vw; + overflow-x: auto; +} + +.thead { + + display: flex; + flex-wrap: nowrap; + +} + +.thead .th { + padding: 10rpx; + white-space: nowrap; + text-align: center; + box-sizing: border-box; +} + +.primaryTextBtn { + color: #1989fa; + } + +.tbody { + width: 500rpx; +} + +.tbody .tr { + padding: 10rpx; + border-bottom: 1rpx solid #EEEEEE; + display: flex; + align-items: center; + flex-wrap: nowrap; +} + +.tbody .tr { + word-break: break-all; + text-align: center; +} + +.more-icon { + padding: 20rpx; + color: #1989fa; + display: flex; + justify-content: center; + align-items: center; + } + +/* 基础标签样式 */ +.tag { + display: inline-block; + padding: 4px 5px; + margin-right: 0px; + border-radius: 16px; + background: #07c160; + color: white; + font-size: 25rpx; + } + + /* 激活状态样式 */ + .tag.active { + background: #07c160; + color: white; + } \ No newline at end of file diff --git a/pages/workOrderDetail/index.js b/pages/workOrderDetail/index.js new file mode 100644 index 0000000..9b339ba --- /dev/null +++ b/pages/workOrderDetail/index.js @@ -0,0 +1,66 @@ +// pages/workOrderDetail/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/workOrderDetail/index.json b/pages/workOrderDetail/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/workOrderDetail/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/workOrderDetail/index.wxml b/pages/workOrderDetail/index.wxml new file mode 100644 index 0000000..15d3210 --- /dev/null +++ b/pages/workOrderDetail/index.wxml @@ -0,0 +1,2 @@ + +pages/workOrderDetail/index.wxml \ No newline at end of file diff --git a/pages/workOrderDetail/index.wxss b/pages/workOrderDetail/index.wxss new file mode 100644 index 0000000..d1b82a2 --- /dev/null +++ b/pages/workOrderDetail/index.wxss @@ -0,0 +1 @@ +/* pages/workOrderDetail/index.wxss */ \ No newline at end of file diff --git a/service/meter.js b/service/meter.js index a610bcd..aa8dca4 100644 --- a/service/meter.js +++ b/service/meter.js @@ -67,4 +67,9 @@ export const getInventoryMeter = async function({park = "", keyword = "", page = // 新装电表 export const installMeter = async function(data) { return await POST(`/wx/workBench/installMeter`, data); +} + +// 拆表 +export const uninstallMeter = async function(sn) { + return await DELETE(`/flow/doMeterRemoveApproval?sn=${sn}`); } \ No newline at end of file diff --git a/service/workBench.js b/service/workBench.js index a079d17..61f0169 100644 --- a/service/workBench.js +++ b/service/workBench.js @@ -49,4 +49,11 @@ export const checkReadingFinish = async function(id) { // 获取工作台首页 export const getWorkBenchHome = async function() { return await GET(`/workHome/mainPage`,); +} + +// 获取工单列表 +export const getWorkOrderList = async function({ + page, size, park = "", meter = "", tenement = "", status = "", type = "", time = "" +}) { + return await GET(`/noticeFlow/getDisposeList?page=${page}&size=${size}&park=${park}&meter=${meter}&tenement=${tenement}&status=${status}&type=${type}&time=${time}`,); } \ No newline at end of file diff --git a/utils/data.js b/utils/data.js index 2156c41..b9c09b9 100644 --- a/utils/data.js +++ b/utils/data.js @@ -11,4 +11,9 @@ export const getRechargeOperateWay = (num) => { export const feeType = ['华昌宝能收费', "物业代收1", "物业代收2", "物业代收线损"] -export const meterType = ['商户电表', '园区电表', '公摊电表'] \ No newline at end of file +export const meterType = ['商户电表', '园区电表', '公摊电表'] + +export const noticeFlowType = ['拆表', '装表', '开户', "解绑", "绑定"] +export const noticeFlowStatus = ["已确认", "待确认"] + +export const meterMode = ["预付费", "强控", "临时强控"] \ No newline at end of file