<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="`收入:¥${toThousand(sumIncome)} `"> 
 | 
      <template #title> 
 | 
        <div class="income-detail-time-picker"> 
 | 
          <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> 
 | 
  </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, 
 | 
  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 nowDate = dayjs().toDate(); 
 | 
  
 | 
const queryState = reactive({ 
 | 
  month: dayjs().format('YYYY-MM'), 
 | 
  type: 0 as any as EnumUserWalletTransactionType, 
 | 
}); 
 | 
  
 | 
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}?id=${row.id}`, 
 | 
  }); 
 | 
  // Taro.navigateTo({ 
 | 
  //   url: `${RouterPath.withdrawDetailInfo}`, 
 | 
  // }); 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
@import '@/styles/common.scss'; 
 | 
  
 | 
.incomeDetail-page-wrapper { 
 | 
  .income-detail-time-picker { 
 | 
    position: relative; 
 | 
  
 | 
    .nut-input { 
 | 
      border-bottom: none; 
 | 
      padding: 0; 
 | 
      width: 100%; 
 | 
  
 | 
      .input-text { 
 | 
        font-size: 20px; 
 | 
        font-weight: 500; 
 | 
        height: 28px; 
 | 
      } 
 | 
  
 | 
      .nut-input-right-box { 
 | 
        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> 
 |