From 34c2cb76e770b21274ff9a3fdd408e16b25049da Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 4 Dec 2024 17:30:02 +0800 Subject: [PATCH 01/60] =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=88=91=E7=9A=84?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=B7=B3=E8=BD=AC=EF=BC=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=92=8C=E4=BC=98=E6=83=A0=E5=88=B8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E5=88=9B=E5=BB=BA=EF=BC=88=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E8=BF=98=E6=B2=A1=E5=86=99=E5=A4=9A=E5=B0=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 6 +- assets/images/baike.png | Bin 0 -> 11152 bytes assets/images/finance.png | Bin 0 -> 15314 bytes assets/images/law.png | Bin 0 -> 13512 bytes components/aid/index.wxss | 2 +- components/discountCoupon/index.js | 4 +- components/discountCoupon/index.json | 4 +- components/discountCoupon/index.wxml | 32 +++++++++- components/discountCoupon/index.wxss | 56 ++++++++++++++++- pages/discountCoupon/index.js | 66 ++++++++++++++++++++ pages/discountCoupon/index.json | 6 ++ pages/discountCoupon/index.wxml | 2 + pages/discountCoupon/index.wxss | 1 + pages/integral/index.js | 84 +++++++++++++++++++++++++ pages/integral/index.json | 7 +++ pages/integral/index.wxml | 11 ++++ pages/integral/index.wxss | 19 ++++++ pages/integralRecord/index.js | 89 +++++++++++++++++++++++++++ pages/integralRecord/index.json | 6 ++ pages/integralRecord/index.wxml | 2 + pages/integralRecord/index.wxss | 1 + pages/my/index.js | 24 ++++++++ pages/my/index.json | 3 +- pages/my/index.wxml | 59 ++++++++++++++++-- pages/ticket/index.js | 66 ++++++++++++++++++++ pages/ticket/index.json | 7 +++ pages/ticket/index.wxml | 3 + pages/ticket/index.wxss | 1 + project.private.config.json | 7 +++ service/system.js | 10 +++ 30 files changed, 566 insertions(+), 12 deletions(-) create mode 100644 assets/images/baike.png create mode 100644 assets/images/finance.png create mode 100644 assets/images/law.png create mode 100644 pages/discountCoupon/index.js create mode 100644 pages/discountCoupon/index.json create mode 100644 pages/discountCoupon/index.wxml create mode 100644 pages/discountCoupon/index.wxss create mode 100644 pages/integral/index.js create mode 100644 pages/integral/index.json create mode 100644 pages/integral/index.wxml create mode 100644 pages/integral/index.wxss create mode 100644 pages/integralRecord/index.js create mode 100644 pages/integralRecord/index.json create mode 100644 pages/integralRecord/index.wxml create mode 100644 pages/integralRecord/index.wxss create mode 100644 pages/ticket/index.js create mode 100644 pages/ticket/index.json create mode 100644 pages/ticket/index.wxml create mode 100644 pages/ticket/index.wxss diff --git a/app.json b/app.json index d718c34..50f3120 100644 --- a/app.json +++ b/app.json @@ -27,7 +27,11 @@ "pages/aid/finance/index", "pages/aid/law/index", "pages/aid/detail/index", - "pages/aid/consult/index" + "pages/aid/consult/index", + "pages/ticket/index", + "pages/integral/index", + "pages/discountCoupon/index", + "pages/integralRecord/index" ], "subPackages": [ { diff --git a/assets/images/baike.png b/assets/images/baike.png new file mode 100644 index 0000000000000000000000000000000000000000..62ac6d6515f6c1811c7d05793ffb0e505e6ab921 GIT binary patch literal 11152 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 -components/discountCoupon/index.wxml \ No newline at end of file + + + + + + + 通用优惠券 + + + 有效期至2024.12.01 + + + + + + 30 + + + 满30可用 + + + + + + 仅限商城使用 + + + 去使用 + + + \ No newline at end of file diff --git a/components/discountCoupon/index.wxss b/components/discountCoupon/index.wxss index 96d216b..4dac214 100644 --- a/components/discountCoupon/index.wxss +++ b/components/discountCoupon/index.wxss @@ -1 +1,55 @@ -/* components/discountCoupon/index.wxss */ \ No newline at end of file +/* components/discountCoupon/index.wxss */ + +.wrapper { + padding: 24rpx; + border-radius: 16rpx; + background-color: #fff; +} + +.top { + display: flex; + justify-content: space-between; + border-bottom: 1rpx dashed #ccc; + padding-bottom: 20rpx; +} + +.top .right { + color: #fa541c; +} + +.price { + display: flex; + align-items: flex-end; + margin-bottom: 14rpx; +} + +.typeText { + font-weight: 700; + font-size: 42rpx; + margin-bottom: 20rpx; +} + +.time { + font-size: 30rpx; +} + +.price { + font-size: 44rpx; + line-height: 44rpx; +} + +.limit { + font-size: 30rpx; +} + +.bottom { + margin-top: 20rpx; + display: flex; + justify-content: space-between; + align-items: center; +} + +.bottom .left { + flex: 1; + font-size: 32rpx; +} \ No newline at end of file diff --git a/pages/discountCoupon/index.js b/pages/discountCoupon/index.js new file mode 100644 index 0000000..d474e1a --- /dev/null +++ b/pages/discountCoupon/index.js @@ -0,0 +1,66 @@ +// pages/discountCoupon/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/discountCoupon/index.json b/pages/discountCoupon/index.json new file mode 100644 index 0000000..a6d770b --- /dev/null +++ b/pages/discountCoupon/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "navigator": "/components/navigator/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/discountCoupon/index.wxml b/pages/discountCoupon/index.wxml new file mode 100644 index 0000000..3d23205 --- /dev/null +++ b/pages/discountCoupon/index.wxml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/pages/discountCoupon/index.wxss b/pages/discountCoupon/index.wxss new file mode 100644 index 0000000..5f4d834 --- /dev/null +++ b/pages/discountCoupon/index.wxss @@ -0,0 +1 @@ +/* pages/discountCoupon/index.wxss */ \ No newline at end of file diff --git a/pages/integral/index.js b/pages/integral/index.js new file mode 100644 index 0000000..cd63725 --- /dev/null +++ b/pages/integral/index.js @@ -0,0 +1,84 @@ +// pages/integral/index.js +import request from "../../utils/request" +import { getCurrentIntegral } from "../../service/system"; +const { OK } = request; + +Page({ + + /** + * 页面的初始数据 + */ + data: { + integral: 0, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.getIntegral(); + }, + jumpToRecord() { + wx.navigateTo({ + url: '/pages/integralRecord/index', + }) + }, + async getIntegral() { + const { code, message, data } = await getCurrentIntegral(); + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + integral: data?.balance || 0 + }) + }, + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/integral/index.json b/pages/integral/index.json new file mode 100644 index 0000000..9e5a1a4 --- /dev/null +++ b/pages/integral/index.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "navigator": "/components/navigator/index", + "discount-coupon": "/components/discountCoupon/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/integral/index.wxml b/pages/integral/index.wxml new file mode 100644 index 0000000..3fa518b --- /dev/null +++ b/pages/integral/index.wxml @@ -0,0 +1,11 @@ + + + + + 当前积分: {{ integral }} + 查看积分明细 + + + + + \ No newline at end of file diff --git a/pages/integral/index.wxss b/pages/integral/index.wxss new file mode 100644 index 0000000..6228fc8 --- /dev/null +++ b/pages/integral/index.wxss @@ -0,0 +1,19 @@ +/* pages/integral/index.wxss */ + +page { + background-color: rgb(242,243,245); +} + +.integralWrapper { + padding: 20rpx; +} + +.currentIntegral { + font-size: 34rpx; + display: flex; + justify-content: space-between; +} + +.ticketList { + margin-top: 20rpx; +} diff --git a/pages/integralRecord/index.js b/pages/integralRecord/index.js new file mode 100644 index 0000000..33703ae --- /dev/null +++ b/pages/integralRecord/index.js @@ -0,0 +1,89 @@ +// pages/integralRecord/index.js +import request from "../../utils/request" +import { getIntegralRecord } from "../../service/system"; +import { alertInfo, loadingFunc } from "../../utils"; +const { OK } = request; +Page({ + + /** + * 页面的初始数据 + */ + data: { + page: 1, + size: 20, + list: [], + total: 0, + totalPage: 0, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + async init() { + const { page, size } = this.data; + const { code, message, data, total } = await getIntegralRecord({ page, size }) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + list: data || [], + total, + totalPage: Math.ceil(total / size), + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + const that = this; + loadingFunc(async () => { + await that.init(); + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/integralRecord/index.json b/pages/integralRecord/index.json new file mode 100644 index 0000000..a6d770b --- /dev/null +++ b/pages/integralRecord/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "navigator": "/components/navigator/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/integralRecord/index.wxml b/pages/integralRecord/index.wxml new file mode 100644 index 0000000..5b0a52c --- /dev/null +++ b/pages/integralRecord/index.wxml @@ -0,0 +1,2 @@ + + diff --git a/pages/integralRecord/index.wxss b/pages/integralRecord/index.wxss new file mode 100644 index 0000000..78be163 --- /dev/null +++ b/pages/integralRecord/index.wxss @@ -0,0 +1 @@ +/* pages/integralRecord/index.wxss */ \ No newline at end of file diff --git a/pages/my/index.js b/pages/my/index.js index b6acdd6..6a28faa 100644 --- a/pages/my/index.js +++ b/pages/my/index.js @@ -4,8 +4,10 @@ import Dialog from '@vant/weapp/dialog/dialog'; import { getUserInfo, logout } from "../../service/user"; import { getDot } from "../../utils/system"; import request from "../../utils/request" +import { getCurrentIntegral } from "../../service/system"; const { OK } = request; + Page({ /** @@ -15,6 +17,7 @@ Page({ user: {}, tenement: {}, visible: false, + integral: 0, }, /** @@ -63,9 +66,20 @@ Page({ } this.init() this.getUnReadNumber() + // this.getIntegral() const tenement = wx.getStorageSync('tenement') this.setData({ tenement }) }, + async getIntegral() { + const { code, message, data } = await getCurrentIntegral(); + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + integral: data?.balance || 0 + }) + }, async init() { const tenement = wx.getStorageSync('tenement') const result = await getUserInfo(tenement?.id); @@ -86,6 +100,16 @@ Page({ url: '/pages/workBench/index', }) }, + jumpToIntegral() { + wx.navigateTo({ + url: '/pages/integral/index', + }) + }, + jumpToDiscountCoupon() { + wx.navigateTo({ + url: '/pages/discountCoupon/index', + }) + }, async getUnReadNumber() { const dot = await getDot(); this.setData({ diff --git a/pages/my/index.json b/pages/my/index.json index e3a3189..ac9188c 100644 --- a/pages/my/index.json +++ b/pages/my/index.json @@ -8,7 +8,8 @@ "navigator": "/components/navigator/index", "van-grid": "@vant/weapp/grid/index", "avatar": "/components/avatar/index", - "van-grid-item": "@vant/weapp/grid-item/index" + "van-grid-item": "@vant/weapp/grid-item/index", + "van-image": "@vant/weapp/image/index" }, "navigationBarTitleText": "我的", "navigationStyle": "custom" diff --git a/pages/my/index.wxml b/pages/my/index.wxml index 489f166..29fc796 100644 --- a/pages/my/index.wxml +++ b/pages/my/index.wxml @@ -12,12 +12,61 @@ - - - - + + + + 财税援助 + + + + 法律援助 + + + + 电力百科 + + @@ -29,7 +78,7 @@ - + diff --git a/pages/ticket/index.js b/pages/ticket/index.js new file mode 100644 index 0000000..4775f6c --- /dev/null +++ b/pages/ticket/index.js @@ -0,0 +1,66 @@ +// pages/ticket/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/ticket/index.json b/pages/ticket/index.json new file mode 100644 index 0000000..9e5a1a4 --- /dev/null +++ b/pages/ticket/index.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "navigator": "/components/navigator/index", + "discount-coupon": "/components/discountCoupon/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/ticket/index.wxml b/pages/ticket/index.wxml new file mode 100644 index 0000000..ef43b1f --- /dev/null +++ b/pages/ticket/index.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/pages/ticket/index.wxss b/pages/ticket/index.wxss new file mode 100644 index 0000000..2d42574 --- /dev/null +++ b/pages/ticket/index.wxss @@ -0,0 +1 @@ +/* pages/ticket/index.wxss */ \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index ee87624..fadfe0b 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -10,6 +10,13 @@ "condition": { "miniprogram": { "list": [ + { + "name": "pages/ticket/index", + "pathName": "pages/ticket/index", + "query": "", + "launchMode": "default", + "scene": null + }, { "name": "pages/aid/consult/index", "pathName": "pages/aid/consult/index", diff --git a/service/system.js b/service/system.js index 0e81520..6206f57 100644 --- a/service/system.js +++ b/service/system.js @@ -69,4 +69,14 @@ export const getAidDetail = async function(id) { // 提交财务/律师援助 export const askAid = async function(data) { return await POST(`/wx/aid/approve`, data); +} + +// 获取当前积分 +export const getCurrentIntegral = async function() { + return await GET(`/integral/getWxIntegralList`); +} + +// 获取积分明细 +export const getIntegralRecord = async function({ page, size }) { + return await GET(`/integral/getWxIntegralList/detail?page=${page}&size=${size}`); } \ No newline at end of file From 9bc3cb5584fc9480d4e91a904dfebb2b4458c09b Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Fri, 6 Dec 2024 17:41:26 +0800 Subject: [PATCH 02/60] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=EF=BC=8C=E7=A7=AF=E5=88=86=E4=BF=AE=E6=94=B9=EF=BC=88?= =?UTF-8?q?=E9=A2=86=E5=88=B8=E9=83=A8=E5=88=86=E6=B2=A1=E5=81=9A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 1 - components/discountCoupon/index.js | 25 ++++++++++- components/discountCoupon/index.wxml | 17 ++++--- pages/discountCoupon/index.js | 36 ++++++++++++++- pages/discountCoupon/index.json | 4 +- pages/discountCoupon/index.wxml | 16 ++++++- pages/integral/index.js | 30 ++++++++++++- pages/integral/index.json | 3 +- pages/integral/index.wxml | 7 ++- pages/integralRecord/index.js | 30 +++++++++++-- pages/integralRecord/index.json | 6 ++- pages/integralRecord/index.wxml | 22 ++++++++++ pages/my/index.js | 2 +- pages/my/index.wxml | 6 +-- pages/ticket/index.js | 66 ---------------------------- pages/ticket/index.json | 7 --- pages/ticket/index.wxml | 3 -- pages/ticket/index.wxss | 1 - service/system.js | 17 ++++++- utils/request.js | 4 +- 20 files changed, 198 insertions(+), 105 deletions(-) delete mode 100644 pages/ticket/index.js delete mode 100644 pages/ticket/index.json delete mode 100644 pages/ticket/index.wxml delete mode 100644 pages/ticket/index.wxss diff --git a/app.json b/app.json index 50f3120..28d92db 100644 --- a/app.json +++ b/app.json @@ -28,7 +28,6 @@ "pages/aid/law/index", "pages/aid/detail/index", "pages/aid/consult/index", - "pages/ticket/index", "pages/integral/index", "pages/discountCoupon/index", "pages/integralRecord/index" diff --git a/components/discountCoupon/index.js b/components/discountCoupon/index.js index 1100b62..6ff50f7 100644 --- a/components/discountCoupon/index.js +++ b/components/discountCoupon/index.js @@ -1,3 +1,8 @@ +import { alertInfo, alertSuccess, loadingFunc } from "../../utils/index" +import { redeemCoupons } from "../../service/system"; +import request from "../../utils/request" +const { OK } = request; + // components/discountCoupon/index.js Component({ @@ -5,7 +10,8 @@ Component({ * 组件的属性列表 */ properties: { - + type: Number, + data: Object }, /** @@ -20,7 +26,22 @@ Component({ */ methods: { handleUse() { - + alertInfo("敬请期待") + }, + handleChange() { + const { data } = this.data; + const that = this; + loadingFunc(async () => { + console.log("--------------========", data) + const { code, message } = await redeemCoupons({ id: data.id, type: 2 }) + console.log("code", code, 'message', message) + if (code !== OK) { + alertInfo(message) + return + } + alertSuccess("兑换成功") + this.triggerEvent("change", { id, type: 2 }) + }) } } }) \ No newline at end of file diff --git a/components/discountCoupon/index.wxml b/components/discountCoupon/index.wxml index bbee968..c1b1018 100644 --- a/components/discountCoupon/index.wxml +++ b/components/discountCoupon/index.wxml @@ -5,28 +5,33 @@ - 通用优惠券 + 通用优惠券 + 无门槛优惠券 + 满减券 - 有效期至2024.12.01 + 有效期至 {{ data.endTime }} - 30 + {{ data.discount }} 折 + {{ data.discountMoney }} 元 + - - 满30可用 + 满 {{ data.useMin }} 可用 - 仅限商城使用 + - 去使用 + 去领取 + 去兑换 \ No newline at end of file diff --git a/pages/discountCoupon/index.js b/pages/discountCoupon/index.js index d474e1a..e74c84c 100644 --- a/pages/discountCoupon/index.js +++ b/pages/discountCoupon/index.js @@ -1,11 +1,18 @@ // pages/discountCoupon/index.js + +import request from "../../utils/request" +import { getCurrentCoupons, getCurrentIntegral, getRedeemableCoupons } from "../../service/system"; +import { alertInfo, loadingFunc } from "../../utils/index"; +const { OK } = request; + Page({ /** * 页面的初始数据 */ data: { - + currentList: [], + canGetList: [], }, /** @@ -28,7 +35,32 @@ Page({ onShow() { }, - + async getCurrent() { + const that = this; + loadingFunc(async() => { + const { code, message, data = [], } = await getCurrentCoupons(); + if (code !== OK) { + alertInfo(message) + return + } + that.setData({ + currentList: data + }) + }) + }, + getCanGet() { + const that = this; + loadingFunc(async() => { + const { code, message, data = [], } = await getRedeemableCoupons({ type: 1 }); + if (code !== OK) { + alertInfo(message) + return + } + that.setData({ + currentList: data + }) + }) + }, /** * 生命周期函数--监听页面隐藏 */ diff --git a/pages/discountCoupon/index.json b/pages/discountCoupon/index.json index a6d770b..06c8be8 100644 --- a/pages/discountCoupon/index.json +++ b/pages/discountCoupon/index.json @@ -1,6 +1,8 @@ { "usingComponents": { - "navigator": "/components/navigator/index" + "navigator": "/components/navigator/index", + "van-tab": "@vant/weapp/tab/index", + "van-tabs": "@vant/weapp/tabs/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/discountCoupon/index.wxml b/pages/discountCoupon/index.wxml index 3d23205..db106bb 100644 --- a/pages/discountCoupon/index.wxml +++ b/pages/discountCoupon/index.wxml @@ -1,2 +1,16 @@ - \ No newline at end of file + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/integral/index.js b/pages/integral/index.js index cd63725..f4445f6 100644 --- a/pages/integral/index.js +++ b/pages/integral/index.js @@ -1,6 +1,7 @@ // pages/integral/index.js import request from "../../utils/request" -import { getCurrentIntegral } from "../../service/system"; +import { getCurrentIntegral, getRedeemableCoupons } from "../../service/system"; +import { alertInfo, loadingFunc } from "../../utils/index"; const { OK } = request; Page({ @@ -10,6 +11,10 @@ Page({ */ data: { integral: 0, + page: 1, + size: 20, + list: [], + totalPage: 0, }, /** @@ -31,6 +36,28 @@ Page({ */ onShow() { this.getIntegral(); + this.getCoupons(); + }, + async getCoupons() { + const { page, size } = this.data + const { code, message, data, total } = await getRedeemableCoupons({ page, size, type: 2 }) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + list: data, + totalPage: Math.ceil(total / size), + }) + }, + refresh() { + const that = this; + that.setData({ + page: 1, + size: 20 + }, () => { + that.getCoupons() + }) }, jumpToRecord() { wx.navigateTo({ @@ -47,6 +74,7 @@ Page({ integral: data?.balance || 0 }) }, + /** * 生命周期函数--监听页面隐藏 */ diff --git a/pages/integral/index.json b/pages/integral/index.json index 9e5a1a4..b96ac58 100644 --- a/pages/integral/index.json +++ b/pages/integral/index.json @@ -1,7 +1,8 @@ { "usingComponents": { "navigator": "/components/navigator/index", - "discount-coupon": "/components/discountCoupon/index" + "discount-coupon": "/components/discountCoupon/index", + "empty": "/components/empty/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/integral/index.wxml b/pages/integral/index.wxml index 3fa518b..2a9207e 100644 --- a/pages/integral/index.wxml +++ b/pages/integral/index.wxml @@ -5,7 +5,10 @@ 当前积分: {{ integral }} 查看积分明细 - - + + + + + \ No newline at end of file diff --git a/pages/integralRecord/index.js b/pages/integralRecord/index.js index 33703ae..88a5747 100644 --- a/pages/integralRecord/index.js +++ b/pages/integralRecord/index.js @@ -1,7 +1,7 @@ // pages/integralRecord/index.js import request from "../../utils/request" import { getIntegralRecord } from "../../service/system"; -import { alertInfo, loadingFunc } from "../../utils"; +import { alertInfo, loadingFunc } from "../../utils/index"; const { OK } = request; Page({ @@ -30,11 +30,27 @@ Page({ return; } this.setData({ - list: data || [], + list: data?.map(item => { + item.type = ['充值增加', '系统增加', '系统减少', '冲正减少', '退费减少', '兑换优惠券', '积分清零'][item.type] + item.nowBalance = Number(item.nowBalance || 0) + item.lastBalance = Number(item.lastBalance || 0) + item.value = item.nowBalance - item.lastBalance; + item.value = item.value > 0 ? `+${item.value}` : item.value + return item + }) || [], total, totalPage: Math.ceil(total / size), }) }, + refresh() { + const that = this; + this.setData({ + page: 1, + size: 20, + }, () => { + that.init(); + }) + }, /** * 生命周期函数--监听页面初次渲染完成 */ @@ -51,7 +67,15 @@ Page({ await that.init(); }) }, - + async onChangePage(e) { + const page = e.detail.currentIndex; + const that = this; + this.setData({ + page + }, () => { + that.init(); + }) + }, /** * 生命周期函数--监听页面隐藏 */ diff --git a/pages/integralRecord/index.json b/pages/integralRecord/index.json index a6d770b..58991b7 100644 --- a/pages/integralRecord/index.json +++ b/pages/integralRecord/index.json @@ -1,6 +1,10 @@ { "usingComponents": { - "navigator": "/components/navigator/index" + "navigator": "/components/navigator/index", + "van-cell": "@vant/weapp/cell/index", + "van-cell-group": "@vant/weapp/cell-group/index", + "empty": "/components/empty/index", + "pagination": "/components/pagination/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/integralRecord/index.wxml b/pages/integralRecord/index.wxml index 5b0a52c..1ef3cb6 100644 --- a/pages/integralRecord/index.wxml +++ b/pages/integralRecord/index.wxml @@ -1,2 +1,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/pages/my/index.js b/pages/my/index.js index 6a28faa..1f3f353 100644 --- a/pages/my/index.js +++ b/pages/my/index.js @@ -66,7 +66,7 @@ Page({ } this.init() this.getUnReadNumber() - // this.getIntegral() + this.getIntegral() const tenement = wx.getStorageSync('tenement') this.setData({ tenement }) }, diff --git a/pages/my/index.wxml b/pages/my/index.wxml index 29fc796..a77c1d7 100644 --- a/pages/my/index.wxml +++ b/pages/my/index.wxml @@ -8,7 +8,7 @@ {{ user.nickName }} {{ tenement.name }} - 积分: - + 积分: {{ integral }} @@ -51,7 +51,7 @@ - + diff --git a/pages/ticket/index.js b/pages/ticket/index.js deleted file mode 100644 index 4775f6c..0000000 --- a/pages/ticket/index.js +++ /dev/null @@ -1,66 +0,0 @@ -// pages/ticket/index.js -Page({ - - /** - * 页面的初始数据 - */ - data: { - - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad(options) { - - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady() { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow() { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide() { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage() { - - } -}) \ No newline at end of file diff --git a/pages/ticket/index.json b/pages/ticket/index.json deleted file mode 100644 index 9e5a1a4..0000000 --- a/pages/ticket/index.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "usingComponents": { - "navigator": "/components/navigator/index", - "discount-coupon": "/components/discountCoupon/index" - }, - "navigationStyle": "custom" -} \ No newline at end of file diff --git a/pages/ticket/index.wxml b/pages/ticket/index.wxml deleted file mode 100644 index ef43b1f..0000000 --- a/pages/ticket/index.wxml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/pages/ticket/index.wxss b/pages/ticket/index.wxss deleted file mode 100644 index 2d42574..0000000 --- a/pages/ticket/index.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/ticket/index.wxss */ \ No newline at end of file diff --git a/service/system.js b/service/system.js index 6206f57..fbf4cf9 100644 --- a/service/system.js +++ b/service/system.js @@ -79,4 +79,19 @@ export const getCurrentIntegral = async function() { // 获取积分明细 export const getIntegralRecord = async function({ page, size }) { return await GET(`/integral/getWxIntegralList/detail?page=${page}&size=${size}`); -} \ No newline at end of file +} + +// 获取优惠券列表 +export const getRedeemableCoupons = async function({ page, size, type }) { + return await GET(`/wx/getRedeemableCoupons?page=${page}&size=${size}&type=${type}`); +} + +// 获取优惠券列表 +export const redeemCoupons = async function({ id, type }) { + return await POST(`/wx/redeemCoupons`, { id, type }); +} + +// 获取当前拥有的优惠券列表 +export const getCurrentCoupons = async function() { + return await GET(`/wx/getCurrentCoupons`); +} diff --git a/utils/request.js b/utils/request.js index 921723b..a6434d0 100644 --- a/utils/request.js +++ b/utils/request.js @@ -87,7 +87,7 @@ const parseResponse = function (response, url) { alertError("服务异常") return } - console.log('url', url,'statusCode', statusCode, 'response.data', response) + console.log('url', url,'statusCode', statusCode, 'response.data', response?.data) if (code === 401) { const currentUrl = getPageUrl() @@ -107,7 +107,7 @@ const parseResponse = function (response, url) { url: '/pages/login/index', }) wx.clearStorageSync() - return { code: 404, message: "服务故障" } + return { code: 404, message: "服务不存在" } } if (500 <= code && code < 600) { return { code: 500, message: "服务错误" } From fd7777e4f404f580969b0153cd26ea756ae5ab31 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 9 Dec 2024 10:36:16 +0800 Subject: [PATCH 03/60] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/discountCoupon/index.js | 15 ++++++++++++--- components/discountCoupon/index.wxml | 1 + pages/discountCoupon/index.js | 27 +++++++++++++++++++++++++-- pages/discountCoupon/index.json | 3 ++- pages/discountCoupon/index.wxml | 8 ++++++-- service/system.js | 4 ++-- 6 files changed, 48 insertions(+), 10 deletions(-) diff --git a/components/discountCoupon/index.js b/components/discountCoupon/index.js index 6ff50f7..4eae670 100644 --- a/components/discountCoupon/index.js +++ b/components/discountCoupon/index.js @@ -25,9 +25,6 @@ Component({ * 组件的方法列表 */ methods: { - handleUse() { - alertInfo("敬请期待") - }, handleChange() { const { data } = this.data; const that = this; @@ -42,6 +39,18 @@ Component({ alertSuccess("兑换成功") this.triggerEvent("change", { id, type: 2 }) }) + }, + handleUseIt() { + alertInfo("敬请期待") + }, + async handleUse(e) { + const { data } = this.data; + const { code, message } = await redeemCoupons({ id: data.id, type: 2 }) + if (code !== OK) { + alertInfo(message) + return; + } + this.triggerEvent("get", { id, type: 1 }) } } }) \ No newline at end of file diff --git a/components/discountCoupon/index.wxml b/components/discountCoupon/index.wxml index c1b1018..8db85d7 100644 --- a/components/discountCoupon/index.wxml +++ b/components/discountCoupon/index.wxml @@ -32,6 +32,7 @@ 去领取 去兑换 + 去使用 \ No newline at end of file diff --git a/pages/discountCoupon/index.js b/pages/discountCoupon/index.js index e74c84c..fee8d76 100644 --- a/pages/discountCoupon/index.js +++ b/pages/discountCoupon/index.js @@ -13,6 +13,7 @@ Page({ data: { currentList: [], canGetList: [], + active: 0, }, /** @@ -21,7 +22,17 @@ Page({ onLoad(options) { }, - + onChange(e) { + console.log('e', e) + this.setData({ + active: e.detail.index, + }, () => { + const { active } = this.data; + this.init(active); + }) + + }, + /** * 生命周期函数--监听页面初次渲染完成 */ @@ -33,8 +44,20 @@ Page({ * 生命周期函数--监听页面显示 */ onShow() { - + const { active } = this.data; + this.init(active); }, + init(active) { + switch(active) { + case 0: + this.getCurrent() + break; + case 1: + this.getCanGet(); + break; + } + }, + async getCurrent() { const that = this; loadingFunc(async() => { diff --git a/pages/discountCoupon/index.json b/pages/discountCoupon/index.json index 06c8be8..f448c1b 100644 --- a/pages/discountCoupon/index.json +++ b/pages/discountCoupon/index.json @@ -2,7 +2,8 @@ "usingComponents": { "navigator": "/components/navigator/index", "van-tab": "@vant/weapp/tab/index", - "van-tabs": "@vant/weapp/tabs/index" + "van-tabs": "@vant/weapp/tabs/index", + "discount-coupon": "/components/discountCoupon/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/discountCoupon/index.wxml b/pages/discountCoupon/index.wxml index db106bb..6c4ca6f 100644 --- a/pages/discountCoupon/index.wxml +++ b/pages/discountCoupon/index.wxml @@ -3,13 +3,17 @@ - + + + - + + + diff --git a/service/system.js b/service/system.js index fbf4cf9..94a2d5f 100644 --- a/service/system.js +++ b/service/system.js @@ -82,11 +82,11 @@ export const getIntegralRecord = async function({ page, size }) { } // 获取优惠券列表 -export const getRedeemableCoupons = async function({ page, size, type }) { +export const getRedeemableCoupons = async function({ page = '', size = '', type }) { return await GET(`/wx/getRedeemableCoupons?page=${page}&size=${size}&type=${type}`); } -// 获取优惠券列表 +// 兑换/领取优惠券 export const redeemCoupons = async function({ id, type }) { return await POST(`/wx/redeemCoupons`, { id, type }); } From f6f1425cf5f0f1a0441be5b794bc05fef2152f9b Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 9 Dec 2024 14:19:42 +0800 Subject: [PATCH 04/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=86=E5=88=B8?= =?UTF-8?q?=E4=B8=AD=E5=BF=83bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/discountCoupon/index.js | 2 +- pages/discountCoupon/index.wxml | 4 ++-- pages/discountCoupon/index.wxss | 9 ++++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/pages/discountCoupon/index.js b/pages/discountCoupon/index.js index fee8d76..4820acb 100644 --- a/pages/discountCoupon/index.js +++ b/pages/discountCoupon/index.js @@ -80,7 +80,7 @@ Page({ return } that.setData({ - currentList: data + canGetList: data }) }) }, diff --git a/pages/discountCoupon/index.wxml b/pages/discountCoupon/index.wxml index 6c4ca6f..ff79806 100644 --- a/pages/discountCoupon/index.wxml +++ b/pages/discountCoupon/index.wxml @@ -3,7 +3,7 @@ - + @@ -11,7 +11,7 @@ - + diff --git a/pages/discountCoupon/index.wxss b/pages/discountCoupon/index.wxss index 5f4d834..bd53e61 100644 --- a/pages/discountCoupon/index.wxss +++ b/pages/discountCoupon/index.wxss @@ -1 +1,8 @@ -/* pages/discountCoupon/index.wxss */ \ No newline at end of file +/* pages/discountCoupon/index.wxss */ +page { + background-color: rgb(242,243,245); +} + +.item { + margin: 20rpx; +} \ No newline at end of file From ebc8cae3c8f18b5178c2ee9bab0a13db97e096e6 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 9 Dec 2024 15:31:49 +0800 Subject: [PATCH 05/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/discountCoupon/index.json | 3 ++- pages/integral/index.wxml | 4 ++-- pages/integral/index.wxss | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pages/discountCoupon/index.json b/pages/discountCoupon/index.json index f448c1b..1218b58 100644 --- a/pages/discountCoupon/index.json +++ b/pages/discountCoupon/index.json @@ -3,7 +3,8 @@ "navigator": "/components/navigator/index", "van-tab": "@vant/weapp/tab/index", "van-tabs": "@vant/weapp/tabs/index", - "discount-coupon": "/components/discountCoupon/index" + "discount-coupon": "/components/discountCoupon/index", + "empty": "/components/empty/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/integral/index.wxml b/pages/integral/index.wxml index 2a9207e..99ad309 100644 --- a/pages/integral/index.wxml +++ b/pages/integral/index.wxml @@ -6,9 +6,9 @@ 查看积分明细 - + - + \ No newline at end of file diff --git a/pages/integral/index.wxss b/pages/integral/index.wxss index 6228fc8..a12343b 100644 --- a/pages/integral/index.wxss +++ b/pages/integral/index.wxss @@ -4,6 +4,10 @@ page { background-color: rgb(242,243,245); } +.item { + margin: 20rpx; +} + .integralWrapper { padding: 20rpx; } From 307be86cb4fb70cad3a1c568f1f396db60f1a089 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 9 Dec 2024 16:35:39 +0800 Subject: [PATCH 06/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/discountCoupon/index.js | 20 +++++++++++--------- pages/integralRecord/index.js | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/components/discountCoupon/index.js b/components/discountCoupon/index.js index 4eae670..ac53312 100644 --- a/components/discountCoupon/index.js +++ b/components/discountCoupon/index.js @@ -29,15 +29,13 @@ Component({ const { data } = this.data; const that = this; loadingFunc(async () => { - console.log("--------------========", data) const { code, message } = await redeemCoupons({ id: data.id, type: 2 }) - console.log("code", code, 'message', message) if (code !== OK) { alertInfo(message) return } alertSuccess("兑换成功") - this.triggerEvent("change", { id, type: 2 }) + that.triggerEvent("change", { id, type: 2 }) }) }, handleUseIt() { @@ -45,12 +43,16 @@ Component({ }, async handleUse(e) { const { data } = this.data; - const { code, message } = await redeemCoupons({ id: data.id, type: 2 }) - if (code !== OK) { - alertInfo(message) - return; - } - this.triggerEvent("get", { id, type: 1 }) + const that = this; + loadingFunc(async () => { + const { code, message } = await redeemCoupons({ id: data.id, type: 2 }) + if (code !== OK) { + alertInfo(message) + return; + } + that.triggerEvent("get", { id, type: 1 }) + }) + } } }) \ No newline at end of file diff --git a/pages/integralRecord/index.js b/pages/integralRecord/index.js index 88a5747..c3f43ef 100644 --- a/pages/integralRecord/index.js +++ b/pages/integralRecord/index.js @@ -31,7 +31,7 @@ Page({ } this.setData({ list: data?.map(item => { - item.type = ['充值增加', '系统增加', '系统减少', '冲正减少', '退费减少', '兑换优惠券', '积分清零'][item.type] + item.type = ['充值增加', '系统增加', '系统减少', '冲正减少', '退费减少', '兑换优惠券', '积分清零'][item.type - 1] item.nowBalance = Number(item.nowBalance || 0) item.lastBalance = Number(item.lastBalance || 0) item.value = item.nowBalance - item.lastBalance; From f63b2f3319068626973a0069f0300b51225940d2 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 10 Dec 2024 17:35:28 +0800 Subject: [PATCH 07/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/discountCoupon/index.js | 1 + pages/discountCoupon/index.wxml | 2 +- pages/home/index.js | 4 ++++ pages/integralRecord/index.wxml | 1 - 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/components/discountCoupon/index.js b/components/discountCoupon/index.js index ac53312..2b2cddd 100644 --- a/components/discountCoupon/index.js +++ b/components/discountCoupon/index.js @@ -50,6 +50,7 @@ Component({ alertInfo(message) return; } + alertSuccess("领取成功") that.triggerEvent("get", { id, type: 1 }) }) diff --git a/pages/discountCoupon/index.wxml b/pages/discountCoupon/index.wxml index ff79806..9f03dd2 100644 --- a/pages/discountCoupon/index.wxml +++ b/pages/discountCoupon/index.wxml @@ -7,7 +7,7 @@ - + diff --git a/pages/home/index.js b/pages/home/index.js index 6d1b144..d80532a 100644 --- a/pages/home/index.js +++ b/pages/home/index.js @@ -126,6 +126,10 @@ Page({ }, async recharge() { const { user, money, meter, tenement, park } = this.data; + if (!user || !user.id) { + alertInfo("请先登录") + return; + } const { code, message, data } = await getTenementExceptionalCase(park?.id, tenement?.id); if (code !== OK) { alertInfo(message) diff --git a/pages/integralRecord/index.wxml b/pages/integralRecord/index.wxml index 1ef3cb6..0eff632 100644 --- a/pages/integralRecord/index.wxml +++ b/pages/integralRecord/index.wxml @@ -9,7 +9,6 @@ title="{{item.type}}" value="{{item.value}}" label="{{item.createdAt}}" - border="{{ false }}" /> Date: Fri, 13 Dec 2024 09:32:44 +0800 Subject: [PATCH 08/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/invoiceList/components/info/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pages/invoiceList/components/info/index.js b/pages/invoiceList/components/info/index.js index c63eb58..7fadab6 100644 --- a/pages/invoiceList/components/info/index.js +++ b/pages/invoiceList/components/info/index.js @@ -41,7 +41,12 @@ Component({ this.setData({ detail: {...data,name: wx.getStorageSync('tenement')?.name, },editType: 'detail', }) }, async getUser() { - const { code, message, data } = await getUserInfo() + const tenement = wx.getStorageSync('tenement') + const { code, message, data } = await getUserInfo(tenement?.id) + if (code !== OK) { + alertInfo(message) + return; + } this.setData({ user: data }); }, changeEditType() { From 4ecf443f896f45e52646a44fd3f5df1cdf66b29d Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 24 Dec 2024 17:33:07 +0800 Subject: [PATCH 09/60] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelect/index.js | 18 +++++++++++-- pages/handleLogin/index.js | 44 ++++++++++++++++++++++++++++++++ pages/handleLogin/index.json | 1 + pages/handleLogin/index.wxml | 40 +++++++++++++++++++++++++++-- project.private.config.json | 7 +++++ utils/index.js | 13 ++-------- 6 files changed, 108 insertions(+), 15 deletions(-) diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index aef7a6e..0aed2d8 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -3,7 +3,7 @@ import { getParkSimpleMeterList } from "../../service/meter" import { alertInfo } from "../../utils/index"; import request from "../../utils/request" import { payWays } from "../../utils/data"; - +import { getTenementList } from "../../service/tenement"; const { OK } = request; // components/searchSelect/index.js @@ -86,6 +86,8 @@ Component({ return; case "meter": this.onSearchMeter(); + case "tenement": + this.onSearchTenement(); return; } }, @@ -112,6 +114,18 @@ Component({ columns: parks?.map(item => `${item.meterNo}-${item.address}${item.shortName ? '-' + item.shortName : ''}`), list: parks, }) - } + }, + async onSearchTenement() { + const { searchText = "", park } = this.data; + const { code, message, data = [] } = await getTenementList({keyword: searchText, park}); + if (code !== OK) { + alertInfo(message) + return + } + this.setData({ + columns: data?.map(item => item?.name), + list: data, + }) + }, } }) \ No newline at end of file diff --git a/pages/handleLogin/index.js b/pages/handleLogin/index.js index 42d0a09..0005692 100644 --- a/pages/handleLogin/index.js +++ b/pages/handleLogin/index.js @@ -93,6 +93,25 @@ Page({ }) }) }, + onParkFocus(e) { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + onTenementFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "公司", + type: 'tenement' + }) + }, scan() { wx.scanCode({ scanType: "qrCode", @@ -108,4 +127,29 @@ Page({ } }) }, + onConfirm(e) { + console.log('e', e.detail) + const { type, data = {} } = e.detail; + switch(type) { + case "park": + this.setData({ + park: data.id, + parkName: data.name, + }) + break; + case "tenement": + this.setData({ + tenement: data.id, + tenementName: data.name, + }) + } + this.onConcal(); + }, + onConcal() { + this.setData({ + show: false, + title: "", + type: "", + }) + }, }) \ No newline at end of file diff --git a/pages/handleLogin/index.json b/pages/handleLogin/index.json index 6d40fc3..c29853f 100644 --- a/pages/handleLogin/index.json +++ b/pages/handleLogin/index.json @@ -2,6 +2,7 @@ "usingComponents": { "topbar": "/components/topbar/index", "select": "/components/select/index", + "search-select": "/components/searchSelect/index", "van-button": "@vant/weapp/button/index", "van-field": "@vant/weapp/field/index", "van-icon": "@vant/weapp/icon/index", diff --git a/pages/handleLogin/index.wxml b/pages/handleLogin/index.wxml index d23c8a9..01adc43 100644 --- a/pages/handleLogin/index.wxml +++ b/pages/handleLogin/index.wxml @@ -17,8 +17,34 @@ - + + + + 选择 + + + + + 选择 + + + + + diff --git a/project.private.config.json b/project.private.config.json index fadfe0b..5d56456 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -10,6 +10,13 @@ "condition": { "miniprogram": { "list": [ + { + "name": "pages/handleLogin/index", + "pathName": "pages/handleLogin/index", + "query": "", + "launchMode": "default", + "scene": null + }, { "name": "pages/ticket/index", "pathName": "pages/ticket/index", diff --git a/utils/index.js b/utils/index.js index 5faab9f..26de1e0 100644 --- a/utils/index.js +++ b/utils/index.js @@ -225,17 +225,8 @@ export const wxModal = (data) => { } -export const getPixelRatio = () => { - let pixelRatio = 0 - wx.getSystemInfo({ - success: function (res) { - pixelRatio = res.pixelRatio - }, - fail: function () { - pixelRatio = 0 - } - }) - return pixelRatio +export const getPixelRatio = () => { + return wx.getSystemInfoSync()?. pixelRatio } From bcaefbe1cb6ba1e00f36b83965971568f6e8faaa Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Thu, 26 Dec 2024 17:37:52 +0800 Subject: [PATCH 10/60] =?UTF-8?q?=E5=BC=80=E7=A5=A8=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=94=B5=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/invoiceList/components/info/index.wxml | 27 +++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/pages/invoiceList/components/info/index.wxml b/pages/invoiceList/components/info/index.wxml index 20301b9..e2b3e01 100644 --- a/pages/invoiceList/components/info/index.wxml +++ b/pages/invoiceList/components/info/index.wxml @@ -143,7 +143,19 @@ value="{{detail.address || '-'}}" > - + + - + Date: Fri, 3 Jan 2025 10:57:46 +0800 Subject: [PATCH 11/60] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=88=91=E7=9A=84?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E8=B0=83=E6=95=B4=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E5=AD=97=E6=AE=B5=E9=94=99=E8=AF=AF=E5=92=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 18 +++++++++++++ assets/images/baike.png | Bin 11152 -> 29214 bytes assets/images/finance.png | Bin 15314 -> 23628 bytes assets/images/law.png | Bin 13512 -> 18469 bytes components/aid/index.wxml | 8 +++--- components/searchSelect/index.js | 6 ++--- pages/handleLogin/index.wxml | 2 +- pages/my/index.wxml | 25 ++++++++++--------- pages/workBench/components/record/index.wxml | 2 +- utils/index.js | 4 +-- utils/request.js | 2 +- 11 files changed, 44 insertions(+), 23 deletions(-) diff --git a/app.js b/app.js index 4d26e1f..371edf6 100644 --- a/app.js +++ b/app.js @@ -1,14 +1,32 @@ import { checkUpgrade, getConfigByEnv } from "./utils/index" +function share() { + wx.onAppRoute(function(res) { + const pages = getCurrentPages() + const view = pages[pages.length - 1]; + if (view) { + wx.showShareMenu() + } + }) +} + // app.js App({ onShow() { checkUpgrade(); }, onLaunch() { + // wx.showShareMenu() + // share() const { api } = getConfigByEnv(); this.globalData = { ...this.globalData, api, } }, + // onShareAppMessage:function(){ + // wx.showShareMenu({ + // withShareTicket:true, + // menu:['shareAppMessage','shareTimeline'] + // }) + // }, globalData: { primaryColor: '#52c41a' } diff --git a/assets/images/baike.png b/assets/images/baike.png index 62ac6d6515f6c1811c7d05793ffb0e505e6ab921..b82e5b6b523494cc6fcae99e9f8bef1e45a8d5f1 100644 GIT binary patch literal 29214 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 literal 11152 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 literal 15314 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 literal 13512 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 {{ item.level }} {{item.synopsis}}{{item.synopsis}} {{item.synopsis}} - - - 在线咨询 + + + + 在线咨询 + diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index 0aed2d8..68ec3a5 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -1,4 +1,4 @@ -import { getParkList } from "../../service/park" +import { getLoginParkList } from "../../service/park" import { getParkSimpleMeterList } from "../../service/meter" import { alertInfo } from "../../utils/index"; import request from "../../utils/request" @@ -93,7 +93,7 @@ Component({ }, async onSearchPark() { const { searchText = "" } = this.data; - const { code, message, data: parks = [] } = await getParkList({keyword: searchText}); + const { code, message, data: parks = [] } = await getLoginParkList({keyword: searchText}); if (code !== OK) { alertInfo(message) return @@ -123,7 +123,7 @@ Component({ return } this.setData({ - columns: data?.map(item => item?.name), + columns: data?.map(item => item?.shortName), list: data, }) }, diff --git a/pages/handleLogin/index.wxml b/pages/handleLogin/index.wxml index 01adc43..533f5d9 100644 --- a/pages/handleLogin/index.wxml +++ b/pages/handleLogin/index.wxml @@ -35,7 +35,7 @@ - - - 财税援助 - + 法律援助 + + + 财税援助 + {{ item.tenement.shortName }} {{ item.address }} - {{ item.amount }} + {{ item.money }} 拉闸 diff --git a/utils/index.js b/utils/index.js index 26de1e0..f023485 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,9 +45,9 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" - // api = "https://zgd.hbhcbn.com/api3" + // api = "http://localhost:8000" // api = "https://zgd.hbhcbn.com/api3" + api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; diff --git a/utils/request.js b/utils/request.js index a6434d0..11b7f50 100644 --- a/utils/request.js +++ b/utils/request.js @@ -84,7 +84,7 @@ const parseResponse = function (response, url) { } const { statusCode } = response; if (!statusCode) { - alertError("服务异常") + alertError("服务错误") return } console.log('url', url,'statusCode', statusCode, 'response.data', response?.data) From ec77d26c27a48ee0790b2a3340e9667f0cfca52e Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Thu, 9 Jan 2025 15:07:35 +0800 Subject: [PATCH 12/60] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E7=BB=91=E5=AE=9A=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E6=89=8B=E5=8A=A8=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=89=8D=E5=8F=AF=E4=BB=A5=E6=9F=A5=E8=AF=A2=E5=87=BA=E5=85=AC?= =?UTF-8?q?=E5=8F=B8=EF=BC=8C=E5=81=9A=E5=A5=BD=E9=9A=90=E7=A7=81=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86=E7=94=B5=E8=A1=A8?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelect/index.js | 5 +++-- pages/handleLogin/index.wxml | 2 -- pages/workBench/components/record/index.wxml | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index 68ec3a5..a25737e 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -123,9 +123,10 @@ Component({ return } this.setData({ - columns: data?.map(item => item?.shortName), + columns: data?.length ? data?.map(item => item?.name) : [], list: data, }) }, } -}) \ No newline at end of file +}) + diff --git a/pages/handleLogin/index.wxml b/pages/handleLogin/index.wxml index 533f5d9..0990a90 100644 --- a/pages/handleLogin/index.wxml +++ b/pages/handleLogin/index.wxml @@ -17,8 +17,6 @@ - 合闸 - + 在线 From b905da6035fb9034fed4a63e61180a616906a610 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Fri, 10 Jan 2025 15:07:07 +0800 Subject: [PATCH 13/60] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=BC=80=E7=A5=A8?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91=EF=BC=8C=E5=8F=AF=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=94=B5=E8=A1=A8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 18 ++++---- app.json | 3 +- assets/images/share.png | Bin 0 -> 173320 bytes pages/home/index.js | 14 ++++++ pages/home/index.wxml | 17 +++++-- pages/invoicing/index.js | 2 +- pages/invoicing/index.wxml | 2 +- pages/meterList/index.js | 90 +++++++++++++++++++++++++++++++++++++ pages/meterList/index.json | 7 +++ pages/meterList/index.wxml | 3 ++ pages/meterList/index.wxss | 1 + 11 files changed, 142 insertions(+), 15 deletions(-) create mode 100644 assets/images/share.png create mode 100644 pages/meterList/index.js create mode 100644 pages/meterList/index.json create mode 100644 pages/meterList/index.wxml create mode 100644 pages/meterList/index.wxss diff --git a/app.js b/app.js index 371edf6..e590e9d 100644 --- a/app.js +++ b/app.js @@ -6,27 +6,27 @@ function share() { const view = pages[pages.length - 1]; if (view) { wx.showShareMenu() + view.onShareAppMessage = () => { + return { + title: "", + path: "/pages/home/index", + imageUrl: "/assets/images/share.png" + } + } } + }) } -// app.js App({ onShow() { checkUpgrade(); }, onLaunch() { - // wx.showShareMenu() - // share() + share() const { api } = getConfigByEnv(); this.globalData = { ...this.globalData, api, } }, - // onShareAppMessage:function(){ - // wx.showShareMenu({ - // withShareTicket:true, - // menu:['shareAppMessage','shareTimeline'] - // }) - // }, globalData: { primaryColor: '#52c41a' } diff --git a/app.json b/app.json index 28d92db..eed1179 100644 --- a/app.json +++ b/app.json @@ -30,7 +30,8 @@ "pages/aid/consult/index", "pages/integral/index", "pages/discountCoupon/index", - "pages/integralRecord/index" + "pages/integralRecord/index", + "pages/meterList/index" ], "subPackages": [ { diff --git a/assets/images/share.png b/assets/images/share.png new file mode 100644 index 0000000000000000000000000000000000000000..14ac491b2d7582589c08c57d47655a5669429c06 GIT binary patch literal 173320 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 + + \ No newline at end of file diff --git a/pages/meterList/index.wxss b/pages/meterList/index.wxss new file mode 100644 index 0000000..c7df75e --- /dev/null +++ b/pages/meterList/index.wxss @@ -0,0 +1 @@ +/* pages/meterList/index.wxss */ \ No newline at end of file From 2b653ea3edc86f54f951aa3898f2cd5b9bd175b3 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 14 Jan 2025 17:10:46 +0800 Subject: [PATCH 14/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E8=A2=AB=E6=88=AA=E6=8E=89=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=96=B0=E5=A2=9E=E7=94=B5=E8=A1=A8=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/home/index.wxml | 10 +++++----- pages/invoiceList/components/notyet/index.js | 2 +- pages/invoiceList/components/notyet/index.wxml | 5 +++-- pages/invoiceList/components/notyet/index.wxss | 4 ++++ pages/meterList/index.js | 8 +++++--- service/meter.js | 5 +++-- service/park.js | 3 ++- service/recharge.js | 3 ++- service/tenement.js | 3 ++- utils/index.js | 8 ++++++-- 10 files changed, 33 insertions(+), 18 deletions(-) diff --git a/pages/home/index.wxml b/pages/home/index.wxml index 8eed4f2..dc81b19 100644 --- a/pages/home/index.wxml +++ b/pages/home/index.wxml @@ -62,19 +62,19 @@ {{meter.money}} --- - + - - - 刷新 + + 查看全部 + diff --git a/pages/invoiceList/components/notyet/index.js b/pages/invoiceList/components/notyet/index.js index f73ecad..9608c88 100644 --- a/pages/invoiceList/components/notyet/index.js +++ b/pages/invoiceList/components/notyet/index.js @@ -14,7 +14,7 @@ Component({ }, lifetimes: { attached() { - this.init(); + loadingFunc(() => this.init()) } }, /** diff --git a/pages/invoiceList/components/notyet/index.wxml b/pages/invoiceList/components/notyet/index.wxml index 5ab9525..2b6ec60 100644 --- a/pages/invoiceList/components/notyet/index.wxml +++ b/pages/invoiceList/components/notyet/index.wxml @@ -23,14 +23,15 @@ + 全选 - + {{ selectCount }} - 笔订单,共 + 笔,共 ¥ {{selectMoney}} 下一步 diff --git a/pages/invoiceList/components/notyet/index.wxss b/pages/invoiceList/components/notyet/index.wxss index 65e9424..52e2222 100644 --- a/pages/invoiceList/components/notyet/index.wxss +++ b/pages/invoiceList/components/notyet/index.wxss @@ -18,6 +18,10 @@ .middle { margin-top: 26rpx; font-size: 32rpx; + overflow: hidden; + width: 350rpx; + text-overflow: ellipsis; + white-space: nowrap; } .bottom { diff --git a/pages/meterList/index.js b/pages/meterList/index.js index 965e3b8..cda4f37 100644 --- a/pages/meterList/index.js +++ b/pages/meterList/index.js @@ -1,6 +1,6 @@ // pages/meterList/index.js import { getTenementMeterList } from "../../service/meter"; -import { alertInfo } from "../../utils/index"; +import { alertInfo, loadingFunc } from "../../utils/index"; import request from '../../utils/request'; const { OK } = request; Page({ @@ -12,7 +12,7 @@ Page({ header: [ { key: 'address', title: '电表地址' }, { key: "money", title: '电表余额', }, - { key: 'number', title: '电表总量' }, + { key: 'overall', title: '电表总量' }, ], list: [{}], }, @@ -36,7 +36,9 @@ Page({ */ onLoad(options) { console.log('options', options) - this.getMeters({ id: options?.id }) + loadingFunc(async () => { + await this.getMeters({ id: options?.id }) + }) }, /** diff --git a/service/meter.js b/service/meter.js index 3d1191e..efea844 100644 --- a/service/meter.js +++ b/service/meter.js @@ -1,4 +1,5 @@ import apis from '../utils/request'; +import { replaceSpecialIcon } from '../utils/index' const { GET, POST, PUT, DELETE } = apis // 获取电表列表 @@ -18,12 +19,12 @@ export const getTenementMeterList = async function(tid) { // 获取某一园区下的电表列表 export const getParkMeterList = async function({park = "", keyword = "", page = 1}) { - return await GET(`/equipment/getOperateMeterList?page=${page}&park=${park}&keyword=${escape(keyword)}`); + return await GET(`/equipment/getOperateMeterList?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}`); } // 获取某一园区下的简洁电表列表 export const getParkSimpleMeterList = async function({park = "", keyword = "", page = 1}) { - return await GET(`/work/getWorkMeter?page=${page}&park=${park}&keyword=${escape(keyword)}`); + return await GET(`/work/getWorkMeter?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}`); } diff --git a/service/park.js b/service/park.js index 6b8e536..ffec4e6 100644 --- a/service/park.js +++ b/service/park.js @@ -1,4 +1,5 @@ import apis from '../utils/request'; +import { replaceSpecialIcon } from '../utils/index' const { GET, POST, PUT, DELETE } = apis // 获取园区列表 @@ -8,5 +9,5 @@ export const getParkList = async function({ keyword = "" }) { // 获取未登录的园区列表 export const getLoginParkList = async function({ keyword }) { - return await GET(`/wx/getLoginParkList?keyword=${keyword}`); + return await GET(`/wx/getLoginParkList?keyword=${replaceSpecialIcon(keyword)}`); } \ No newline at end of file diff --git a/service/recharge.js b/service/recharge.js index 723990e..ed18b7b 100644 --- a/service/recharge.js +++ b/service/recharge.js @@ -1,4 +1,5 @@ import apis from '../utils/request'; +import { replaceSpecialIcon } from '../utils/index' const { GET, POST, PUT, DELETE } = apis // 获取充值记录 @@ -34,7 +35,7 @@ export const handleRecharge = async function(park, data) { // 获取后台审核列表 export const getRechargeApproveList = async function({park = "", page, keyword}) { - return await GET(`/wx/getTopExamineList?park=${park}&page=${page}&keyword=${escape(keyword)}`) + return await GET(`/wx/getTopExamineList?park=${park}&page=${page}&keyword=${replaceSpecialIcon(keyword)}`) } // 对公审核 diff --git a/service/tenement.js b/service/tenement.js index dbdfa46..efdc635 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -1,9 +1,10 @@ import apis from '../utils/request'; +import { replaceSpecialIcon } from '../utils/index' const { GET, POST, PUT, DELETE } = apis // 获取园区id模糊搜索商户列表 export const getTenementList = async function({ park, keyword }) { - return await GET(`/wx/getTenementList?park=${park}&keyword=${keyword}`); + return await GET(`/wx/getTenementList?park=${park}&keyword=${replaceSpecialIcon(keyword)}`); } // 获取名下所有的商户 diff --git a/utils/index.js b/utils/index.js index f023485..1389446 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,9 +45,9 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" + api = "http://localhost:8000" + // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/api3" - api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; @@ -245,4 +245,8 @@ export function getPageUrl() { /** 根据文件路径获取文件名 */ export function getFileName(path) { return path.slice(path.lastIndexOf("/") + 1, -1) +} + +export function replaceSpecialIcon(str) { + return str.replace(/#/g, escape("#")) } \ No newline at end of file From 24f2ec9ead349cad5c66d92189160af9f1ee2763 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Fri, 17 Jan 2025 08:44:59 +0800 Subject: [PATCH 15/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=B5=E8=A1=A8?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=8A=84=E8=A1=A8=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../electricQuery/components/reading/index.js | 102 ++++++++++++++++++ .../components/reading/index.json | 13 +++ .../components/reading/index.wxml | 72 +++++++++++++ .../components/reading/index.wxss | 95 ++++++++++++++++ childPackage/pages/electricQuery/index.js | 33 +++--- childPackage/pages/electricQuery/index.json | 5 +- childPackage/pages/electricQuery/index.wxml | 21 +--- pages/discountCoupon/index.wxml | 2 +- pages/invoiceList/components/info/index.js | 2 +- pages/meterList/index.js | 8 +- pages/meterList/index.wxml | 3 +- project.private.config.json | 7 ++ service/accounting.js | 4 +- 13 files changed, 323 insertions(+), 44 deletions(-) create mode 100644 childPackage/pages/electricQuery/components/reading/index.js create mode 100644 childPackage/pages/electricQuery/components/reading/index.json create mode 100644 childPackage/pages/electricQuery/components/reading/index.wxml create mode 100644 childPackage/pages/electricQuery/components/reading/index.wxss diff --git a/childPackage/pages/electricQuery/components/reading/index.js b/childPackage/pages/electricQuery/components/reading/index.js new file mode 100644 index 0000000..850cfc1 --- /dev/null +++ b/childPackage/pages/electricQuery/components/reading/index.js @@ -0,0 +1,102 @@ +// childPackage/pages/electricQuery/components/reading/index.js +import { exportElectricityList, getAccountingList, getElectricityList, getMeterReadingList } from "../../../../../service/accounting"; +import { getTenementMeterList } from "../../../../../service/meter"; +import dayjs from "../../../../../utils/dayjs"; +import request from '../../../../../utils/request'; +import { alertInfo, getPixelRatio, loadingFunc } from "../../../../../utils/index"; +const { OK } = request; +Component({ + + /** + * 组件的属性列表 + */ + properties: { + meter: String, + }, + observers: { + 'meter': function() { + loadingFunc(async () => { + await this.getReadingList(); + }) + } + }, + /** + * 组件的初始数据 + */ + data: { + readingDetailShow: false, + readingDetail: {}, + meterReadingHeader: [ + { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, + { title: '倍率', key: 'ratio' }, + { key: 'number', title: '抄表记录' }, + ], + meterReadingList: [], + yearMonthDayReading: dayjs().format("YYYY-MM-DD"), + yearMonthDayReadingStamp: new Date().getTime(), + readingPage: 1, + }, + + /** + * 组件的方法列表 + */ + methods: { + clickReadingTime() { + this.setData({ + readingVisible: true + }) + }, + async getReadingList() { + const { meter, yearMonthDayReading, readingPage } = this.data; + const { code, message, data, total } = await getMeterReadingList({ + id: meter, + time: yearMonthDayReading, + page: readingPage + }) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ meterReadingList: data, totalPage: Math.ceil(total / 20) }) + }, + onReadingTimeClose() { + this.setData({ readingVisible: false }) + }, + onReadingTimeCancel() { + this.setData({ readingVisible: false }) + }, + onReadingTimeConfirm(e) { + const { time } = e.detail; + + this.setData({ + yearMonthDayReading: time, + yearMonthDayReadingStamp: new Date(time).getTime(), + readingVisible: false, + readingPage: 1, + }, () => { + loadingFunc(async () => { + await this.getReadingList(); + }) + }) + + }, + showDetail(e) { + const { index, data = {} } = e.detail; + this.setData({ + readingDetailShow: true, + readingDetail: data || {} + }) + }, + async onChangePage(e) { + const page = e.detail.currentIndex; + const that = this; + this.setData({ + readingPage: page + }, () => { + loadingFunc(async () => { + await that.getReadingList(); + }) + }) + }, + } +}) \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/reading/index.json b/childPackage/pages/electricQuery/components/reading/index.json new file mode 100644 index 0000000..dbe66d1 --- /dev/null +++ b/childPackage/pages/electricQuery/components/reading/index.json @@ -0,0 +1,13 @@ +{ + "component": true, + "usingComponents": { + "custom-picker": "/components/picker/index", + "table": "/components/table/table", + "empty": "/components/empty/index", + "timePicker": "/components/timePicker/index", + "pagination": "/components/pagination/index", + "van-dialog": "@vant/weapp/dialog/index", + "van-field": "@vant/weapp/field/index", + "van-icon": "@vant/weapp/icon/index" + } +} \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml new file mode 100644 index 0000000..f9d7c8c --- /dev/null +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -0,0 +1,72 @@ + + + + 选择时间 + + {{yearMonthDayReading}} + + + + + + +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/reading/index.wxss b/childPackage/pages/electricQuery/components/reading/index.wxss new file mode 100644 index 0000000..3779087 --- /dev/null +++ b/childPackage/pages/electricQuery/components/reading/index.wxss @@ -0,0 +1,95 @@ +/* childPackage/pages/electricQuery/components/reading/index.wxss */ + +/* pages/electricQuery/index.wxss */ +page { + background-color: var(--transparent-green); + } + + .queryWrapper { + margin: 20rpx 0rpx; + background-color: #fff; + padding:15rpx 20rpx; + box-sizing: border-box; + border-radius: 20rpx; + display: flex; + align-items: center; + font-size: 32rpx; + } + + .label { + width: 180rpx; + font-size: 32rpx; + } + + .sum { + margin-bottom: 30rpx; + margin-left: 30rpx; + margin-right: 30rpx; + padding-bottom: 50rpx; + } + + .query { + margin: 20rpx 0rpx; + } + + .typeQueryText { + text-align: center; + padding: 20rpx; + background-color: var(--light-green); + font-size: 32rpx; + } + + .select { + border: 1rpx solid #ccc; + padding: 12rpx; + border-radius: 12rpx; + flex: 1; + display: flex; + justify-content: space-between; + font-size: 30rpx; + } + + .timeQueryText { + text-align: center; + padding: 20rpx; + background-color: rgb(242,248,246); + font-size: 30rpx; + } + + .wrapper { + margin-left: 30rpx; + margin-right: 30rpx; + padding: 0; + } + + .tooltip { + margin: 20rpx 0; + font-size: 28rpx; + color: rgb(97, 93, 93); + } + .timeChooseWrapper { + display: flex; + align-items: center; + font-size: 30rpx; + } + + .time { + flex: 1; + margin-left: 30rpx; + margin-right: 30rpx; + display: flex; + padding: 10rpx 20rpx; + border-radius: 12rpx; + border: 1rpx solid #ccc; + background-color: #fff; + } + + .timeText { + flex: 1; + } + + .mychart-bar::after{ + content:""; + display:block; + clear:both + } \ No newline at end of file diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index a12a3fa..264c586 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -22,26 +22,26 @@ Page({ year: dayjs().format('YYYY'), yearMonth: dayjs().format("YYYY-MM"), yearMonthDay: dayjs().format("YYYY-MM-DD"), + yearStamp: new Date().getTime(), yearMonthStamp: new Date().getTime(), yearMonthDayStamp: new Date().getTime(), + + header: [ { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, { title: '时间',renderBody: (item) => { return item.time } }, { key: 'number', title: '耗量' }, ], - meterReadingHeader: [ - { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, - { title: '倍率', key: 'ratio' }, - { key: 'number', title: '抄表记录' }, - ], + list: [], visible: false, - meterReadingList: [], + accountingList: [], electricNumber: 0, meterNumber: 0, page: 1, + readingPage: 1, }, changeQueryType(e) { const { type } = e.currentTarget.dataset @@ -53,10 +53,10 @@ Page({ }) break; case 1: - loadingFunc(async () => { - await this.getReadingList(); - }) - break; + // loadingFunc(async () => { + // await this.getReadingList(); + // }) + // break; case 2: loadingFunc(async () => { await this.getAccountingBalanceList(); @@ -74,6 +74,7 @@ Page({ visible: true }) }, + changeTimeType(e) { const { type } = e.currentTarget.dataset const that = this; @@ -164,15 +165,7 @@ Page({ return pieChart; }); }, - async getReadingList() { - const { meterId } = this.data; - const { code, message, data } = await getMeterReadingList(meterId) - if (code !== OK) { - alertInfo(message) - return; - } - this.setData({ meterReadingList: data, totalPage: 1 }) - }, + async export() { loadingFunc(async () => { const { queryType, timeType, meterId, year, yearMonth, yearMonthDay } = this.data; @@ -287,6 +280,7 @@ Page({ onTimeCancel() { this.setData({ visible: false }) }, + onTimeConfirm(e) { const { type, time } = e.detail; switch(type) { @@ -319,6 +313,7 @@ Page({ break; } }, + /** * 生命周期函数--监听页面初次渲染完成 */ diff --git a/childPackage/pages/electricQuery/index.json b/childPackage/pages/electricQuery/index.json index 175ba0d..54750e4 100644 --- a/childPackage/pages/electricQuery/index.json +++ b/childPackage/pages/electricQuery/index.json @@ -12,7 +12,10 @@ "accountingCard": "./components/accountingCard/index", "pagination": "/components/pagination/index", "echarts": "/childPackage/components/echarts/ec-canvas", - "listTable": "./components/listTable/index" + "listTable": "./components/listTable/index", + "van-dialog": "@vant/weapp/dialog/index", + "van-field": "@vant/weapp/field/index", + "reading": "./components/reading/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/childPackage/pages/electricQuery/index.wxml b/childPackage/pages/electricQuery/index.wxml index 8171e81..9190d29 100644 --- a/childPackage/pages/electricQuery/index.wxml +++ b/childPackage/pages/electricQuery/index.wxml @@ -57,9 +57,9 @@ - + @@ -88,19 +88,7 @@ - - -
- - - - - - - + @@ -139,4 +127,5 @@ bind:cancel="onTimeCancel" bind:close="onTimeClose" bind:confirm="onTimeConfirm" -/> \ No newline at end of file +/> + diff --git a/pages/discountCoupon/index.wxml b/pages/discountCoupon/index.wxml index 9f03dd2..35ef08a 100644 --- a/pages/discountCoupon/index.wxml +++ b/pages/discountCoupon/index.wxml @@ -15,6 +15,6 @@ - + \ No newline at end of file diff --git a/pages/invoiceList/components/info/index.js b/pages/invoiceList/components/info/index.js index 7fadab6..5448552 100644 --- a/pages/invoiceList/components/info/index.js +++ b/pages/invoiceList/components/info/index.js @@ -38,7 +38,7 @@ Component({ alertInfo(message) return; } - this.setData({ detail: {...data,name: wx.getStorageSync('tenement')?.name, },editType: 'detail', }) + this.setData({ detail: {...data,name: data?.name || wx.getStorageSync('tenement')?.name, },editType: 'detail', }) }, async getUser() { const tenement = wx.getStorageSync('tenement') diff --git a/pages/meterList/index.js b/pages/meterList/index.js index cda4f37..d941831 100644 --- a/pages/meterList/index.js +++ b/pages/meterList/index.js @@ -1,5 +1,6 @@ // pages/meterList/index.js import { getTenementMeterList } from "../../service/meter"; +import dayjs from "../../utils/dayjs"; import { alertInfo, loadingFunc } from "../../utils/index"; import request from '../../utils/request'; const { OK } = request; @@ -14,7 +15,7 @@ Page({ { key: "money", title: '电表余额', }, { key: 'overall', title: '电表总量' }, ], - list: [{}], + list: [], }, async getMeters({ id }) { const { code, message, data } = await getTenementMeterList(id); @@ -35,7 +36,6 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - console.log('options', options) loadingFunc(async () => { await this.getMeters({ id: options?.id }) }) @@ -52,7 +52,9 @@ Page({ * 生命周期函数--监听页面显示 */ onShow() { - + this.setData({ + time: dayjs().format("YYYY-MM-DD HH:mm:ss"), + }) }, /** diff --git a/pages/meterList/index.wxml b/pages/meterList/index.wxml index da99331..163119e 100644 --- a/pages/meterList/index.wxml +++ b/pages/meterList/index.wxml @@ -1,3 +1,4 @@ -
\ No newline at end of file + 当前时间:{{ time }} +
\ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index 5d56456..a784ce0 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -10,6 +10,13 @@ "condition": { "miniprogram": { "list": [ + { + "name": "childPackage/pages/electricQuery/index", + "pathName": "childPackage/pages/electricQuery/index", + "query": "", + "launchMode": "default", + "scene": null + }, { "name": "pages/handleLogin/index", "pathName": "pages/handleLogin/index", diff --git a/service/accounting.js b/service/accounting.js index 8892afe..5c8ade0 100644 --- a/service/accounting.js +++ b/service/accounting.js @@ -15,9 +15,9 @@ export const getElectricityList = async function({ meter, type, time, page }) { } // 抄表记录列表 -export const getMeterReadingList = async function(meter) { +export const getMeterReadingList = async function({ id = '', time, page }) { const tenement = wx.getStorageSync('tenement')?.id || "" - return await GET(`/wx/getMeterReadingList?tenement=${tenement}&meter=${meter}`); + return await GET(`/wx/getMeterReadingList?tenement=${tenement}&meter=${id}&page=${page}&readAt=${time}`); } // 账务余额列表 export const getAccountingList = async function(meter) { From 103c10347c1c05943a52f0aebb448b91fc619f0b Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 21 Jan 2025 14:32:41 +0800 Subject: [PATCH 16/60] =?UTF-8?q?=E9=A2=84=E7=95=99=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E5=8F=B7=E6=96=B0=E5=8A=A0=E8=A7=A3=E9=87=8A=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E6=96=B0=E5=A2=9E=E5=A4=87=E6=B3=A8=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E6=A0=B7=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96table=E7=BB=84=E4=BB=B6=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E4=BC=A0=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/discountCoupon/index.js | 19 ++++++++++++++++++- components/discountCoupon/index.json | 3 ++- components/discountCoupon/index.wxml | 7 ++++--- components/discountCoupon/index.wxss | 13 +++++++++---- components/table/table.js | 3 +++ components/table/table.wxml | 15 +++++++++++---- pages/handleLogin/index.js | 9 +++++++++ pages/handleLogin/index.json | 3 ++- pages/handleLogin/index.wxml | 14 +++++++++++--- pages/meterList/index.wxml | 13 +++++++++++-- pages/meterList/index.wxss | 11 ++++++++++- project.private.config.json | 7 +++++++ utils/index.js | 4 ++-- 13 files changed, 99 insertions(+), 22 deletions(-) diff --git a/components/discountCoupon/index.js b/components/discountCoupon/index.js index 2b2cddd..eeff869 100644 --- a/components/discountCoupon/index.js +++ b/components/discountCoupon/index.js @@ -38,10 +38,27 @@ Component({ that.triggerEvent("change", { id, type: 2 }) }) }, + showRemark() { + wx.showModal({ + title: '备注', + content: this.data?.data?.remark, + showCancel: false, + complete: (res) => { + if (res.cancel) { + + } + + if (res.confirm) { + + } + } + }) + + }, handleUseIt() { alertInfo("敬请期待") }, - async handleUse(e) { + async handleUse() { const { data } = this.data; const that = this; loadingFunc(async () => { diff --git a/components/discountCoupon/index.json b/components/discountCoupon/index.json index 3b51cdc..6a35321 100644 --- a/components/discountCoupon/index.json +++ b/components/discountCoupon/index.json @@ -1,6 +1,7 @@ { "component": true, "usingComponents": { - "van-button": "@vant/weapp/button/index" + "van-button": "@vant/weapp/button/index", + "van-dialog": "@vant/weapp/dialog/index" } } \ No newline at end of file diff --git a/components/discountCoupon/index.wxml b/components/discountCoupon/index.wxml index 8db85d7..4e012c2 100644 --- a/components/discountCoupon/index.wxml +++ b/components/discountCoupon/index.wxml @@ -26,8 +26,8 @@ - - + + {{data.remark}} 去领取 @@ -35,4 +35,5 @@ 去使用 - \ No newline at end of file + + \ No newline at end of file diff --git a/components/discountCoupon/index.wxss b/components/discountCoupon/index.wxss index 4dac214..214f566 100644 --- a/components/discountCoupon/index.wxss +++ b/components/discountCoupon/index.wxss @@ -10,7 +10,7 @@ display: flex; justify-content: space-between; border-bottom: 1rpx dashed #ccc; - padding-bottom: 20rpx; + padding-bottom: 30rpx; } .top .right { @@ -25,7 +25,7 @@ .typeText { font-weight: 700; - font-size: 42rpx; + font-size: 36rpx; margin-bottom: 20rpx; } @@ -51,5 +51,10 @@ .bottom .left { flex: 1; - font-size: 32rpx; -} \ No newline at end of file + max-width: calc(100vw - 60rpx - 250rpx); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 30rpx; + color: rgba(0, 0, 0, 0.7) +} diff --git a/components/table/table.js b/components/table/table.js index e4dd2c2..c104dcd 100644 --- a/components/table/table.js +++ b/components/table/table.js @@ -27,6 +27,9 @@ Component({ type: String, value: '#d6e8ff' }, + topColor: String, + topStyle: String, + bodyStyle: String, maxLine: { type: Number, value: 2 diff --git a/components/table/table.wxml b/components/table/table.wxml index 54a5a3b..e46080e 100644 --- a/components/table/table.wxml +++ b/components/table/table.wxml @@ -8,12 +8,19 @@
\ No newline at end of file +{{ time }} + +
+ \ No newline at end of file diff --git a/pages/meterList/index.wxss b/pages/meterList/index.wxss index c7df75e..564316e 100644 --- a/pages/meterList/index.wxss +++ b/pages/meterList/index.wxss @@ -1 +1,10 @@ -/* pages/meterList/index.wxss */ \ No newline at end of file +/* pages/meterList/index.wxss */ +.time { + margin: 20rpx 24rpx; + font-size: 28rpx; + color: rgb(97, 93, 93); +} + +page { + background-color: var(--transparent-green); + } \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index a784ce0..aa91fce 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -10,6 +10,13 @@ "condition": { "miniprogram": { "list": [ + { + "name": "pages/discountCoupon/index", + "pathName": "pages/discountCoupon/index", + "query": "", + "launchMode": "default", + "scene": null + }, { "name": "childPackage/pages/electricQuery/index", "pathName": "childPackage/pages/electricQuery/index", diff --git a/utils/index.js b/utils/index.js index 1389446..b49eed0 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,8 +45,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" - // api = "https://zgd.hbhcbn.com/api3" + // api = "http://localhost:8000" + api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" From 616c6a53fb1eeaa7da940d9f6d67312fee3fe73b Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 19 Feb 2025 19:54:02 +0800 Subject: [PATCH 17/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E7=A5=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=E5=92=8C=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 3 +- components/Segmented/index.js | 24 +++ components/Segmented/index.json | 4 + components/Segmented/index.wxml | 4 + components/Segmented/index.wxss | 1 + components/navigator/index.js | 7 +- components/searchSelect/index.js | 20 ++- components/searchSelect/index.wxml | 23 ++- components/searchSelect/index.wxss | 2 - pages/discountCoupon/index.js | 1 - pages/home/index.js | 2 +- pages/invoicing/index.wxml | 2 +- .../account/components/editModal/index.js | 50 ++++++ .../account/components/editModal/index.json | 8 + .../account/components/editModal/index.wxml | 30 ++++ .../account/components/editModal/index.wxss | 1 + pages/workBench/components/account/index.js | 77 ++++++++++ pages/workBench/components/account/index.json | 16 ++ pages/workBench/components/account/index.wxml | 98 ++++++++++++ pages/workBench/components/account/index.wxss | 1 + pages/workBench/components/record/index.js | 44 ++++-- pages/workBench/components/record/index.wxml | 144 ++++++++++++------ .../tenement/components/bindMeter/index.js | 35 +++++ .../tenement/components/bindMeter/index.json | 8 + .../tenement/components/bindMeter/index.wxml | 41 +++++ .../tenement/components/bindMeter/index.wxss | 1 + .../components/createTenement/index.js | 103 +++++++++++++ .../components/createTenement/index.json | 8 + .../components/createTenement/index.wxml | 74 +++++++++ .../components/createTenement/index.wxss | 1 + .../tenement/components/kaihu/index.js | 57 +++++++ .../tenement/components/kaihu/index.json | 10 ++ .../tenement/components/kaihu/index.wxml | 81 ++++++++++ .../tenement/components/kaihu/index.wxss | 1 + pages/workBench/components/tenement/index.js | 72 +++++++++ .../workBench/components/tenement/index.json | 10 ++ .../workBench/components/tenement/index.wxml | 100 ++++++++++++ .../workBench/components/tenement/index.wxss | 1 + pages/workBench/index.js | 4 +- pages/workBench/index.json | 4 +- pages/workBench/index.wxml | 15 +- service/park.js | 5 + service/system.js | 1 + service/tenement.js | 21 ++- utils/data.js | 2 + utils/index.js | 4 +- utils/system.js | 3 + 47 files changed, 1142 insertions(+), 82 deletions(-) create mode 100644 components/Segmented/index.js create mode 100644 components/Segmented/index.json create mode 100644 components/Segmented/index.wxml create mode 100644 components/Segmented/index.wxss create mode 100644 pages/workBench/components/account/components/editModal/index.js create mode 100644 pages/workBench/components/account/components/editModal/index.json create mode 100644 pages/workBench/components/account/components/editModal/index.wxml create mode 100644 pages/workBench/components/account/components/editModal/index.wxss create mode 100644 pages/workBench/components/account/index.js create mode 100644 pages/workBench/components/account/index.json create mode 100644 pages/workBench/components/account/index.wxml create mode 100644 pages/workBench/components/account/index.wxss create mode 100644 pages/workBench/components/tenement/components/bindMeter/index.js create mode 100644 pages/workBench/components/tenement/components/bindMeter/index.json create mode 100644 pages/workBench/components/tenement/components/bindMeter/index.wxml create mode 100644 pages/workBench/components/tenement/components/bindMeter/index.wxss create mode 100644 pages/workBench/components/tenement/components/createTenement/index.js create mode 100644 pages/workBench/components/tenement/components/createTenement/index.json create mode 100644 pages/workBench/components/tenement/components/createTenement/index.wxml create mode 100644 pages/workBench/components/tenement/components/createTenement/index.wxss create mode 100644 pages/workBench/components/tenement/components/kaihu/index.js create mode 100644 pages/workBench/components/tenement/components/kaihu/index.json create mode 100644 pages/workBench/components/tenement/components/kaihu/index.wxml create mode 100644 pages/workBench/components/tenement/components/kaihu/index.wxss create mode 100644 pages/workBench/components/tenement/index.js create mode 100644 pages/workBench/components/tenement/index.json create mode 100644 pages/workBench/components/tenement/index.wxml create mode 100644 pages/workBench/components/tenement/index.wxss diff --git a/app.json b/app.json index eed1179..c4c9274 100644 --- a/app.json +++ b/app.json @@ -31,7 +31,8 @@ "pages/integral/index", "pages/discountCoupon/index", "pages/integralRecord/index", - "pages/meterList/index" + "pages/meterList/index", + "pages/workBench/components/tenement/components/createTenement/index" ], "subPackages": [ { diff --git a/components/Segmented/index.js b/components/Segmented/index.js new file mode 100644 index 0000000..13fe062 --- /dev/null +++ b/components/Segmented/index.js @@ -0,0 +1,24 @@ +// components/Segmented/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + list: Array + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) \ No newline at end of file diff --git a/components/Segmented/index.json b/components/Segmented/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/Segmented/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/Segmented/index.wxml b/components/Segmented/index.wxml new file mode 100644 index 0000000..3b51e43 --- /dev/null +++ b/components/Segmented/index.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/components/Segmented/index.wxss b/components/Segmented/index.wxss new file mode 100644 index 0000000..74130e5 --- /dev/null +++ b/components/Segmented/index.wxss @@ -0,0 +1 @@ +/* components/Segmented/index.wxss */ \ No newline at end of file diff --git a/components/navigator/index.js b/components/navigator/index.js index a86a1d7..0be511e 100644 --- a/components/navigator/index.js +++ b/components/navigator/index.js @@ -7,6 +7,7 @@ Component({ properties: { title: String, canBack: Boolean, + beforeBack: Function, }, /** @@ -34,7 +35,11 @@ Component({ * 组件的方法列表 */ methods: { - back() { + async back() { + const { beforeBack } = this; + if (beforeBack) { + await beforeBack(); + } wx.navigateBack(); } } diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index a25737e..069b1db 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -1,8 +1,8 @@ -import { getLoginParkList } from "../../service/park" +import { getLoginParkList, getParkBuildingList } from "../../service/park" import { getParkSimpleMeterList } from "../../service/meter" import { alertInfo } from "../../utils/index"; import request from "../../utils/request" -import { payWays } from "../../utils/data"; +import { payWays, feeType } from "../../utils/data"; import { getTenementList } from "../../service/tenement"; const { OK } = request; @@ -86,9 +86,13 @@ Component({ return; case "meter": this.onSearchMeter(); + return case "tenement": this.onSearchTenement(); return; + case "building": + this.onSearchBuilding(); + return; } }, async onSearchPark() { @@ -127,6 +131,18 @@ Component({ list: data, }) }, + async onSearchBuilding() { + const { park } = this.data; + const { code, message, data = [] } = await getParkBuildingList(park); + if (code !== OK) { + alertInfo(message) + return + } + this.setData({ + columns: data?.length ? data?.map(item => item?.name) : [], + list: data, + }) + }, } }) diff --git a/components/searchSelect/index.wxml b/components/searchSelect/index.wxml index fe751bf..8e9a2f3 100644 --- a/components/searchSelect/index.wxml +++ b/components/searchSelect/index.wxml @@ -3,6 +3,7 @@ show="{{ show }}" bind:click="onClickHide" position="bottom" + z-index="100000" > - + + + + + + + \ No newline at end of file diff --git a/components/searchSelect/index.wxss b/components/searchSelect/index.wxss index 540bed4..ad01756 100644 --- a/components/searchSelect/index.wxss +++ b/components/searchSelect/index.wxss @@ -1,3 +1 @@ /* components/searchSelect/index.wxss */ -.van-ellipsis van-picker-column__item { -} \ No newline at end of file diff --git a/pages/discountCoupon/index.js b/pages/discountCoupon/index.js index 4820acb..f0d079f 100644 --- a/pages/discountCoupon/index.js +++ b/pages/discountCoupon/index.js @@ -23,7 +23,6 @@ Page({ }, onChange(e) { - console.log('e', e) this.setData({ active: e.detail.index, }, () => { diff --git a/pages/home/index.js b/pages/home/index.js index 8b39029..12760ed 100644 --- a/pages/home/index.js +++ b/pages/home/index.js @@ -56,7 +56,7 @@ Page({ * 生命周期函数--监听页面初次渲染完成 */ onReady() { - + }, async changeMeter() { const { meterList = [] } = this.data; diff --git a/pages/invoicing/index.wxml b/pages/invoicing/index.wxml index 86883ff..29d2b91 100644 --- a/pages/invoicing/index.wxml +++ b/pages/invoicing/index.wxml @@ -104,7 +104,7 @@ > + + + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/account/components/editModal/index.wxss b/pages/workBench/components/account/components/editModal/index.wxss new file mode 100644 index 0000000..5ddf238 --- /dev/null +++ b/pages/workBench/components/account/components/editModal/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/account/components/editModal/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js new file mode 100644 index 0000000..f66d8c6 --- /dev/null +++ b/pages/workBench/components/account/index.js @@ -0,0 +1,77 @@ +// pages/workBench/components/account/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + onParkFocus(e) { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + onTenementFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "商户", + type: 'tenement' + }) + }, + onConfirm(e) { + const { type, data } = e.detail; + switch(type) { + case "park": + this.setData({ + park: data.id, + parkName: data.name, + show: false, + }) + break; + case "tenement": + this.setData({ + tenement: data.id, + tenementName: data.name, + show: false, + }) + break; + } + }, + handleDelete(e) { + const {} = e; + wx.showModal({ + title: '提示', + content: '确认要移除该用户吗?', + complete: (res) => { + if (res.cancel) { + + } + + if (res.confirm) { + + } + } + }) + } + } +}) \ No newline at end of file diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json new file mode 100644 index 0000000..57b9106 --- /dev/null +++ b/pages/workBench/components/account/index.json @@ -0,0 +1,16 @@ +{ + "component": true, + "usingComponents": { + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index", + "search-select": "/components/searchSelect/index", + "van-empty": "@vant/weapp/empty/index", + "table": "/components/table/table", + "pagination": "/components/pagination/index", + "empty": "/components/empty/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "van-tag": "@vant/weapp/tag/index", + "edit-modal": "./components/editModal/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml new file mode 100644 index 0000000..06804ad --- /dev/null +++ b/pages/workBench/components/account/index.wxml @@ -0,0 +1,98 @@ + + + + + 选择 + + + + + 选择 + + + + + + + + + + + + + + + 序号 + 昵称 + 手机号 + 操作 + + + + + + {{ index }} + {{ item.tenement.shortName }} + {{ item.money }} + + + 移除 + + + + + + + + + + 添加子账号 + 修改主账号 + + + + + \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxss b/pages/workBench/components/account/index.wxss new file mode 100644 index 0000000..80816c6 --- /dev/null +++ b/pages/workBench/components/account/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/account/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/record/index.js b/pages/workBench/components/record/index.js index d16e606..31ed2f9 100644 --- a/pages/workBench/components/record/index.js +++ b/pages/workBench/components/record/index.js @@ -33,17 +33,39 @@ Component({ type: 'park' }) }, - onConfirm(e) { - const { data } = e.detail; - const that = this; + onMeterFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } this.setData({ - parkName: data.name, - park: data.id, - }, () => { - loadingFunc(async () => { - await that.init(); - }) + show: true, + title: "电表", + type: 'meter' }) + }, + onConfirm(e) { + console.log('e', e) + const { data, type } = e.detail; + const that = this; + switch(type) { + case "park": + this.setData({ + parkName: data.name, + park: data.id, + }) + break; + case "meter": + this.setData({ + meterName: data.address, + meter: data.id, + }, () => { + that.init(); + }) + break; + } + this.onConcal(); }, onChangeKeyword(e) { @@ -60,11 +82,11 @@ Component({ }) }, async init() { - const { page, keyword, park } = this.data; + const { page, park, meter } = this.data; if (!park) { return; } - const { code, message, data, total } = await getParkMeterList({ park, keyword, page }) + const { code, message, data, total } = await getParkMeterList({ park, keyword: meter, page }) if (code !== OK) { alertInfo(message); return; diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index a57aee8..8a077ff 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -16,65 +16,113 @@ - - 搜索 + + 选择 + - - - - - 商户名称 - 电表地址 - 电表余额 - 拉合闸 - 是否失联 - - - - - - - - {{ item.tenement.shortName }} - {{ item.address }} - {{ item.money }} - - 拉闸 - - - 合闸 - - - 在线 - - - 失联 - - - - - + + + + + + + + + + + + + + - - @@ -88,7 +136,7 @@ > 合闸 拉闸 - + diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js new file mode 100644 index 0000000..f0cb820 --- /dev/null +++ b/pages/workBench/components/tenement/components/bindMeter/index.js @@ -0,0 +1,35 @@ +// pages/workBench/components/tenement/components/bindMeter/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + onMeterFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "电表", + type: 'meter' + }) + }, + } +}) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.json b/pages/workBench/components/tenement/components/bindMeter/index.json new file mode 100644 index 0000000..953d7ac --- /dev/null +++ b/pages/workBench/components/tenement/components/bindMeter/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-dialog": "@vant/weapp/dialog/index", + "search-select": "/components/searchSelect/index", + "van-field": "@vant/weapp/field/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml new file mode 100644 index 0000000..491582c --- /dev/null +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml @@ -0,0 +1,41 @@ + + + + + + + 选择 + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxss b/pages/workBench/components/tenement/components/bindMeter/index.wxss new file mode 100644 index 0000000..3fb490f --- /dev/null +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/tenement/components/bindMeter/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/createTenement/index.js b/pages/workBench/components/tenement/components/createTenement/index.js new file mode 100644 index 0000000..da2774b --- /dev/null +++ b/pages/workBench/components/tenement/components/createTenement/index.js @@ -0,0 +1,103 @@ +// pages/workBench/components/tenement/components/createTenement/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData(options) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + onBuildingFocus() { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "建筑", + type: 'building' + }) + }, + onFeeTypeFocus() { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "建筑", + type: 'building' + }) + }, + beforeBack() { + let pages = getCurrentPages(); // 获取当前页面栈 + let prevPage = pages[pages.length - 2]; // 获取上一页 + const { tenement = '', tenementName = '', park = '', parkName = '' } = this.data; + // 修改上一页的数据 + prevPage.setData({ + needBackShow: true, + tenement, + tenementName, + park, + parkName + }); + + }, + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/createTenement/index.json b/pages/workBench/components/tenement/components/createTenement/index.json new file mode 100644 index 0000000..b97afff --- /dev/null +++ b/pages/workBench/components/tenement/components/createTenement/index.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "search-select": "/components/searchSelect/index", + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index", + "navigator": "/components/navigator/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/createTenement/index.wxml b/pages/workBench/components/tenement/components/createTenement/index.wxml new file mode 100644 index 0000000..6d0a517 --- /dev/null +++ b/pages/workBench/components/tenement/components/createTenement/index.wxml @@ -0,0 +1,74 @@ + + + + + + + + + + + 选择 + + + + + 选择 + + + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/createTenement/index.wxss b/pages/workBench/components/tenement/components/createTenement/index.wxss new file mode 100644 index 0000000..45f4ed9 --- /dev/null +++ b/pages/workBench/components/tenement/components/createTenement/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/tenement/components/createTenement/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/kaihu/index.js b/pages/workBench/components/tenement/components/kaihu/index.js new file mode 100644 index 0000000..34326d4 --- /dev/null +++ b/pages/workBench/components/tenement/components/kaihu/index.js @@ -0,0 +1,57 @@ +// pages/workBench/components/tenement/components/kaihu/index.js +import { alertInfo } from "../../../../../../utils/index" + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + park: String, + visible: Boolean, + }, + // observers: { + // 'visible': function(newVisible) { + // this.setData({ + // show: newVisible + // }) + // } + // }, + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + onBuildingFocus() { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "建筑", + type: 'building' + }) + }, + onFeeTypeFocus() { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "建筑", + type: 'building' + }) + }, + }, + +}) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/kaihu/index.json b/pages/workBench/components/tenement/components/kaihu/index.json new file mode 100644 index 0000000..f5d5fc8 --- /dev/null +++ b/pages/workBench/components/tenement/components/kaihu/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "search-select": "/components/searchSelect/index", + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index", + "navigator": "/components/navigator/index", + "van-dialog": "@vant/weapp/dialog/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/kaihu/index.wxml b/pages/workBench/components/tenement/components/kaihu/index.wxml new file mode 100644 index 0000000..2afba3b --- /dev/null +++ b/pages/workBench/components/tenement/components/kaihu/index.wxml @@ -0,0 +1,81 @@ + + + + + + + + + + + 选择 + + + + + 选择 + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/kaihu/index.wxss b/pages/workBench/components/tenement/components/kaihu/index.wxss new file mode 100644 index 0000000..d4caef1 --- /dev/null +++ b/pages/workBench/components/tenement/components/kaihu/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/tenement/components/kaihu/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js new file mode 100644 index 0000000..9ed03a7 --- /dev/null +++ b/pages/workBench/components/tenement/index.js @@ -0,0 +1,72 @@ +import { alertInfo } from "../../../../utils/index"; + +// pages/workBench/components/tenement/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + lifetimes: { + ready() { + console.log("this.data", this.data) + } + }, + /** + * 组件的方法列表 + */ + methods: { + onParkFocus(e) { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + onTenementFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "商户", + type: 'tenement' + }) + }, + async init() { + + }, + onConfirm(e) { + const { type, data } = e.detail; + switch(type) { + case "park": + this.setData({ + park: data.id, + parkName: data.name, + show: false, + }) + break; + } + }, + startKh() { + this.setData({ + kaihuVisible: true + }) + // const { park = '', parkName = '', tenement = '', tenementName = '' } = this.data; + // wx.navigateTo({ + // url: `/pages/workBench/components/tenement/components/createTenement/index?park=${park}&tenement=${tenement}&parkName=${parkName}&${tenementName}=${tenementName}`, + // }) + } + } +}) \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.json b/pages/workBench/components/tenement/index.json new file mode 100644 index 0000000..225bd8e --- /dev/null +++ b/pages/workBench/components/tenement/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index", + "search-select": "/components/searchSelect/index", + "van-empty": "@vant/weapp/empty/index", + "kaihu": "./components/kaihu/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml new file mode 100644 index 0000000..c356208 --- /dev/null +++ b/pages/workBench/components/tenement/index.wxml @@ -0,0 +1,100 @@ + + + + + 选择 + + + + + 选择 + + + + + + 绑定电表 + 修改信息 + + 开户 + + + + + + + + + + + + + 电表地址 + SN + 操作 + + + + + + {{ item.tenement.shortName }} + {{ item.money }} + + + 解绑 + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxss b/pages/workBench/components/tenement/index.wxss new file mode 100644 index 0000000..5de07ae --- /dev/null +++ b/pages/workBench/components/tenement/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/tenement/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/index.js b/pages/workBench/index.js index 4b09d20..e257546 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 0 + active: 3 }, /** @@ -28,7 +28,7 @@ Page({ * 生命周期函数--监听页面显示 */ onShow() { - + console.log("this,data", this.data) }, /** diff --git a/pages/workBench/index.json b/pages/workBench/index.json index 609219d..c288a2d 100644 --- a/pages/workBench/index.json +++ b/pages/workBench/index.json @@ -5,7 +5,9 @@ "navigator": "/components/navigator/index", "approve": "./components/approve/index", "recharge": "./components/recharge/index", - "record": "./components/record/index" + "record": "./components/record/index", + "tenement": "./components/tenement/index", + "account": "./components/account/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/workBench/index.wxml b/pages/workBench/index.wxml index ae5e967..b861d6f 100644 --- a/pages/workBench/index.wxml +++ b/pages/workBench/index.wxml @@ -1,13 +1,16 @@ - - - - + - - + + + + + + + + \ No newline at end of file diff --git a/service/park.js b/service/park.js index ffec4e6..a4b8090 100644 --- a/service/park.js +++ b/service/park.js @@ -10,4 +10,9 @@ export const getParkList = async function({ keyword = "" }) { // 获取未登录的园区列表 export const getLoginParkList = async function({ keyword }) { return await GET(`/wx/getLoginParkList?keyword=${replaceSpecialIcon(keyword)}`); +} + +// 获取建筑列表 +export const getParkBuildingList = async function(pid) { + return await GET(`/vx/park/${pid}/building`); } \ No newline at end of file diff --git a/service/system.js b/service/system.js index 94a2d5f..d8fd557 100644 --- a/service/system.js +++ b/service/system.js @@ -95,3 +95,4 @@ export const redeemCoupons = async function({ id, type }) { export const getCurrentCoupons = async function() { return await GET(`/wx/getCurrentCoupons`); } + diff --git a/service/tenement.js b/service/tenement.js index efdc635..e3f360c 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -12,7 +12,7 @@ export const getOwnTenementList = async function() { return await GET(`/wx/getOwnTenements`); } -// 获取商户详情 +// 获取商户详情(简易) export const getTenementDetail = async function(id) { return await GET(`/wx/getTenementDetail/${id}`); } @@ -20,4 +20,21 @@ export const getTenementDetail = async function(id) { // 获取商户是否限电 export const getTenementExceptionalCase = async function(pid, tid) { return await GET(`/wx/exceptionalCase/${pid}/${tid}`); -} \ No newline at end of file +} + +// 获取商户详情(b端) +export const getTenementInfoDetail = async function(id) { + return await GET(`/wx/getTenementDetail/${id}`); +} +// 创建商户 +export const createTenement = async function(pid, data) { + return await POST(`/vx/tenement/${pid}`, data) +} +// 修改商户 +export const updateTenement = async function(pid, data) { + return await POST(`/vx/tenement/${pid}`, data) +} +// 解绑电表 +export const unbindMeter = async function(pid, tid, code) { + return await POST(`/tenement/${pid}/${tid}/binding/${code}/unbind`) +} diff --git a/utils/data.js b/utils/data.js index b4c55db..22c17b0 100644 --- a/utils/data.js +++ b/utils/data.js @@ -8,3 +8,5 @@ export const payWays = ["现金", "银行卡", "支付宝", "微信", "云闪 export const getRechargeOperateWay = (num) => { return payWays[num]; } + +export const feeType = ['华昌宝能收费', "物业代收1", "物业代收2", "物业代收线损"] \ No newline at end of file diff --git a/utils/index.js b/utils/index.js index b49eed0..1389446 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,8 +45,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" - api = "https://zgd.hbhcbn.com/api3" + api = "http://localhost:8000" + // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" diff --git a/utils/system.js b/utils/system.js index c3e0002..433e231 100644 --- a/utils/system.js +++ b/utils/system.js @@ -9,6 +9,9 @@ export const getDot = async () => { return; } const { code, message, data } = await getUnReadApproveNumber(); + if (code !== OK) { + return; + } if (data > 0) { wx.showTabBarRedDot({ index: 2, From 5d617f228256c9c750e1fdfd66ef166677d87dce Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Thu, 20 Feb 2025 10:38:29 +0800 Subject: [PATCH 18/60] =?UTF-8?q?=E6=9A=82=E5=AD=98=E5=85=85=E5=80=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Segmented/index.js | 12 +- components/Segmented/index.wxml | 12 +- components/Segmented/index.wxss | 20 +- pages/workBench/components/account/index.js | 4 + pages/workBench/components/approve/index.js | 178 ------------------ pages/workBench/components/approve/index.json | 11 +- pages/workBench/components/approve/index.wxml | 111 ----------- pages/workBench/components/approve/index.wxss | 44 ----- .../recharge/components/approve/index.js | 178 ++++++++++++++++++ .../recharge/components/approve/index.json | 15 ++ .../recharge/components/approve/index.wxml | 113 +++++++++++ .../recharge/components/approve/index.wxss | 45 +++++ .../recharge/components/reharge/index.js | 153 +++++++++++++++ .../recharge/components/reharge/index.json | 9 + .../recharge/components/reharge/index.wxml | 81 ++++++++ .../recharge/components/reharge/index.wxss | 1 + pages/workBench/components/recharge/index.js | 132 +------------ .../workBench/components/recharge/index.json | 8 +- .../workBench/components/recharge/index.wxml | 87 +-------- pages/workBench/index.js | 2 +- service/recharge.js | 4 +- service/tenement.js | 5 + 22 files changed, 666 insertions(+), 559 deletions(-) create mode 100644 pages/workBench/components/recharge/components/approve/index.js create mode 100644 pages/workBench/components/recharge/components/approve/index.json create mode 100644 pages/workBench/components/recharge/components/approve/index.wxml create mode 100644 pages/workBench/components/recharge/components/approve/index.wxss create mode 100644 pages/workBench/components/recharge/components/reharge/index.js create mode 100644 pages/workBench/components/recharge/components/reharge/index.json create mode 100644 pages/workBench/components/recharge/components/reharge/index.wxml create mode 100644 pages/workBench/components/recharge/components/reharge/index.wxss diff --git a/components/Segmented/index.js b/components/Segmented/index.js index 13fe062..432db7c 100644 --- a/components/Segmented/index.js +++ b/components/Segmented/index.js @@ -5,7 +5,8 @@ Component({ * 组件的属性列表 */ properties: { - list: Array + list: Array, + active: Number, }, /** @@ -19,6 +20,13 @@ Component({ * 组件的方法列表 */ methods: { - + handleChange(e) { + console.log(e, this.data.active) + const { index } = e.currentTarget.dataset; + if (index === this.data.active) { + return; + } + this.triggerEvent("change", { index, name: this.data.list[index] }) + } } }) \ No newline at end of file diff --git a/components/Segmented/index.wxml b/components/Segmented/index.wxml index 3b51e43..a15e8f8 100644 --- a/components/Segmented/index.wxml +++ b/components/Segmented/index.wxml @@ -1,4 +1,12 @@ - - + + + {{ item }} + \ No newline at end of file diff --git a/components/Segmented/index.wxss b/components/Segmented/index.wxss index 74130e5..6d69e65 100644 --- a/components/Segmented/index.wxss +++ b/components/Segmented/index.wxss @@ -1 +1,19 @@ -/* components/Segmented/index.wxss */ \ No newline at end of file +/* components/Segmented/index.wxss */ +.item { + display: inline-block; + padding: 20rpx; + border: 1rpx solid #ccc; + border-right: 0rpx; + font-size: 32rpx; + min-width: 140rpx; + text-align: center; + +} + +.item:nth-last-child(1) { + border-right: 1rpx solid #ccc; +} + +.active { + background-color: var(--middle-green); +} diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index f66d8c6..7b6173b 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -72,6 +72,10 @@ Component({ } } }) + }, + async init() { + const { tenementName } = this.data; + const { code, message, data } = await } } }) \ No newline at end of file diff --git a/pages/workBench/components/approve/index.js b/pages/workBench/components/approve/index.js index 6fbd81c..92b90bf 100644 --- a/pages/workBench/components/approve/index.js +++ b/pages/workBench/components/approve/index.js @@ -1,179 +1 @@ // pages/workBench/components/approve/index.js -import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index"; -import { getParkMeterList, handleOperateMeterSwitch } from "../../../../service/meter" -import { getRechargeApproveList, rechargeApprove } from "../../../../service/recharge" -import request from "../../../../utils/request" -const { OK } = request - -// pages/workBench/components/record/index.js -Component({ - - /** - * 组件的属性列表 - */ - properties: { - - }, - - /** - * 组件的初始数据 - */ - data: { - keyword: "", - keywordTemp: "", - page: 1, - }, - lifetimes: { - attached() { - this.init(); - } - }, - /** - * 组件的方法列表 - */ - methods: { - onParkFocus(e) { - this.setData({ - show: true, - title: "园区", - type: 'park' - }) - }, - onConfirm(e) { - const { data } = e.detail; - const that = this; - this.setData({ - parkName: data.name, - park: data.id, - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - this.onConcal(); - }, - onChangeKeyword(e) { - this.setData({ keywordTemp: e.detail }) - }, - onSearch() { - const that = this; - that.setData({ - keyword: that.data.keywordTemp - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - }, - async init() { - const { page, keyword, park } = this.data; - const { code, message, data, total } = await getRechargeApproveList({ park, page, keyword }) - if (code !== OK) { - alertInfo(message); - return; - } - this.setData({ - list: data, - total: total, - totalPage: Math.ceil(total / 20) - }) - }, - onChangeReason(e) { - this.setData({ - reason: e.detail, - }) - }, - onApproveClose() { - this.setData({ - reason: "", - approveShow: false, - }) - }, - onApproveConfirm() { - const { reason, record } = this.data; - const that = this; - if (!reason) { - alertInfo("请输入拒绝理由") - return; - } - loadingFunc(async () => { - const { code, message } = await rechargeApprove({ id: record, status: 1, reason }) - if (code !== OK) { - alertInfo(message) - return; - } - alertSuccess("已拒绝") - that.init(); - that.setData({ - reason: "", - approveShow: false, - record: "", - }) - }) - - }, - handleApprove(e) { - const status = e.currentTarget.dataset.status; - const that = this; - if (status === '1') { - this.setData({ - approveShow: true - }) - return; - } - const { record, list } = this.data; - const item = list.find(ele => ele.id === record) - - wx.showModal({ - title: '提示', - content: `您确认要同意${item?.tenement?.shortName || 当前记录}吗?`, - complete: async (res) => { - if (res.cancel) { - - } - if (res.confirm) { - loadingFunc(async () => { - const { code, message } = await rechargeApprove({ id: record, status: 0, }) - if (code !== OK) { - alertInfo(message) - return; - } - alertSuccess("已同意") - that.init(); - }) - - } - } - }) - }, - jumpToDetail(e) { - const { id } = e.currentTarget.dataset; - wx.navigateTo({ - url: '/pages/rechargeDetail/index?id=' + id, - }) - }, - async onChangePage(e) { - const page = e.detail.currentIndex; - const that = this; - this.setData({ - page - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - }, - onConcal() { - this.setData({ - show: false, - title: "", - type: "", - }) - }, - onChangeSelectRecharge(e) { - this.setData({ - record: e.detail - }) - } - } -}) \ No newline at end of file diff --git a/pages/workBench/components/approve/index.json b/pages/workBench/components/approve/index.json index c992ee6..4a42478 100644 --- a/pages/workBench/components/approve/index.json +++ b/pages/workBench/components/approve/index.json @@ -1,15 +1,6 @@ { "component": true, "usingComponents": { - "van-field": "@vant/weapp/field/index", - "van-button": "@vant/weapp/button/index", - "search-select": "/components/searchSelect/index", - "van-empty": "@vant/weapp/empty/index", - "table": "/components/table/table", - "pagination": "/components/pagination/index", - "empty": "/components/empty/index", - "van-radio": "@vant/weapp/radio/index", - "van-radio-group": "@vant/weapp/radio-group/index", - "van-dialog": "@vant/weapp/dialog/index" + } } \ No newline at end of file diff --git a/pages/workBench/components/approve/index.wxml b/pages/workBench/components/approve/index.wxml index 219b909..a3dae99 100644 --- a/pages/workBench/components/approve/index.wxml +++ b/pages/workBench/components/approve/index.wxml @@ -1,114 +1,3 @@ - - - 选择 - - - - - 搜索 - - - - - - - - - 商户名字 - 充值金额 - 操作 - - - - - - - - - {{ item.tenement.shortName }} - {{ item.money }} - - - 查看详细 - - - - - - - - - - - - - - - - 同意 - 拒绝 - - - - - - - - - - diff --git a/pages/workBench/components/approve/index.wxss b/pages/workBench/components/approve/index.wxss index 0c73220..bf99be5 100644 --- a/pages/workBench/components/approve/index.wxss +++ b/pages/workBench/components/approve/index.wxss @@ -1,45 +1 @@ /* pages/workBench/components/approve/index.wxss */ -.table { - width: 810rpx; - -} - -.tableWrapper { - width: 100vw; - overflow-x: auto; -} - -.thead { - - display: flex; - flex-wrap: nowrap; - -} - -.thead .th { - padding: 20rpx; - white-space: nowrap; - text-align: center; - box-sizing: border-box; -} - -.primaryTextBtn { - color: #1989fa; - } - -.tbody { - width: 810rpx; -} - -.tbody .tr { - padding: 20rpx; - border-bottom: 1rpx solid #EEEEEE; - display: flex; - align-items: center; - flex-wrap: nowrap; -} - -.tbody .tr { - word-break: break-all; - text-align: center; -} diff --git a/pages/workBench/components/recharge/components/approve/index.js b/pages/workBench/components/recharge/components/approve/index.js new file mode 100644 index 0000000..b4b2c3a --- /dev/null +++ b/pages/workBench/components/recharge/components/approve/index.js @@ -0,0 +1,178 @@ +// pages/workBench/components/recharge/components/waitApprove/index.js +import { alertInfo, alertSuccess, loadingFunc } from "../../../../../../utils/index"; +import { getRechargeApproveList, rechargeApprove } from "../../../../../../service/recharge" +import request from "../../../../../../utils/request" +const { OK } = request + +// pages/workBench/components/record/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + status: Number + }, + + /** + * 组件的初始数据 + */ + data: { + keyword: "", + keywordTemp: "", + page: 1, + }, + lifetimes: { + attached() { + this.init(); + } + }, + /** + * 组件的方法列表 + */ + methods: { + onParkFocus(e) { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + onConfirm(e) { + const { data } = e.detail; + const that = this; + this.setData({ + parkName: data.name, + park: data.id, + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + this.onConcal(); + }, + onChangeKeyword(e) { + this.setData({ keywordTemp: e.detail }) + }, + onSearch() { + const that = this; + that.setData({ + keyword: that.data.keywordTemp + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + }, + async init() { + const { page, keyword, park, status } = this.data; + const { code, message, data, total } = await getRechargeApproveList({ park, page, keyword, status }) + if (code !== OK) { + alertInfo(message); + return; + } + this.setData({ + list: data, + total: total, + totalPage: Math.ceil(total / 20) + }) + }, + onChangeReason(e) { + this.setData({ + reason: e.detail, + }) + }, + onApproveClose() { + this.setData({ + reason: "", + approveShow: false, + }) + }, + onApproveConfirm() { + const { reason, record } = this.data; + const that = this; + if (!reason) { + alertInfo("请输入拒绝理由") + return; + } + loadingFunc(async () => { + const { code, message } = await rechargeApprove({ id: record, status: 1, reason }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已拒绝") + that.init(); + that.setData({ + reason: "", + approveShow: false, + record: "", + }) + }) + + }, + handleApprove(e) { + const status = e.currentTarget.dataset.status; + const that = this; + if (status === '1') { + this.setData({ + approveShow: true + }) + return; + } + const { record, list } = this.data; + const item = list.find(ele => ele.id === record) + + wx.showModal({ + title: '提示', + content: `您确认要同意${item?.tenement?.shortName || 当前记录}吗?`, + complete: async (res) => { + if (res.cancel) { + + } + if (res.confirm) { + loadingFunc(async () => { + const { code, message } = await rechargeApprove({ id: record, status: 0, }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已同意") + that.init(); + }) + + } + } + }) + }, + jumpToDetail(e) { + const { id } = e.currentTarget.dataset; + wx.navigateTo({ + url: '/pages/rechargeDetail/index?id=' + id, + }) + }, + async onChangePage(e) { + const page = e.detail.currentIndex; + const that = this; + this.setData({ + page + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + }, + onConcal() { + this.setData({ + show: false, + title: "", + type: "", + }) + }, + onChangeSelectRecharge(e) { + this.setData({ + record: e.detail + }) + } + } +}) \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.json b/pages/workBench/components/recharge/components/approve/index.json new file mode 100644 index 0000000..c992ee6 --- /dev/null +++ b/pages/workBench/components/recharge/components/approve/index.json @@ -0,0 +1,15 @@ +{ + "component": true, + "usingComponents": { + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index", + "search-select": "/components/searchSelect/index", + "van-empty": "@vant/weapp/empty/index", + "table": "/components/table/table", + "pagination": "/components/pagination/index", + "empty": "/components/empty/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "van-dialog": "@vant/weapp/dialog/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml new file mode 100644 index 0000000..998179f --- /dev/null +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -0,0 +1,113 @@ + + + + 选择 + + + + + + 搜索 + + + + + + + + + 商户名字 + 充值金额 + 操作 + + + + + + + + + {{ item.tenement.shortName }} + {{ item.money }} + + + 查看详细 + + + + + + + + + + + + + + + + 同意 + 拒绝 + + + + + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.wxss b/pages/workBench/components/recharge/components/approve/index.wxss new file mode 100644 index 0000000..311c82e --- /dev/null +++ b/pages/workBench/components/recharge/components/approve/index.wxss @@ -0,0 +1,45 @@ +/* pages/workBench/components/recharge/components/waitApprove/index.wxss */ +.table { + width: 810rpx; + +} + +.tableWrapper { + width: 100vw; + overflow-x: auto; +} + +.thead { + + display: flex; + flex-wrap: nowrap; + +} + +.thead .th { + padding: 20rpx; + white-space: nowrap; + text-align: center; + box-sizing: border-box; +} + +.primaryTextBtn { + color: #1989fa; + } + +.tbody { + width: 810rpx; +} + +.tbody .tr { + padding: 20rpx; + border-bottom: 1rpx solid #EEEEEE; + display: flex; + align-items: center; + flex-wrap: nowrap; +} + +.tbody .tr { + word-break: break-all; + text-align: center; +} diff --git a/pages/workBench/components/recharge/components/reharge/index.js b/pages/workBench/components/recharge/components/reharge/index.js new file mode 100644 index 0000000..34d4e18 --- /dev/null +++ b/pages/workBench/components/recharge/components/reharge/index.js @@ -0,0 +1,153 @@ +// pages/workBench/components/recharge/components/reharge/index.js + +import { handleRecharge } from "../../../../../../service/recharge"; +import { alertInfo, alertSuccess, loadingFunc } from "../../../../../../utils/index"; +import request from '../../../../../../utils/request' +const { OK } = request; + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + onParkFocus() { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + + onMeterFocus() { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "电表", + type: 'meter' + }) + }, + onConfirm(e) { + const { data, type, way } = e.detail; + switch(type) { + case "park": + this.setData({ + parkName: data.name, + park: data.id, + }) + break; + case "meter": + this.setData({ + meterName: `${data.meterNo}-${data.address}${data.tenement?.name ? '-' + data.tenement?.name : ''}`, + meter: data.id, + }) + break; + case "pay": + this.setData({ + payName: data, + way: way, + }); + break; + } + this.onConcal(); + }, + onConcal() { + this.setData({ + show: false, + title: "", + type: "", + }) + }, + onPayFocus() { + this.setData({ + show: true, + title: "付款方式", + type: 'pay' + }) + }, + onChangeMoney(e) { + this.setData({ money: e.detail }) + }, + onChangeVoucherNo(e) { + this.setData({ voucherNo: e.detail }) + }, + handleClear() { + this.setData({ + park: "", + parkName: "", + meter: "", + meterName: "", + way: "", + payName: "", + show: false, + title: "", + type: "", + money: null, + voucherNo: null + }) + }, + async handleSubmit() { + const that = this; + const { park, meter, money, way, voucherNo } = this.data; + if (!park) { + alertInfo("请选择园区"); + return; + } + if (!meter) { + alertInfo("请选择电表") + return; + } + if (!money) { + alertInfo("请输入金额") + return + } + if (!way && way !== 0) { + alertInfo("请选择付款方式") + return + } + if (!voucherNo) { + alertInfo("请输入凭证号") + return + } + loadingFunc(async () => { + const { code, message } = await handleRecharge(park, { + amount: `${money || ''}`, + meter, + paymentType: way, + voucherNo, + type: 0 + }) + if (code !== OK) { + alertInfo(message) + return + } + alertSuccess("充值成功") + setTimeout(() => { + that.handleClear() + that.setData({ + + }) + }, 500) + }) + + } + } +}) \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/reharge/index.json b/pages/workBench/components/recharge/components/reharge/index.json new file mode 100644 index 0000000..779a6e1 --- /dev/null +++ b/pages/workBench/components/recharge/components/reharge/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "search-select": "/components/searchSelect/index", + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/reharge/index.wxml b/pages/workBench/components/recharge/components/reharge/index.wxml new file mode 100644 index 0000000..bfb23c7 --- /dev/null +++ b/pages/workBench/components/recharge/components/reharge/index.wxml @@ -0,0 +1,81 @@ + + + + + 选择 + + + + + 选择 + + + + + + + 选择 + + + + + + + 确认 + 清空 + + diff --git a/pages/workBench/components/recharge/components/reharge/index.wxss b/pages/workBench/components/recharge/components/reharge/index.wxss new file mode 100644 index 0000000..c33c12d --- /dev/null +++ b/pages/workBench/components/recharge/components/reharge/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/recharge/components/reharge/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/recharge/index.js b/pages/workBench/components/recharge/index.js index 8cbb125..83eb4e8 100644 --- a/pages/workBench/components/recharge/index.js +++ b/pages/workBench/components/recharge/index.js @@ -1,8 +1,4 @@ -import { handleRecharge } from "../../../../service/recharge"; -import { alertInfo, alertSuccess, loadingFunc } from "../../../../utils/index"; -import request from '../../../../utils/request' -const { OK } = request; // pages/workBench/components/recharge/index.js Component({ @@ -18,135 +14,21 @@ Component({ * 组件的初始数据 */ data: { - show: false, + active: 0, + segmentedList: ['待审核', '已审核', '充值'], }, /** * 组件的方法列表 */ methods: { - onParkFocus(e) { + handleChange(e) { + console.log("change", e) + const { index } = e.detail; this.setData({ - show: true, - title: "园区", - type: 'park' + active: index }) }, - 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; - switch(type) { - case "park": - this.setData({ - parkName: data.name, - park: data.id, - }) - break; - case "meter": - this.setData({ - meterName: `${data.meterNo}-${data.address}${data.tenement?.name ? '-' + data.tenement?.name : ''}`, - meter: data.id, - }) - break; - case "pay": - this.setData({ - payName: data, - way: way, - }); - break; - } - this.onConcal(); - }, - onConcal() { - this.setData({ - show: false, - title: "", - type: "", - }) - }, - onPayFocus() { - this.setData({ - show: true, - title: "付款方式", - type: 'pay' - }) - }, - onChangeMoney(e) { - this.setData({ money: e.detail }) - }, - onChangeVoucherNo(e) { - this.setData({ voucherNo: e.detail }) - }, - handleClear() { - this.setData({ - park: "", - parkName: "", - meter: "", - meterName: "", - way: "", - payName: "", - show: false, - title: "", - type: "", - money: null, - voucherNo: null - }) - }, - async handleSubmit() { - const that = this; - const { park, meter, money, way, voucherNo } = this.data; - if (!park) { - alertInfo("请选择园区"); - return; - } - if (!meter) { - alertInfo("请选择电表") - return; - } - if (!money) { - alertInfo("请输入金额") - return - } - if (!way && way !== 0) { - alertInfo("请选择付款方式") - return - } - if (!voucherNo) { - alertInfo("请输入凭证号") - return - } - loadingFunc(async () => { - const { code, message } = await handleRecharge(park, { - amount: `${money || ''}`, - meter, - paymentType: way, - voucherNo, - type: 0 - }) - if (code !== OK) { - alertInfo(message) - return - } - alertSuccess("充值成功") - setTimeout(() => { - that.handleClear() - that.setData({ - - }) - }, 500) - }) - - } + } }) \ No newline at end of file diff --git a/pages/workBench/components/recharge/index.json b/pages/workBench/components/recharge/index.json index 779a6e1..a540c5c 100644 --- a/pages/workBench/components/recharge/index.json +++ b/pages/workBench/components/recharge/index.json @@ -1,9 +1,9 @@ { "component": true, "usingComponents": { - "van-popup": "@vant/weapp/popup/index", - "search-select": "/components/searchSelect/index", - "van-field": "@vant/weapp/field/index", - "van-button": "@vant/weapp/button/index" + "van-button": "@vant/weapp/button/index", + "segmented": "/components/Segmented/index", + "recharge": "./components/reharge/index", + "approve": "./components/approve/index" } } \ No newline at end of file diff --git a/pages/workBench/components/recharge/index.wxml b/pages/workBench/components/recharge/index.wxml index f337f3a..432691f 100644 --- a/pages/workBench/components/recharge/index.wxml +++ b/pages/workBench/components/recharge/index.wxml @@ -1,81 +1,10 @@ - - - - 选择 - - - - - 选择 - - - - - - - 选择 - - - - - - - 确认 - 清空 - - + + + + \ No newline at end of file diff --git a/pages/workBench/index.js b/pages/workBench/index.js index e257546..99e26d3 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 3 + active: 2 }, /** diff --git a/service/recharge.js b/service/recharge.js index ed18b7b..e53d768 100644 --- a/service/recharge.js +++ b/service/recharge.js @@ -34,8 +34,8 @@ export const handleRecharge = async function(park, data) { } // 获取后台审核列表 -export const getRechargeApproveList = async function({park = "", page, keyword}) { - return await GET(`/wx/getTopExamineList?park=${park}&page=${page}&keyword=${replaceSpecialIcon(keyword)}`) +export const getRechargeApproveList = async function({park = "", page, keyword, status}) { + return await GET(`/wx/getTopExamineList?park=${park}&page=${page}&keyword=${replaceSpecialIcon(keyword)}&status=${status}`) } // 对公审核 diff --git a/service/tenement.js b/service/tenement.js index e3f360c..5f25a96 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -38,3 +38,8 @@ export const updateTenement = async function(pid, data) { export const unbindMeter = async function(pid, tid, code) { return await POST(`/tenement/${pid}/${tid}/binding/${code}/unbind`) } + +// 获取b端用户 +export const getTenementUsers = async function(id) { + return await GET(`/records/getWxUserList`); +} \ No newline at end of file From 16a03fbb4b784f0c8039f97069e72e2345ff890a Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Thu, 20 Feb 2025 17:28:45 +0800 Subject: [PATCH 19/60] =?UTF-8?q?=E6=9A=82=E5=AD=98=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelect/index.js | 7 +-- components/searchSelect/index.wxml | 2 +- .../account/components/editModal/index.js | 38 +++++++++------ .../account/components/editModal/index.wxml | 13 +++-- pages/workBench/components/account/index.js | 48 +++++++++++++++++-- pages/workBench/components/account/index.wxml | 33 +++++++------ pages/workBench/components/account/index.wxss | 6 ++- .../workBench/components/recharge/index.wxml | 4 +- pages/workBench/index.js | 2 +- service/tenement.js | 21 ++++++-- 10 files changed, 126 insertions(+), 48 deletions(-) diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index 069b1db..6efd65e 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -3,7 +3,7 @@ import { getParkSimpleMeterList } from "../../service/meter" import { alertInfo } from "../../utils/index"; import request from "../../utils/request" import { payWays, feeType } from "../../utils/data"; -import { getTenementList } from "../../service/tenement"; +import { getTenementList, getWxTenementList } from "../../service/tenement"; const { OK } = request; // components/searchSelect/index.js @@ -17,6 +17,7 @@ Component({ type: String, show: Boolean, park: String, + isBack: Boolean, }, observers: { "show,type": function(newShow, newType) { @@ -120,8 +121,8 @@ Component({ }) }, async onSearchTenement() { - const { searchText = "", park } = this.data; - const { code, message, data = [] } = await getTenementList({keyword: searchText, park}); + const { searchText = "", park, isBack } = this.data; + const { code, message, data = [] } = isBack ? await getWxTenementList({keyword: searchText, park}) : await getTenementList({keyword: searchText, park}); if (code !== OK) { alertInfo(message) return diff --git a/components/searchSelect/index.wxml b/components/searchSelect/index.wxml index 8e9a2f3..fd94b2e 100644 --- a/components/searchSelect/index.wxml +++ b/components/searchSelect/index.wxml @@ -8,7 +8,7 @@ diff --git a/pages/workBench/components/account/components/editModal/index.js b/pages/workBench/components/account/components/editModal/index.js index 898515d..1eaa7a4 100644 --- a/pages/workBench/components/account/components/editModal/index.js +++ b/pages/workBench/components/account/components/editModal/index.js @@ -1,4 +1,5 @@ import { alertInfo, alertSuccess } from "../../../../../../utils/index"; +import { createTenementWxUser } from "../../../../../../service/tenement"; import request from "../../../../../../utils/request" const { OK } = request // pages/workBench/components/account/components/editModal/index.js @@ -11,15 +12,16 @@ Component({ type: String, title: String, visible: Boolean, - onOk: Function, onCancel: Function, + park: String, + tenement: String, }, /** * 组件的初始数据 */ data: { - + data: { name: "", phone: "" } }, /** @@ -27,24 +29,32 @@ Component({ */ methods: { async onSubmit() { - const { phone, name } = this.data; - if (!phone) { + const { data = {}, tenement, park } = this.data; + if (!data.phone) { alertInfo("请输入手机号") return } - if (!name) { + if (!data.name) { alertInfo("请输入昵称") return } - // const { code, message } = await update() - // if (code !== OK) { - // alertInfo(message) - // return; - // } - // alertSuccess("操作成功") - // if (this.onOk) { - // this.onOk() - // } + + const { code, message } = await createTenementWxUser({ ...data, tenement, park }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("操作成功") + this.triggerEvent("ok") + }, + onChange(e) { + console.log('e', e) + const { name } = e.currentTarget.dataset; + const newData = this.data.data; + newData[name] = e.detail; + this.setData({ + data: newData, + }) } } }) \ No newline at end of file diff --git a/pages/workBench/components/account/components/editModal/index.wxml b/pages/workBench/components/account/components/editModal/index.wxml index 5a9a1f5..900e421 100644 --- a/pages/workBench/components/account/components/editModal/index.wxml +++ b/pages/workBench/components/account/components/editModal/index.wxml @@ -8,21 +8,24 @@ > diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index 7b6173b..81299da 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -1,4 +1,9 @@ // pages/workBench/components/account/index.js +import request from "../../../../utils/request" +import { getTenementBackInfo, getTenementUsers } from "../../../../service/tenement" +import { alertInfo } from "../../../../utils/index" +const { OK } = request + Component({ /** @@ -12,7 +17,8 @@ Component({ * 组件的初始数据 */ data: { - + list: [], + tenementInfo: {}, }, /** @@ -39,6 +45,7 @@ Component({ }) }, onConfirm(e) { + const that = this; const { type, data } = e.detail; switch(type) { case "park": @@ -53,10 +60,18 @@ Component({ tenement: data.id, tenementName: data.name, show: false, + }, () => { + that.initUserList(); + that.getTenementInfo(); }) break; } }, + onConcal() { + this.setData({ + show: false, + }) + }, handleDelete(e) { const {} = e; wx.showModal({ @@ -73,9 +88,34 @@ Component({ } }) }, - async init() { - const { tenementName } = this.data; - const { code, message, data } = await + async getTenementInfo() { + const { tenement, park } = this.data; + const { code, message, tenement: data } = await getTenementBackInfo(park, tenement) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + tenementInfo: data, + }) + }, + async initUserList() { + const { tenementName, park } = this.data; + const { code, message, data } = await getTenementUsers({ park, keyword: tenementName }); + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + list: data, + }) + }, + handleAddSon() { + this.setData({ + visible: true, + type: "add", + title: "新建子账号" + }) } } }) \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index 06804ad..115801a 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -30,30 +30,28 @@ - + + 添加子账号 + 修改主账号 + @@ -81,18 +79,25 @@ - - 添加子账号 - 修改主账号 - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxss b/pages/workBench/components/account/index.wxss index 80816c6..8a693b1 100644 --- a/pages/workBench/components/account/index.wxss +++ b/pages/workBench/components/account/index.wxss @@ -1 +1,5 @@ -/* pages/workBench/components/account/index.wxss */ \ No newline at end of file +/* pages/workBench/components/account/index.wxss */ + +.operateBox { + margin: 20rpx; +} \ No newline at end of file diff --git a/pages/workBench/components/recharge/index.wxml b/pages/workBench/components/recharge/index.wxml index 432691f..6a29299 100644 --- a/pages/workBench/components/recharge/index.wxml +++ b/pages/workBench/components/recharge/index.wxml @@ -5,6 +5,6 @@ bind:change="handleChange" /> - - + + \ No newline at end of file diff --git a/pages/workBench/index.js b/pages/workBench/index.js index 99e26d3..e257546 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 2 + active: 3 }, /** diff --git a/service/tenement.js b/service/tenement.js index 5f25a96..3401b24 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -7,6 +7,11 @@ export const getTenementList = async function({ park, keyword }) { return await GET(`/wx/getTenementList?park=${park}&keyword=${replaceSpecialIcon(keyword)}`); } +// 后台用户获取园区id模糊搜索商户列表 +export const getWxTenementList = async function({ park, keyword }) { + return await GET(`/vx/getTenementList?park=${park}&keyword=${replaceSpecialIcon(keyword)}`); +} + // 获取名下所有的商户 export const getOwnTenementList = async function() { return await GET(`/wx/getOwnTenements`); @@ -40,6 +45,16 @@ export const unbindMeter = async function(pid, tid, code) { } // 获取b端用户 -export const getTenementUsers = async function(id) { - return await GET(`/records/getWxUserList`); -} \ No newline at end of file +export const getTenementUsers = async function({ park, keyword }) { + return await GET(`/records/getWxUserList?park=${park}&keyword=${keyword}`); +} + +// c端获取指定商户的详细信息 +export const getTenementBackInfo = async (pid, tid) => { + return await GET(`/vx/${pid}/${tid}`); +} + +// 新增用户 +export const createTenementWxUser = async function(data) { + return await POST(`/wx/createUser`, data) +} From b078bbf26a1d04811ca546440f52e746402d9601 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Fri, 21 Feb 2025 08:41:46 +0800 Subject: [PATCH 20/60] =?UTF-8?q?=E6=9A=82=E5=AD=98=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelect/index.js | 7 ++- .../account/components/editModal/index.js | 24 +++++++- .../account/components/editModal/index.wxml | 1 + pages/workBench/components/account/index.js | 55 ++++++++++++++++--- pages/workBench/components/account/index.json | 3 +- pages/workBench/components/account/index.wxml | 22 ++++---- pages/workBench/components/account/index.wxss | 44 +++++++++++++++ pages/workBench/components/tenement/index.js | 26 ++++++++- .../workBench/components/tenement/index.wxml | 12 +--- pages/workBench/index.js | 2 +- service/user.js | 5 ++ 11 files changed, 168 insertions(+), 33 deletions(-) diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index 6efd65e..00301d8 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -60,7 +60,12 @@ Component({ onConfirm(event) { const { index } = event.detail; const { list = [], type } = this.data; + console.log("index", index) const item = list[index]; + if (!item) { + alertInfo("请选择一项") + return + } this.setData({ columns: [], list: [], @@ -134,7 +139,7 @@ Component({ }, async onSearchBuilding() { const { park } = this.data; - const { code, message, data = [] } = await getParkBuildingList(park); + const { code, message, buildings: data = [] } = await getParkBuildingList(park); if (code !== OK) { alertInfo(message) return diff --git a/pages/workBench/components/account/components/editModal/index.js b/pages/workBench/components/account/components/editModal/index.js index 1eaa7a4..090a41e 100644 --- a/pages/workBench/components/account/components/editModal/index.js +++ b/pages/workBench/components/account/components/editModal/index.js @@ -16,12 +16,28 @@ Component({ park: String, tenement: String, }, - + observers: { + "name": function(newValue) { + const newData = this.data; + newData.name = newValue + this.setData({ data: newData }) + }, + "id": function(newValue) { + const newData = this.data; + newData.id = newValue + this.setData({ data: newData }) + }, + "phone": function(newValue) { + const newData = this.data; + newData.phone = newValue + this.setData({ data: newData }) + } + }, /** * 组件的初始数据 */ data: { - data: { name: "", phone: "" } + data: { name: "", phone: "", id: "" } }, /** @@ -42,6 +58,7 @@ Component({ const { code, message } = await createTenementWxUser({ ...data, tenement, park }) if (code !== OK) { alertInfo(message) + this.triggerEvent("cancel") return; } alertSuccess("操作成功") @@ -55,6 +72,9 @@ Component({ this.setData({ data: newData, }) + }, + onCancel() { + this.triggerEvent("cancel") } } }) \ No newline at end of file diff --git a/pages/workBench/components/account/components/editModal/index.wxml b/pages/workBench/components/account/components/editModal/index.wxml index 900e421..cbf0761 100644 --- a/pages/workBench/components/account/components/editModal/index.wxml +++ b/pages/workBench/components/account/components/editModal/index.wxml @@ -5,6 +5,7 @@ show="{{ visible }}" show-cancel-button bind:confirm="onSubmit" + bind:cancel="onCancel" > { + content: `确认要移除${name}吗?`, + complete: async (res) => { if (res.cancel) { } if (res.confirm) { - + const { code, message } = await removeUser(id, tenement) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("删除成功") + that.initUserList(); } } }) }, + onEditConfirm() { + this.initUserList() + this.handleCancel(); + }, async getTenementInfo() { const { tenement, park } = this.data; const { code, message, tenement: data } = await getTenementBackInfo(park, tenement) @@ -100,8 +114,8 @@ Component({ }) }, async initUserList() { - const { tenementName, park } = this.data; - const { code, message, data } = await getTenementUsers({ park, keyword: tenementName }); + const { tenement } = this.data; + const { code, message, data } = await getBackApproveList(tenement, 1); if (code !== OK) { alertInfo(message) return; @@ -116,6 +130,31 @@ Component({ type: "add", title: "新建子账号" }) + }, + handleChangeMain() { + const { list = [] } = this.data; + const main = list?.find(item => item.isAdmin) + if (!main) { + return + } + this.setData({ + visible: true, + type: "update", + title: "编辑管理员", + phone: main.phone, + name: main.name, + id: main.id, + }) + }, + handleCancel() { + console.log("-------------") + this.setData({ + visible: false, + type: "", + phone: "", + name: "", + id: "", + }) } } }) \ No newline at end of file diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json index 57b9106..5f3de68 100644 --- a/pages/workBench/components/account/index.json +++ b/pages/workBench/components/account/index.json @@ -11,6 +11,7 @@ "van-radio": "@vant/weapp/radio/index", "van-radio-group": "@vant/weapp/radio-group/index", "van-tag": "@vant/weapp/tag/index", - "edit-modal": "./components/editModal/index" + "edit-modal": "./components/editModal/index", + "van-tag": "@vant/weapp/tag/index" } } \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index 115801a..0b6ea3e 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -50,7 +50,7 @@ /> 添加子账号 - 修改主账号 + 修改主账号 @@ -58,20 +58,21 @@ 序号 昵称 - 手机号 - 操作 + 手机号 + 操作 - {{ index }} - {{ item.tenement.shortName }} - {{ item.money }} - - + {{ itemIndex + 1 }} + {{ item.name }} + {{ item.phone }} + + 移除 + 管理员 @@ -81,7 +82,7 @@ - + \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxss b/pages/workBench/components/account/index.wxss index 8a693b1..e07b279 100644 --- a/pages/workBench/components/account/index.wxss +++ b/pages/workBench/components/account/index.wxss @@ -2,4 +2,48 @@ .operateBox { margin: 20rpx; +} + +.table { + width: 890rpx; + +} + +.classWrapper { + width: 100vw; + overflow-x: auto; +} + +.thead { + display: flex; + flex-wrap: nowrap; + border-bottom: 1rpx solid #EEEEEE; +} + +.thead .th { + padding: 20rpx; + white-space: nowrap; + text-align: center; + box-sizing: border-box; + +} + +.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; +} +.primaryTextBtn { + color: #1989fa; } \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index 9ed03a7..ec7c5da 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -1,5 +1,7 @@ import { alertInfo } from "../../../../utils/index"; - +import { getTenementBackInfo, } from "../../../../service/tenement" +import request from "../../../../utils/request" +const { OK } = request // pages/workBench/components/tenement/index.js Component({ @@ -34,6 +36,7 @@ Component({ }, onTenementFocus(e) { const { park } = this.data; + const that = this; if (!park) { alertInfo("请先选择园区") return; @@ -46,9 +49,21 @@ Component({ }, async init() { + }, + async getTenementInfo() { + const { tenement, park } = this.data; + const { code, message, tenement: data } = await getTenementBackInfo(park, tenement) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + tenementInfo: data, + }) }, onConfirm(e) { const { type, data } = e.detail; + const that = this; switch(type) { case "park": this.setData({ @@ -57,6 +72,15 @@ Component({ show: false, }) break; + case "tenement": + this.setData({ + tenement: data.id, + tenementName: data.name, + show: false, + } , () => { + that.getTenementInfo(); + }) + break; } }, startKh() { diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index c356208..2f18178 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -37,26 +37,20 @@ - Date: Fri, 21 Feb 2025 15:47:36 +0800 Subject: [PATCH 21/60] =?UTF-8?q?=E6=9A=82=E5=AD=98=E5=95=86=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelect/index.js | 12 +++ components/searchSelect/index.wxml | 43 ++++----- pages/handleLogin/index.js | 4 +- pages/handleLogin/index.wxml | 2 +- .../account/components/editModal/index.js | 39 ++++---- pages/workBench/components/account/index.js | 13 +-- pages/workBench/components/account/index.json | 3 +- pages/workBench/components/account/index.wxml | 13 +-- .../recharge/components/approve/index.js | 4 +- .../recharge/components/approve/index.wxml | 2 +- .../recharge/components/reharge/index.js | 4 +- .../recharge/components/reharge/index.wxml | 2 +- pages/workBench/components/record/index.js | 4 +- pages/workBench/components/record/index.wxml | 2 +- .../tenement/components/bindMeter/index.js | 3 + .../tenement/components/bindMeter/index.wxml | 1 + .../components/createTenement/index.wxml | 2 +- .../tenement/components/kaihu/index.js | 89 ++++++++++++++++--- .../tenement/components/kaihu/index.wxml | 36 ++++++-- pages/workBench/components/tenement/index.js | 83 ++++++++++++++--- .../workBench/components/tenement/index.json | 3 +- .../workBench/components/tenement/index.wxml | 26 ++++-- .../workBench/components/tenement/index.wxss | 46 +++++++++- service/meter.js | 6 +- service/tenement.js | 11 ++- service/user.js | 4 +- 26 files changed, 339 insertions(+), 118 deletions(-) diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index 00301d8..a11feac 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -33,6 +33,7 @@ Component({ columns: [], searchText: "", payWays, + feeType, }, lifetimes: { attached() { @@ -84,6 +85,17 @@ Component({ }) this.triggerEvent("confirm", { data: item, way: index, type } ); }, + onFeeTypeConfirm(event) { + const { index } = event.detail; + const { feeType = [], type } = this.data; + const item = feeType[index]; + this.setData({ + columns: [], + list: [], + searchText: "" + }) + this.triggerEvent("confirm", { data: item, way: index, type } ); + }, onSearch() { const { type } = this.data; switch(type) { diff --git a/components/searchSelect/index.wxml b/components/searchSelect/index.wxml index fd94b2e..2030f47 100644 --- a/components/searchSelect/index.wxml +++ b/components/searchSelect/index.wxml @@ -5,7 +5,27 @@ position="bottom" z-index="100000" > - + + + + + + + - - - - - - + diff --git a/pages/workBench/components/account/components/editModal/index.js b/pages/workBench/components/account/components/editModal/index.js index 090a41e..82a8853 100644 --- a/pages/workBench/components/account/components/editModal/index.js +++ b/pages/workBench/components/account/components/editModal/index.js @@ -15,23 +15,14 @@ Component({ onCancel: Function, park: String, tenement: String, + parentPhone:String, + parentName:String, + parentId:String, }, observers: { - "name": function(newValue) { - const newData = this.data; - newData.name = newValue - this.setData({ data: newData }) + "parentName,parentId,parentPhone": function(newName, newId, newPhone) { + this.setData({ data: { name: newName, id: newId, phone: newPhone } }) }, - "id": function(newValue) { - const newData = this.data; - newData.id = newValue - this.setData({ data: newData }) - }, - "phone": function(newValue) { - const newData = this.data; - newData.phone = newValue - this.setData({ data: newData }) - } }, /** * 组件的初始数据 @@ -45,7 +36,7 @@ Component({ */ methods: { async onSubmit() { - const { data = {}, tenement, park } = this.data; + const { data = {}, tenement, park, editType } = this.data; if (!data.phone) { alertInfo("请输入手机号") return @@ -54,18 +45,20 @@ Component({ alertInfo("请输入昵称") return } - - const { code, message } = await createTenementWxUser({ ...data, tenement, park }) - if (code !== OK) { - alertInfo(message) - this.triggerEvent("cancel") + if (editType === 'add') { + const { code, message } = await createTenementWxUser({ ...data, tenement, park }) + if (code !== OK) { + alertInfo(message) + this.triggerEvent("cancel") + return; + } + alertSuccess("操作成功") + this.triggerEvent("ok") return; } - alertSuccess("操作成功") - this.triggerEvent("ok") + }, onChange(e) { - console.log('e', e) const { name } = e.currentTarget.dataset; const newData = this.data.data; newData[name] = e.detail; diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index 470ba4a..6039a48 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -69,7 +69,7 @@ Component({ break; } }, - onConcal() { + onCancel() { this.setData({ show: false, }) @@ -133,21 +133,22 @@ Component({ }, handleChangeMain() { const { list = [] } = this.data; - const main = list?.find(item => item.isAdmin) + const main = list?.find(item => item.Permissions) if (!main) { + alertInfo("没有主账号") return } + console.log("main", main) this.setData({ visible: true, type: "update", title: "编辑管理员", - phone: main.phone, - name: main.name, - id: main.id, + phone: main.WechatPhone, + name: main.WechatUserName, + id: main.WechatUserID, }) }, handleCancel() { - console.log("-------------") this.setData({ visible: false, type: "", diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json index 5f3de68..57b9106 100644 --- a/pages/workBench/components/account/index.json +++ b/pages/workBench/components/account/index.json @@ -11,7 +11,6 @@ "van-radio": "@vant/weapp/radio/index", "van-radio-group": "@vant/weapp/radio-group/index", "van-tag": "@vant/weapp/tag/index", - "edit-modal": "./components/editModal/index", - "van-tag": "@vant/weapp/tag/index" + "edit-modal": "./components/editModal/index" } } \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index 0b6ea3e..e5f1334 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -66,10 +66,10 @@ {{ itemIndex + 1 }} - {{ item.name }} - {{ item.phone }} + {{ item.WechatUserName }} + {{ item.WechatPhone }} - + 移除 管理员 @@ -83,7 +83,7 @@ - + {{phone}} {{name}} \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.js b/pages/workBench/components/recharge/components/approve/index.js index b4b2c3a..f489f24 100644 --- a/pages/workBench/components/recharge/components/approve/index.js +++ b/pages/workBench/components/recharge/components/approve/index.js @@ -49,7 +49,7 @@ Component({ await that.init(); }) }) - this.onConcal(); + this.onCancel(); }, onChangeKeyword(e) { this.setData({ keywordTemp: e.detail }) @@ -162,7 +162,7 @@ Component({ }) }) }, - onConcal() { + onCancel() { this.setData({ show: false, title: "", diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index 998179f..4707c73 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -93,7 +93,7 @@ type="{{type}}" park="{{park}}" bindconfirm="onConfirm" - bindcancel="onConcal" + bindcancel="onCancel" /> diff --git a/pages/workBench/components/record/index.js b/pages/workBench/components/record/index.js index 31ed2f9..3e2c0e7 100644 --- a/pages/workBench/components/record/index.js +++ b/pages/workBench/components/record/index.js @@ -66,7 +66,7 @@ Component({ break; } - this.onConcal(); + this.onCancel(); }, onChangeKeyword(e) { this.setData({ keywordTemp: e.detail }) @@ -108,7 +108,7 @@ Component({ }) }) }, - onConcal() { + onCancel() { this.setData({ show: false, title: "", diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index 8a077ff..6c85983 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -146,6 +146,6 @@ type="{{type}}" park="{{park}}" bindconfirm="onConfirm" - bindcancel="onConcal" + bindcancel="onCancel" wx:if="{{show}}" /> diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js index f0cb820..5569bdb 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.js +++ b/pages/workBench/components/tenement/components/bindMeter/index.js @@ -31,5 +31,8 @@ Component({ type: 'meter' }) }, + onClose() { + this.triggerEvent("close") + } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml index 491582c..017d86b 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.wxml +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml @@ -5,6 +5,7 @@ show="{{ show }}" show-cancel-button bind:confirm="onSubmit" + bind:close="onClose" > \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/kaihu/index.js b/pages/workBench/components/tenement/components/kaihu/index.js index 34326d4..f51c36d 100644 --- a/pages/workBench/components/tenement/components/kaihu/index.js +++ b/pages/workBench/components/tenement/components/kaihu/index.js @@ -1,6 +1,9 @@ // pages/workBench/components/tenement/components/kaihu/index.js -import { alertInfo } from "../../../../../../utils/index" - +import { alertInfo, alertSuccess } from "../../../../../../utils/index" +import { createBackTenement, updateTenementBackInfo } from "../../../../../../service/tenement" +import request from "../../../../../../utils/request" +import { payWays, feeType as feeTypeList } from "../../../../../../utils/data"; +const { OK } = request; Component({ /** @@ -9,14 +12,21 @@ Component({ properties: { park: String, visible: Boolean, + defaultValue: Object, + editType: String, + title: String, + }, + observers: { + 'defaultValue': function(defaultValue) { + const { fullName, shortName, phone, id, feeType, address, building, buildingName, contact,} = defaultValue; + this.setData({ + name: fullName, + shortName, + phone, id, feeType, address, building, buildingName, contact, + feeTypeName: feeTypeList[feeType] + }) + } }, - // observers: { - // 'visible': function(newVisible) { - // this.setData({ - // show: newVisible - // }) - // } - // }, /** * 组件的初始数据 */ @@ -48,10 +58,67 @@ Component({ } this.setData({ show: true, - title: "建筑", - type: 'building' + title: "收费类型", + type: 'feeType' }) }, + onConfirm(e) { + const { type, data, way } = e.detail; + switch(type) { + case "building": + this.setData({ + building: data.id, + buildingName: data.name, + show: false, + }) + return; + case "feeType": + this.setData({ + feeTypeName: data, + feeType: way, + show: false, + }) + } + }, + + onCancel() { + this.setData({ show: false }) + }, + onClose() { + this.triggerEvent("close") + }, + onChange(e) { + const { name } = e.currentTarget.dataset; + this.setData({ + [name]: e.detail + }) + }, + clear() { + this.setData({ + name: "", shortName: "", address: "", contact: "", phone: "", + building: "", feeType: "", buildingName: "", feeTypeName: "", id, + }) + }, + async onSubmit() { + const { name, shortName, address, contact, phone, building, feeType, park, editType, id } = this.data; + if (editType === "add") { + const { code, message } = await createBackTenement(park, { name, shortName, address, contact, phone, building, feeType }) + if (code !== OK) { + alertInfo(message) + return + } + alertSuccess("开户成功") + this.triggerEvent("ok") + return; + } + const { code, message } = await updateTenementBackInfo(park, id, { name, shortName, address, contact, phone, building, feeType }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("编辑成功") + this.triggerEvent("ok") + } }, }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/kaihu/index.wxml b/pages/workBench/components/tenement/components/kaihu/index.wxml index 2afba3b..8580103 100644 --- a/pages/workBench/components/tenement/components/kaihu/index.wxml +++ b/pages/workBench/components/tenement/components/kaihu/index.wxml @@ -1,56 +1,73 @@ @@ -58,9 +75,10 @@ @@ -77,5 +95,5 @@ type="{{type}}" park="{{park}}" bindconfirm="onConfirm" - bindcancel="onConcal" + bindcancel="onCancel" /> \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index ec7c5da..b85be1b 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -1,5 +1,6 @@ -import { alertInfo } from "../../../../utils/index"; -import { getTenementBackInfo, } from "../../../../service/tenement" +import { alertInfo, alertSuccess } from "../../../../utils/index"; +import { getTenementBackInfo, unbindMeter, } from "../../../../service/tenement" +import { getBackTenementMeters, } from "../../../../service/meter" import request from "../../../../utils/request" const { OK } = request // pages/workBench/components/tenement/index.js @@ -16,12 +17,10 @@ Component({ * 组件的初始数据 */ data: { - - }, - lifetimes: { - ready() { - console.log("this.data", this.data) - } + defaultValue: {}, + editType: "", + meterList: [], + // bindMeter }, /** * 组件的方法列表 @@ -79,18 +78,76 @@ Component({ show: false, } , () => { that.getTenementInfo(); + that.getTenementMeters(); }) break; } }, + onCancel() { + this.setData({ + show: false, + }) + }, startKh() { this.setData({ - kaihuVisible: true + kaihuVisible: true, + editType: "add", + title: "开户" + }) + }, + startUpdateInfo() { + const { tenementInfo } = this.data; + this.setData({ + kaihuVisible: true, + defaultValue: tenementInfo, + editType: "update", + title: "开户" + }) + }, + async getTenementMeters() { + const { park, tenement } = this.data; + const { code, message, data } = await getBackTenementMeters(park, tenement) + if (code !== OK) { + alertInfo(message) + return + } + this.setData({ meterList: data }); + }, + onKaihuClose() { + this.setData({ + kaihuVisible: false, + defaultValue: {}, + title: "编辑" + }) + }, + onKaihuConfirm() { + this.getTenementInfo(); + this.onKaihuClose(); + }, + unbind(e) { + const that = this; + const { park, tenement } = this.data; + const { address, id } = e.currentTarget.dataset; + wx.showModal({ + title: '提示', + content: `确认要解绑${address}吗?`, + complete: async (res) => { + if (res.cancel) { + + } + + if (res.confirm) { + const { code, message, } = await unbindMeter(park, tenement, id); + if (code !== OK) { + alertInfo(message) + return + } + alertSuccess("解绑成功") + that.getTenementMeters(); + return + } + } }) - // const { park = '', parkName = '', tenement = '', tenementName = '' } = this.data; - // wx.navigateTo({ - // url: `/pages/workBench/components/tenement/components/createTenement/index?park=${park}&tenement=${tenement}&parkName=${parkName}&${tenementName}=${tenementName}`, - // }) } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.json b/pages/workBench/components/tenement/index.json index 225bd8e..8f84a70 100644 --- a/pages/workBench/components/tenement/index.json +++ b/pages/workBench/components/tenement/index.json @@ -5,6 +5,7 @@ "van-button": "@vant/weapp/button/index", "search-select": "/components/searchSelect/index", "van-empty": "@vant/weapp/empty/index", - "kaihu": "./components/kaihu/index" + "kaihu": "./components/kaihu/index", + "bindMeter": "./components/bindMeter/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index 2f18178..da11c81 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -55,22 +55,22 @@ readonly title-width="140rpx" /> - + 电表地址 - SN + SN 操作 - + - {{ item.tenement.shortName }} - {{ item.money }} + {{ item.address }} + {{ item.meterSn }} - + 解绑 @@ -89,6 +89,16 @@ type="{{type}}" park="{{park}}" bindconfirm="onConfirm" - bindcancel="onConcal" + bindcancel="onCancel" /> - \ No newline at end of file + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxss b/pages/workBench/components/tenement/index.wxss index 5de07ae..0f66826 100644 --- a/pages/workBench/components/tenement/index.wxss +++ b/pages/workBench/components/tenement/index.wxss @@ -1 +1,45 @@ -/* pages/workBench/components/tenement/index.wxss */ \ No newline at end of file +/* pages/workBench/components/tenement/index.wxss */ + +.table { + width: 890rpx; +} + +.classWrapper { + width: 100vw; + overflow-x: auto; +} + +.thead { + display: flex; + flex-wrap: nowrap; + border-bottom: 1rpx solid #EEEEEE; +} + +.thead .th { + padding: 20rpx; + white-space: nowrap; + text-align: center; + box-sizing: border-box; + +} + +.tbody { + 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; +} + +.primaryTextBtn { + color: #1989fa; +} \ No newline at end of file diff --git a/service/meter.js b/service/meter.js index efea844..1a3f412 100644 --- a/service/meter.js +++ b/service/meter.js @@ -27,8 +27,10 @@ export const getParkSimpleMeterList = async function({park = "", keyword = "", p return await GET(`/work/getWorkMeter?page=${page}&park=${park}&keyword=${replaceSpecialIcon(keyword)}`); } - - +// 获取商户下的电表,后台 +export const getBackTenementMeters = async function(park, tenement) { + return await GET(`/vx/getWorkMeterDetails?park=${park}&tenement=${tenement}`); +} // 拉合闸 export const handleOperateMeterSwitch = async function({ ids = [], status }) { diff --git a/service/tenement.js b/service/tenement.js index 3401b24..20eb2d2 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -41,7 +41,7 @@ export const updateTenement = async function(pid, data) { } // 解绑电表 export const unbindMeter = async function(pid, tid, code) { - return await POST(`/tenement/${pid}/${tid}/binding/${code}/unbind`) + return await PUT(`/tenement/${pid}/${tid}/binding/${code}/unbind`) } // 获取b端用户 @@ -58,3 +58,12 @@ export const getTenementBackInfo = async (pid, tid) => { export const createTenementWxUser = async function(data) { return await POST(`/wx/createUser`, data) } + +// 创建商户 +export const createBackTenement = async function(pid, data) { + return await POST(`/vx/tenement/${pid}`, data) +} +// 修改商户信息 +export const updateTenementBackInfo = async function(pid, tid, data) { + return await PUT(`/vx/${pid}/${tid}`, data) +} \ No newline at end of file diff --git a/service/user.js b/service/user.js index 9f8199e..d72e803 100644 --- a/service/user.js +++ b/service/user.js @@ -71,6 +71,6 @@ export const getQuestionList = async function(page) { } // 获取扫描二维码的列表 -export const getBackApproveList = async function(tenement, status=0) { - return await GET(`/wx/getApproveList?status=${status}&tenement=${tenement}`); +export const getBackApproveList = async function(tenement) { + return await GET(`/wx/getWorkUserList?tenement=${tenement}`); } \ No newline at end of file From d6e93d9f368bca7eec731a5b4b7df89a3da5fbc2 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 24 Feb 2025 17:35:18 +0800 Subject: [PATCH 22/60] =?UTF-8?q?=E6=9A=82=E5=AD=98c=E7=AB=AF=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E7=AE=A1=E7=90=86=E5=92=8C=E5=95=86=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelect/index.js | 4 +- components/searchSelect/index.wxml | 1 + .../account/components/editModal/index.js | 19 +++-- .../components/updatePhoneModal/index.js | 62 ++++++++++++++ .../components/updatePhoneModal/index.json | 8 ++ .../components/updatePhoneModal/index.wxml | 23 ++++++ .../components/updatePhoneModal/index.wxss | 1 + pages/workBench/components/account/index.js | 34 +++++--- pages/workBench/components/account/index.json | 3 +- pages/workBench/components/account/index.wxml | 11 ++- .../tenement/components/bindMeter/index.js | 46 ++++++++++- .../tenement/components/bindMeter/index.json | 3 +- .../tenement/components/bindMeter/index.wxml | 62 ++++++++++++-- .../tenement/components/unBindMeter/index.js | 71 ++++++++++++++++ .../components/unBindMeter/index.json | 8 ++ .../components/unBindMeter/index.wxml | 81 +++++++++++++++++++ .../components/unBindMeter/index.wxss | 1 + pages/workBench/components/tenement/index.js | 62 +++++++++----- .../workBench/components/tenement/index.json | 3 +- .../workBench/components/tenement/index.wxml | 39 ++++++++- pages/workBench/index.js | 2 +- service/tenement.js | 14 +++- 22 files changed, 497 insertions(+), 61 deletions(-) create mode 100644 pages/workBench/components/account/components/updatePhoneModal/index.js create mode 100644 pages/workBench/components/account/components/updatePhoneModal/index.json create mode 100644 pages/workBench/components/account/components/updatePhoneModal/index.wxml create mode 100644 pages/workBench/components/account/components/updatePhoneModal/index.wxss create mode 100644 pages/workBench/components/tenement/components/unBindMeter/index.js create mode 100644 pages/workBench/components/tenement/components/unBindMeter/index.json create mode 100644 pages/workBench/components/tenement/components/unBindMeter/index.wxml create mode 100644 pages/workBench/components/tenement/components/unBindMeter/index.wxss diff --git a/components/searchSelect/index.js b/components/searchSelect/index.js index a11feac..bf3f103 100644 --- a/components/searchSelect/index.js +++ b/components/searchSelect/index.js @@ -133,8 +133,8 @@ Component({ return } this.setData({ - columns: parks?.map(item => `${item.meterNo}-${item.address}${item.shortName ? '-' + item.shortName : ''}`), - list: parks, + columns: parks?.map(item => `${item.meterNo}-${item.address}${item.shortName ? '-' + item.shortName : ''}`) || [], + list: parks || [], }) }, async onSearchTenement() { diff --git a/components/searchSelect/index.wxml b/components/searchSelect/index.wxml index 2030f47..6f4c8bc 100644 --- a/components/searchSelect/index.wxml +++ b/components/searchSelect/index.wxml @@ -4,6 +4,7 @@ bind:click="onClickHide" position="bottom" z-index="100000" + wx:if="{{show}}" > + + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/account/components/updatePhoneModal/index.wxss b/pages/workBench/components/account/components/updatePhoneModal/index.wxss new file mode 100644 index 0000000..d296a65 --- /dev/null +++ b/pages/workBench/components/account/components/updatePhoneModal/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/account/components/updatePhoneModa/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index 6039a48..8324b71 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -102,6 +102,9 @@ Component({ this.initUserList() this.handleCancel(); }, + onUpdatePhoneConfirm() { + that.getTenementInfo(); + }, async getTenementInfo() { const { tenement, park } = this.data; const { code, message, tenement: data } = await getTenementBackInfo(park, tenement) @@ -132,20 +135,29 @@ Component({ }) }, handleChangeMain() { - const { list = [] } = this.data; - const main = list?.find(item => item.Permissions) - if (!main) { - alertInfo("没有主账号") - return - } - console.log("main", main) + // const { list = [] } = this.data; + // const main = list?.find(item => item.Permissions) + // if (!main) { + // alertInfo("没有主账号") + // return + // } + // console.log("main", main) this.setData({ - visible: true, + updatePhoneVisible: true, type: "update", title: "编辑管理员", - phone: main.WechatPhone, - name: main.WechatUserName, - id: main.WechatUserID, + // phone: main.WechatPhone, + // name: main.WechatUserName, + // id: main.WechatUserID, + }) + }, + handleUpdatePhoneCancel() { + this.setData({ + updatePhoneVisible: false, + type: "", + phone: "", + name: "", + id: "", }) }, handleCancel() { diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json index 57b9106..6243554 100644 --- a/pages/workBench/components/account/index.json +++ b/pages/workBench/components/account/index.json @@ -11,6 +11,7 @@ "van-radio": "@vant/weapp/radio/index", "van-radio-group": "@vant/weapp/radio-group/index", "van-tag": "@vant/weapp/tag/index", - "edit-modal": "./components/editModal/index" + "edit-modal": "./components/editModal/index", + "updatePhoneModal": "./components/updatePhoneModal/index" } } \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index e5f1334..e5be4bd 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -83,7 +83,6 @@ - {{phone}} {{name}} \ No newline at end of file +/> + +{{updatePhoneVisible}} \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js index 5569bdb..f8be3e2 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.js +++ b/pages/workBench/components/tenement/components/bindMeter/index.js @@ -1,11 +1,21 @@ // pages/workBench/components/tenement/components/bindMeter/index.js +// 0015980101 +import { bindMeter, } from "../../../../../../service/tenement" +import { alertInfo, alertSuccess } from "../../../../../../utils/index"; +import request from "../../../../../../utils/request" +import dayjs from "../../../../../../utils/dayjs" +const { OK } = request Component({ /** * 组件的属性列表 */ properties: { - + tenement: String, + tenementName: String, + park: String, + visible: Boolean, + meterId: String, }, /** @@ -33,6 +43,38 @@ Component({ }, onClose() { this.triggerEvent("close") - } + }, + onChange(e) { + const { name } = e.currentTarget.dataset; + this.setData({ + [name]: e.detail + }) + }, + async onSubmit() { + const { overall, critical, peak, valley, park, tenement, meter } = 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, readAt: dayjs().format('YYYY-MM-DD HH:mm:ss') }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("绑定成功") + this.triggerEvent("ok") + }, + onConfirm(e) { + const { type, data } = e.detail; + const that = this; + switch(type) { + case "meter": + this.setData({ + meter: data.id, + meterName: data.name, + show: false, + }) + break; + } + }, } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.json b/pages/workBench/components/tenement/components/bindMeter/index.json index 953d7ac..b57afb9 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.json +++ b/pages/workBench/components/tenement/components/bindMeter/index.json @@ -3,6 +3,7 @@ "usingComponents": { "van-dialog": "@vant/weapp/dialog/index", "search-select": "/components/searchSelect/index", - "van-field": "@vant/weapp/field/index" + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml index 017d86b..0f8d716 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.wxml +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml @@ -2,14 +2,14 @@ + + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.js b/pages/workBench/components/tenement/components/unBindMeter/index.js new file mode 100644 index 0000000..f31513c --- /dev/null +++ b/pages/workBench/components/tenement/components/unBindMeter/index.js @@ -0,0 +1,71 @@ +// pages/workBench/components/tenement/components/bindMeter/index.js + +import { unbindMeter, } from "../../../../../../service/tenement" +import request from "../../../../../../utils/request" +import { alertInfo, alertSuccess } from "../../../../../../utils/index"; +const { OK } = request + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + tenement: String, + park: String, + tenementName: String, + meterId: String, + meterAddress: String, + visible:Boolean, + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + onMeterFocus(e) { + const { park } = this.data; + if (!park) { + alertInfo("请先选择园区") + return; + } + this.setData({ + show: true, + title: "电表", + type: 'meter' + }) + }, + onClose() { + this.triggerEvent("close") + }, + onChange(e) { + const { name } = e.currentTarget.dataset; + this.setData({ + [name]: e.detail + }) + }, + async onSubmit() { + const { overall, critical, peak, valley, park, tenement, meterId } = 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, + }); + if (code !== OK) { + alertInfo(message) + return + } + alertSuccess("解绑成功") + this.triggerEvent("ok") + } + } +}) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.json b/pages/workBench/components/tenement/components/unBindMeter/index.json new file mode 100644 index 0000000..953d7ac --- /dev/null +++ b/pages/workBench/components/tenement/components/unBindMeter/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-dialog": "@vant/weapp/dialog/index", + "search-select": "/components/searchSelect/index", + "van-field": "@vant/weapp/field/index" + } +} \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.wxml b/pages/workBench/components/tenement/components/unBindMeter/index.wxml new file mode 100644 index 0000000..9bde749 --- /dev/null +++ b/pages/workBench/components/tenement/components/unBindMeter/index.wxml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.wxss b/pages/workBench/components/tenement/components/unBindMeter/index.wxss new file mode 100644 index 0000000..3fb490f --- /dev/null +++ b/pages/workBench/components/tenement/components/unBindMeter/index.wxss @@ -0,0 +1 @@ +/* pages/workBench/components/tenement/components/bindMeter/index.wxss */ \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index b85be1b..3385836 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -128,26 +128,50 @@ Component({ const that = this; const { park, tenement } = this.data; const { address, id } = e.currentTarget.dataset; - wx.showModal({ - title: '提示', - content: `确认要解绑${address}吗?`, - complete: async (res) => { - if (res.cancel) { - - } - - if (res.confirm) { - const { code, message, } = await unbindMeter(park, tenement, id); - if (code !== OK) { - alertInfo(message) - return - } - alertSuccess("解绑成功") - that.getTenementMeters(); - return - } - } + this.setData({ + unbindVisible: true, + meterId: id, + meterAddress: address }) + // wx.showModal({ + // title: '提示', + // content: `确认要解绑${address}吗?`, + // complete: async (res) => { + // if (res.cancel) { + + // } + + // if (res.confirm) { + // const { code, message, } = await unbindMeter(park, tenement, id); + // if (code !== OK) { + // alertInfo(message) + // return + // } + // alertSuccess("解绑成功") + // that.getTenementMeters(); + // return + // } + // } + // }) + }, + onUnbindOk() { + this.setData({ + unbindVisible: false, + meterId: "", + meterAddress: "", + }) + this.getTenementMeters(); + }, + startBind() { + this.setData({ + bindVisible: true + }) + }, + onBindOk() { + this.setData({ + bindVisible: false, + }) + this.getTenementMeters(); } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.json b/pages/workBench/components/tenement/index.json index 8f84a70..4fea529 100644 --- a/pages/workBench/components/tenement/index.json +++ b/pages/workBench/components/tenement/index.json @@ -6,6 +6,7 @@ "search-select": "/components/searchSelect/index", "van-empty": "@vant/weapp/empty/index", "kaihu": "./components/kaihu/index", - "bindMeter": "./components/bindMeter/index" + "bindMeter": "./components/bindMeter/index", + "unBindMeter": "./components/unBindMeter/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index da11c81..baac791 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -29,8 +29,18 @@ - 绑定电表 - 修改信息 + 绑定电表 + 修改信息 开户 @@ -70,7 +80,12 @@ {{ item.address }} {{ item.meterSn }} - + 解绑 @@ -101,4 +116,20 @@ title="{{title}}" /> - \ No newline at end of file + + + \ No newline at end of file diff --git a/pages/workBench/index.js b/pages/workBench/index.js index 09ee29b..e257546 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 1 + active: 3 }, /** diff --git a/service/tenement.js b/service/tenement.js index 20eb2d2..21270d1 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -40,8 +40,8 @@ export const updateTenement = async function(pid, data) { return await POST(`/vx/tenement/${pid}`, data) } // 解绑电表 -export const unbindMeter = async function(pid, tid, code) { - return await PUT(`/tenement/${pid}/${tid}/binding/${code}/unbind`) +export const unbindMeter = async function(pid, tid, code, data) { + return await PUT(`/vx/${pid}/${tid}/binding/${code}/unbind`,data) } // 获取b端用户 @@ -66,4 +66,14 @@ export const createBackTenement = async function(pid, data) { // 修改商户信息 export const updateTenementBackInfo = async function(pid, tid, data) { return await PUT(`/vx/${pid}/${tid}`, data) +} + +// c端给商户绑定一个表计 +export const bindMeter = async function(pid, tid, data) { + return await POST(`/vx/${pid}/${tid}/binding`,data) +} + +// 修改管理员手机号 +export const updateAdminPhone = async function(data) { + return await PUT(`/vx/updatePhone`, data) } \ No newline at end of file From db4045031a97c1ca966a364a21d6fb8f62dc3024 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 25 Feb 2025 09:02:02 +0800 Subject: [PATCH 23/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/handleLogin/index.wxml | 4 ++-- pages/home/index.wxml | 2 +- pages/workBench/components/account/index.wxml | 10 +++++----- .../components/recharge/components/approve/index.wxml | 4 ++-- .../components/recharge/components/reharge/index.wxml | 6 +++--- pages/workBench/components/record/index.wxml | 4 ++-- .../tenement/components/bindMeter/index.wxml | 2 +- .../tenement/components/createTenement/index.wxml | 4 ++-- .../components/tenement/components/kaihu/index.wxml | 4 ++-- pages/workBench/components/tenement/index.wxml | 4 ++-- service/tenement.js | 2 +- 11 files changed, 23 insertions(+), 23 deletions(-) diff --git a/pages/handleLogin/index.wxml b/pages/handleLogin/index.wxml index 6d004ca..d045c14 100644 --- a/pages/handleLogin/index.wxml +++ b/pages/handleLogin/index.wxml @@ -26,7 +26,7 @@ readonly use-button-slot > - + 选择 @@ -39,7 +39,7 @@ readonly use-button-slot > - + 选择 diff --git a/pages/home/index.wxml b/pages/home/index.wxml index dc81b19..6c6359d 100644 --- a/pages/home/index.wxml +++ b/pages/home/index.wxml @@ -21,7 +21,7 @@ diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index e5be4bd..686250d 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -9,7 +9,7 @@ readonly use-button-slot > - + 选择 @@ -22,7 +22,7 @@ readonly use-button-slot > - + 选择 @@ -49,8 +49,8 @@ title-width="140rpx" /> - 添加子账号 - 修改主账号 + 添加子账号 + 修改主账号 @@ -72,7 +72,7 @@ 移除 - 管理员 + 管理员 diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index 4707c73..f7027fb 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -8,7 +8,7 @@ use-button-slot title-width="100rpx" > - + 选择 @@ -22,7 +22,7 @@ bind:change="onChangeKeyword" title-width="100rpx" > - + 搜索 diff --git a/pages/workBench/components/recharge/components/reharge/index.wxml b/pages/workBench/components/recharge/components/reharge/index.wxml index 72f1c9d..9a524f3 100644 --- a/pages/workBench/components/recharge/components/reharge/index.wxml +++ b/pages/workBench/components/recharge/components/reharge/index.wxml @@ -9,7 +9,7 @@ use-button-slot title-width="70rpx" > - + 选择 @@ -22,7 +22,7 @@ use-button-slot title-width="70rpx" > - + 选择 @@ -49,7 +49,7 @@ 选择 diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index 6c85983..3449f8f 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -8,7 +8,7 @@ use-button-slot title-width="100rpx" > - + 选择 @@ -24,7 +24,7 @@ use-button-slot title-width="100rpx" > - + 选择 diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml index 0f8d716..f350b6e 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.wxml +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml @@ -26,7 +26,7 @@ use-button-slot title-width="100rpx" > - + 选择 diff --git a/pages/workBench/components/tenement/components/createTenement/index.wxml b/pages/workBench/components/tenement/components/createTenement/index.wxml index 752626e..e1f06bb 100644 --- a/pages/workBench/components/tenement/components/createTenement/index.wxml +++ b/pages/workBench/components/tenement/components/createTenement/index.wxml @@ -47,7 +47,7 @@ use-button-slot title-width="120rpx" > - + 选择 @@ -58,7 +58,7 @@ use-button-slot title-width="120rpx" > - + 选择 diff --git a/pages/workBench/components/tenement/components/kaihu/index.wxml b/pages/workBench/components/tenement/components/kaihu/index.wxml index 8580103..db85302 100644 --- a/pages/workBench/components/tenement/components/kaihu/index.wxml +++ b/pages/workBench/components/tenement/components/kaihu/index.wxml @@ -70,7 +70,7 @@ readonly title-width="120rpx" > - + 选择 @@ -82,7 +82,7 @@ use-button-slot title-width="120rpx" > - + 选择 diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index baac791..84e215f 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -9,7 +9,7 @@ readonly use-button-slot > - + 选择 @@ -22,7 +22,7 @@ readonly use-button-slot > - + 选择 diff --git a/service/tenement.js b/service/tenement.js index 21270d1..7073550 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -75,5 +75,5 @@ export const bindMeter = async function(pid, tid, data) { // 修改管理员手机号 export const updateAdminPhone = async function(data) { - return await PUT(`/vx/updatePhone`, data) + return await PUT(`/wx/updatePhone`, data) } \ No newline at end of file From 8a1af13924c52425dbec0e163abc3bd5f2f23e55 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 25 Feb 2025 09:03:53 +0800 Subject: [PATCH 24/60] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/components/account/index.wxml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index 686250d..bcdf593 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -111,5 +111,4 @@ park="{{park}}" bind:ok="onUpdatePhoneConfirm" bind:cancel="handleUpdatePhoneCancel" -/> -{{updatePhoneVisible}} \ No newline at end of file +/> \ No newline at end of file From 1a3b94af51815d312ce52f977c68f8896a7f3ca1 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 25 Feb 2025 09:33:17 +0800 Subject: [PATCH 25/60] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/components/approve/index.js | 1 - pages/workBench/components/approve/index.json | 6 ------ pages/workBench/components/approve/index.wxml | 3 --- pages/workBench/components/approve/index.wxss | 1 - .../components/recharge/components/approve/index.js | 4 +++- .../components/recharge/components/approve/index.wxml | 10 +++++----- pages/workBench/index.js | 2 +- 7 files changed, 9 insertions(+), 18 deletions(-) delete mode 100644 pages/workBench/components/approve/index.js delete mode 100644 pages/workBench/components/approve/index.json delete mode 100644 pages/workBench/components/approve/index.wxml delete mode 100644 pages/workBench/components/approve/index.wxss diff --git a/pages/workBench/components/approve/index.js b/pages/workBench/components/approve/index.js deleted file mode 100644 index 92b90bf..0000000 --- a/pages/workBench/components/approve/index.js +++ /dev/null @@ -1 +0,0 @@ -// pages/workBench/components/approve/index.js diff --git a/pages/workBench/components/approve/index.json b/pages/workBench/components/approve/index.json deleted file mode 100644 index 4a42478..0000000 --- a/pages/workBench/components/approve/index.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "component": true, - "usingComponents": { - - } -} \ No newline at end of file diff --git a/pages/workBench/components/approve/index.wxml b/pages/workBench/components/approve/index.wxml deleted file mode 100644 index a3dae99..0000000 --- a/pages/workBench/components/approve/index.wxml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/pages/workBench/components/approve/index.wxss b/pages/workBench/components/approve/index.wxss deleted file mode 100644 index bf99be5..0000000 --- a/pages/workBench/components/approve/index.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/workBench/components/approve/index.wxss */ diff --git a/pages/workBench/components/recharge/components/approve/index.js b/pages/workBench/components/recharge/components/approve/index.js index f489f24..47a4c79 100644 --- a/pages/workBench/components/recharge/components/approve/index.js +++ b/pages/workBench/components/recharge/components/approve/index.js @@ -24,7 +24,9 @@ Component({ }, lifetimes: { attached() { - this.init(); + loadingFunc(async () => { + await this.init(); + }) } }, /** diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index f7027fb..006432d 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -40,11 +40,11 @@ - - + + - {{ item.tenement.shortName }} - {{ item.money }} + {{ item.tenement.shortName }} + {{ item.money }} 查看详细 @@ -65,7 +65,7 @@ - + Date: Tue, 25 Feb 2025 10:07:24 +0800 Subject: [PATCH 26/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/index.json | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/workBench/index.json b/pages/workBench/index.json index c288a2d..45acf58 100644 --- a/pages/workBench/index.json +++ b/pages/workBench/index.json @@ -3,7 +3,6 @@ "van-tab": "@vant/weapp/tab/index", "van-tabs": "@vant/weapp/tabs/index", "navigator": "/components/navigator/index", - "approve": "./components/approve/index", "recharge": "./components/recharge/index", "record": "./components/record/index", "tenement": "./components/tenement/index", From 71194fbf1c796c0a26f479399e95a007d0c1e05e Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 25 Feb 2025 10:33:14 +0800 Subject: [PATCH 27/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=8C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=90=8E=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workBench/components/account/components/editModal/index.js | 2 ++ .../components/account/components/updatePhoneModal/index.js | 2 ++ pages/workBench/components/account/index.js | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pages/workBench/components/account/components/editModal/index.js b/pages/workBench/components/account/components/editModal/index.js index 5551679..3fcc8dd 100644 --- a/pages/workBench/components/account/components/editModal/index.js +++ b/pages/workBench/components/account/components/editModal/index.js @@ -53,6 +53,7 @@ Component({ } alertSuccess("操作成功") this.triggerEvent("ok") + this.setData({ data: {} }) return; @@ -66,6 +67,7 @@ Component({ }) }, onCancel() { + this.setData({ data: {} }) this.triggerEvent("cancel") } } diff --git a/pages/workBench/components/account/components/updatePhoneModal/index.js b/pages/workBench/components/account/components/updatePhoneModal/index.js index 2b7a4a9..d813ef8 100644 --- a/pages/workBench/components/account/components/updatePhoneModal/index.js +++ b/pages/workBench/components/account/components/updatePhoneModal/index.js @@ -45,6 +45,7 @@ Component({ } alertSuccess("操作成功") this.triggerEvent("ok") + this.setData({ phone: "" }) return; @@ -56,6 +57,7 @@ Component({ }) }, onCancel() { + this.setData({ phone: "" }) this.triggerEvent("cancel") } } diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index 8324b71..0703e22 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -103,7 +103,7 @@ Component({ this.handleCancel(); }, onUpdatePhoneConfirm() { - that.getTenementInfo(); + this.getTenementInfo(); }, async getTenementInfo() { const { tenement, park } = this.data; From 902b4726c686042c8487a9c1b91d8fdd59f45fe9 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 26 Feb 2025 13:41:44 +0800 Subject: [PATCH 28/60] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/updatePhoneModal/index.js | 6 +- pages/workBench/components/account/index.js | 13 +- pages/workBench/components/account/index.json | 4 +- pages/workBench/components/account/index.wxml | 85 ++++----- pages/workBench/components/account/index.wxss | 20 +++ .../recharge/components/approve/index.wxml | 39 +++-- .../workBench/components/recharge/index.wxml | 12 +- pages/workBench/components/record/index.js | 10 +- pages/workBench/components/record/index.json | 4 +- pages/workBench/components/record/index.wxml | 163 +++++++----------- pages/workBench/components/record/index.wxss | 16 ++ .../workBench/components/tenement/index.json | 4 +- .../workBench/components/tenement/index.wxml | 70 ++++---- .../workBench/components/tenement/index.wxss | 21 +++ pages/workBench/index.js | 2 +- 15 files changed, 250 insertions(+), 219 deletions(-) diff --git a/pages/workBench/components/account/components/updatePhoneModal/index.js b/pages/workBench/components/account/components/updatePhoneModal/index.js index d813ef8..6c15979 100644 --- a/pages/workBench/components/account/components/updatePhoneModal/index.js +++ b/pages/workBench/components/account/components/updatePhoneModal/index.js @@ -19,7 +19,11 @@ Component({ parentName:String, parentId:String, }, - + observers: { + "parentPhone": function (newPhone) { + this.setData({ phone: newPhone }) + } + }, /** * 组件的初始数据 */ diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index 0703e22..eae210d 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -103,7 +103,9 @@ Component({ this.handleCancel(); }, onUpdatePhoneConfirm() { + this.setData({ parentPhone: "", phone: "", type: "", title: "" }) this.getTenementInfo(); + this.initUserList() }, async getTenementInfo() { const { tenement, park } = this.data; @@ -135,18 +137,12 @@ Component({ }) }, handleChangeMain() { - // const { list = [] } = this.data; - // const main = list?.find(item => item.Permissions) - // if (!main) { - // alertInfo("没有主账号") - // return - // } - // console.log("main", main) + const { tenementInfo = {} } = this.data; this.setData({ updatePhoneVisible: true, type: "update", title: "编辑管理员", - // phone: main.WechatPhone, + parentPhone: tenementInfo.phone, // name: main.WechatUserName, // id: main.WechatUserID, }) @@ -156,6 +152,7 @@ Component({ updatePhoneVisible: false, type: "", phone: "", + parentPhone: "", name: "", id: "", }) diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json index 6243554..8a466f7 100644 --- a/pages/workBench/components/account/index.json +++ b/pages/workBench/components/account/index.json @@ -12,6 +12,8 @@ "van-radio-group": "@vant/weapp/radio-group/index", "van-tag": "@vant/weapp/tag/index", "edit-modal": "./components/editModal/index", - "updatePhoneModal": "./components/updatePhoneModal/index" + "updatePhoneModal": "./components/updatePhoneModal/index", + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index" } } \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index bcdf593..febd95e 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -29,60 +29,66 @@ - - - - 添加子账号 修改主账号 - - - - - 序号 - 昵称 - 手机号 - 操作 - - - - + + + + + + + {{tenementInfo.shortName}} + {{tenementInfo.fullName}} + + + + + + + 华昌宝能收费 + 物业代收1 + 物业代收2 + 物业代收线损 + {{tenementInfo.contact}} {{tenementInfo.phone}} + + + + + + + + + + + {{ itemIndex + 1 }} {{ item.WechatUserName }} {{ item.WechatPhone }} - + + 移除 - 管理员 + 管理员 - - - - + + + + + + - - \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxss b/pages/workBench/components/account/index.wxss index e07b279..9bb6f1c 100644 --- a/pages/workBench/components/account/index.wxss +++ b/pages/workBench/components/account/index.wxss @@ -46,4 +46,24 @@ } .primaryTextBtn { color: #1989fa; +} + +.customTable { + margin: 20rpx; + font-size: 32rpx; +} + +.customTableTile { + background-color: var(--light-green); + box-sizing: border-box; +} + +.tableTitleRow { + padding: 16rpx; +} + +.tableRow { + padding: 16rpx; + border: 1rpx solid #ccc; + border-top: 0rpx; } \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index 006432d..19b2a37 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -28,6 +28,25 @@ + + + 同意 + 拒绝 + + @@ -65,25 +84,7 @@ - - - 同意 - 拒绝 - - + diff --git a/pages/workBench/components/recharge/index.wxml b/pages/workBench/components/recharge/index.wxml index 6a29299..1e23e63 100644 --- a/pages/workBench/components/recharge/index.wxml +++ b/pages/workBench/components/recharge/index.wxml @@ -1,9 +1,11 @@ - + + + diff --git a/pages/workBench/components/record/index.js b/pages/workBench/components/record/index.js index 3e2c0e7..602d4c5 100644 --- a/pages/workBench/components/record/index.js +++ b/pages/workBench/components/record/index.js @@ -122,11 +122,10 @@ Component({ }, async handleMeterSwitchOn() { const that = this; - const { meter, list } = this.data; - const item = list.find(ele => ele.id === meter) + const { meter, meterName } = this.data; wx.showModal({ title: '提示', - content: `您确认要对${item?.address || 当前电表}进行合闸吗?`, + content: `您确认要对${meterName || 当前电表}进行合闸吗?`, complete: async (res) => { if (res.cancel) { @@ -149,11 +148,10 @@ Component({ }, async handleMeterSwitchOff() { const that = this; - const { meter, list } = this.data; - const item = list.find(ele => ele.id === meter) + const { meter, meterName } = this.data; wx.showModal({ title: '提示', - content: `您确认要对${item?.address || 当前电表}进行拉闸吗?`, + content: `您确认要对${meterName || 当前电表}进行拉闸吗?`, complete: async (res) => { if (res.cancel) { return; diff --git a/pages/workBench/components/record/index.json b/pages/workBench/components/record/index.json index cd9253e..b4547a4 100644 --- a/pages/workBench/components/record/index.json +++ b/pages/workBench/components/record/index.json @@ -10,6 +10,8 @@ "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-tag": "@vant/weapp/tag/index", + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index" } } \ No newline at end of file diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index 3449f8f..f653736 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -31,112 +31,71 @@ - - - - - - - - - - - - - - - + + + 合闸 + 拉闸 + + + + + {{item.tenement.shortName}} + {{item.tenement.name}} + + + + + + + + 商户电表 + 公摊电表 + 园区电表 + 表号:{{item.meterNo}} + + + + + + + {{item.address}} + SN:{{item.meterSn}} + + + + + + + {{item.amount}} + 余额:{{item.money}} + + + + + + + 合闸 + 拉闸 + 在线 + 失联 + + + - + + + + - - - 合闸 - 拉闸 - - + diff --git a/pages/workBench/components/record/index.wxss b/pages/workBench/components/record/index.wxss index 34f106c..b82170d 100644 --- a/pages/workBench/components/record/index.wxss +++ b/pages/workBench/components/record/index.wxss @@ -39,3 +39,19 @@ word-break: break-all; text-align: center; } + +.customTable { + margin: 20rpx; +} + +.customTableTile { + background-color: var(--light-green); + padding: 16rpx; + box-sizing: border-box; +} + +.tableRow { + padding: 16rpx; + border: 1rpx solid #ccc; + border-top: 0rpx; +} diff --git a/pages/workBench/components/tenement/index.json b/pages/workBench/components/tenement/index.json index 4fea529..aedb0e2 100644 --- a/pages/workBench/components/tenement/index.json +++ b/pages/workBench/components/tenement/index.json @@ -7,6 +7,8 @@ "van-empty": "@vant/weapp/empty/index", "kaihu": "./components/kaihu/index", "bindMeter": "./components/bindMeter/index", - "unBindMeter": "./components/unBindMeter/index" + "unBindMeter": "./components/unBindMeter/index", + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index 84e215f..ba5c582 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -46,36 +46,37 @@ - - - - - - - - - 电表地址 - SN - 操作 - - - - + + + + + + + {{tenementInfo.shortName}} + {{tenementInfo.fullName}} + + + + + + + 华昌宝能收费 + 物业代收1 + 物业代收2 + 物业代收线损 + {{tenementInfo.contact}} {{tenementInfo.phone}} + + + + + + + + + + + + {{ item.address }} {{ item.meterSn }} @@ -90,12 +91,11 @@ - - - - + + + + - Date: Thu, 27 Feb 2025 17:37:12 +0800 Subject: [PATCH 29/60] =?UTF-8?q?=E6=9A=82=E5=AD=98=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/searchSelectWrapper/index.js | 28 ++++++++ components/searchSelectWrapper/index.json | 6 ++ components/searchSelectWrapper/index.wxml | 9 +++ components/searchSelectWrapper/index.wxss | 22 ++++++ pages/home/index.wxml | 2 +- pages/workBench/components/account/index.js | 1 - pages/workBench/components/account/index.json | 3 +- pages/workBench/components/account/index.wxml | 45 +++++------- pages/workBench/components/account/index.wxss | 8 ++- .../recharge/components/approve/index.json | 3 +- .../recharge/components/reharge/index.json | 3 +- pages/workBench/components/recharge/index.js | 6 +- .../workBench/components/recharge/index.json | 4 +- .../workBench/components/recharge/index.wxml | 20 ++++-- .../workBench/components/recharge/index.wxss | 28 +++++++- pages/workBench/components/record/index.js | 5 +- pages/workBench/components/record/index.json | 3 +- pages/workBench/components/record/index.wxml | 68 +++++++++--------- pages/workBench/components/record/index.wxss | 6 ++ .../tenement/components/bindMeter/index.js | 3 +- pages/workBench/components/tenement/index.js | 3 +- .../workBench/components/tenement/index.json | 3 +- .../workBench/components/tenement/index.wxml | 71 ++++++++++--------- .../workBench/components/tenement/index.wxss | 16 +++-- pages/workBench/index.js | 2 +- 25 files changed, 240 insertions(+), 128 deletions(-) create mode 100644 components/searchSelectWrapper/index.js create mode 100644 components/searchSelectWrapper/index.json create mode 100644 components/searchSelectWrapper/index.wxml create mode 100644 components/searchSelectWrapper/index.wxss diff --git a/components/searchSelectWrapper/index.js b/components/searchSelectWrapper/index.js new file mode 100644 index 0000000..9120124 --- /dev/null +++ b/components/searchSelectWrapper/index.js @@ -0,0 +1,28 @@ +// components/searchSelectWrapper/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + label: String, + placeholder: String, + text: String + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + onSearch() { + this.triggerEvent("search") + } + } +}) \ No newline at end of file diff --git a/components/searchSelectWrapper/index.json b/components/searchSelectWrapper/index.json new file mode 100644 index 0000000..6f50345 --- /dev/null +++ b/components/searchSelectWrapper/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "@vant/weapp/icon/index" + } +} \ No newline at end of file diff --git a/components/searchSelectWrapper/index.wxml b/components/searchSelectWrapper/index.wxml new file mode 100644 index 0000000..ce9e592 --- /dev/null +++ b/components/searchSelectWrapper/index.wxml @@ -0,0 +1,9 @@ + + + {{ label }} + + {{placeholder}} + {{text}} + + + \ No newline at end of file diff --git a/components/searchSelectWrapper/index.wxss b/components/searchSelectWrapper/index.wxss new file mode 100644 index 0000000..3ae12f1 --- /dev/null +++ b/components/searchSelectWrapper/index.wxss @@ -0,0 +1,22 @@ +/* components/searchSelectWrapper/index.wxss */ +.wrapper { + display: flex; + align-items: center; + font-size: 30rpx; + padding: 20rpx; +} + +.content { + flex: 1; + margin-left: 30rpx; + margin-right: 30rpx; + display: flex; + padding: 10rpx 20rpx; + border-radius: 12rpx; + border: 1rpx solid #ccc; + background-color: #fff; +} + +.text { + flex: 1; +} \ No newline at end of file diff --git a/pages/home/index.wxml b/pages/home/index.wxml index 6c6359d..dc81b19 100644 --- a/pages/home/index.wxml +++ b/pages/home/index.wxml @@ -21,7 +21,7 @@ diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index eae210d..992b809 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -57,7 +57,6 @@ Component({ }) break; case "tenement": - console.log('data', data) this.setData({ tenement: data.id, tenementName: data.name, diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json index 8a466f7..922ddaa 100644 --- a/pages/workBench/components/account/index.json +++ b/pages/workBench/components/account/index.json @@ -14,6 +14,7 @@ "edit-modal": "./components/editModal/index", "updatePhoneModal": "./components/updatePhoneModal/index", "van-row": "@vant/weapp/row/index", - "van-col": "@vant/weapp/col/index" + "van-col": "@vant/weapp/col/index", + "searchSelectWrapper": "/components/searchSelectWrapper/index" } } \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index febd95e..90a4236 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -1,31 +1,17 @@ - - - 选择 - - - + - - 选择 - - + text="{{ tenementName }}" + bind:search="onTenementFocus" + /> @@ -39,7 +25,9 @@ - {{tenementInfo.shortName}} + + {{tenementInfo.shortName}} + {{tenementInfo.fullName}} @@ -47,10 +35,13 @@ - 华昌宝能收费 - 物业代收1 - 物业代收2 - 物业代收线损 + + 华昌宝能收费 + + 物业代收1 + + 物业代收2 + 物业代收线损 {{tenementInfo.contact}} {{tenementInfo.phone}} diff --git a/pages/workBench/components/account/index.wxss b/pages/workBench/components/account/index.wxss index 9bb6f1c..e5f7686 100644 --- a/pages/workBench/components/account/index.wxss +++ b/pages/workBench/components/account/index.wxss @@ -60,10 +60,16 @@ .tableTitleRow { padding: 16rpx; + font-weight: 700; } .tableRow { padding: 16rpx; border: 1rpx solid #ccc; border-top: 0rpx; -} \ No newline at end of file +} + +page { + background-color: rgb(228,240,236); + font-size: 32rpx; + } \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.json b/pages/workBench/components/recharge/components/approve/index.json index c992ee6..c064e73 100644 --- a/pages/workBench/components/recharge/components/approve/index.json +++ b/pages/workBench/components/recharge/components/approve/index.json @@ -10,6 +10,7 @@ "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-dialog": "@vant/weapp/dialog/index", + "searchSelectWrapper": "/components/searchSelectWrapper/index" } } \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/reharge/index.json b/pages/workBench/components/recharge/components/reharge/index.json index 779a6e1..b387e17 100644 --- a/pages/workBench/components/recharge/components/reharge/index.json +++ b/pages/workBench/components/recharge/components/reharge/index.json @@ -4,6 +4,7 @@ "van-popup": "@vant/weapp/popup/index", "search-select": "/components/searchSelect/index", "van-field": "@vant/weapp/field/index", - "van-button": "@vant/weapp/button/index" + "van-button": "@vant/weapp/button/index", + "searchSelectWrapper": "/components/searchSelectWrapper/index" } } \ No newline at end of file diff --git a/pages/workBench/components/recharge/index.js b/pages/workBench/components/recharge/index.js index 83eb4e8..e11025f 100644 --- a/pages/workBench/components/recharge/index.js +++ b/pages/workBench/components/recharge/index.js @@ -22,11 +22,11 @@ Component({ * 组件的方法列表 */ methods: { - handleChange(e) { + changeQueryType(e) { console.log("change", e) - const { index } = e.detail; + const { type } = e.currentTarget.dataset; this.setData({ - active: index + active: type }) }, diff --git a/pages/workBench/components/recharge/index.json b/pages/workBench/components/recharge/index.json index a540c5c..f85134b 100644 --- a/pages/workBench/components/recharge/index.json +++ b/pages/workBench/components/recharge/index.json @@ -4,6 +4,8 @@ "van-button": "@vant/weapp/button/index", "segmented": "/components/Segmented/index", "recharge": "./components/reharge/index", - "approve": "./components/approve/index" + "approve": "./components/approve/index", + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index" } } \ No newline at end of file diff --git a/pages/workBench/components/recharge/index.wxml b/pages/workBench/components/recharge/index.wxml index 1e23e63..4d02b54 100644 --- a/pages/workBench/components/recharge/index.wxml +++ b/pages/workBench/components/recharge/index.wxml @@ -1,10 +1,18 @@ - - + + + + + 待审核 + + + 已审核 + + + 充值 + + + diff --git a/pages/workBench/components/recharge/index.wxss b/pages/workBench/components/recharge/index.wxss index fc3e3af..cf8d8a0 100644 --- a/pages/workBench/components/recharge/index.wxss +++ b/pages/workBench/components/recharge/index.wxss @@ -1 +1,27 @@ -/* pages/workBench/components/recharge/index.wxss */ \ No newline at end of file +/* pages/workBench/components/recharge/index.wxss */ +page { + background-color: rgb(228,240,236); + font-size: 32rpx; + } + + + .query { + margin: 20rpx 0rpx; + } + + .typeQueryText { + text-align: center; + padding: 20rpx; + background-color: var(--light-green); + font-size: 32rpx; + } + + .select { + border: 1rpx solid #ccc; + padding: 12rpx; + border-radius: 12rpx; + flex: 1; + display: flex; + justify-content: space-between; + font-size: 30rpx; + } \ No newline at end of file diff --git a/pages/workBench/components/record/index.js b/pages/workBench/components/record/index.js index 602d4c5..dccf749 100644 --- a/pages/workBench/components/record/index.js +++ b/pages/workBench/components/record/index.js @@ -46,7 +46,6 @@ Component({ }) }, onConfirm(e) { - console.log('e', e) const { data, type } = e.detail; const that = this; switch(type) { @@ -61,7 +60,9 @@ Component({ meterName: data.address, meter: data.id, }, () => { - that.init(); + loadingFunc(async () => { + await that.init(); + }) }) break; } diff --git a/pages/workBench/components/record/index.json b/pages/workBench/components/record/index.json index b4547a4..3d5b800 100644 --- a/pages/workBench/components/record/index.json +++ b/pages/workBench/components/record/index.json @@ -12,6 +12,7 @@ "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" + "van-col": "@vant/weapp/col/index", + "searchSelectWrapper": "/components/searchSelectWrapper/index" } } \ No newline at end of file diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index f653736..daa0e92 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -1,38 +1,24 @@ - - - 选择 - - + text="{{parkName}}" + bind:search="onParkFocus" +/> - - - 选择 - - + text="{{meterName}}" + bind:search="onMeterFocus" + /> - + - + - {{item.tenement.shortName}} + + {{item.tenement.shortName}} + {{item.tenement.name}} @@ -55,9 +43,12 @@ - 商户电表 - 公摊电表 - 园区电表 + + 商户电表 + + 公摊电表 + + 园区电表 表号:{{item.meterNo}} @@ -65,7 +56,9 @@ - {{item.address}} + + {{item.address}} + SN:{{item.meterSn}} @@ -73,7 +66,9 @@ - {{item.amount}} + + 表字:{{item.amount}} + 余额:{{item.money}} @@ -81,10 +76,11 @@ - 合闸 - 拉闸 - 在线 - 失联 + + 合闸 + 拉闸 + 在线 + 失联 diff --git a/pages/workBench/components/record/index.wxss b/pages/workBench/components/record/index.wxss index b82170d..59a86ed 100644 --- a/pages/workBench/components/record/index.wxss +++ b/pages/workBench/components/record/index.wxss @@ -48,6 +48,7 @@ background-color: var(--light-green); padding: 16rpx; box-sizing: border-box; + font-weight: 700; } .tableRow { @@ -55,3 +56,8 @@ border: 1rpx solid #ccc; border-top: 0rpx; } + +page { + background-color: rgb(228,240,236); + font-size: 32rpx; + } diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js index f8be3e2..f9aec7b 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.js +++ b/pages/workBench/components/tenement/components/bindMeter/index.js @@ -66,11 +66,12 @@ Component({ onConfirm(e) { const { type, data } = e.detail; const that = this; + console.log("e.deail", e.detail) switch(type) { case "meter": this.setData({ meter: data.id, - meterName: data.name, + meterName: data.address, show: false, }) break; diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index 3385836..a60b50c 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -92,7 +92,8 @@ Component({ this.setData({ kaihuVisible: true, editType: "add", - title: "开户" + title: "开户", + defaultValue: { feeType: 0, feeTypeName: "华昌宝能收费" } }) }, startUpdateInfo() { diff --git a/pages/workBench/components/tenement/index.json b/pages/workBench/components/tenement/index.json index aedb0e2..f551c64 100644 --- a/pages/workBench/components/tenement/index.json +++ b/pages/workBench/components/tenement/index.json @@ -9,6 +9,7 @@ "bindMeter": "./components/bindMeter/index", "unBindMeter": "./components/unBindMeter/index", "van-row": "@vant/weapp/row/index", - "van-col": "@vant/weapp/col/index" + "van-col": "@vant/weapp/col/index", + "searchSelectWrapper": "/components/searchSelectWrapper/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index ba5c582..ae1df4d 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -1,31 +1,17 @@ - - - 选择 - - - + - - 选择 - - + text="{{ tenementName }}" + bind:search="onTenementFocus" + /> @@ -51,21 +37,35 @@ - - {{tenementInfo.shortName}} - {{tenementInfo.fullName}} - + + + {{tenementInfo.shortName}} + {{tenementInfo.fullName}} + + - - 华昌宝能收费 - 物业代收1 - 物业代收2 - 物业代收线损 + + + 华昌宝能收费 + 物业代收1 + 物业代收2 + 物业代收线损 + {{tenementInfo.contact}} {{tenementInfo.phone}} + + + @@ -77,9 +77,9 @@ - - {{ item.address }} - {{ item.meterSn }} + + {{ item.address }} + {{ item.meterSn }} diff --git a/pages/workBench/components/tenement/index.wxss b/pages/workBench/components/tenement/index.wxss index 32368f1..09f3390 100644 --- a/pages/workBench/components/tenement/index.wxss +++ b/pages/workBench/components/tenement/index.wxss @@ -23,13 +23,9 @@ } -.tbody { - width: 890rpx; -} - .tbody .tr { padding: 20rpx; - border-bottom: 1rpx solid #EEEEEE; + box-sizing: border-box; display: flex; align-items: center; flex-wrap: nowrap; @@ -53,6 +49,7 @@ .customTableTile { background-color: var(--light-green); box-sizing: border-box; + font-weight: 700; } .tableTitleRow { @@ -60,7 +57,14 @@ } .tableRow { + padding: 16rpx; border: 1rpx solid #ccc; border-top: 0rpx; -} \ No newline at end of file + font-size: 32rpx; +} + +page { + background-color: rgb(228,240,236); + font-size: 32rpx; + } \ No newline at end of file diff --git a/pages/workBench/index.js b/pages/workBench/index.js index e257546..d596302 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 3 + active: 1, }, /** From 5fbd34d9f83bef49eb2637da3d92e780a7e5b400 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Fri, 28 Feb 2025 10:33:20 +0800 Subject: [PATCH 30/60] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E6=94=B9=E5=8A=A8=E5=92=8C=E8=AE=BE=E7=BD=AE=E4=B8=BA=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/components/account/index.js | 17 +++- pages/workBench/components/account/index.wxml | 92 ++++++++++++------- pages/workBench/components/account/index.wxss | 8 +- pages/workBench/components/record/index.wxml | 16 ++-- .../workBench/components/tenement/index.wxml | 15 ++- pages/workBench/index.js | 2 +- 6 files changed, 93 insertions(+), 57 deletions(-) diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index 992b809..c5982f6 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -1,8 +1,8 @@ // pages/workBench/components/account/index.js import request from "../../../../utils/request" import { getTenementBackInfo, } from "../../../../service/tenement" -import { getBackApproveList, removeUser } from "../../../../service/user" -import { alertInfo, alertSuccess } from "../../../../utils/index" +import { getBackApproveList, removeUser, approveUser } from "../../../../service/user" +import { alertInfo, alertSuccess, wxModal } from "../../../../utils/index" const { OK } = request Component({ @@ -68,6 +68,19 @@ Component({ break; } }, + async setAdmin(e) { + const { id, name } = e.currentTarget.dataset; + const { tenement } = this.data; + await wxModal({ content: `确认要将${name}设置为管理吗?` }) + const { code, message } = await approveUser({ userId: id, type: 2, tenement: tenement }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("转交成功") + this.initUserList(); + this.getTenementInfo(); + }, onCancel() { this.setData({ show: false, diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index 90a4236..a04e003 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -24,26 +24,44 @@ - - - {{tenementInfo.shortName}} - - {{tenementInfo.fullName}} - + + + + {{tenementInfo.shortName}} + {{tenementInfo.fullName}} + + + - - - 华昌宝能收费 - - 物业代收1 - - 物业代收2 - 物业代收线损 - {{tenementInfo.contact}} {{tenementInfo.phone}} - + + + 华昌宝能收费 + 物业代收1 + 物业代收2 + 物业代收线损 + {{tenementInfo.contact}} {{tenementInfo.phone}} + + + @@ -54,22 +72,34 @@ - - {{ itemIndex + 1 }} - {{ item.WechatUserName }} - {{ item.WechatPhone }} - - - - 移除 + + {{ item.WechatUserName }} + {{ item.WechatPhone }} + + + + + 移除 + + + 设为管理 + + + + 管理员 - 管理员 + diff --git a/pages/workBench/components/account/index.wxss b/pages/workBench/components/account/index.wxss index e5f7686..007d999 100644 --- a/pages/workBench/components/account/index.wxss +++ b/pages/workBench/components/account/index.wxss @@ -28,13 +28,8 @@ } -.tbody { - width: 890rpx; -} -.tbody .tr { - padding: 20rpx; - border-bottom: 1rpx solid #EEEEEE; +.tr { display: flex; align-items: center; flex-wrap: nowrap; @@ -46,6 +41,7 @@ } .primaryTextBtn { color: #1989fa; + display: inline-block; } .customTable { diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index daa0e92..9773ff1 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -35,7 +35,7 @@ {{item.tenement.shortName}} - {{item.tenement.name}} + {{item.tenement.name}} @@ -44,11 +44,11 @@ - 商户电表 + 商户电表 - 公摊电表 + 公摊电表 - 园区电表 + 园区电表 表号:{{item.meterNo}} @@ -57,7 +57,7 @@ - {{item.address}} + {{item.address}} SN:{{item.meterSn}} @@ -67,7 +67,7 @@ - 表字:{{item.amount}} + 表字:{{item.amount}} 余额:{{item.money}} @@ -77,8 +77,8 @@ - 合闸 - 拉闸 + 合闸 + 拉闸 在线 失联 diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index ae1df4d..618c7d3 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -39,15 +39,9 @@ - {{tenementInfo.shortName}} + {{tenementInfo.shortName}} {{tenementInfo.fullName}} - - - - - - 华昌宝能收费 物业代收1 @@ -56,6 +50,10 @@ {{tenementInfo.contact}} {{tenementInfo.phone}} + + + + - - + diff --git a/pages/workBench/index.js b/pages/workBench/index.js index d596302..7f64b91 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 1, + active: 0, }, /** From d58436ef5f87c5717953f1b8943ab3dc80784c62 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 3 Mar 2025 16:54:40 +0800 Subject: [PATCH 31/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/images/stop.png | Bin 0 -> 5497 bytes assets/images/tihuan.png | Bin 0 -> 443980 bytes components/searchSelectWrapper/index.js | 24 ++- components/searchSelectWrapper/index.json | 4 +- components/searchSelectWrapper/index.wxml | 30 +++- components/searchSelectWrapper/index.wxss | 15 ++ pages/workBench/components/account/index.json | 3 +- pages/workBench/components/account/index.wxml | 4 +- .../recharge/components/approve/index.js | 10 ++ .../recharge/components/approve/index.wxml | 36 ++-- .../recharge/components/reharge/index.js | 1 - .../recharge/components/reharge/index.wxml | 85 +++------ pages/workBench/components/record/index.wxml | 161 +++++++++--------- pages/workBench/index.js | 2 +- service/meter.js | 1 + 15 files changed, 200 insertions(+), 176 deletions(-) create mode 100644 assets/images/stop.png create mode 100644 assets/images/tihuan.png diff --git a/assets/images/stop.png b/assets/images/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..674404891679e7448cfc49f9fa743cf39f33df44 GIT binary patch literal 5497 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 VR$VqyE literal 0 HcmV?d00001 diff --git a/assets/images/tihuan.png b/assets/images/tihuan.png new file mode 100644 index 0000000000000000000000000000000000000000..77b8f4724869c4ba303146b17ced74c58c749b19 GIT binary patch literal 443980 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 literal 0 HcmV?d00001 diff --git a/components/searchSelectWrapper/index.js b/components/searchSelectWrapper/index.js index 9120124..8d191c9 100644 --- a/components/searchSelectWrapper/index.js +++ b/components/searchSelectWrapper/index.js @@ -7,14 +7,23 @@ Component({ properties: { label: String, placeholder: String, - text: String + text: String, + fieldType: { + type: String, + value: "text" + }, + type: { + type: String, + value: "select" + } }, /** * 组件的初始数据 */ data: { - + keyword: "", + text: "", }, /** @@ -23,6 +32,17 @@ Component({ methods: { onSearch() { this.triggerEvent("search") + }, + onChangeKeyword(e) { + this.setData({ keyword: e.detail }); + }, + onChangeText(e) { + this.setData({ text: e.detail }); + this.triggerEvent("changeText", e.detail) + }, + onSearchKeyword() { + this.triggerEvent("searchKeyword", this.data.keyword) + this.setData({ keyword: "" }) } } }) \ No newline at end of file diff --git a/components/searchSelectWrapper/index.json b/components/searchSelectWrapper/index.json index 6f50345..fda2119 100644 --- a/components/searchSelectWrapper/index.json +++ b/components/searchSelectWrapper/index.json @@ -1,6 +1,8 @@ { "component": true, "usingComponents": { - "van-icon": "@vant/weapp/icon/index" + "van-icon": "@vant/weapp/icon/index", + "van-button": "@vant/weapp/button/index", + "van-field": "@vant/weapp/field/index" } } \ No newline at end of file diff --git a/components/searchSelectWrapper/index.wxml b/components/searchSelectWrapper/index.wxml index ce9e592..2b781e5 100644 --- a/components/searchSelectWrapper/index.wxml +++ b/components/searchSelectWrapper/index.wxml @@ -1,9 +1,35 @@ - - {{ label }} + + {{ label }} {{placeholder}} {{text}} + + + {{ label }} + + + + 搜索 + + + {{ label }} + + + \ No newline at end of file diff --git a/components/searchSelectWrapper/index.wxss b/components/searchSelectWrapper/index.wxss index 3ae12f1..cd7bdc4 100644 --- a/components/searchSelectWrapper/index.wxss +++ b/components/searchSelectWrapper/index.wxss @@ -16,7 +16,22 @@ border: 1rpx solid #ccc; background-color: #fff; } + +.inputContent { + flex: 1; + margin-left: 30rpx; + margin-right: 30rpx; + display: flex; + padding: 0 20rpx; + border-radius: 12rpx; + border: 1rpx solid #ccc; + background-color: #fff; +} .text { flex: 1; +} + +.label { + width: 120rpx; } \ No newline at end of file diff --git a/pages/workBench/components/account/index.json b/pages/workBench/components/account/index.json index 922ddaa..3ef3d13 100644 --- a/pages/workBench/components/account/index.json +++ b/pages/workBench/components/account/index.json @@ -15,6 +15,7 @@ "updatePhoneModal": "./components/updatePhoneModal/index", "van-row": "@vant/weapp/row/index", "van-col": "@vant/weapp/col/index", - "searchSelectWrapper": "/components/searchSelectWrapper/index" + "searchSelectWrapper": "/components/searchSelectWrapper/index", + "van-image": "@vant/weapp/image/index" } } \ No newline at end of file diff --git a/pages/workBench/components/account/index.wxml b/pages/workBench/components/account/index.wxml index a04e003..f10ad16 100644 --- a/pages/workBench/components/account/index.wxml +++ b/pages/workBench/components/account/index.wxml @@ -84,7 +84,7 @@ data-id="{{item.WechatUserID}}" data-name="{{item.WechatUserName}}" > - 移除 + - 设为管理 + diff --git a/pages/workBench/components/recharge/components/approve/index.js b/pages/workBench/components/recharge/components/approve/index.js index 47a4c79..004ed18 100644 --- a/pages/workBench/components/recharge/components/approve/index.js +++ b/pages/workBench/components/recharge/components/approve/index.js @@ -53,6 +53,16 @@ Component({ }) this.onCancel(); }, + onSearchKeyword(e) { + const that = this; + that.setData({ + keyword: e.detail + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + }, onChangeKeyword(e) { this.setData({ keywordTemp: e.detail }) }, diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index 19b2a37..a1795ce 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -1,31 +1,18 @@ - - - 选择 - - + text="{{parkName}}" + bind:search="onParkFocus" +/> - - - 搜索 - - + text="{{meterName}}" + bind:searchKeyword="onSearchKeyword" + type="inputSearch" +/> @@ -87,7 +74,6 @@ - - - - 选择 - - - + + - - 选择 - - - + - - + - - 选择 - - - + diff --git a/pages/workBench/components/record/index.wxml b/pages/workBench/components/record/index.wxml index 9773ff1..259d77b 100644 --- a/pages/workBench/components/record/index.wxml +++ b/pages/workBench/components/record/index.wxml @@ -6,93 +6,88 @@ bind:search="onParkFocus" /> - + + - - - - - - - 合闸 - 拉闸 - - - - - - - {{item.tenement.shortName}} - - {{item.tenement.name}} - - - - - - - - - 商户电表 - - 公摊电表 - - 园区电表 - 表号:{{item.meterNo}} - - - - - - - - {{item.address}} - - SN:{{item.meterSn}} - - - - - - - - 表字:{{item.amount}} - - 余额:{{item.money}} - - - - - - - - 合闸 - 拉闸 - 在线 - 失联 - - - - - - - + + + + 合闸 + 拉闸 + + + + + + + {{item.tenement.shortName}} + + {{item.tenement.name}} + + + + + + + + + 商户电表 + + 公摊电表 + + 园区电表 + 表号:{{item.meterNo}} + + + + + + + + {{item.address}} + + SN:{{item.meterSn}} + + + + + + + + 表字:{{item.amount}} + + 余额:{{item.money}} + + + + + + + + 合闸 + 拉闸 + 在线 + 失联 + + + + - - + + Date: Mon, 3 Mar 2025 16:56:50 +0800 Subject: [PATCH 32/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/workBench/index.js b/pages/workBench/index.js index 3800387..7f64b91 100644 --- a/pages/workBench/index.js +++ b/pages/workBench/index.js @@ -5,7 +5,7 @@ Page({ * 页面的初始数据 */ data: { - active: 2, + active: 0, }, /** From fc5ef4b93145e7ea93b9f24fbb3631e82b5a0abd Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 4 Mar 2025 17:03:39 +0800 Subject: [PATCH 33/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E6=88=B7?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/invoiceList/components/notyet/index.wxml | 2 +- pages/workBench/components/tenement/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/invoiceList/components/notyet/index.wxml b/pages/invoiceList/components/notyet/index.wxml index 2b6ec60..7b63149 100644 --- a/pages/invoiceList/components/notyet/index.wxml +++ b/pages/invoiceList/components/notyet/index.wxml @@ -13,7 +13,7 @@ {{ item.tenement.name }} - {{ item.range[0] }} - {{ item.range[1] }} + {{ item.range[0] }} 至 {{ item.range[1] }} ¥ {{ item.money }} diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index a60b50c..5b95d7f 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -122,7 +122,7 @@ Component({ }) }, onKaihuConfirm() { - this.getTenementInfo(); + // this.getTenementInfo(); this.onKaihuClose(); }, unbind(e) { From 1b69035ed22cbeed6b3f5a24b8ea5b587a5aad73 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 4 Mar 2025 17:32:41 +0800 Subject: [PATCH 34/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/components/account/index.js | 6 +++--- service/tenement.js | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pages/workBench/components/account/index.js b/pages/workBench/components/account/index.js index c5982f6..676b28b 100644 --- a/pages/workBench/components/account/index.js +++ b/pages/workBench/components/account/index.js @@ -1,7 +1,7 @@ // pages/workBench/components/account/index.js import request from "../../../../utils/request" -import { getTenementBackInfo, } from "../../../../service/tenement" -import { getBackApproveList, removeUser, approveUser } from "../../../../service/user" +import { getTenementBackInfo, updateUserApp} from "../../../../service/tenement" +import { getBackApproveList, removeUser } from "../../../../service/user" import { alertInfo, alertSuccess, wxModal } from "../../../../utils/index" const { OK } = request @@ -72,7 +72,7 @@ Component({ const { id, name } = e.currentTarget.dataset; const { tenement } = this.data; await wxModal({ content: `确认要将${name}设置为管理吗?` }) - const { code, message } = await approveUser({ userId: id, type: 2, tenement: tenement }) + const { code, message } = await updateUserApp({ userId: id, type: 2, tenement: tenement }) if (code !== OK) { alertInfo(message) return; diff --git a/service/tenement.js b/service/tenement.js index 7073550..e26e11e 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -76,4 +76,9 @@ export const bindMeter = async function(pid, tid, data) { // 修改管理员手机号 export const updateAdminPhone = async function(data) { return await PUT(`/wx/updatePhone`, data) +} + +// 工作台移交管理权限 +export const updateUserApp = async function(data) { + return await PUT(`/wx/updateUserApp`, data) } \ No newline at end of file From 32b7dbc38c340746d269ab702c7de19805558800 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 12 Mar 2025 08:47:59 +0800 Subject: [PATCH 35/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E6=88=B7?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98=E5=92=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=95=86=E6=88=B7=E4=BF=A1=E6=81=AF=E5=90=8E?= =?UTF-8?q?=E5=95=86=E6=88=B7=E4=BF=A1=E6=81=AF=E4=B8=8D=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/workBench/components/tenement/index.js | 10 +++++++--- pages/workBench/components/tenement/index.wxml | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index 5b95d7f..6d759a3 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -51,6 +51,9 @@ Component({ }, async getTenementInfo() { const { tenement, park } = this.data; + if (!tenement || !park) { + return; + } const { code, message, tenement: data } = await getTenementBackInfo(park, tenement) if (code !== OK) { alertInfo(message) @@ -118,11 +121,12 @@ Component({ this.setData({ kaihuVisible: false, defaultValue: {}, - title: "编辑" + title: "编辑", + editType: "", }) }, - onKaihuConfirm() { - // this.getTenementInfo(); + async onKaihuConfirm() { + this.getTenementInfo(); this.onKaihuClose(); }, unbind(e) { diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index 618c7d3..b8cb555 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -105,6 +105,7 @@ bindcancel="onCancel" /> Date: Mon, 31 Mar 2025 16:48:06 +0800 Subject: [PATCH 36/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=BC=80?= =?UTF-8?q?=E6=88=B7=E7=9A=84=E6=97=B6=E5=80=99=E6=97=A0=E6=B3=95=E5=85=B3?= =?UTF-8?q?=E6=8E=89=E9=80=89=E6=8B=A9=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E7=94=B5=E9=87=8F=E5=9B=BE=E8=A1=A8=E7=9A=84=E9=94=99=E4=BD=8D?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/electricQuery/index.js | 19 ++++++++++--- .../tenement/components/bindMeter/index.js | 27 ++++++++++++++++++- .../tenement/components/bindMeter/index.wxml | 18 +++++++++---- .../tenement/components/unBindMeter/index.js | 18 ++++++++++++- pages/workBench/components/tenement/index.js | 6 +++++ .../workBench/components/tenement/index.wxml | 1 + service/meter.js | 4 +++ utils/index.js | 4 +-- 8 files changed, 85 insertions(+), 12 deletions(-) diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index 264c586..7f32ce0 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -129,6 +129,12 @@ Page({ devicePixelRatio: getPixelRatio(), }); const ids = [...new Set(data?.map(item => item?.meter?.id))] + const point = data?.[0]?.time?.slice(-1) + const times = [...new Set(data?.map(item => item.time))]. + map(item => Number(item.replace(point, ""))). + sort((a, b) => a - b). + map(ele => `${ele}${point}`.padStart(2, "0")); + const options = { tooltip: { trigger: 'axis' @@ -145,18 +151,25 @@ Page({ xAxis: { type: 'category', boundaryGap: false, - data: [...new Set(data?.map(item => item.time))] + data: times }, yAxis: { type: 'value' }, series: ids?.map(item => { const element = data?.find(i => i?.meter?.id === item) + const list = data?.filter(ele => ele?.meter?.id === item) + const newList = [...times].map(item => { + const exist = list.find(ele => ele.time === item) + if (exist) { + return exist.number; + } + return null + }) return { name: element?.meter?.address, type: 'line', - stack: 'Total', - data: data?.filter(ele => ele?.meter?.id === item).map(item => item.number) + data: newList }}) }; diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js index f9aec7b..1261257 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.js +++ b/pages/workBench/components/tenement/components/bindMeter/index.js @@ -1,6 +1,7 @@ // pages/workBench/components/tenement/components/bindMeter/index.js // 0015980101 import { bindMeter, } from "../../../../../../service/tenement" +import { getWorkMeterDetail } from "../../../../../../service/meter" import { alertInfo, alertSuccess } from "../../../../../../utils/index"; import request from "../../../../../../utils/request" import dayjs from "../../../../../../utils/dayjs" @@ -41,8 +42,20 @@ Component({ type: 'meter' }) }, + onCancel() { + this.setData({ + show: false, + title: "", + type: "", + }) + // this.triggerEvent("close") + }, onClose() { - this.triggerEvent("close") + this.setData({ + show: false, + title: "", + type: "", + }) }, onChange(e) { const { name } = e.currentTarget.dataset; @@ -74,8 +87,20 @@ Component({ meterName: data.address, show: false, }) + this.getMeterDetail(data.id); break; } }, + async getMeterDetail(id) { + const { code, message, data } = await getWorkMeterDetail(id) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + overall: Number(data?.overall || 0), + status: data?.breakType ? '合闸' : "分闸" + }) + } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml index f350b6e..4a6c842 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.wxml +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml @@ -30,6 +30,14 @@ 选择 + diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.js b/pages/workBench/components/tenement/components/unBindMeter/index.js index f31513c..32d94ca 100644 --- a/pages/workBench/components/tenement/components/unBindMeter/index.js +++ b/pages/workBench/components/tenement/components/unBindMeter/index.js @@ -4,6 +4,7 @@ import { unbindMeter, } from "../../../../../../service/tenement" import request from "../../../../../../utils/request" import { alertInfo, alertSuccess } from "../../../../../../utils/index"; const { OK } = request +import { getWorkMeterDetail } from "../../../../../../service/meter" Component({ @@ -18,7 +19,11 @@ Component({ meterAddress: String, visible:Boolean, }, - + observers: { + "meterId": function(newValue) { + this.getMeterDetail(newValue) + } + }, /** * 组件的初始数据 */ @@ -42,6 +47,17 @@ Component({ type: 'meter' }) }, + async getMeterDetail(id) { + const { code, message, data } = await getWorkMeterDetail(id) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + overall: Number(data?.overall || 0), + status: data?.breakType ? '合闸' : "分闸" + }) + }, onClose() { this.triggerEvent("close") }, diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index 6d759a3..92f4ff4 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -125,6 +125,12 @@ Component({ editType: "", }) }, + onBindClose() { + console.log("-----------") + this.setData({ + bindVisible: false, + }) + }, async onKaihuConfirm() { this.getTenementInfo(); this.onKaihuClose(); diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index b8cb555..eb96997 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -121,6 +121,7 @@ tenement="{{tenement}}" tenementName="{{tenementName}}" bind:ok="onBindOk" + bind:close="onBindClose" /> Date: Tue, 22 Apr 2025 18:00:12 +0800 Subject: [PATCH 37/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E5=BC=80=E6=88=B7=E5=BB=BA=E7=AD=91=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E5=92=8C=E4=BC=98=E5=8C=96=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E8=B4=A6=E5=8D=95=E6=94=AF=E6=8C=81=E5=B3=B0=E8=B0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/billDetail/index.js | 143 +++++++---- childPackage/pages/billDetail/index.wxml | 230 +++++++++++++++++- childPackage/pages/billDetail/index.wxss | 13 + pages/billList/index.js | 12 +- pages/invoiceList/components/notyet/index.js | 4 +- .../tenement/components/kaihu/index.wxml | 1 + project.private.config.json | 6 +- utils/index.js | 4 +- utils/request.js | 12 +- 9 files changed, 360 insertions(+), 65 deletions(-) diff --git a/childPackage/pages/billDetail/index.js b/childPackage/pages/billDetail/index.js index 91ac35b..8a8a364 100644 --- a/childPackage/pages/billDetail/index.js +++ b/childPackage/pages/billDetail/index.js @@ -1,5 +1,5 @@ import { getReportDetail } from "../../../service/report"; -import { alertInfo, alertSuccess, getPixelRatio } from "../../../utils/index"; +import { alertInfo, alertSuccess, getPixelRatio, loadingFunc } from "../../../utils/index"; import request from '../../../utils/request' import * as echarts from '../../components/echarts/echarts'; const { OK } = request @@ -15,20 +15,20 @@ Page({ time: "", detail: {}, meters: [], - header1: [ - { key: 'address', title: '电表地址' }, - { title: '起码',renderBody: (item) => { return item?.startNumber } }, - { title: '止码',renderBody: (item) => { return item?.endNumber } }, - { title: '倍率',renderBody: (item) => { return item?.displayRatio } }, - ], - header2: [ - { title: '用电量', renderBody: (item) => item?.overall?.amount }, - { title: '线损电量',renderBody: (item) => item?.loss?.amount }, - { title: '公摊电量',renderBody: (item) => item?.publicAmount }, - { title: '合计电量',renderBody: (item) => { + // header1: [ + // { key: 'address', title: '电表地址' }, + // { title: '起码',renderBody: (item) => { return item?.startNumber } }, + // { title: '止码',renderBody: (item) => { return item?.endNumber } }, + // { title: '倍率',renderBody: (item) => { return item?.displayRatio } }, + // ], + // header2: [ + // { title: '用电量', renderBody: (item) => item?.overall?.amount }, + // { title: '线损电量',renderBody: (item) => item?.loss?.amount }, + // { title: '公摊电量',renderBody: (item) => item?.publicAmount }, + // { title: '合计电量',renderBody: (item) => { - } }, - ] + // } }, + // ] }, /** @@ -36,7 +36,10 @@ Page({ */ onLoad(options) { const { id, time } = options; - this.init(id, time); + const that = this; + loadingFunc(async () => { + await that.init(id, time); + }) }, async init(id, time) { const { code, message, detail, amount } = await getReportDetail(id) @@ -55,40 +58,84 @@ Page({ return item; }) }) - const option = { - tooltip: { - trigger: 'item' - }, - legend: { - top: 10, - left: 'center' - }, - label: { - alignTo: 'edge', - formatter: '{name|{b}}\n{value|{c} }', - minMargin: 5, - edgeDistance: 10, - lineHeight: 15, - rich: { - time: { - fontSize: 10, - color: '#999' + if (detail?.park?.meter04kvType === 0) { + const option = { + tooltip: { + trigger: 'item' + }, + legend: { + top: 10, + left: 'center' + }, + label: { + alignTo: 'edge', + formatter: '{name|{b}}\n{value|{c} }', + minMargin: 5, + edgeDistance: 10, + lineHeight: 15, + rich: { + time: { + fontSize: 10, + color: '#999' + } } - } - }, - series: [ - { - type: 'pie', - radius: '50%', - data: [ - { value: detail.comprehensive.lossAmount, name: '本期线损电量', itemStyle: { color: 'rgb(104,187,196)' } }, - { value: detail.comprehensive.consumption, name: '本期用电量', itemStyle: { color: 'rgb(80,135,236)' } }, - - ], - } - ] - }; - this.init_pieCharts(option); + }, + series: [ + { + type: 'pie', + radius: '50%', + data: [ + { value: detail.comprehensive.lossAmount, name: '线损电量', itemStyle: { color: 'rgb(104,187,196)' } }, + { value: detail.comprehensive.consumption, name: '电度电量', itemStyle: { color: 'rgb(80,135,236)' } }, + + ], + } + ] + }; + this.init_pieCharts(option); + } else { + // const option = { + // tooltip: { + // trigger: 'item' + // }, + // legend: { + // top: 10, + // left: 'center' + // }, + // label: { + // alignTo: 'edge', + // formatter: '{name|{b}}\n{value|{c} }', + // minMargin: 5, + // edgeDistance: 10, + // lineHeight: 15, + // rich: { + // time: { + // fontSize: 10, + // color: '#999' + // } + // } + // }, + // series: [ + // { + // type: 'pie', + // radius: '50%', + // data: [ + // { + // value: detail.comprehensive.lossAmount, + // name: '线损电量', + // }, + // { + // value: detail.comprehensive.consumption, + // name: '电度电量', + // }, + + // ], + // } + // ] + // }; + // this.init_pieCharts(option); + } + const that = this; wx.getSystemInfo({ success: function (res) { diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml index 4cfc7fe..845983c 100644 --- a/childPackage/pages/billDetail/index.wxml +++ b/childPackage/pages/billDetail/index.wxml @@ -25,14 +25,14 @@ 下载 - + 本期账单 本期用电量 - {{ amount }} 千瓦时 + {{ amount }} 千瓦时 @@ -86,7 +86,7 @@ - 用电量 + 电度电量 {{item.overall.amount}} @@ -106,4 +106,228 @@ + + + 本期账单 + + + + 本期用电量 + {{ amount }} 千瓦时 + + + + + 本期电费 + {{ detail.comprehensive.total }} 元 + + + + + 分时明细 + + + + + 分时电量 + (千瓦时) + + 尖: {{ detail.comprehensive.sharpAmount }} + 峰: {{ detail.comprehensive.peakAmount }} + 平: {{ detail.comprehensive.flatAmount }} + 谷: {{ detail.comprehensive.valleyAmount }} + + + + + + 分时单价 + (元/千瓦时) + + 尖: {{ detail.comprehensive.priceSharp }} + 峰: {{ detail.comprehensive.pricePeak }} + 平: {{ detail.comprehensive.priceFlat }} + 谷: {{ detail.comprehensive.priceValley }} + + + + + + 分时电费 + (元) + + 尖: {{ detail.comprehensive.sharpFee }} + 峰: {{ detail.comprehensive.peakFee }} + 平: {{ detail.comprehensive.flatFee }} + 谷: {{ detail.comprehensive.valleyFee }} + + + + + + (电量+线损电量)*单价+摊薄公摊电费+摊薄调整电费 + + + 分时电量明细 + + + + + + 电表地址 + {{item.address}} + + + 起码 + {{item.startNumber}} + + + 止码 + {{item.endNumber}} + + + 电度电量 + {{item.critical.amount}} + + + + + 线损电量 + {{item.lossSharp}} + + + 公摊电量 + {{item.poolSharp}} + + + 合计电量 + {{item.finalSharp}} + + + 合计电费 + {{item.chargeSharp}} + + + + + + + + 电表地址 + {{item.address}} + + + 起码 + {{item.startNumber}} + + + 止码 + {{item.endNumber}} + + + 电度电量 + {{item.peak.amount}} + + + + + 线损电量 + {{item.lossPeak}} + + + 公摊电量 + {{item.poolPeak}} + + + 合计电量 + {{item.finalPeak}} + + + 合计电费 + {{item.chargePeak}} + + + + + + + + 电表地址 + {{item.address}} + + + 起码 + {{item.startNumber}} + + + 止码 + {{item.endNumber}} + + + 电度电量 + {{item.flat.amount}} + + + + + + + 线损电量 + {{item.lossFlat}} + + + 公摊电量 + {{item.poolFlat}} + + + 合计电量 + {{item.finalFlat}} + + + 合计电费 + {{item.chargeFlat}} + + + + + + + + 电表地址 + {{item.address}} + + + 起码 + {{item.startNumber}} + + + 止码 + {{item.endNumber}} + + + 电度电量 + {{item.valley.amount}} + + + + + 线损电量 + {{item.lossValley}} + + + 公摊电量 + {{item.poolValley}} + + + 合计电量 + {{item.finalValley}} + + + 合计电费 + {{item.chargeValley}} + + + + + \ No newline at end of file diff --git a/childPackage/pages/billDetail/index.wxss b/childPackage/pages/billDetail/index.wxss index f89f4f3..b84fb51 100644 --- a/childPackage/pages/billDetail/index.wxss +++ b/childPackage/pages/billDetail/index.wxss @@ -59,12 +59,25 @@ page { text-align: center; font-weight: 500; } + +.colContentTitle2 { + padding: 30rpx 0; + text-align: center; + font-weight: 500; +} + .colContentValue { padding-bottom: 30rpx; text-align: center; overflow: hidden; } +.colContentValue2 { + padding-bottom: 20rpx; + padding-left: 20rpx; + overflow: hidden; +} + .tooltip { font-size: 30rpx; color: rgb(136, 132, 132); diff --git a/pages/billList/index.js b/pages/billList/index.js index 9230ed4..30120f8 100644 --- a/pages/billList/index.js +++ b/pages/billList/index.js @@ -1,5 +1,5 @@ import { getBillList } from "../../service/accounting" -import { alertInfo } from "../../utils/index"; +import { alertInfo, loadingFunc } from "../../utils/index"; import request from '../../utils/request' const { OK } = request; @@ -17,11 +17,19 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - this.init(); + const that = this; + loadingFunc(async () => { + await that.init(); + }) + }, async init() { const { page, list } = this.data; const { code, data, message } = await getBillList(page) + if (code !== OK) { + alertInfo(message) + return; + } if (!data?.length) { alertInfo("没有更多了") return; diff --git a/pages/invoiceList/components/notyet/index.js b/pages/invoiceList/components/notyet/index.js index 9608c88..aa9fe41 100644 --- a/pages/invoiceList/components/notyet/index.js +++ b/pages/invoiceList/components/notyet/index.js @@ -14,7 +14,7 @@ Component({ }, lifetimes: { attached() { - loadingFunc(() => this.init()) + loadingFunc(async () => await this.init()) } }, /** @@ -42,7 +42,7 @@ Component({ this.setData({ list: data, selectList: new Array(data?.length).map(() => false), allChecked: false, }) }, onRefresh() { - loadingFunc(() => this.init()) + loadingFunc(async () => await this.init()) }, onChange(e) { const { id, index } = e.currentTarget.dataset; diff --git a/pages/workBench/components/tenement/components/kaihu/index.wxml b/pages/workBench/components/tenement/components/kaihu/index.wxml index db85302..04ff43a 100644 --- a/pages/workBench/components/tenement/components/kaihu/index.wxml +++ b/pages/workBench/components/tenement/components/kaihu/index.wxml @@ -69,6 +69,7 @@ use-button-slot readonly title-width="120rpx" + required > 选择 diff --git a/project.private.config.json b/project.private.config.json index aa91fce..fa793c0 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -11,9 +11,9 @@ "miniprogram": { "list": [ { - "name": "pages/discountCoupon/index", - "pathName": "pages/discountCoupon/index", - "query": "", + "name": "childPackage/pages/billDetail/index", + "pathName": "childPackage/pages/billDetail/index", + "query": "id=R00102714036256769&tiem=2025-03", "launchMode": "default", "scene": null }, diff --git a/utils/index.js b/utils/index.js index ebca6fc..1389446 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,9 +45,9 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" + api = "http://localhost:8000" + // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/api3" - api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; diff --git a/utils/request.js b/utils/request.js index 11b7f50..ed79254 100644 --- a/utils/request.js +++ b/utils/request.js @@ -35,10 +35,10 @@ const request = async function (options, config = {}) { try { response = await requestWithoutCookie(options); // 服务器没有返回200直接报错 - // if (!response || response.statusCode !== 200) { - // alertError(response?.data?.message || "发生错误,请稍后重试") - // return; - // } + if (!response || response.statusCode !== 200) { + alertError(response?.data?.message || "发生错误,请稍后重试") + return; + } // 处理cookie const setCookie = response.header['set-cookie'] || response.header['Set-Cookie']; @@ -78,9 +78,11 @@ const request = async function (options, config = {}) { // 处理返回结果,默认直接返回数据 const parseResponse = function (response, url) { + console.log('response', response) if (!response) { - alertError("服务异常") + alertError("服务无响应") return + } const { statusCode } = response; if (!statusCode) { From 34995ef9a3a52e3c46ec0d639c86a160e506ab29 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 23 Apr 2025 17:25:17 +0800 Subject: [PATCH 38/60] =?UTF-8?q?=E8=B4=A6=E5=8D=95=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=B3=B0=E8=B0=B7=E8=A1=A8=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/billDetail/index.wxml | 16 ++++++++-------- project.private.config.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml index 845983c..c5c483b 100644 --- a/childPackage/pages/billDetail/index.wxml +++ b/childPackage/pages/billDetail/index.wxml @@ -179,11 +179,11 @@ 起码 - {{item.startNumber}} + {{item.startSharp}} 止码 - {{item.endNumber}} + {{item.endSharp}} 电度电量 @@ -218,11 +218,11 @@ 起码 - {{item.startNumber}} + {{item.startPeak}} 止码 - {{item.endNumber}} + {{item.endPeak}} 电度电量 @@ -257,11 +257,11 @@ 起码 - {{item.startNumber}} + {{item.startFlat}} 止码 - {{item.endNumber}} + {{item.endFlat}} 电度电量 @@ -298,11 +298,11 @@ 起码 - {{item.startNumber}} + {{item.startValley}} 止码 - {{item.endNumber}} + {{item.endValley}} 电度电量 diff --git a/project.private.config.json b/project.private.config.json index fa793c0..e21c077 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -13,7 +13,7 @@ { "name": "childPackage/pages/billDetail/index", "pathName": "childPackage/pages/billDetail/index", - "query": "id=R00102714036256769&tiem=2025-03", + "query": "id=R00102714036256769&time=2025-03", "launchMode": "default", "scene": null }, From 3e9857bdcd472b8b33c9fe97cba5214bfb2e11f5 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Sun, 27 Apr 2025 08:59:56 +0800 Subject: [PATCH 39/60] =?UTF-8?q?=E8=B4=A6=E5=8D=95=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=B3=B0=E8=B0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 3 +- childPackage/pages/billDetail/index.js | 17 ++- childPackage/pages/billDetail/index.wxml | 144 +++++++++++++++-------- childPackage/pages/billDetail/index.wxss | 29 ++++- pages/billMeterDetail/index.js | 87 ++++++++++++++ pages/billMeterDetail/index.json | 10 ++ pages/billMeterDetail/index.wxml | 45 +++++++ pages/billMeterDetail/index.wxss | 22 ++++ project.private.config.json | 2 +- utils/index.js | 10 +- 10 files changed, 315 insertions(+), 54 deletions(-) create mode 100644 pages/billMeterDetail/index.js create mode 100644 pages/billMeterDetail/index.json create mode 100644 pages/billMeterDetail/index.wxml create mode 100644 pages/billMeterDetail/index.wxss diff --git a/app.json b/app.json index c4c9274..7a5d6ce 100644 --- a/app.json +++ b/app.json @@ -32,7 +32,8 @@ "pages/discountCoupon/index", "pages/integralRecord/index", "pages/meterList/index", - "pages/workBench/components/tenement/components/createTenement/index" + "pages/workBench/components/tenement/components/createTenement/index", + "pages/billMeterDetail/index" ], "subPackages": [ { diff --git a/childPackage/pages/billDetail/index.js b/childPackage/pages/billDetail/index.js index 8a8a364..03f75bf 100644 --- a/childPackage/pages/billDetail/index.js +++ b/childPackage/pages/billDetail/index.js @@ -2,8 +2,11 @@ import { getReportDetail } from "../../../service/report"; import { alertInfo, alertSuccess, getPixelRatio, loadingFunc } from "../../../utils/index"; import request from '../../../utils/request' import * as echarts from '../../components/echarts/echarts'; +import { getRoundNumber } from "../../../utils/index" const { OK } = request + + // pages/billDetail/index.js Page({ @@ -53,8 +56,11 @@ Page({ detail, amount: amount, meters: detail?.meters?.map(item => { - const finalAmount = Number(item?.overall?.amount || 0) + Number(item?.loss?.amount || 0) + Number(item?.publicAmount || 0) - item.finalAmount = Number(finalAmount).toFixed(2) + if (item?.loss?.amount) { + item.loss.amount = getRoundNumber(Number(item.loss.amount)) + } + // const finalAmount = Number(item?.overall?.amount || 0) + Number(item?.loss?.amount || 0) + Number(item?.publicAmount || 0) + item.finalAmount = getRoundNumber(Number(item.finalAmount)) return item; }) }) @@ -162,6 +168,13 @@ Page({ return pieChart; }); }, + jumpToDetail(e) { + const { meter } = e.currentTarget.dataset; + console.log("meter", meter) + wx.navigateTo({ + url: '/pages/billMeterDetail/index?data=' + JSON.stringify(meter), + }) + }, download() { const { id: tenement } = wx.getStorageSync('tenement') const { id } = this.data; diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml index c5c483b..163053b 100644 --- a/childPackage/pages/billDetail/index.wxml +++ b/childPackage/pages/billDetail/index.wxml @@ -1,7 +1,7 @@ - + @@ -19,7 +19,7 @@ 账单周期: - {{ detail.comprehensive.startDate }} 至 {{ detail.comprehensive.endDate }} + {{ detail.comprehensive.startDate }} 至 {{ detail.comprehensive.endDate }} 下载 @@ -50,14 +50,7 @@ 电费构成 - + (本月电量+本月线损电量)*电单价+摊薄公摊电费+摊薄调整电费 @@ -113,7 +106,7 @@ 本期用电量 - {{ amount }} 千瓦时 + {{ detail.comprehensive.finalAmount }} 千瓦时 @@ -126,40 +119,28 @@ 分时明细 - + 分时电量 (千瓦时) - 尖: {{ detail.comprehensive.sharpAmount }} - 峰: {{ detail.comprehensive.peakAmount }} - 平: {{ detail.comprehensive.flatAmount }} - 谷: {{ detail.comprehensive.valleyAmount }} + 尖: {{ detail.comprehensive.sharpAmount }} + 峰: {{ detail.comprehensive.peakAmount }} + 平: {{ detail.comprehensive.flatAmount }} + 谷: {{ detail.comprehensive.valleyAmount }} - + 分时单价 (元/千瓦时) - 尖: {{ detail.comprehensive.priceSharp }} - 峰: {{ detail.comprehensive.pricePeak }} - 平: {{ detail.comprehensive.priceFlat }} - 谷: {{ detail.comprehensive.priceValley }} - - - - - - 分时电费 - (元) - - 尖: {{ detail.comprehensive.sharpFee }} - 峰: {{ detail.comprehensive.peakFee }} - 平: {{ detail.comprehensive.flatFee }} - 谷: {{ detail.comprehensive.valleyFee }} + 尖: {{ detail.comprehensive.priceSharp }} + 峰: {{ detail.comprehensive.pricePeak }} + 平: {{ detail.comprehensive.priceFlat }} + 谷: {{ detail.comprehensive.priceValley }} @@ -169,46 +150,117 @@ 分时电量明细 - - - + + +
+ {{item.address}} + 详情 +
+ + + + 电度电量 + + + 线损电量 + + + 合计电量 + + + 合计电费 + + + + + {{item.overall.amount}} + + + + {{item.loss.amount}} + + + + {{item.finalAmount}} + + + + {{item.finalTotal}} + + + +
+ +
\ No newline at end of file diff --git a/childPackage/pages/billDetail/index.wxss b/childPackage/pages/billDetail/index.wxss index b84fb51..4ec732c 100644 --- a/childPackage/pages/billDetail/index.wxss +++ b/childPackage/pages/billDetail/index.wxss @@ -74,7 +74,7 @@ page { .colContentValue2 { padding-bottom: 20rpx; - padding-left: 20rpx; + padding-left: 40rpx; overflow: hidden; } @@ -100,10 +100,37 @@ page { background-color: #fff; box-sizing: border-box; flex: 1; + word-break: break-all; } .download { position: absolute; top: 20rpx; right: 20rpx; +} + +.meterListItem { + font-size: 32rpx; +} + +.meterListItem .top { + display: flex; + align-items: center; +} + +.meterListItem .address { + flex: 1; +} + + +/* .top .meterListItem:nth-child(even) .tableContent, +.bottom .meterListItem:nth-child(even) .tableContent, +.top .meterListItem:nth-child(even), +.bottom .meterListItem:nth-child(even) +{ + +} */ + +.meterListItemContent, .meterListItemContent .tableContent { + background-color: #fff; } \ No newline at end of file diff --git a/pages/billMeterDetail/index.js b/pages/billMeterDetail/index.js new file mode 100644 index 0000000..a768265 --- /dev/null +++ b/pages/billMeterDetail/index.js @@ -0,0 +1,87 @@ +// pages/billMeterDetail/index.js +import { getRoundNumber } from "../../utils/index" +Page({ + + /** + * 页面的初始数据 + */ + data: { + data: {}, + headers: [ + { key: 'type', title: '' }, + { title: '尖',renderBody: (item) => { return item?.sharp } }, + { title: '峰',renderBody: (item) => { return item?.peak } }, + { title: '平',renderBody: (item) => { return item?.flat } }, + { title: '谷',renderBody: (item) => { return item?.valley } }, + ], + list: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + const data = JSON.parse(options.data) || {} + 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) }, + ] + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/billMeterDetail/index.json b/pages/billMeterDetail/index.json new file mode 100644 index 0000000..40cb5d6 --- /dev/null +++ b/pages/billMeterDetail/index.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "navigator": "/components/navigator/index", + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index", + "van-field": "@vant/weapp/field/index", + "table": "/components/table/table" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/billMeterDetail/index.wxml b/pages/billMeterDetail/index.wxml new file mode 100644 index 0000000..1f3b039 --- /dev/null +++ b/pages/billMeterDetail/index.wxml @@ -0,0 +1,45 @@ + + + + + + + +
+ + + + + + 电度电量:{{data.overall.amount}} + + + + + 电度电费:{{data.overall.fee}} + + + + + diff --git a/pages/billMeterDetail/index.wxss b/pages/billMeterDetail/index.wxss new file mode 100644 index 0000000..49322eb --- /dev/null +++ b/pages/billMeterDetail/index.wxss @@ -0,0 +1,22 @@ +/* pages/billMeterDetail/index.wxss */ +.infoItem { + word-break: break-all; +} + +.contentWrapper { + margin: 20rpx; +} + +.table { + border: 1rpx solid rgba(204,204,204,.5); + margin-bottom: 40rpx; +} + +.total { + padding-top: 30rpx; + padding-bottom: 40rpx; +} + +.totalNumber { + word-break: break-all; +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index e21c077..710c626 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -13,7 +13,7 @@ { "name": "childPackage/pages/billDetail/index", "pathName": "childPackage/pages/billDetail/index", - "query": "id=R00102714036256769&time=2025-03", + "query": "id=R00103882183475201&time=2025-03", "launchMode": "default", "scene": null }, diff --git a/utils/index.js b/utils/index.js index 1389446..63a9360 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,10 +45,10 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" + // api = "http://localhost:8000" // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/api3" - // api = "https://zgd.hbhcbn.com/wxApi" + api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; // 体验版 @@ -249,4 +249,8 @@ export function getFileName(path) { export function replaceSpecialIcon(str) { return str.replace(/#/g, escape("#")) -} \ No newline at end of file +} + +export function getRoundNumber(number) { + return (Math.round(number * 100) / 100).toFixed(2) +} From 028d695debb06968cef21711186dd7955c30f4ef Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Sun, 27 Apr 2025 17:39:33 +0800 Subject: [PATCH 40/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/billDetail/index.wxml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml index 163053b..898360d 100644 --- a/childPackage/pages/billDetail/index.wxml +++ b/childPackage/pages/billDetail/index.wxml @@ -53,7 +53,7 @@ - (本月电量+本月线损电量)*电单价+摊薄公摊电费+摊薄调整电费 + (电度电量+线损电量)*电单价+摊薄公摊电费+摊薄调整电费 电量明细 @@ -146,7 +146,7 @@ - (电量+线损电量)*单价+摊薄公摊电费+摊薄调整电费 + (电度电量+线损电量)*单价+摊薄公摊电费+摊薄调整电费 分时电量明细 From 4d665588acd1166df3a5ea7664f70acb879be53a Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 12 May 2025 14:04:17 +0800 Subject: [PATCH 41/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E7=94=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/billDetail/index.wxml | 190 -------------------- childPackage/pages/electricQuery/index.js | 70 +++++++- childPackage/pages/electricQuery/index.wxml | 9 +- service/park.js | 5 + utils/index.js | 6 +- 5 files changed, 79 insertions(+), 201 deletions(-) diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml index 898360d..26cc9d4 100644 --- a/childPackage/pages/billDetail/index.wxml +++ b/childPackage/pages/billDetail/index.wxml @@ -190,196 +190,6 @@ - - \ No newline at end of file diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index 7f32ce0..edf1664 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -1,6 +1,7 @@ // pages/electricQuery/index.js import { exportElectricityList, getAccountingList, getElectricityList, getMeterReadingList } from "../../../service/accounting"; import { getTenementMeterList } from "../../../service/meter"; +import { getParkInfoByTime } from "../../../service/park"; import dayjs from "../../../utils/dayjs"; import request from '../../../utils/request'; import * as echarts from '../../components/echarts/echarts'; @@ -29,11 +30,18 @@ Page({ header: [ - { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, + // { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, { title: '时间',renderBody: (item) => { return item.time } }, { key: 'number', title: '耗量' }, ], - + valleyHeader: [ + // { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, + { title: '时间',renderBody: (item) => { return item.time } }, + { key: 'number', title: '尖' }, + { key: 'number', title: '峰' }, + { key: 'number', title: '平' }, + { key: 'number', title: '谷' }, + ], list: [], visible: false, @@ -76,7 +84,7 @@ Page({ }, changeTimeType(e) { - const { type } = e.currentTarget.dataset + const { type } = e.currentTarget.dataset; const that = this; this.setData({ timeType: type }, () => { loadingFunc(async () => { @@ -235,15 +243,39 @@ Page({ alertInfo(message) return; } - + const first = data?.[0] this.setData({ meterList: data || [], + meterId: first?.id, + meterAddress: first?.address, + meterCode: first?.code, + }, () => { + const { queryType, } = this.data; + switch(queryType) { + case 1: + loadingFunc(async () => { + await this.getReadingList(); + }) + break; + case 2: + loadingFunc(async () => { + await this.getAccountingBalanceList(); + }) + break; + default: + loadingFunc(async () => { + await this.init(); + }) + break; + } }) }, clickMeter() { this.setData({ type: "meter", - columns: [{ id: "", name: "全部", code: "" }, ...this.data.meterList.map(item => ({ id: item.id, name: `${item.code}-${item.address}`, code: item.code }))], + columns: [ + // { id: "", name: "全部", code: "" }, + ...this.data.meterList.map(item => ({ id: item.id, name: `${item.code}-${item.address}`, code: item.code }))], show: true, title: "表计" }) @@ -257,11 +289,12 @@ Page({ }) }, onOk(e) { - const { id, code } = e.detail.value; + const { id, code, address } = e.detail.value; this.setData({ // year: currentYear, meterId: id, meterCode: code, + meterAddress: address, type: "", show: false, title: "" @@ -339,8 +372,31 @@ Page({ */ onShow() { this.getMeters() + this.getParkInfo() + }, + async getParkInfo() { + const park = wx.getStorageSync('park'); + const { timeType, yearMonthDay, yearMonth, year } = this.data; + let time = '' + switch(timeType) { + case 0: + time = yearMonthDay; + break; + case 1: + time = yearMonth; + break; + case 2: + time = year; + } + const { data, code, message } = await getParkInfoByTime(park?.id, `${time}`, `${timeType}`,) + if (code !== OK) { + alertInfo(message) + return; + } + this.setData({ + parkInfo: data + }) }, - /** * 生命周期函数--监听页面隐藏 */ diff --git a/childPackage/pages/electricQuery/index.wxml b/childPackage/pages/electricQuery/index.wxml index 9190d29..ba275fe 100644 --- a/childPackage/pages/electricQuery/index.wxml +++ b/childPackage/pages/electricQuery/index.wxml @@ -7,7 +7,7 @@ - {{ meterCode === "" ? '全部' : meterCode }} + {{ meterAddress === "" ? '-' : meterAddress }} @@ -81,7 +81,12 @@ --> - + 合计:表计数量:{{meterNumber}},耗电量:{{electricNumber}} diff --git a/service/park.js b/service/park.js index a4b8090..633f289 100644 --- a/service/park.js +++ b/service/park.js @@ -15,4 +15,9 @@ export const getLoginParkList = async function({ keyword }) { // 获取建筑列表 export const getParkBuildingList = async function(pid) { return await GET(`/vx/park/${pid}/building`); +} + +// 获取指定园区指定月份核算的详细信息 +export const getParkInfoByTime = async function(pid, period, method) { + return await GET(`/park/getReportParkIndex/${pid}?period=${period}&method=${method}`); } \ No newline at end of file diff --git a/utils/index.js b/utils/index.js index 63a9360..51e01f4 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,10 +45,10 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" + api = "http://localhost:8000" // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/api3" - api = "https://zgd.hbhcbn.com/wxApi" + // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; // 体验版 @@ -198,9 +198,11 @@ export const wxLogin = () => { resolve(res.code) return } + alertInfo("未进行微信登录") reject() }, fail: err => { + alertError(err) reject(err) } }) From e637bbf8a8207ed27ecf50d8ff420d6b66695cea Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Mon, 12 May 2025 17:31:24 +0800 Subject: [PATCH 42/60] =?UTF-8?q?=E7=94=A8=E7=94=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B0=96=E5=B3=B0=E5=B9=B3=E8=B0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../electricQuery/components/reading/index.js | 1 + .../components/reading/index.wxml | 30 +++++++++++ childPackage/pages/electricQuery/index.js | 53 ++++++++++++++----- childPackage/pages/electricQuery/index.wxml | 10 +++- 4 files changed, 80 insertions(+), 14 deletions(-) diff --git a/childPackage/pages/electricQuery/components/reading/index.js b/childPackage/pages/electricQuery/components/reading/index.js index 850cfc1..2e707dc 100644 --- a/childPackage/pages/electricQuery/components/reading/index.js +++ b/childPackage/pages/electricQuery/components/reading/index.js @@ -12,6 +12,7 @@ Component({ */ properties: { meter: String, + ParkInfo: Object, }, observers: { 'meter': function() { diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml index f9d7c8c..18b197e 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxml +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -66,6 +66,36 @@ border="{{ false }}" label="表字" readonly + wx:if="{{parkInfo.category !== 1}}" + /> + + + + + diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index edf1664..0c628d3 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -37,14 +37,13 @@ Page({ valleyHeader: [ // { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, { title: '时间',renderBody: (item) => { return item.time } }, - { key: 'number', title: '尖' }, - { key: 'number', title: '峰' }, - { key: 'number', title: '平' }, - { key: 'number', title: '谷' }, + { key: 'critical', title: '尖' }, + { key: 'peak', title: '峰' }, + { key: 'flat', title: '平' }, + { key: 'valley', title: '谷' }, ], list: [], visible: false, - accountingList: [], electricNumber: 0, meterNumber: 0, @@ -98,11 +97,13 @@ Page({ */ onLoad(options) { loadingFunc(async () => { + await this.getMeters() + await this.getParkInfo() await this.init() }) }, async init() { - const { queryType, timeType, meterId, year, yearMonth, yearMonthDay, page } = this.data; + const { queryType, timeType, meterId, year, yearMonth, yearMonthDay, page, parkInfo } = this.data; let time; switch(timeType) { case 1: @@ -148,7 +149,7 @@ Page({ trigger: 'axis' }, legend: { - data: data?.map(item => item?.meter?.address), + data: parkInfo?.category === 1 ? ["尖", "峰", "平", "谷"] : data?.map(item => item?.meter?.address), }, grid: { left: '3%', @@ -164,7 +165,28 @@ Page({ yAxis: { type: 'value' }, - series: ids?.map(item => { + series: parkInfo?.category === 1 ? [ + { + name: "尖", + type: 'line', + data: data?.map(item => Number(item?.critical || 0)) + }, + { + name: "峰", + type: 'line', + data: data?.map(item => Number(item?.peak || 0)) + }, + { + name: "平", + type: 'line', + data: data?.map(item => Number(item?.flat || 0)) + }, + { + name: "谷", + type: 'line', + data: data?.map(item => Number(item?.valley || 0)) + } + ] : ids?.map(item => { const element = data?.find(i => i?.meter?.id === item) const list = data?.filter(ele => ele?.meter?.id === item) const newList = [...times].map(item => { @@ -371,8 +393,7 @@ Page({ * 生命周期函数--监听页面显示 */ onShow() { - this.getMeters() - this.getParkInfo() + }, async getParkInfo() { const park = wx.getStorageSync('park'); @@ -393,9 +414,17 @@ Page({ alertInfo(message) return; } - this.setData({ - parkInfo: data + const that = this; + return new Promise((resolve) => { + + that.setData({ + parkInfo: data + }, () => { + resolve() + }) }) + + }, /** * 生命周期函数--监听页面隐藏 diff --git a/childPackage/pages/electricQuery/index.wxml b/childPackage/pages/electricQuery/index.wxml index ba275fe..0733d42 100644 --- a/childPackage/pages/electricQuery/index.wxml +++ b/childPackage/pages/electricQuery/index.wxml @@ -85,7 +85,13 @@ list="{{list}}" header="{{header}}" totalPage="{{totalPage}}" - + wx:if="{{parkInfo.category !== 1}}" + /> + @@ -93,7 +99,7 @@ - + From 5c202e99a6c36f90fe4d02d398a6753a2fb09481 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 13 May 2025 08:39:41 +0800 Subject: [PATCH 43/60] =?UTF-8?q?=E6=8A=84=E8=A1=A8=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B0=96=E5=B3=B0=E5=B9=B3=E8=B0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/electricQuery/components/reading/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/childPackage/pages/electricQuery/components/reading/index.js b/childPackage/pages/electricQuery/components/reading/index.js index 2e707dc..072b0fb 100644 --- a/childPackage/pages/electricQuery/components/reading/index.js +++ b/childPackage/pages/electricQuery/components/reading/index.js @@ -12,7 +12,7 @@ Component({ */ properties: { meter: String, - ParkInfo: Object, + parkInfo: Object, }, observers: { 'meter': function() { From a3c4e78c225687538f7aed00d99d243c10c2733e Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 13 May 2025 09:15:51 +0800 Subject: [PATCH 44/60] =?UTF-8?q?=E7=94=B5=E9=87=8F=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B3=B0=E8=B0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/electricQuery/components/reading/index.wxml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml index 18b197e..5820358 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxml +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -70,7 +70,7 @@ /> Date: Wed, 14 May 2025 09:57:14 +0800 Subject: [PATCH 45/60] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=97=A0=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/invoiceDetail/index.js | 22 ++++++++++++++++++++-- utils/request.js | 6 +++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/pages/invoiceDetail/index.js b/pages/invoiceDetail/index.js index 7aa75fd..6aeb534 100644 --- a/pages/invoiceDetail/index.js +++ b/pages/invoiceDetail/index.js @@ -85,8 +85,26 @@ Page({ }, fail: function (e) { - alertError("打开失败") - console.log('打开失败错误为', e) + // alertError("打开失败") + // console.log('打开失败错误为', e) + wx.showModal({ + title: '提示', + content: '打开失败,请复制链接后通过浏览器打开', + complete: (res) => { + if (res.cancel) { + + } + + if (res.confirm) { + wx.setClipboardData({ + data: data, + success: () => { + alertSuccess("复制成功") + } + }) + } + } + }) } }) } diff --git a/utils/request.js b/utils/request.js index ed79254..cb87401 100644 --- a/utils/request.js +++ b/utils/request.js @@ -80,7 +80,11 @@ const request = async function (options, config = {}) { const parseResponse = function (response, url) { console.log('response', response) if (!response) { - alertError("服务无响应") + wx.redirectTo({ + url: '/pages/login/index', + }) + wx.clearStorageSync() + alertError("无响应,请重试") return } From 10a0fd7c19074a2cd68307cb4008af1767d2f77a Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 14 May 2025 13:11:43 +0800 Subject: [PATCH 46/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=B5=E9=87=8F?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=9A=84=E8=B4=A6=E5=8A=A1=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/accountingCard/index.wxml | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/childPackage/pages/electricQuery/components/accountingCard/index.wxml b/childPackage/pages/electricQuery/components/accountingCard/index.wxml index 45e6978..5cae3e3 100644 --- a/childPackage/pages/electricQuery/components/accountingCard/index.wxml +++ b/childPackage/pages/electricQuery/components/accountingCard/index.wxml @@ -4,30 +4,38 @@ {{data.meter.address}} - + 初始余额 + + {{data.startMoney}} + + + 储值累计金额 - - 电费 - - - 账务余额 - - - {{data.startMoney}} - - + {{data.rechargeMoney}} - + + + + 电费 + + {{data.electricMoney}} - + + + + + 账务余额 + + + + {{data.currentMoney}} - \ No newline at end of file From 7772b3de1ab0b3146d4cf49cc2220e2de275282b Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Fri, 6 Jun 2025 17:08:06 +0800 Subject: [PATCH 47/60] =?UTF-8?q?=E5=BC=80=E7=A5=A8=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=EF=BC=8C=E7=82=B9=E5=87=BB=E5=BC=80=E7=A5=A8=E5=85=88?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=88=B0=E5=BC=80=E7=A5=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=EF=BC=8C=E4=BB=8E=E6=8E=A5=E5=8F=A3=E6=88=90=E5=8A=9F=E5=90=8E?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E6=94=B9=E6=88=90=E7=9B=B4=E6=8E=A5=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=EF=BC=8C=E7=94=B1=E5=90=8E=E7=AB=AF=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=98=BE=E7=A4=BA=EF=BC=8C=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E6=83=85=E5=86=B5=E4=B8=8B=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=97=A0=E8=BF=94=E5=9B=9E=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=8D=A1=E6=AD=BB=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=90=8E=E7=94=A8=E6=88=B7=E9=87=8D=E5=A4=8D=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=A4=9A=E5=BC=80=E5=8F=91=E7=A5=A8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BB=A5=E5=8F=8Apdf=E5=8F=B3?= =?UTF-8?q?=E4=B8=8A=E8=A7=92=E9=BB=98=E8=AE=A4=E5=B1=95=E7=A4=BA=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/electricQuery/index.js | 1 + pages/invoiceDetail/index.js | 1 + pages/invoiceList/components/already/index.js | 9 +++++++++ pages/invoiceList/components/already/index.wxml | 3 +++ pages/invoicing/index.js | 11 +++++------ pages/rechargeDetail/index.js | 1 + utils/index.js | 5 ++--- 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index 0c628d3..f3698e5 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -232,6 +232,7 @@ Page({ wx.openDocument({ filePath: data.tempFilePath, fileType: ['xlsx'], + showMenu: true, success() { }, fail(err) { diff --git a/pages/invoiceDetail/index.js b/pages/invoiceDetail/index.js index 6aeb534..8414c5c 100644 --- a/pages/invoiceDetail/index.js +++ b/pages/invoiceDetail/index.js @@ -80,6 +80,7 @@ Page({ } wx.openDocument({ filePath: res.tempFilePath, + showMenu: true, // fileType: sheetRes.tapIndex === 0 ? 'xml' : "pdf", // 3. 这个必须写合法类型,不然下载不了 !!! success: function (res) { diff --git a/pages/invoiceList/components/already/index.js b/pages/invoiceList/components/already/index.js index ca71d3d..be14240 100644 --- a/pages/invoiceList/components/already/index.js +++ b/pages/invoiceList/components/already/index.js @@ -43,6 +43,15 @@ Component({ page: page + 1, }) }, + refresh() { + const that = this; + that.setData({ + page: 1, + list: [] + }, () => { + loadingFunc(() => that.getList()) + }) + }, onRefresh() { loadingFunc(() => this.getList()) }, diff --git a/pages/invoiceList/components/already/index.wxml b/pages/invoiceList/components/already/index.wxml index c380db2..ce02d3a 100644 --- a/pages/invoiceList/components/already/index.wxml +++ b/pages/invoiceList/components/already/index.wxml @@ -2,6 +2,9 @@ + + 刷新 + diff --git a/pages/invoicing/index.js b/pages/invoicing/index.js index 49df63d..80041f8 100644 --- a/pages/invoicing/index.js +++ b/pages/invoicing/index.js @@ -82,18 +82,17 @@ Page({ loadingFunc(async() => { const {ids = [], remark } = this.data; const tenement = wx.getStorageSync('tenement') + setTimeout(() => { + wx.redirectTo({ + url: '/pages/invoiceList/index?tab=1', + }) + }, 500) const { code, message, data } = await makeInvoice({ ids, tenement: tenement.id, remark }) if (code !== OK) { alertInfo(message) return; } alertSuccess("操作成功") - setTimeout(() => { - wx.redirectTo({ - url: '/pages/invoiceList/index?tab=1', - }) - }, 500) - }) }, changeShow() { diff --git a/pages/rechargeDetail/index.js b/pages/rechargeDetail/index.js index dcf73f0..c75c42f 100644 --- a/pages/rechargeDetail/index.js +++ b/pages/rechargeDetail/index.js @@ -94,6 +94,7 @@ Page({ wx.openDocument({ filePath: res.tempFilePath, fileType: [ "pdf"], // 3. 这个必须写合法类型,不然下载不了 !!! + showMenu: true, success: function (res) { resolve() }, diff --git a/utils/index.js b/utils/index.js index 51e01f4..ef5e122 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,10 +45,9 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" + // api = "http://localhost:8000" // api = "https://zgd.hbhcbn.com/api3" - // api = "https://zgd.hbhcbn.com/api3" - // api = "https://zgd.hbhcbn.com/wxApi" + api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; // 体验版 From a36faa9bcb7619a803409730ea6089949a94bef1 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 11 Jun 2025 08:59:40 +0800 Subject: [PATCH 48/60] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=85=AC=E4=BC=97=E5=8F=B7=E8=B7=B3=E8=BD=AC=E8=B4=A6=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/billDetail/index.js | 9 +++++---- pages/billList/index.js | 3 ++- pages/invoiceList/components/already/index.wxml | 2 +- service/report.js | 4 ++-- utils/index.js | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/childPackage/pages/billDetail/index.js b/childPackage/pages/billDetail/index.js index 03f75bf..ed80879 100644 --- a/childPackage/pages/billDetail/index.js +++ b/childPackage/pages/billDetail/index.js @@ -38,14 +38,15 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - const { id, time } = options; + const { id, time, tenement } = options; const that = this; loadingFunc(async () => { - await that.init(id, time); + await that.init(id, time, tenement); }) }, - async init(id, time) { - const { code, message, detail, amount } = await getReportDetail(id) + async init(id, time, tenement) { + console.log("time:", tenement) + const { code, message, detail, amount } = await getReportDetail(id, tenement) if (code !== OK) { alertInfo(message) return; diff --git a/pages/billList/index.js b/pages/billList/index.js index 30120f8..8484b57 100644 --- a/pages/billList/index.js +++ b/pages/billList/index.js @@ -41,8 +41,9 @@ Page({ }, jumpToDetail(e) { const { id: report } = e.currentTarget.dataset + const tenement = wx.getStorageSync('tenement')?.id || "" wx.navigateTo({ - url: '/childPackage/pages/billDetail/index?id=' + report, + url: `/childPackage/pages/billDetail/index?id=${report}&tenement=${tenement}`, }) }, }) \ No newline at end of file diff --git a/pages/invoiceList/components/already/index.wxml b/pages/invoiceList/components/already/index.wxml index ce02d3a..dcb4201 100644 --- a/pages/invoiceList/components/already/index.wxml +++ b/pages/invoiceList/components/already/index.wxml @@ -31,7 +31,7 @@ - 审核中 + 开票中 已开票 diff --git a/service/report.js b/service/report.js index cc12aff..66062e0 100644 --- a/service/report.js +++ b/service/report.js @@ -2,7 +2,7 @@ import apis from '../utils/request'; const { GET, POST, PUT, DELETE } = apis // 获取电费账单 -export const getReportDetail = async function(id) { +export const getReportDetail = async function(id, tid) { const tenement = wx.getStorageSync('tenement') - return await GET(`/report/${id}/tenement/${tenement?.id}`); + return await GET(`/report/${id}/tenement/${tid || tenement?.id}`); } \ No newline at end of file diff --git a/utils/index.js b/utils/index.js index ef5e122..e909304 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,9 +45,9 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" + api = "http://localhost:8000" // api = "https://zgd.hbhcbn.com/api3" - api = "https://zgd.hbhcbn.com/wxApi" + // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; // 体验版 From 7bd4da3c843f27284b75fa568ed2ef5c8b27be0d Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 17 Jun 2025 17:30:51 +0800 Subject: [PATCH 49/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=84=E8=A1=A8?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=B3=B0=E8=B0=B7=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../electricQuery/components/reading/index.js | 27 +++++++++++++++++++ .../components/reading/index.wxml | 11 ++++---- childPackage/pages/electricQuery/index.js | 11 +++++--- childPackage/pages/electricQuery/index.wxml | 2 +- utils/index.js | 4 +-- 5 files changed, 44 insertions(+), 11 deletions(-) diff --git a/childPackage/pages/electricQuery/components/reading/index.js b/childPackage/pages/electricQuery/components/reading/index.js index 072b0fb..6a5347e 100644 --- a/childPackage/pages/electricQuery/components/reading/index.js +++ b/childPackage/pages/electricQuery/components/reading/index.js @@ -2,6 +2,7 @@ import { exportElectricityList, getAccountingList, getElectricityList, getMeterReadingList } from "../../../../../service/accounting"; import { getTenementMeterList } from "../../../../../service/meter"; import dayjs from "../../../../../utils/dayjs"; +import { getParkInfoByTime } from "../../../../../service/park"; import request from '../../../../../utils/request'; import { alertInfo, getPixelRatio, loadingFunc } from "../../../../../utils/index"; const { OK } = request; @@ -19,6 +20,9 @@ Component({ loadingFunc(async () => { await this.getReadingList(); }) + }, + "parkInfo": function(newValue) { + this.setData({ park: newValue }) } }, /** @@ -27,6 +31,7 @@ Component({ data: { readingDetailShow: false, readingDetail: {}, + park: {}, meterReadingHeader: [ { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, { title: '倍率', key: 'ratio' }, @@ -76,10 +81,32 @@ Component({ readingPage: 1, }, () => { loadingFunc(async () => { + console.log("----------") + await this.getParkInfo(time) + console.log("===========") await this.getReadingList(); }) }) + }, + async getParkInfo(time) { + const park = wx.getStorageSync('park'); + const { park:parkInfo, code, message } = await getParkInfoByTime(park?.id, `${time}`, `${0}`,) + if (code !== OK) { + alertInfo(message) + return; + } + const that = this; + return new Promise((resolve) => { + + that.setData({ + parkInfo: parkInfo + }, () => { + resolve() + }) + }) + + }, showDetail(e) { const { index, data = {} } = e.detail; diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml index 5820358..204d925 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxml +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -66,7 +66,7 @@ border="{{ false }}" label="表字" readonly - wx:if="{{parkInfo.category !== 1}}" + wx:if="{{park.meter04kvType !== 1}}" /> + \ No newline at end of file diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index f3698e5..3947497 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -356,6 +356,7 @@ Page({ case "year": this.setData({ year: time, visible: false, }, () => { loadingFunc(async () => { + await this.getParkInfo() await this.init(); }) }); @@ -364,6 +365,7 @@ Page({ const [year, month] = time.split("-") this.setData({ yearMonth: time, yearMonthStamp: new Date(Number(year), Number(month) - 1, 1).getTime(), visible: false }, () => { loadingFunc(async () => { + await this.getParkInfo() await this.init(); }) }); @@ -376,13 +378,16 @@ Page({ page: 1, }, () => { loadingFunc(async () => { + await this.getParkInfo() await this.init(); }) }) break; } }, - + readingChangeTime(e) { + console.log('e', e.detail) + }, /** * 生命周期函数--监听页面初次渲染完成 */ @@ -410,7 +415,7 @@ Page({ case 2: time = year; } - const { data, code, message } = await getParkInfoByTime(park?.id, `${time}`, `${timeType}`,) + const { park:parkInfo, code, message } = await getParkInfoByTime(park?.id, `${time}`, `${timeType}`,) if (code !== OK) { alertInfo(message) return; @@ -419,7 +424,7 @@ Page({ return new Promise((resolve) => { that.setData({ - parkInfo: data + parkInfo: parkInfo }, () => { resolve() }) diff --git a/childPackage/pages/electricQuery/index.wxml b/childPackage/pages/electricQuery/index.wxml index 0733d42..3598af7 100644 --- a/childPackage/pages/electricQuery/index.wxml +++ b/childPackage/pages/electricQuery/index.wxml @@ -99,7 +99,7 @@ - + diff --git a/utils/index.js b/utils/index.js index e909304..d2bfee7 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,8 +45,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" - // api = "https://zgd.hbhcbn.com/api3" + // api = "http://localhost:8000" + api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; From ac0a4b02c721c45a47e01a0ff091556912d66c3b Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 16 Jul 2025 17:33:15 +0800 Subject: [PATCH 50/60] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E5=92=8C=E9=A6=96=E9=A1=B5=E7=9A=84=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 3 +- components/DateTimePicker/index.js | 37 +++++++ components/DateTimePicker/index.json | 7 ++ components/DateTimePicker/index.wxml | 18 ++++ components/DateTimePicker/index.wxss | 1 + components/timePicker/index.js | 1 + pages/home/index.js | 6 ++ pages/home/index.wxml | 7 +- pages/home/index.wxss | 4 + pages/meterBalanceRecord/index.js | 98 +++++++++++++++++++ pages/meterBalanceRecord/index.json | 8 ++ pages/meterBalanceRecord/index.wxml | 22 +++++ pages/meterBalanceRecord/index.wxss | 26 +++++ pages/my/index.js | 30 ++++-- pages/my/index.wxml | 19 +++- pages/my/index.wxss | 3 + .../tenement/components/bindMeter/index.js | 29 ++++-- .../tenement/components/bindMeter/index.json | 3 +- .../tenement/components/bindMeter/index.wxml | 21 +++- .../tenement/components/unBindMeter/index.js | 20 +++- .../components/unBindMeter/index.json | 4 +- .../components/unBindMeter/index.wxml | 21 +++- pages/workBench/components/tenement/index.js | 3 + .../workBench/components/tenement/index.wxml | 2 +- utils/index.js | 4 +- 25 files changed, 368 insertions(+), 29 deletions(-) create mode 100644 components/DateTimePicker/index.js create mode 100644 components/DateTimePicker/index.json create mode 100644 components/DateTimePicker/index.wxml create mode 100644 components/DateTimePicker/index.wxss create mode 100644 pages/meterBalanceRecord/index.js create mode 100644 pages/meterBalanceRecord/index.json create mode 100644 pages/meterBalanceRecord/index.wxml create mode 100644 pages/meterBalanceRecord/index.wxss diff --git a/app.json b/app.json index 7a5d6ce..8562e5a 100644 --- a/app.json +++ b/app.json @@ -33,7 +33,8 @@ "pages/integralRecord/index", "pages/meterList/index", "pages/workBench/components/tenement/components/createTenement/index", - "pages/billMeterDetail/index" + "pages/billMeterDetail/index", + "pages/meterBalanceRecord/index" ], "subPackages": [ { diff --git a/components/DateTimePicker/index.js b/components/DateTimePicker/index.js new file mode 100644 index 0000000..4d57e85 --- /dev/null +++ b/components/DateTimePicker/index.js @@ -0,0 +1,37 @@ +// components/datePicker/index.js +import dayjs from "../../utils/dayjs" + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + show: Boolean, + }, + + /** + * 组件的初始数据 + */ + data: { + currentDate: new Date().getTime(), + maxDate: new Date().getTime(), + minDate: new Date(2024, 1, 1).getTime(), + }, + lifetimes: { + attached() { + console.log("attached", this.data.show) + } + }, + /** + * 组件的方法列表 + */ + methods: { + onCancel() { + this.triggerEvent("cancel") + }, + onConfirm(e) { + this.triggerEvent("confirm", { time: dayjs(e.detail).format("YYYY-MM-DD HH:mm:ss") }) + } + } +}) \ No newline at end of file diff --git a/components/DateTimePicker/index.json b/components/DateTimePicker/index.json new file mode 100644 index 0000000..c3ceac7 --- /dev/null +++ b/components/DateTimePicker/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "van-datetime-picker": "@vant/weapp/datetime-picker/index" + } +} \ No newline at end of file diff --git a/components/DateTimePicker/index.wxml b/components/DateTimePicker/index.wxml new file mode 100644 index 0000000..a9f405d --- /dev/null +++ b/components/DateTimePicker/index.wxml @@ -0,0 +1,18 @@ + + + + + + diff --git a/components/DateTimePicker/index.wxss b/components/DateTimePicker/index.wxss new file mode 100644 index 0000000..f025676 --- /dev/null +++ b/components/DateTimePicker/index.wxss @@ -0,0 +1 @@ +/* components/datePicker/index.wxss */ \ No newline at end of file diff --git a/components/timePicker/index.js b/components/timePicker/index.js index 093f07c..27ef8f1 100644 --- a/components/timePicker/index.js +++ b/components/timePicker/index.js @@ -23,6 +23,7 @@ Component({ year: String, month: Number, day: Number, + currentDate: Number, }, /** * 组件的初始数据 diff --git a/pages/home/index.js b/pages/home/index.js index 12760ed..cbea2c1 100644 --- a/pages/home/index.js +++ b/pages/home/index.js @@ -115,6 +115,12 @@ Page({ show: false, }) }, + jumpToMeterBalanceRecord(e) { + const id = e.currentTarget.dataset.id + wx.navigateTo({ + url: `/pages/meterBalanceRecord/index?id=${id}`, + }) + }, changeMoney(e) { const { money } = e.currentTarget.dataset; this.setData({ diff --git a/pages/home/index.wxml b/pages/home/index.wxml index dc81b19..a89aa84 100644 --- a/pages/home/index.wxml +++ b/pages/home/index.wxml @@ -60,7 +60,12 @@ 电表余额: - {{meter.money}} + {{meter.money}} --- + + + + 选择时间 + + + {{time}} + + + + + + + \ No newline at end of file diff --git a/pages/meterBalanceRecord/index.wxss b/pages/meterBalanceRecord/index.wxss new file mode 100644 index 0000000..de2bff8 --- /dev/null +++ b/pages/meterBalanceRecord/index.wxss @@ -0,0 +1,26 @@ +/* pages/meterBalanceRecord/index.wxss */ +.pageWrapper { + margin: 30rpx; +} + +.time { + flex: 1; + margin-left: 30rpx; + margin-right: 30rpx; + display: flex; + padding: 10rpx 20rpx; + border-radius: 12rpx; + border: 1rpx solid #ccc; + background-color: #fff; + } + + .timeChooseWrapper { + display: flex; + align-items: center; + font-size: 36rpx; + } + + + .timeText { + flex: 1; + } \ No newline at end of file diff --git a/pages/my/index.js b/pages/my/index.js index 1f3f353..e15b67b 100644 --- a/pages/my/index.js +++ b/pages/my/index.js @@ -144,15 +144,27 @@ Page({ }) }, connect() { - Dialog.alert({ - title: '提示', - message: '将进入咨询客服页面', - confirmButtonOpenType: "contact", - showCancelButton: true, - }).then(() => { - // on close - }); - + // Dialog.alert({ + // title: '提示', + // message: '将进入咨询客服页面', + // "confirm-button-open-type": "contact", + // showCancelButton: true, + // }).then(() => { + // // on close + // }); + this.setData({ + connectShow: true + }) + }, + bindConnect() { + this.setData({ + connectShow: false + }) + }, + bindCancelConnect() { + this.setData({ + connectShow: false + }) }, jumpToFinance() { wx.navigateTo({ diff --git a/pages/my/index.wxml b/pages/my/index.wxml index 5f675b8..5c0684b 100644 --- a/pages/my/index.wxml +++ b/pages/my/index.wxml @@ -69,6 +69,7 @@ /> + @@ -87,5 +88,19 @@ - - \ No newline at end of file + + + + + + + + diff --git a/pages/my/index.wxss b/pages/my/index.wxss index 95e91f8..94988c0 100644 --- a/pages/my/index.wxss +++ b/pages/my/index.wxss @@ -40,3 +40,6 @@ margin-top: 6rpx; } +.connect { + display: none; +} diff --git a/pages/workBench/components/tenement/components/bindMeter/index.js b/pages/workBench/components/tenement/components/bindMeter/index.js index 1261257..83ff8a3 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.js +++ b/pages/workBench/components/tenement/components/bindMeter/index.js @@ -23,7 +23,7 @@ Component({ * 组件的初始数据 */ data: { - + dateTimeShow: false, }, /** @@ -64,11 +64,19 @@ Component({ }) }, async onSubmit() { - const { overall, critical, peak, valley, park, tenement, meter } = 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, readAt: dayjs().format('YYYY-MM-DD HH:mm:ss') }) + const { overall, critical, peak, valley, park, tenement, meter, readAt } = 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, + readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss') + } + ) if (code !== OK) { alertInfo(message) return; @@ -101,6 +109,15 @@ Component({ overall: Number(data?.overall || 0), status: data?.breakType ? '合闸' : "分闸" }) + }, + dateTimeConfirm(e) { + this.setData({ readAt: e.detail.time, dateTimeShow: false }) + }, + dateTimeCancal(e) { + this.setData({ dateTimeShow: false }) + }, + onTimeFocus() { + this.setData({ dateTimeShow: true }) } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.json b/pages/workBench/components/tenement/components/bindMeter/index.json index b57afb9..3c2b870 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.json +++ b/pages/workBench/components/tenement/components/bindMeter/index.json @@ -4,6 +4,7 @@ "van-dialog": "@vant/weapp/dialog/index", "search-select": "/components/searchSelect/index", "van-field": "@vant/weapp/field/index", - "van-button": "@vant/weapp/button/index" + "van-button": "@vant/weapp/button/index", + "date-time-picker": "/components/DateTimePicker/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/bindMeter/index.wxml b/pages/workBench/components/tenement/components/bindMeter/index.wxml index 4a6c842..0e2ed30 100644 --- a/pages/workBench/components/tenement/components/bindMeter/index.wxml +++ b/pages/workBench/components/tenement/components/bindMeter/index.wxml @@ -38,6 +38,19 @@ readonly type="digit" /> + + + 选择 + + \ No newline at end of file +/> + + diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.js b/pages/workBench/components/tenement/components/unBindMeter/index.js index 32d94ca..ebdda83 100644 --- a/pages/workBench/components/tenement/components/unBindMeter/index.js +++ b/pages/workBench/components/tenement/components/unBindMeter/index.js @@ -5,6 +5,7 @@ import request from "../../../../../../utils/request" import { alertInfo, alertSuccess } from "../../../../../../utils/index"; const { OK } = request import { getWorkMeterDetail } from "../../../../../../service/meter" +import dayjs from "../../../../../../utils/dayjs" Component({ @@ -28,7 +29,7 @@ Component({ * 组件的初始数据 */ data: { - + dateTimeShow: false }, /** @@ -68,13 +69,17 @@ Component({ }) }, async onSubmit() { - const { overall, critical, peak, valley, park, tenement, meterId } = this.data; - const { code, message, } = await unbindMeter(park, tenement, meterId, + const { overall, critical, peak, valley, 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, + readAt: readAt || dayjs().format('YYYY-MM-DD HH:mm:ss') }); if (code !== OK) { alertInfo(message) @@ -82,6 +87,15 @@ Component({ } alertSuccess("解绑成功") this.triggerEvent("ok") + }, + dateTimeConfirm(e) { + this.setData({ readAt: e.detail.time, dateTimeShow: false }) + }, + dateTimeCancal(e) { + this.setData({ dateTimeShow: false }) + }, + onTimeFocus() { + this.setData({ dateTimeShow: true }) } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.json b/pages/workBench/components/tenement/components/unBindMeter/index.json index 953d7ac..3c2b870 100644 --- a/pages/workBench/components/tenement/components/unBindMeter/index.json +++ b/pages/workBench/components/tenement/components/unBindMeter/index.json @@ -3,6 +3,8 @@ "usingComponents": { "van-dialog": "@vant/weapp/dialog/index", "search-select": "/components/searchSelect/index", - "van-field": "@vant/weapp/field/index" + "van-field": "@vant/weapp/field/index", + "van-button": "@vant/weapp/button/index", + "date-time-picker": "/components/DateTimePicker/index" } } \ No newline at end of file diff --git a/pages/workBench/components/tenement/components/unBindMeter/index.wxml b/pages/workBench/components/tenement/components/unBindMeter/index.wxml index 9bde749..7a9952f 100644 --- a/pages/workBench/components/tenement/components/unBindMeter/index.wxml +++ b/pages/workBench/components/tenement/components/unBindMeter/index.wxml @@ -26,6 +26,19 @@ title-width="132rpx" border="{{false}}" /> + + + 选择 + + - \ No newline at end of file + + + diff --git a/pages/workBench/components/tenement/index.js b/pages/workBench/components/tenement/index.js index 92f4ff4..07dc51f 100644 --- a/pages/workBench/components/tenement/index.js +++ b/pages/workBench/components/tenement/index.js @@ -183,6 +183,9 @@ Component({ bindVisible: false, }) this.getTenementMeters(); + }, + onTimeConfirm(e) { + console.log('e', e) } } }) \ No newline at end of file diff --git a/pages/workBench/components/tenement/index.wxml b/pages/workBench/components/tenement/index.wxml index eb96997..a073cb9 100644 --- a/pages/workBench/components/tenement/index.wxml +++ b/pages/workBench/components/tenement/index.wxml @@ -132,4 +132,4 @@ meterId="{{meterId}}" meterAddress="{{meterAddress}}" bind:ok="onUnbindOk" -/> \ No newline at end of file +/> diff --git a/utils/index.js b/utils/index.js index d2bfee7..e909304 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,8 +45,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" - api = "https://zgd.hbhcbn.com/api3" + api = "http://localhost:8000" + // api = "https://zgd.hbhcbn.com/api3" // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" break; From f9aedf7d795da33bef0b3502376f67e1e0f3634f Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Thu, 17 Jul 2025 15:33:22 +0800 Subject: [PATCH 51/60] =?UTF-8?q?=E4=BA=8C=E3=80=81C=E7=AB=AF=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=94=B5=E8=B4=B9=E6=89=A3=E6=AC=BE=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/meterBalanceRecord/index.js | 35 +++++++++++++++- pages/meterBalanceRecord/index.json | 6 ++- pages/meterBalanceRecord/index.wxml | 44 ++++++++++++++++++++ pages/meterBalanceRecord/index.wxss | 62 ++++++++++++++++++++++++++++- service/calc.js | 9 +++++ 5 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 service/calc.js diff --git a/pages/meterBalanceRecord/index.js b/pages/meterBalanceRecord/index.js index 71786ed..ae3edec 100644 --- a/pages/meterBalanceRecord/index.js +++ b/pages/meterBalanceRecord/index.js @@ -1,4 +1,8 @@ import dayjs from "../../utils/dayjs" +import { getDayCalcList } from "../../service/calc" +import { alertError } from "../../utils/index"; +import request from "../../utils/request" +const { OK } = request // pages/meterBalanceRecord/index.js Page({ @@ -9,6 +13,9 @@ Page({ data: { time: "", timeStamp: undefined, + list: [], + page: 1, + size: 999, }, /** @@ -16,11 +23,13 @@ Page({ */ onLoad(options) { const { id } = options - console.log("id---", id) + const that = this; this.setData({ id, time: dayjs().format("YYYY-MM"), timeStamp: Date.now() + }, () => { + that.getList() }) }, clickTime() { @@ -28,13 +37,35 @@ Page({ timeVisible: true }) }, + async getList() { + const { id, time, page, size } = this.data; + const { code, message, data } = await getDayCalcList({ + page, + size, + startTime: dayjs(time).subtract(1, 'month').endOf('month').format("YYYY-MM-DD"), + endTime: dayjs(time).endOf('month').format("YYYY-MM-DD"), + codeId: id, + }) + if (code !== OK) { + alertError(message) + return + } + this.setData({ + list: data?.map(item => { + item.day = dayjs(item.endTime).format("DD日") + return item; + }) + }) + }, onTimeConfirm(e) { - console.log('e', e) const { time } = e.detail; + const that = this; this.setData({ time, timeStamp: new Date(time).getTime(), timeVisible: false, + }, () => { + that.getList() }) }, onTimeCancel() { diff --git a/pages/meterBalanceRecord/index.json b/pages/meterBalanceRecord/index.json index a1cb3b6..21e1dfc 100644 --- a/pages/meterBalanceRecord/index.json +++ b/pages/meterBalanceRecord/index.json @@ -2,7 +2,11 @@ "usingComponents": { "navigator": "/components/navigator/index", "timePicker": "/components/timePicker/index", - "van-icon": "@vant/weapp/icon/index" + "van-icon": "@vant/weapp/icon/index", + "van-tag": "@vant/weapp/tag/index", + "van-row": "@vant/weapp/row/index", + "empty": "/components/empty/index", + "van-col": "@vant/weapp/col/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/meterBalanceRecord/index.wxml b/pages/meterBalanceRecord/index.wxml index b63cca9..54a812e 100644 --- a/pages/meterBalanceRecord/index.wxml +++ b/pages/meterBalanceRecord/index.wxml @@ -9,6 +9,50 @@ + + + + + + 日期 + + + 充值金额 + + + 电费 + + + 电表余额 + + + + + + + + {{ item.day }} + + + {{ item.topFee }} + -{{ item.topFee }} + 0 + + + + 0 + + {{item.money}} + + + {{item.balance}} + + + + + + + diff --git a/pages/meterBalanceRecord/index.wxss b/pages/meterBalanceRecord/index.wxss index de2bff8..0037407 100644 --- a/pages/meterBalanceRecord/index.wxss +++ b/pages/meterBalanceRecord/index.wxss @@ -23,4 +23,64 @@ .timeText { flex: 1; - } \ No newline at end of file + } + + .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 0; + padding-bottom: 30rpx; +} + +.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; + font-size: 32rpx; +} diff --git a/service/calc.js b/service/calc.js new file mode 100644 index 0000000..2479450 --- /dev/null +++ b/service/calc.js @@ -0,0 +1,9 @@ +import apis from '../utils/request'; +import { replaceSpecialIcon } from '../utils/index' +const { GET, POST, PUT, DELETE } = apis + +// 获取电表列表 +export const getDayCalcList = async function({ page, size, startTime, endTime, codeId }) { + const park = wx.getStorageSync('park') + return await GET(`/accounting/getEveryDayAccountingList?park=${park?.id}&page=${page}&size=${size}&startTime=${startTime}&endTime=${endTime}&codeId=${codeId}`); +} \ No newline at end of file From 33d752899016a582530d737790a0712597220dfa Mon Sep 17 00:00:00 2001 From: ZiHangQin <1420014281@qq.com> Date: Mon, 21 Jul 2025 09:50:46 +0800 Subject: [PATCH 52/60] =?UTF-8?q?C=E7=AB=AF=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/billDetail/index.wxml | 2 +- .../components/accountingCard/index.wxml | 105 ++++++++++++------ .../components/accountingCard/index.wxss | 19 +++- .../electricQuery/components/reading/index.js | 2 +- .../components/reading/index.wxml | 60 +++++++++- .../components/reading/index.wxss | 7 ++ childPackage/pages/electricQuery/index.wxml | 19 ++-- pages/rechargeDetail/index.wxml | 2 +- project.config.json | 14 ++- project.private.config.json | 88 ++++----------- utils/index.js | 2 +- 11 files changed, 194 insertions(+), 126 deletions(-) diff --git a/childPackage/pages/billDetail/index.wxml b/childPackage/pages/billDetail/index.wxml index 26cc9d4..443e46a 100644 --- a/childPackage/pages/billDetail/index.wxml +++ b/childPackage/pages/billDetail/index.wxml @@ -11,7 +11,7 @@ - 用电地址: + 商户地址: {{ detail.tenement.address }} diff --git a/childPackage/pages/electricQuery/components/accountingCard/index.wxml b/childPackage/pages/electricQuery/components/accountingCard/index.wxml index 5cae3e3..1146bb3 100644 --- a/childPackage/pages/electricQuery/components/accountingCard/index.wxml +++ b/childPackage/pages/electricQuery/components/accountingCard/index.wxml @@ -1,41 +1,72 @@ - - {{data.meter.address}} - - - - 初始余额 - - - {{data.startMoney}} - - - - - 储值累计金额 - - - {{data.rechargeMoney}} - - - - - 电费 - - - {{data.electricMoney}} - - - - - - 账务余额 - + + {{data.meter.address}}电表编号:{{data.meter.sn}} + + + + + 类目 + 金额 + 更新时间 + + + + 初始余额 + + + {{data.startMoney}} + + + {{data.updateStartMoneyAt}} + + - - - {{data.currentMoney}} - - + + + 累计充值金额 + + + {{data.rechargeMoney}} + + + {{data.updateRechargeMoneyAt}} + + + + + + 电费 + + + {{data.electricMoney}} + + + {{data.updateElectricMoneyAt}} + + + + + + 账务余额 + + + {{data.accountMoney}} + + + {{data.updateAccountMoneyAt}} + + + + + + 电表余额 + + + {{data.meterMoney}} + + + {{data.updateMeterMoneyAt}} + + \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/accountingCard/index.wxss b/childPackage/pages/electricQuery/components/accountingCard/index.wxss index c538ef6..bd91984 100644 --- a/childPackage/pages/electricQuery/components/accountingCard/index.wxss +++ b/childPackage/pages/electricQuery/components/accountingCard/index.wxss @@ -21,4 +21,21 @@ margin-bottom: 20rpx; text-align: center; font-size: 32rpx; -} \ No newline at end of file +} +.table-header { + display: flex; + width: 100%; + background-color: #f5f5f5; + border-bottom: 1rpx solid #eaeaea; + } + .table-header-row { + display: flex; + width: 100%; + } + .table-header-cell { + flex: 1; + text-align: center; + padding: 20rpx 0; + font-size: 25rpx; + color: #333; + } \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/reading/index.js b/childPackage/pages/electricQuery/components/reading/index.js index 6a5347e..4a8bafb 100644 --- a/childPackage/pages/electricQuery/components/reading/index.js +++ b/childPackage/pages/electricQuery/components/reading/index.js @@ -35,7 +35,7 @@ Component({ meterReadingHeader: [ { key: 'address', title: '电表地址', renderBody: (item) => item.meter?.address }, { title: '倍率', key: 'ratio' }, - { key: 'number', title: '抄表记录' }, + { key: 'number', title: '当前表字' }, ], meterReadingList: [], yearMonthDayReading: dayjs().format("YYYY-MM-DD"), diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml index 204d925..b73f004 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxml +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -49,54 +49,102 @@ label="地址" readonly /> + + + + + + + + + + + + + + 上次抄表记录起,至现在时间内的用电量 diff --git a/childPackage/pages/electricQuery/components/reading/index.wxss b/childPackage/pages/electricQuery/components/reading/index.wxss index 3779087..a9a3c5d 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxss +++ b/childPackage/pages/electricQuery/components/reading/index.wxss @@ -92,4 +92,11 @@ page { content:""; display:block; clear:both + } + + .text{ + font-size: 28rpx; + color: #999999; + margin: 10rpx 0; + text-align: center; } \ No newline at end of file diff --git a/childPackage/pages/electricQuery/index.wxml b/childPackage/pages/electricQuery/index.wxml index 3598af7..4c8c574 100644 --- a/childPackage/pages/electricQuery/index.wxml +++ b/childPackage/pages/electricQuery/index.wxml @@ -30,23 +30,25 @@ - 日耗量 + 日用电量 - 月耗量 + 月电用量 - 年耗量 + 年用电量 - 不包括线损电量,显示为电表实际消耗电量。仅供参考,实际能耗电量以电费账单为主。如有疑问,请联系客服。 + 不包括线损电量,显示为电表实际消用电量。仅供参考,实际能用电量以电费账单为主。如有疑问,请联系客服。 - 选择时间 + 选择时间 + 选择日期 + 选择月份 {{yearMonthDay}} {{yearMonth}} @@ -63,7 +65,10 @@ - 账务余额更新时间为:每次预存电费后,每次账单发布后,剩余的实际金额。电表余额与账务余额相差较大的用户,每半年统一处理一次。 + 账务余额更新时间为:每次预存电费后,每次发布账单后剩余的实际金额。 + + + 计算公式:账务余额 = 初始余额 + 累充充值金额 - 电费 @@ -95,7 +100,7 @@ /> - 合计:表计数量:{{meterNumber}},耗电量:{{electricNumber}} + 合计:表计数量:{{meterNumber}},用电量:{{electricNumber}} diff --git a/pages/rechargeDetail/index.wxml b/pages/rechargeDetail/index.wxml index e054c66..41cf703 100644 --- a/pages/rechargeDetail/index.wxml +++ b/pages/rechargeDetail/index.wxml @@ -12,7 +12,7 @@ /> Date: Mon, 21 Jul 2025 14:10:05 +0800 Subject: [PATCH 53/60] =?UTF-8?q?C=E7=AB=AF=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96=20=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recharge/components/approve/index.js | 441 +++++++++++------- .../recharge/components/approve/index.json | 4 +- .../recharge/components/approve/index.wxml | 105 ++--- .../recharge/components/approve/index.wxss | 24 + project.private.config.json | 11 +- 5 files changed, 336 insertions(+), 249 deletions(-) diff --git a/pages/workBench/components/recharge/components/approve/index.js b/pages/workBench/components/recharge/components/approve/index.js index 004ed18..351877d 100644 --- a/pages/workBench/components/recharge/components/approve/index.js +++ b/pages/workBench/components/recharge/components/approve/index.js @@ -1,190 +1,279 @@ // pages/workBench/components/recharge/components/waitApprove/index.js -import { alertInfo, alertSuccess, loadingFunc } from "../../../../../../utils/index"; -import { getRechargeApproveList, rechargeApprove } from "../../../../../../service/recharge" +import { + alertInfo, + alertSuccess, + loadingFunc +} from "../../../../../../utils/index"; +import { + getRechargeApproveList, + rechargeApprove +} from "../../../../../../service/recharge" import request from "../../../../../../utils/request" -const { OK } = request +import dayjs from "../../../../../../utils/dayjs" +const { + OK +} = request // pages/workBench/components/record/index.js Component({ - /** - * 组件的属性列表 - */ - properties: { - status: Number - }, - - /** - * 组件的初始数据 - */ - data: { - keyword: "", - keywordTemp: "", - page: 1, - }, - lifetimes: { - attached() { - loadingFunc(async () => { - await this.init(); - }) - } - }, - /** - * 组件的方法列表 - */ - methods: { - onParkFocus(e) { - this.setData({ - show: true, - title: "园区", - type: 'park' - }) + /** + * 组件的属性列表 + */ + properties: { + status: Number }, - onConfirm(e) { - const { data } = e.detail; - const that = this; - this.setData({ - parkName: data.name, - park: data.id, - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - this.onCancel(); + + /** + * 组件的初始数据 + */ + data: { + keyword: "", + keywordTemp: "", + page: 1, + currentActionSheet: null, + actionItems: [{ + name: '查看详细', + value: 'detail' + }], }, - onSearchKeyword(e) { - const that = this; - that.setData({ - keyword: e.detail - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - }, - onChangeKeyword(e) { - this.setData({ keywordTemp: e.detail }) - }, - onSearch() { - const that = this; - that.setData({ - keyword: that.data.keywordTemp - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - }, - async init() { - const { page, keyword, park, status } = this.data; - const { code, message, data, total } = await getRechargeApproveList({ park, page, keyword, status }) - if (code !== OK) { - alertInfo(message); - return; - } - this.setData({ - list: data, - total: total, - totalPage: Math.ceil(total / 20) - }) - }, - onChangeReason(e) { - this.setData({ - reason: e.detail, - }) - }, - onApproveClose() { - this.setData({ - reason: "", - approveShow: false, - }) - }, - onApproveConfirm() { - const { reason, record } = this.data; - const that = this; - if (!reason) { - alertInfo("请输入拒绝理由") - return; - } - loadingFunc(async () => { - const { code, message } = await rechargeApprove({ id: record, status: 1, reason }) - if (code !== OK) { - alertInfo(message) - return; - } - alertSuccess("已拒绝") - that.init(); - that.setData({ - reason: "", - approveShow: false, - record: "", - }) - }) - - }, - handleApprove(e) { - const status = e.currentTarget.dataset.status; - const that = this; - if (status === '1') { - this.setData({ - approveShow: true - }) - return; - } - const { record, list } = this.data; - const item = list.find(ele => ele.id === record) - - wx.showModal({ - title: '提示', - content: `您确认要同意${item?.tenement?.shortName || 当前记录}吗?`, - complete: async (res) => { - if (res.cancel) { - - } - if (res.confirm) { + + lifetimes: { + attached() { loadingFunc(async () => { - const { code, message } = await rechargeApprove({ id: record, status: 0, }) - if (code !== OK) { - alertInfo(message) - return; - } - alertSuccess("已同意") - that.init(); + await this.init(); }) - - } } - }) }, - jumpToDetail(e) { - const { id } = e.currentTarget.dataset; - wx.navigateTo({ - url: '/pages/rechargeDetail/index?id=' + id, - }) - }, - async onChangePage(e) { - const page = e.detail.currentIndex; - const that = this; - this.setData({ - page - }, () => { - loadingFunc(async () => { - await that.init(); - }) - }) - }, - onCancel() { - this.setData({ - show: false, - title: "", - type: "", - }) - }, - onChangeSelectRecharge(e) { - this.setData({ - record: e.detail - }) + /** + * 组件的方法列表 + */ + methods: { + onParkFocus(e) { + this.setData({ + show: true, + title: "园区", + type: 'park' + }) + }, + onConfirm(e) { + const { + data + } = e.detail; + const that = this; + this.setData({ + parkName: data.name, + park: data.id, + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + this.onCancel(); + }, + onSearchKeyword(e) { + const that = this; + that.setData({ + keyword: e.detail + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + }, + onChangeKeyword(e) { + this.setData({ + keywordTemp: e.detail + }) + }, + onSearch() { + const that = this; + that.setData({ + keyword: that.data.keywordTemp + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + }, + async init() { + const { + page, + keyword, + park, + status + } = this.data; + const { + code, + message, + data, + total + } = await getRechargeApproveList({ + park, + page, + keyword, + status + }) + if (code !== OK) { + alertInfo(message); + return; + } + this.setData({ + list: data.map(item => { + item.topTime = dayjs(item.topTime).format("MM-DD HH:mm:ss") + return item + }), + total: total, + totalPage: Math.ceil(total / 20) + }) + }, + onChangeReason(e) { + this.setData({ + reason: e.detail, + }) + }, + onApproveClose() { + this.setData({ + reason: "", + approveShow: false, + }) + }, + onApproveConfirm() { + const { + reason, + record + } = this.data; + const that = this; + if (!reason) { + alertInfo("请输入拒绝理由") + return; + } + loadingFunc(async () => { + const { + code, + message + } = await rechargeApprove({ + id: record, + status: 1, + reason + }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已拒绝") + that.init(); + that.setData({ + reason: "", + approveShow: false, + record: "", + }) + }) + + }, + handleApprove(e) { + const status = e.currentTarget.dataset.status; + const that = this; + if (status === '1') { + this.setData({ + approveShow: true + }) + return; + } + const { + record, + list + } = this.data; + const item = list.find(ele => ele.id === record) + + wx.showModal({ + title: '提示', + content: `您确认要同意${item?.tenement?.shortName || 当前记录}吗?`, + complete: async (res) => { + if (res.cancel) { + + } + if (res.confirm) { + loadingFunc(async () => { + const { + code, + message + } = await rechargeApprove({ + id: record, + status: 0, + }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已同意") + that.init(); + }) + + } + } + }) + }, + + showActionMenu(e) { + this.setData({ + currentActionSheet: e.currentTarget.dataset.id + }); + }, + + hideActionMenu() { + this.setData({ + currentActionSheet: null + }); + }, + + onMenuSelect(e) { + const { + value + } = e.detail; + const id = e.currentTarget.dataset.id; + + if (value === 'detail') { + this.jumpToDetail({ + currentTarget: { + dataset: { + id + } + } + }); + } + }, + + jumpToDetail(e) { + const { + id + } = e.currentTarget.dataset; + wx.navigateTo({ + url: '/pages/rechargeDetail/index?id=' + id, + }) + }, + async onChangePage(e) { + const page = e.detail.currentIndex; + const that = this; + this.setData({ + page + }, () => { + loadingFunc(async () => { + await that.init(); + }) + }) + }, + onCancel() { + this.setData({ + show: false, + title: "", + type: "", + }) + }, + onChangeSelectRecharge(e) { + this.setData({ + record: e.detail + }) + } } - } }) \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.json b/pages/workBench/components/recharge/components/approve/index.json index c064e73..145ec1b 100644 --- a/pages/workBench/components/recharge/components/approve/index.json +++ b/pages/workBench/components/recharge/components/approve/index.json @@ -11,6 +11,8 @@ "van-radio": "@vant/weapp/radio/index", "van-radio-group": "@vant/weapp/radio-group/index", "van-dialog": "@vant/weapp/dialog/index", - "searchSelectWrapper": "/components/searchSelectWrapper/index" + "searchSelectWrapper": "/components/searchSelectWrapper/index", + "van-icon": "@vant/weapp/icon/index", + "van-action-sheet": "@vant/weapp/action-sheet/index" } } \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index a1795ce..9849d66 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -1,100 +1,65 @@ - + - + - 同意 - 拒绝 + 同意 + 拒绝 - - 商户名字 - 充值金额 - 操作 + + 商户名字 + 充值金额 + 状态 + 提交时间 + 操作 - - + + - {{ item.tenement.shortName }} - {{ item.money }} - - - 查看详细 - + + {{ item.tenement.shortName }} + + + {{ item.money }} + + + {{item.orderStatus}} + + + {{item.topTime}} + + + + + - - - + + + - + - + - - + + \ No newline at end of file diff --git a/pages/workBench/components/recharge/components/approve/index.wxss b/pages/workBench/components/recharge/components/approve/index.wxss index 311c82e..bb7ede4 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxss +++ b/pages/workBench/components/recharge/components/approve/index.wxss @@ -43,3 +43,27 @@ 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: 8px 16px; + margin-right: 12px; + border-radius: 16px; + background: #07c160; + color: white; + } + + /* 激活状态样式 */ + .tag.active { + background: #07c160; + color: white; + } \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index b843307..09bced0 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -24,12 +24,19 @@ "miniprogram": { "list": [ { - "name": "childPackage/pages/electricQuery/index", - "pathName": "childPackage/pages/electricQuery/index", + "name": "pages/workBench/index", + "pathName": "pages/workBench/index", "query": "", "scene": null, "launchMode": "default" }, + { + "name": "childPackage/pages/electricQuery/index", + "pathName": "childPackage/pages/electricQuery/index", + "query": "", + "launchMode": "default", + "scene": null + }, { "name": "childPackage/pages/electricQuery/index", "pathName": "childPackage/pages/electricQuery/index", From 886a03cf162767a2e0fc9f316c4971366b118d66 Mon Sep 17 00:00:00 2001 From: ZiHangQin <1420014281@qq.com> Date: Tue, 22 Jul 2025 08:58:30 +0800 Subject: [PATCH 54/60] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=20->=20?= =?UTF-8?q?=E5=85=85=E5=80=BC=E5=AE=A1=E6=A0=B8=20->=20=E5=B7=B2=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=88=97=E8=A1=A8=E6=A0=87=E7=AD=BE=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E7=BC=A9=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/accountingCard/index.js | 33 +++-- .../components/accountingCard/index.wxml | 124 ++++++++++-------- .../components/accountingCard/index.wxss | 2 +- .../components/reading/index.wxml | 17 ++- pages/my/index.wxml | 2 +- pages/rechargeDetail/index.wxml | 4 +- .../recharge/components/approve/index.js | 2 +- .../recharge/components/approve/index.wxml | 27 ++-- .../recharge/components/approve/index.wxss | 13 +- project.private.config.json | 35 +++++ 10 files changed, 154 insertions(+), 105 deletions(-) diff --git a/childPackage/pages/electricQuery/components/accountingCard/index.js b/childPackage/pages/electricQuery/components/accountingCard/index.js index 922326c..e1ed51e 100644 --- a/childPackage/pages/electricQuery/components/accountingCard/index.js +++ b/childPackage/pages/electricQuery/components/accountingCard/index.js @@ -1,24 +1,23 @@ // pages/electricQuery/components/accountingCard/index.js Component({ + /** + * 组件的属性列表 + */ + properties: { + data: Object + }, - /** - * 组件的属性列表 - */ - properties: { - data: Object - }, + /** + * 组件的初始数据 + */ + data: { - /** - * 组件的初始数据 - */ - data: { + }, - }, + /** + * 组件的方法列表 + */ + methods: { - /** - * 组件的方法列表 - */ - methods: { - - } + } }) \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/accountingCard/index.wxml b/childPackage/pages/electricQuery/components/accountingCard/index.wxml index 1146bb3..d49642f 100644 --- a/childPackage/pages/electricQuery/components/accountingCard/index.wxml +++ b/childPackage/pages/electricQuery/components/accountingCard/index.wxml @@ -1,72 +1,86 @@ - {{data.meter.address}}电表编号:{{data.meter.sn}} + {{data.meter.address}} + 电表编号:{{data.meter.sn}} - + 类目 金额 更新时间 - - 初始余额 - - - {{data.startMoney}} - - - {{data.updateStartMoneyAt}} - - - - 累计充值金额 - - - {{data.rechargeMoney}} - - - {{data.updateRechargeMoneyAt}} - - + + + + 初始余额 + + + {{data.startMoney}} + + + {{data.updateStartMoneyAt || '--'}} + + + - - - 电费 - - - {{data.electricMoney}} - - - {{data.updateElectricMoneyAt}} - - + + + + 累计充值金额 + + + {{data.rechargeMoney}} + + + {{data.updateRechargeMoneyAt || '--'}} + + + - - - 账务余额 - - - {{data.accountMoney}} - - - {{data.updateAccountMoneyAt}} - - + + + + 电费 + + + {{data.electricMoney}} + + + {{data.updateElectricMoneyAt || '--'}} + + + - - - 电表余额 - - - {{data.meterMoney}} - - - {{data.updateMeterMoneyAt}} - - + + + + 账务余额 + + + {{data.accountMoney}} + + + {{data.updateAccountMoneyAt || '--'}} + + + + + + + + 电表余额 + + + {{data.meterMoney}} + + + {{data.updateMeterMoneyAt || '--'}} + + + \ No newline at end of file diff --git a/childPackage/pages/electricQuery/components/accountingCard/index.wxss b/childPackage/pages/electricQuery/components/accountingCard/index.wxss index bd91984..776e121 100644 --- a/childPackage/pages/electricQuery/components/accountingCard/index.wxss +++ b/childPackage/pages/electricQuery/components/accountingCard/index.wxss @@ -17,7 +17,7 @@ } .tableContent { - margin-top: 10rpx; + margin-top: 25rpx; margin-bottom: 20rpx; text-align: center; font-size: 32rpx; diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml index b73f004..c68d434 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxml +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -75,7 +75,6 @@ border="{{ false }}" label="当前表字(总)" readonly - wx:if="{{park.meter04kvType !== 1}}" /> 上次抄表记录起,至现在时间内的用电量 diff --git a/pages/my/index.wxml b/pages/my/index.wxml index 5c0684b..b898aa1 100644 --- a/pages/my/index.wxml +++ b/pages/my/index.wxml @@ -88,7 +88,7 @@ - + { - item.topTime = dayjs(item.topTime).format("MM-DD HH:mm:ss") + item.topTime = dayjs(item.topTime).format("MM-DD") return item }), total: total, diff --git a/pages/workBench/components/recharge/components/approve/index.wxml b/pages/workBench/components/recharge/components/approve/index.wxml index 9849d66..6e2a30a 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxml +++ b/pages/workBench/components/recharge/components/approve/index.wxml @@ -13,33 +13,34 @@ - - 商户名字 - 充值金额 - 状态 - 提交时间 - 操作 + + + 商户名字 + 充值金额 + 状态 + 提交时间 + 操作 - - + + - + {{ item.tenement.shortName }} - + {{ item.money }} - + {{item.orderStatus}} - + {{item.topTime}} - + diff --git a/pages/workBench/components/recharge/components/approve/index.wxss b/pages/workBench/components/recharge/components/approve/index.wxss index bb7ede4..641964d 100644 --- a/pages/workBench/components/recharge/components/approve/index.wxss +++ b/pages/workBench/components/recharge/components/approve/index.wxss @@ -1,6 +1,6 @@ /* pages/workBench/components/recharge/components/waitApprove/index.wxss */ .table { - width: 810rpx; + width: 500rpx; } @@ -17,7 +17,7 @@ } .thead .th { - padding: 20rpx; + padding: 10rpx; white-space: nowrap; text-align: center; box-sizing: border-box; @@ -28,11 +28,11 @@ } .tbody { - width: 810rpx; + width: 500rpx; } .tbody .tr { - padding: 20rpx; + padding: 10rpx; border-bottom: 1rpx solid #EEEEEE; display: flex; align-items: center; @@ -55,11 +55,12 @@ /* 基础标签样式 */ .tag { display: inline-block; - padding: 8px 16px; - margin-right: 12px; + padding: 4px 5px; + margin-right: 0px; border-radius: 16px; background: #07c160; color: white; + font-size: 25rpx; } /* 激活状态样式 */ diff --git a/project.private.config.json b/project.private.config.json index 09bced0..7cbcbb6 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -30,6 +30,41 @@ "scene": null, "launchMode": "default" }, + { + "name": "pages/workBench/index", + "pathName": "pages/workBench/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "childPackage/pages/electricQuery/index", + "pathName": "childPackage/pages/electricQuery/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "pages/workBench/index", + "pathName": "pages/workBench/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "childPackage/pages/electricQuery/index", + "pathName": "childPackage/pages/electricQuery/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "pages/workBench/index", + "pathName": "pages/workBench/index", + "query": "", + "launchMode": "default", + "scene": null + }, { "name": "childPackage/pages/electricQuery/index", "pathName": "childPackage/pages/electricQuery/index", From 5f56f9a6a8743d6403da9130fecd6971594e426c Mon Sep 17 00:00:00 2001 From: ZiHangQin <1420014281@qq.com> Date: Wed, 23 Jul 2025 17:40:38 +0800 Subject: [PATCH 55/60] b --- childPackage/pages/electricQuery/index.js | 31 ++++------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index 3947497..34680ed 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -142,14 +142,14 @@ Page({ const times = [...new Set(data?.map(item => item.time))]. map(item => Number(item.replace(point, ""))). sort((a, b) => a - b). - map(ele => `${ele}${point}`.padStart(2, "0")); - + map(ele => `${ele}${point}`.padStart(3, "0")); + console.log(times) const options = { tooltip: { trigger: 'axis' }, legend: { - data: parkInfo?.category === 1 ? ["尖", "峰", "平", "谷"] : data?.map(item => item?.meter?.address), + data: data?.map(item => item?.meter?.address), }, grid: { left: '3%', @@ -165,34 +165,13 @@ Page({ yAxis: { type: 'value' }, - series: parkInfo?.category === 1 ? [ - { - name: "尖", - type: 'line', - data: data?.map(item => Number(item?.critical || 0)) - }, - { - name: "峰", - type: 'line', - data: data?.map(item => Number(item?.peak || 0)) - }, - { - name: "平", - type: 'line', - data: data?.map(item => Number(item?.flat || 0)) - }, - { - name: "谷", - type: 'line', - data: data?.map(item => Number(item?.valley || 0)) - } - ] : ids?.map(item => { + series: ids?.map(item => { const element = data?.find(i => i?.meter?.id === item) const list = data?.filter(ele => ele?.meter?.id === item) const newList = [...times].map(item => { const exist = list.find(ele => ele.time === item) if (exist) { - return exist.number; + return Number(exist.critical)+ Number(exist.peak)+Number(exist.flat)+Number(exist.valley); } return null }) From 7bc344e90b737de6f87b6e488d55fefe98ea255e Mon Sep 17 00:00:00 2001 From: ZiHangQin <1420014281@qq.com> Date: Mon, 28 Jul 2025 10:35:49 +0800 Subject: [PATCH 56/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=84=E8=A1=A8?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=AF=A6=E6=83=85=E4=B8=ADsn=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/electricQuery/components/reading/index.wxml | 2 +- utils/index.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/childPackage/pages/electricQuery/components/reading/index.wxml b/childPackage/pages/electricQuery/components/reading/index.wxml index c68d434..7aff417 100644 --- a/childPackage/pages/electricQuery/components/reading/index.wxml +++ b/childPackage/pages/electricQuery/components/reading/index.wxml @@ -50,7 +50,7 @@ readonly /> Date: Wed, 30 Jul 2025 11:05:45 +0800 Subject: [PATCH 57/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/login/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/login/index.js b/pages/login/index.js index 24e615d..13b8484 100644 --- a/pages/login/index.js +++ b/pages/login/index.js @@ -54,7 +54,7 @@ Page({ this.noPermission() return; } - alertSuccess("注册成功") + alertSuccess("登录成功") const { token, ...user } = data wx.setStorageSync('user', user) wx.setStorageSync('token', data?.token) From 3e640c3633af2125d299c77b5e2e4d4bdc60eef9 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Tue, 2 Sep 2025 17:16:59 +0800 Subject: [PATCH 58/60] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/meterBalanceRecord/index.js | 20 ++++++++++++++++++++ pages/meterBalanceRecord/index.json | 1 + pages/meterBalanceRecord/index.wxml | 12 ++++++++++-- pages/meterBalanceRecord/index.wxss | 5 +++++ project.private.config.json | 4 ++-- utils/index.js | 4 ++-- 6 files changed, 40 insertions(+), 6 deletions(-) diff --git a/pages/meterBalanceRecord/index.js b/pages/meterBalanceRecord/index.js index ae3edec..8e77f63 100644 --- a/pages/meterBalanceRecord/index.js +++ b/pages/meterBalanceRecord/index.js @@ -16,6 +16,26 @@ Page({ list: [], page: 1, size: 999, + header: [ + { key: 'day', title: '日期', }, + { key: "money", title: '充值金额', renderBody: (item) => { + if (item.type === 1 || item.type === 7) { + return item.topFee + } else if (item.type === 5 || item.type === 6 || item.type === 8) { + return `-${item.topFee}` + } else { + return 0 + } + } }, + { key: 'overall', title: '电费', renderBody: (item) => { + if (item.type == 1 || item.type === 5 || item.type === 6 || item.type === 7 || item.type === 8) { + return 0; + } else { + return item.money + } + } }, + { key: 'balance', title: '电表余额' }, + ], }, /** diff --git a/pages/meterBalanceRecord/index.json b/pages/meterBalanceRecord/index.json index 21e1dfc..0d27767 100644 --- a/pages/meterBalanceRecord/index.json +++ b/pages/meterBalanceRecord/index.json @@ -6,6 +6,7 @@ "van-tag": "@vant/weapp/tag/index", "van-row": "@vant/weapp/row/index", "empty": "/components/empty/index", + "table": "/components/table/table", "van-col": "@vant/weapp/col/index" }, "navigationStyle": "custom" diff --git a/pages/meterBalanceRecord/index.wxml b/pages/meterBalanceRecord/index.wxml index 54a812e..e22637d 100644 --- a/pages/meterBalanceRecord/index.wxml +++ b/pages/meterBalanceRecord/index.wxml @@ -11,7 +11,7 @@ - + +
diff --git a/pages/meterBalanceRecord/index.wxss b/pages/meterBalanceRecord/index.wxss index 0037407..91973bf 100644 --- a/pages/meterBalanceRecord/index.wxss +++ b/pages/meterBalanceRecord/index.wxss @@ -84,3 +84,8 @@ border-top: 0rpx; font-size: 32rpx; } + + +page { + background-color: var(--transparent-green); + } \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index 7cbcbb6..37a609a 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -27,8 +27,8 @@ "name": "pages/workBench/index", "pathName": "pages/workBench/index", "query": "", - "scene": null, - "launchMode": "default" + "launchMode": "default", + "scene": null }, { "name": "pages/workBench/index", diff --git a/utils/index.js b/utils/index.js index 6d79893..abb74af 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,8 +45,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" - // api = "https://zgd.hbhcbn.com/api3" + // api = "http://localhost:8000" + api = "https://zgd.hbhcbn.com/api3" // TODO: 发布正式时使用此路径 // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default" From 3340f1f3af10e83ad953cf877c6e520889e9d4cb Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 10 Sep 2025 11:26:20 +0800 Subject: [PATCH 59/60] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=94=A8=E7=94=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=89=E6=8B=A9=E7=94=B5=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- childPackage/pages/electricQuery/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/childPackage/pages/electricQuery/index.js b/childPackage/pages/electricQuery/index.js index 34680ed..8e708f7 100644 --- a/childPackage/pages/electricQuery/index.js +++ b/childPackage/pages/electricQuery/index.js @@ -277,7 +277,12 @@ Page({ type: "meter", columns: [ // { id: "", name: "全部", code: "" }, - ...this.data.meterList.map(item => ({ id: item.id, name: `${item.code}-${item.address}`, code: item.code }))], + ...this.data.meterList.map(item => ({ + id: item.id, + name: `${item.code}-${item.address}`, + code: item.code, + address: item.address + }))], show: true, title: "表计" }) @@ -292,6 +297,8 @@ Page({ }, onOk(e) { const { id, code, address } = e.detail.value; + console.log('e', e) + console.log("id, code, address", id, code, address) this.setData({ // year: currentYear, meterId: id, From af749eb638f20f3650505a3e10d9d19f43f99c83 Mon Sep 17 00:00:00 2001 From: qiaomu <3520484422@qq.com> Date: Wed, 10 Sep 2025 14:03:25 +0800 Subject: [PATCH 60/60] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/index.js b/utils/index.js index abb74af..6d79893 100644 --- a/utils/index.js +++ b/utils/index.js @@ -45,8 +45,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - // api = "http://localhost:8000" - api = "https://zgd.hbhcbn.com/api3" + api = "http://localhost:8000" + // api = "https://zgd.hbhcbn.com/api3" // TODO: 发布正式时使用此路径 // api = "https://zgd.hbhcbn.com/wxApi" // api = "http://127.0.0.1:4523/m1/4143821-0-default"