| | |
| | | <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)} 提现:¥${toThousand(sumWithdraw)}`" |
| | | > |
| | | <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" |
| | | /> |
| | | <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 { |
| | | List, |
| | | IncomeDetailListItem, |
| | | ChooseInputWithDatePicker, |
| | | ProTabs, |
| | | ProTabPane, |
| | | } from '@12333/components'; |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | 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> |