2026-08-10 f9e6eb6fc2c2e0c2a2b17238b817fcbfcb6bab56
src/views/crm/receivable/index.vue
@@ -5,8 +5,8 @@
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { DocAlert, Page, useVbenModal } from '..\..\..\packages\effects\common-ui\src';
import { downloadFileFromBlobPart } from '..\..\..\packages\utils\src';
import { Page, useVbenModal } from '@vben/common-ui';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Tabs } from 'ant-design-vue';
@@ -106,6 +106,11 @@
  push({ name: 'CrmContractDetail', params: { id: row.contractId } });
}
/** 查看开票详情 */
function handleInvoiceDetail(row: CrmReceivableApi.Receivable) {
  push({ name: 'CrmInvoiceDetail', params: { id: row.invoiceId } });
}
/** 查看审批详情 */
function handleProcessDetail(row: CrmReceivableApi.Receivable) {
  push({
@@ -147,19 +152,7 @@
</script>
<template>
  <Page auto-content-height>
    <template #doc>
      <DocAlert
        title="【回款】回款管理、回款计划"
        url="https://doc.iocoder.cn/crm/receivable/"
      />
      <DocAlert
        title="【通用】数据权限"
        url="https://doc.iocoder.cn/crm/permission/"
      />
    </template>
    <FormModal @success="handleRefresh" />
  <Page auto-content-height><FormModal @success="handleRefresh" />
    <Grid>
      <template #toolbar-actions>
        <Tabs class="w-full" @change="handleChangeSceneType">
@@ -198,6 +191,18 @@
          {{ row.customerName }}
        </Button>
      </template>
      <template #invoiceNo="{ row }">
        <template v-if="row.invoice">
          <Button type="link" @click="handleInvoiceDetail(row)">
            {{ row.invoice.no }}
          </Button>
          <span class="mx-1">/</span>
          <span>{{ row.invoice.invoiceNo ?? '-' }}</span>
          <span class="mx-1">/</span>
          <span>¥{{ row.invoice.price ?? 0 }}</span>
        </template>
        <span v-else>--</span>
      </template>
      <template #contractNo="{ row }">
        <Button
          v-if="row.contract"