合同变更
parent
3b22398ae7
commit
79126ca91a
|
|
@ -0,0 +1,158 @@
|
|||
<template>
|
||||
<Dialog title="添加联系人" v-model="dialogVisible" width="50%">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
class="!w-240px"
|
||||
clearable
|
||||
placeholder="请输入姓名"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery">
|
||||
<Icon class="mr-5px" icon="ep:search" />
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="resetQuery">
|
||||
<Icon class="mr-5px" icon="ep:refresh" />
|
||||
重置
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table ref="multipleTableRef" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :row-key="getRowKey" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="序号" align="center" type="selection" :reserve-selection="true" />
|
||||
<el-table-column label="联系人姓名" align="center" prop="name" />
|
||||
<el-table-column align="center" label="电话" prop="telephone" width="130" />
|
||||
<el-table-column align="center" label="职位" prop="post" width="120" />
|
||||
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||
import * as ContactApi from '@/api/crm/contact'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { BillTemplateApi, BillTemplateVO } from '@/api/crm/billtemplate'
|
||||
|
||||
/** 票据模版 列表 */
|
||||
defineOptions({ name: 'BillTemplate' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<BillTemplateVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const multipleSelection = ref([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const multipleTableRef = ref()
|
||||
const selectedRowKeys = ref<number[]>([]);
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
name: undefined,
|
||||
customerId: undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
/** 打开弹窗 */
|
||||
const open = async (data: [], id) => {
|
||||
dialogVisible.value = true
|
||||
multipleSelection.value = data
|
||||
|
||||
queryParams.customerId = id
|
||||
await getList()
|
||||
await setSelections()
|
||||
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
// 跨页唯一id
|
||||
const getRowKey = (row) => {
|
||||
return row.id
|
||||
}
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await ContactApi.getContactPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
const handleSelectionChange = (val: []) => {
|
||||
multipleSelection.value = val
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
multipleTableRef.value.clearSelection()
|
||||
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 提交请求
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success', multipleSelection.value)
|
||||
}
|
||||
const setSelections = async () => {
|
||||
const selections = multipleSelection.value.map(item => {
|
||||
return {
|
||||
id: item.id
|
||||
}
|
||||
})
|
||||
console.log('%csrc/components/product/index.vue:153 list.value', 'color: #007acc;', multipleSelection);
|
||||
|
||||
if (selections && selections.length > 0) {
|
||||
list.value.forEach((row: any) => {
|
||||
if (selections.some(item => item.id === row.id)) {
|
||||
multipleTableRef.value.toggleRowSelection(row, true); // 设置选择状态。
|
||||
}
|
||||
});
|
||||
} else {
|
||||
multipleTableRef.value.clearSelection(); // 如果没有保存的选择,则清空当前页的选择。
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="变更项目" prop="endTime">
|
||||
<el-radio-group v-model="formData.radio">
|
||||
<el-radio-group v-model="formData.changeItem">
|
||||
<el-radio :value="1">额度</el-radio>
|
||||
<el-radio :value="2">授权人</el-radio>
|
||||
<el-radio :value="3">延期</el-radio>
|
||||
|
|
@ -87,12 +87,12 @@
|
|||
<!-- 子表的表单 -->
|
||||
<ContentWrap>
|
||||
<ContractChangeLimit
|
||||
v-if="formData.radio == 1"
|
||||
v-if="formData.changeItem == 1"
|
||||
ref="limitFormRef"
|
||||
:formData="formData"
|
||||
:disabled="disabled"
|
||||
/>
|
||||
<div v-if="formData.radio == 2">
|
||||
<div v-if="formData.changeItem == 2">
|
||||
<ContentWrap style="border: none">
|
||||
甲方现授权人信息
|
||||
</ContentWrap>
|
||||
|
|
@ -103,12 +103,12 @@
|
|||
<ContentWrap style="border: none">
|
||||
甲方授权人
|
||||
</ContentWrap>
|
||||
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef" :contract-id="formData.id" />
|
||||
<ContractBAuthorizedPersonForm ref="ContractBAuthorizedPersonFormRef" :customerId="formData.customerId" :contract-id="formData.id" />
|
||||
</div>
|
||||
<ContracExtension ref="contractExtensionFormRef" v-if="formData.radio == 3" :formData="formData" />
|
||||
<ContractStop ref="contractStopFormRef" :formData="formData" v-if="formData.radio == 4" />
|
||||
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" v-if="formData.radio == 5" :contract-id="formData.id" />
|
||||
<ContractForm ref="contractFormRef" :type="1" :formData="formData" v-if="formData.radio == 6" />
|
||||
<ContracExtension ref="contractExtensionFormRef" v-if="formData.changeItem == 3" :formData="formData" />
|
||||
<ContractStop ref="contractStopFormRef" :formData="formData" v-if="formData.changeItem == 4" />
|
||||
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" v-if="formData.changeItem == 5" :contract-id="formData.id" />
|
||||
<ContractForm ref="contractFormRef" :type="1" :formData="formData" v-if="formData.changeItem == 6" />
|
||||
</ContentWrap>
|
||||
</el-form>
|
||||
<div style="text-align: right">
|
||||
|
|
@ -132,6 +132,7 @@ import ContracExtension from '@/views/crm/contract/components/ContractExtension.
|
|||
import ContractStop from '@/views/crm/contract/components/ContracStop.vue'
|
||||
import ContractProductForm from '@/views/crm/contract/components/ContractProductForm.vue'
|
||||
import ContractAAuthorizedCompanyForm from './components/ContractAAuthorizedCompanyForm.vue'
|
||||
import ContractBAuthorizedPersonForm from './components/ContractAAuthorizedPersonForm.vue'
|
||||
import ContractForm from './ContractForm.vue'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
|
|
@ -179,7 +180,7 @@ const formData = ref({
|
|||
partnerCompanyId: undefined,
|
||||
deptId: undefined,
|
||||
quotationTimes: undefined,
|
||||
radio: 1,
|
||||
changeItem: 1,
|
||||
products: []
|
||||
})
|
||||
const formRules = reactive({
|
||||
|
|
@ -196,7 +197,7 @@ const contactList = ref<ContactApi.ContactVO[]>([])
|
|||
|
||||
/** 子表的表单 */
|
||||
const subTabsName = ref('limit')
|
||||
const contractAAuthorizedCompanyFormRef = ref()
|
||||
const ContractBAuthorizedPersonFormRef = ref()
|
||||
const contractAAuthorizedCompanyFormRef1 = ref()
|
||||
const limitFormRef = ref()
|
||||
const contractExtensionFormRef = ref()
|
||||
|
|
@ -246,6 +247,16 @@ const submitForm = async () => {
|
|||
// const Authalid1 = await contractAAuthorizedCompanyFormRef1.value.validate()
|
||||
// if (!Authalid1) return
|
||||
|
||||
if(ContractBAuthorizedPersonFormRef.value) {
|
||||
const Authalid = await ContractBAuthorizedPersonFormRef.value.validate()
|
||||
if (!Authalid) return
|
||||
}
|
||||
|
||||
if(contractAAuthorizedCompanyFormRef1.value) {
|
||||
const Authalid1 = await contractAAuthorizedCompanyFormRef1.value.validate()
|
||||
if (!Authalid1) return
|
||||
}
|
||||
|
||||
if(limitFormRef.value) {
|
||||
const limitValid = await limitFormRef.value.validate()
|
||||
if (!limitValid) return
|
||||
|
|
@ -253,9 +264,20 @@ if(limitFormRef.value) {
|
|||
|
||||
if(contractExtensionFormRef.value) {
|
||||
const extensionValid = await contractExtensionFormRef.value.validate()
|
||||
console.log('%csrc/views/crm/contrxact/ContractChange.vue:247 123', 'color: #007acc;', extensionValid,123);
|
||||
if (!extensionValid) return
|
||||
|
||||
}
|
||||
|
||||
if(contractStopFormRef.value) {
|
||||
const stopValid = await contractStopFormRef.value.validate()
|
||||
if (!stopValid) return
|
||||
|
||||
}
|
||||
|
||||
if(contractFormRef.value) {
|
||||
const contractValid = await contractFormRef.value.validate()
|
||||
if (!contractValid) return
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -266,18 +288,30 @@ if(contractExtensionFormRef.value) {
|
|||
// if (!contractValid) return
|
||||
|
||||
|
||||
return
|
||||
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = unref(JSON.parse(JSON.stringify(formData.value))) as unknown as ContractApi.ContractVO
|
||||
// 拼接子表的数据
|
||||
data.contractAAuthorizedCompanys = limitFormRef.value.getData()
|
||||
data.contractAAuthorizedCompanys = contractExtensionFormRef.value.getData()
|
||||
data.contractAAuthorizedCompanys = contractStopFormRef.value.getData()
|
||||
data.contractAAuthorizedCompanys = contractFormRef.value.getData()
|
||||
data.contractAAuthorizedCompanys = contractAAuthorizedCompanyFormRef.value.getData()
|
||||
let proChangeObj = {
|
||||
1: limitFormRef,
|
||||
2: ContractBAuthorizedPersonFormRef,
|
||||
3: contractExtensionFormRef,
|
||||
4: contractStopFormRef,
|
||||
5: contractAAuthorizedCompanyFormRef1,
|
||||
6: contractFormRef
|
||||
}
|
||||
let dataFormList = proChangeObj[formData.value.changeItem].value.getData()
|
||||
data[proChangeObj[formData.value.changeItem]] = dataFormList
|
||||
if(formData.value.changeItem == 2) {
|
||||
let ids = []
|
||||
dataFormList.map(item => {
|
||||
ids.push(item.id)
|
||||
})
|
||||
data.afterAuthorizerId = ids.join(',')
|
||||
}
|
||||
// data.contractAAuthorizedCompanys = limitFormRef.value.getData()
|
||||
data.contractId = data.id
|
||||
delete data.id
|
||||
await ContractApi.changeContract(data)
|
||||
|
|
@ -334,7 +368,7 @@ const resetForm = () => {
|
|||
partnerCompanyId: undefined,
|
||||
deptId: undefined,
|
||||
quotationTimes: undefined,
|
||||
radio: 1,
|
||||
changeItem: 1,
|
||||
products: []
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
|
|
|
|||
|
|
@ -75,14 +75,18 @@
|
|||
<el-row justify="center" class="mt-3" v-if="!type">
|
||||
<el-button @click="handleAdd" round>+ 添加</el-button>
|
||||
</el-row>
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<ContactForm ref="contactRef" @success="getList" />
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import * as ContractApi from '@/api/crm/contract'
|
||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getBoolDictOptions } from '@/utils/dict'
|
||||
import ContactForm from '@/components/contact/index.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
contractId: undefined, // 合同ID(主表的关联字段)
|
||||
type: undefined
|
||||
type: undefined,
|
||||
customerId: undefined
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
|
|
@ -115,21 +119,50 @@ watch(
|
|||
)
|
||||
|
||||
/** 新增按钮操作 */
|
||||
// const handleAdd = () => {
|
||||
// const row = {
|
||||
// id: undefined,
|
||||
// contractId: undefined,
|
||||
// customerContactId: undefined,
|
||||
// customerName: undefined,
|
||||
// authPersonType: undefined,
|
||||
// phoneNumber: undefined,
|
||||
// wechat: undefined,
|
||||
// idNumber: undefined,
|
||||
// email: undefined,
|
||||
// deletedFlag: undefined
|
||||
// }
|
||||
// row.contractId = props.contractId
|
||||
// formData.value.push(row)
|
||||
// }
|
||||
const contactRef = ref() // 表单 Ref
|
||||
const handleAdd = () => {
|
||||
const row = {
|
||||
id: undefined,
|
||||
contractId: undefined,
|
||||
customerContactId: undefined,
|
||||
customerName: undefined,
|
||||
authPersonType: undefined,
|
||||
phoneNumber: undefined,
|
||||
wechat: undefined,
|
||||
idNumber: undefined,
|
||||
email: undefined,
|
||||
deletedFlag: undefined
|
||||
contactRef.value.open(formData.value, props.customerId)
|
||||
}
|
||||
|
||||
const getList = (val: []) => {
|
||||
for(let i = val.length - 1; i >= 0; i--) {
|
||||
let obj = val[i]
|
||||
if(formData.value.some(v => v.id === obj.id)) val.splice(i, 1)
|
||||
}
|
||||
row.contractId = props.contractId
|
||||
formData.value.push(row)
|
||||
val.forEach(item => {
|
||||
if(!formData.value.some(v => v.id === item.id)) {
|
||||
val.forEach(item => {
|
||||
formData.value.push({
|
||||
"name": item.name,
|
||||
"postId": item.post,
|
||||
"userRank": item.userRank,
|
||||
"phoneNumber": item.mobile,
|
||||
"authDesc": item.authDesc,
|
||||
"wechat":item. wechat,
|
||||
"email":item. email,
|
||||
"id": item.id
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<el-table-column label="姓名" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.name`" :rules="formRules.name" class="mb-0px!">
|
||||
<el-input v-model="row.name" disabled placeholder="请输入姓名" />
|
||||
<el-input v-model="row.name" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
<el-table-column label="岗位" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.postId`" :rules="formRules.postId" class="mb-0px!">
|
||||
<el-input v-model="row.postId" disabled placeholder="请输入岗位" />
|
||||
<el-input v-model="row.postId" placeholder="请输入岗位" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -90,6 +90,7 @@
|
|||
<el-row justify="center" class="mt-3" v-if="!type">
|
||||
<el-button @click="handleAdd" round>+ 添加</el-button>
|
||||
</el-row>
|
||||
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import * as ContractApi from '@/api/crm/contract'
|
||||
|
|
@ -97,7 +98,7 @@ import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getBoolDictOptions } f
|
|||
|
||||
const props = defineProps<{
|
||||
contractId: undefined, // 合同ID(主表的关联字段)
|
||||
type: undefined
|
||||
type: undefined,
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
|
|
@ -149,6 +150,8 @@ const handleAdd = () => {
|
|||
formData.value.push(row)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = (index) => {
|
||||
formData.value.splice(index, 1)
|
||||
|
|
|
|||
|
|
@ -8,15 +8,11 @@
|
|||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报价单编号" prop="no">
|
||||
<el-input v-model="formData.no" placeholder="请输入报价单编号" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="选择商机" prop="businessId">
|
||||
<el-select v-model="formData.businessId" placeholder="请选择商机" @change="onBusinessChange" disabled>
|
||||
<el-select v-model="formData.businessId" disabled clearable placeholder="请选择商机" @change="onBusinessChange">
|
||||
<el-option
|
||||
v-for="dict in businessList"
|
||||
:key="dict.id"
|
||||
|
|
@ -26,12 +22,32 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="formType">
|
||||
<el-form-item label="报价单编号" prop="">
|
||||
<el-input v-model="formData.no" disabled placeholder="自动获取" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<ContentWrap style="border: none; font-weight: 700">风控信息</ContentWrap>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="系统授信额度" prop="customerId">
|
||||
<el-input v-model="formData.creditAmount" disabled placeholder="自动获取" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信额度调整" prop="creditLimitNum">
|
||||
<el-input v-model="formData.creditLimitNum" disabled @input="changeNum" clearable placeholder="请输入授信额度调整" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="最终授信额度" prop="creditLimit">
|
||||
<el-input v-model="formData.creditLimit" disabled placeholder="自动获取" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select v-model="formData.customerId" disabled placeholder="请选择客户" @change="onCustomerChange">
|
||||
<el-select v-model="formData.customerId" disabled placeholder="请选择客户" clearable @change="onCustomerChange">
|
||||
<el-option
|
||||
v-for="item in customerList"
|
||||
:key="item.id"
|
||||
|
|
@ -43,7 +59,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="cooperationType">
|
||||
<el-select v-model="formData.cooperationType" disabled filterable 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"
|
||||
|
|
@ -54,131 +70,132 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="公司类型" prop="companyType">
|
||||
<el-input v-model="formData.companyType" disabled />
|
||||
<el-form-item label="公司类型" prop="regType">
|
||||
<el-input v-model="formData.regType" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上市情况" prop="listingStatus">
|
||||
<el-input v-model="formData.listingStatus" disabled />
|
||||
<el-input v-model="formData.listingStatus" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资信息" prop="financingInfo">
|
||||
<el-input v-model="formData.financingInfo" disabled />
|
||||
<el-input v-model="formData.financingInfo" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="paidInCapital">
|
||||
<el-input v-model="formData.paidInCapital" disabled />
|
||||
<el-form-item label="实缴资金" prop="actualCapital">
|
||||
<el-input v-model="formData.actualCapital" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="参保人数" prop="insuredCount">
|
||||
<el-input v-model="formData.insuredCount" disabled />
|
||||
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
||||
<el-input v-model="formData.socialEmployeeNum" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="成立日期" prop="establishmentDate">
|
||||
<el-input v-model="formData.establishmentDate" disabled />
|
||||
<el-form-item label="成立日期" prop="startDate">
|
||||
<el-input v-model="formData.startDate" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="企业类型" prop="enterpriseType">
|
||||
<el-input v-model="formData.enterpriseType" disabled />
|
||||
<el-input v-model="formData.enterpriseType" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="营业状态" prop="businessStatus">
|
||||
<el-input v-model="formData.businessStatus" disabled />
|
||||
<el-form-item label="营业状态" prop="serviceStatus">
|
||||
<el-input v-model="formData.serviceStatus" disabled clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被告记录" prop="defendantRecord">
|
||||
<el-radio-group v-model="formData.defendantRecord" :disabled="true">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-radio-group v-model="formData.defendantRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经营异常" prop="businessAbnormal">
|
||||
<el-radio-group v-model="formData.businessAbnormal" :disabled="true">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="经营异常" prop="abnormalService">
|
||||
<el-radio-group v-model="formData.abnormalService" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="股权出质" prop="equityPledge">
|
||||
<el-radio-group v-model="formData.equityPledge" :disabled="true">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-radio-group v-model="formData.equityPledge" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="失信记录" prop="dishonestRecord">
|
||||
<el-radio-group v-model="formData.dishonestRecord" :disabled="true">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="失信记录" prop="dishonestyRecord">
|
||||
<el-radio-group v-model="formData.dishonestyRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资记录" prop="financingRecord">
|
||||
<el-radio-group v-model="formData.financingRecord" :disabled="true">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="融资记录" prop="financeRecord">
|
||||
<el-radio-group v-model="formData.financeRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被执行记录" prop="enforcementRecord">
|
||||
<el-radio-group v-model="formData.enforcementRecord" :disabled="true">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="被执行记录" prop="judgmentRecord">
|
||||
<el-radio-group v-model="formData.judgmentRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<ContentWrap style="border: none; font-weight: 700">需求信息</ContentWrap>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作主体" prop="partnerCompanyId">
|
||||
<el-select v-model="formData.partnerCompanyId" disabled placeholder="请选择合作主体" @change="onPartnerChange">
|
||||
<el-select v-model="formData.partnerCompanyId" clearable disabled placeholder="请选择合作主体" @change="onPartnerChange">
|
||||
<el-option
|
||||
v-for="dict in deptList"
|
||||
v-for="dict in orgList"
|
||||
:key="dict.id"
|
||||
:label="dict.name"
|
||||
:label="dict.orgName"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户行" prop="bBankName">
|
||||
<el-input v-model="formData.bBankName" disabled />
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="银行账号" prop="bBankAccount">
|
||||
<el-input v-model="formData.bBankAccount" disabled />
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input v-model="formData.bankAccount" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="法人代表" prop="bLegalRepresentative">
|
||||
<el-input v-model="formData.bLegalRepresentative" disabled />
|
||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||
<el-input v-model="formData.legalRepresentative" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="营业执照号" prop="bBusinessLicenseNumber">
|
||||
<el-input v-model="formData.bBusinessLicenseNumber" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="营业执照" prop="bBusinessLicense">
|
||||
<el-input v-model="formData.bBusinessLicense" disabled />
|
||||
<el-form-item label="营业执照" prop="businessLicense">
|
||||
<el-input v-model="formData.businessLicense" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
|
@ -188,8 +205,8 @@
|
|||
<el-col :span="8">
|
||||
<el-form-item label="归属部门" prop="deptId">
|
||||
<el-tree-select
|
||||
disabled
|
||||
v-model="formData.deptId"
|
||||
disabled
|
||||
:data="deptTree"
|
||||
:props="defaultProps"
|
||||
filterable
|
||||
|
|
@ -249,21 +266,21 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="签约人联系电话" prop="signPhoneNumber">
|
||||
<el-input v-model="formData.signPhoneNumber" disabled placeholder="请输入签约人联系电话" />
|
||||
<el-input v-model="formData.signPhoneNumber" placeholder="请输入签约人联系电话" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签约人Email" prop="signEmail">
|
||||
<el-input v-model="formData.signEmail" disabled placeholder="请输入签约人Email" />
|
||||
<el-input v-model="formData.signEmail" placeholder="请输入签约人Email" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签约人微信" prop="signWechat">
|
||||
<el-input v-model="formData.signWechat" disabled placeholder="请输入签约人微信" />
|
||||
<el-input v-model="formData.signWechat" placeholder="请输入签约人微信" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账期" prop="paymentTerm">
|
||||
|
|
@ -352,7 +369,7 @@
|
|||
<!-- 子表的表单 -->
|
||||
<el-tabs v-model="subTabsName">
|
||||
<el-tab-pane label="报价产品关联" name="quotationProduct">
|
||||
<QuotationProductForm ref="quotationProductFormRef" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
|
||||
<QuotationProductForm ref="quotationProductFormRef" :products="formData.products" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</ContentWrap>
|
||||
|
|
@ -363,12 +380,11 @@ import { QuotationApi, QuotationVO } from '@/api/crm/quotation'
|
|||
import { defaultProps, handleTree } from '@/utils/tree'
|
||||
import { BillTemplateApi, BillTemplateVO } from '@/api/crm/billtemplate'
|
||||
import QuotationProductForm from './components/QuotationProductDetail.vue'
|
||||
import * as ContractApi from '@/api/crm/contract'
|
||||
import * as CustomerApi from '@/api/crm/customer'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import * as DeptApi from '@/api/system/dept'
|
||||
import * as BusinessApi from '@/api/crm/business'
|
||||
import { erpPriceMultiply, erpPriceInputFormatter } from '@/utils'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
|
||||
/** CRM 方案报价 表单 */
|
||||
defineOptions({ name: 'QuotationForm' })
|
||||
|
|
@ -381,11 +397,11 @@ const templateOptions = ref([])
|
|||
const businessList = ref([])
|
||||
const deptTree = ref() // 部门树形结构
|
||||
const deptList = ref() // 部门
|
||||
const orgList = ref([])
|
||||
|
||||
const invoiceTemplateList = ref([])
|
||||
const props = defineProps({
|
||||
id: propTypes.number.def(undefined)
|
||||
})
|
||||
const { proxy }: any = getCurrentInstance();
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
|
|
@ -435,13 +451,27 @@ const formData = ref({
|
|||
bBankAccount: undefined, // 银行账号
|
||||
bLegalRepresentative: undefined, // 法人代表
|
||||
bBusinessLicenseNumber: undefined, // 营业执照号
|
||||
bBusinessLicense: undefined // 营业执照
|
||||
bBusinessLicense: undefined, // 营业执照
|
||||
creditAmount: undefined,
|
||||
creditLimitNum: undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
no: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }],
|
||||
customerId: [{ required: true, message: '客户id不能为空', trigger: 'change' }],
|
||||
businessId: [{ required: true, message: '商机编号不能为空', trigger: 'change' }],
|
||||
invoiceTemplateId: [{ required: true, message: '票据模板Id不能为空', trigger: 'change' }]
|
||||
// no: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }],
|
||||
// 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' }],
|
||||
// paymentTerm: [{ required: true, message: '账期不能为空', trigger: 'change' }],
|
||||
// partnerCompanyId: [{ required: true, message: '合作主体不能为空', trigger: 'change' }],
|
||||
// creditMethod: [{ required: true, message: '授信方式不能为空', trigger: 'change' }],
|
||||
// creditCalcCycle: [{ required: true, message: '授信计算周期不能为空', trigger: 'change' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -478,6 +508,10 @@ const onCustomerChange = async (customerId: string) => {
|
|||
try {
|
||||
formLoading.value = true;
|
||||
const customerRes = await CustomerApi.getCustomer(customerId);
|
||||
formData.value.actualCapital = customerRes.actualCapital
|
||||
formData.value.socialEmployeeNum = customerRes.socialEmployeeNum
|
||||
formData.value.startDate = customerRes.startDate
|
||||
formData.value.actualCapital = customerRes.actualCapital
|
||||
formData.value.cooperationType = customerRes.cooperationType;
|
||||
formData.value.companyType = customerRes.companyType;
|
||||
formData.value.listingStatus = customerRes.listingStatus;
|
||||
|
|
@ -504,21 +538,25 @@ const onPartnerChange = async (id: string) => {
|
|||
if (!id) return
|
||||
try {
|
||||
formLoading.value = true;
|
||||
const res = await DeptApi.getDept(id);
|
||||
formData.value.bBankName = res.bankName;
|
||||
formData.value.bBankAccount = res.bankAccount;
|
||||
formData.value.bLegalRepresentative = res.legalRepresentative;
|
||||
formData.value.bBusinessLicenseNumber = res.businessLicenseNumber;
|
||||
formData.value.bBusinessLicense = res.businessLicense;
|
||||
const res = await ContractApi.getOrgInfo(id);
|
||||
formData.value.bankName = res.bankName;
|
||||
formData.value.bankAccount = res.bankAccount;
|
||||
formData.value.legalRepresentative = res.legalRepresentative;
|
||||
formData.value.businessLicenseNumber = res.businessLicenseNumber;
|
||||
formData.value.businessLicense = res.businessLicense;
|
||||
// formData.value.partnerCompanyId = res.partnerCompanyId;
|
||||
} catch (err) {
|
||||
} finally {
|
||||
formLoading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
const changeNum = (val) => {
|
||||
formData.value.creditLimit = (Number(val) + (formData.value.creditAmount || 0)).toFixed(2)
|
||||
}
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string) => {
|
||||
dialogVisible.value = true
|
||||
formType.value = type
|
||||
// 修改时,设置数据
|
||||
if (type) {
|
||||
formLoading.value = true
|
||||
|
|
@ -530,6 +568,8 @@ const open = async (type: string) => {
|
|||
}
|
||||
|
||||
deptList.value = await DeptApi.getSimpleDeptList()
|
||||
// 获得用户列表
|
||||
invoiceTemplateList.value = await BillTemplateApi.getSimpleList()
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
|
|
@ -561,12 +601,17 @@ const submitForm = async () => {
|
|||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
goBack()
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const goBack = ()=> {
|
||||
proxy.$router.go(-1)
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
|
|
@ -600,7 +645,8 @@ const resetForm = () => {
|
|||
|
||||
const route = useRoute();
|
||||
onMounted(async () => {
|
||||
formType.value = props.id || route.query.id
|
||||
formType.value = route.query.id;
|
||||
|
||||
if (formType.value) open(formType.value)
|
||||
|
||||
// 获得客户列表
|
||||
|
|
@ -613,8 +659,13 @@ onMounted(async () => {
|
|||
pageSize: 1000,
|
||||
})
|
||||
templateOptions.value = data.list
|
||||
businessList.value = await BusinessApi.getSimpleBusinessList()
|
||||
businessList.value = await BusinessApi.getSelfSimpleBusinessList()
|
||||
// 获得部门树
|
||||
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
|
||||
const org = await ContractApi.getOrg({
|
||||
pageNo: 1,
|
||||
pageSize: 1000
|
||||
})
|
||||
orgList.value = org.list
|
||||
});
|
||||
</script>
|
||||
|
|
@ -103,7 +103,9 @@ import * as BusinessApi from '@/api/crm/business'
|
|||
const props = defineProps<{
|
||||
quotationId: undefined, // 报价编号(主表的关联字段)
|
||||
businessId: undefined,
|
||||
billTemplateId: undefined
|
||||
billTemplateId: undefined,
|
||||
products: undefined
|
||||
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
|
|
@ -141,7 +143,6 @@ watch(
|
|||
formLoading.value = false
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
watch(
|
||||
|
|
@ -169,8 +170,20 @@ watch(
|
|||
formLoading.value = false
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
watch(
|
||||
() => props.products,
|
||||
(val) => {
|
||||
if (!val || val.length === 0) {
|
||||
return;
|
||||
}
|
||||
nextTick(() => {
|
||||
formData.value = val
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
|
||||
);
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
|
|
|
|||
|
|
@ -213,7 +213,6 @@ watch(
|
|||
}
|
||||
try {
|
||||
formLoading.value = true
|
||||
console.log('%csrc/views/crm/quotation/components/QuotationProductForm.vue:214 1111', 'color: #007acc;', 1111);
|
||||
// if(val.quotationId) {
|
||||
// formData.value = await QuotationApi.getQuotationProductListByQuotationId(val.quotationId)
|
||||
// } else if(val.businessId) {
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ const handleQuery = () => {
|
|||
}
|
||||
|
||||
const openDetail = (id: number) => {
|
||||
push({ name: 'QuotationDetail', params: { id } })
|
||||
router.push({ name: 'QuotationDetail', query: { id: id } })
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue