diff --git a/app.json b/app.json index 870b1af..4e4188f 100644 --- a/app.json +++ b/app.json @@ -1,13 +1,17 @@ { "pages": [ - "pages/login/index", - "pages/my/index", - "pages/recharge/index", + "pages/invoiceList/index", "pages/rechargeRecord/index", - "pages/questions/index", "pages/meterList/index", + "pages/recharge/index", + "pages/login/index", + "pages/handleLogin/index", + "pages/member/index", + "pages/my/index", + "pages/questions/index", "pages/home/index", - "pages/index/index" + "pages/index/index", + "pages/qrCode/index" ], "tabBar": { "list": [ @@ -27,8 +31,6 @@ "navigationBarBackgroundColor": "#ffffff" }, "sitemapLocation": "sitemap.json", - "rendererOptions": { - - }, + "rendererOptions": {}, "navigationStyle": "custom" } \ No newline at end of file diff --git a/app.wxss b/app.wxss index 662e113..3250829 100644 --- a/app.wxss +++ b/app.wxss @@ -17,5 +17,13 @@ page { page { font-size: 36rpx; - background-color: #f0f0f0; + /* background-color: #f0f0f0; */ +} + +.primaryTextBtn { + color: #1989fa; +} + +.dangerTextBtn { + color: #ee0a24; } \ No newline at end of file diff --git a/assets/images/logo-l.png b/assets/images/logo-l.png new file mode 100644 index 0000000..65ac591 Binary files /dev/null and b/assets/images/logo-l.png differ diff --git a/assets/images/logo.jpg b/assets/images/logo.jpg new file mode 100644 index 0000000..302f7e3 Binary files /dev/null and b/assets/images/logo.jpg differ diff --git a/components/select/index.js b/components/select/index.js index d6f0eaf..ccb6b40 100644 --- a/components/select/index.js +++ b/components/select/index.js @@ -1,3 +1,8 @@ +import { getParkList } from "../../service/park"; +import { getTenementList } from "../../service/tenement"; +import request from '../../utils/request' + +const { OK } = request // components/select/index.js Component({ @@ -5,7 +10,11 @@ Component({ * 组件的属性列表 */ properties: { - + label: String, + type: Number, + park: String, + parkName: String, + required: Boolean }, /** @@ -13,19 +22,39 @@ Component({ */ data: { list: [], - visible: false + visible: false, }, /** * 组件的方法列表 */ methods: { - onInput(e) { - console.log('e', e) - this.setData({ - visible: true, - list: [e.detail, e.detail, e.detail] - }) + async onInput(e) { + console.log('this.type', this.data.type) + // this.setData({ + // visible: true, + // list: [e.detail, e.detail, e.detail] + // }) + switch(this.data.type) { + case 0: + const { data = [], code, message } = await getParkList({ keyword: e.detail }); + this.setData({ + list: data, + visible: true, + }) + break; + case 1: + const park = this.data.park; + if (!park) { + return; + } + const { data: tenementData = [], code: tenementCode, message: tenementMessage } = await getTenementList({ park, keyword: e.detail }); + this.setData({ + list: tenementData, + visible: true, + }) + break; + } }, close() { this.setData({ @@ -35,11 +64,11 @@ Component({ }, onChoose(e) { const { data = {} } = e.currentTarget.dataset; - console.log('data', data) this.setData({ - visible: false + visible: false, + value: data.name }) - this.triggerEvent("choose", data) - } + this.triggerEvent("choose", {type: this.data.type, data}) + }, } }) \ No newline at end of file diff --git a/components/select/index.wxml b/components/select/index.wxml index ee56a19..2bc4cb5 100644 --- a/components/select/index.wxml +++ b/components/select/index.wxml @@ -2,16 +2,16 @@ - - {{item}} + + {{item.name}} diff --git a/components/select/index.wxss b/components/select/index.wxss index e9da6dd..619dc8c 100644 --- a/components/select/index.wxss +++ b/components/select/index.wxss @@ -8,7 +8,13 @@ background-color: #fff; padding: 20rpx; + margin-left: 32rpx; + margin-right: 32rpx; width: 100%; + border: 1rpx solid #ccc; + border-radius: 5rpx; + box-sizing: border-box; + width: calc(100% - 64rpx); } .option { diff --git a/components/topbar/index.js b/components/topbar/index.js new file mode 100644 index 0000000..b97205c --- /dev/null +++ b/components/topbar/index.js @@ -0,0 +1,24 @@ +// components/topbar/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) \ No newline at end of file diff --git a/components/topbar/index.json b/components/topbar/index.json new file mode 100644 index 0000000..6279c88 --- /dev/null +++ b/components/topbar/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-image": "@vant/weapp/image/index" + } +} \ No newline at end of file diff --git a/components/topbar/index.wxml b/components/topbar/index.wxml new file mode 100644 index 0000000..e9e1eb2 --- /dev/null +++ b/components/topbar/index.wxml @@ -0,0 +1,5 @@ + + + + 华昌宝能用电管理服务 + \ No newline at end of file diff --git a/components/topbar/index.wxss b/components/topbar/index.wxss new file mode 100644 index 0000000..849af90 --- /dev/null +++ b/components/topbar/index.wxss @@ -0,0 +1,12 @@ +/* components/topbar/index.wxss */ + +.wrapper { + padding: 12rpx 32rpx; + display: flex; + align-items: center; +} + +.content { + margin-left: 50rpx; +} + diff --git a/pages/handleLogin/index.js b/pages/handleLogin/index.js new file mode 100644 index 0000000..9c6d8dd --- /dev/null +++ b/pages/handleLogin/index.js @@ -0,0 +1,138 @@ +import { userValidate } from "../../service/user"; +import { alertInfo, alertSuccess, loadingFunc, wxLogin } from "../../utils/index"; +import request from "../../utils/request" +const { OK } = request; +// pages/handleLogin/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + phone: "", + name: "", + parkName: "", + park: "", + tenementName: "", + tenement: "" + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + onChangeName(e) { + this.setData({ + name: e.detail + }) + }, + onChangePhone(e) { + this.setData({ + phone: e.detail + }) + }, + onChoosePark(e) { + const { data } = e.detail; + this.setData({ + park: data.id, + parkName: data.name + }) + }, + onChooseTenement(e) { + const { data } = e.detail; + this.setData({ + tenement: data.id, + tenementName: data.name + }) + }, + handleSubmit() { + const { park, tenement, name, phone } = this.data; + if (!park) { + alertInfo("请选择园区") + return + } + if (!tenement) { + alertInfo("请选择商户") + return + } + if (!phone) { + alertInfo("请输入联系人手机号") + return + } + if (!name) { + alertInfo("请输入你的昵称") + return + } + loadingFunc(async () => { + const wxLoginCode = await wxLogin() + const { code, message, data } = await userValidate({ park, tenement, phone, name, code: wxLoginCode }) + // if (code !== OK) { + // alertInfo(message) + // return + // } + const { exist, user } = data; + if (!exist) { + alertInfo("绑定失败,请检查信息") + return + } + alertSuccess("绑定成功") + const { token, ...currentUser } = user; + wx.setStorageSync('user', currentUser) + wx.setStorageSync('token', token) + wx.switchTab({ + url: '/pages/home/index', + }) + }) + + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/handleLogin/index.json b/pages/handleLogin/index.json new file mode 100644 index 0000000..aaa2aed --- /dev/null +++ b/pages/handleLogin/index.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "topbar": "/components/topbar/index", + "select": "/components/select/index", + "van-button": "@vant/weapp/button/index", + "van-field": "@vant/weapp/field/index" + }, + "navigationBarTitleText": "手动绑定" +} \ No newline at end of file diff --git a/pages/handleLogin/index.wxml b/pages/handleLogin/index.wxml new file mode 100644 index 0000000..068a0a4 --- /dev/null +++ b/pages/handleLogin/index.wxml @@ -0,0 +1,25 @@ + + + + + + + + 提交 + + \ No newline at end of file diff --git a/pages/handleLogin/index.wxss b/pages/handleLogin/index.wxss new file mode 100644 index 0000000..494f347 --- /dev/null +++ b/pages/handleLogin/index.wxss @@ -0,0 +1,5 @@ +/* pages/handleLogin/index.wxss */ +.submit { + margin-top: 40rpx; + padding: 0 32rpx; +} \ No newline at end of file diff --git a/pages/home/index.wxml b/pages/home/index.wxml index 41efdcd..f6831f9 100644 --- a/pages/home/index.wxml +++ b/pages/home/index.wxml @@ -1,2 +1,2 @@ -111111111111111 \ No newline at end of file +首页 \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js index 64fd394..164e5a1 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -9,13 +9,13 @@ Page({ staffC: {firstName: 'Gideon', lastName: 'Lin'} }, onLoad() { - console.log('---', this.renderer) + }, onShow() { }, test: throttle(function() { - console.log('test', this.data.motto) + }, 500), payment: function() { wx.requestPayment({ diff --git a/pages/invoiceList/index.js b/pages/invoiceList/index.js new file mode 100644 index 0000000..ad249cd --- /dev/null +++ b/pages/invoiceList/index.js @@ -0,0 +1,66 @@ +// pages/invoiceList/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/invoiceList/index.json b/pages/invoiceList/index.json new file mode 100644 index 0000000..e6368d1 --- /dev/null +++ b/pages/invoiceList/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "开票信息" +} \ No newline at end of file diff --git a/pages/invoiceList/index.wxml b/pages/invoiceList/index.wxml new file mode 100644 index 0000000..41d0dcf --- /dev/null +++ b/pages/invoiceList/index.wxml @@ -0,0 +1,2 @@ + +pages/invoiceList/index.wxml \ No newline at end of file diff --git a/pages/invoiceList/index.wxss b/pages/invoiceList/index.wxss new file mode 100644 index 0000000..c164c96 --- /dev/null +++ b/pages/invoiceList/index.wxss @@ -0,0 +1 @@ +/* pages/invoiceList/index.wxss */ \ No newline at end of file diff --git a/pages/login/index.js b/pages/login/index.js index 4db4151..3a85a81 100644 --- a/pages/login/index.js +++ b/pages/login/index.js @@ -1,6 +1,9 @@ -import { login } from "../../service/user" -import { alertError, alertInfo, loadingFunc, wxLogin } from "../../utils/index" -import { OK } from "../../utils/request" +import { login } from "../../service/user"; +import { alertError, alertInfo, alertSuccess, loadingFunc, wxLogin } from "../../utils/index"; +import request from "../../utils/request"; +import Dialog from '@vant/weapp/dialog/dialog'; +const { OK } = request; + // pages/login/index.js Page({ @@ -8,14 +11,22 @@ Page({ * 页面的初始数据 */ data: { - input: "" + input: "", + disabled: false, + show: false, }, /** * 生命周期函数--监听页面加载 */ - onLoad(options) { - + onLoad() { + const user = wx.getStorageSync('user') + if (!user || !user.id) { + return; + } + wx.switchTab({ + url: '/pages/home/index', + }) }, /** @@ -27,40 +38,67 @@ Page({ onClose() { // wx.exitMiniProgram() }, - // onConfirm() { - // this.handleLogin() - // }, + onConfirm() { + // this.handleLogin() + }, async handleLogin(phoneCode) { loadingFunc(async () => { const wxLoginCode = await wxLogin() - const { code, message, data } = await login({ code: wxLoginCode, phoneCode }) + const result = await login({ code: wxLoginCode, phoneCode }) + const { code, message, data } = result; if (code !== OK) { alertError(message) return } - console.log('data', data) + if (!data?.id) { + this.noPermission() + return; + } + alertSuccess("登录成功") + const { token, ...user } = data + wx.setStorageSync('user', user) + wx.setStorageSync('token', data?.token) }) }, getPhoneNumber(e) { const { errno, code: phoneCode } = e.detail; - console.log('errno', errno, 'phoneCode', phoneCode) switch(errno) { case 103: alertInfo("已拒绝"); - setTimeout(() => { - wx.exitMiniProgram() - }, 100) + return; - break; case 1400001: alertInfo("服务达到上限") - setTimeout(() => { - wx.exitMiniProgram() - }, 100) return; - break; + default: + this.handleLogin(phoneCode) + return; } - this.handleLogin(phoneCode) + }, + onChangeAgree(e) { + this.setData({ + agree: e.detail + }) + }, + beforeClose(e) { + return false; + }, + noPermission() { + Dialog.confirm({ + title: '提示', + message: '当前手机号不是用电管理联系账号', + confirmButtonText: '手动绑定', + cancelButtonText: '取消', + }) + .then(() => { + // on confirm + wx.navigateTo({ + url: '/pages/handleLogin/index', + }) + }) + .catch(() => { + // on cancel + }); }, /** * 生命周期函数--监听页面显示 diff --git a/pages/login/index.json b/pages/login/index.json index 7eed04c..a299ebe 100644 --- a/pages/login/index.json +++ b/pages/login/index.json @@ -1,6 +1,11 @@ { "usingComponents": { "van-dialog": "@vant/weapp/dialog/index", - "select": "/components/select/index" - } + "select": "/components/select/index", + "topbar": "/components/topbar/index", + "van-image": "@vant/weapp/image/index", + "van-button": "@vant/weapp/button/index", + "van-checkbox": "@vant/weapp/checkbox/index" + }, + "navigationBarTitleText": "" } \ No newline at end of file diff --git a/pages/login/index.wxml b/pages/login/index.wxml index 4db36f3..b37232a 100644 --- a/pages/login/index.wxml +++ b/pages/login/index.wxml @@ -1,19 +1,20 @@ - + - - + + + 手机号快速登录 + + + + + + 使用本系统,代表您已阅读并同意 《用电管理服务条款》《用电管理登录政策》《隐私政策》 - - - \ No newline at end of file + + + + + diff --git a/pages/login/index.wxss b/pages/login/index.wxss index 392a9f0..6188ac4 100644 --- a/pages/login/index.wxss +++ b/pages/login/index.wxss @@ -1,15 +1,7 @@ /* pages/login/index.wxss */ -.content { - /* width: 600rpx; - height: 500rpx; + +page { background-color: #fff; - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - margin: auto; - padding: 20rpx 24rpx; */ } .confirmWrapper { @@ -18,4 +10,25 @@ .agreementText { color: rgb(211, 155, 52); +} + +.logo { + display: flex; + justify-content: center; + margin-top: 15vh; + margin-bottom: 15vh; +} + +.content { + margin-left: 32rpx; + margin-right: 32rpx; +} + +.agreement { + margin-top: 32rpx; + display: flex; +} + +.checkbox { + margin-top: 6rpx; } \ No newline at end of file diff --git a/pages/member/components/approveMember/index.js b/pages/member/components/approveMember/index.js new file mode 100644 index 0000000..36594a3 --- /dev/null +++ b/pages/member/components/approveMember/index.js @@ -0,0 +1,64 @@ +import { approveUser, getApproveList } from "../../../../service/user" +import { alertInfo, alertSuccess, wxModal } from "../../../../utils/index"; +import request from "../../../../utils/request" + +const { OK } = request; + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + list: [] + }, + lifetimes: { + attached: function() { + // this.setData({ + // list: [] + // }) + this.init(); + } + }, + /** + * 组件的方法列表 + */ + methods: { + async init() { + const result = await getApproveList() + this.setData({ + list: result.data + }) + }, + async agree(e) { + const { user } = e.currentTarget.dataset; + console.log('user', user) + await wxModal({ content: `同意${user.nickName}的申请?` }) + const { code, message } = await approveUser({ userId: user.id, type: 1 }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已同意") + this.init() + }, + async disAgree(e) { + const { user } = e.currentTarget.dataset; + await wxModal({ content: `拒绝${user.nickName}的申请?` }) + const { code, message } = await approveUser({ userId: user.id, type: 0 }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已拒绝") + this.init() + } + } +}) \ No newline at end of file diff --git a/pages/member/components/approveMember/index.json b/pages/member/components/approveMember/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/pages/member/components/approveMember/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/member/components/approveMember/index.wxml b/pages/member/components/approveMember/index.wxml new file mode 100644 index 0000000..9ee6ea0 --- /dev/null +++ b/pages/member/components/approveMember/index.wxml @@ -0,0 +1,8 @@ + + + {{ item.nickName }} + + 同意 + 拒绝 + + \ No newline at end of file diff --git a/pages/member/components/approveMember/index.wxss b/pages/member/components/approveMember/index.wxss new file mode 100644 index 0000000..4f2195c --- /dev/null +++ b/pages/member/components/approveMember/index.wxss @@ -0,0 +1,21 @@ +/* pages/member/components/approveMember/index.wxss */ +.item { + display: flex; + align-items: center; + padding-top: 24rpx; + padding-bottom: 24rpx; + margin-left: 32rpx; + margin-right: 32rpx; +} + +.nickName { + flex: 1; +} + +.operate { + display: flex; +} + +.disAgree { + margin-left: 24rpx; +} \ No newline at end of file diff --git a/pages/member/components/memberManage/index.js b/pages/member/components/memberManage/index.js new file mode 100644 index 0000000..a81e3f0 --- /dev/null +++ b/pages/member/components/memberManage/index.js @@ -0,0 +1,65 @@ +import { approveUser, getApproveList } from "../../../../service/user" +import { alertInfo, alertSuccess, wxModal } from "../../../../utils/index"; +import request from "../../../../utils/request" + +const { OK } = request; + +Component({ + + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + list: [] + }, + lifetimes: { + attached: function() { + // this.setData({ + // list: [] + // }) + this.init(); + } + }, + /** + * 组件的方法列表 + */ + methods: { + async init() { + const result = await getApproveList() + this.setData({ + list: result.data + }) + }, + async setAdmin(e) { + const { user } = e.currentTarget.dataset; + console.log('user', user) + await wxModal({ content: `你的管理员身份将转交给${user.nickName}` }) + const { code, message } = await approveUser({ userId: user.id, type: 2 }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("转交成功") + wx.clearStorageSync() + wx.exitMiniProgram() + }, + async disAgree(e) { + const { user } = e.currentTarget.dataset; + await wxModal({ content: `拒绝${user.nickName}的申请?` }) + const { code, message } = await approveUser({ userId: user.id, type: 0 }) + if (code !== OK) { + alertInfo(message) + return; + } + alertSuccess("已拒绝") + this.init() + } + } +}) \ No newline at end of file diff --git a/pages/member/components/memberManage/index.json b/pages/member/components/memberManage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/pages/member/components/memberManage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/member/components/memberManage/index.wxml b/pages/member/components/memberManage/index.wxml new file mode 100644 index 0000000..f0537b6 --- /dev/null +++ b/pages/member/components/memberManage/index.wxml @@ -0,0 +1,8 @@ + + + {{ item.nickName }} + + 设为管理员 + 移除 + + \ No newline at end of file diff --git a/pages/member/components/memberManage/index.wxss b/pages/member/components/memberManage/index.wxss new file mode 100644 index 0000000..0bbb5e6 --- /dev/null +++ b/pages/member/components/memberManage/index.wxss @@ -0,0 +1,21 @@ + +.item { + display: flex; + align-items: center; + padding-top: 24rpx; + padding-bottom: 24rpx; + margin-left: 32rpx; + margin-right: 32rpx; +} + +.nickName { + flex: 1; +} + +.operate { + display: flex; +} + +.disAgree { + margin-left: 24rpx; +} \ No newline at end of file diff --git a/pages/member/index.js b/pages/member/index.js new file mode 100644 index 0000000..473d55e --- /dev/null +++ b/pages/member/index.js @@ -0,0 +1,70 @@ +// pages/member/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + active: 0 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + onChangeTab(e) { + this.setData({ + active: e.detail.index + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/member/index.json b/pages/member/index.json new file mode 100644 index 0000000..8f621e3 --- /dev/null +++ b/pages/member/index.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-tab": "@vant/weapp/tab/index", + "van-tabs": "@vant/weapp/tabs/index", + "approve-member": "./components/approveMember/index", + "member-manage": "./components/memberManage/index" + } +} \ No newline at end of file diff --git a/pages/member/index.wxml b/pages/member/index.wxml new file mode 100644 index 0000000..45d4281 --- /dev/null +++ b/pages/member/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/pages/member/index.wxss b/pages/member/index.wxss new file mode 100644 index 0000000..7e8182f --- /dev/null +++ b/pages/member/index.wxss @@ -0,0 +1 @@ +/* pages/member/index.wxss */ \ No newline at end of file diff --git a/pages/meterList/index.js b/pages/meterList/index.js index 586929a..0b4acb9 100644 --- a/pages/meterList/index.js +++ b/pages/meterList/index.js @@ -1,3 +1,5 @@ +import { getMeterList } from "../../service/meter"; + // pages/meterList/index.js Page({ @@ -5,11 +7,7 @@ Page({ * 页面的初始数据 */ data: { - codes: [ - { code: "2331242324", money: 510 }, - { code: "4234234134", money: 10 }, - { code: "2354245345", money: 50 }, - { code: "5365457642", money: 150 }, + list: [ ] }, @@ -18,9 +16,20 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - + this.getList(); + }, + async getList() { + const { code, message, data = [] } = await getMeterList() + this.setData({ + list: data + }) + }, + jumpToRecharge(e) { + const { code, tenement } = e.currentTarget.dataset; + wx.navigateTo({ + url: `/pages/recharge/index?code=${code}&tenement=${tenement}`, + }) }, - /** * 生命周期函数--监听页面初次渲染完成 */ diff --git a/pages/meterList/index.json b/pages/meterList/index.json index e8ab38c..f4c5ccd 100644 --- a/pages/meterList/index.json +++ b/pages/meterList/index.json @@ -2,5 +2,6 @@ "usingComponents": { "navigator": "/components/navigator/index", "scrollPageWrapper": "/components/scrollPageWrapper/index" - } + }, + "navigationBarTitleText": "表计列表" } \ No newline at end of file diff --git a/pages/meterList/index.wxml b/pages/meterList/index.wxml index 0b890a4..36d7487 100644 --- a/pages/meterList/index.wxml +++ b/pages/meterList/index.wxml @@ -1,12 +1,24 @@ - - - - - - {{ item.code }} - {{ item.money }} + + + {{ item.tenement.name }} : + + + 表{{ ele.code }}:余额为 + {{ ele.money }} + 充值 - + + 表计地址: {{ ele.address }} + + - \ No newline at end of file + + + + diff --git a/pages/meterList/index.wxss b/pages/meterList/index.wxss index 9a4e4ed..3cfcde7 100644 --- a/pages/meterList/index.wxss +++ b/pages/meterList/index.wxss @@ -1,20 +1,40 @@ /* pages/meterList/index.wxss */ -.content { +/* .content { flex: 1; padding: 16rpx 24rpx 20rpx; box-sizing: border-box; display: flex; overflow: hidden; -} +} */ .listItem { - display: flex; + /* display: flex; align-items: center; - justify-content: space-between; + justify-content: space-between; */ margin: 12rpx 0; } .money { font-size: 36rpx; font-weight: 600; + margin-left: 20rpx; + flex: 1; +} + +.content { + display: flex; + align-items: center; + margin-left: 30rpx; + margin-right: 20rpx; +} + +.address { + margin-left: 30rpx; + margin-right: 20rpx; +} + +.tenementName { + font-size: 42rpx; + font-weight: 600; + margin-bottom: 20rpx; } \ No newline at end of file diff --git a/pages/my/index.js b/pages/my/index.js index d10e116..54dcde4 100644 --- a/pages/my/index.js +++ b/pages/my/index.js @@ -26,6 +26,16 @@ Page({ url: '/pages/questions/index', }) }, + jumpToMember() { + wx.navigateTo({ + url: '/pages/member/index', + }) + }, + jumpToQrCode() { + wx.navigateTo({ + url: '/pages/qrCode/index', + }) + }, /** * 生命周期函数--监听页面显示 */ diff --git a/pages/my/index.wxml b/pages/my/index.wxml index 3dadaad..5fdebc6 100644 --- a/pages/my/index.wxml +++ b/pages/my/index.wxml @@ -3,9 +3,10 @@ - + + + + + \ No newline at end of file diff --git a/pages/qrCode/index.js b/pages/qrCode/index.js new file mode 100644 index 0000000..4cc34a5 --- /dev/null +++ b/pages/qrCode/index.js @@ -0,0 +1,66 @@ +// pages/qrCode/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/qrCode/index.json b/pages/qrCode/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/qrCode/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/qrCode/index.wxml b/pages/qrCode/index.wxml new file mode 100644 index 0000000..3fc1157 --- /dev/null +++ b/pages/qrCode/index.wxml @@ -0,0 +1,5 @@ + + + 扫码二维码,管理员同意后可进入 + + \ No newline at end of file diff --git a/pages/qrCode/index.wxss b/pages/qrCode/index.wxss new file mode 100644 index 0000000..a543372 --- /dev/null +++ b/pages/qrCode/index.wxss @@ -0,0 +1,13 @@ +/* pages/qrCode/index.wxss */ +.wrapper { + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; +} + +.text { + text-align: center; + margin-bottom: 10vh; +} \ No newline at end of file diff --git a/pages/recharge/index.js b/pages/recharge/index.js index 48b4e44..4f21762 100644 --- a/pages/recharge/index.js +++ b/pages/recharge/index.js @@ -1,3 +1,4 @@ +import { getMeterDetail } from "../../service/meter"; import { getGlobalData, showModal } from "../../utils/index"; // pages/recharge/index.js @@ -7,22 +8,29 @@ Page({ * 页面的初始数据 */ data: { - code: "", money: 0, moneyIndex: -1, primaryColor: getGlobalData().primaryColor, - codes: ['105465640', '46845132', '1645468'], defaultMoneyArray: [100, 200, 500, 1000, 2000], customFlag: false, + detail: {} }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - + const { tenement, code } = options + console.log('options', options) + this.init({ tenement, code }) + }, + async init(options) { + const { code, message, data = {}} = await getMeterDetail(options) + console.log('data', data) + this.setData({ + detail: data + }) }, - /** * 生命周期函数--监听页面初次渲染完成 */ @@ -38,7 +46,6 @@ Page({ }, chooseMoney(e) { const { money, index } = e.currentTarget.dataset; - console.log('index', index, typeof index) this.setData({ money, moneyIndex: Number(index), @@ -59,19 +66,17 @@ Page({ }) }, onChangeCustomMoney(e) { - console.log('onChangeCustomMoney', e) const money = e.detail.value; this.setData({ money: money, }) }, async recharge() { - const { code, money } = this.data; - const confirmResult = await showModal({ title: "充值确认", content: `确认充值表号为${code}的表计${money}元吗?` }); + const { detail = {}, money } = this.data; + const confirmResult = await showModal({ title: "充值确认", content: `确认充值表号为${detail?.meter?.code}的表计${money}元吗?` }); if (!confirmResult) { return; } - console.log('确认') }, /** * 生命周期函数--监听页面隐藏 diff --git a/pages/recharge/index.json b/pages/recharge/index.json index 01852ca..6618c57 100644 --- a/pages/recharge/index.json +++ b/pages/recharge/index.json @@ -1,5 +1,10 @@ { "usingComponents": { - "navigator": "/components/navigator/index" - } + "navigator": "/components/navigator/index", + "van-grid": "@vant/weapp/grid/index", + "van-grid-item": "@vant/weapp/grid-item/index", + "van-row": "@vant/weapp/row/index", + "van-col": "@vant/weapp/col/index" + }, + "navigationBarTitleText": "充值" } \ No newline at end of file diff --git a/pages/recharge/index.wxml b/pages/recharge/index.wxml index 27b1611..dc7674e 100644 --- a/pages/recharge/index.wxml +++ b/pages/recharge/index.wxml @@ -1,42 +1,76 @@ - + - - - - 电费账单 - 2024年02月 - - - - 商户编号 - T00062102047096834 - + + + + 充值表号: + {{ detail.meter.code }} + + + 表计地址: + {{ detail.meter.address }} + + + + 剩余金额: + {{ detail.money }} + + + 公司名称: + {{ detail.tenement.name }} + + + - {{item}} + {{item}} 自定义 - + + + - - --> + + \ No newline at end of file diff --git a/pages/recharge/index.wxss b/pages/recharge/index.wxss index 4541da2..a62e17e 100644 --- a/pages/recharge/index.wxss +++ b/pages/recharge/index.wxss @@ -41,4 +41,22 @@ .customInput { padding: 16rpx 24rpx; +} + +.gridTitle { + margin-bottom: 24rpx; +} + +.colBottom { + margin-top: 40rpx; +} + +.title { + font-weight: 600; + font-size: 40rpx; + margin-bottom: 20rpx; +} + +.content { + font-size: 32rpx; } \ No newline at end of file diff --git a/pages/rechargeRecord/index.js b/pages/rechargeRecord/index.js index 4661bc6..f869b2d 100644 --- a/pages/rechargeRecord/index.js +++ b/pages/rechargeRecord/index.js @@ -1,3 +1,4 @@ +import { getRechargeList } from "../../service/recharge"; import { getYears } from "../../utils/index"; // pages/rechargeRecord/index.js @@ -11,22 +12,7 @@ Page({ month: new Date().getMonth() + 1, years: getYears(), list: [ - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" }, - { code: '165146513', money: 100, time: "2024-02-20 18:56:15" }, - { code: '466541651', money: 200, time: "2024-02-28 18:56:15" } + ] }, @@ -45,17 +31,26 @@ Page({ }, onChangeYear(e) { const { years } = this.data; + const currentYear = years[Number(e.detail.value)] this.setData({ - year: years[Number(e.detail.value)] + year: currentYear }) + this.init(currentYear) }, /** * 生命周期函数--监听页面显示 */ onShow() { - + const currentYear = this.data.year; + this.init(currentYear) + }, + async init(year) { + const { code, message, data } = await getRechargeList(year); + console.log('data', data) + this.setData({ + list: data + }) }, - /** * 生命周期函数--监听页面隐藏 */ diff --git a/pages/rechargeRecord/index.json b/pages/rechargeRecord/index.json index e8ab38c..04f64e5 100644 --- a/pages/rechargeRecord/index.json +++ b/pages/rechargeRecord/index.json @@ -2,5 +2,6 @@ "usingComponents": { "navigator": "/components/navigator/index", "scrollPageWrapper": "/components/scrollPageWrapper/index" - } + }, + "navigationBarTitleText": "充值记录" } \ No newline at end of file diff --git a/pages/rechargeRecord/index.wxml b/pages/rechargeRecord/index.wxml index 10a4f38..52f57f2 100644 --- a/pages/rechargeRecord/index.wxml +++ b/pages/rechargeRecord/index.wxml @@ -1,25 +1,20 @@ - - - - - - - - {{ year }}年 - - - + + + + + {{ year }}年 + - - - - 表号:{{ item.code }} - {{ item.time }} - - {{ item.money }} - + + + + + + 表号:{{ item.meter.code }} + {{ item.time }} + {{ item.money }} - - \ No newline at end of file + + diff --git a/service/meter.js b/service/meter.js index 929ac22..c0a8f0c 100644 --- a/service/meter.js +++ b/service/meter.js @@ -7,6 +7,6 @@ export const getMeterList = async function() { } // 获取表计详情 -export const getMeterDetail = async function() { +export const getMeterDetail = async function({ tenement, code }) { return await GET(`/wx/getMeterDetail/${tenement}/${code}`); } \ No newline at end of file diff --git a/service/park.js b/service/park.js index 4d268ff..55c475e 100644 --- a/service/park.js +++ b/service/park.js @@ -2,6 +2,6 @@ import apis from '../utils/request'; const { GET, POST, PUT, DELETE } = apis // 获取园区列表 -export const getParkList = async function() { - return await GET(`/wx/getParkList`); +export const getParkList = async function({ keyword }) { + return await GET(`/wx/getParkList?keyword=${keyword}`); } \ No newline at end of file diff --git a/service/tenement.js b/service/tenement.js index 0f9576c..302ceff 100644 --- a/service/tenement.js +++ b/service/tenement.js @@ -2,6 +2,6 @@ import apis from '../utils/request'; const { GET, POST, PUT, DELETE } = apis // 获取园区id模糊搜索商户列表 -export const getParkList = async function({ park, keyword }) { +export const getTenementList = async function({ park, keyword }) { return await GET(`/wx/getTenementList?park=${park}&keyword=${keyword}`); } \ No newline at end of file diff --git a/utils/index.js b/utils/index.js index 3f29f82..f922b5d 100644 --- a/utils/index.js +++ b/utils/index.js @@ -43,7 +43,8 @@ export function getConfigByEnv() { switch (envVersion) { // 开发版 case 'develop': - api = "http://localhost:8000" + // api = "http://localhost:8000" + api = "http://127.0.0.1:4523/m1/4143821-0-default" break; // 体验版 case 'trial': @@ -195,4 +196,21 @@ export const wxLogin = () => { } }) }) +} + +export const wxModal = (data) => { + const { title = '提示', content } = data; + return new Promise((resolve, reject) => { + wx.showModal({ + title, + content, + success (res) { + if (res.confirm) { + resolve() + } else if (res.cancel) { + reject() + } + } + }) + }) } \ No newline at end of file diff --git a/utils/request.js b/utils/request.js index 24f1dd9..6c88ee9 100644 --- a/utils/request.js +++ b/utils/request.js @@ -85,19 +85,18 @@ const parseResponse = function (response) { wx.redirectTo({ url: '/pages/login/index', }) - return { code: 1, message: '未登录状态' } + return { code: 401, message: '未登录状态' } } if (statusCode === 404) { - return { code: 1, message: "服务故障" } + return { code: 404, message: "服务故障" } } - if (500 <= statusCode < 600) { - return { code: 1, message: "服务错误" } + if (500 <= statusCode && statusCode < 600) { + return { code: 500, message: "服务错误" } } - if (response.data.code !== 0) { + if (response.data.code !== 200) { } - return response.data; }