|  |  |  | 
|---|
|  |  |  | <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"> | 
|---|
|  |  |  | <ChooseInputWithPicker v-model="form.month" :value-enum="TaskStatusText" /> | 
|---|
|  |  |  | <ChooseInputWithDatePicker | 
|---|
|  |  |  | v-model="queryState.month" | 
|---|
|  |  |  | type="year-month" | 
|---|
|  |  |  | :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, ChooseInputWithPicker } from '@12333/components'; | 
|---|
|  |  |  | import { TaskStatusText, TaskStatus } from '@/constants'; | 
|---|
|  |  |  | 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: TaskStatus.All, | 
|---|
|  |  |  | 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}`, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // if (row.type === EnumUserWalletTransactionType.Income) { | 
|---|
|  |  |  | //   Taro.navigateTo({ | 
|---|
|  |  |  | //     url: `${RouterPath.incomeDetailInfo}?id=${row.id}`, | 
|---|
|  |  |  | //   }); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // if (row.type === EnumUserWalletTransactionType.Withdraw) { | 
|---|
|  |  |  | //   Taro.navigateTo({ | 
|---|
|  |  |  | //     url: `${RouterPath.withdrawDetailInfo}?id=${row.id}`, | 
|---|
|  |  |  | //   }); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .incomeDetail-page-wrapper { | 
|---|
|  |  |  | .income-detail-time-picker { | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .nut-input { | 
|---|
|  |  |  | border-bottom: none; | 
|---|
|  |  |  | padding: 0; | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .input-text { | 
|---|
|  |  |  | font-size: 20px; | 
|---|
|  |  |  | 
|---|
|  |  |  | display: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .income-detail-time-picker-icon { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | top: 12px; | 
|---|
|  |  |  | left: 220px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .common-infinite-scroll-list { | 
|---|
|  |  |  | background-color: #ffffff; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .pro-list { | 
|---|
|  |  |  | background: transparent; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .nut-input { | 
|---|
|  |  |  | background: transparent; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|