客户-联系人

pull/781/head
zy 2025-05-24 12:48:53 +08:00
parent 36589b2910
commit 3480d6604c
39 changed files with 1486 additions and 783 deletions

View File

@ -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 服务

9
package-lock.json generated
View File

@ -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",

View File

@ -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",

View File

@ -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)

View File

@ -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')
}

View File

@ -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 产品明细类型

View File

@ -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

View File

@ -113,6 +113,7 @@ const getList = async () => {
loading.value = false
}
}
defineExpose({ getList })
const getData = (val,data) => {
list.value = data

View File

@ -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 = {

View File

@ -120,6 +120,7 @@ const getList = async () => {
loading.value = false
}
}
defineExpose({ getList })
/** 搜索按钮操作 */
const handleQuery = () => {

View File

@ -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) // 12
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,

View File

@ -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: {}
}>()
/** 监听主表的关联字段的变化,加载对应的子表数据 */

View File

@ -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([])

View File

@ -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([])

View File

@ -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;

View File

@ -103,6 +103,7 @@ const getList = async () => {
loading.value = false
}
}
defineExpose({ getList })
/** 搜索按钮操作 */
const handleQuery = () => {

View File

@ -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">

View File

@ -120,6 +120,7 @@ const getList = async () => {
loading.value = false
}
}
defineExpose({ getList })
/** 搜索按钮操作 */
const handleQuery = () => {

View File

@ -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) // 12
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()
//

View File

@ -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,

View File

@ -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>

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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(() => {

View File

@ -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"

View File

@ -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

View File

@ -171,7 +171,7 @@ watch(
}
)
defineExpose({ openForm, validateOwnerUser, validateWrite, isPool })
defineExpose({ openForm, validateOwnerUser, validateWrite, isPool, getList })
const emits = defineEmits<{
(e: 'quitTeam'): void
}>()

View File

@ -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',//idid
popTitle: '报价', //
extraHead: '', // head使
preview: false, // false
previewTitle: '预览的标题', //
pageBreak: 'auto', //
previewPrintBtnLabel: '预览结束,开始打印', //
zIndex: 20002, // z-index20002
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) // 12
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>

View File

@ -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' }],

View File

@ -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>

View File

@ -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) //

View File

@ -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>

View File

@ -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="请输入期望到岗日期" />