diff --git a/app.json b/app.json index ca7f6a6..781a6ec 100644 --- a/app.json +++ b/app.json @@ -1,8 +1,8 @@ { "pages": [ "pages/home/index", - "pages/my/index", "pages/handleLogin/index", + "pages/my/index", "pages/member/index", "pages/login/index", "pages/apply/index", diff --git a/components/avatar/index.wxml b/components/avatar/index.wxml index b6f4adc..36da3d9 100644 --- a/components/avatar/index.wxml +++ b/components/avatar/index.wxml @@ -1,2 +1,4 @@ -{{text}} \ No newline at end of file + + {{text}} + \ No newline at end of file diff --git a/components/avatar/index.wxss b/components/avatar/index.wxss index 6be8660..a023ed7 100644 --- a/components/avatar/index.wxss +++ b/components/avatar/index.wxss @@ -9,3 +9,8 @@ align-items: center; color: #fff; } + +.text { + max-width: 100rpx; + overflow: hidden; +} diff --git a/components/picker/index.js b/components/picker/index.js new file mode 100644 index 0000000..4ad086c --- /dev/null +++ b/components/picker/index.js @@ -0,0 +1,38 @@ +// components/picker/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + valueKey: { + type: String, + default: "name" + }, + show: Boolean, + columns: Array, + type: String + }, + + /** + * 组件的初始数据 + */ + data: { + // columns:['杭州', '宁波', '温州', '嘉兴', '湖州'] + }, + + /** + * 组件的方法列表 + */ + methods: { + onClose() { + this.triggerEvent("close"); + }, + confirm(e) { + this.triggerEvent("ok", {...e.detail, type: this.data.type}) + }, + cancel() { + this.triggerEvent("cancel") + } + } +}) \ No newline at end of file diff --git a/components/picker/index.json b/components/picker/index.json new file mode 100644 index 0000000..935dd7b --- /dev/null +++ b/components/picker/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index" + } +} \ No newline at end of file diff --git a/components/picker/index.wxml b/components/picker/index.wxml new file mode 100644 index 0000000..9c78a7f --- /dev/null +++ b/components/picker/index.wxml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/components/picker/index.wxss b/components/picker/index.wxss new file mode 100644 index 0000000..033253e --- /dev/null +++ b/components/picker/index.wxss @@ -0,0 +1 @@ +/* components/picker/index.wxss */ \ No newline at end of file diff --git a/pages/apply/index.js b/pages/apply/index.js index f892a21..fb31e07 100644 --- a/pages/apply/index.js +++ b/pages/apply/index.js @@ -19,16 +19,8 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - console.log('options', options) const querys = decodeURIComponent(options.scene) - console.log('querys', querys) - // const search = new URLSearchParams(querys) - // const { id } = querys; const id = querys.slice(querys.indexOf("=") + 1) - // const id = seach.get('id') - console.log('更换') - console.log('id', id) - // this.setData({ id, name }) this.getInfo(id); }, async getInfo(id) { @@ -52,11 +44,8 @@ Page({ }, async handleLogin(phoneCode) { const { id, nickName } = this.data; - console.log('准备开始') loadingFunc(async () => { - console.log('开始') const wxLoginCode = await wxLogin() - console.log('wxLoginCode', wxLoginCode) const result = await userApply({ code: wxLoginCode, phoneCode, id, name: nickName }) const { code, message, data } = result; if (code !== OK) { @@ -78,7 +67,6 @@ Page({ }, getPhoneNumber(e) { const { nickName } = this.data; - console.log('nickName', e, nickName) if (!nickName) { alertInfo("请填写你的名字") return; @@ -93,7 +81,6 @@ Page({ alertInfo("服务达到上限") return; default: - console.log("进入登录流程") this.handleLogin(phoneCode) return; } diff --git a/pages/handleLogin/index.js b/pages/handleLogin/index.js index fb9b37a..cd79641 100644 --- a/pages/handleLogin/index.js +++ b/pages/handleLogin/index.js @@ -71,6 +71,7 @@ Page({ alertInfo("请输入你的昵称") return } + let err = "" loadingFunc(async () => { const wxLoginCode = await wxLogin() const { code, message, data } = await userValidate({ park, tenement, phone, name, code: wxLoginCode }) @@ -91,7 +92,6 @@ Page({ url: '/pages/home/index', }) }) - }, /** * 生命周期函数--监听页面初次渲染完成 diff --git a/pages/home/index.js b/pages/home/index.js index 92f0d80..ebe264f 100644 --- a/pages/home/index.js +++ b/pages/home/index.js @@ -1,5 +1,8 @@ +import { getOwnTenementList } from "../../service/tenement"; +import { getUserInfo } from "../../service/user"; import { alertInfo } from "../../utils/index"; - +import request from '../../utils/request'; +const { OK } = request; // pages/home/index.js Page({ @@ -8,20 +11,73 @@ Page({ */ data: { user: {}, + all: [], + park: {}, + tenement: {}, + show: false, + columns: [], + pickerType: "" }, - + /** * 生命周期函数--监听页面加载 */ onLoad(options) { }, - + choosePark() { + this.setData({ + columns: this.data.all, + show: true, + pickerType: "park" + }) + }, + chooseTenement() { + const { park = {}} = this.data; + const { tenements } = park; + this.setData({ + columns: tenements, + show: true, + pickerType: "tenement" + }) + }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { + }, + onOk(e) { + // console.log('e', e) + const { type, index, value } = e.detail; + const currentPark = this.data.park; + if (type === "park") { + if (value.id === currentPark?.id) { + this.setData({ show: false }) + return + } + this.setData({ + show: false, + park: value, + tenement: value.tenements?.[0] + }) + } + if (type === "tenement") { + const currentTenement = this.data.tenement; + if (value.id === currentTenement?.id) { + this.setData({ show: false }) + return + } + this.setData({ + show: false, + tenement: value + }) + } + }, + onCancel() { + this.setData({ + show: false, + }) }, changeMoney(e) { const { money } = e.currentTarget.dataset; @@ -30,7 +86,6 @@ Page({ }) }, onChangeMoney(e) { - console.log('e', e) this.setData({ money: Number(e.detail) }) }, recharge() { @@ -49,10 +104,60 @@ Page({ * 生命周期函数--监听页面显示 */ onShow() { - const user = wx.getStorageSync('user') - this.setData({ user }) + this.setUser(); + this.getAllList(); + this.watchTenement(); }, - + watchTenement() { + let value = this.data.tenement; // 获取被监听属性的当前值 + + // 使用 Object.defineProperty 方法在数据对象上定义属性的 getter 和 setter + Object.defineProperty(this.data, 'tenement', { + configurable: true, // 可配置 + enumerable: true, // 可枚举 + get: function () { + return value; // 返回属性的当前值 + }, + set: function (newVal) { + const oldValue = value; + value = newVal; + } + }); + }, + async setUser() { + const result = await getUserInfo(); + if (result.code !== OK) { + alertInfo(result.message) + return; + } + this.setData({ user: result.data }) + wx.setStorageSync('user', result.data) + }, + async getAllList() { + const { code, message, data } = await getOwnTenementList() + if (code !== OK) { + alertInfo(message) + return + } + const [firstPark = {}] = data; + const { park, tenement } = this.data; + const updateDatas = {} + if (!park || !park.id) { + updateDatas.park = firstPark + } + if (!tenement || !tenement.id) { + if (!park || !park.id) { + updateDatas.tenement = firstPark.tenements?.[0] + } else { + updateDatas.tenement = park.tenements?.[0]; + } + } + updateDatas.all = data; + this.setData({ + ...updateDatas + }) + }, + /** * 生命周期函数--监听页面隐藏 */ diff --git a/pages/home/index.json b/pages/home/index.json index adc734d..e2bb39e 100644 --- a/pages/home/index.json +++ b/pages/home/index.json @@ -5,7 +5,8 @@ "van-button": "@vant/weapp/button/index", "van-image": "@vant/weapp/image/index", "avatar": "/components/avatar/index", - "van-field": "@vant/weapp/field/index" + "van-field": "@vant/weapp/field/index", + "picker": "/components/picker/index" }, "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/home/index.wxml b/pages/home/index.wxml index 60ce956..96091d9 100644 --- a/pages/home/index.wxml +++ b/pages/home/index.wxml @@ -1,11 +1,13 @@ - + + + 用电管理服务 · - + - 金石工业园 + {{park.name}} @@ -20,9 +22,9 @@ 请登录 - + - {{user.tenement.name}} + {{user.tenement.name}} 欢迎使用华昌宝能用电管理系统! @@ -80,4 +82,7 @@ 去缴费 - \ No newline at end of file + + + + diff --git a/utils/index.js b/utils/index.js index 7bd445b..adb98ac 100644 --- a/utils/index.js +++ b/utils/index.js @@ -142,6 +142,7 @@ export const showLoading = async (options = {}) => { export const hideLoading = async () => { return new Promise((resolve, reject) => { wx.hideLoading({ + noConflict: true, success: () => { resolve() }