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