客户-联系人
parent
36589b2910
commit
3480d6604c
|
|
@ -6,8 +6,8 @@ VITE_DEV=true
|
|||
# 请求路径
|
||||
# VITE_BASE_URL='http://8.130.12.151:48080'
|
||||
# VITE_BASE_URL='http://lhy.free.idcfengye.com'
|
||||
# VITE_BASE_URL='http://m94844f6.natappfree.cc'
|
||||
VITE_BASE_URL='http://172.22.3.168:48080'
|
||||
VITE_BASE_URL='http://m94844f6.natappfree.cc'
|
||||
# VITE_BASE_URL='http://172.22.3.168:48080'
|
||||
# VITE_BASE_URL='http://172.22.3.203:48080'
|
||||
|
||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@
|
|||
"vue-router": "4.4.5",
|
||||
"vue-signature-pad": "^3.0.2",
|
||||
"vue-types": "^5.1.1",
|
||||
"vue3-print-nb": "^0.1.4",
|
||||
"vue3-signature": "^0.2.4",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"web-storage-cache": "^1.1.1",
|
||||
|
|
@ -17105,6 +17106,14 @@
|
|||
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vue3-print-nb": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
|
||||
"integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
|
||||
"dependencies": {
|
||||
"vue": "^3.0.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vue3-signature": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/vue3-signature/-/vue3-signature-0.2.4.tgz",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@
|
|||
"vue-router": "4.4.5",
|
||||
"vue-signature-pad": "^3.0.2",
|
||||
"vue-types": "^5.1.1",
|
||||
"vue3-print-nb": "^0.1.4",
|
||||
"vue3-signature": "^0.2.4",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"web-storage-cache": "^1.1.1",
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ watch(() => props.modelValue, (val) => {
|
|||
let selectItem = props.customerList.filter(v => v.id === val)
|
||||
options.value = [...options.value, ...selectItem]
|
||||
}
|
||||
},)
|
||||
}, { immediate: true })
|
||||
|
||||
watch(() => props.customerList, (val) => {
|
||||
options.value = val.slice(0, 10)
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐
|
|||
|
||||
import VueSignaturePad from "vue-signature-pad";
|
||||
|
||||
import print from 'vue3-print-nb'
|
||||
// 创建实例
|
||||
const setupAll = async () => {
|
||||
const app = createApp(App)
|
||||
|
|
@ -68,7 +69,7 @@ const setupAll = async () => {
|
|||
|
||||
app.use(VueDOMPurifyHTML)
|
||||
app.use(VueSignaturePad);
|
||||
|
||||
app.use(print)
|
||||
app.mount('#app')
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -221,6 +221,7 @@ export enum DICT_TYPE {
|
|||
TIME_TYPE='time_type',// 时间类型
|
||||
CRM_PARTNER_TYPE = 'crm_partner_type',//合作类型
|
||||
CRM_SERVICE_FEE_COLLECTION_METHOD = 'crm_service_fee_collection_method',//服务费收取方式
|
||||
CRM_CONTACT_ROLE_TYPE = 'crm_contact_role_type',//角色
|
||||
|
||||
CRM_PRODUCT_CATEGORY = "crm_product_category", //CRM 产品类型
|
||||
CRM_PRODUCT_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<!-- <el-col :span="8">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商机名称" prop="name">
|
||||
<el-input v-model="formData.name" :disabled="type" clearable placeholder="请输入商机名称" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault || type" v-model="formData.customerId" />
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<!-- <el-col :span="8">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商机状态组" prop="statusTypeId">
|
||||
<el-select
|
||||
v-model="formData.statusTypeId"
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="预计成交日期" prop="dealTime">
|
||||
<el-date-picker
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ const getList = async () => {
|
|||
loading.value = false
|
||||
}
|
||||
}
|
||||
defineExpose({ getList })
|
||||
|
||||
const getData = (val,data) => {
|
||||
list.value = data
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<Dialog v-model="dialogVisible" :title="dialogTitle">
|
||||
<Dialog v-model="dialogVisible" :title="dialogTitle" style="width: 50%">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
v-loading="formLoading"
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault" v-model="formData.customerId" />
|
||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault" v-model="formData.customerId" @change="changeCustomerId" />
|
||||
<!-- <el-select
|
||||
:disabled="formData.customerDefault"
|
||||
v-model="formData.customerId"
|
||||
|
|
@ -74,14 +74,24 @@
|
|||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="formData.email" placeholder="请输入邮箱" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="角色" prop="sex">
|
||||
<el-select v-model="formData.sex" placeholder="请选择角色" class="w-1/1">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CONTACT_ROLE_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="微信" prop="wechat">
|
||||
<el-input v-model="formData.wechat" placeholder="请输入微信" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="职位" prop="post">
|
||||
|
|
@ -113,6 +123,16 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="生日" prop="birthday">
|
||||
<el-input v-model="formData.birthday" placeholder="请输入生日" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="爱好" prop="hobby">
|
||||
<el-input v-model="formData.hobby" placeholder="请输入爱好" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="直属上级" prop="parentId">
|
||||
<el-select v-model="formData.parentId" filterable placeholder="请选择直属上级" class="w-1/1">
|
||||
|
|
@ -141,6 +161,11 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col >
|
||||
<el-form-item label="注册地址" prop="registeredAddress">
|
||||
<el-input v-model="formData.registeredAddress" disabled placeholder="请输入注册地址" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col >
|
||||
<el-form-item label="家庭地址" prop="detailAddress">
|
||||
<el-input v-model="formData.detailAddress" placeholder="请输入家庭地址" />
|
||||
|
|
@ -249,7 +274,7 @@ const open = async (type: string, id?: number, customerId?: number, businessId?:
|
|||
formLoading.value = false
|
||||
}
|
||||
} else {
|
||||
// console.log('%csrc/views/crm/contact/ContactForm.vue:229 customerId', 'color: #007acc;', customerId);
|
||||
console.log('%csrc/views/crm/contact/ContactForm.vue:229 customerId', 'color: #007acc;', customerId);
|
||||
if (customerId) {
|
||||
formData.value.customerId = customerId
|
||||
formData.value.customerDefault = true // 默认客户的选择,不允许变
|
||||
|
|
@ -258,6 +283,7 @@ const open = async (type: string, id?: number, customerId?: number, businessId?:
|
|||
if (businessId) {
|
||||
formData.value.businessId = businessId
|
||||
}
|
||||
console.log('%csrc/views/crm/contact/ContactForm.vue:273 formData.customerId', 'color: #007acc;', formData.value);
|
||||
}
|
||||
// 获得联系人列表
|
||||
contactList.value = await ContactApi.getSimpleContactList()
|
||||
|
|
@ -300,6 +326,11 @@ const submitForm = async () => {
|
|||
}
|
||||
}
|
||||
|
||||
const changeCustomerId = (val) => {
|
||||
let arr = customerList.value.filter(v => v.id === val)
|
||||
if(arr.length) formData.value.registeredAddress = arr[0]['registeredAddress']
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ const getList = async () => {
|
|||
loading.value = false
|
||||
}
|
||||
}
|
||||
defineExpose({ getList })
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
|
|
|
|||
|
|
@ -442,6 +442,7 @@
|
|||
<ContentWrap>
|
||||
<ContractProductForm
|
||||
ref="productFormRef"
|
||||
:formFields="formFields"
|
||||
:products="formData.products"
|
||||
:disabled="disabled"
|
||||
:type="1"
|
||||
|
|
@ -451,19 +452,19 @@
|
|||
合同甲方关联单位
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef" :data="formData.contractAAuthorizedCompanys" :contract-id="formData.id" />
|
||||
<ContractAAuthorizedCompanyForm :formFields="formFields" ref="contractAAuthorizedCompanyFormRef" :data="formData.contractAAuthorizedCompanys" :contract-id="formData.id" />
|
||||
</ContentWrap>
|
||||
<ContentWrap style="border: none;font-weight:700">
|
||||
合同甲方授权人信息
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<ContractAAuthorizedPersonForm ref="contractAAuthorizedPersonFormRef" :contract-id="formData.id" :customerId="formData.customerId" />
|
||||
<ContractAAuthorizedPersonForm :formFields="formFields" ref="contractAAuthorizedPersonFormRef" :contract-id="formData.id" :customerId="formData.customerId" />
|
||||
</ContentWrap>
|
||||
<ContentWrap style="border: none;font-weight:700">
|
||||
合同乙方授权人信息
|
||||
</ContentWrap>
|
||||
<ContentWrap>
|
||||
<ContractBAuthorizedPersonForm ref="contractBAuthorizedPersonFormRef" :userOptions="userOptions" :contract-id="formData.id" />
|
||||
<ContractBAuthorizedPersonForm :formFields="formFields" ref="contractBAuthorizedPersonFormRef" :userOptions="userOptions" :contract-id="formData.id" />
|
||||
</ContentWrap>
|
||||
</el-form>
|
||||
<!-- 显示在其他页面时的判断type -->
|
||||
|
|
@ -506,6 +507,49 @@ const dialogTitle = ref('') // 弹窗的标题
|
|||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const deptTree = ref() // 部门树形结构
|
||||
const formFields = ref({
|
||||
productsother: 1,
|
||||
productsproductName: 1,
|
||||
productscategory: 1,
|
||||
productsdetailType: 1,
|
||||
productsproductUnit: 1,
|
||||
productsbasicServiceFee: 1,
|
||||
productsadvancePaymentServiceFee: 1,
|
||||
productsbookingPaymentServiceFee: 1,
|
||||
productsbillSortingServiceFee: 1,
|
||||
productstotalServiceFee: 1,
|
||||
productsproductInvoice: 1,
|
||||
productsproductInvoiceItem: 1,
|
||||
productsserviceInvoice: 1,
|
||||
productsserviceInvoiceItem: 1,
|
||||
productsother1: 1,
|
||||
contractAAuthorizedCompanysother: 1,
|
||||
contractAAuthorizedCompanysunifiedCreditCode: 1,
|
||||
contractAAuthorizedCompanysinvoicingAddress: 1,
|
||||
contractAAuthorizedCompanysinvoicingTelephone: 1,
|
||||
contractAAuthorizedCompanyscompanyBank: 1,
|
||||
contractAAuthorizedCompanyscompanyAccount: 1,
|
||||
contractAAuthorizedCompanyscompanyAddress: 1,
|
||||
contractAAuthorizedCompanysother2: 1,
|
||||
contractAAuthorizedPersonsother: 1,
|
||||
contractAAuthorizedPersonscustomerName: 1,
|
||||
contractAAuthorizedPersonsauthPersonType: 1,
|
||||
contractAAuthorizedPersonsphoneNumber: 1,
|
||||
contractAAuthorizedPersonswechat: 1,
|
||||
contractAAuthorizedPersonsidNumber: 1,
|
||||
contractAAuthorizedPersonsemail: 1,
|
||||
contractAAuthorizedPersonsother2: 1,
|
||||
contractBAuthorizedPersonsother: 1,
|
||||
contractBAuthorizedPersonsauthType: 1,
|
||||
contractBAuthorizedPersonsuserId: 1,
|
||||
contractBAuthorizedPersonspostName: 1,
|
||||
contractBAuthorizedPersonsuserRank: 1,
|
||||
contractBAuthorizedPersonsauthDesc: 1,
|
||||
contractBAuthorizedPersonsphoneNumber: 1,
|
||||
contractBAuthorizedPersonswechat: 1,
|
||||
contractBAuthorizedPersonsemail: 1,
|
||||
contractBAuthorizedPersonsother2: 1,
|
||||
})
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
|
|
|
|||
|
|
@ -7,84 +7,102 @@
|
|||
label-width="0px"
|
||||
:inline-message="true"
|
||||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<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!" 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!" 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!" 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!" 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!" 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!" 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!" 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">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<AuthTable v-loading="loading" :fields="formFields" :data="formData" class="-mt-10px">
|
||||
<template #contractAAuthorizedCompanysother>
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
</template>
|
||||
<template #contractAAuthorizedCompanyscustomerName>
|
||||
<el-table-column label="单位名称" min-width="150">
|
||||
<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 #contractAAuthorizedCompanysunifiedCreditCode>
|
||||
<el-table-column label="统一社会信用代码" min-width="150">
|
||||
<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 #contractAAuthorizedCompanysinvoicingAddress>
|
||||
<el-table-column label="开票地址" min-width="150">
|
||||
<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 #contractAAuthorizedCompanysinvoicingTelephone>
|
||||
<el-table-column label="开票电话" min-width="150">
|
||||
<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 #contractAAuthorizedCompanyscompanyBank>
|
||||
<el-table-column label="开户行" min-width="150">
|
||||
<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 #contractAAuthorizedCompanyscompanyAccount>
|
||||
<el-table-column label="开户账号" min-width="150">
|
||||
<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 #contractAAuthorizedCompanyscompanyAddress>
|
||||
<el-table-column label="通讯地址" min-width="150">
|
||||
<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 #contractAAuthorizedCompanysother2>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</AuthTable>
|
||||
</el-form>
|
||||
<el-row justify="center" class="mt-3" v-if="!type">
|
||||
<el-button @click="handleAdd" round>+ 添加</el-button>
|
||||
|
|
@ -127,7 +145,8 @@ const handleAdd = () => {
|
|||
|
||||
const props = defineProps<{
|
||||
data: undefined,
|
||||
type: undefined
|
||||
type: undefined,
|
||||
formFields: {}
|
||||
}>()
|
||||
|
||||
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
||||
|
|
|
|||
|
|
@ -7,88 +7,104 @@
|
|||
label-width="0px"
|
||||
:inline-message="true"
|
||||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<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!" 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}.customerName`" :rules="formRules.customerName" class="mb-0px!">
|
||||
<el-input v-model="row.customerName" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</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!" v-if="!type">
|
||||
<el-select v-model="row.authPersonType" placeholder="请选择授权人类型">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('auth_person_type')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</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!" 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!" 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!" 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!" 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">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<AuthTable v-loading="loading" :fields="formFields" :data="formData" class="-mt-10px">
|
||||
<template #contractAAuthorizedPersonsother>
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonscustomerName>
|
||||
<el-table-column label="授权人姓名" min-width="150">
|
||||
<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>
|
||||
<!-- <el-table-column label="姓名" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.customerName`" :rules="formRules.customerName" class="mb-0px!">
|
||||
<el-input v-model="row.customerName" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonsauthPersonType>
|
||||
<el-table-column label="授权人类型" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{getName(getIntDictOptions('auth_person_type'), row.authPersonType)}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonsphoneNumber>
|
||||
<el-table-column label="授权人手机号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonswechat>
|
||||
<el-table-column label="微信号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonsidNumber>
|
||||
<el-table-column label="身份证号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonsemail>
|
||||
<el-table-column label="电子邮箱" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractAAuthorizedPersonsother2>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</AuthTable>
|
||||
</el-form>
|
||||
<el-row justify="center" class="mt-3" v-if="!type">
|
||||
<el-button @click="handleAdd" round>+ 添加</el-button>
|
||||
|
|
@ -104,7 +120,8 @@ import ContactForm from '@/components/contact/index.vue'
|
|||
const props = defineProps<{
|
||||
contractId: undefined, // 合同ID(主表的关联字段)
|
||||
type: undefined,
|
||||
customerId: undefined
|
||||
customerId: undefined,
|
||||
formFields: {}
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
|
|
|
|||
|
|
@ -7,115 +7,135 @@
|
|||
label-width="0px"
|
||||
:inline-message="true"
|
||||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<!-- <el-table-column label="用户" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.userId`" :rules="formRules.userId" class="mb-0px!">
|
||||
<el-input v-model="row.userId" placeholder="请输入用户" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</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!" v-if="!type">
|
||||
<el-select v-model="row.authType" placeholder="请选择类别">
|
||||
<AuthTable v-loading="loading" :fields="formFields" :data="formData" class="-mt-10px">
|
||||
<template #contractBAuthorizedPersonsother>
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<!-- <el-table-column label="用户" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.userId`" :rules="formRules.userId" class="mb-0px!">
|
||||
<el-input v-model="row.userId" placeholder="请输入用户" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsauthType>
|
||||
<el-table-column label="类别" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{getName(getIntDictOptions('auth_type'), row.authType, 'value', 'label')}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsuserId>
|
||||
<el-table-column label="姓名" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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 getIntDictOptions('auth_type')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.nickname"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</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!" v-if="!type">
|
||||
<el-select v-model="row.userId" placeholder="请选择售后维护人" @change="changeUser($index, row.userId)">
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.nickname"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</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}.postName`" :rules="formRules.postName" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.postName" placeholder="请输入岗位" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.postName}}
|
||||
</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!" 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!" 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!" 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!" 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!" 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">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{getName(userOptions, row.userId, 'id', 'nickname')}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonspostName>
|
||||
<el-table-column label="岗位" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.postName`" :rules="formRules.postName" class="mb-0px!" v-if="!type">
|
||||
<el-input v-model="row.postName" placeholder="请输入岗位" />
|
||||
</el-form-item>
|
||||
<div v-else>
|
||||
{{row.postName}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsuserRank>
|
||||
<el-table-column label="职级" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsauthDesc>
|
||||
<el-table-column label="权限说明" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsphoneNumber>
|
||||
<el-table-column label="手机号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonswechat>
|
||||
<el-table-column label="微信号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsemail>
|
||||
<el-table-column label="电子邮箱" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #contractBAuthorizedPersonsother2>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</AuthTable>
|
||||
</el-form>
|
||||
<el-row justify="center" class="mt-3" v-if="!type">
|
||||
<el-button @click="handleAdd" round>+ 添加</el-button>
|
||||
|
|
@ -131,7 +151,8 @@ import ContactForm from '@/components/user/index.vue'
|
|||
const props = defineProps<{
|
||||
contractId: undefined, // 合同ID(主表的关联字段)
|
||||
type: undefined,
|
||||
userOptions: undefined
|
||||
userOptions: undefined,
|
||||
formFields: {},
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@
|
|||
<template #changeAmount>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="调整金额(元)" prop="changeAmount">
|
||||
<el-input v-model="formData.changeAmount" :disabled="type" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入调整金额(元)" @input="onChangeAmount" />
|
||||
<el-input v-model="formData.changeAmount" :disabled="formFields.contractBody !== 2 || isTrue" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入调整金额(元)" @input="onChangeAmount" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
|
@ -180,7 +180,7 @@
|
|||
v-model="formData.changeAmountDeadline"
|
||||
value-format="YYYY-MM-DD"
|
||||
type="date"
|
||||
:disabled="type"
|
||||
:disabled="formFields.contractBody !== 2 || isTrue"
|
||||
placeholder="请选择调整金额截止日期"
|
||||
style="width: 100%"
|
||||
/>
|
||||
|
|
@ -212,6 +212,7 @@ import { propTypes } from '@/utils/propTypes'
|
|||
/** CRM 方案报价 表单 */
|
||||
defineOptions({ name: 'ContractChangeLimit' })
|
||||
|
||||
const isTrue = ref(false)
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const customerList = ref([]) // 客户列表的数据
|
||||
|
|
@ -434,8 +435,9 @@ const resetForm = () => {
|
|||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
// const route = useRoute();
|
||||
const route = useRoute();
|
||||
onMounted(async () => {
|
||||
isTrue.value = !!route.query.isDetail
|
||||
console.log('%csrc/views/crm/quotation/QuotationForm.vue:596 route', 'color: #007acc;', props.formFields);
|
||||
// formType.value = route.query.id;
|
||||
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ const getList = async () => {
|
|||
loading.value = false
|
||||
}
|
||||
}
|
||||
defineExpose({ getList })
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
|
|
|
|||
|
|
@ -8,8 +8,9 @@
|
|||
:inline-message="true"
|
||||
:disabled="disabled"
|
||||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<AuthTable v-loading="loading" :fields="formFields" :data="formData" class="-mt-10px">
|
||||
<template #productsother>
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<!-- <el-table-column label="产品编号" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
|
||||
|
|
@ -17,176 +18,204 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</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!" 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="产品类别" 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="产品明细" 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="产品单位" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</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="130">
|
||||
<template #default="{ row, $index }">
|
||||
<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="" /> -->
|
||||
{{row.basicServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="垫资服务费(元)" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<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="" /> -->
|
||||
{{row.advancePaymentServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="代订服务费(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
|
||||
{{row.bookingPaymentServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="票据分拣服务费(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
|
||||
{{row.billSortingServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务费收入合计(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
|
||||
{{row.totalServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <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!" 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="线下价格" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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="总计价格" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<div>
|
||||
{{row.onlinePrice}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<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!" v-if="!type">
|
||||
<el-select v-model="row.productInvoice" placeholder="请选择状态" disabled>
|
||||
<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>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<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!" v-if="!type">
|
||||
<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>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<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!" v-if="!type">
|
||||
<el-select v-model="row.serviceInvoice" placeholder="服务费票据" disabled>
|
||||
<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>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<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!" 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)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</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">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
<template #productsproductName>
|
||||
<el-table-column label="产品名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
<template #productscategory>
|
||||
<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>
|
||||
</template>
|
||||
<template #productsdetailType>
|
||||
<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>
|
||||
</template>
|
||||
<template #productsproductUnit>
|
||||
<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!" v-if="!type">
|
||||
<el-select v-model="row.productUnit" placeholder="产品单位" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_UNIT)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsbasicServiceFee>
|
||||
<el-table-column label="基础服务费(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<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="" /> -->
|
||||
{{row.basicServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsadvancePaymentServiceFee>
|
||||
<el-table-column label="垫资服务费(元)" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<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="" /> -->
|
||||
{{row.advancePaymentServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsbookingPaymentServiceFee>
|
||||
<el-table-column label="代订服务费(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
|
||||
{{row.bookingPaymentServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsbillSortingServiceFee>
|
||||
<el-table-column label="票据分拣服务费(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
|
||||
{{row.billSortingServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productstotalServiceFee>
|
||||
<el-table-column label="服务费收入合计(元)" min-width="130">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
|
||||
{{row.totalServiceFee}}
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <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!" 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="线下价格" align="center" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<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="总计价格" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<div>
|
||||
{{row.onlinePrice}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</template>
|
||||
<template #productsproductInvoice>
|
||||
<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!" v-if="!type">
|
||||
<el-select v-model="row.productInvoice" placeholder="请选择状态" disabled>
|
||||
<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>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsproductInvoiceItem>
|
||||
<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!" v-if="!type">
|
||||
<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>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsserviceInvoice>
|
||||
<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!" v-if="!type">
|
||||
<el-select v-model="row.serviceInvoice" placeholder="服务费票据" disabled>
|
||||
<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>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsserviceInvoiceItem>
|
||||
<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!" 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)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<dict-tag v-else :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #productsother1>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!type">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</AuthTable>
|
||||
</el-form>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ const getList = async () => {
|
|||
loading.value = false
|
||||
}
|
||||
}
|
||||
defineExpose({ getList })
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<template>
|
||||
<ContentWrap class="mt-10px">
|
||||
<el-form
|
||||
<processForm
|
||||
ref="formRef"
|
||||
v-loading="formLoading"
|
||||
:model="formData"
|
||||
:fields="formFields"
|
||||
:rules="formRules"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-row>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="合同查询" prop="quotationId">
|
||||
<el-select
|
||||
|
|
@ -24,18 +24,23 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<template #customerId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" :disabled="true" v-model="formData.customerId" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #processInstanceId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协议编码" prop="name">
|
||||
<el-form-item label="协议编码" prop="processInstanceId">
|
||||
<el-input v-model="formData.processInstanceId" disabled placeholder="协议编码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #auditStatus>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同状态" prop="quotationId">
|
||||
<el-form-item label="合同状态" prop="auditStatus">
|
||||
<el-select v-model="formData.auditStatus" disabled clearable placeholder="请选择合同状态">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_AUDIT_STATUS)"
|
||||
|
|
@ -46,6 +51,8 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #endTime>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协议截止日期" prop="endTime">
|
||||
<el-date-picker
|
||||
|
|
@ -58,9 +65,11 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #changeItem>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="变更项目" prop="endTime">
|
||||
<el-radio-group v-model="formData.changeItem" disabled >
|
||||
<el-form-item label="变更项目" prop="changeItem">
|
||||
<el-radio-group v-model="formData.changeItem" :disabled="formFields.contractAgreement !== 2 || isTrue" >
|
||||
<el-radio :value="1">额度</el-radio>
|
||||
<el-radio :value="2">授权人</el-radio>
|
||||
<el-radio :value="3">延期</el-radio>
|
||||
|
|
@ -70,8 +79,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</template>
|
||||
<template #other>
|
||||
<!-- 子表的表单 -->
|
||||
<ContentWrap>
|
||||
<ContractChangeLimit
|
||||
|
|
@ -101,7 +110,8 @@
|
|||
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" :type="true" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" />
|
||||
<ContractForm ref="contractFormRef" :type="1" :id="formData.id" v-if="formData.changeItem == 6" />
|
||||
</ContentWrap>
|
||||
</el-form>
|
||||
</template>
|
||||
</processForm>
|
||||
|
||||
</ContentWrap>
|
||||
</template>
|
||||
|
|
@ -123,8 +133,10 @@ import ContractAAuthorizedCompanyForm from '../components/ContractAAuthorizedCom
|
|||
import ContractBAuthorizedPersonForm from '../components/ContractAAuthorizedPersonForm.vue'
|
||||
import ContractForm from './ContractDetail.vue'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
import { getLimitForm } from '@/api/bpm/form'
|
||||
|
||||
|
||||
const isTrue = ref(false)
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { proxy }: any = getCurrentInstance();
|
||||
|
|
@ -136,6 +148,12 @@ const dialogTitle = ref('') // 弹窗的标题
|
|||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formFields = ref({
|
||||
customerId: 1,
|
||||
processInstanceId: 1,
|
||||
auditStatus: 1,
|
||||
endTime: 1,
|
||||
changeItem: 1,
|
||||
other: 1,
|
||||
cooperationType: 1,
|
||||
regType: 1,
|
||||
actualCapital: 1,
|
||||
|
|
@ -149,6 +167,20 @@ const formFields = ref({
|
|||
creditAmount: 1,
|
||||
creditLimit: 1,
|
||||
partnerCompanyId: 1,
|
||||
|
||||
contractDetailcooperationType: 1,
|
||||
contractDetailregType: 1,
|
||||
contractDetailactualCapital: 1,
|
||||
contractDetailsocialEmployeeNum: 1,
|
||||
contractDetaildefendantRecord: 1,
|
||||
contractDetailabnormalService: 1,
|
||||
contractDetailequityPledge: 1,
|
||||
contractDetaildishonestyRecord: 1,
|
||||
contractDetailfinanceRecord: 1,
|
||||
contractDetailjudgmentRecord: 1,
|
||||
contractDetailcreditAmount: 1,
|
||||
contractDetailcreditLimit: 1,
|
||||
contractDetailpartnerCompanyId: 1,
|
||||
changeAmount: 1,
|
||||
afterAmount: 1,
|
||||
changeAmountDeadline: 1,
|
||||
|
|
@ -485,11 +517,36 @@ const getContactOptions = computed(() =>
|
|||
)
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
//获取字段权限
|
||||
const getLimit = async () => {
|
||||
let data = {
|
||||
modelNodeId: route.query.taskDefinitionKey,
|
||||
processDefinitionId: route.query.processDefinitionId
|
||||
}
|
||||
let field = await getLimitForm(data)
|
||||
for(let key in formFields.value) {
|
||||
|
||||
if(formFields.value.hasOwnProperty(key)) {
|
||||
field.fields.map( v => {
|
||||
let newKey = v.field
|
||||
if(v.field.indexOf('.') > -1) {
|
||||
newKey = v.field.split('.')[0] + v.field.split('.')[1]
|
||||
}
|
||||
|
||||
if(newKey === key) formFields.value[key] = v.permission
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
isTrue.value = !!route.query.isDetail
|
||||
formType.value = props.id || route.query.id;
|
||||
|
||||
if (formType.value) open(formType.value)
|
||||
|
||||
if(route.query.processDefinitionId) getLimit()
|
||||
// 获得客户列表
|
||||
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||
// 获得用户列表
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
disabled=""
|
||||
:disabled="formFields.customerId !== 2 || isTrue"
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
<el-select
|
||||
@change="handleQuotationChange"
|
||||
v-model="formData.pricingUserId"
|
||||
disabled
|
||||
:disabled="formFields.pricingUserId !== 2 || isTrue"
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
|
|
@ -377,7 +377,7 @@
|
|||
<template #contractType>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同类型" prop="contractType">
|
||||
<el-radio-group v-model="formData.contractType" disabled>
|
||||
<el-radio-group v-model="formData.contractType" :disabled="formFields.contractType !== 2 || isTrue">
|
||||
<el-radio :label="1">单次合同</el-radio>
|
||||
<el-radio :label="2">框架合同</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -389,7 +389,7 @@
|
|||
<el-form-item label="合同签订日期" prop="startTime">
|
||||
<el-date-picker
|
||||
v-model="formData.startTime"
|
||||
disabled
|
||||
:disabled="formFields.startTime !== 2 || isTrue"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder=""
|
||||
|
|
@ -404,7 +404,7 @@
|
|||
<el-date-picker
|
||||
v-model="formData.endTime"
|
||||
type="date"
|
||||
disabled
|
||||
:disabled="formFields.endTime !== 2 || isTrue"
|
||||
value-format="x"
|
||||
placeholder=""
|
||||
style="width: 100%"
|
||||
|
|
@ -415,14 +415,14 @@
|
|||
<template #contractTerm>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同期限(月)" prop="contractTerm">
|
||||
<el-input v-model="formData.contractTerm" disabled oninput = "value=value.replace(/[^\d]/g,'')" placeholder="" />
|
||||
<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>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账单日" prop="statementDate">
|
||||
<el-select v-model="formData.statementDate" disabled placeholder="" >
|
||||
<el-select v-model="formData.statementDate" :disabled="formFields.statementDate !== 2 || isTrue" placeholder="" >
|
||||
<el-option
|
||||
v-for="(dict, index) in statement"
|
||||
:key="index"
|
||||
|
|
@ -436,7 +436,7 @@
|
|||
<template #lastPayDate>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="最晚付款日" prop="lastPayDate">
|
||||
<el-select v-model="formData.lastPayDate" disabled placeholder="" >
|
||||
<el-select v-model="formData.lastPayDate" :disabled="formFields.lastPayDate !== 2 || isTrue" placeholder="" >
|
||||
<el-option
|
||||
v-for="(dict, index) in statement"
|
||||
:key="index"
|
||||
|
|
@ -450,14 +450,14 @@
|
|||
<template #penaltyRate>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="违约金比例" prop="penaltyRate">
|
||||
<el-input v-model="formData.penaltyRate" disabled placeholder="" />
|
||||
<el-input v-model="formData.penaltyRate" :disabled="formFields.penaltyRate !== 2 || isTrue" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #latePaymentRate>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="延期付款利率" prop="latePaymentRate">
|
||||
<el-input v-model="formData.latePaymentRate" disabled placeholder="" />
|
||||
<el-input v-model="formData.latePaymentRate" :disabled="formFields.latePaymentRate !== 2 || isTrue" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
|
|
@ -479,7 +479,7 @@
|
|||
<template #settleMethod>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="财务结算方式" prop="settleMethod">
|
||||
<el-radio-group v-model="formData.settleMethod" disabled>
|
||||
<el-radio-group v-model="formData.settleMethod" :disabled="formFields.settleMethod !== 2 || isTrue">
|
||||
<el-radio :label="1">按月结算</el-radio>
|
||||
<el-radio :label="0">按项目结算</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -489,7 +489,7 @@
|
|||
<template #afterSaleUserId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="售后维护人" prop="afterSaleUserId">
|
||||
<el-select v-model="formData.afterSaleUserId" disabled placeholder="">
|
||||
<el-select v-model="formData.afterSaleUserId" :disabled="formFields.afterSaleUserId !== 2 || isTrue" placeholder="">
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -503,7 +503,7 @@
|
|||
<template #collUserId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协作人" prop="collUserId">
|
||||
<el-select v-model="formData.collUserId" disabled placeholder="">
|
||||
<el-select v-model="formData.collUserId" :disabled="formFields.collUserId !== 2 || isTrue" placeholder="">
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -517,14 +517,14 @@
|
|||
<template #contractBody>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同正文" prop="contractBody">
|
||||
<el-input v-model="formData.contractBody" disabled type="textarea" rows="5" placeholder="" />
|
||||
<el-input v-model="formData.contractBody" :disabled="formFields.contractBody !== 2 || isTrue" type="textarea" rows="5" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #contractAgreement>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同补充协议" prop="contractAgreement">
|
||||
<el-input v-model="formData.contractAgreement" disabled type="textarea" rows="5" placeholder="" />
|
||||
<el-input v-model="formData.contractAgreement" :disabled="formFields.contractAgreement !== 2 || isTrue" type="textarea" rows="5" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
|
@ -651,6 +651,47 @@ const formFields = ref({
|
|||
contractBody: 1,
|
||||
contractAgreement: 1,
|
||||
other5: 1,
|
||||
productsother: 1,
|
||||
productsproductName: 1,
|
||||
productscategory: 1,
|
||||
productsdetailType: 1,
|
||||
productsproductUnit: 1,
|
||||
productsbasicServiceFee: 1,
|
||||
productsadvancePaymentServiceFee: 1,
|
||||
productsbookingPaymentServiceFee: 1,
|
||||
productsbillSortingServiceFee: 1,
|
||||
productstotalServiceFee: 1,
|
||||
productsproductInvoice: 1,
|
||||
productsproductInvoiceItem: 1,
|
||||
productsserviceInvoice: 1,
|
||||
productsserviceInvoiceItem: 1,
|
||||
productsother1: 1,
|
||||
contractAAuthorizedCompanysother: 1,
|
||||
contractAAuthorizedCompanysunifiedCreditCode: 1,
|
||||
contractAAuthorizedCompanysinvoicingAddress: 1,
|
||||
contractAAuthorizedCompanysinvoicingTelephone: 1,
|
||||
contractAAuthorizedCompanyscompanyBank: 1,
|
||||
contractAAuthorizedCompanyscompanyAccount: 1,
|
||||
contractAAuthorizedCompanyscompanyAddress: 1,
|
||||
contractAAuthorizedCompanysother2: 1,
|
||||
contractAAuthorizedPersonsother: 1,
|
||||
contractAAuthorizedPersonscustomerName: 1,
|
||||
contractAAuthorizedPersonsauthPersonType: 1,
|
||||
contractAAuthorizedPersonsphoneNumber: 1,
|
||||
contractAAuthorizedPersonswechat: 1,
|
||||
contractAAuthorizedPersonsidNumber: 1,
|
||||
contractAAuthorizedPersonsemail: 1,
|
||||
contractAAuthorizedPersonsother2: 1,
|
||||
contractBAuthorizedPersonsother: 1,
|
||||
contractBAuthorizedPersonsauthType: 1,
|
||||
contractBAuthorizedPersonsuserId: 1,
|
||||
contractBAuthorizedPersonspostName: 1,
|
||||
contractBAuthorizedPersonsuserRank: 1,
|
||||
contractBAuthorizedPersonsauthDesc: 1,
|
||||
contractBAuthorizedPersonsphoneNumber: 1,
|
||||
contractBAuthorizedPersonswechat: 1,
|
||||
contractBAuthorizedPersonsemail: 1,
|
||||
contractBAuthorizedPersonsother2: 1,
|
||||
})
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
|
|
|
|||
|
|
@ -63,51 +63,51 @@
|
|||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item name="systemInfo">
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="PartnerDataIstrue">
|
||||
<el-descriptions-item label="股东信息">
|
||||
<PartnerData />
|
||||
<PartnerData @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="ChangeRecordDataFormIstrue">
|
||||
<el-descriptions-item label="工商变更数据">
|
||||
<ChangeRecordDataForm />
|
||||
<ChangeRecordDataForm @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="EmployeeDataIstrue">
|
||||
<el-descriptions-item label="董事会成员">
|
||||
<EmployeeData />
|
||||
<EmployeeData @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="CompanyBranchInfoIstrue">
|
||||
<el-descriptions-item label="企业分支机构">
|
||||
<CompanyBranchInfo />
|
||||
<CompanyBranchInfo @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="CompanyaBnormalInfoIstrue">
|
||||
<el-descriptions-item label="企业经营异常信息">
|
||||
<CompanyaBnormalInfo />
|
||||
<CompanyaBnormalInfo @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="CompanyJudgmentDebtorInfoIstrue">
|
||||
<el-descriptions-item label="企业被执行人">
|
||||
<CompanyJudgmentDebtorInfo />
|
||||
<CompanyJudgmentDebtorInfo @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="CompanyCourtInfoIstrue">
|
||||
<el-descriptions-item label="企业法院公告信息">
|
||||
<CompanyCourtInfo />
|
||||
<CompanyCourtInfo @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions :column="4" v-if="CompanyLawsuitInfoIstrue">
|
||||
<el-descriptions-item label="企业法律诉讼信息">
|
||||
<CompanyLawsuitInfo />
|
||||
<CompanyLawsuitInfo @success="getIstrue" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
|
@ -133,7 +133,45 @@ defineOptions({ name: 'CrmCustomerDetailsInfo' })
|
|||
const { customer } = defineProps<{
|
||||
customer: CustomerApi.CustomerVO // 客户明细
|
||||
}>()
|
||||
const { proxy } = getCurrentInstance() as any
|
||||
|
||||
const PartnerDataIstrue = ref(true)
|
||||
const ChangeRecordDataFormIstrue = ref(true)
|
||||
const EmployeeDataIstrue = ref(true)
|
||||
const CompanyBranchInfoIstrue = ref(true)
|
||||
const CompanyaBnormalInfoIstrue = ref(true)
|
||||
const CompanyJudgmentDebtorInfoIstrue = ref(true)
|
||||
const CompanyCourtInfoIstrue = ref(true)
|
||||
const CompanyLawsuitInfoIstrue = ref(true)
|
||||
const activeNames = ref(['basicInfo', 'systemInfo']) // 展示的折叠面板
|
||||
|
||||
const getIstrue = (name, val) => {
|
||||
if(name === 'PartnerDataIstrue') {
|
||||
PartnerDataIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'ChangeRecordDataFormIstrue') {
|
||||
ChangeRecordDataFormIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'EmployeeDataIstrue') {
|
||||
EmployeeDataIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'CompanyBranchInfoIstrue') {
|
||||
CompanyBranchInfoIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'CompanyaBnormalInfoIstrue') {
|
||||
CompanyaBnormalInfoIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'CompanyJudgmentDebtorInfoIstrue') {
|
||||
CompanyJudgmentDebtorInfoIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'CompanyCourtInfoIstrue') {
|
||||
CompanyCourtInfoIstrue.value = !!val.length
|
||||
}
|
||||
if(name === 'CompanyLawsuitInfoIstrue') {
|
||||
console.log('%csrc/views/crm/customer/detail/companyDetailsInfo.vue:171 val.length', 'color: #007acc;', !!val.length);
|
||||
CompanyLawsuitInfoIstrue.value = !!val.length
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
|
|||
|
|
@ -32,12 +32,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await ChangeRecordDataApi.getChangeRecordDataPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','ChangeRecordDataFormIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,12 +35,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await CompanyAbnormalInfoApi.getCompanyAbnormalInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','CompanyaBnormalInfoIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,12 +30,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await CompanyBranchInfoApi.getCompanyBranchInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','CompanyBranchInfoIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,12 +33,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await CompanyCourtInfoApi.getCompanyCourtInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','CompanyCourtInfoIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,12 +33,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await CompanyJudgmentDebtorInfoApi.getCompanyJudgmentDebtorInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','CompanyJudgmentDebtorInfoIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,12 +34,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await CompanyLawsuitInfoApi.getCompanyLawsuitInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','CompanyLawsuitInfoIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,12 +32,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await EmployeeDataApi.getEmployeeDataPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success','EmployeeDataIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,12 +34,14 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const emit = defineEmits(['success'])
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await PartnerDataApi.getPartnerDataPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
emit('success', 'PartnerDataIstrue', list.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,20 +38,20 @@
|
|||
</el-button>
|
||||
</CustomerDetailsHeader>
|
||||
<el-col>
|
||||
<el-tabs>
|
||||
<el-tab-pane label="跟进记录">
|
||||
<FollowUpList :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
<el-tabs v-model="subTabsName" @tab-Click="handleClick">
|
||||
<el-tab-pane label="跟进记录" name="FollowUpListRef">
|
||||
<FollowUpList ref="FollowUpListRef" :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="基本信息">
|
||||
<CustomerDetailsInfo :customer="customer" />
|
||||
</el-tab-pane> -->
|
||||
<el-tab-pane label="工商信息">
|
||||
<CompanyDetailsInfo :customer="customer" />
|
||||
<el-tab-pane label="工商信息" name="CompanyDetailsInfoRef">
|
||||
<CompanyDetailsInfo ref="CompanyDetailsInfoRef" :customer="customer" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="联系人" lazy>
|
||||
<ContactList :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
<el-tab-pane label="联系人" lazy name="ContactListRef">
|
||||
<ContactList ref="ContactListRef" :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="团队成员">
|
||||
<el-tab-pane label="团队成员" name="permissionListRef">
|
||||
<PermissionList
|
||||
ref="permissionListRef"
|
||||
:biz-id="customer.id!"
|
||||
|
|
@ -60,14 +60,14 @@
|
|||
@quit-team="close"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="商机" lazy>
|
||||
<BusinessList :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
<el-tab-pane label="商机" lazy name="BusinessListRef">
|
||||
<BusinessList ref="BusinessListRef" :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="方案报价" lazy>
|
||||
<QuotationList :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
<el-tab-pane label="方案报价" lazy name="QuotationListRef">
|
||||
<QuotationList ref="QuotationListRef" :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="合同" lazy>
|
||||
<ContractList :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
<el-tab-pane label="合同" lazy name="ContractListRef">
|
||||
<ContractList ref="ContractListRef" :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="回访" lazy>
|
||||
<ReturnVisitrecord :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||
|
|
@ -111,6 +111,7 @@ import CustomerDistributeForm from '@/views/crm/customer/pool/CustomerDistribute
|
|||
|
||||
defineOptions({ name: 'CrmCustomerDetail' })
|
||||
|
||||
const subTabsName = ref('FollowUpListRef')
|
||||
const customerId = ref(0) // 客户编号
|
||||
const loading = ref(true) // 加载中
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
|
@ -220,6 +221,33 @@ const close = () => {
|
|||
push({ name: 'CrmCustomer' })
|
||||
}
|
||||
|
||||
const FollowUpListRef = ref('')
|
||||
const CompanyDetailsInfoRef = ref('')
|
||||
const ContactListRef = ref('')
|
||||
const BusinessListRef = ref('')
|
||||
const QuotationListRef = ref('')
|
||||
const ContractListRef = ref('')
|
||||
|
||||
const handleClick = async (val) => {
|
||||
let name = val.props.name
|
||||
|
||||
if(!name) return
|
||||
|
||||
if (val.props.name) {
|
||||
let objRef = {
|
||||
FollowUpListRef: FollowUpListRef.value,
|
||||
CompanyDetailsInfoRef: getCustomer,
|
||||
ContactListRef: ContactListRef.value,
|
||||
BusinessListRef: BusinessListRef.value,
|
||||
QuotationListRef: QuotationListRef.value,
|
||||
ContractListRef: ContractListRef.value,
|
||||
}
|
||||
objRef[name].getList()
|
||||
} else {
|
||||
getCustomer()
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 */
|
||||
const { params } = useRoute()
|
||||
onMounted(() => {
|
||||
|
|
|
|||
|
|
@ -42,15 +42,30 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户级别" prop="level">
|
||||
<el-form-item label="创建时间" prop="timeType">
|
||||
<el-select
|
||||
v-model="queryParams.level"
|
||||
v-model="queryParams.timeType"
|
||||
class="!w-240px"
|
||||
clearable
|
||||
placeholder="请选择客户级别"
|
||||
placeholder="请选择时间类型"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_LEVEL)"
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.TIME_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="合作状态" prop="customerStatus">
|
||||
<el-select
|
||||
v-model="queryParams.customerStatus"
|
||||
class="!w-240px"
|
||||
clearable
|
||||
placeholder="请选择合作状态"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_STSTUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
|
|
@ -81,7 +96,7 @@
|
|||
<Icon class="mr-5px" icon="ep:refresh" />
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-hasPermi="['crm:customer:export']"
|
||||
:loading="exportLoading"
|
||||
plain
|
||||
|
|
@ -90,7 +105,7 @@
|
|||
>
|
||||
<Icon class="mr-5px" icon="ep:download" />
|
||||
导出
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
|
@ -105,27 +120,32 @@
|
|||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="客户来源" prop="source" width="100">
|
||||
<el-table-column align="center" label="来源" prop="source" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合作类型" align="center" prop="mobile" width="120">
|
||||
<el-table-column align="center" label="行业" prop="industryId" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_COOPERATION_TYPE" :value="scope.row.cooperationType" />
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industryId" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合作地区" align="center" prop="telephone" width="130">
|
||||
<el-table-column label="合作状态" align="center" prop="mobile" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_STSTUS" :value="scope.row.cooperationType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="合作地区" align="center" prop="telephone" width="130">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_COOPERATION_AREA" :value="scope.row.cooperationArea" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="客户级别" prop="level" width="135">
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column align="center" label="客户级别" prop="level" width="135">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="所属行业" prop="industryId" width="100">
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column align="center" label="所属行业" prop="industryId" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industryId" />
|
||||
</template>
|
||||
|
|
@ -137,13 +157,15 @@
|
|||
label="下次联系时间"
|
||||
prop="contactNextTime"
|
||||
width="180px"
|
||||
/>
|
||||
/> -->
|
||||
<el-table-column align="center" label="通讯地址" prop="contactAddress" width="200" />
|
||||
|
||||
<el-table-column align="center" label="备注" prop="remark" width="200" />
|
||||
<el-table-column align="center" label="成交状态" prop="dealStatus">
|
||||
<!-- <el-table-column align="center" label="成交状态" prop="dealStatus">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.dealStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column
|
||||
:formatter="dateFormatter"
|
||||
align="center"
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
align="center"
|
||||
label="关联商机"
|
||||
prop="businessIds"
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
{{ business.name }}
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column align="center" label="操作" v-if="!type">
|
||||
<template #default="scope">
|
||||
<el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button>
|
||||
|
|
@ -161,6 +161,8 @@ const getList = async () => {
|
|||
loading.value = false
|
||||
}
|
||||
}
|
||||
defineExpose({ getList })
|
||||
|
||||
|
||||
const previewPic = (val) => {
|
||||
show.value = true
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ watch(
|
|||
}
|
||||
)
|
||||
|
||||
defineExpose({ openForm, validateOwnerUser, validateWrite, isPool })
|
||||
defineExpose({ openForm, validateOwnerUser, validateWrite, isPool, getList })
|
||||
const emits = defineEmits<{
|
||||
(e: 'quitTeam'): void
|
||||
}>()
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
<template>
|
||||
<ContentWrap class="mt-10px">
|
||||
<el-form
|
||||
<ContentWrap class="mt-10px print-container" id="printBox">
|
||||
<!-- <button v-print="print">打印</button> -->
|
||||
|
||||
<processForm
|
||||
ref="formRef"
|
||||
v-bind="$attrs"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
:fields="formFields"
|
||||
label-width="110px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
|
||||
|
||||
<template #businessId>
|
||||
<el-col :span="8" v-if="!route.query.taskId">
|
||||
<el-form-item label="选择商机" prop="businessId">
|
||||
<el-select v-model="formData.businessId" disabled clearable @change="onBusinessChange">
|
||||
|
|
@ -22,29 +24,41 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #no>
|
||||
<el-col :span="8" v-if="formType">
|
||||
<el-form-item label="报价单编号" prop="">
|
||||
<el-input v-model="formData.no" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<ContentWrap style="border: none; font-weight: 700">风控信息</ContentWrap>
|
||||
<el-row>
|
||||
</template>
|
||||
<template #other>
|
||||
<el-col :span="24">
|
||||
<ContentWrap style="border: none; font-weight: 700">风控信息</ContentWrap>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditAmount>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="系统授信额度" prop="customerId">
|
||||
<el-input v-model="formData.creditAmount" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditLimitNum>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信额度调整" prop="creditLimitNum">
|
||||
<el-input v-model="formData.creditLimitNum" disabled @input="changeNum" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditLimit>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="最终授信额度" prop="creditLimit">
|
||||
<el-input v-model="formData.creditLimit" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #customerId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" :disabled="true" v-model="formData.customerId" />
|
||||
|
|
@ -58,6 +72,8 @@
|
|||
</el-select> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #cooperationType>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="cooperationType">
|
||||
<el-select v-model="formData.cooperationType" disabled placeholder="" filterable clearable class="w-1/1">
|
||||
|
|
@ -70,6 +86,8 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #regType>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="公司类型" prop="regType">
|
||||
<el-input v-model="formData.regType" disabled clearable />
|
||||
|
|
@ -80,21 +98,29 @@
|
|||
<el-input v-model="formData.listingStatus" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</template>
|
||||
<template #financingInfo>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资信息" prop="financingInfo">
|
||||
<el-input v-model="formData.financingInfo" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #actualCapital>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="actualCapital">
|
||||
<el-input v-model="formData.actualCapital" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #socialEmployeeNum>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
||||
<el-input v-model="formData.socialEmployeeNum" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #startDate>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="成立日期" prop="startDate">
|
||||
<el-input v-model="formData.startDate" disabled clearable />
|
||||
|
|
@ -110,8 +136,8 @@
|
|||
<el-input v-model="formData.serviceStatus" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row>
|
||||
</template>
|
||||
<template #defendantRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被告记录" prop="defendantRecord">
|
||||
<el-radio-group v-model="formData.defendantRecord" disabled>
|
||||
|
|
@ -120,6 +146,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #abnormalService>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经营异常" prop="abnormalService">
|
||||
<el-radio-group v-model="formData.abnormalService" disabled>
|
||||
|
|
@ -128,6 +156,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #equityPledge>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="股权出质" prop="equityPledge">
|
||||
<el-radio-group v-model="formData.equityPledge" disabled>
|
||||
|
|
@ -136,6 +166,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #dishonestyRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="失信记录" prop="dishonestyRecord">
|
||||
<el-radio-group v-model="formData.dishonestyRecord" disabled>
|
||||
|
|
@ -144,6 +176,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #financeRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资记录" prop="financeRecord">
|
||||
<el-radio-group v-model="formData.financeRecord" disabled>
|
||||
|
|
@ -152,6 +186,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #judgmentRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被执行记录" prop="judgmentRecord">
|
||||
<el-radio-group v-model="formData.judgmentRecord" disabled>
|
||||
|
|
@ -160,10 +196,27 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<ContentWrap style="border: none; font-weight: 700">需求信息</ContentWrap>
|
||||
</template>
|
||||
<div class="page-break"></div>
|
||||
<template #other1>
|
||||
<el-col :span="24">
|
||||
<ContentWrap style="border: none; font-weight: 700">需求信息</ContentWrap>
|
||||
</el-col>
|
||||
|
||||
<el-row>
|
||||
</template>
|
||||
<template #partnerCompanyId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="partnerType">
|
||||
<el-select v-model="formData.partnerType" clearable disabled placeholder="请选择合作类型">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE)"
|
||||
: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="partnerCompanyId">
|
||||
<el-select v-model="formData.partnerCompanyId" clearable disabled @change="onPartnerChange">
|
||||
|
|
@ -176,21 +229,29 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditCode>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="统一信用代码" prop="creditNo">
|
||||
<el-input v-model="formData.creditCode" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #bankName>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #bankAccount>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input v-model="formData.bankAccount" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #legalRepresentative>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||
<el-input v-model="formData.legalRepresentative" disabled />
|
||||
|
|
@ -207,37 +268,38 @@
|
|||
</el-form-item>
|
||||
</el-col> -->
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
</template>
|
||||
<template #deptId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="归属部门" prop="deptId">
|
||||
<el-tree-select
|
||||
v-model="formData.deptId"
|
||||
disabled
|
||||
:data="deptTree"
|
||||
:props="defaultProps"
|
||||
filterable
|
||||
check-strictly
|
||||
placeholder=""
|
||||
node-key="id"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
</template>
|
||||
<template #ownerUserId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="归属部门" prop="deptId">
|
||||
<el-tree-select
|
||||
v-model="formData.deptId"
|
||||
disabled
|
||||
:data="deptTree"
|
||||
:props="defaultProps"
|
||||
filterable
|
||||
check-strictly
|
||||
placeholder=""
|
||||
node-key="id"
|
||||
/>
|
||||
<el-form-item label="商机负责人" prop="ownerUserId">
|
||||
<el-select v-model="formData.ownerUserId" placeholder="" disabled>
|
||||
<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="ownerUserId">
|
||||
<el-select v-model="formData.ownerUserId" placeholder="" disabled>
|
||||
<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="expanderUserId">
|
||||
<el-select v-model="formData.expanderUserId" placeholder="" disabled>
|
||||
|
|
@ -250,18 +312,20 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="方案报价人" prop="pricingUserId">
|
||||
<el-select v-model="formData.pricingUserId" placeholder="" disabled>
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.nickname"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #pricingUserId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="方案报价人" prop="pricingUserId">
|
||||
<el-select v-model="formData.pricingUserId" placeholder="" disabled>
|
||||
<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="signUserId">
|
||||
<el-select v-model="formData.signUserId" placeholder="" disabled>
|
||||
|
|
@ -289,68 +353,79 @@
|
|||
<el-input v-model="formData.signWechat" placeholder="请输入签约人微信" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</template>
|
||||
<template #paymentTerm>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账期" prop="paymentTerm">
|
||||
<el-select v-model="formData.paymentTerm" placeholder="" disabled>
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions('payment_term')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditMethod>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信方式" prop="creditMethod">
|
||||
<el-select v-model="formData.creditMethod" placeholder="" disabled >
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_method')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditCalcCycle>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信计算周期" prop="creditCalcCycle">
|
||||
<el-select v-model="formData.creditCalcCycle" placeholder="" disabled >
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_calc_cycle')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #invoiceTemplateId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
||||
<el-select v-model="formData.invoiceTemplateId" placeholder="" disabled >
|
||||
<el-option
|
||||
v-for="dict in templateOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.name"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #quotationTimes>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="第几次报价" prop="quotationTimes">
|
||||
<el-input v-model="formData.quotationTimes" disabled placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #creditLimit1>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信额度" prop="creditLimit">
|
||||
<el-input v-model="formData.creditLimit" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账期" prop="paymentTerm">
|
||||
<el-select v-model="formData.paymentTerm" placeholder="" disabled>
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions('payment_term')"
|
||||
: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="creditMethod">
|
||||
<el-select v-model="formData.creditMethod" placeholder="" disabled >
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_method')"
|
||||
: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="creditCalcCycle">
|
||||
<el-select v-model="formData.creditCalcCycle" placeholder="" disabled >
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_calc_cycle')"
|
||||
: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="invoiceTemplateId">
|
||||
<el-select v-model="formData.invoiceTemplateId" placeholder="" disabled >
|
||||
<el-option
|
||||
v-for="dict in templateOptions"
|
||||
:key="dict.id"
|
||||
:label="dict.name"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="第几次报价" prop="quotationTimes">
|
||||
<el-input v-model="formData.quotationTimes" disabled placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信额度" prop="creditLimit">
|
||||
<el-input v-model="formData.creditLimit" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
</template>
|
||||
<template #serviceFeeCollectionMethodId>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="服务费收取方式" prop="serviceFeeCollectionMethodId">
|
||||
<el-select v-model="formData.serviceFeeCollectionMethodId" disabled placeholder="">
|
||||
|
|
@ -363,6 +438,8 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #onlinePrice>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="基础服务费合计" prop="onlinePrice">
|
||||
<el-input
|
||||
|
|
@ -381,6 +458,8 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</template>
|
||||
<template #totalPrice>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="服务费收入合计" prop="totalPrice">
|
||||
<el-input
|
||||
|
|
@ -390,14 +469,27 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
</processForm>
|
||||
<!-- 子表的表单 -->
|
||||
<el-tabs v-model="subTabsName">
|
||||
<el-tab-pane label="报价产品关联" name="quotationProduct">
|
||||
<QuotationProductForm ref="quotationProductFormRef" :products="formData.products" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<!-- <template #other> -->
|
||||
<!-- <el-tabs v-model="subTabsName" @tab-Click="handleClick">
|
||||
<el-tab-pane label="报价产品关联" name="quotationProduct"> -->
|
||||
<el-col :span="24">
|
||||
<ContentWrap style="border: none; font-weight: 700">报价产品关联</ContentWrap>
|
||||
</el-col>
|
||||
<ContentWrap>
|
||||
<QuotationProductForm ref="quotationProductFormRef" :formFields="formFields" :products="formData.products" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
|
||||
</ContentWrap>
|
||||
<!-- </el-tab-pane> -->
|
||||
<!-- <el-tab-pane label="营收分析" name="RevenueAnalysis"> -->
|
||||
<ContentWrap style="border: none; font-weight: 700">营收分析</ContentWrap>
|
||||
<ContentWrap>
|
||||
<RevenueAnalysis ref="RevenueAnalysisFormRef" :formFields="formFields" :quotation-id="formData.id" :products="formData.products" />
|
||||
</ContentWrap>
|
||||
<!-- </el-tab-pane>
|
||||
</el-tabs> -->
|
||||
<!-- </template> -->
|
||||
</ContentWrap>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
|
|
@ -412,6 +504,8 @@ import * as UserApi from '@/api/system/user'
|
|||
import * as DeptApi from '@/api/system/dept'
|
||||
import * as BusinessApi from '@/api/crm/business'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
import { getLimitForm } from '@/api/bpm/form'
|
||||
import RevenueAnalysis from './components/RevenueAnalysis.vue'
|
||||
|
||||
|
||||
/** CRM 方案报价 表单 */
|
||||
|
|
@ -432,11 +526,92 @@ const props = defineProps({
|
|||
})
|
||||
const invoiceTemplateList = ref([])
|
||||
const { proxy }: any = getCurrentInstance();
|
||||
//这里是打印的配置项
|
||||
const print=ref({
|
||||
id: 'printBox',//这里的id就是上面我们的打印区域id,实现指哪打哪
|
||||
popTitle: '报价', // 打印配置页上方的标题
|
||||
extraHead: '', // 最上方的头部文字,附加在head标签上的额外标签,使用逗号分割
|
||||
preview: false, // 是否启动预览模式,默认是false
|
||||
previewTitle: '预览的标题', // 打印预览的标题
|
||||
pageBreak: 'auto', // 自动分页
|
||||
previewPrintBtnLabel: '预览结束,开始打印', // 打印预览的标题下方的按钮文本,点击可进入打印
|
||||
zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高
|
||||
previewBeforeOpenCallback() { console.log('正在加载预览窗口!'); }, // 预览窗口打开之前的callback
|
||||
previewOpenCallback() { console.log('已经加载完预览窗口,预览打开了!') }, // 预览窗口打开时的callback
|
||||
beforeOpenCallback() { console.log('开始打印之前!') }, // 开始打印之前的callback
|
||||
openCallback() { console.log('执行打印了!') }, // 调用打印时的callback
|
||||
closeCallback() { console.log('关闭了打印工具!') }, // 关闭打印的callback(无法区分确认or取消)
|
||||
clickMounted() { console.log('点击v-print绑定的按钮了!') },
|
||||
|
||||
})
|
||||
const isTrue = ref(false)
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||||
businessId: 1,
|
||||
no: 1,
|
||||
other: 1,
|
||||
creditAmount: 1,
|
||||
creditLimitNum: 1,
|
||||
creditLimit: 1,
|
||||
customerId: 1,
|
||||
cooperationType: 1,
|
||||
regType: 1,
|
||||
financingInfo: 1,
|
||||
actualCapital: 1,
|
||||
socialEmployeeNum: 1,
|
||||
startDate: 1,
|
||||
defendantRecord: 1,
|
||||
abnormalService: 1,
|
||||
equityPledge: 1,
|
||||
dishonestyRecord: 1,
|
||||
financeRecord: 1,
|
||||
judgmentRecord: 1,
|
||||
other1: 1,
|
||||
partnerCompanyId: 1,
|
||||
creditCode: 1,
|
||||
bankName: 1,
|
||||
bankAccount: 1,
|
||||
legalRepresentative: 1,
|
||||
deptId: 1,
|
||||
ownerUserId: 1,
|
||||
pricingUserId: 1,
|
||||
paymentTerm: 1,
|
||||
creditMethod: 1,
|
||||
creditCalcCycle: 1,
|
||||
invoiceTemplateId: 1,
|
||||
quotationTimes: 1,
|
||||
creditLimit1: 1,
|
||||
serviceFeeCollectionMethodId: 1,
|
||||
onlinePrice: 1,
|
||||
totalPrice: 1,
|
||||
productsother: 1,
|
||||
productscategory: 1,
|
||||
productsdetailType: 1,
|
||||
productsproductUnit: 1,
|
||||
productsbasicServiceFee: 1,
|
||||
productsadvancePaymentServiceFee: 1,
|
||||
productsbookingPaymentServiceFee: 1,
|
||||
productsbillSortingServiceFee: 1,
|
||||
productstotalServiceFee: 1,
|
||||
productsproductInvoice: 1,
|
||||
productsproductInvoiceItem: 1,
|
||||
productsserviceInvoice: 1,
|
||||
productsserviceInvoiceItem: 1,
|
||||
quotationProductscategory: 1,
|
||||
quotationProductsdetailType: 1,
|
||||
quotationProductsrevenueAnalysisVOsalesVolume: 1,
|
||||
quotationProductsrevenueAnalysisVOtotalOrderVolume: 1,
|
||||
quotationProductsrevenueAnalysisVOtotalIncome: 1,
|
||||
quotationProductsrevenueAnalysisVOincomeInterestRate: 1,
|
||||
quotationProductsrevenueAnalysisVOdeductibleCost: 1,
|
||||
quotationProductsrevenueAnalysisVOprofit: 1,
|
||||
quotationProductsrevenueAnalysisVOprofitRate: 1,
|
||||
quotationProductsrevenueAnalysisVOprofitSharingRatio: 1,
|
||||
quotationProductsrevenueAnalysisVOprofitSharingIncome: 1,
|
||||
})
|
||||
const formData = ref({
|
||||
no: undefined,
|
||||
customerId: undefined,
|
||||
|
|
@ -504,32 +679,6 @@ const formRules = reactive({
|
|||
// creditMethod: [{ required: true, message: '授信方式不能为空', trigger: 'change' }],
|
||||
// creditCalcCycle: [{ required: true, message: '授信计算周期不能为空', trigger: 'change' }],
|
||||
})
|
||||
watch(
|
||||
() => formData.value.products,
|
||||
(newProducts) => {
|
||||
if (!Array.isArray(newProducts)) {
|
||||
console.warn('formData.value.products is not an array');
|
||||
return;
|
||||
}
|
||||
|
||||
let totalOnlinePrice = 0;
|
||||
let totalOfflinePrice = 0;
|
||||
|
||||
for (const product of newProducts) {
|
||||
if (typeof product.basicServiceFee) {
|
||||
totalOnlinePrice += Number(product.basicServiceFee);
|
||||
}
|
||||
if (typeof product.totalServiceFee) {
|
||||
totalOfflinePrice += Number(product.totalServiceFee);
|
||||
}
|
||||
}
|
||||
formData.value.onlinePrice = totalOnlinePrice.toFixed(2)
|
||||
// formData.value.offlinePrice = (totalOfflinePrice + totalOnlinePrice).toFixed(2)
|
||||
// let all = totalOnlinePrice + totalOfflinePrice + totalOnlinePrice
|
||||
formData.value.totalPrice = totalOfflinePrice.toFixed(2)
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 子表的表单 */
|
||||
|
|
@ -611,6 +760,36 @@ const onPartnerChange = async (id: string) => {
|
|||
const changeNum = (val) => {
|
||||
formData.value.creditLimit = (Number(val) + (formData.value.creditAmount || 0)).toFixed(2)
|
||||
}
|
||||
//获取营收分析
|
||||
const RevenueAnalysisFormRef = ref('')
|
||||
const newProducts = ref([])
|
||||
const handleClick = (val) => {
|
||||
// if (subTabsName.value == 'RevenueAnalysis') return
|
||||
|
||||
if(!formData.value.serviceFeeCollectionMethodId) return message.warning('请选择服务费收取方式')
|
||||
|
||||
newProducts.value = []
|
||||
formData.value.products.forEach( item => {
|
||||
newProducts.value.push({
|
||||
id: item.productId,
|
||||
onlinePrice: item.onlinePrice,
|
||||
offlinePrice: item.offlinePrice,
|
||||
productUnit: item.productUnit,
|
||||
productName: item.productName,
|
||||
detailType: item.detailType,
|
||||
category: item.category
|
||||
})
|
||||
})
|
||||
let data = {
|
||||
businessId: formData.value.businessId,
|
||||
creditMethod: formData.value.creditMethod,
|
||||
serviceFeeCollectionMethodId: formData.value.serviceFeeCollectionMethodId,
|
||||
paymentTerm: formData.value.paymentTerm,
|
||||
quotationProducts: newProducts.value
|
||||
}
|
||||
|
||||
RevenueAnalysisFormRef.value.getData(data)
|
||||
}
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string) => {
|
||||
formType.value = type
|
||||
|
|
@ -631,11 +810,12 @@ const open = async (type: string) => {
|
|||
totalOfflinePrice += Number(product.offlinePrice);
|
||||
}
|
||||
}
|
||||
handleClick()
|
||||
formData.value.serviceFeeCollectionMethodId = Number(formData.value.serviceFeeCollectionMethodId)
|
||||
formData.value.onlinePrice = totalOnlinePrice.toFixed(2)
|
||||
// formData.value.onlinePrice = totalOnlinePrice.toFixed(2)
|
||||
formData.value.offlinePrice = (totalOfflinePrice + totalOnlinePrice).toFixed(2)
|
||||
let all = totalOnlinePrice + totalOfflinePrice + totalOnlinePrice
|
||||
formData.value.totalPrice = all.toFixed(2)
|
||||
// let all = totalOnlinePrice + totalOfflinePrice + totalOnlinePrice
|
||||
// formData.value.totalPrice = all.toFixed(2)
|
||||
formData.value.creditLimit = ((formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)).toFixed(2)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
|
|
@ -648,6 +828,11 @@ const open = async (type: string) => {
|
|||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
const printContent = () => {
|
||||
// 使用 window.print() 来触发打印
|
||||
window.print();
|
||||
}
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
|
|
@ -719,11 +904,36 @@ const resetForm = () => {
|
|||
}
|
||||
|
||||
const route = useRoute();
|
||||
//获取字段权限
|
||||
const getLimit = async () => {
|
||||
let data = {
|
||||
modelNodeId: route.query.taskDefinitionKey,
|
||||
processDefinitionId: route.query.processDefinitionId
|
||||
}
|
||||
let field = await getLimitForm(data)
|
||||
for(let key in formFields.value) {
|
||||
|
||||
if(formFields.value.hasOwnProperty(key)) {
|
||||
field.fields.map( v => {
|
||||
let newKey = v.field
|
||||
if(v.field.indexOf('.') > -1) {
|
||||
newKey = v.field.split('.').join('')
|
||||
}
|
||||
|
||||
if(newKey === key) formFields.value[key] = v.permission
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
isTrue.value = !!route.query.isDetail
|
||||
formType.value = props.id || route.query.id;
|
||||
|
||||
if (formType.value) open(formType.value)
|
||||
|
||||
if(route.query.processDefinitionId) getLimit()
|
||||
|
||||
// 获得客户列表
|
||||
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||
// 获得用户列表
|
||||
|
|
@ -746,4 +956,74 @@ onMounted(async () => {
|
|||
})
|
||||
orgList.value = org.list
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@media print {
|
||||
body, html {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table {
|
||||
font-size: 12px; /* 缩小字体大小 */
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
/* transform: scale(0.8); */
|
||||
width: 100%; /* 让表格宽度自适应页面宽度 */
|
||||
/* table-layout: fixed; 固定表格布局 */
|
||||
word-wrap: break-word; /* 自动换行 */
|
||||
page-break-inside: auto; /* 允许表格在页面内分页 */
|
||||
/* transform: rotate(270deg); */
|
||||
|
||||
}
|
||||
::v-deep .el-table {
|
||||
table-layout: auto !important; /* 动态调整表格布局 */
|
||||
width: 100% !important; /* 确保表格宽度自适应 */
|
||||
/* transform: rotate(90deg); */
|
||||
}
|
||||
::v-deep .el-table__header-wrapper .el-table__header,
|
||||
::v-deep .el-table__body-wrapper .el-table__body {
|
||||
width: 100% !important; /* 确保表头和表体宽度一致 */
|
||||
}
|
||||
::v-deep .el-table .cell.el-tooltip {
|
||||
text-overflow: clip;
|
||||
white-space: normal;
|
||||
min-width: none;
|
||||
width: auto !important;
|
||||
border: none !important;
|
||||
}
|
||||
th, td {
|
||||
padding: 2px; /* 减小单元格内边距 */
|
||||
word-wrap: break-word; /* 自动换行 */
|
||||
white-space: normal; /* 允许内容换行 */
|
||||
}
|
||||
tr {
|
||||
page-break-inside: avoid; /* 避免表格行被分割 */
|
||||
}
|
||||
@page {
|
||||
margin: 0;
|
||||
}
|
||||
#app {
|
||||
display: none; /* 隐藏不需要打印的内容 */
|
||||
}
|
||||
#print-section {
|
||||
display: block; /* 显示需要打印的内容 */
|
||||
}
|
||||
.page-break {
|
||||
page-break-after: always;
|
||||
}
|
||||
.print-container {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
.time-in-top-left {
|
||||
display: none; /* 或者 position: absolute; left: -1000px; */
|
||||
}
|
||||
.bottom-left-corner {
|
||||
display: none; /* 或者 position: absolute; left: -1000px; */
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="cooperationType">
|
||||
<el-select v-model="formData.cooperationType" filterable clearable placeholder="请选择合作类型" class="w-1/1">
|
||||
<el-select v-model="formData.cooperationType" disabled filterable clearable placeholder="" class="w-1/1">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_COOPERATION_TYPE)"
|
||||
:key="dict.value"
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="公司类型" prop="regType">
|
||||
<el-input v-model="formData.regType" placeholder="请输入公司类型" clearable />
|
||||
<el-input v-model="formData.regType" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
|
|
@ -82,22 +82,22 @@
|
|||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资信息" prop="financingInfo">
|
||||
<el-input v-model="formData.financingInfo" placeholder="请输入融资信息" clearable />
|
||||
<el-input v-model="formData.financingInfo" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="actualCapital">
|
||||
<el-input v-model="formData.actualCapital" placeholder="请输入实缴资金" clearable />
|
||||
<el-input v-model="formData.actualCapital" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
||||
<el-input v-model="formData.socialEmployeeNum" placeholder="请输入参保人数" clearable />
|
||||
<el-input v-model="formData.socialEmployeeNum" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="成立日期" prop="startDate">
|
||||
<el-input v-model="formData.startDate" placeholder="请输入成立日期" clearable />
|
||||
<el-input v-model="formData.startDate" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -165,13 +165,13 @@
|
|||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="partnerCompanyId">
|
||||
<el-select v-model="formData.partnerCompanyId" clearable placeholder="请选择合作主体" @change="onPartnerChange">
|
||||
<el-form-item label="合作类型" prop="partnerType">
|
||||
<el-select v-model="formData.partnerType" clearable placeholder="请选择合作类型">
|
||||
<el-option
|
||||
v-for="dict in orgList"
|
||||
:key="dict.id"
|
||||
:label="dict.orgName"
|
||||
:value="dict.id"
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
|
@ -326,7 +326,7 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信计算周期" prop="creditCalcCycle">
|
||||
<el-form-item label="授信计算周期" prop="">
|
||||
<el-input v-model="formData.creditCalcCycle" disabled placeholder="" />
|
||||
<!-- <el-select v-model="formData.creditCalcCycle" placeholder="请选择授信计算周期">
|
||||
<el-option
|
||||
|
|
@ -353,24 +353,24 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="第几次报价" prop="quotationTimes">
|
||||
<el-input v-model="formData.quotationTimes" placeholder="请输入报价次数" />
|
||||
<el-input v-model="formData.quotationTimes" disabled placeholder="请输入报价次数" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="授信额度" prop="creditLimit">
|
||||
<el-input v-model="formData.creditLimit" placeholder="请输入授信额度" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="服务费收取方式" prop="serviceFeeCollectionMethodId">
|
||||
<el-select v-model="formData.serviceFeeCollectionMethodId" @change="changeQuotationTimes" placeholder="请选择服务费收取方式">
|
||||
<el-option
|
||||
v-for="dict in serverMethodList"
|
||||
:key="dict.id"
|
||||
:label="dict.productDetail"
|
||||
:value="dict.id"
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
|
@ -515,14 +515,14 @@ const formRules = reactive({
|
|||
customerId: [{ required: true, message: '客户id不能为空', trigger: 'change' }],
|
||||
businessId: [{ required: true, message: '商机编号不能为空', trigger: 'change' }],
|
||||
invoiceTemplateId: [{ required: true, message: '票据模板Id不能为空', trigger: 'change' }],
|
||||
actualCapital: [{ required: true, message: '实缴资金不能为空', trigger: 'blur' }],
|
||||
socialEmployeeNum: [{ required: true, message: '参保人数不能为空', trigger: 'blur' }],
|
||||
defendantRecord: [{ required: true, message: '被告记录不能为空', trigger: 'blur' }],
|
||||
abnormalService: [{ required: true, message: '经营异常不能为空', trigger: 'blur' }],
|
||||
equityPledge: [{ required: true, message: '股权出质不能为空', trigger: 'blur' }],
|
||||
dishonestyRecord: [{ required: true, message: '失信记录不能为空', trigger: 'blur' }],
|
||||
financeRecord: [{ required: true, message: '融资记录不能为空', trigger: 'blur' }],
|
||||
judgmentRecord: [{ required: true, message: '被执行记录不能为空', trigger: 'blur' }],
|
||||
// actualCapital: [{ required: true, message: '实缴资金不能为空', trigger: 'blur' }],
|
||||
// socialEmployeeNum: [{ required: true, message: '参保人数不能为空', trigger: 'blur' }],
|
||||
// defendantRecord: [{ required: true, message: '被告记录不能为空', trigger: 'blur' }],
|
||||
// abnormalService: [{ required: true, message: '经营异常不能为空', trigger: 'blur' }],
|
||||
// equityPledge: [{ required: true, message: '股权出质不能为空', trigger: 'blur' }],
|
||||
// dishonestyRecord: [{ required: true, message: '失信记录不能为空', trigger: 'blur' }],
|
||||
// financeRecord: [{ required: true, message: '融资记录不能为空', trigger: 'blur' }],
|
||||
// judgmentRecord: [{ required: true, message: '被执行记录不能为空', trigger: 'blur' }],
|
||||
paymentTerm: [{ required: true, message: '账期不能为空', trigger: 'change' }],
|
||||
partnerCompanyId: [{ required: true, message: '合作主体不能为空', trigger: 'change' }],
|
||||
creditMethod: [{ required: true, message: '授信方式不能为空', trigger: 'change' }],
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
:inline-message="true"
|
||||
>
|
||||
<AuthTable :data="formData" :fields="formFields" class="-mt-10px">
|
||||
<template #productsother>
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<!-- <template #productsother> -->
|
||||
<!-- <el-table-column label="序号" type="index" width="100" /> -->
|
||||
<!-- <el-table-column label="产品名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!">
|
||||
|
|
@ -17,9 +17,9 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</template>
|
||||
<!-- </template> -->
|
||||
<template #productscategory>
|
||||
<el-table-column label="产品类型" align="center" min-width="150">
|
||||
<el-table-column label="产品类型" align="center" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,64 +1,85 @@
|
|||
<template>
|
||||
<el-table :data="formData" class="-mt-10px" v-loading="loading" :summary-method="getSummaries"
|
||||
<AuthTable :data="formData" :fields="formFields" class="-mt-10px" v-loading="loading" :summary-method="getSummaries"
|
||||
show-summary :span-method="arraySpanMethod">
|
||||
<el-table-column label="产品类型" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="产品明细类型" align="center" min-width="190">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="销售额" align="center" prop="revenueAnalysisVO.salesVolume" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.salesVolume}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单量" align="center" prop="revenueAnalysisVO.totalOrderVolume" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.totalOrderVolume}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="营业收入" align="center" prop="revenueAnalysisVO.totalIncome" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.totalIncome}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="收入利率(%)" align="center" prop="revenueAnalysisVO.incomeInterestRate" min-width="130">
|
||||
<template #default="{ row }">
|
||||
{{(row.revenueAnalysisVO.incomeInterestRate * 100).toFixed(2) + '%'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="应扣成本" align="center" prop="revenueAnalysisVO.deductibleCost" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.deductibleCost}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="利润" align="center" prop="revenueAnalysisVO.profit" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.profit}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="利润率(%)" align="center" prop="revenueAnalysisVO.profitRate" min-width="250">
|
||||
<template #default="{ row }">
|
||||
{{(row.revenueAnalysisVO.profitRate * 100).toFixed(2) + '%'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="您的分润比例(%)" align="center" prop="revenueAnalysisVO.profitSharingRatio" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<!-- <dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" /> -->
|
||||
{{(row.revenueAnalysisVO.profitSharingRatio * 100).toFixed(2) + '%'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="您的分润收入" align="center" prop="revenueAnalysisVO.profitSharingIncome" min-width="250">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.profitSharingIncome}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<template #quotationProductscategory>
|
||||
<el-table-column label="产品类型" align="center" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsdetailType>
|
||||
<el-table-column label="产品明细类型" align="center" min-width="190">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOsalesVolume>
|
||||
<el-table-column label="销售额" align="center" prop="revenueAnalysisVO.salesVolume" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.salesVolume}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOtotalOrderVolume>
|
||||
<el-table-column label="订单量" align="center" prop="revenueAnalysisVO.totalOrderVolume" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.totalOrderVolume}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOtotalIncome>
|
||||
<el-table-column label="营业收入" align="center" prop="revenueAnalysisVO.totalIncome" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.totalIncome}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOincomeInterestRate>
|
||||
<el-table-column label="收入利率(%)" align="center" prop="revenueAnalysisVO.incomeInterestRate" min-width="130">
|
||||
<template #default="{ row }">
|
||||
{{(row.revenueAnalysisVO.incomeInterestRate * 100).toFixed(2) + '%'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOdeductibleCost>
|
||||
<el-table-column label="应扣成本" align="center" prop="revenueAnalysisVO.deductibleCost" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.deductibleCost}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOprofit>
|
||||
<el-table-column label="利润" align="center" prop="revenueAnalysisVO.profit" min-width="150">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.profit}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOprofitRate>
|
||||
<el-table-column label="利润率(%)" align="center" prop="revenueAnalysisVO.profitRate" min-width="250">
|
||||
<template #default="{ row }">
|
||||
{{(row.revenueAnalysisVO.profitRate * 100).toFixed(2) + '%'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOprofitSharingRatio>
|
||||
<el-table-column label="您的分润比例(%)" align="center" prop="revenueAnalysisVO.profitSharingRatio" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<!-- <dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" /> -->
|
||||
{{(row.revenueAnalysisVO.profitSharingRatio * 100).toFixed(2) + '%'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template #quotationProductsrevenueAnalysisVOprofitSharingIncome>
|
||||
<el-table-column label="您的分润收入" align="center" prop="revenueAnalysisVO.profitSharingIncome" min-width="250">
|
||||
<template #default="{ row }">
|
||||
{{row.revenueAnalysisVO.profitSharingIncome}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</AuthTable>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
|
@ -69,7 +90,7 @@ import * as BusinessApi from '@/api/crm/business'
|
|||
const props = defineProps<{
|
||||
quotationId: undefined, // 报价编号(主表的关联字段)
|
||||
products: undefined
|
||||
|
||||
formFields: {}
|
||||
}>()
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@
|
|||
>
|
||||
进度
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleEnter(scope.row)"
|
||||
|
|
@ -202,14 +202,24 @@
|
|||
v-if="scope.row.auditStatus == 2 && scope.row.confirmStatus == 0"
|
||||
>
|
||||
客户确认
|
||||
</el-button> -->
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleEnter(scope.row)"
|
||||
v-hasPermi="['crm:quotation:customerConfirm']"
|
||||
v-if="scope.row.auditStatus != 0 && scope.row.auditStatus != 2"
|
||||
>
|
||||
打印
|
||||
</el-button>
|
||||
<el-dropdown
|
||||
v-if="scope.row.auditStatus == 0"
|
||||
v-if="(scope.row.auditStatus == 0 || scope.row.auditStatus == 2) && scope.row.confirmStatus == 0"
|
||||
@command="(command) => handleCommand(command, scope.row)"
|
||||
v-hasPermi="[
|
||||
'crm:quotation:delete',
|
||||
'crm:customer-suggestion:query',
|
||||
'system:permission:assign-user-role'
|
||||
'system:permission:assign-user-role',
|
||||
'crm:quotation:customerConfirm'
|
||||
]"
|
||||
>
|
||||
<el-button type="primary" link>更多<Icon icon="ep:d-arrow-right" /> </el-button>
|
||||
|
|
@ -227,9 +237,15 @@
|
|||
>
|
||||
客户确认
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
command="handleEnter"
|
||||
v-if="scope.row.confirmStatus == 0"
|
||||
>
|
||||
打印
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
command="handleProcessDetail"
|
||||
v-if="checkPermi(['crm:customer-suggestion:query']) && scope.row.auditStatus != 0"
|
||||
v-if="checkPermi(['crm:customer-suggestion:query']) && scope.row.auditStatus == 1"
|
||||
>
|
||||
进度
|
||||
</el-dropdown-item>
|
||||
|
|
@ -247,6 +263,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
|
|
@ -445,3 +462,4 @@ onActivated(()=>{
|
|||
getList()
|
||||
})
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
||||
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
||||
|
|
@ -40,8 +41,8 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位id" prop="postId">
|
||||
<el-input v-model="formData.postId" placeholder="请输入岗位id" />
|
||||
<el-form-item label="岗位" prop="postIds">
|
||||
<!-- <el-input v-model="formData.postId" placeholder="请输入岗位id" /> -->
|
||||
<!-- <el-form-item label="岗位" prop="postIds"> -->
|
||||
<el-select v-model="formData.postIds" multiple placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in postList"
|
||||
|
|
@ -50,7 +51,7 @@
|
|||
:value="item.id!"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- </el-form-item> -->
|
||||
</el-form-item>
|
||||
<el-form-item label="期望到岗日期" prop="expectedOnboard">
|
||||
<el-input v-model="formData.expectedOnboard" placeholder="请输入期望到岗日期" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue