From 97e3647a49245ccd27d44ce3cca3d15d4c9bd433 Mon Sep 17 00:00:00 2001 From: zy Date: Mon, 26 May 2025 17:26:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/crm/contract/index.ts | 5 + src/views/crm/business/BusinessForm.vue | 4 +- .../crm/business/components/BusinessList.vue | 6 +- src/views/crm/capitalcost/CapitalCostForm.vue | 17 +- .../crm/contact/components/ContactList.vue | 47 +++- src/views/crm/contact/index.vue | 5 +- .../ContractAAuthorizedPersonForm.vue | 1 - src/views/crm/contract/contractUpload.vue | 86 +++++++ src/views/crm/contract/index.vue | 5 +- .../customer/detail/authorizedPersonForm.vue | 233 ++++++++++++++++++ src/views/crm/customer/detail/index.vue | 12 +- src/views/crm/quotation/QuotationForm.vue | 8 + .../components/QuotationProductForm.vue | 23 +- src/views/crm/quotation/index.vue | 4 +- 14 files changed, 414 insertions(+), 42 deletions(-) create mode 100644 src/views/crm/contract/contractUpload.vue create mode 100644 src/views/crm/customer/detail/authorizedPersonForm.vue diff --git a/src/api/crm/contract/index.ts b/src/api/crm/contract/index.ts index c8ab0e4d8..3b64d4ce0 100644 --- a/src/api/crm/contract/index.ts +++ b/src/api/crm/contract/index.ts @@ -160,6 +160,11 @@ export const printContract = async (id: number) => { }) } +// 合同上传 +export const contractUpload = async (data: TransferReqVO) => { + return await request.put({ url: '/crm/contract/updateFileUrl', data }) +} + // ==================== 子表(CRM 合同产品关联) ==================== diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue index 60d9d46ff..6947dd4a2 100644 --- a/src/views/crm/business/BusinessForm.vue +++ b/src/views/crm/business/BusinessForm.vue @@ -509,7 +509,7 @@ const resetForm = () => { const changeCustomer = async (val) => { const customerRes = await CustomerApi.getCustomer(val); formData.value.clueDeveloper = customerRes.clueDeveloper - formData.value.maintenanceUserId = customerRes.maintainer + formData.value.maintainer = customerRes.maintainer } const changeCheck = (val) => { @@ -532,7 +532,7 @@ console.log('%csrc/views/crm/business/BusinessForm.vue:516 getIntDictOptions(DIC const customerId = route.query.customerId; formData.value.customerId = Number(route.query.bizId) || '' formData.value.clueDeveloper = Number(route.query.clueDeveloper) || '' - formData.value.maintenanceUserId = Number(route.query.maintenanceUserId) || '' + formData.value.maintainer = Number(route.query.maintainer) || '' formData.value.requestorUserId = customerId ? '' : useUserStore().getUser.id; formType.value = route.query.id || route.params.id; diff --git a/src/views/crm/business/components/BusinessList.vue b/src/views/crm/business/components/BusinessList.vue index 3627b5dea..43f9e3f62 100644 --- a/src/views/crm/business/components/BusinessList.vue +++ b/src/views/crm/business/components/BusinessList.vue @@ -75,7 +75,7 @@ const props = defineProps<{ customerId?: number // 关联联系人与商机时,需要传入 customerId 进行筛选 contactId?: number // 特殊:联系人编号;在【联系人】详情中,可以传递联系人编号,默认新建的商机关联到该联系人 clueDeveloper: number - maintenanceUserId: number + maintainer: number }>() const loading = ref(true) // 列表的加载中 @@ -119,7 +119,6 @@ defineExpose({ getList }) const getData = (val,data) => { list.value = data - console.log('%csrc/views/crm/business/components/BusinessList.vue:118 val', 'color: #007acc;', val, data.value); } /** 搜索按钮操作 */ @@ -132,13 +131,12 @@ const handleQuery = () => { const { push } = useRouter() const formRef = ref() const openForm = () => { - console.log('%csrc/views/crm/business/components/BusinessList.vue:135 props', 'color: green;', props); push({ name: 'CrmBusinessAdd', query: { bizId: props.bizId, clueDeveloper: props.clueDeveloper, - maintenanceUserId: props.maintenanceUserId + maintainer: props.maintainer } }) } diff --git a/src/views/crm/capitalcost/CapitalCostForm.vue b/src/views/crm/capitalcost/CapitalCostForm.vue index 866830686..b27a53eae 100644 --- a/src/views/crm/capitalcost/CapitalCostForm.vue +++ b/src/views/crm/capitalcost/CapitalCostForm.vue @@ -51,27 +51,32 @@ - + - + - + - + - - + + + + + + + diff --git a/src/views/crm/contact/components/ContactList.vue b/src/views/crm/contact/components/ContactList.vue index 2e9911043..a22d757bc 100644 --- a/src/views/crm/contact/components/ContactList.vue +++ b/src/views/crm/contact/components/ContactList.vue @@ -1,7 +1,7 @@ + + + + + + + + { /** 添加操作 */ const formRef = ref() -const openForm = () => { - formRef.value.open('create', undefined, props.bizId, props.businessId) +const openForm = (type, val?: number) => { + formRef.value.open(type, val, props.bizId, props.businessId) } /** 打开联系人详情 */ @@ -159,6 +187,19 @@ const createContactBusinessList = async (contactIds: number[]) => { handleQuery() } +/** 删除按钮操作 */ +const handleDelete = async (id: number) => { + try { + // 删除的二次确认 + await message.delConfirm() + // 发起删除 + await ContactApi.deleteContact(id) + message.success(t('common.delSuccess')) + // 刷新列表 + await getList() + } catch {} +} + /** 解除联系人与商机的关联 */ const contactRef = ref() const deleteContactBusinessList = async () => { diff --git a/src/views/crm/contact/index.vue b/src/views/crm/contact/index.vue index aeac4d346..a598427aa 100644 --- a/src/views/crm/contact/index.vue +++ b/src/views/crm/contact/index.vue @@ -103,7 +103,7 @@ - + - + @@ -144,6 +144,7 @@ + { } const getList = (val: []) => { - console.log('%csrc/views/crm/contract/components/ContractAAuthorizedPersonForm.vue:182 val', 'color: #007acc;', val); for(let i = val.length - 1; i >= 0; i--) { let obj = val[i] if(formData.value.some(v => v.customerContactId === obj.id)) val.splice(i, 1) diff --git a/src/views/crm/contract/contractUpload.vue b/src/views/crm/contract/contractUpload.vue new file mode 100644 index 000000000..504e4f851 --- /dev/null +++ b/src/views/crm/contract/contractUpload.vue @@ -0,0 +1,86 @@ + + \ No newline at end of file diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue index b112e8ff8..63991f92f 100644 --- a/src/views/crm/contract/index.vue +++ b/src/views/crm/contract/index.vue @@ -305,6 +305,7 @@ /> + @@ -312,6 +313,7 @@ import { dateFormatter, dateFormatter2 } from '@/utils/formatTime' import download from '@/utils/download' import FileTemplateForm from './templateForm.vue' +import ContractUpload from './contractUpload.vue' import * as ContractApi from '@/api/crm/contract' import { DICT_TYPE } from '@/utils/dict' import { erpPriceInputFormatter, erpPriceTableColumnFormatter } from '@/utils' @@ -325,6 +327,7 @@ defineOptions({ name: 'CrmContract' }) const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 +const uploadFormRef = ref('') const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 @@ -460,7 +463,7 @@ const getPrintTemplate = (row) => { } const handleUpload = (val) => { - + uploadFormRef.value.open(val) } //盖章合同下载 diff --git a/src/views/crm/customer/detail/authorizedPersonForm.vue b/src/views/crm/customer/detail/authorizedPersonForm.vue new file mode 100644 index 000000000..98c0bb3b4 --- /dev/null +++ b/src/views/crm/customer/detail/authorizedPersonForm.vue @@ -0,0 +1,233 @@ + + \ No newline at end of file diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index 58a752be2..5111611cd 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -26,12 +26,12 @@ > 锁定 --> - 领取 - + 领取 + 分配 放入公海 @@ -61,7 +61,7 @@ /> --> - + @@ -69,6 +69,9 @@ + + + @@ -112,6 +115,7 @@ import { BizTypeEnum } from '@/api/crm/permission' import type { OperateLogVO } from '@/api/system/operatelog' import { getOperateLogPage } from '@/api/crm/operateLog' import CustomerDistributeForm from '@/views/crm/customer/pool/CustomerDistributeForm.vue' +import AuthorizedPersonForm from '@/views/crm/customer/detail/authorizedPersonForm.vue' defineOptions({ name: 'CrmCustomerDetail' }) diff --git a/src/views/crm/quotation/QuotationForm.vue b/src/views/crm/quotation/QuotationForm.vue index 80d2eccd1..52eb72598 100644 --- a/src/views/crm/quotation/QuotationForm.vue +++ b/src/views/crm/quotation/QuotationForm.vue @@ -229,6 +229,7 @@ :data="deptTree" :props="defaultProps" filterable + disabled check-strictly node-key="id" placeholder="请选择归属部门" @@ -918,6 +919,11 @@ const resetForm = () => { } const changePartnerType = async (val) => { + formData.value.partnerCompanyId = '' + formData.value.creditCode = '' + formData.value.bankName = '' + formData.value.bankAccount = '' + formData.value.legalRepresentative = '' const org = await ContractApi.getOrg({ pageNo: 1, pageSize: 1000, @@ -928,11 +934,13 @@ const changePartnerType = async (val) => { const route = useRoute(); onMounted(async () => { + console.log('%csrc/views/crm/quotation/QuotationForm.vue:931 useUserStore().getUser', 'color: #007acc;', useUserStore().getUser); formType.value = props.id || route.query.id; if (formType.value) open(formType.value) formData.value.pricingUserId = useUserStore().getUser.id; + formData.value.deptId = useUserStore().getUser.deptId; // 获得客户列表 diff --git a/src/views/crm/quotation/components/QuotationProductForm.vue b/src/views/crm/quotation/components/QuotationProductForm.vue index 15b5a6b37..aff3a066b 100644 --- a/src/views/crm/quotation/components/QuotationProductForm.vue +++ b/src/views/crm/quotation/components/QuotationProductForm.vue @@ -25,25 +25,14 @@ - - + + - -