样式调整
parent
3df2e03cba
commit
efd3c8d3f1
|
|
@ -19,7 +19,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="产品明细" align="center" prop="detailType" width="240">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!" v-if="!disabled">
|
||||
<el-select v-model="row.detailType" placeholder="请选择状态" >
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE)"
|
||||
|
|
@ -29,6 +29,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" align="center" min-width="80">
|
||||
|
|
@ -38,34 +39,32 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="线上价格(元)" fixed="right" min-width="100">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" :rules="formRules.onlinePrice" class="mb-0px!">
|
||||
<el-input-number
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" :rules="formRules.onlinePrice" class="mb-0px!" v-if="!disabled">
|
||||
<el-input
|
||||
v-model="row.onlinePrice"
|
||||
controls-position="right"
|
||||
:min="0.001"
|
||||
:precision="2"
|
||||
oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)"
|
||||
class="!w-100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<div v-else>{{row.onlinePrice}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="线下价格(元)" fixed="right" min-width="100">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!">
|
||||
<el-input-number
|
||||
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!" v-if="!disabled">
|
||||
<el-input
|
||||
v-model="row.offlinePrice"
|
||||
controls-position="right"
|
||||
:min="0.001"
|
||||
:precision="2"
|
||||
oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)"
|
||||
class="!w-100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<div v-else>{{row.offlinePrice}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合计(元)" prop="totalPrice" fixed="right" min-width="100">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.totalPrice`" class="mb-0px!">
|
||||
<el-input disabled v-model="row.totalPrice" :formatter="erpPriceInputFormatter" />
|
||||
{{row.totalPrice}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
v-loading="formLoading"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="120px"
|
||||
label-width="151px"
|
||||
>
|
||||
<ContentWrap style="border: none;font-weight: 700">
|
||||
基础信息
|
||||
|
|
@ -21,6 +21,22 @@
|
|||
<el-input v-model="formData.no" placeholder="请输入合同编号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contactList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报价单编号" prop="quotationId">
|
||||
<el-select
|
||||
|
|
@ -38,23 +54,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
disabled=""
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contactList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="方案签约人" prop="pricingUserId">
|
||||
<el-select
|
||||
|
|
@ -117,18 +117,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
||||
<el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
|
||||
<el-option
|
||||
v-for="dict in templateOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.name"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
|
|
@ -161,6 +150,18 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
||||
<el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
|
||||
<el-option
|
||||
v-for="dict in templateOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.name"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
|
|
@ -170,14 +171,19 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="甲方名称" prop="partyName">
|
||||
<el-select v-model="formData.partyName" disabled placeholder="">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions('payment_term')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
disabled=""
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contactList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
|
|
@ -200,11 +206,11 @@
|
|||
<el-input v-model="formData.regType" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-form-item label="融资信息" prop="financingInfo">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="融资信息" prop="financingInfo">
|
||||
<el-input v-model="formData.financingInfo" placeholder="融资信息" disabled />
|
||||
</el-form-item> -->
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="actualCapital">
|
||||
<el-input v-model="formData.actualCapital" placeholder="" disabled />
|
||||
|
|
@ -215,11 +221,11 @@
|
|||
<el-input v-model="formData.socialEmployeeNum" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-form-item label="上市情况" prop="listingStatus">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="上市情况" prop="listingStatus">
|
||||
<el-input v-model="formData.listingStatus" placeholder="上市情况" disabled />
|
||||
</el-form-item> -->
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="注册地址" prop="registeredAddress">
|
||||
<el-input v-model="formData.registeredAddress" placeholder="" disabled />
|
||||
|
|
@ -367,13 +373,13 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="违约金比例" prop="penaltyRate">
|
||||
<el-input v-model="formData.penaltyRate" placeholder="请输入违约金比例" />
|
||||
<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" placeholder="请输入延期付款利率" />
|
||||
<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">
|
||||
|
|
@ -819,6 +825,7 @@ onMounted(async () => {
|
|||
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||
// 获得用户列表
|
||||
userOptions.value = await UserApi.getSimpleUserList()
|
||||
console.log('%csrc/views/crm/contract/ContractForm.vue:827 userOptions.value', 'color: #007acc;', userOptions.value);
|
||||
// 获得报价列表
|
||||
quotationList.value = await QuotationApi.getSelfSimpleQuotationList()
|
||||
|
||||
|
|
@ -843,5 +850,7 @@ onMounted(async () => {
|
|||
pageSize: 1000
|
||||
})
|
||||
orgList.value = data.list
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -11,51 +11,72 @@
|
|||
<el-table-column label="序号" type="index" width="100" />
|
||||
<el-table-column label="单位名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.customerName`" :rules="formRules.customerName" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column label="统一社会信用代码" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.unifiedCreditCode`" :rules="formRules.unifiedCreditCode" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column label="开票地址" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.invoicingAddress`" :rules="formRules.invoicingAddress" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column label="开票电话" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.invoicingTelephone`" :rules="formRules.invoicingTelephone" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column label="开户行" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.companyBank`" :rules="formRules.companyBank" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column label="开户账号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.companyAccount`" :rules="formRules.companyAccount" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column label="通讯地址" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.companyAddress`" :rules="formRules.companyAddress" class="mb-0px!">
|
||||
<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>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
|
|
@ -77,13 +98,13 @@ import { propTypes } from '@/utils/propTypes'
|
|||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
const formRules = reactive({
|
||||
// contractId: [{ required: true, message: '合同ID不能为空', trigger: 'blur' }],
|
||||
// customerName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
|
||||
// unifiedCreditCode: [{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }],
|
||||
// invoicingAddress: [{ required: true, message: '开票地址不能为空', trigger: 'blur' }],
|
||||
// invoicingTelephone: [{ required: true, message: '开票电话不能为空', trigger: 'blur' }],
|
||||
// companyBank: [{ required: true, message: '开户行不能为空', trigger: 'blur' }],
|
||||
// companyAccount: [{ required: true, message: '开户账号不能为空', trigger: 'blur' }]
|
||||
contractId: [{ required: true, message: '合同ID不能为空', trigger: 'blur' }],
|
||||
customerName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
|
||||
unifiedCreditCode: [{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }],
|
||||
invoicingAddress: [{ required: true, message: '开票地址不能为空', trigger: 'blur' }],
|
||||
invoicingTelephone: [{ required: true, message: '开票电话不能为空', trigger: 'blur' }],
|
||||
companyBank: [{ required: true, message: '开户行不能为空', trigger: 'blur' }],
|
||||
companyAccount: [{ required: true, message: '开户账号不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,12 @@
|
|||
<el-table-column label="序号" type="index" width="100" />
|
||||
<el-table-column label="授权人姓名" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.customerContactId`" :rules="formRules.customerContactId" class="mb-0px!">
|
||||
<el-input v-model="row.customerContactId" placeholder="请输入客户联系人ID" />
|
||||
<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>
|
||||
<!-- <el-table-column label="姓名" min-width="150">
|
||||
|
|
@ -25,7 +28,7 @@
|
|||
</el-table-column> -->
|
||||
<el-table-column label="授权人类型" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.authPersonType`" :rules="formRules.authPersonType" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.authPersonType`" :rules="formRules.authPersonType" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.authPersonType" placeholder="请选择授权人类型">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('auth_person_type')"
|
||||
|
|
@ -35,34 +38,49 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{getName(getIntDictOptions('auth_person_type'), row.authPersonType)}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="授权人手机号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.phoneNumber`" :rules="formRules.phoneNumber" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.phoneNumber`" :rules="formRules.phoneNumber" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.phoneNumber" placeholder="请输入手机号" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.phoneNumber}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="微信号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.wechat`" :rules="formRules.wechat" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.wechat`" :rules="formRules.wechat" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.wechat" placeholder="请输入微信号" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.wechat}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="身份证号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.idNumber`" :rules="formRules.idNumber" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.idNumber`" :rules="formRules.idNumber" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.idNumber" placeholder="请输入身份证号" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.idNumber}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="电子邮箱" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.email`" :rules="formRules.email" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.email`" :rules="formRules.email" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.email" placeholder="请输入电子邮箱" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.email}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
|
|
@ -92,9 +110,25 @@ const formLoading = ref(false) // 表单的加载中
|
|||
const formData = ref([])
|
||||
const formRules = reactive({
|
||||
contractId: [{ required: true, message: '合同ID不能为空', trigger: 'blur' }],
|
||||
customerContactId: [{ required: true, message: '客户联系人ID不能为空', trigger: 'blur' }],
|
||||
authPersonType: [{ required: true, message: '授权人类型不能为空', trigger: 'blur' }],
|
||||
customerName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
||||
phoneNumber: [{ required: true, message: '手机号不能为空', trigger: 'blur' }]
|
||||
phoneNumber: [{ required: true, message: '手机号不能为空', trigger: 'blur' } ,
|
||||
{pattern: /^(1[3-9][0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/, message: '请输入正确手机号'}
|
||||
],
|
||||
idNumber: [{ required: true, message: '身份证号不能为空', trigger: 'blur' } ,
|
||||
{
|
||||
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
|
||||
message: "身份证号格式不正确",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
email: [{ required: true, message: '电子邮箱不能为空', trigger: 'blur' } ,
|
||||
{
|
||||
pattern:
|
||||
/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})$/,
|
||||
message: "请输入正确的电子邮箱",
|
||||
}
|
||||
]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -138,7 +172,6 @@ watch(
|
|||
const message = useMessage() // 消息弹窗
|
||||
const contactRef = ref() // 表单 Ref
|
||||
const handleAdd = () => {
|
||||
console.log('%csrc/views/crm/contract/components/ContractAAuthorizedPersonForm.vue:140 props.customerId', 'color: #007acc;', props.customerId);
|
||||
if(!props.customerId) {
|
||||
return message.warning('请先选择报价单')
|
||||
}
|
||||
|
|
@ -154,11 +187,8 @@ const getList = (val: []) => {
|
|||
if(!formData.value.some(v => v.id === item.id)) {
|
||||
val.forEach(item => {
|
||||
formData.value.push({
|
||||
"name": item.name,
|
||||
"postId": item.post,
|
||||
"userRank": item.userRank,
|
||||
"customerName": item.name,
|
||||
"phoneNumber": item.mobile,
|
||||
"authDesc": item.authDesc,
|
||||
"wechat":item. wechat,
|
||||
"email":item. email,
|
||||
"id": item.id
|
||||
|
|
@ -186,4 +216,9 @@ const getData = () => {
|
|||
}
|
||||
|
||||
defineExpose({ validate, getData })
|
||||
|
||||
const getName = (opt, val) => {
|
||||
const arr = opt.filter(v => v.value == val)
|
||||
return arr.length ? arr[0]['label'] : ''
|
||||
}
|
||||
</script>
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
</el-table-column> -->
|
||||
<el-table-column label="类别" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.authType`" :rules="formRules.authType" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.authType`" :rules="formRules.authType" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.authType" placeholder="请选择类别">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('auth_type')"
|
||||
|
|
@ -28,11 +28,14 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{getName(getIntDictOptions('auth_type'), row.authType, 'value', 'label')}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.userId`" :rules="formRules.name" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.userId`" :rules="formRules.name" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.userId" placeholder="请选择售后维护人" @change="changeUser($index, row.userId)">
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
|
|
@ -42,49 +45,69 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{getName(userOptions, row.userId, 'id', 'nickname')}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="岗位" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.postId`" :rules="formRules.postId" class="mb-0px!">
|
||||
<el-input v-model="row.postId" placeholder="请输入岗位" />
|
||||
<el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.deptName" placeholder="请输入岗位" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.deptName}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="职级" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.userRank`" :rules="formRules.userRank" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.userRank`" :rules="formRules.userRank" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.userRank" placeholder="请输入职级" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.userRank}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="权限说明" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.authDesc`" :rules="formRules.authDesc" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.authDesc`" :rules="formRules.authDesc" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.authDesc" placeholder="请输入权限说明" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.authDesc}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="手机号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.phoneNumber`" :rules="formRules.phoneNumber" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.phoneNumber`" :rules="formRules.phoneNumber" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.phoneNumber" placeholder="请输入手机号" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.phoneNumber}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="微信号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.wechat`" :rules="formRules.wechat" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.wechat`" :rules="formRules.wechat" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.wechat" placeholder="请输入微信号" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.wechat}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="电子邮箱" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.email`" :rules="formRules.email" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.email`" :rules="formRules.email" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.email" placeholder="请输入电子邮箱" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.email}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
|
|
@ -116,7 +139,15 @@ const formRules = reactive({
|
|||
contractId: [{ required: true, message: '合同ID不能为空', trigger: 'blur' }],
|
||||
userId: [{ required: true, message: '用户ID不能为空', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
||||
phoneNumber: [{ required: true, message: '手机号不能为空', trigger: 'blur' }]
|
||||
phoneNumber: [{ required: true, message: '手机号不能为空', trigger: 'blur' } ,
|
||||
{pattern: /^(1[3-9][0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/, message: '请输入正确手机号'}],
|
||||
email: [{ required: true, message: '电子邮箱不能为空', trigger: 'blur' } ,
|
||||
{
|
||||
pattern:
|
||||
/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})$/,
|
||||
message: "请输入正确的电子邮箱",
|
||||
}
|
||||
]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -132,7 +163,13 @@ watch(
|
|||
}
|
||||
try {
|
||||
formLoading.value = true
|
||||
formData.value = await ContractApi.getContractBAuthorizedPersonListByContractId(val)
|
||||
let data = await ContractApi.getContractBAuthorizedPersonListByContractId(val)
|
||||
// console.log('%csrc/views/crm/contract/components/ContractBAuthorizedPersonForm.vue:159 props.userOptions', 'color: #007acc;', props.userOptions);
|
||||
// data.forEach( item => {
|
||||
// item.userName = getName(props.userOptions, item.userId, 'id', 'nickname')
|
||||
|
||||
// })
|
||||
formData.value = data
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
|
@ -148,7 +185,7 @@ const handleAdd = () => {
|
|||
userId: undefined,
|
||||
name: undefined,
|
||||
authType: undefined,
|
||||
postId: undefined,
|
||||
deptName: undefined,
|
||||
userRank: undefined,
|
||||
authDesc: undefined,
|
||||
phoneNumber: undefined,
|
||||
|
|
@ -167,11 +204,11 @@ const contactRef = ref() // 表单 Ref
|
|||
// contactRef.value.open(formData.value, props.customerId)
|
||||
// }
|
||||
const changeUser = (i, val) => {
|
||||
console.log('%csrc/views/crm/contract/components/ContractBAuthorizedPersonForm.vue:170 i,val', 'color: #007acc;',props.userOptions.filter(v => v.id === val), i,val);
|
||||
let arr = props.userOptions.filter(v => v.id === val)
|
||||
if(arr.length) {
|
||||
formData.value[i].name = arr[0].nickname
|
||||
formData.value[i].postId = arr[0].deptName
|
||||
formData.value[i].deptName = arr[0].deptName
|
||||
formData.value[i].postId = arr[0].deptId
|
||||
}
|
||||
}
|
||||
const getList = (val: []) => {
|
||||
|
|
@ -186,6 +223,7 @@ const getList = (val: []) => {
|
|||
"name": item.name,
|
||||
"authType": item.post,
|
||||
"postId": item.userRank,
|
||||
"deptName": item.deptName,
|
||||
"userRank": item.mobile,
|
||||
"authDesc": item.authDesc,
|
||||
"wechat":item. wechat,
|
||||
|
|
@ -217,4 +255,9 @@ const getData = () => {
|
|||
}
|
||||
|
||||
defineExpose({ validate, getData })
|
||||
|
||||
const getName = (opt, val, id, name) => {
|
||||
const arr = opt.filter(v => v[id] == val)
|
||||
return arr.length ? arr[0][name] : ''
|
||||
}
|
||||
</script>
|
||||
|
|
@ -19,28 +19,31 @@
|
|||
</el-table-column> -->
|
||||
<el-table-column label="产品名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.productName" placeholder="请输入产品名称" disabled />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.productName}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品类别" min-width="150">
|
||||
<el-table-column label="产品类别" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.category`" :rules="formRules.category" class="mb-0px!">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品明细" min-width="150">
|
||||
<el-table-column label="产品明细" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品单位" min-width="150">
|
||||
<el-table-column label="产品单位" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productUnit`" :rules="formRules.productUnit" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.productUnit`" :rules="formRules.productUnit" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.productUnit" placeholder="产品单位" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_UNIT)"
|
||||
|
|
@ -50,32 +53,42 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="线上价格" min-width="150">
|
||||
<el-table-column label="线上价格" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" :rules="formRules.onlinePrice" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" :rules="formRules.onlinePrice" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.onlinePrice" placeholder="请输入线上价格" disabled />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.onlinePrice}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="线下价格" min-width="150">
|
||||
<el-table-column label="线下价格" align="center" min-width="150">
|
||||
<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!" v-if="!type">
|
||||
<el-input v-model="row.offlinePrice" placeholder="请输入线下价格" disabled />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.onlinePrice}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总计价格" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.totalPrice`" :rules="formRules.totalPrice" class="mb-0px!">
|
||||
<el-table-column label="总计价格" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<!-- <el-form-item :prop="`${$index}.totalPrice`" :rules="formRules.totalPrice" class="mb-0px!">
|
||||
<el-input v-model="row.totalPrice" placeholder="请输入总计价格" disabled />
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<div>
|
||||
{{row.onlinePrice}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品票据" min-width="150">
|
||||
<el-table-column label="产品票据" align="center" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productInvoice`" :rules="formRules.productInvoice" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.productInvoice`" :rules="formRules.productInvoice" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.productInvoice" placeholder="请选择状态" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE)"
|
||||
|
|
@ -85,11 +98,12 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品开具项目" min-width="150">
|
||||
<el-table-column label="产品开具项目" align="center" min-width="160">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItem`" :rules="formRules.productInvoiceItem" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItem`" :rules="formRules.productInvoiceItem" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.productInvoiceItem" placeholder="请选择状态" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS)"
|
||||
|
|
@ -99,11 +113,12 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务费票据" min-width="150">
|
||||
<el-table-column label="服务费票据" align="center" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceInvoice`" :rules="formRules.serviceInvoice" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.serviceInvoice`" :rules="formRules.serviceInvoice" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.serviceInvoice" placeholder="服务费票据" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE)"
|
||||
|
|
@ -113,11 +128,12 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务开具项目" min-width="150">
|
||||
<el-table-column label="服务开具项目" align="center" min-width="160">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceInvoiceItem`" :rules="formRules.serviceInvoiceItem" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.serviceInvoiceItem`" :rules="formRules.serviceInvoiceItem" class="mb-0px!" v-if="!type">
|
||||
<el-select v-model="row.serviceInvoiceItem" placeholder="服务开具项目" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS)"
|
||||
|
|
@ -127,6 +143,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
|
|
|
|||
|
|
@ -174,14 +174,19 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="甲方名称" prop="partyName">
|
||||
<el-select v-model="formData.partyName" disabled placeholder="">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions('payment_term')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
disabled=""
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contactList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
|
|
@ -442,26 +447,34 @@
|
|||
|
||||
|
||||
<!-- 子表的表单 -->
|
||||
<ContentWrap style="border: none;font-weight:700">
|
||||
产品清单
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
|
||||
<el-tab-pane label="产品清单" name="product">
|
||||
<ContractProductForm
|
||||
:type="1"
|
||||
ref="productFormRef"
|
||||
:products="formData.products"
|
||||
:disabled="disabled"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="合同甲方关联单位" name="contractAAuthorizedCompany">
|
||||
<ContractAAuthorizedCompanyForm :type="1" ref="contractAAuthorizedCompanyFormRef" :contract-id="formData.id" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="合同甲方授权人信息" name="contractAAuthorizedPerson">
|
||||
<ContractAAuthorizedPersonForm :type="1" ref="contractAAuthorizedPersonFormRef" :contract-id="formData.id" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="合同乙方授权人信息" name="contractBAuthorizedPerson">
|
||||
<ContractBAuthorizedPersonForm :type="1" ref="contractBAuthorizedPersonFormRef" :contract-id="formData.id" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<ContractProductForm
|
||||
:type="1"
|
||||
ref="productFormRef"
|
||||
:products="formData.products"
|
||||
:disabled="disabled"
|
||||
/>
|
||||
</ContentWrap>
|
||||
<ContentWrap style="border: none;font-weight:700">
|
||||
合同甲方关联单位
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<ContractAAuthorizedCompanyForm :type="1" ref="contractAAuthorizedCompanyFormRef" :contract-id="formData.id" />
|
||||
</ContentWrap>
|
||||
<ContentWrap style="border: none;font-weight:700">
|
||||
合同甲方授权人信息
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<ContractAAuthorizedPersonForm :type="1" ref="contractAAuthorizedPersonFormRef" :contract-id="formData.id" />
|
||||
</ContentWrap>
|
||||
<ContentWrap style="border: none;font-weight:700">
|
||||
合同乙方授权人信息
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<ContractBAuthorizedPersonForm :type="1" ref="contractBAuthorizedPersonFormRef" :userOptions="userOptions" :contract-id="formData.id" />
|
||||
</ContentWrap>
|
||||
</el-form>
|
||||
<!-- 显示在其他页面时的判断type -->
|
||||
|
|
|
|||
|
|
@ -565,6 +565,7 @@ const open = async (type: string) => {
|
|||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await QuotationApi.getQuotation(type)
|
||||
formData.value.creditLimit = ((formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)).toFixed(2)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -502,7 +502,7 @@ const onBusinessChange = async (businessId: string) => {
|
|||
formLoading.value = true;
|
||||
const res = await BusinessApi.getBusiness(businessId);
|
||||
formData.value.customerId = res.customerId;
|
||||
formData.value.creditLimit = res.creditLimit; // 保存详情信息
|
||||
// formData.value.creditLimit = res.creditLimit; // 保存详情信息
|
||||
formData.value.ownerUserId = res.ownerUserId; // 保存详情信息
|
||||
formData.value.paymentTerm = res.paymentTerm;
|
||||
formData.value.creditMethod = res.creditMethod;
|
||||
|
|
@ -511,6 +511,9 @@ const onBusinessChange = async (businessId: string) => {
|
|||
formData.value.offlinePrice = res.offlinePrice;
|
||||
formData.value.onlinePrice = res.onlinePrice;
|
||||
formData.value.totalPrice = res.totalPrice;
|
||||
formData.value.creditAmount = res.creditAmount;
|
||||
console.log('%csrc/views/crm/quotation/QuotationForm.vue:516 (formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)', 'color: #007acc;', (formData.value.creditAmount || 0) , (formData.value.creditLimitNum || 0));
|
||||
|
||||
// 🔁 自动加载客户详情
|
||||
await onCustomerChange(res.customerId);
|
||||
} catch (err) {
|
||||
|
|
@ -545,6 +548,7 @@ const onCustomerChange = async (customerId: string) => {
|
|||
formData.value.financingRecord = customerRes.financingRecord;
|
||||
formData.value.enforcementRecord = customerRes.enforcementRecord;
|
||||
formData.value.creditAmount = customerRes.creditAmount || 0;
|
||||
formData.value.creditLimit = ((formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)).toFixed(2)
|
||||
} catch (err) {
|
||||
console.error('获取客户详情失败:', err);
|
||||
} finally {
|
||||
|
|
@ -580,6 +584,7 @@ const open = async (type: string) => {
|
|||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await QuotationApi.getQuotation(type)
|
||||
formData.value.creditLimit = (formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,111 +9,63 @@
|
|||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<el-table-column label="产品名称" min-width="150">
|
||||
<!-- <el-table-column label="产品名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!">
|
||||
{{row.productName}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品类型" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.category`" :rules="formRules.category" class="mb-0px!">
|
||||
</el-table-column> -->
|
||||
<el-table-column label="产品类型" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="产品明细类型" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!">
|
||||
<el-table-column label="产品明细类型" align="center" min-width="190">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品单位" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productUnit`" :rules="formRules.productUnit" class="mb-0px!">
|
||||
<el-table-column label="产品单位" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="线上价格" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" :rules="formRules.onlinePrice" class="mb-0px!">
|
||||
<el-table-column label="线上价格" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.onlinePrice}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="线下价格" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!">
|
||||
<el-table-column label="线下手续费" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.offlinePrice}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总计价格" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.totalPrice`" :rules="formRules.totalPrice" class="mb-0px!">
|
||||
<el-table-column label="总计价格" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.totalPrice}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品票据" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productInvoice`" :rules="formRules.productInvoice" class="mb-0px!">
|
||||
<el-select v-model="row.productInvoice" placeholder="请选择状态" disabled class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-table-column label="产品票据" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品开具项目" min-width="250">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItem`" :rules="formRules.productInvoiceItems" class="mb-0px!">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItems" />
|
||||
<el-select v-model="row.productInvoiceItem" placeholder="请选择状态" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-table-column label="产品开具项目" align="center" min-width="250">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务费票据" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceInvoice`" :rules="formRules.serviceFeeInvoice" class="mb-0px!">
|
||||
<el-select v-model="row.serviceInvoice" placeholder="请选择状态" disabled class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-table-column label="服务费票据" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务开具项目" min-width="250">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceInvoiceItem`" :rules="formRules.serviceFeeInvoiceItems" class="mb-0px!">
|
||||
<el-select v-model="row.serviceInvoiceItem" placeholder="请选择状态" disabled class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-table-column label="服务开具项目" align="center" min-width="250">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
|
@ -201,6 +153,10 @@ const validate = () => {
|
|||
const getData = () => {
|
||||
return formData.value
|
||||
}
|
||||
const getName = (opt, val) => {
|
||||
const arr = opt.filter(v => v.value == val)
|
||||
return arr.length ? arr[0]['label'] : ''
|
||||
}
|
||||
|
||||
defineExpose({ validate, getData })
|
||||
</script>
|
||||
|
|
@ -9,25 +9,18 @@
|
|||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<el-table-column label="序号" type="index" width="80" />
|
||||
<el-table-column label="产品名称" min-width="240">
|
||||
<!-- <el-table-column label="产品名称" min-width="240">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!">
|
||||
<el-input v-model="row.productName" placeholder="请输入产品名称" disabled />
|
||||
{{row.productName}}
|
||||
</el-form-item>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="产品类型" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.category`" :rules="formRules.category" class="mb-0px!">
|
||||
<el-select v-model="row.category" placeholder="请选择状态" disabled class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_CATEGORY)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -49,14 +42,7 @@
|
|||
<el-table-column label="产品单位" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productUnit`" :rules="formRules.productUnit" class="mb-0px!">
|
||||
<el-select v-model="row.productUnit" placeholder="请选择状态" disabled class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_UNIT)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -67,7 +53,7 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="线下价格(元)" min-width="120">
|
||||
<el-table-column label="线下手续费(元)" min-width="120">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!">
|
||||
<el-input v-model="row.offlinePrice" placeholder="请输入线下价格" />
|
||||
|
|
@ -77,7 +63,7 @@
|
|||
<el-table-column label="总计价格(元)" min-width="120">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.totalPrice`" :rules="formRules.totalPrice" class="mb-0px!">
|
||||
<el-input v-model="row.totalPrice" placeholder="请输入总计价格" disabled />
|
||||
{{row.totalPrice}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -200,7 +186,6 @@ watch(
|
|||
// } else if(val.businessId) {
|
||||
const business = await BusinessApi.getBusiness(val);
|
||||
formData.value = business.products
|
||||
// console.log('%csrc/views/crm/quotation/components/QuotationProductForm.vue:214 1111', 'color: #007acc;', 2222);
|
||||
emit('update:handleType', 0)
|
||||
// }
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -1,45 +1,71 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="50%">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
label-width="144px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="机构名称" prop="orgName">
|
||||
<el-input v-model="formData.orgName" placeholder="请输入机构名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工作地址" prop="workplace">
|
||||
<el-input v-model="formData.workplace" placeholder="请输入工作地址" />
|
||||
</el-form-item>
|
||||
<el-form-item label="企业微信凭证" prop="corpId">
|
||||
<el-input v-model="formData.corpId" placeholder="请输入企业微信凭证" />
|
||||
</el-form-item>
|
||||
<el-form-item label="企业微信凭证密钥" prop="corpSecret">
|
||||
<el-input v-model="formData.corpSecret" placeholder="请输入企业微信凭证密钥" />
|
||||
</el-form-item>
|
||||
<el-form-item label="主体名称" prop="subjectName">
|
||||
<el-input v-model="formData.subjectName" placeholder="请输入主体名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="统一信用代码" prop="creditCode">
|
||||
<el-input v-model="formData.creditCode" placeholder="请输入统一信用代码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||
<el-input v-model="formData.legalRepresentative" placeholder="请输入法人代表" />
|
||||
</el-form-item>
|
||||
<el-form-item label="注册地址" prop="registeredAddress">
|
||||
<el-input v-model="formData.registeredAddress" placeholder="请输入注册地址" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" placeholder="请输入开户行" />
|
||||
</el-form-item>
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input v-model="formData.bankAccount" placeholder="请输入银行账号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="营业执照文件路径" prop="businessLicense">
|
||||
<el-input v-model="formData.businessLicense" placeholder="请输入营业执照文件路径" />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="机构名称" prop="orgName">
|
||||
<el-input v-model="formData.orgName" placeholder="请输入机构名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工作地址" prop="workplace">
|
||||
<el-input v-model="formData.workplace" placeholder="请输入工作地址" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企业微信凭证" prop="corpId">
|
||||
<el-input v-model="formData.corpId" placeholder="请输入企业微信凭证" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企业微信凭证密钥" prop="corpSecret">
|
||||
<el-input v-model="formData.corpSecret" placeholder="请输入企业微信凭证密钥" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主体名称" prop="subjectName">
|
||||
<el-input v-model="formData.subjectName" placeholder="请输入主体名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="统一信用代码" prop="creditCode">
|
||||
<el-input v-model="formData.creditCode" placeholder="请输入统一信用代码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||
<el-input v-model="formData.legalRepresentative" placeholder="请输入法人代表" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="注册地址" prop="registeredAddress">
|
||||
<el-input v-model="formData.registeredAddress" placeholder="请输入注册地址" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" placeholder="请输入开户行" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input v-model="formData.bankAccount" placeholder="请输入银行账号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="营业执照文件路径" prop="businessLicense">
|
||||
<UploadImg v-model="formData.businessLicense" />
|
||||
|
||||
<!-- <el-input v-model="formData.businessLicense" placeholder="请输入营业执照文件路径" /> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
|
|
|
|||
Loading…
Reference in New Issue