import { getDict } from "../../api/dict"; import { deleteFinance, getFinanceList, getStatistics, } from "../../api/finance"; import { getInfo } from "../../api/login"; // pages/index/index.ts Page({ /** * 页面的初始数据 */ data: { showConfirmDelete: false, loadStatus: 1, permissions: [], queryParams: { pageNum: 1, pageSize: 10, }, authToken: null, statistics: { amount: { label: "账户余额", value: 0, type: "money", }, income: { label: "当月入账", value: 0, type: "money", }, expenditure: { label: "当月出账", value: 0, type: "money", }, }, loading: false, total: 0, completed: false, deleteIndex: -1, deleteId: null, list: [], types: [], }, async getList() { this.setData({ loading: true, loadStatus: 0, }); const { queryParams } = this.data; try { const resp: any = await getFinanceList(queryParams); let completed = false; if ( Math.ceil(resp.total / this.data.queryParams.pageSize) == this.data.queryParams.pageNum ) { completed = true; } this.setData({ completed, loadStatus: completed ? 3 : 1, total: resp.total, // @ts-ignore list: [...this.data.list,...resp.rows], }); if (!completed) { this.setData({ ["queryParams.pageNum"]: this.data.queryParams.pageNum + 1, }); } } catch (e) { this.setData({ loadStatus: 2, }); console.log(e); } this.setData({ loading: false, }); }, async getStatisticsDetail() { const resp: any = await getStatistics(); this.setData({ ["statistics.amount.value"]: resp.data.amount, ["statistics.income.value"]: resp.data.income, ["statistics.expenditure.value"]: resp.data.expenditure, }); }, handleAddAffairs() { wx.navigateTo({ url: "/pages/add-finance/add-finance", fail(err) { console.log(err); }, }); }, handleUpdateFinance(e: any) { const financeId = e.currentTarget.dataset.financeId; wx.navigateTo({ url: `/pages/add-finance/add-finance?financeId=${financeId}`, }); }, getTypeOptions() { getDict("finance_type").then((resp: any) => { const options = resp.data?.map((el: any) => ({ label: el.dictLabel, value: el.dictValue, })) ?? []; this.setData({ types: options, }); }); }, showDeleteDialog(e: any) { console.log(e.currentTarget.dataset); const { financeId } = e.currentTarget.dataset; this.setData({ showConfirmDelete: true, deleteId: financeId, }); }, closeDialog() { this.setData({ showConfirmDelete: false, }); }, handleLongTap(e: any) { const { deleteIndex, permissions } = this.data; // @ts-ignore if (!permissions.includes("finance:detail:remove")) { return; } const index = parseInt(e.currentTarget.dataset.index); let resultIndex; if (deleteIndex == index) { resultIndex = -1; } else { resultIndex = index; } this.setData({ deleteIndex: resultIndex, }); }, handleDeleteFinance() { const { deleteId } = this.data; if (!deleteId) return; // @ts-ignore deleteFinance(deleteId).then(() => { const { list } = this.data; this.setData({ list: list.filter((el: any) => el.financeId !== deleteId), deleteIndex: -1, }); }); }, loadMore() { const { loading, completed } = this.data; if (loading || completed) { return; } this.getList(); }, toLogin() { wx.switchTab({ url: "/pages/login/login", }); }, loadUserInfo() { const permissions = getApp().globalData.permissions; if (permissions) { this.setData({ permissions, }); } else { const token = getApp().globalData.authToken; getInfo(token).then((resp: any) => { this.setData({ permissions: resp.permissions, }); getApp().globalData.permissions = resp.permissions; }); } }, loadPageData() { const authToken = getApp().globalData.authToken; this.setData({ authToken, }); if (!authToken) return; this.getList(); this.getTypeOptions(); this.getStatisticsDetail(); }, /** * 生命周期函数--监听页面加载 */ onLoad() {}, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() {}, /** * 生命周期函数--监听页面显示 */ onShow() { this.loadPageData(); this.loadUserInfo(); }, /** * 生命周期函数--监听页面隐藏 */ onHide() {}, /** * 生命周期函数--监听页面卸载 */ onUnload() {}, async handleRefresh() { this.setData({ ["queryParams.pageNum"]: 1, completed: false, loading: false, total: 0, list: [], }); await this.getList(); await this.getStatisticsDetail(); wx.stopPullDownRefresh(); }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { this.handleRefresh(); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { console.log("reach bottom"); this.loadMore(); }, /** * 用户点击右上角分享 */ onShareAppMessage() {}, });