From 5ab25d6e86da3a352872d9cb37fa1cebc60869b6 Mon Sep 17 00:00:00 2001 From: zy Date: Thu, 1 May 2025 18:21:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/contract/ContractForm.vue | 73 +++++++++++++------ .../ContractAAuthorizedPersonForm.vue | 8 +- .../ContractBAuthorizedPersonForm.vue | 21 +++--- .../components/ContractProductForm.vue | 4 +- 4 files changed, 68 insertions(+), 38 deletions(-) diff --git a/src/views/crm/contract/ContractForm.vue b/src/views/crm/contract/ContractForm.vue index a2fd475d5..a249af507 100644 --- a/src/views/crm/contract/ContractForm.vue +++ b/src/views/crm/contract/ContractForm.vue @@ -56,10 +56,10 @@ - + - + @@ -237,7 +237,7 @@ @@ -295,8 +295,8 @@ - - + + - - + + - - + + 按月结算 按项目结算 @@ -480,6 +480,8 @@ import ContractAAuthorizedPersonForm from './components/ContractAAuthorizedPerso import ContractBAuthorizedPersonForm from './components/ContractBAuthorizedPersonForm.vue' import { propTypes } from '@/utils/propTypes' import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict' +import { defaultProps, handleTree } from '@/utils/tree' +import * as DeptApi from '@/api/system/dept' const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -493,12 +495,14 @@ const dialogVisible = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formType = ref('') // 表单的类型:create - 新增;update - 修改 +const deptTree = ref() // 部门树形结构 const formData = ref({ id: undefined, name: undefined, no: undefined, customerId: undefined, partyName: undefined, + lastPayDate: undefined, partAddress: undefined, secPartyPerson: undefined, wechat: undefined, @@ -533,6 +537,7 @@ const formData = ref({ partnerCompanyId: undefined, deptId: undefined, quotationTimes: undefined, + statementDate: undefined, products: [] }) const formRules = reactive({ @@ -541,7 +546,7 @@ const formRules = reactive({ quotationId: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }], orderDate: [{ required: true, message: '下单日期不能为空', trigger: 'blur' }], ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }], - statement: [{ required: true, message: '账单日不能为空', trigger: 'change' }], + statementDate: [{ required: true, message: '账单日不能为空', trigger: 'change' }], contractType: [{ required: true, message: '合同类型不能为空', trigger: 'change' }], penaltyRate: [{ required: true, message: '违约金比例不能为空', trigger: 'blur' }], latePaymentRate: [{ required: true, message: '延期付款利率不能为空', trigger: 'blur' }], @@ -695,6 +700,7 @@ const resetForm = () => { partnerCompanyId: undefined, deptId: undefined, quotationTimes: undefined, + paymentTerm: undefined, products: [] } formRef.value?.resetFields() @@ -713,11 +719,10 @@ const handleQuotationChange = async (quotationId: number) => { formData.value.ownerUserId = quotation.ownerUserId; formData.value.expanderUserId = quotation.expanderUserId; - formData.value.pricingUserId = quotation.pricingUserId; formData.value.signUserId = quotation.signUserId; formData.value.signPhoneNumber = quotation.signPhoneNumber; formData.value.signEmail = quotation.signEmail; - formData.value.signWechat = quotation.signWechat; + formData.value.paymentTerm = quotation.paymentTerm; formData.value.partnerCompanyId = quotation.partnerCompanyId; @@ -732,6 +737,7 @@ const handleQuotationChange = async (quotationId: number) => { // 🔁 自动加载客户详情 await onCustomerChange(quotation.customerId); + await onPartnerChange(quotation.partnerCompanyId); } catch (err) { } finally { @@ -753,13 +759,15 @@ const onCustomerChange = async (customerId: string) => { formData.value.insuredCount = customerRes.insuredCount; formData.value.establishmentDate = customerRes.establishmentDate; formData.value.enterpriseType = customerRes.enterpriseType; - formData.value.businessStatus = customerRes.businessStatus; - formData.value.defendantRecord = customerRes.defendantRecord; - formData.value.businessAbnormal = customerRes.businessAbnormal; - formData.value.equityPledge = customerRes.equityPledge; - formData.value.dishonestRecord = customerRes.dishonestRecord; - formData.value.financingRecord = customerRes.financingRecord; - formData.value.enforcementRecord = customerRes.enforcementRecord; + formData.value.actualCapital = customerRes.actualCapital; + + formData.value.partAddress = customerRes.partAddress; + formData.value.listingStatus = customerRes.listingStatus; + formData.value.legalRepresentative = customerRes.legalRepresentative; + formData.value.creditCode = customerRes.creditCode; + formData.value.regType = customerRes.regType; + formData.value.financingInfo = customerRes.financingInfo; + formData.value.socialEmployeeNum = customerRes.socialEmployeeNum; } catch (err) { console.error('获取客户详情失败:', err); } finally { @@ -767,6 +775,23 @@ const onCustomerChange = async (customerId: string) => { } } +const onPartnerChange = async (id: string) => { + if (!id) return + try { + formLoading.value = true; + const res = await ContractApi.getOrgInfo(id); + formData.value.bankName = res.bankName; + formData.value.bankAccount = res.bankAccount; + formData.value.legalRepresentative = res.legalRepresentative; + formData.value.businessLicenseNumber = res.businessLicenseNumber; + formData.value.businessLicense = res.businessLicense; + // formData.value.partnerCompanyId = res.partnerCompanyId; + } catch (err) { + } finally { + formLoading.value = false; + } +} + /** 动态获取客户联系人 */ const getContactOptions = computed(() => @@ -793,6 +818,10 @@ onMounted(async () => { pageSize: 1000, }) templateOptions.value = tempData.list + + + // 获得部门树 + deptTree.value = handleTree(await DeptApi.getSimpleDeptList()) // 默认新建时选中自己 // if (formType.value === 'create') { // formData.value.ownerUserId = useUserStore().getUser.id diff --git a/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue b/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue index b25594f98..9b6563f4e 100644 --- a/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue +++ b/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue @@ -9,20 +9,20 @@ > - + - + - +