diff --git a/apps/web-antd/src/views/crm/business/modules/detail.vue b/apps/web-antd/src/views/crm/business/modules/detail.vue index d7289dcd9..aa91e7c76 100644 --- a/apps/web-antd/src/views/crm/business/modules/detail.vue +++ b/apps/web-antd/src/views/crm/business/modules/detail.vue @@ -33,6 +33,10 @@ const FollowUp = defineAsyncComponent( () => import('#/views/crm/followup/index.vue'), ); +const ProductDetailsList = defineAsyncComponent( + () => import('#/views/crm/product/modules/detail-list.vue'), +); + const PermissionList = defineAsyncComponent( () => import('#/views/crm/permission/modules/permission-list.vue'), ); @@ -124,9 +128,9 @@ async function handleUpdateStatus() { } // 加载数据 -onMounted(async () => { +onMounted(() => { businessId.value = Number(route.params.id); - await loadBusinessDetail(); + loadBusinessDetail(); }); @@ -173,12 +177,15 @@ onMounted(async () => { -
产品
+
{ } // 加载数据 -onMounted(async () => { +onMounted(() => { clueId.value = Number(route.params.id); - await loadClueDetail(); + loadClueDetail(); }); diff --git a/apps/web-antd/src/views/crm/contact/modules/detail.vue b/apps/web-antd/src/views/crm/contact/modules/detail.vue index 1822f6e7e..b7c6e0498 100644 --- a/apps/web-antd/src/views/crm/contact/modules/detail.vue +++ b/apps/web-antd/src/views/crm/contact/modules/detail.vue @@ -107,9 +107,9 @@ function handleTransfer() { } // 加载数据 -onMounted(async () => { +onMounted(() => { contactId.value = Number(route.params.id); - await loadContactDetail(); + loadContactDetail(); }); diff --git a/apps/web-antd/src/views/crm/contract/modules/detail.vue b/apps/web-antd/src/views/crm/contract/modules/detail.vue index 72335ca22..bf49f9a0c 100644 --- a/apps/web-antd/src/views/crm/contract/modules/detail.vue +++ b/apps/web-antd/src/views/crm/contract/modules/detail.vue @@ -23,6 +23,10 @@ const FollowUp = defineAsyncComponent( () => import('#/views/crm/followup/index.vue'), ); +const ProductDetailsList = defineAsyncComponent( + () => import('#/views/crm/product/modules/detail-list.vue'), +); + const PermissionList = defineAsyncComponent( () => import('#/views/crm/permission/modules/permission-list.vue'), ); @@ -39,6 +43,14 @@ const ContractDetailsInfo = defineAsyncComponent( () => import('./detail-info.vue'), ); +const ReceivableDetailsList = defineAsyncComponent( + () => import('#/views/crm/receivable/modules/detail-list.vue'), +); + +const ReceivablePlanDetailsList = defineAsyncComponent( + () => import('#/views/crm/receivable/plan/modules/detail-list.vue'), +); + const loading = ref(false); const route = useRoute(); @@ -107,9 +119,9 @@ function handleTransfer() { } // 加载数据 -onMounted(async () => { +onMounted(() => { contractId.value = Number(route.params.id); - await loadContractDetail(); + loadContractDetail(); }); @@ -147,8 +159,22 @@ onMounted(async () => { - - + + + + + + + import('#/components/operate-log'), ); +const ReceivableDetailsList = defineAsyncComponent( + () => import('#/views/crm/receivable/modules/detail-list.vue'), +); + +const ReceivablePlanDetailsList = defineAsyncComponent( + () => import('#/views/crm/receivable/plan/modules/detail-list.vue'), +); + const loading = ref(false); const route = useRoute(); @@ -174,9 +182,9 @@ async function handleUpdateDealStatus(): Promise { } // 加载数据 -onMounted(async () => { +onMounted(() => { customerId.value = Number(route.params.id); - await loadCustomerDetail(); + loadCustomerDetail(); }); @@ -283,7 +291,8 @@ onMounted(async () => { /> -
回款
+ +
diff --git a/apps/web-antd/src/views/crm/product/data.ts b/apps/web-antd/src/views/crm/product/data.ts index 78f095e02..ff5b0903d 100644 --- a/apps/web-antd/src/views/crm/product/data.ts +++ b/apps/web-antd/src/views/crm/product/data.ts @@ -247,3 +247,48 @@ export function useDetailBaseSchema(): DescriptionItemSchema[] { }, ]; } + +/** 详情列表的字段 */ +export function useDetailListColumns( + showBussinePrice: boolean, +): VxeTableGridOptions['columns'] { + return [ + { + field: 'productName', + title: '产品名称', + }, + { + field: 'productNo', + title: '产品条码', + }, + { + field: 'productUnit', + title: '产品单位', + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.CRM_PRODUCT_UNIT }, + }, + }, + { + field: 'productPrice', + title: '产品价格(元)', + formatter: 'formatNumber', + }, + { + field: 'businessPrice', + title: '商机价格(元)', + formatter: 'formatNumber', + visible: showBussinePrice, + }, + { + field: 'count', + title: '数量', + formatter: 'formatNumber', + }, + { + field: 'totalPrice', + title: '合计金额(元)', + formatter: 'formatNumber', + }, + ]; +} diff --git a/apps/web-antd/src/views/crm/product/modules/detail-list.vue b/apps/web-antd/src/views/crm/product/modules/detail-list.vue new file mode 100644 index 000000000..96e3d09f6 --- /dev/null +++ b/apps/web-antd/src/views/crm/product/modules/detail-list.vue @@ -0,0 +1,59 @@ + + + diff --git a/apps/web-antd/src/views/crm/product/modules/detail.vue b/apps/web-antd/src/views/crm/product/modules/detail.vue index 910538dbb..ffe2f79e9 100644 --- a/apps/web-antd/src/views/crm/product/modules/detail.vue +++ b/apps/web-antd/src/views/crm/product/modules/detail.vue @@ -63,10 +63,11 @@ function handleBack() { tabs.closeCurrentTab(); router.push('/crm/product'); } + // 加载数据 -onMounted(async () => { +onMounted(() => { productId.value = Number(route.params.id); - await loadProductDetail(); + loadProductDetail(); }); diff --git a/apps/web-antd/src/views/crm/receivable/modules/detail.vue b/apps/web-antd/src/views/crm/receivable/modules/detail.vue index e22269557..24f95b16e 100644 --- a/apps/web-antd/src/views/crm/receivable/modules/detail.vue +++ b/apps/web-antd/src/views/crm/receivable/modules/detail.vue @@ -88,9 +88,9 @@ function handleEdit() { } // 加载数据 -onMounted(async () => { +onMounted(() => { receivableId.value = Number(route.params.id); - await loadReceivableDetail(); + loadReceivableDetail(); }); diff --git a/apps/web-antd/src/views/crm/receivable/plan/modules/detail.vue b/apps/web-antd/src/views/crm/receivable/plan/modules/detail.vue index 292152455..edc8eefdb 100644 --- a/apps/web-antd/src/views/crm/receivable/plan/modules/detail.vue +++ b/apps/web-antd/src/views/crm/receivable/plan/modules/detail.vue @@ -88,9 +88,9 @@ function handleEdit() { } // 加载数据 -onMounted(async () => { +onMounted(() => { receivablePlanId.value = Number(route.params.id); - await loadreceivablePlanDetail(); + loadreceivablePlanDetail(); });