import React, { useState, useEffect } from "react"; import { View, Text, Image } from "@tarojs/components"; import "./index.scss"; import httpService from "@/services/httpService"; import Taro, { useReachBottom } from "@tarojs/taro"; import img from "@/config/images"; import { EmptyState, GeneralNavbar } from "@/components"; import { useGlobalState } from "@/store/global"; interface BillRecord { id: number; file_name: string; download_url: string; file_size: number; create_time: string; expire_time: string; bill_date_range_start: string; bill_date_range_end: string; bill_transaction_type: string; bill_transaction_sub_type: string; date_range_desc: string; transaction_type_desc: string; transaction_sub_type_desc: string; } const DownloadBillRecords: React.FC = () => { // 获取导航栏高度信息 const { statusNavbarHeightInfo } = useGlobalState() || {}; const { totalHeight = 98 } = statusNavbarHeightInfo || {}; // 获取当前页面的配置 const currentPage = Taro.getCurrentInstance(); const pageConfig = currentPage.page?.config; const pageTitle = pageConfig?.navigationBarTitleText; const [records, setRecords] = useState([]); const [params, setParams] = useState({ page: 1, limit: 20, }); const [totalPages, setTotalPages] = useState(1); useReachBottom(() => { if (params.page < totalPages) { setParams({ ...params, page: params.page + 1 }); } }); useEffect(() => { fetchRecords(); }, [params]); const fetchRecords = async () => { try { const response = await httpService.post<{ rows: BillRecord[]; totalPages: number; }>("/wallet/download_history", params); setRecords([...records, ...response.data.rows]); setTotalPages(response.data.totalPages); } catch (error) { console.log(error); Taro.showToast({ title: "获取账单记录失败", icon: "none", duration: 2000, }); } }; const handlePreviewFile = (fileUrl: string) => { wx.downloadFile({ url: fileUrl, success: (res) => { if (res.statusCode === 200) { // 确保文件路径正确并添加扩展名 const filePath = res.tempFilePath; wx.openDocument({ filePath: filePath, fileType: 'xlsx', // 指定文件类型为xlsx showMenu: true, // 显示右上角菜单按钮 success: (openRes) => { console.log('打开文档成功'); }, fail: (err) => { console.warn('打开文档失败', err); } }); } else { console.warn('下载失败,状态码:', res.statusCode); } }, fail: (err) => { console.warn('下载失败', err); } }); } return ( {/* 导航栏 */} {/* { Taro.navigateBack(); }} > {pageTitle} */} {/* 顶部导航栏 */} { Taro.navigateBack(); }} /> {records.length ? records.map((record) => ( {record.file_name} 申请时间 {record.create_time} 账单范围 {record.date_range_desc} handlePreviewFile(record.file_url)}>查看材料 )) : } 出于信息安全考虑,仅保留并展示7天内的账单下载记录 ); }; export default DownloadBillRecords;