|  |  | 
 |  |  | <template> | 
 |  |  |   <!-- <ProTabs | 
 |  |  |     v-model="queryState.type" | 
 |  |  |     name="home-tab" | 
 |  |  |     :showPaneContent="false" | 
 |  |  |     class="home-tabs" | 
 |  |  |     isTransparent | 
 |  |  |     title-gutter="12" | 
 |  |  |     title-scroll | 
 |  |  |   > | 
 |  |  |     <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane> | 
 |  |  |     <ProTabPane :title="`收入`" :pane-key="EnumUserWalletTransactionType.Income"></ProTabPane> | 
 |  |  |     <ProTabPane :title="`提现`" :pane-key="EnumUserWalletTransactionType.Withdraw"></ProTabPane> | 
 |  |  |   </ProTabs> --> | 
 |  |  |   <List> | 
 |  |  |     <IncomeDetailListItem :item="'收入:¥600.00'"> | 
 |  |  |     <IncomeDetailListItem :item="`收入:¥${toThousand(sumIncome)} `"> | 
 |  |  |       <template #title> | 
 |  |  |         <div class="income-detail-time-picker"> | 
 |  |  |           <ChooseInputWithDatePicker | 
 |  |  |             v-model="form.month" | 
 |  |  |             v-model="queryState.month" | 
 |  |  |             type="year-month" | 
 |  |  |             format="YYYY年M月" | 
 |  |  |             :max-date="nowDate" | 
 |  |  |             format="YYYY-MM" | 
 |  |  |           /> | 
 |  |  |           <IconFont name="triangle-down" class="income-detail-time-picker-icon"></IconFont> | 
 |  |  |         </div> | 
 |  |  |       </template> | 
 |  |  |     </IncomeDetailListItem> | 
 |  |  |     <IncomeDetailListItem | 
 |  |  |       :title="'收入-宁波人力无忧'" | 
 |  |  |       :item="'2024.12.20 13:30:30'" | 
 |  |  |       :value="'+300.00'" | 
 |  |  |       @click="goIncomeDetailInfo()" | 
 |  |  |     > | 
 |  |  |     </IncomeDetailListItem> | 
 |  |  |   </List> | 
 |  |  |   <InfiniteLoading | 
 |  |  |     scrollViewClassName="common-infinite-scroll-list home-list" | 
 |  |  |     v-bind="infiniteLoadingProps" | 
 |  |  |     :key="queryState.type" | 
 |  |  |   > | 
 |  |  |     <template #renderItem="{ item }"> | 
 |  |  |       <IncomeDetailListItem | 
 |  |  |         :title="item.title" | 
 |  |  |         :funds="item.amount" | 
 |  |  |         :item="dayjs(item.createdTime).format('YYYY-MM-DD HH:mm:ss')" | 
 |  |  |         :value="`钱包余额:${toThousand(item.balance)}`" | 
 |  |  |         @click="goIncomeDetailInfo(item)" | 
 |  |  |       > | 
 |  |  |       </IncomeDetailListItem> | 
 |  |  |     </template> | 
 |  |  |   </InfiniteLoading> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import { List, IncomeDetailListItem, ChooseInputWithDatePicker } from '@12333/components'; | 
 |  |  | import { useUserStore } from '@/stores/modules/user'; | 
 |  |  | import { | 
 |  |  |   List, | 
 |  |  |   IncomeDetailListItem, | 
 |  |  |   ChooseInputWithDatePicker, | 
 |  |  |   ProTabs, | 
 |  |  |   ProTabPane, | 
 |  |  | } from '@12333/components'; | 
 |  |  | import { IconFont } from '@nutui/icons-vue-taro'; | 
 |  |  | import Taro from '@tarojs/taro'; | 
 |  |  | import dayjs from 'dayjs'; | 
 |  |  | import { useInfiniteLoading } from '@12333/hooks'; | 
 |  |  | import { EnumPagedListOrder, EnumUserWalletTransactionType } from '@12333/constants'; | 
 |  |  | import { toThousand } from '@12333/utils'; | 
 |  |  | import * as userServices from '@12333/services/apiV2/user'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'InnerPage', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const userStore = useUserStore(); | 
 |  |  | const nowDate = dayjs().toDate(); | 
 |  |  | const form = reactive({ | 
 |  |  |   month: dayjs().format('YYYY年M月'), | 
 |  |  |  | 
 |  |  | const queryState = reactive({ | 
 |  |  |   month: dayjs().format('YYYY-MM'), | 
 |  |  |   type: 0 as any as EnumUserWalletTransactionType, | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function goIncomeDetailInfo() { | 
 |  |  | const sumIncome = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.sumIncome ?? 0; | 
 |  |  | }); | 
 |  |  | const sumWithdraw = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.sumWithdraw ?? 0; | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const { infiniteLoadingProps } = useInfiniteLoading( | 
 |  |  |   ({ pageParam }) => { | 
 |  |  |     let params: API.GetPersonalUserTransactionsQuery = { | 
 |  |  |       pageModel: { | 
 |  |  |         rows: 20, | 
 |  |  |         page: pageParam, | 
 |  |  |         orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], | 
 |  |  |       }, | 
 |  |  |       type: EnumUserWalletTransactionType.Income, | 
 |  |  |     }; | 
 |  |  |     // if (Number(queryState.type)) { | 
 |  |  |     //   params.type = queryState.type; | 
 |  |  |     // } | 
 |  |  |     if (queryState.month) { | 
 |  |  |       params.createdTimeStart = dayjs(queryState.month).startOf('month').format('YYYY-MM-DD'); | 
 |  |  |       params.createdTimeEnd = dayjs(queryState.month).endOf('month').format('YYYY-MM-DD'); | 
 |  |  |     } | 
 |  |  |     return userServices.getPersonalUserTransactions(params, { | 
 |  |  |       showLoading: false, | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     queryKey: ['userServices/getPersonalUserTransactions', queryState], | 
 |  |  |   } | 
 |  |  | ); | 
 |  |  |  | 
 |  |  | function goIncomeDetailInfo(row: API.GetPersonalUserTransactionsQueryResultItem) { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: `${RouterPath.incomeDetailInfo}`, | 
 |  |  |     url: `${RouterPath.incomeDetailInfo}?id=${row.id}`, | 
 |  |  |   }); | 
 |  |  |   // Taro.navigateTo({ | 
 |  |  |   //   url: `${RouterPath.withdrawDetailInfo}`, | 
 |  |  |   // }); | 
 |  |  | } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | 
 |  |  |       left: 220px; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .common-infinite-scroll-list { | 
 |  |  |     background-color: #ffffff; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .pro-list { | 
 |  |  |     background: transparent; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .nut-input { | 
 |  |  |     background: transparent; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> |