|  |  |  | 
|---|
|  |  |  | // pages/valveList/valveList.js 开关阀记录 | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | get, | 
|---|
|  |  |  | post | 
|---|
|  |  |  | } = require('../../api/request.js'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Page({ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 页面的初始数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | listData: [{ | 
|---|
|  |  |  | intakeNum: "1023356646612" | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | intakeNum: "1023356646612" | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | intakeNum: "1023356646612" | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | intakeNum: "1023356646612" | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | intakeNum: "1023356646612" | 
|---|
|  |  |  | }] | 
|---|
|  |  |  | listVirtualData: [], | 
|---|
|  |  |  | listPhysicalData: [], | 
|---|
|  |  |  | currentTab: 0, | 
|---|
|  |  |  | isVirtualRefreshing: false, //虚拟卡刷新中 | 
|---|
|  |  |  | isPhysicalRefreshing: false, //实体卡刷新中 | 
|---|
|  |  |  | physicalPageCurr: 1, //实体卡当前页数 | 
|---|
|  |  |  | pageSize: 20, | 
|---|
|  |  |  | virtualPageCurr: 1, //虚拟卡当前页数 | 
|---|
|  |  |  | virtualhasMore: true, | 
|---|
|  |  |  | physicalHasMore: true, | 
|---|
|  |  |  | virtualIsLoding: false, | 
|---|
|  |  |  | physicalIsLoding: false, | 
|---|
|  |  |  | useTestData: false, // 添加测试数据标志 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | * 生命周期函数--监听页面初次渲染完成 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onReady() { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.getPhysicalListData(); | 
|---|
|  |  |  | this.getVirtualListData(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onShareAppMessage() { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | switchTab(e) { | 
|---|
|  |  |  | const tab = parseInt(e.currentTarget.dataset.tab); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | currentTab: tab | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //虚拟卡刷新 | 
|---|
|  |  |  | onPullVirtualDownRefresh() { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isVirtualRefreshing: true, | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getVirtualListData(true); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //实体卡刷新 | 
|---|
|  |  |  | onPullPhysicalDownRefresh() { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isPhysicalRefreshing: true, | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getPhysicalListData(true); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 生成虚拟卡测试数据 | 
|---|
|  |  |  | generateVirtualTestData() { | 
|---|
|  |  |  | return Array(10).fill().map((_, index) => ({ | 
|---|
|  |  |  | expense: (Math.random() * 100).toFixed(2), | 
|---|
|  |  |  | cardNum: `VC${Math.floor(Math.random() * 10000).toString().padStart(4, '0')}`, | 
|---|
|  |  |  | intakeNum: `IN${Math.floor(Math.random() * 1000).toString().padStart(3, '0')}`, | 
|---|
|  |  |  | openType: ['手动开阀', '自动开阀', '计划开阀'][Math.floor(Math.random() * 3)], | 
|---|
|  |  |  | openTime: this.generateRandomTime(), | 
|---|
|  |  |  | closeTime: this.generateRandomTime(), | 
|---|
|  |  |  | duration: Math.floor(Math.random() * 120), | 
|---|
|  |  |  | amount: (Math.random() * 50).toFixed(2) | 
|---|
|  |  |  | })); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 生成实体卡测试数据 | 
|---|
|  |  |  | generatePhysicalTestData() { | 
|---|
|  |  |  | return Array(10).fill().map((_, index) => ({ | 
|---|
|  |  |  | expense: (Math.random() * 100).toFixed(2), | 
|---|
|  |  |  | cardNum: `PC${Math.floor(Math.random() * 10000).toString().padStart(4, '0')}`, | 
|---|
|  |  |  | intakeNum: `IN${Math.floor(Math.random() * 1000).toString().padStart(3, '0')}`, | 
|---|
|  |  |  | openType: ['手动开阀', '自动开阀', '计划开阀'][Math.floor(Math.random() * 3)], | 
|---|
|  |  |  | openTime: this.generateRandomTime(), | 
|---|
|  |  |  | closeTime: this.generateRandomTime(), | 
|---|
|  |  |  | duration: Math.floor(Math.random() * 120), | 
|---|
|  |  |  | amount: (Math.random() * 50).toFixed(2) | 
|---|
|  |  |  | })); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 生成随机时间 | 
|---|
|  |  |  | generateRandomTime() { | 
|---|
|  |  |  | const now = new Date(); | 
|---|
|  |  |  | const randomHours = Math.floor(Math.random() * 24); | 
|---|
|  |  |  | const randomMinutes = Math.floor(Math.random() * 60); | 
|---|
|  |  |  | const randomSeconds = Math.floor(Math.random() * 60); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const date = new Date(now); | 
|---|
|  |  |  | date.setHours(randomHours); | 
|---|
|  |  |  | date.setMinutes(randomMinutes); | 
|---|
|  |  |  | date.setSeconds(randomSeconds); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return date.toLocaleString(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取实体卡列表 | 
|---|
|  |  |  | getPhysicalListData(isRefresh) { | 
|---|
|  |  |  | if (this.data.useTestData) { | 
|---|
|  |  |  | // 使用测试数据 | 
|---|
|  |  |  | const testData = this.generatePhysicalTestData(); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | listPhysicalData: isRefresh ? testData : this.data.listPhysicalData.concat(testData), | 
|---|
|  |  |  | isPhysicalRefreshing: false, | 
|---|
|  |  |  | physicalIsLoding: false, | 
|---|
|  |  |  | physicalHasMore: this.data.physicalPageCurr < 3 // 模拟3页数据 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | get({ | 
|---|
|  |  |  | url: 'wx/intake/getCardOpenClose', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | clientId: getApp().globalData.clientId, | 
|---|
|  |  |  | pageCurr: this.data.physicalPageCurr, | 
|---|
|  |  |  | pageSize: this.data.pageSize | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then((data) => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isPhysicalRefreshing: false, | 
|---|
|  |  |  | physicalIsLoding: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (data.success && data.code === "0001") { | 
|---|
|  |  |  | const filteredData = data.content.obj.filter(item => item.openTime !== null && item.closeTime !== null); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | listPhysicalData: isRefresh ? filteredData : this.data.listPhysicalData.concat(filteredData), | 
|---|
|  |  |  | physicalHasMore: this.data.physicalPageCurr < data.content.pageTotal, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: data.msg, | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch((error) => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isPhysicalRefreshing: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | console.error('Failed to add item:', error); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取虚拟卡开关阀记录 | 
|---|
|  |  |  | getVirtualListData(isRefresh) { | 
|---|
|  |  |  | if (this.data.useTestData) { | 
|---|
|  |  |  | // 使用测试数据 | 
|---|
|  |  |  | const testData = this.generateVirtualTestData(); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | listVirtualData: isRefresh ? testData : this.data.listVirtualData.concat(testData), | 
|---|
|  |  |  | isVirtualRefreshing: false, | 
|---|
|  |  |  | virtualIsLoding: false, | 
|---|
|  |  |  | virtualhasMore: this.data.virtualPageCurr < 3 // 模拟3页数据 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | get({ | 
|---|
|  |  |  | url: 'wx/intake/getVcCardOpenClose', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | clientId: getApp().globalData.clientId, | 
|---|
|  |  |  | pageCurr: this.data.physicalPageCurr, | 
|---|
|  |  |  | pageSize: this.data.pageSize | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then((data) => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isVirtualRefreshing: false, | 
|---|
|  |  |  | virtualIsLoding: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (data.success && data.code === "0001") { | 
|---|
|  |  |  | const filteredData = data.content.obj.filter(item => item.openTime !== null && item.closeTime !== null); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | listVirtualData: isRefresh ? filteredData : this.data.listVirtualData.concat(filteredData), | 
|---|
|  |  |  | virtualhasMore: this.data.virtualPageCurr < data.content.pageTotal, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: data.msg, | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch((error) => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isVirtualRefreshing: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | console.error('Failed to add item:', error); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //加载更多的实体卡 | 
|---|
|  |  |  | loadPhysicalMore() { | 
|---|
|  |  |  | if (this.data.physicalHasMore) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | physicalIsLoding: true, | 
|---|
|  |  |  | physicalPageCurr: this.data.physicalPageCurr + 1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getPhysicalListData(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //加载更多的虚拟卡 | 
|---|
|  |  |  | loadVirtualMore() { | 
|---|
|  |  |  | if (this.data.virtualhasMore) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | virtualIsLoding: true, | 
|---|
|  |  |  | virtualPageCurr: this.data.virtualPageCurr + 1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getVirtualListData(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }) | 
|---|