关联单位

pull/781/head
zy 2025-05-27 18:35:30 +08:00
parent 8481fdd215
commit 3ba9acbcf5
15 changed files with 271 additions and 203 deletions

View File

@ -1,5 +1,5 @@
<template> <template>
<Dialog title="添加商品" v-model="dialogVisible" width="50%"> <Dialog title="添加关联单位" v-model="dialogVisible" width="50%">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form
class="-mb-15px" class="-mb-15px"
@ -25,7 +25,10 @@
<Icon class="mr-5px" icon="ep:refresh" /> <Icon class="mr-5px" icon="ep:refresh" />
重置 重置
</el-button> </el-button>
<el-button v-hasPermi="['crm:customer-company:create']" type="primary" @click="openForm('create')">
<Icon class="mr-5px" icon="ep:plus" />
新增关联单位
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -52,6 +55,8 @@
</template> </template>
</Dialog> </Dialog>
<CustomerCompanyForm ref="formRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -60,7 +65,8 @@ import * as ProductApi from '@/api/crm/product'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import { BillTemplateApi, BillTemplateVO } from '@/api/crm/billtemplate' import { BillTemplateApi, BillTemplateVO } from '@/api/crm/billtemplate'
import CustomerCompanyForm from './CustomerCompanyForm.vue' import CustomerCompanyForm from '../../views/crm/customercompany/CustomerCompanyForm.vue'
import { CustomerCompanyApi, CustomerCompanyVO } from '@/api/crm/customercompany'
/** 票据模版 列表 */ /** 票据模版 列表 */
defineOptions({ name: 'BillTemplate' }) defineOptions({ name: 'BillTemplate' })
@ -84,6 +90,12 @@ const queryParams = reactive({
const bizId = ref('') const bizId = ref('')
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, '', bizId.value)
}
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (data: [], id?: number) => { const open = async (data: [], id?: number) => {
dialogVisible.value = true dialogVisible.value = true
@ -131,10 +143,12 @@ const resetQuery = () => {
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = async () => { const submitForm = async () => {
//
console.log('%csrc/components/relateCompany/index.vue:149 object', 'color: #007acc;', multipleSelection.value);
emit('success', multipleSelection.value)
// //
dialogVisible.value = false dialogVisible.value = false
//
emit('success', multipleSelection.value)
} }
const setSelections = async () => { const setSelections = async () => {
const selections = multipleSelection.value.map(item => { const selections = multipleSelection.value.map(item => {

View File

@ -223,7 +223,8 @@ export enum DICT_TYPE {
CRM_PARTNER_TYPE1 = 'CRM_PARTNER_TYPE1',//合作类型 CRM_PARTNER_TYPE1 = 'CRM_PARTNER_TYPE1',//合作类型
CRM_SERVICE_FEE_COLLECTION_METHOD = 'crm_service_fee_collection_method',//服务费收取方式 CRM_SERVICE_FEE_COLLECTION_METHOD = 'crm_service_fee_collection_method',//服务费收取方式
CRM_CONTACT_ROLE_TYPE = 'crm_contact_role_type',//角色 CRM_CONTACT_ROLE_TYPE = 'crm_contact_role_type',//角色
CRM_CONTRACT_PENALTY_RATE = 'crm_contract_penalty_rate',//违约金
CRM_CONTRACT_LATE_PAYMENT_RATE = 'crm_contract_late_payment_rate',//延期付款率
CRM_PRODUCT_CATEGORY = "crm_product_category", //CRM 产品类型 CRM_PRODUCT_CATEGORY = "crm_product_category", //CRM 产品类型
CRM_PRODUCT_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型 CRM_PRODUCT_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型
CRM_COOPERATION_TYPE = "crm_cooperation_type", //CRM 合作类型 CRM_COOPERATION_TYPE = "crm_cooperation_type", //CRM 合作类型

View File

@ -118,7 +118,7 @@
</div> </div>
<ContracExtension ref="contractExtensionFormRef" :formFields="formFields" v-if="formData.changeItem == 3" :data="formData" /> <ContracExtension ref="contractExtensionFormRef" :formFields="formFields" v-if="formData.changeItem == 3" :data="formData" />
<ContractStop ref="contractStopFormRef" :formData="formData" :formFields="formFields" v-if="formData.changeItem == 4" /> <ContractStop ref="contractStopFormRef" :formData="formData" :formFields="formFields" v-if="formData.changeItem == 4" />
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" :formFields="formFields" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" /> <ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" :formFields="formFields" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" :customerId="formData.customerId" />
<ContractForm ref="contractFormRef" :type="1" v-if="formData.changeItem == 6" /> <ContractForm ref="contractFormRef" :type="1" v-if="formData.changeItem == 6" />
</ContentWrap> </ContentWrap>
</el-form> </el-form>
@ -173,6 +173,7 @@ const formFields = ref({
afterAmount: 1, afterAmount: 1,
changeAmountDeadline: 2, changeAmountDeadline: 2,
contractAAuthorizedCompanysother: 1, contractAAuthorizedCompanysother: 1,
contractAAuthorizedCompanyscustomerName: 1,
contractAAuthorizedCompanysunifiedCreditCode: 1, contractAAuthorizedCompanysunifiedCreditCode: 1,
contractAAuthorizedCompanysinvoicingAddress: 1, contractAAuthorizedCompanysinvoicingAddress: 1,
contractAAuthorizedCompanysinvoicingTelephone: 1, contractAAuthorizedCompanysinvoicingTelephone: 1,

View File

@ -31,11 +31,11 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="报价单编号" prop="quotationId"> <el-form-item label="报价单编号" prop="quotationId">
<el-select <el-select
disabled
@change="handleQuotationChange" @change="handleQuotationChange"
v-model="formData.quotationId" v-model="formData.quotationId"
placeholder="" placeholder=""
class="w-1/1" class="w-1/1"
disabled
> >
<el-option <el-option
v-for="item in quotationList" v-for="item in quotationList"
@ -81,11 +81,11 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="授信计算周期" prop="creditCalcCycle" > <el-form-item label="授信计算周期" prop="creditCalcCycle" >
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled /> <el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<!-- <el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="票据模板" prop="invoiceTemplateId"> <el-form-item label="票据模板" prop="invoiceTemplateId">
<el-select v-model="formData.invoiceTemplateId" disabled placeholder=""> <el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
@ -222,10 +222,10 @@
</ContentWrap> </ContentWrap>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="合作类型" prop="cooperationType"> <el-form-item label="合作类型" prop="partnerType">
<el-select v-model="formData.cooperationType" disabled filterable clearable placeholder="" class="w-1/1"> <el-select v-model="formData.partnerType" disabled clearable placeholder="请选择合作类型">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_COOPERATION_TYPE)" v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE1)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
@ -276,7 +276,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="手机号" prop="mobile"> <el-form-item label="手机号" prop="mobile">
<el-input <el-input
v-model="formData.ownerUserMobile" v-model="formData.ownerUserMobile"
@ -302,7 +302,7 @@
disabled disabled
/> />
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="归属部门" prop="deptId"> <el-form-item label="归属部门" prop="deptId">
<el-tree-select <el-tree-select
@ -342,6 +342,11 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="合同期限(月)" prop="contractTerm">
<el-input v-model="formData.contractTerm" @input="changeTime" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入合同期限(月)" />
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="合同结束时间" prop="endTime"> <el-form-item label="合同结束时间" prop="endTime">
<el-date-picker <el-date-picker
@ -355,14 +360,34 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="合同期限(月)" prop="contractTerm"> <el-form-item label="违约金比例(%" prop="penaltyRate">
<el-input v-model="formData.contractTerm" @input="changeTime" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入合同期限(月)" /> <el-select v-model="formData.penaltyRate" placeholder="请选择违约金比例">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CONTRACT_PENALTY_RATE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="延期付款利率(%" prop="latePaymentRate">
<el-select v-model="formData.latePaymentRate" placeholder="请选择延期付款利率">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CONTRACT_LATE_PAYMENT_RATE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="账单日" prop="statementDate"> <el-form-item label="账单日" prop="statementDate">
<el-select v-model="formData.statementDate" placeholder="请选择账单日" > <el-select v-model="formData.statementDate" disabled placeholder="请选择账单日" >
<el-option <el-option
v-for="(dict, index) in statement" v-for="(dict, index) in statement"
:key="index" :key="index"
@ -374,7 +399,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="最晚付款日" prop="lastPayDate"> <el-form-item label="最晚付款日" prop="lastPayDate">
<el-select v-model="formData.lastPayDate" placeholder="请选择最晚付款日" > <el-select v-model="formData.lastPayDate" disabled placeholder="请选择最晚付款日" >
<el-option <el-option
v-for="(dict, index) in statement" v-for="(dict, index) in statement"
:key="index" :key="index"
@ -384,16 +409,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="违约金比例(%" prop="penaltyRate">
<el-input v-model="formData.penaltyRate" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入违约金比例" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="延期付款利率(%" prop="latePaymentRate">
<el-input v-model="formData.latePaymentRate" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入延期付款利率" />
</el-form-item>
</el-col>
<!-- <el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="票据模板" prop="invoiceTemplateId"> <el-form-item label="票据模板" prop="invoiceTemplateId">
<el-input v-model="formData.invoiceTemplateId" placeholder="请输入票据模板" disabled /> <el-input v-model="formData.invoiceTemplateId" placeholder="请输入票据模板" disabled />
@ -525,11 +540,11 @@
<el-input v-model="formData.contractBody" type="textarea" rows="5" placeholder="请输入合同正文" /> <el-input v-model="formData.contractBody" type="textarea" rows="5" placeholder="请输入合同正文" />
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
<!-- <el-col :span="24"> <el-col :span="24">
<el-form-item label="合同补充协议" prop="contractAgreement"> <el-form-item label="合同补充协议" prop="contractAgreement">
<el-input v-model="formData.contractAgreement" type="textarea" rows="5" placeholder="请输入合同补充协议" /> <el-input v-model="formData.contractAgreement" type="textarea" rows="5" placeholder="请输入合同补充协议" />
</el-form-item> </el-form-item>
</el-col> --> </el-col>
</el-row> </el-row>
<ContentWrap style="border: none;font-weight:700"> <ContentWrap style="border: none;font-weight:700">
@ -549,7 +564,7 @@
合同甲方关联单位 合同甲方关联单位
</ContentWrap> </ContentWrap>
<ContentWrap> <ContentWrap>
<ContractAAuthorizedCompanyForm :formFields="formFields" ref="contractAAuthorizedCompanyFormRef" :data="formData.contractAAuthorizedCompanys" :contract-id="formData.id" /> <ContractAAuthorizedCompanyForm :formFields="formFields" ref="contractAAuthorizedCompanyFormRef" :data="formData.contractAAuthorizedCompanys" :contract-id="formData.id" :customerId="formData.customerId" />
</ContentWrap> </ContentWrap>
<ContentWrap style="border: none;font-weight:700"> <ContentWrap style="border: none;font-weight:700">
合同甲方授权人信息 合同甲方授权人信息
@ -599,6 +614,7 @@ const props = defineProps({
type: propTypes.number.def(undefined), type: propTypes.number.def(undefined),
changeType: propTypes.number.def(undefined),// changeType: propTypes.number.def(undefined),//
}) })
const statement = ref(new Array(31).fill(null))
const templateOptions = ref([]) const templateOptions = ref([])
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
@ -622,6 +638,7 @@ const formFields = ref({
productsserviceInvoiceItem: 1, productsserviceInvoiceItem: 1,
productsother1: 1, productsother1: 1,
contractAAuthorizedCompanysother: 1, contractAAuthorizedCompanysother: 1,
contractAAuthorizedCompanyscustomerName: 1,
contractAAuthorizedCompanysunifiedCreditCode: 1, contractAAuthorizedCompanysunifiedCreditCode: 1,
contractAAuthorizedCompanysinvoicingAddress: 1, contractAAuthorizedCompanysinvoicingAddress: 1,
contractAAuthorizedCompanysinvoicingTelephone: 1, contractAAuthorizedCompanysinvoicingTelephone: 1,
@ -690,6 +707,7 @@ const formData = ref({
deptId: undefined, deptId: undefined,
quotationTimes: undefined, quotationTimes: undefined,
statementDate: undefined, statementDate: undefined,
contractType: 2,
contractAAuthorizedCompanys: [], contractAAuthorizedCompanys: [],
products: [] products: []
}) })
@ -715,7 +733,6 @@ const customerList = ref([]) // 客户列表的数据
const quotationList = ref<QuotationVO[]>([]) const quotationList = ref<QuotationVO[]>([])
const contactList = ref<ContactApi.ContactVO[]>([]) const contactList = ref<ContactApi.ContactVO[]>([])
const orgList = ref([]) const orgList = ref([])
const statement = ref(new Array(31).fill(null))
/** 子表的表单 */ /** 子表的表单 */
const subTabsName = ref('product') const subTabsName = ref('product')
@ -744,7 +761,6 @@ const open = async (type: string) => {
// formLoading.value = true // formLoading.value = true
try { try {
formData.value = await ContractApi.getContract(type) formData.value = await ContractApi.getContract(type)
console.log('%csrc/views/crm/contract/ContractForm.vue:614 object', 'color: #007acc;', formData.value);
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
@ -771,8 +787,6 @@ const submitForm = async () => {
if (!valid) return if (!valid) return
// //
if(contractAAuthorizedCompanyFormRef.value.getData().length) { if(contractAAuthorizedCompanyFormRef.value.getData().length) {
const contractAAuthorizedCompanyValid = await contractAAuthorizedCompanyFormRef.value.validate()
if (!contractAAuthorizedCompanyValid) return message.warning('请完善合同甲方关联单位')
} else { } else {
return message.warning('请完善合同甲方关联单位') return message.warning('请完善合同甲方关联单位')
} }
@ -870,7 +884,7 @@ const handleQuotationChange = async (quotationId: number) => {
try { try {
const quotation = await QuotationApi.getQuotation(quotationId) const quotation = await QuotationApi.getQuotation(quotationId)
formData.value.products = quotation.products; formData.value.products = quotation.products;
formData.value.customerId = quotation.customerId; // formData.value.customerId = quotation.customerId;
formData.value.invoiceTemplateId = quotation.invoiceTemplateId; formData.value.invoiceTemplateId = quotation.invoiceTemplateId;
@ -885,7 +899,10 @@ const handleQuotationChange = async (quotationId: number) => {
formData.value.paymentTerm = quotation.paymentTerm; formData.value.paymentTerm = quotation.paymentTerm;
formData.value.partnerCompanyId = quotation.partnerCompanyId; formData.value.partnerCompanyId = quotation.partnerCompanyId;
formData.value.statementDate = quotation.statementDate;
formData.value.lastPayDate = quotation.lastPayDate;
formData.value.partnerType = quotation.partnerType;
formData.value.creditLimit = quotation.creditLimit; formData.value.creditLimit = quotation.creditLimit;
formData.value.creditMethod = quotation.creditMethod; formData.value.creditMethod = quotation.creditMethod;
formData.value.creditCalcCycle = quotation.creditCalcCycle; formData.value.creditCalcCycle = quotation.creditCalcCycle;
@ -911,8 +928,13 @@ const onCustomerChange = async (customerId: string) => {
try { try {
formLoading.value = true; formLoading.value = true;
const customerRes = await CustomerApi.getCustomerDetail(customerId); let customerRes
formData.value.cooperationType = customerRes.cooperationType; if(formType.value) {
customerRes = await CustomerApi.getCustomer(customerId);
}else {
customerRes = await CustomerApi.getCustomerDetail(customerId);
formData.value.quotationId = customerRes.quotationId;
}
formData.value.companyType = customerRes.companyType; formData.value.companyType = customerRes.companyType;
formData.value.listingStatus = customerRes.listingStatus; formData.value.listingStatus = customerRes.listingStatus;
formData.value.financingInfo = customerRes.financingInfo; formData.value.financingInfo = customerRes.financingInfo;
@ -930,12 +952,11 @@ const onCustomerChange = async (customerId: string) => {
formData.value.financingInfo = customerRes.financingInfo; formData.value.financingInfo = customerRes.financingInfo;
formData.value.socialEmployeeNum = customerRes.socialEmployeeNum; formData.value.socialEmployeeNum = customerRes.socialEmployeeNum;
formData.value.registeredAddress = customerRes.registeredAddress; formData.value.registeredAddress = customerRes.registeredAddress;
formData.value.quotationId = customerRes.quotationId;
formData.value.afterSaleUserId = customerRes.maintainer; formData.value.afterSaleUserId = customerRes.maintainer;
formData.value.servicor = customerRes.servicor; formData.value.clueDeveloper = customerRes.clueDeveloper;
formData.value.clueDeveloper = customerRes.developer; formData.value.servicor = quotation.servicor;
formData.value.technicalLead = customerRes.technicalLead; formData.value.technicalLead = quotation.technicalLead;
formData.value.settlementLead = customerRes.settlementLead; formData.value.settlementLead = quotation.settlementLead;
await handleQuotationChange(customerRes.quotationId); await handleQuotationChange(customerRes.quotationId);
} catch (err) { } catch (err) {
@ -990,22 +1011,33 @@ const getContactOptions = computed(() =>
const route = useRoute(); const route = useRoute();
onMounted(async () => { onMounted(async () => {
formData.value.contractor = useUserStore().getUser.id; formData.value.contractor = useUserStore().getUser.id;
let isId = props.id || route.query.id
if(!props.changeType) { if(!props.changeType) {
formType.value = props.id || route.query.id formType.value = props.id || route.query.id
if (formType.value) await open(formType.value) if (formType.value) await open(formType.value)
} }
formData.value.customerId = Number(route.query.bizId) || '' route.query.bizId ? formData.value.customerId = Number(route.query.bizId) : ''
if(formData.value.customerId) onCustomerChange(formData.value.customerId) if(formData.value.customerId) onCustomerChange(formData.value.customerId)
// //
customerList.value = await CustomerApi.getCustomerSimpleList() customerList.value = await CustomerApi.getSelfCustomerSimpleList()
// //
userOptions.value = await UserApi.getSimpleUserList() userOptions.value = await UserApi.getSimpleUserList()
// //
if(isId) {
let data = await QuotationApi.getQuotationPage({
pageNo: 1,
pageSize: 999,
no: undefined,
sceneType: '1',
})
quotationList.value = data.list
} else {
quotationList.value = await QuotationApi.getSelfSimpleQuotationList() quotationList.value = await QuotationApi.getSelfSimpleQuotationList()
}
// // // //
// const tempData = await BillTemplateApi.getBillTemplatePage({ // const tempData = await BillTemplateApi.getBillTemplatePage({

View File

@ -12,88 +12,25 @@
<el-table-column label="序号" type="index" width="100" /> <el-table-column label="序号" type="index" width="100" />
</template> </template>
<template #contractAAuthorizedCompanyscustomerName> <template #contractAAuthorizedCompanyscustomerName>
<el-table-column label="单位名称" min-width="150"> <el-table-column label="单位名称" min-width="150" prop="customerName" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.customerName`" :rules="formRules.customerName" class="mb-0px!" v-if="!type">
<el-input v-model="row.customerName" placeholder="请输入单位名称" />
</el-form-item>
<div v-else>
{{row.customerName}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanysunifiedCreditCode> <template #contractAAuthorizedCompanysunifiedCreditCode>
<el-table-column label="统一社会信用代码" min-width="150"> <el-table-column label="统一社会信用代码" min-width="150" prop="unifiedCreditCode" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.unifiedCreditCode`" :rules="formRules.unifiedCreditCode" class="mb-0px!" v-if="!type">
<el-input v-model="row.unifiedCreditCode" placeholder="请输入统一社会信用代码" />
</el-form-item>
<div v-else>
{{row.unifiedCreditCode}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanysinvoicingAddress> <template #contractAAuthorizedCompanysinvoicingAddress>
<el-table-column label="开票地址" min-width="150"> <el-table-column label="开票地址" min-width="150" prop="invoicingAddress" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.invoicingAddress`" :rules="formRules.invoicingAddress" class="mb-0px!" v-if="!type">
<el-input v-model="row.invoicingAddress" placeholder="请输入开票地址" />
</el-form-item>
<div v-else>
{{row.invoicingAddress}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanysinvoicingTelephone> <template #contractAAuthorizedCompanysinvoicingTelephone>
<el-table-column label="开票电话" min-width="150"> <el-table-column label="开票电话" min-width="150" prop="invoicingTelephone" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.invoicingTelephone`" :rules="formRules.invoicingTelephone" class="mb-0px!" v-if="!type">
<el-input v-model="row.invoicingTelephone" placeholder="请输入开票电话" />
</el-form-item>
<div v-else>
{{row.invoicingTelephone}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanyscompanyBank> <template #contractAAuthorizedCompanyscompanyBank>
<el-table-column label="开户行" min-width="150"> <el-table-column label="开户行" min-width="150" prop="companyBank" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.companyBank`" :rules="formRules.companyBank" class="mb-0px!" v-if="!type">
<el-input v-model="row.companyBank" placeholder="请输入开户行" />
</el-form-item>
<div v-else>
{{row.companyBank}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanyscompanyAccount> <template #contractAAuthorizedCompanyscompanyAccount>
<el-table-column label="开户账号" min-width="150"> <el-table-column label="开户账号" min-width="150" prop="companyAccount" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.companyAccount`" :rules="formRules.companyAccount" class="mb-0px!" v-if="!type">
<el-input v-model="row.companyAccount" placeholder="请输入开户账号" />
</el-form-item>
<div v-else>
{{row.companyAccount}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanyscompanyAddress> <template #contractAAuthorizedCompanyscompanyAddress>
<el-table-column label="通讯地址" min-width="150"> <el-table-column label="通讯地址" min-width="150" prop="companyAddress" />
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.companyAddress`" :rules="formRules.companyAddress" class="mb-0px!" v-if="!type">
<el-input v-model="row.companyAddress" placeholder="请输入通讯地址" />
</el-form-item>
<div v-else>
{{row.companyAddress}}
</div>
</template>
</el-table-column>
</template> </template>
<template #contractAAuthorizedCompanysother2> <template #contractAAuthorizedCompanysother2>
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type"> <el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
@ -108,11 +45,15 @@
<el-button @click="handleAdd" round>+ 添加</el-button> <el-button @click="handleAdd" round>+ 添加</el-button>
</el-row> </el-row>
<CustomerCompany ref="formRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import * as ContractApi from '@/api/crm/contract' import * as ContractApi from '@/api/crm/contract'
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
import CustomerCompany from '@/components/relateCompany/index.vue'
const message = useMessage() //
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref([]) const formData = ref([])
const formRules = reactive({ const formRules = reactive({
@ -126,26 +67,37 @@ const formRules = reactive({
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
/** 查询列表 */
const getList = async (val) => {
// formData.value = val
let newList = []
val.forEach(v => {
newList.push({
customerName: v.companyName,
unifiedCreditCode: v.unifiedCreditCode,
invoicingAddress: v.invoicingAddress,
invoicingTelephone: v.invoicingTelephone,
companyBank: v.companyBank,
companyAccount: v.companyAccount,
companyAddress: v.companyAddress,
})
})
formData.value = newList
}
const contactRef = ref() // Ref const contactRef = ref() // Ref
/** 新增按钮操作 */ /** 新增按钮操作 */
const handleAdd = () => { const handleAdd = () => {
const row = { if(!props.customerId) return message.warning('请先选择客户')
unifiedCreditCode: undefined,
invoicingAddress: undefined, formRef.value.open(formData.value, props.customerId)
customerName: undefined,
invoicingTelephone: undefined,
companyBank: undefined,
companyAddress: undefined,
companyAccount: undefined
}
row.contractId = props.contractId
formData.value.push(row)
} }
const props = defineProps<{ const props = defineProps<{
data: undefined, data: undefined,
type: undefined, type: undefined,
customerId: undefined,
formFields: {} formFields: {}
}>() }>()

View File

@ -67,7 +67,7 @@
</el-table-column> </el-table-column>
</template> </template>
<template #productsbasicServiceFee> <template #productsbasicServiceFee>
<el-table-column label="基础服务费(元)" min-width="130"> <el-table-column label="基础服务费" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!">
<!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> --> <!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
@ -77,7 +77,7 @@
</el-table-column> </el-table-column>
</template> </template>
<template #productsadvancePaymentServiceFee> <template #productsadvancePaymentServiceFee>
<el-table-column label="垫资服务费(元)" min-width="140"> <el-table-column label="垫资服务费" min-width="140">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!"> <el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!">
<!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> --> <!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
@ -87,7 +87,7 @@
</el-table-column> </el-table-column>
</template> </template>
<template #productsbookingPaymentServiceFee> <template #productsbookingPaymentServiceFee>
<el-table-column label="代订服务费(元)" min-width="130"> <el-table-column label="代订服务费" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
{{row.bookingPaymentServiceFee}} {{row.bookingPaymentServiceFee}}
@ -96,7 +96,7 @@
</el-table-column> </el-table-column>
</template> </template>
<template #productsbillSortingServiceFee> <template #productsbillSortingServiceFee>
<el-table-column label="票据分拣服务费(元)" min-width="130"> <el-table-column label="票据分拣服务费" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
{{row.billSortingServiceFee}} {{row.billSortingServiceFee}}
@ -105,7 +105,7 @@
</el-table-column> </el-table-column>
</template> </template>
<template #productstotalServiceFee> <template #productstotalServiceFee>
<el-table-column label="服务费收入合计(元)" min-width="130"> <el-table-column label="服务费收入合计" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
{{row.totalServiceFee}} {{row.totalServiceFee}}

View File

@ -272,6 +272,20 @@
</ContentWrap> </ContentWrap>
</el-col> </el-col>
</template> </template>
<template #partnerType>
<el-col :span="8">
<el-form-item label="合作类型" prop="partnerType">
<el-select v-model="formData.partnerType" disabled clearable placeholder="请选择合作类型">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE1)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</template>
<template #partnerCompanyId> <template #partnerCompanyId>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="合作主体" prop="partnerCompanyId"> <el-form-item label="合作主体" prop="partnerCompanyId">
@ -397,6 +411,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</template> </template>
<template #contractTerm>
<el-col :span="8">
<el-form-item label="合同期限(月)" prop="contractTerm">
<el-input v-model="formData.contractTerm" :disabled="formFields.contractTerm !== 2 || isTrue" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="" />
</el-form-item>
</el-col>
</template>
<template #endTime> <template #endTime>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="合同结束时间" prop="endTime"> <el-form-item label="合同结束时间" prop="endTime">
@ -411,13 +432,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</template> </template>
<template #contractTerm>
<el-col :span="8">
<el-form-item label="合同期限(月)" prop="contractTerm">
<el-input v-model="formData.contractTerm" :disabled="formFields.contractTerm !== 2 || isTrue" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="" />
</el-form-item>
</el-col>
</template>
<template #statementDate> <template #statementDate>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="账单日" prop="statementDate"> <el-form-item label="账单日" prop="statementDate">
@ -607,9 +622,11 @@
<!-- 子表的表单 --> <!-- 子表的表单 -->
<el-col :span="24">
<ContentWrap style="border: none;font-weight:700"> <ContentWrap style="border: none;font-weight:700">
产品清单 产品清单
</ContentWrap> </ContentWrap>
</el-col>
<ContentWrap> <ContentWrap>
<ContractProductForm <ContractProductForm
:type="1" :type="1"
@ -704,6 +721,7 @@ const formFields = ref({
socialEmployeeNum: 1, socialEmployeeNum: 1,
registeredAddress: 1, registeredAddress: 1,
other2: 1, other2: 1,
partnerType: 1,
partnerCompanyId: 1, partnerCompanyId: 1,
bankName: 1, bankName: 1,
bankAccount: 1, bankAccount: 1,
@ -713,8 +731,8 @@ const formFields = ref({
other3: 1, other3: 1,
contractType: 1, contractType: 1,
startTime: 1, startTime: 1,
endTime: 1,
contractTerm: 1, contractTerm: 1,
endTime: 1,
statementDate: 1, statementDate: 1,
lastPayDate: 1, lastPayDate: 1,
penaltyRate: 1, penaltyRate: 1,

View File

@ -29,6 +29,17 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item>
<el-form-item label="合作类型" prop="partnerType">
<el-select v-model="queryParams.partnerType" clearable placeholder="请选择合作类型">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE1)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"> <el-button @click="handleQuery">
@ -73,7 +84,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="合同编号" prop="no" width="180" /> <el-table-column align="center" label="合同编号" prop="no" width="180" />
<el-table-column align="center" label="客户名称" prop="customerName" width="120"> <el-table-column align="center" label="客户名称" prop="customerName" width="150">
<!-- <template #default="scope"> <!-- <template #default="scope">
<el-link <el-link
:underline="false" :underline="false"
@ -84,6 +95,11 @@
</el-link> </el-link>
</template> --> </template> -->
</el-table-column> </el-table-column>
<el-table-column label="合作类型" align="center" prop="partnerType" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.CRM_PARTNER_TYPE1" :value="scope.row.partnerType" />
</template>
</el-table-column>
<!-- <el-table-column align="center" label="商机名称" prop="businessName" width="130"> <!-- <el-table-column align="center" label="商机名称" prop="businessName" width="130">
<template #default="scope"> <template #default="scope">
<el-link <el-link
@ -161,7 +177,6 @@
prop="contactLastTime" prop="contactLastTime"
width="180px" width="180px"
/>--> />-->
<el-table-column align="center" label="负责人" prop="ownerUserName" width="120" />
<el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" /> <el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" />
<el-table-column <el-table-column
:formatter="dateFormatter" :formatter="dateFormatter"
@ -224,7 +239,6 @@
<el-button <el-button
v-if="scope.row.auditStatus !== 0" v-if="scope.row.auditStatus !== 0"
link link
v-hasPermi="['crm:customer-suggestion:query']"
type="primary" type="primary"
@click="handleProcessDetail(scope.row)" @click="handleProcessDetail(scope.row)"
> >
@ -315,11 +329,11 @@ import download from '@/utils/download'
import FileTemplateForm from './templateForm.vue' import FileTemplateForm from './templateForm.vue'
import ContractUpload from './contractUpload.vue' import ContractUpload from './contractUpload.vue'
import * as ContractApi from '@/api/crm/contract' import * as ContractApi from '@/api/crm/contract'
import { DICT_TYPE } from '@/utils/dict'
import { erpPriceInputFormatter, erpPriceTableColumnFormatter } from '@/utils' import { erpPriceInputFormatter, erpPriceTableColumnFormatter } from '@/utils'
import * as CustomerApi from '@/api/crm/customer' import * as CustomerApi from '@/api/crm/customer'
import { checkPermi } from '@/utils/permission' import { checkPermi } from '@/utils/permission'
import { TabsPaneContext } from 'element-plus' import { TabsPaneContext } from 'element-plus'
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
defineOptions({ name: 'CrmContract' }) defineOptions({ name: 'CrmContract' })
@ -334,6 +348,7 @@ const list = ref([]) // 列表的数据
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
partnerType: null,
sceneType: '1', // activeName sceneType: '1', // activeName
name: null, name: null,
customerId: null, customerId: null,

View File

@ -15,7 +15,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="单位名称" prop="companyName"> <el-form-item label="单位名称" prop="customerName">
<el-input v-model="formData.companyName" placeholder="请输入单位名称" /> <el-input v-model="formData.companyName" placeholder="请输入单位名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -8,10 +8,10 @@
label-width="120px" label-width="120px"
v-loading="formLoading" v-loading="formLoading"
> >
<template #customerId> <template #customerName>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="客户名称" prop="customerId"> <el-form-item label="客户名称" prop="customerName">
<SelectComponent :customerList="customerList" :disabled="formFields.customerId !== 2 || isTrue" placeholder="请选择客户名称" v-model="formData.customerId" /> <el-input v-model="formData.customerName" :disabled="formFields.mobile !== 2 || isTrue" placeholder="请输入联系电话" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</template> </template>
@ -215,7 +215,7 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formType = ref('') // create - update - const formType = ref('') // create - update -
const formFields = ref({ const formFields = ref({
customerId: 1, customerName: 1,
deptId: 1, deptId: 1,
contactId: 1, contactId: 1,
mobile: 1, mobile: 1,
@ -231,7 +231,7 @@ const formFields = ref({
}) })
const formData = ref({ const formData = ref({
id: undefined, id: undefined,
customerId: undefined, customerName: undefined,
contactId: undefined, contactId: undefined,
mobile: undefined, mobile: undefined,
email: undefined, email: undefined,
@ -319,7 +319,7 @@ const goBack = ()=> {
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
id: undefined, id: undefined,
customerId: undefined, customerName: undefined,
contactId: undefined, contactId: undefined,
mobile: undefined, mobile: undefined,
email: undefined, email: undefined,

View File

@ -1,6 +1,6 @@
<template> <template>
<ContentWrap class="mt-10px print-container" id="printBox"> <ContentWrap class="mt-10px print-container" id="printBox">
<!-- <button v-print="print"></button> --> <button v-print="print"></button>
<processForm <processForm
ref="formRef" ref="formRef"
@ -382,10 +382,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</template> </template>
<template #creditCalcCycle> <!-- <template #creditCalcCycle>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="授信计算周期" prop="creditCalcCycle"> <el-form-item label="授信计算周期" prop="creditCalcCycle">
<el-input v-model="formData.creditCalcCycle" disabled placeholder="" /> <el-input v-model="formData.creditCalcCycle" disabled placeholder="" /> -->
<!-- <el-select v-model="formData.creditCalcCycle" placeholder="" disabled > <!-- <el-select v-model="formData.creditCalcCycle" placeholder="" disabled >
<el-option <el-option
v-for="dict in getIntDictOptions('credit_calc_cycle')" v-for="dict in getIntDictOptions('credit_calc_cycle')"
@ -394,9 +394,9 @@
:value="dict.value" :value="dict.value"
/> />
</el-select> --> </el-select> -->
</el-form-item> <!-- </el-form-item>
</el-col> </el-col>
</template> </template> -->
<!-- <template #invoiceTemplateId> <!-- <template #invoiceTemplateId>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="票据模板" prop="invoiceTemplateId"> <el-form-item label="票据模板" prop="invoiceTemplateId">
@ -588,6 +588,8 @@ const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显
creditLimit1: 1, creditLimit1: 1,
serviceFeeCollectionMethodId: 1, serviceFeeCollectionMethodId: 1,
onlinePrice: 1, onlinePrice: 1,
statementDate: 1,
lastPayDate: 1,
totalPrice: 1, totalPrice: 1,
productsother: 1, productsother: 1,
productscategory: 1, productscategory: 1,

View File

@ -32,7 +32,7 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="系统授信额度" prop="customerId"> <el-form-item label="系统授信额度" prop="customerId">
<el-input v-model="formData.creditAmount" disabled placeholder="自动获取" /> <el-input v-model="formData.creditAmount" maxlength="10" disabled placeholder="自动获取" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -59,7 +59,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="合作类型" prop="cooperationType"> <el-form-item label="公司类型" prop="cooperationType">
<el-select v-model="formData.cooperationType" disabled filterable clearable placeholder="" class="w-1/1"> <el-select v-model="formData.cooperationType" disabled filterable clearable placeholder="" class="w-1/1">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_COOPERATION_TYPE)" v-for="dict in getIntDictOptions(DICT_TYPE.CRM_COOPERATION_TYPE)"
@ -252,7 +252,19 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="拓展人" prop="clueDeveloper"> <el-form-item label="拓展人" prop="clueDeveloper">
<el-select v-model="formData.clueDeveloper" disabled placeholder="请选择拓展人"> <el-select v-model="formData.clueDeveloper" disabled placeholder="">
<el-option
v-for="dict in userOptions"
:key="dict.id"
:label="dict.nickname"
:value="dict.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维护人" prop="maintainer">
<el-select v-model="formData.maintainer" disabled placeholder="">
<el-option <el-option
v-for="dict in userOptions" v-for="dict in userOptions"
:key="dict.id" :key="dict.id"
@ -326,9 +338,9 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="授信计算周期" prop=""> <el-form-item label="授信计算周期" prop="">
<el-input v-model="formData.creditCalcCycle" disabled placeholder="" /> <el-input v-model="formData.creditCalcCycle" disabled placeholder="" /> -->
<!-- <el-select v-model="formData.creditCalcCycle" placeholder="请选择授信计算周期"> <!-- <el-select v-model="formData.creditCalcCycle" placeholder="请选择授信计算周期">
<el-option <el-option
v-for="dict in getIntDictOptions('credit_calc_cycle')" v-for="dict in getIntDictOptions('credit_calc_cycle')"
@ -337,8 +349,8 @@
:value="dict.value" :value="dict.value"
/> />
</el-select> --> </el-select> -->
</el-form-item> <!-- </el-form-item>
</el-col> </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="基础服务费合计" prop="onlinePrice"> <el-form-item label="基础服务费合计" prop="onlinePrice">
<el-input <el-input
@ -354,6 +366,30 @@
<el-input v-model="formData.quotationTimes" disabled placeholder="请输入报价次数" /> <el-input v-model="formData.quotationTimes" disabled placeholder="请输入报价次数" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="账单日" prop="statementDate">
<el-select v-model="formData.statementDate" placeholder="请选择账单日" >
<el-option
v-for="(dict, index) in statement"
:key="index"
:label="index + 1"
:value="index + 1"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="最晚付款日" prop="lastPayDate">
<el-select v-model="formData.lastPayDate" placeholder="请选择最晚付款日" >
<el-option
v-for="(dict, index) in statement"
:key="index"
:label="index + 1"
:value="index + 1"
/>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="票据模板" prop="invoiceTemplateId"> <el-form-item label="票据模板" prop="invoiceTemplateId">
<el-select v-model="formData.invoiceTemplateId" :disabled="!formData.businessId" @change="changeTemplate" placeholder="请选择票据模板"> <el-select v-model="formData.invoiceTemplateId" :disabled="!formData.businessId" @change="changeTemplate" placeholder="请选择票据模板">
@ -367,7 +403,7 @@
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
<el-col :span="24"> <el-col :span="24">
<ContentWrap style="border: none; font-weight: 700">需求信息</ContentWrap> <ContentWrap style="border: none; font-weight: 700">服务费收取方式</ContentWrap>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -460,6 +496,7 @@ const serviceDesc = ref({
2: '按订单总金额乘以比例收取服务费用', 2: '按订单总金额乘以比例收取服务费用',
3: '' 3: ''
}) })
const statement = ref(new Array(31).fill(null))
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
const customerList = ref([]) // const customerList = ref([]) //
@ -592,6 +629,7 @@ const formData = ref({
creditAmount: undefined, creditAmount: undefined,
creditLimitNum: undefined, creditLimitNum: undefined,
quotationTimes:undefined, quotationTimes:undefined,
maintainer: undefined
}) })
const formRules = reactive({ const formRules = reactive({
no: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }], no: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }],
@ -633,7 +671,6 @@ watch(
for (const product of newProducts) { for (const product of newProducts) {
if (typeof product.basicServiceFee) { if (typeof product.basicServiceFee) {
console.log('%csrc/views/crm/quotation/QuotationForm.vue:537 object', 'color: pink;', product.basicServiceFee);
totalOnlinePrice += Number(product.basicServiceFee || null); totalOnlinePrice += Number(product.basicServiceFee || null);
} }
if (typeof product.totalServiceFee) { if (typeof product.totalServiceFee) {
@ -669,7 +706,7 @@ const changeQuotation = (val) => {
} }
const changeQuotationTimes = async(val) => { const changeQuotationTimes = async(val) => {
console.log('%csrc/views/crm/quotation/QuotationForm.vue:671 3333', 'color: #007acc;', 3333);
if(formData.value.serviceFeeCollectionMethodId && formData.value.businessId) { if(formData.value.serviceFeeCollectionMethodId && formData.value.businessId) {
newProducts.value = [] newProducts.value = []
formData.value.products.forEach( item => { formData.value.products.forEach( item => {
@ -690,6 +727,10 @@ const changeQuotationTimes = async(val) => {
} }
let num = await QuotationApi.getServerFee(data) let num = await QuotationApi.getServerFee(data)
num.quotationProducts.forEach( v => {
v.productUnit = v.serviceFeeVO.unit
})
console.log('%csrc/views/crm/quotation/QuotationForm.vue:695 num.', 'color: #007acc;', num.quotationProducts);
formData.value.QuotationTimes = num.quotationProducts formData.value.QuotationTimes = num.quotationProducts
} }
} }
@ -744,6 +785,7 @@ const onBusinessChange = async (businessId: string) => {
// formData.value.deptId = res.deptId; // formData.value.deptId = res.deptId;
formData.value.offlinePrice = res.offlinePrice; formData.value.offlinePrice = res.offlinePrice;
formData.value.clueDeveloper = res.clueDeveloper formData.value.clueDeveloper = res.clueDeveloper
formData.value.maintainer = res.maintainer
// formData.value.onlinePrice = res.onlinePrice || ''; // formData.value.onlinePrice = res.onlinePrice || '';
// formData.value.totalPrice = res.totalPrice || ''; // formData.value.totalPrice = res.totalPrice || '';
formData.value.creditAmount = res.creditAmount; formData.value.creditAmount = res.creditAmount;
@ -832,6 +874,7 @@ const open = async (type: string) => {
formData.value = await QuotationApi.getQuotation(type) formData.value = await QuotationApi.getQuotation(type)
formData.value.creditLimit = (formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0) formData.value.creditLimit = (formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)
formData.value.serviceFeeCollectionMethodId = Number(formData.value.serviceFeeCollectionMethodId) formData.value.serviceFeeCollectionMethodId = Number(formData.value.serviceFeeCollectionMethodId)
if(formData.value.partnerType) changePartnerType(formData.value.partnerType)
} finally { } finally {
formLoading.value = false formLoading.value = false

View File

@ -19,82 +19,72 @@
</el-table-column> --> </el-table-column> -->
<!-- </template> --> <!-- </template> -->
<template #productscategory> <template #productscategory>
<el-table-column label="产品类型" align="center" min-width="100"> <el-table-column label="产品类型" align="center" min-width="96">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsdetailType> <template #productsdetailType>
<el-table-column label="产品明细类型" align="center" min-width="190"> <el-table-column label="产品明细类型" align="center" min-width="150">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsproductUnit> <template #productsproductUnit>
<el-table-column label="产品单位" align="center" min-width="150"> <el-table-column label="产品单位" align="center" min-width="100">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsbasicServiceFee> <template #productsbasicServiceFee>
<el-table-column label="基础服务费(元)" min-width="130"> <el-table-column label="基础服务费" align="center" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row }">
<el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!">
<!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> --> <!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
{{row.basicServiceFee}} {{row.basicServiceFee}}
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsadvancePaymentServiceFee> <template #productsadvancePaymentServiceFee>
<el-table-column label="垫资服务费(元)" min-width="140"> <el-table-column label="垫资服务费" align="center" min-width="140">
<template #default="{ row, $index }"> <template #default="{ row }">
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.offlinePrice" class="mb-0px!">
<!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> --> <!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
{{row.advancePaymentServiceFee}} {{row.advancePaymentServiceFee}}
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsbookingPaymentServiceFee> <template #productsbookingPaymentServiceFee>
<el-table-column label="代订服务费(元)" min-width="130"> <el-table-column label="代订服务费" align="center" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row }">
<el-form-item :prop="`${$index}.bookingPaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
{{row.bookingPaymentServiceFee}} {{row.bookingPaymentServiceFee}}
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsbillSortingServiceFee> <template #productsbillSortingServiceFee>
<el-table-column label="票据分拣服务费(元)" min-width="130"> <el-table-column label="票据分拣服务费" align="center" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row }">
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
{{row.billSortingServiceFee}} {{row.billSortingServiceFee}}
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productstotalServiceFee> <template #productstotalServiceFee>
<el-table-column label="服务费收入合计(元)" min-width="130"> <el-table-column label="服务费收入合计" align="center" min-width="130">
<template #default="{ row, $index }"> <template #default="{ row }">
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
{{row.totalServiceFee}} {{row.totalServiceFee}}
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsproductInvoice> <template #productsproductInvoice>
<el-table-column label="产品票据" align="center" min-width="150"> <el-table-column label="产品票据" align="center" min-width="110">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template #productsproductInvoiceItem> <template #productsproductInvoiceItem>
<el-table-column label="产品开具项目" align="center" min-width="250"> <el-table-column label="产品开具项目" align="center" min-width="170">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
@ -109,7 +99,7 @@
</el-table-column> </el-table-column>
</template> </template>
<template #productsserviceInvoiceItem> <template #productsserviceInvoiceItem>
<el-table-column label="服务开具项目" align="center" min-width="250"> <el-table-column label="服务开具项目" align="center" min-width="170">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" /> <dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" />
</template> </template>

View File

@ -35,7 +35,7 @@
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="基础服务费(元)" min-width="160"> <el-table-column label="基础服务费" min-width="160">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!">
<!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> --> <!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
@ -44,7 +44,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="垫资服务费(元)" min-width="160"> <el-table-column label="垫资服务费" min-width="160">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!"> <el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!">
<!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> --> <!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
@ -52,21 +52,21 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="代订服务费(元)" min-width="160"> <el-table-column label="代订服务费" min-width="160">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
{{row.bookingPaymentServiceFee}} {{row.bookingPaymentServiceFee}}
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="票据分拣服务费(元)" min-width="172"> <el-table-column label="票据分拣服务费" min-width="172">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
{{row.billSortingServiceFee}} {{row.billSortingServiceFee}}
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="服务费收入合计(元)" min-width="172"> <el-table-column label="服务费收入合计" min-width="172">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!"> <el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
{{row.totalServiceFee}} {{row.totalServiceFee}}
@ -290,6 +290,7 @@ watch(
foundItem.bookingPaymentServiceFee = data.serviceFeeVO.bookingPaymentServiceFee foundItem.bookingPaymentServiceFee = data.serviceFeeVO.bookingPaymentServiceFee
foundItem.billSortingServiceFee = data.serviceFeeVO.billSortingServiceFee foundItem.billSortingServiceFee = data.serviceFeeVO.billSortingServiceFee
foundItem.totalServiceFee = data.serviceFeeVO.totalServiceFee foundItem.totalServiceFee = data.serviceFeeVO.totalServiceFee
foundItem.productUnit = data.productUnit
} }
} }
// formData.value = data // formData.value = data

View File

@ -150,12 +150,12 @@
</template> --> </template> -->
</el-table-column> </el-table-column>
<el-table-column label="拓展人" align="center" prop="clueDeveloperName"> <el-table-column label="拓展人" align="center" prop="clueDeveloperName" width="120">
<!-- <template #default="scope"> <!-- <template #default="scope">
{{getName(userOptions, scope.row.expandingUserId)}} {{getName(userOptions, scope.row.expandingUserId)}}
</template> --> </template> -->
</el-table-column> </el-table-column>
<el-table-column label="维护人" align="center" prop="maintainerName"> <el-table-column label="维护人" align="center" prop="maintainerName" width="120">
<!-- <template #default="scope"> <!-- <template #default="scope">
{{getName(userOptions, scope.row.maintenanceUserId)}} {{getName(userOptions, scope.row.maintenanceUserId)}}
@ -242,7 +242,6 @@
link link
type="primary" type="primary"
@click="handleProcessDetail(scope.row)" @click="handleProcessDetail(scope.row)"
v-hasPermi="['crm:customer-suggestion:query']"
v-if="scope.row.auditStatus != 0" v-if="scope.row.auditStatus != 0"
> >
进度 进度
@ -298,7 +297,7 @@
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
command="handleProcessDetail" command="handleProcessDetail"
v-if="checkPermi(['crm:customer-suggestion:query']) && scope.row.auditStatus == 1" v-if="scope.row.auditStatus == 1"
> >
进度 进度
</el-dropdown-item> </el-dropdown-item>