feat:【antd】【crm】调整操作日志和团队成员的标签顺序,优化表单字段的规则和属性
This commit is contained in:
@@ -98,7 +98,6 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
fieldName: 'dealTime',
|
fieldName: 'dealTime',
|
||||||
label: '预计成交日期',
|
label: '预计成交日期',
|
||||||
component: 'DatePicker',
|
component: 'DatePicker',
|
||||||
rules: 'required',
|
|
||||||
componentProps: {
|
componentProps: {
|
||||||
showTime: false,
|
showTime: false,
|
||||||
format: 'YYYY-MM-DD HH:mm:ss',
|
format: 'YYYY-MM-DD HH:mm:ss',
|
||||||
@@ -123,6 +122,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
min: 0,
|
min: 0,
|
||||||
precision: 2,
|
precision: 2,
|
||||||
|
disabled: true,
|
||||||
placeholder: '请输入产品总金额',
|
placeholder: '请输入产品总金额',
|
||||||
},
|
},
|
||||||
rules: z.number().min(0).optional().default(0),
|
rules: z.number().min(0).optional().default(0),
|
||||||
|
|||||||
@@ -165,7 +165,10 @@ onMounted(() => {
|
|||||||
:biz-type="BizTypeEnum.CRM_BUSINESS"
|
:biz-type="BizTypeEnum.CRM_BUSINESS"
|
||||||
/>
|
/>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="团队成员" key="6" :force-render="true">
|
<Tabs.TabPane tab="操作日志" key="6" :force-render="true">
|
||||||
|
<OperateLog :log-list="logList" />
|
||||||
|
</Tabs.TabPane>
|
||||||
|
<Tabs.TabPane tab="团队成员" key="7" :force-render="true">
|
||||||
<PermissionList
|
<PermissionList
|
||||||
ref="permissionListRef"
|
ref="permissionListRef"
|
||||||
:biz-id="businessId"
|
:biz-id="businessId"
|
||||||
@@ -174,9 +177,6 @@ onMounted(() => {
|
|||||||
@quit-team="handleBack"
|
@quit-team="handleBack"
|
||||||
/>
|
/>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="操作日志" key="7" :force-render="true">
|
|
||||||
<OperateLog :log-list="logList" />
|
|
||||||
</Tabs.TabPane>
|
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Card>
|
</Card>
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
rules: 'required',
|
rules: 'required',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入联系人姓名',
|
placeholder: '请输入联系人姓名',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'ownerUserId',
|
fieldName: 'ownerUserId',
|
||||||
@@ -66,7 +66,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入手机号',
|
placeholder: '请输入手机号',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'telephone',
|
fieldName: 'telephone',
|
||||||
@@ -74,7 +74,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入电话',
|
placeholder: '请输入电话',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'email',
|
fieldName: 'email',
|
||||||
@@ -82,7 +82,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入邮箱',
|
placeholder: '请输入邮箱',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'wechat',
|
fieldName: 'wechat',
|
||||||
@@ -90,7 +90,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入微信',
|
placeholder: '请输入微信',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'qq',
|
fieldName: 'qq',
|
||||||
@@ -98,7 +98,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入QQ',
|
placeholder: '请输入QQ',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'post',
|
fieldName: 'post',
|
||||||
@@ -106,7 +106,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入职位',
|
placeholder: '请输入职位',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'master',
|
fieldName: 'master',
|
||||||
@@ -115,7 +115,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'),
|
options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'),
|
||||||
placeholder: '请选择是否关键决策人',
|
placeholder: '请选择是否关键决策人',
|
||||||
buttonStyle: 'solid',
|
buttonStyle: 'solid',
|
||||||
optionType: 'button',
|
optionType: 'button',
|
||||||
},
|
},
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
@@ -127,7 +127,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
options: getDictOptions(DICT_TYPE.SYSTEM_USER_SEX, 'number'),
|
options: getDictOptions(DICT_TYPE.SYSTEM_USER_SEX, 'number'),
|
||||||
placeholder: '请选择性别',
|
placeholder: '请选择性别',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'parentId',
|
fieldName: 'parentId',
|
||||||
@@ -158,7 +158,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入详细地址',
|
placeholder: '请输入详细地址',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'contactNextTime',
|
fieldName: 'contactNextTime',
|
||||||
@@ -169,7 +169,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
format: 'YYYY-MM-DD HH:mm:ss',
|
format: 'YYYY-MM-DD HH:mm:ss',
|
||||||
valueFormat: 'x',
|
valueFormat: 'x',
|
||||||
placeholder: '请选择下次联系时间',
|
placeholder: '请选择下次联系时间',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'remark',
|
fieldName: 'remark',
|
||||||
@@ -177,7 +177,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Textarea',
|
component: 'Textarea',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入备注',
|
placeholder: '请输入备注',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
value: 'id',
|
value: 'id',
|
||||||
},
|
},
|
||||||
placeholder: '请选择客户',
|
placeholder: '请选择客户',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'name',
|
fieldName: 'name',
|
||||||
@@ -205,7 +205,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入联系人姓名',
|
placeholder: '请输入联系人姓名',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'mobile',
|
fieldName: 'mobile',
|
||||||
@@ -214,7 +214,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入手机号',
|
placeholder: '请输入手机号',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'telephone',
|
fieldName: 'telephone',
|
||||||
@@ -223,7 +223,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入电话',
|
placeholder: '请输入电话',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'wechat',
|
fieldName: 'wechat',
|
||||||
@@ -232,7 +232,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入微信',
|
placeholder: '请输入微信',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'email',
|
fieldName: 'email',
|
||||||
@@ -241,7 +241,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请输入电子邮箱',
|
placeholder: '请输入电子邮箱',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { DictTag } from '#/components/dict-tag';
|
|||||||
export function useDetailSchema(): DescriptionItemSchema[] {
|
export function useDetailSchema(): DescriptionItemSchema[] {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
field: 'name',
|
field: 'customerName',
|
||||||
label: '客户名称',
|
label: '客户名称',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -24,7 +24,7 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'createTime',
|
field: 'createTime',
|
||||||
label: '下次联系时间',
|
label: '创建时间',
|
||||||
content: (data) => formatDateTime(data?.createTime) as string,
|
content: (data) => formatDateTime(data?.createTime) as string,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@@ -64,10 +64,11 @@ export function useDetailBaseSchema(): DescriptionItemSchema[] {
|
|||||||
{
|
{
|
||||||
field: 'areaName',
|
field: 'areaName',
|
||||||
label: '地址',
|
label: '地址',
|
||||||
},
|
content: (data) => {
|
||||||
{
|
const areaName = data?.areaName ?? '';
|
||||||
field: 'detailAddress',
|
const detailAddress = data?.detailAddress ?? '';
|
||||||
label: '详细地址',
|
return [areaName, detailAddress].filter(Boolean).join(' ');
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'post',
|
field: 'post',
|
||||||
|
|||||||
@@ -134,7 +134,10 @@ onMounted(() => {
|
|||||||
<Tabs.TabPane tab="详细资料" key="2" :force-render="true">
|
<Tabs.TabPane tab="详细资料" key="2" :force-render="true">
|
||||||
<Info :contact="contact" />
|
<Info :contact="contact" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="团队成员" key="3" :force-render="true">
|
<Tabs.TabPane tab="操作日志" key="3" :force-render="true">
|
||||||
|
<OperateLog :log-list="logList" />
|
||||||
|
</Tabs.TabPane>
|
||||||
|
<Tabs.TabPane tab="团队成员" key="4" :force-render="true">
|
||||||
<PermissionList
|
<PermissionList
|
||||||
ref="permissionListRef"
|
ref="permissionListRef"
|
||||||
:biz-id="contactId"
|
:biz-id="contactId"
|
||||||
@@ -143,7 +146,7 @@ onMounted(() => {
|
|||||||
@quit-team="handleBack"
|
@quit-team="handleBack"
|
||||||
/>
|
/>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="商机" key="4" :force-render="true">
|
<Tabs.TabPane tab="商机" key="5" :force-render="true">
|
||||||
<BusinessDetailsList
|
<BusinessDetailsList
|
||||||
:biz-id="contactId"
|
:biz-id="contactId"
|
||||||
:biz-type="BizTypeEnum.CRM_CONTACT"
|
:biz-type="BizTypeEnum.CRM_CONTACT"
|
||||||
@@ -151,9 +154,6 @@ onMounted(() => {
|
|||||||
:customer-id="contact.customerId"
|
:customer-id="contact.customerId"
|
||||||
/>
|
/>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="操作日志" key="5" :force-render="true">
|
|
||||||
<OperateLog :log-list="logList" />
|
|
||||||
</Tabs.TabPane>
|
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Card>
|
</Card>
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
@@ -130,10 +130,10 @@ onMounted(() => {
|
|||||||
</Card>
|
</Card>
|
||||||
<Card class="mt-4 min-h-[60%]">
|
<Card class="mt-4 min-h-[60%]">
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<Tabs.TabPane tab="合同跟进" key="1" :force-render="true">
|
<Tabs.TabPane tab="跟进记录" key="1" :force-render="true">
|
||||||
<FollowUp :biz-id="contractId" :biz-type="BizTypeEnum.CRM_CONTRACT" />
|
<FollowUp :biz-id="contractId" :biz-type="BizTypeEnum.CRM_CONTRACT" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="详细资料" key="2" :force-render="true">
|
<Tabs.TabPane tab="基本信息" key="2" :force-render="true">
|
||||||
<ContractDetailsInfo :contract="contract" />
|
<ContractDetailsInfo :contract="contract" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="产品" key="3" :force-render="true">
|
<Tabs.TabPane tab="产品" key="3" :force-render="true">
|
||||||
|
|||||||
@@ -53,6 +53,10 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
label: '成交状态',
|
label: '成交状态',
|
||||||
content: (data) => (data.dealStatus ? '已成交' : '未成交'),
|
content: (data) => (data.dealStatus ? '已成交' : '未成交'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'ownerUserName',
|
||||||
|
label: '负责人',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'createTime',
|
field: 'createTime',
|
||||||
label: '创建时间',
|
label: '创建时间',
|
||||||
@@ -92,10 +96,11 @@ export function useDetailBaseSchema(): DescriptionItemSchema[] {
|
|||||||
{
|
{
|
||||||
field: 'areaName',
|
field: 'areaName',
|
||||||
label: '地址',
|
label: '地址',
|
||||||
},
|
content: (data) => {
|
||||||
{
|
const areaName = data?.areaName ?? '';
|
||||||
field: 'detailAddress',
|
const detailAddress = data?.detailAddress ?? '';
|
||||||
label: '详细地址',
|
return [areaName, detailAddress].filter(Boolean).join(' ');
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'qq',
|
field: 'qq',
|
||||||
@@ -114,12 +119,6 @@ export function useDetailBaseSchema(): DescriptionItemSchema[] {
|
|||||||
value: data?.industryId,
|
value: data?.industryId,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
field: 'level',
|
|
||||||
label: '客户级别',
|
|
||||||
content: (data) =>
|
|
||||||
h(DictTag, { type: DICT_TYPE.CRM_CUSTOMER_LEVEL, value: data?.level }),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
field: 'contactNextTime',
|
field: 'contactNextTime',
|
||||||
label: '下次联系时间',
|
label: '下次联系时间',
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ onMounted(() => {
|
|||||||
<Tabs.TabPane tab="跟进记录" key="1" :force-render="true">
|
<Tabs.TabPane tab="跟进记录" key="1" :force-render="true">
|
||||||
<FollowUp :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
<FollowUp :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="详细资料" key="2" :force-render="true">
|
<Tabs.TabPane tab="基本信息" key="2" :force-render="true">
|
||||||
<Info :customer="customer" />
|
<Info :customer="customer" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="联系人" key="3" :force-render="true">
|
<Tabs.TabPane tab="联系人" key="3" :force-render="true">
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'price',
|
field: 'price',
|
||||||
label: '产品价格',
|
label: '产品价格(元)',
|
||||||
content: (data) => erpPriceInputFormatter(data.price),
|
content: (data) => erpPriceInputFormatter(data.price),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
placeholder: '请选择客户',
|
placeholder: '请选择客户',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// TODO @AI:这里的合同名称不对;
|
||||||
{
|
{
|
||||||
fieldName: 'contractId',
|
fieldName: 'contractId',
|
||||||
label: '合同名称',
|
label: '合同名称',
|
||||||
@@ -121,14 +122,12 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'returnTime',
|
fieldName: 'returnType',
|
||||||
label: '回款日期',
|
label: '回款方式',
|
||||||
component: 'DatePicker',
|
component: 'Select',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
placeholder: '请选择回款日期',
|
options: getDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE, 'number'),
|
||||||
showTime: false,
|
placeholder: '请选择回款方式',
|
||||||
valueFormat: 'x',
|
|
||||||
format: 'YYYY-MM-DD',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -143,13 +142,15 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'returnType',
|
fieldName: 'returnTime',
|
||||||
label: '回款方式',
|
label: '回款日期',
|
||||||
component: 'Select',
|
component: 'DatePicker',
|
||||||
rules: 'required',
|
rules: 'required',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
options: getDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE, 'number'),
|
placeholder: '请选择回款日期',
|
||||||
placeholder: '请选择回款方式',
|
showTime: false,
|
||||||
|
valueFormat: 'x',
|
||||||
|
format: 'YYYY-MM-DD',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -160,6 +161,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
placeholder: '请输入备注',
|
placeholder: '请输入备注',
|
||||||
rows: 4,
|
rows: 4,
|
||||||
},
|
},
|
||||||
|
formItemClass: 'md:col-span-2',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,9 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'totalPrice',
|
field: 'totalPrice',
|
||||||
label: '合同金额',
|
label: '合同金额(元)',
|
||||||
content: (data) => erpPriceInputFormatter(data.totalPrice),
|
content: (data) =>
|
||||||
|
erpPriceInputFormatter(data?.contract?.totalPrice ?? data.totalPrice),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'returnTime',
|
field: 'returnTime',
|
||||||
@@ -26,7 +27,7 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'price',
|
field: 'price',
|
||||||
label: '回款金额',
|
label: '回款金额(元)',
|
||||||
content: (data) => erpPriceInputFormatter(data.price),
|
content: (data) => erpPriceInputFormatter(data.price),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -77,3 +78,27 @@ export function useDetailBaseSchema(): DescriptionItemSchema[] {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 系统信息字段 */
|
||||||
|
export function useDetailSystemSchema(): DescriptionItemSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'ownerUserName',
|
||||||
|
label: '负责人',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'creatorName',
|
||||||
|
label: '创建人',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
label: '创建时间',
|
||||||
|
content: (data) => formatDateTime(data?.createTime) as string,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'updateTime',
|
||||||
|
label: '更新时间',
|
||||||
|
content: (data) => formatDateTime(data?.updateTime) as string,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@@ -114,7 +114,10 @@ onMounted(() => {
|
|||||||
<Tabs.TabPane tab="详细资料" key="1" :force-render="true">
|
<Tabs.TabPane tab="详细资料" key="1" :force-render="true">
|
||||||
<Info :receivable="receivable" />
|
<Info :receivable="receivable" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="团队成员" key="2" :force-render="true">
|
<Tabs.TabPane tab="操作日志" key="2" :force-render="true">
|
||||||
|
<OperateLog :log-list="logList" />
|
||||||
|
</Tabs.TabPane>
|
||||||
|
<Tabs.TabPane tab="团队成员" key="3" :force-render="true">
|
||||||
<PermissionList
|
<PermissionList
|
||||||
ref="permissionListRef"
|
ref="permissionListRef"
|
||||||
:biz-id="receivableId"
|
:biz-id="receivableId"
|
||||||
@@ -123,9 +126,6 @@ onMounted(() => {
|
|||||||
@quit-team="handleBack"
|
@quit-team="handleBack"
|
||||||
/>
|
/>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="操作日志" key="3" :force-render="true">
|
|
||||||
<OperateLog :log-list="logList" />
|
|
||||||
</Tabs.TabPane>
|
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Card>
|
</Card>
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ import type { CrmReceivableApi } from '#/api/crm/receivable';
|
|||||||
import { Divider } from 'ant-design-vue';
|
import { Divider } from 'ant-design-vue';
|
||||||
|
|
||||||
import { useDescription } from '#/components/description';
|
import { useDescription } from '#/components/description';
|
||||||
import { useFollowUpDetailSchema } from '#/views/crm/followup/data';
|
|
||||||
|
|
||||||
import { useDetailBaseSchema } from '../data';
|
import { useDetailBaseSchema, useDetailSystemSchema } from '../data';
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
receivable: CrmReceivableApi.Receivable; // 收款信息
|
receivable: CrmReceivableApi.Receivable; // 收款信息
|
||||||
@@ -29,7 +28,7 @@ const [SystemDescriptions] = useDescription({
|
|||||||
column: 3,
|
column: 3,
|
||||||
class: 'mx-4',
|
class: 'mx-4',
|
||||||
},
|
},
|
||||||
schema: useFollowUpDetailSchema(),
|
schema: useDetailSystemSchema(),
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -15,23 +15,24 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
label: '客户名称',
|
label: '客户名称',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'totalPrice',
|
field: 'contractNo',
|
||||||
label: '合同金额',
|
label: '合同编号',
|
||||||
content: (data) => erpPriceInputFormatter(data.totalPrice),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'returnTime',
|
|
||||||
label: '回款日期',
|
|
||||||
content: (data) => formatDateTime(data?.returnTime) as string,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'price',
|
field: 'price',
|
||||||
label: '回款金额',
|
label: '计划回款金额',
|
||||||
content: (data) => erpPriceInputFormatter(data.price),
|
content: (data) => erpPriceInputFormatter(data.price),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'ownerUserName',
|
field: 'returnTime',
|
||||||
label: '负责人',
|
label: '计划回款日期',
|
||||||
|
content: (data) => formatDateTime(data?.returnTime) as string,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'receivable',
|
||||||
|
label: '实际回款金额',
|
||||||
|
content: (data) =>
|
||||||
|
erpPriceInputFormatter(data?.receivable?.price ?? 0),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -40,40 +41,87 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
|||||||
export function useDetailBaseSchema(): DescriptionItemSchema[] {
|
export function useDetailBaseSchema(): DescriptionItemSchema[] {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
field: 'no',
|
field: 'period',
|
||||||
label: '回款编号',
|
label: '期数',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'customerName',
|
field: 'customerName',
|
||||||
label: '客户名称',
|
label: '客户名称',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'contract',
|
field: 'contractNo',
|
||||||
label: '合同编号',
|
label: '合同编号',
|
||||||
content: (data) => data?.contract?.no,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'returnTime',
|
field: 'returnTime',
|
||||||
label: '回款日期',
|
label: '计划回款日期',
|
||||||
content: (data) => formatDateTime(data?.returnTime) as string,
|
content: (data) => formatDateTime(data?.returnTime) as string,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'price',
|
field: 'price',
|
||||||
label: '回款金额',
|
label: '计划回款金额',
|
||||||
content: (data) => erpPriceInputFormatter(data.price),
|
content: (data) => erpPriceInputFormatter(data.price),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'returnType',
|
field: 'returnType',
|
||||||
label: '回款方式',
|
label: '计划回款方式',
|
||||||
content: (data) =>
|
content: (data) =>
|
||||||
h(DictTag, {
|
h(DictTag, {
|
||||||
type: DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE,
|
type: DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE,
|
||||||
value: data?.returnType,
|
value: data?.returnType,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'remindDays',
|
||||||
|
label: '提前几天提醒',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'receivable',
|
||||||
|
label: '实际回款金额',
|
||||||
|
content: (data) =>
|
||||||
|
erpPriceInputFormatter(data?.receivable?.price ?? 0),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'receivableRemain',
|
||||||
|
label: '未回款金额',
|
||||||
|
content: (data) => {
|
||||||
|
const paid = data?.receivable?.price ?? 0;
|
||||||
|
return erpPriceInputFormatter(Math.max(data.price - paid, 0));
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'receivable.returnTime',
|
||||||
|
label: '实际回款日期',
|
||||||
|
content: (data) =>
|
||||||
|
formatDateTime(data?.receivable?.returnTime) as string,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'remark',
|
field: 'remark',
|
||||||
label: '备注',
|
label: '备注',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 系统信息字段 */
|
||||||
|
export function useDetailSystemSchema(): DescriptionItemSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'ownerUserName',
|
||||||
|
label: '负责人',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'creatorName',
|
||||||
|
label: '创建人',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
label: '创建时间',
|
||||||
|
content: (data) => formatDateTime(data?.createTime) as string,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'updateTime',
|
||||||
|
label: '更新时间',
|
||||||
|
content: (data) => formatDateTime(data?.updateTime) as string,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@@ -121,7 +121,10 @@ onMounted(() => {
|
|||||||
<Tabs.TabPane tab="详细资料" key="1" :force-render="true">
|
<Tabs.TabPane tab="详细资料" key="1" :force-render="true">
|
||||||
<ReceivablePlanDetailsInfo :receivable-plan="receivablePlan" />
|
<ReceivablePlanDetailsInfo :receivable-plan="receivablePlan" />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="团队成员" key="2" :force-render="true">
|
<Tabs.TabPane tab="操作日志" key="2" :force-render="true">
|
||||||
|
<OperateLog :log-list="logList" />
|
||||||
|
</Tabs.TabPane>
|
||||||
|
<Tabs.TabPane tab="团队成员" key="3" :force-render="true">
|
||||||
<PermissionList
|
<PermissionList
|
||||||
ref="permissionListRef"
|
ref="permissionListRef"
|
||||||
:biz-id="receivablePlanId"
|
:biz-id="receivablePlanId"
|
||||||
@@ -130,9 +133,6 @@ onMounted(() => {
|
|||||||
@quit-team="handleBack"
|
@quit-team="handleBack"
|
||||||
/>
|
/>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
<Tabs.TabPane tab="操作日志" key="3" :force-render="true">
|
|
||||||
<OperateLog :log-list="logList" />
|
|
||||||
</Tabs.TabPane>
|
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Card>
|
</Card>
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ import type { CrmReceivablePlanApi } from '#/api/crm/receivable/plan';
|
|||||||
import { Divider } from 'ant-design-vue';
|
import { Divider } from 'ant-design-vue';
|
||||||
|
|
||||||
import { useDescription } from '#/components/description';
|
import { useDescription } from '#/components/description';
|
||||||
import { useFollowUpDetailSchema } from '#/views/crm/followup/data';
|
|
||||||
|
|
||||||
import { useDetailBaseSchema } from '../data';
|
import { useDetailBaseSchema, useDetailSystemSchema } from '../data';
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
receivablePlan: CrmReceivablePlanApi.Plan; // 收款计划信息
|
receivablePlan: CrmReceivablePlanApi.Plan; // 收款计划信息
|
||||||
@@ -29,7 +28,7 @@ const [SystemDescriptions] = useDescription({
|
|||||||
column: 3,
|
column: 3,
|
||||||
class: 'mx-4',
|
class: 'mx-4',
|
||||||
},
|
},
|
||||||
schema: useFollowUpDetailSchema(),
|
schema: useDetailSystemSchema(),
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user