feat: crm detail

This commit is contained in:
xingyu4j
2025-06-05 21:28:17 +08:00
parent 181367791f
commit d576f7b18a
10 changed files with 168 additions and 21 deletions

View File

@@ -0,0 +1,59 @@
<script lang="ts" setup>
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { CrmBusinessApi } from '#/api/crm/business';
import type { CrmContractApi } from '#/api/crm/contract';
import type { CrmProductApi } from '#/api/crm/product';
import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { BizTypeEnum } from '#/api/crm/permission';
import { erpPriceInputFormatter } from '#/utils';
import { useDetailListColumns } from '../data';
const props = defineProps<{
bizType: BizTypeEnum;
business?: CrmBusinessApi.Business; // 商机
contract?: CrmContractApi.Contract; // 合同
}>();
const [Grid] = useVbenVxeGrid({
gridOptions: {
columns: useDetailListColumns(props.bizType === BizTypeEnum.CRM_BUSINESS),
data:
props.bizType === BizTypeEnum.CRM_BUSINESS
? props.business?.products
: props.contract?.products,
height: 600,
pagerConfig: {
enabled: false,
},
keepSource: true,
rowConfig: {
keyField: 'id',
},
} as VxeTableGridOptions<CrmProductApi.Product>,
});
</script>
<template>
<div>
<Grid />
<div class="flex justify-end">
<span class="font-bold text-red-500">
整单折扣{{
erpPriceInputFormatter(
business ? business.discountPercent : contract?.discountPercent,
)
}}%
</span>
<span class="ml-4 font-bold text-red-500">
产品总金额{{
erpPriceInputFormatter(
business ? business.totalProductPrice : contract?.totalProductPrice,
)
}}
</span>
</div>
</div>
</template>

View File

@@ -63,10 +63,11 @@ function handleBack() {
tabs.closeCurrentTab();
router.push('/crm/product');
}
// 加载数据
onMounted(async () => {
onMounted(() => {
productId.value = Number(route.params.id);
await loadProductDetail();
loadProductDetail();
});
</script>