pull/781/head
zy 2025-05-01 15:21:49 +08:00
parent 4c9e2eb21d
commit 39fea5ff3a
5 changed files with 108 additions and 65 deletions

View File

@ -123,7 +123,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="报价签约人" prop="signUserId">
<el-select v-model="formData.signUserId" placeholder="请选择报价签约人" disabled >
<el-select v-model="formData.signUserId" placeholder="报价签约人" disabled >
<el-option
v-for="dict in userOptions"
:key="dict.id"
@ -135,17 +135,17 @@
</el-col>
<el-col :span="8">
<el-form-item label="签约人联系电话" prop="signPhoneNumber">
<el-input v-model="formData.signPhoneNumber" placeholder="请输入签约人联系电话" disabled />
<el-input v-model="formData.signPhoneNumber" placeholder="签约人联系电话" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="签约人Email" prop="signEmail">
<el-input v-model="formData.signEmail" placeholder="请输入签约人Email" disabled />
<el-input v-model="formData.signEmail" placeholder="签约人Email" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="签约人微信" prop="signWechat">
<el-input v-model="formData.signWechat" placeholder="请输入签约人微信" disabled />
<el-input v-model="formData.signWechat" placeholder="签约人微信" disabled />
</el-form-item>
</el-col>
</el-row>
@ -153,7 +153,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="商机负责人" prop="ownerUserId">
<el-select v-model="formData.ownerUserId" placeholder="请选择商机负责人" disabled>
<el-select v-model="formData.ownerUserId" placeholder="商机负责人" disabled>
<el-option
v-for="dict in userOptions"
:key="dict.id"
@ -165,7 +165,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="拓展人" prop="expanderUserId">
<el-select v-model="formData.expanderUserId" placeholder="请选择拓展人" disabled>
<el-select v-model="formData.expanderUserId" placeholder="拓展人" disabled>
<el-option
v-for="dict in userOptions"
:key="dict.id"
@ -177,7 +177,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="方案报价人" prop="pricingUserId">
<el-select v-model="formData.pricingUserId" placeholder="请选择方案报价人" disabled>
<el-select v-model="formData.pricingUserId" placeholder="方案报价人" disabled>
<el-option
v-for="dict in userOptions"
:key="dict.id"
@ -216,7 +216,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="授信方式" prop="creditMethod" >
<el-select v-model="formData.creditMethod" placeholder="请选择授信方式" disabled>
<el-select v-model="formData.creditMethod" placeholder="授信方式" disabled>
<el-option
v-for="dict in getIntDictOptions('credit_method')"
:key="dict.value"
@ -228,7 +228,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="授信计算周期" prop="creditCalcCycle" >
<el-select v-model="formData.creditCalcCycle" placeholder="请选择授信计算周期" disabled>
<el-select v-model="formData.creditCalcCycle" placeholder="授信计算周期" disabled>
<el-option
v-for="dict in getIntDictOptions('credit_calc_cycle')"
:key="dict.value"
@ -240,12 +240,12 @@
</el-col>
<el-col :span="8">
<el-form-item label="授信额度" prop="creditLimit">
<el-input v-model="formData.creditLimit" placeholder="请输入授信额度" disabled />
<el-input v-model="formData.creditLimit" placeholder="授信额度" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合作主体" prop="partnerCompanyId">
<el-select v-model="formData.partnerCompanyId" placeholder="请选择合作主体" disabled >
<el-select v-model="formData.partnerCompanyId" placeholder="合作主体" disabled >
<el-option
v-for="dict in orgList"
:key="dict.id"
@ -265,7 +265,7 @@
disabled
check-strictly
node-key="id"
placeholder="请选择归属部门"
placeholder="归属部门"
/>
</el-form-item>
</el-col>
@ -277,14 +277,14 @@
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="24">
<el-form-item label="合同正文" prop="contractBody">
<el-input v-model="formData.contractBody" placeholder="请输入合同正文" />
<el-input v-model="formData.contractBody" type="textarea" rows="5" placeholder="请输入合同正文" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="24">
<el-form-item label="合同补充协议" prop="contractAgreement">
<el-input v-model="formData.contractAgreement" placeholder="请输入合同补充协议" />
<el-input v-model="formData.contractAgreement" type="textarea" rows="5" placeholder="请输入合同补充协议" />
</el-form-item>
</el-col>
</el-row>
@ -416,6 +416,7 @@ const formData = ref({
const formRules = reactive({
name: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }],
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
quotationId: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }],
orderDate: [{ required: true, message: '下单日期不能为空', trigger: 'blur' }],
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }]
})
@ -478,8 +479,30 @@ const submitForm = async () => {
const valid = await formRef.value.validate()
if (!valid) return
//
if(contractAAuthorizedCompanyFormRef.value.getData().length) {
const contractAAuthorizedCompanyValid = await contractAAuthorizedCompanyFormRef.value.validate()
if (!contractAAuthorizedCompanyValid) return message.warning('请完善合同甲方关联单位')
} else {
return message.warning('请完善合同甲方关联单位')
}
if(contractAAuthorizedPersonFormRef.value.getData().length) {
const contractAAuthorizedPerson = await contractAAuthorizedPersonFormRef.value.validate()
if (!contractAAuthorizedPerson) return message.warning('请完善合同甲方授权人信息')
} else {
return message.warning('请完善合同甲方授权人信息')
}
if(contractBAuthorizedPersonFormRef.value.getData().length) {
const contractBAuthorizedPersonPerson = await contractBAuthorizedPersonFormRef.value.validate()
if (!contractBAuthorizedPersonPerson) return message.warning('请完善合同乙方授权人信息')
} else {
return message.warning('请完善合同乙方授权人信息')
}
return
formLoading.value = true
productFormRef.value.validate()
try {
const data = unref(formData.value) as unknown as ContractApi.ContractVO
//

View File

@ -168,7 +168,6 @@ defineExpose({ validate })
/** 初始化 */
onMounted(async () => {
console.log('%csrc/views/crm/contract/components/ContractProductForm.vue:171 props.type', 'color: #007acc;', props.type);
productList.value = await ProductApi.getProductSimpleList()
})
</script>

View File

@ -283,12 +283,12 @@
<el-row>
<el-col :span="24">
<el-form-item label="合同正文" prop="contractBody">
<el-input v-model="formData.contractBody" type="textarea" row="5" disabled placeholder="请输入合同正文" />
<el-input v-model="formData.contractBody" type="textarea" rows="5" disabled placeholder="请输入合同正文" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="合同补充协议" prop="contractAgreement">
<el-input v-model="formData.contractAgreement" type="textarea" row="5" disabled placeholder="请输入合同补充协议" />
<el-input v-model="formData.contractAgreement" type="textarea" rows="5" disabled placeholder="请输入合同补充协议" />
</el-form-item>
</el-col>
</el-row>

View File

@ -112,48 +112,48 @@
<el-col :span="8">
<el-form-item label="被告记录" prop="defendantRecord">
<el-radio-group v-model="formData.defendantRecord">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="经营异常" prop="abnormalService">
<el-radio-group v-model="formData.abnormalService">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="股权出质" prop="equityPledge">
<el-radio-group v-model="formData.equityPledge">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="失信记录" prop="dishonestyRecord">
<el-radio-group v-model="formData.dishonestyRecord">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="融资记录" prop="financeRecord">
<el-radio-group v-model="formData.financeRecord">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="被执行记录" prop="judgmentRecord">
<el-radio-group v-model="formData.judgmentRecord">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@ -174,28 +174,28 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="开户行" prop="bBankName">
<el-input v-model="formData.bBankName" disabled />
<el-form-item label="开户行" prop="bankName">
<el-input v-model="formData.bankName" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="银行账号" prop="bBankAccount">
<el-input v-model="formData.bBankAccount" disabled />
<el-form-item label="银行账号" prop="bankAccount">
<el-input v-model="formData.bankAccount" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人代表" prop="bLegalRepresentative">
<el-input v-model="formData.bLegalRepresentative" disabled />
<el-form-item label="法人代表" prop="legalRepresentative">
<el-input v-model="formData.legalRepresentative" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<!-- <el-col :span="8">
<el-form-item label="营业执照号" prop="bBusinessLicenseNumber">
<el-input v-model="formData.bBusinessLicenseNumber" disabled />
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="8">
<el-form-item label="营业执照" prop="bBusinessLicense">
<el-input v-model="formData.bBusinessLicense" disabled />
<el-form-item label="营业执照" prop="businessLicense">
<el-input v-model="formData.businessLicense" disabled />
</el-form-item>
</el-col>
@ -368,7 +368,7 @@
<!-- 子表的表单 -->
<el-tabs v-model="subTabsName">
<el-tab-pane label="报价产品关联" name="quotationProduct">
<QuotationProductForm ref="quotationProductFormRef" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
<QuotationProductForm ref="quotationProductFormRef" :products="formData.products" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
</el-tab-pane>
</el-tabs>
<div style="text-align: right">
@ -511,6 +511,10 @@ const onCustomerChange = async (customerId: string) => {
try {
formLoading.value = true;
const customerRes = await CustomerApi.getCustomer(customerId);
formData.value.actualCapital = customerRes.actualCapital
formData.value.socialEmployeeNum = customerRes.socialEmployeeNum
formData.value.startDate = customerRes.startDate
formData.value.actualCapital = customerRes.actualCapital
formData.value.cooperationType = customerRes.cooperationType;
formData.value.companyType = customerRes.companyType;
formData.value.listingStatus = customerRes.listingStatus;
@ -538,11 +542,11 @@ const onPartnerChange = async (id: string) => {
try {
formLoading.value = true;
const res = await ContractApi.getOrgInfo(id);
formData.value.bBankName = res.bankName;
formData.value.bBankAccount = res.bankAccount;
formData.value.bLegalRepresentative = res.legalRepresentative;
formData.value.bBusinessLicenseNumber = res.businessLicenseNumber;
formData.value.bBusinessLicense = res.businessLicense;
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 {

View File

@ -96,8 +96,8 @@
</el-table-column>
<el-table-column label="产品开具项目" min-width="160">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productInvoiceItems`" :rules="formRules.productInvoiceItems" class="mb-0px!">
<el-select v-model="row.productInvoiceItems" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :prop="`${$index}.productInvoiceItem`" :rules="formRules.productInvoiceItem" class="mb-0px!">
<el-select v-model="row.productInvoiceItem" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS)"
:key="dict.value"
@ -110,8 +110,8 @@
</el-table-column>
<el-table-column label="服务费票据" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.serviceFeeInvoice`" :rules="formRules.serviceFeeInvoice" class="mb-0px!">
<el-select v-model="row.serviceFeeInvoice" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :prop="`${$index}.serviceInvoice`" :rules="formRules.serviceInvoice" class="mb-0px!">
<el-select v-model="row.serviceInvoice" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE)"
:key="dict.value"
@ -124,8 +124,8 @@
</el-table-column>
<el-table-column label="服务开具项目" min-width="160">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.serviceFeeInvoiceItems`" :rules="formRules.serviceFeeInvoiceItems" class="mb-0px!">
<el-select v-model="row.serviceFeeInvoiceItems" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :prop="`${$index}.serviceInvoiceItem`" :rules="formRules.serviceInvoiceItem" class="mb-0px!">
<el-select v-model="row.serviceInvoiceItem" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS)"
:key="dict.value"
@ -156,7 +156,8 @@ import * as BusinessApi from '@/api/crm/business'
const props = defineProps<{
quotationId: undefined, //
businessId: undefined,
billTemplateId: undefined
billTemplateId: undefined,
products: undefined
}>()
const formLoading = ref(false) //
const formData = ref([])
@ -170,9 +171,9 @@ const formRules = reactive({
onlinePrice: [{ required: true, message: '线上价格不能为空', trigger: 'blur' }],
offlinePrice: [{ required: true, message: '线下价格不能为空', trigger: 'blur' }],
totalPrice: [{ required: true, message: '总计价格不能为空', trigger: 'blur' }],
productInvoiceItems: [{ required: true, message: '产品开具项目不能为空', trigger: 'blur' }],
serviceFeeInvoice: [{ required: true, message: '服务费票据不能为空', trigger: 'blur' }],
serviceFeeInvoiceItems: [{ required: true, message: '服务开具项目不能为空', trigger: 'blur' }],
productInvoiceItem: [{ required: true, message: '产品开具项目不能为空', trigger: 'blur' }],
serviceInvoice: [{ required: true, message: '服务费票据不能为空', trigger: 'blur' }],
serviceInvoiceItem: [{ required: true, message: '服务开具项目不能为空', trigger: 'blur' }],
productInvoice: [{ required: true, message: '产品票据不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
@ -189,6 +190,7 @@ watch(
}
try {
formLoading.value = true
console.log('%csrc/views/crm/quotation/components/QuotationProductForm.vue:214 1111', 'color: #007acc;', 2222);
// if(val.quotationId) {
// formData.value = await QuotationApi.getQuotationProductListByQuotationId(val.quotationId)
// } else if(val.businessId) {
@ -199,7 +201,7 @@ watch(
formLoading.value = false
}
},
{ immediate: true }
// { immediate: true }
)
watch(
@ -211,6 +213,7 @@ watch(
}
try {
formLoading.value = true
console.log('%csrc/views/crm/quotation/components/QuotationProductForm.vue:214 1111', 'color: #007acc;', 1111);
// if(val.quotationId) {
// formData.value = await QuotationApi.getQuotationProductListByQuotationId(val.quotationId)
// } else if(val.businessId) {
@ -223,9 +226,9 @@ watch(
let foundItem = formData.value.find(item => item.productId == data.productId);
if (foundItem) {
foundItem.productInvoice = data.productInvoice
foundItem.productInvoiceItems = data.productInvoiceItems
foundItem.serviceFeeInvoice = data.serviceFeeInvoice
foundItem.serviceFeeInvoiceItems = data.serviceFeeInvoiceItems
foundItem.productInvoiceItem = data.productInvoiceItems
foundItem.serviceInvoice = data.serviceFeeInvoice
foundItem.serviceInvoiceItem = data.serviceFeeInvoiceItems
}
}
// formData.value = business
@ -234,7 +237,7 @@ watch(
formLoading.value = false
}
},
{ immediate: true }
// { immediate: true }
)
//
watch(
@ -254,6 +257,20 @@ watch(
},
{ deep: true }
);
watch(
() => props.products,
(val) => {
if (!val || val.length === 0) {
return;
}
nextTick(() => {
formData.value = val
})
},
{ immediate: true }
);
/** 新增按钮操作 */
const handleAdd = () => {
const row = {
@ -266,8 +283,8 @@ const handleAdd = () => {
offlinePrice: undefined,
totalPrice: undefined,
productInvoice: undefined,
productInvoiceItems: undefined,
serviceFeeInvoice: undefined,
productInvoiceItem: undefined,
serviceInvoice: undefined,
serviceFeeInvoiceItems: undefined
}
row.quotationId = props.quotationId