diff --git a/pages/api.js b/pages/api.js index 335835c..a07018e 100644 --- a/pages/api.js +++ b/pages/api.js @@ -133,6 +133,22 @@ export function submitWaterAndElectricity(data) { data: data, }); } +// 根据房屋获取房间 +export function getRoomByHouseId(query) { + return request({ + url: `/mz/room/getRoomInfoByHouseId`, + method: "get", + params: query, + }); +} +// 查房屋信息 +export function getHouseInfo(id ){ + return request ({ + url: `/mz/house/${id}`, + method:"get" + }) +} + // 退出登录 export function logout() { diff --git a/pages/login/login.vue b/pages/login/login.vue index 63b6b50..3826421 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -177,11 +177,9 @@ export default { if (res.code === 200) { this.loginFailCounts[username] = 0; - uni.setStorageSync("token", res.token); + store.dispatch('user/setToken', res.token); // 1. 获取用户信息 const userRes = await getUserInfo(); - console.log(userRes,'获取用户信息成功'); - if (userRes.code === 200) { uni.setStorageSync("userInfo", userRes.data); // 2. 存到vuex diff --git a/pages/tabBar/mine/index.vue b/pages/tabBar/mine/index.vue index 7ce8985..dd52258 100644 --- a/pages/tabBar/mine/index.vue +++ b/pages/tabBar/mine/index.vue @@ -68,8 +68,6 @@ export default { this.$store.dispatch("user/setUserInfo", userInfo); } this.userInfo = userInfo; - - console.log("userInfo", userInfo); }, methods: { isNetAvatar(url) { @@ -79,8 +77,8 @@ export default { async handleLogout() { try { await logout(); - } catch (e) {} - uni.removeStorageSync("token"); + } catch (e) { } + await this.$store.dispatch("user/logout"); uni.reLaunch({ url: "/pages/login/login", }); diff --git a/pages/tabBar/work/index.vue b/pages/tabBar/work/index.vue index d1aeabd..1507b99 100644 --- a/pages/tabBar/work/index.vue +++ b/pages/tabBar/work/index.vue @@ -38,7 +38,7 @@ - + 水电 hasMenu(item, name)); + return menu.some((item) => hasMenu(item, name)); } if (menu.name === name) return true; if (menu.children) return hasMenu(menu.children, name); diff --git a/pagesA/sdPage/dfReport.vue b/pagesA/sdPage/dfReport.vue index 2ba4591..3c407f6 100644 --- a/pagesA/sdPage/dfReport.vue +++ b/pagesA/sdPage/dfReport.vue @@ -74,39 +74,56 @@ - 水表{{ index + 1 }} + {{ item.roomTypeName }} - 电表号 + + * + 电表号 + - 上次表数 + + * + 上次表数 + - 本次表数 + + * + 本次表数 + - 上传图片 + + * + 上传图片 + item.name); this.blockForm.houseId = houseArray[0].id; + this.energyMeterConfig = houseArray[0].energyMeterConfig; + this.waterMeterConfig = houseArray[0].waterMeterConfig; + if (this.energyMeterConfig == 1) { + this.getHouseInfoBy(this.blockForm.houseId); + } else if (this.energyMeterConfig == 2) { + this.getRoomByHouseId(this.blockForm.houseId); + } + this.getLastMeter(); + let house = houseArray[0]; // for (let index = 0; index < house.type; index++) { // this.form.waterMeters.push({ @@ -346,10 +382,24 @@ export default { case 2: { this.blockForm.houseId = this.houseOptions[e.detail.value].id; this.blockForm.roomId = this.houseOptions[e.detail.value].roomId; + this.waterMeterConfig = + this.houseOptions[e.detail.value].waterMeterConfig; + this.energyMeterConfig = + this.houseOptions[e.detail.value].energyMeterConfig; + if (this.energyMeterConfig == 1) { + this.getHouseInfoBy(this.blockForm.houseId); + } else if (this.energyMeterConfig == 2) { + this.getRoomByHouseId(this.blockForm.houseId); + } + this.getLastMeter(); + console.log( + this.waterMeterConfig, + this.energyMeterConfig, + "this.waterMeterConfig, this.energyMeterConfig" + ); console.log(this.houseOptions[e.detail.value]); } } - this.getLastMeter(); this.$forceUpdate(); }, onDelete(event, index) { @@ -403,6 +453,16 @@ export default { }, }); }, + // 获取房屋信息 + async getHouseInfoBy(id) { + const res = await getHouseInfo(id); + if (res.code == 200) { + this.form = this.form.map((item) => ({ + ...item, + electricMeterNumber: res.data.electricMeterNumber, + })); + } + }, // 获取上次抄表 async getLastMeter(item) { const params = { @@ -412,23 +472,65 @@ export default { meterNumber: "", }; const res = await queryLastMeterReading(params); - if (Array.isArray(res.data) && res.data.length > 0) { - this.form = res.data.map((item, idx) => ({ - lastMeterReading: item.thisMeterReading, - meterNumber: item.meterNumber, - // thisMeterReading: item.thisMeterReading || "", - // fileList: [], - // id: item.id || idx, - })); - } else { - // res.data 为空时,显示一个空表单 - this.form = [ - { - lastMeterReading: "", - meterNumber: "", - thisMeterReading: "", - }, - ]; + console.log( + "form:", + this.form.map((i) => i.id) + ); + console.log( + "res.data:", + res.data.map((i) => i.roomId) + ); + // if (Array.isArray(res.data) && res.data.length > 0) { + this.form = this.form.map((item) => { + // 找到 getLastMeter 返回的对应项 + const meter = res.data.find( + (m) => String(m.roomId) === String(item.id) + ); + console.log(meter, "meter"); + + if (meter) { + return { + ...item, + lastMeterReading: meter.thisMeterReading, + electricMeterNumber: meter.meterNumber, + }; + } + return item; + }); + // } else { + // // res.data 为空时,显示一个空表单 + // this.form = [ + // { + // lastMeterReading: "", + // // meterNumber: "", + // thisMeterReading: "", + // }, + // ]; + // } + }, + async getRoomByHouseId(id) { + const res = await getRoomByHouseId({ houseId: id }); + if (res.code == 200) { + console.log(res.data, "res.data"); + const data = res.data; + if (this.energyMeterConfig == 1) { + this.form = [{}]; + } else if (this.energyMeterConfig == 2) { + this.form = res.data; + } + this.getLastMeter(); + + console.log(this.form, "this.form"); + // if (this.waterMeterConfig == 1 && this.energyMeterConfig == 1) { + // this.sbList = []; + // this.dbList = []; + // } else if (this.waterMeterConfig == 1 && this.energyMeterConfig == 2) { + // this.sbList = []; + // this.dbList = data; + // } else if (this.waterMeterConfig == 2 && this.energyMeterConfig == 1) { + // this.sbList = data; + // this.dbList = []; + // } } }, onSubmit() { @@ -443,26 +545,80 @@ export default { uni.showToast({ title: "请选择房屋", icon: "none" }); return; } - console.log("当前的 waterMeters 数据:", this.form.waterMeters); - // // 检查本次表数是否都已输入 - // const hasEmptyThisMeterReading = this.form.waterMeters.some( - // (item) => !item.thisMeterReading - // ); - // if (hasEmptyThisMeterReading) { - // uni.showToast({ title: "请输入所有水表的本次表数", icon: "none" }); - // return; - // } + // 必填校验:电表号、上次表数、本次表数、图片/视频 + for (let i = 0; i < this.form.length; i++) { + const item = this.form[i]; + if (this.energyMeterConfig == 2) { + // if (!item.electricMeterNumber) { + // uni.showToast({ + // title: `第${i + 1}个房间请填写电表号`, + // icon: "none", + // }); + // return; + // } + if (!item.lastMeterReading && item.lastMeterReading !== 0) { + uni.showToast({ + title: `第${i + 1}个房间请填写上次表数`, + icon: "none", + }); + return; + } + if (!item.thisMeterReading && item.thisMeterReading !== 0) { + uni.showToast({ + title: `第${i + 1}个房间请填写本次表数`, + icon: "none", + }); + return; + } + if (!item.fileList || item.fileList.length === 0) { + uni.showToast({ + title: `第${i + 1}个房间请上传图片/视频`, + icon: "none", + }); + return; + } + } else { + // if (!item.electricMeterNumber) { + // uni.showToast({ + // title: `请填写电表号`, + // icon: "none", + // }); + // return; + // } + if (!item.lastMeterReading && item.lastMeterReading !== 0) { + uni.showToast({ + title: `请填写上次表数`, + icon: "none", + }); + return; + } + if (!item.thisMeterReading && item.thisMeterReading !== 0) { + uni.showToast({ + title: `请填写本次表数`, + icon: "none", + }); + return; + } + if (!item.fileList || item.fileList.length === 0) { + uni.showToast({ + title: `请上传图片/视频`, + icon: "none", + }); + return; + } + } + } this.submitAdd(); console.log("onSubmit", this.form); }, async submitAdd() { let params = this.form.map((item) => ({ - meterNumber: item.meterNumber, - meterType: 1, + meterNumber: item.electricMeterNumber, + meterType: 1, houseId: this.blockForm.houseId, - roomId: this.blockForm.roomId, - lastMeterReading: parseFloat(item.lastMeterReading).toFixed(2), - thisMeterReading: parseFloat(item.thisMeterReading).toFixed(2), + roomId: item.id || "", + lastMeterReading: parseFloat(item.lastMeterReading).toFixed(4), + thisMeterReading: parseFloat(item.thisMeterReading).toFixed(4), images: (item.fileList || []).map((f) => ({ url: f.url, name: f.name, diff --git a/pagesA/sdPage/sfReport.vue b/pagesA/sdPage/sfReport.vue index 731657d..82fc467 100644 --- a/pagesA/sdPage/sfReport.vue +++ b/pagesA/sdPage/sfReport.vue @@ -1,28 +1,47 @@ diff --git a/store/user.js b/store/user.js index 9dc6d87..4132854 100644 --- a/store/user.js +++ b/store/user.js @@ -1,18 +1,35 @@ // store/user.js const state = { userInfo: null, + token:uni.getStorageSync('token') || null, }; const mutations = { SET_USER_INFO(state, info) { state.userInfo = info; }, + SET_TOKEN(state, token) { + state.token = token; + }, + LOGOUT(state) { + state.userInfo = null; + state.token = null; + }, }; const actions = { setUserInfo({ commit }, info) { commit("SET_USER_INFO", info); }, + setToken({ commit }, token) { + commit("SET_TOKEN", token); + uni.setStorageSync('token', token); + }, + logout({ commit }) { + commit("LOGOUT"); + uni.removeStorageSync('token'); + uni.removeStorageSync('userInfo'); + }, }; export default { diff --git a/utils/request.js b/utils/request.js index 06df7c2..bcd8d83 100644 --- a/utils/request.js +++ b/utils/request.js @@ -1,9 +1,9 @@ // utils/request.js import { baseUrl } from "./config"; - +import store from "@/store"; export default function request(options = {}) { // 获取token(假设存储在本地storage) - const token = uni.getStorageSync('token') || ''; + const token = uni.getStorageSync('token') || store.state.user.token; return new Promise((resolve, reject) => { uni.request({