From bef3d94968fc70667f3123cb23ee69550e08a5ca Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 15 十月 2026 14:03:17 +0800
Subject: [PATCH] feat(crm): 优化合同管理及待办功能

---
 src/views/crm/backlog/modules/receivable-plan-remind-list.vue |   30 +++++++++++++++++++++---------
 1 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/src/views/crm/backlog/modules/receivable-plan-remind-list.vue b/src/views/crm/backlog/modules/receivable-plan-remind-list.vue
index 4bafa46..697e673 100644
--- a/src/views/crm/backlog/modules/receivable-plan-remind-list.vue
+++ b/src/views/crm/backlog/modules/receivable-plan-remind-list.vue
@@ -9,7 +9,7 @@
 
 import { Button } from 'ant-design-vue';
 
-import { useVbenVxeGrid } from '#/adapter/vxe-table';
+import { TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
 import { getReceivablePlanPage } from '#/api/crm/receivable/plan';
 import Form from '#/views/crm/receivable/modules/form.vue';
 import { useGridColumns } from '#/views/crm/receivable/plan/data';
@@ -17,15 +17,21 @@
 import { RECEIVABLE_REMIND_TYPE } from '../data';
 
 const { push } = useRouter();
+const emit = defineEmits<{ refresh: [] }>();
+
+function handleRefresh() {
+  gridApi.query();
+  emit('refresh');
+}
 
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
   destroyOnClose: true,
 });
 
-/** 鎵撳紑鍥炴璇︽儏 */
+/** 鎵撳紑鍥炴璁″垝璇︽儏 */
 function handleDetail(row: CrmReceivablePlanApi.Plan) {
-  push({ name: 'CrmReceivableDetail', params: { id: row.id } });
+  push({ name: 'CrmReceivablePlanDetail', params: { id: row.id } });
 }
 
 /** 鎵撳紑瀹㈡埛璇︽儏 */
@@ -35,15 +41,16 @@
 
 /** 鍒涘缓鍥炴 */
 function handleCreateReceivable(row: CrmReceivablePlanApi.Plan) {
+  if (row.receivableId) return;
   formModalApi.setData({ plan: row }).open();
 }
 
-const [Grid] = useVbenVxeGrid({
+const [Grid, gridApi] = useVbenVxeGrid({
   formOptions: {
     schema: [
       {
         fieldName: 'remindType',
-        label: '鍚堝悓鐘舵��',
+        label: '鍥炴鐘舵��',
         component: 'Select',
         componentProps: {
           allowClear: true,
@@ -63,6 +70,7 @@
           return await getReceivablePlanPage({
             pageNo: page.currentPage,
             pageSize: page.pageSize,
+            sceneType: 1,
             ...formValues,
           });
         },
@@ -82,7 +90,7 @@
 
 <template>
   <div>
-    <FormModal />
+    <FormModal @success="handleRefresh" />
     <Grid>
       <template #customerName="{ row }">
         <Button type="link" @click="handleCustomerDetail(row)">
@@ -93,9 +101,13 @@
         <Button type="link" @click="handleDetail(row)">{{ row.period }}</Button>
       </template>
       <template #actions="{ row }">
-        <Button type="link" @click="handleCreateReceivable(row)">
-          鍒涘缓鍥炴
-        </Button>
+        <TableAction :actions="[{
+          label: '鍒涘缓鍥炴',
+          type: 'link',
+          auth: ['crm:receivable:create'],
+          ifShow: !row.receivableId,
+          onClick: handleCreateReceivable.bind(null, row),
+        }]" />
       </template>
     </Grid>
   </div>

--
Gitblit v1.9.3