From dcd5f463a677101f8a90a52b7e279b6844e62b71 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Thu, 26 Jun 2025 15:46:07 +0800 Subject: [PATCH] fix: crm bugs --- .../crm/business/modules/detail-list.vue | 7 +++-- .../src/views/crm/clue/modules/form.vue | 5 ++-- .../web-antd/src/views/crm/receivable/data.ts | 12 +++++++-- .../src/views/crm/receivable/plan/data.ts | 26 ++++++++++++++++++- .../src/views/crm/receivable/plan/index.vue | 2 -- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/apps/web-antd/src/views/crm/business/modules/detail-list.vue b/apps/web-antd/src/views/crm/business/modules/detail-list.vue index 1780b96b6..d6dfa1b2d 100644 --- a/apps/web-antd/src/views/crm/business/modules/detail-list.vue +++ b/apps/web-antd/src/views/crm/business/modules/detail-list.vue @@ -15,7 +15,10 @@ import { getBusinessPageByContact, getBusinessPageByCustomer, } from '#/api/crm/business'; -import { createContactBusinessList } from '#/api/crm/contact'; +import { + createContactBusinessList, + deleteContactBusinessList, +} from '#/api/crm/contact'; import { BizTypeEnum } from '#/api/crm/permission'; import { $t } from '#/locales'; @@ -73,7 +76,7 @@ async function handleDeleteContactBusinessList() { content: `确定要将${checkedRows.value.map((item) => item.name).join(',')}解除关联吗?`, }) .then(async () => { - const res = await createContactBusinessList({ + const res = await deleteContactBusinessList({ contactId: props.bizId, businessIds: checkedRows.value.map((item) => item.id), }); diff --git a/apps/web-antd/src/views/crm/clue/modules/form.vue b/apps/web-antd/src/views/crm/clue/modules/form.vue index 44dca4995..a27ebcf6d 100644 --- a/apps/web-antd/src/views/crm/clue/modules/form.vue +++ b/apps/web-antd/src/views/crm/clue/modules/form.vue @@ -26,9 +26,10 @@ const [Form, formApi] = useVbenForm({ componentProps: { class: 'w-full', }, - formItemClass: 'col-span-2', - labelWidth: 120, + labelWidth: 100, }, + // 一共3列 + wrapperClass: 'grid-cols-2', layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/crm/receivable/data.ts b/apps/web-antd/src/views/crm/receivable/data.ts index 73589de0b..1cfe422c5 100644 --- a/apps/web-antd/src/views/crm/receivable/data.ts +++ b/apps/web-antd/src/views/crm/receivable/data.ts @@ -5,7 +5,10 @@ import { useUserStore } from '@vben/stores'; import { getContractSimpleList } from '#/api/crm/contract'; import { getCustomerSimpleList } from '#/api/crm/customer'; -import { getReceivablePlanSimpleList } from '#/api/crm/receivable/plan'; +import { + getReceivablePlan, + getReceivablePlanSimpleList, +} from '#/api/crm/receivable/plan'; import { getSimpleUserList } from '#/api/system/user'; import { DICT_TYPE, getDictOptions } from '#/utils'; @@ -25,7 +28,6 @@ export function useFormSchema(): VbenFormSchema[] { fieldName: 'no', label: '回款编号', component: 'Input', - rules: 'required', componentProps: { placeholder: '保存时自动生成', disabled: true, @@ -105,6 +107,12 @@ export function useFormSchema(): VbenFormSchema[] { value: item.id, })), placeholder: '请选择回款期数', + onChange: async (value: any) => { + const plan = await getReceivablePlan(value); + values.returnTime = plan?.returnTime; + values.price = plan?.price; + values.returnType = plan?.returnType; + }, } as any; } }, diff --git a/apps/web-antd/src/views/crm/receivable/plan/data.ts b/apps/web-antd/src/views/crm/receivable/plan/data.ts index 67f781e12..3e280ec8d 100644 --- a/apps/web-antd/src/views/crm/receivable/plan/data.ts +++ b/apps/web-antd/src/views/crm/receivable/plan/data.ts @@ -1,14 +1,17 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import { useUserStore } from '@vben/stores'; import { floatToFixed2 } from '@vben/utils'; import { getContractSimpleList } from '#/api/crm/contract'; import { getCustomerSimpleList } from '#/api/crm/customer'; +import { getSimpleUserList } from '#/api/system/user'; import { DICT_TYPE, getDictOptions } from '#/utils'; /** 新增/修改的表单 */ export function useFormSchema(): VbenFormSchema[] { + const userStore = useUserStore(); return [ { fieldName: 'customerId', @@ -63,6 +66,24 @@ export function useFormSchema(): VbenFormSchema[] { disabled: true, }, }, + { + fieldName: 'ownerUserId', + label: '负责人', + component: 'ApiSelect', + componentProps: { + api: () => getSimpleUserList(), + fieldNames: { + label: 'nickname', + value: 'id', + }, + }, + dependencies: { + triggerFields: ['id'], + disabled: (values) => !values.id, + }, + defaultValue: userStore.userInfo?.id, + rules: 'required', + }, { fieldName: 'price', label: '计划回款金额', @@ -81,6 +102,9 @@ export function useFormSchema(): VbenFormSchema[] { rules: 'required', componentProps: { placeholder: '请选择计划回款日期', + showTime: false, + valueFormat: 'x', + format: 'YYYY-MM-DD', }, }, { @@ -247,7 +271,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { title: '操作', field: 'actions', - width: 180, + width: 220, fixed: 'right', slots: { default: 'actions' }, }, diff --git a/apps/web-antd/src/views/crm/receivable/plan/index.vue b/apps/web-antd/src/views/crm/receivable/plan/index.vue index d4a8ce987..33b66a856 100644 --- a/apps/web-antd/src/views/crm/receivable/plan/index.vue +++ b/apps/web-antd/src/views/crm/receivable/plan/index.vue @@ -195,8 +195,6 @@ function onChangeSceneType(key: number | string) { auth: ['crm:receivable-plan:update'], onClick: handleEdit.bind(null, row), }, - ]" - :drop-down-actions="[ { label: $t('common.delete'), type: 'link',