Commit 4fa23a05 by yuzhenWang

Merge branch 'feature-20250827wyz-写业务' into 'test'

新单跟进详情发布测试

See merge request !18
parents 8efb61d3 e480df9e
...@@ -42,6 +42,13 @@ export function getPolicyfollow(policyBizId) { ...@@ -42,6 +42,13 @@ export function getPolicyfollow(policyBizId) {
method: 'get' method: 'get'
}) })
} }
// 获取新单跟进详情
export function getPolicyInfo(policyBizId) {
return request({
url: `/csf/api/policy_follow/detail/${policyBizId}`,
method: 'get'
})
}
// 获取新单跟进状态 // 获取新单跟进状态
export function getPolicyStatus(policyBizId) { export function getPolicyStatus(policyBizId) {
return request({ return request({
...@@ -73,3 +80,57 @@ export function uploadPolicyfollow(data) { ...@@ -73,3 +80,57 @@ export function uploadPolicyfollow(data) {
data: data data: data
}) })
} }
// 新单跟进详情中的产品计划提交
export function updatePolicyProduct(data) {
return request({
url: '/csf/api/policy/update',
method: 'post',
data: data
})
}
// 删除附加险
export function delPolicyAdditional(id) {
return request({
url: '/csf/api/policy_additional/delete?id=' + id,
method: 'delete'
})
}
// 新单跟进详情中的投保人提交
export function updatePolicyholder(data) {
return request({
url: '/csf/api/policy/update_policyholder',
method: 'post',
data: data
})
}
// 新单跟进详情中的受保人提交
export function updatePolicyInsurant(data) {
return request({
url: '/csf/api/policy/update_policy_insurant',
method: 'post',
data: data
})
}
// 新单跟进详情中的第二持有人提交
export function updatePolicySecondHolder(data) {
return request({
url: '/csf/api/policy/update_policy_second_holder',
method: 'post',
data: data
})
}
// 新单跟进详情中的受益人提交
export function updatePolicyBeneficiary(data) {
return request({
url: '/csf/api/policy_beneficiary/update/list',
method: 'post',
data: data
})
}
// 删除单个受益人
export function delPolicyBeneficiary(policyBeneficiaryBizId) {
return request({
url: '/csf/api/policy_beneficiary/delete?policyBeneficiaryBizId=' + policyBeneficiaryBizId,
method: 'delete'
})
}
...@@ -7,39 +7,38 @@ const policyInfo = [ ...@@ -7,39 +7,38 @@ const policyInfo = [
child: 'no', //没有子级dom,直接展示 child: 'no', //没有子级dom,直接展示
fatherrequired: false, //父级必填,代表个人资料这个模块有必填项 fatherrequired: false, //父级必填,代表个人资料这个模块有必填项
data: [ data: [
{ // {
label: '客户姓名', // label: '客户姓名',
key: 'customerName', // key: 'customerName',
domType: 'Input', // domType: 'Input',
inputType: 'text', // inputType: 'text',
required: false, // required: false,
maxLength: 30, // maxLength: 30,
disabled: false, // disabled: false,
placeholder: '请输入', // placeholder: '请输入',
show: true, // show: true,
value: '', // value: '',
labelPosition: 'top', //标签的位置 // labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度 // labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数 // sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 // lg: 8 //栅格布局份数
}, // },
{ // {
label: '客户编号', // label: '客户编号',
key: 'customerBizId', // key: 'customerBizId',
domType: 'Input', // domType: 'Input',
inputType: 'text', // inputType: 'text',
required: false, // required: false,
maxLength: 30, // maxLength: 30,
disabled: false, // disabled: false,
placeholder: '请输入', // placeholder: '请输入',
show: true, // show: true,
// value: '',
value: '', // labelPosition: 'top', //标签的位置
labelPosition: 'top', //标签的位置 // labelWidth: '140px', //标签宽度
labelWidth: '140px', //标签宽度 // sm: 8, //栅格布局份数
sm: 8, //栅格布局份数 // lg: 8 //栅格布局份数
lg: 8 //栅格布局份数 // },
},
{ {
label: '保单号', label: '保单号',
key: 'policyNo', key: 'policyNo',
...@@ -114,53 +113,53 @@ const policyInfo = [ ...@@ -114,53 +113,53 @@ const policyInfo = [
sm: 8, //栅格布局份数 sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 lg: 8 //栅格布局份数
}, },
{ // {
label: '产品名称', // label: '产品名称',
key: 'productName', // key: 'productName',
domType: 'SearchSelect', // domType: 'SearchSelect',
required: false, // required: false,
maxLength: 30, // maxLength: 30,
disabled: false, // disabled: false,
placeholder: '请输入', // placeholder: '请输入',
show: true, // show: true,
value: '', // value: '',
labelWidth: '120px', //标签宽度 // labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数 // sm: 8, //栅格布局份数
labelPosition: 'top', //标签的位置 // labelPosition: 'top', //标签的位置
lg: 8 //栅格布局份数 // lg: 8 //栅格布局份数
}, // },
{ // {
label: '产品类别', // label: '产品类别',
key: 'productCate', // key: 'productCate',
domType: 'Input', // domType: 'Input',
inputType: 'text', // inputType: 'text',
required: false, // required: false,
maxLength: 30, // maxLength: 30,
disabled: false, // disabled: false,
placeholder: '请输入', // placeholder: '请输入',
show: true, // show: true,
value: '', // value: '',
labelPosition: 'top', //标签的位置 // labelPosition: 'top', //标签的位置
labelWidth: '130px', //标签宽度 // labelWidth: '130px', //标签宽度
sm: 8, //栅格布局份数 // sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 // lg: 8 //栅格布局份数
}, // },
{ // {
label: '供款年期', // label: '供款年期',
key: 'paymentTerm', // key: 'paymentTerm',
domType: 'Select', // domType: 'Select',
required: false, // required: false,
disabled: false, // disabled: false,
placeholder: '请选择', // placeholder: '请选择',
dictType: 'paymentTerm', // dictType: 'paymentTerm',
show: true, // show: true,
value: '', // value: '',
labelPosition: 'top', //标签的位置 // labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度 // labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数 // sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 // lg: 8 //栅格布局份数
}, // },
{ {
label: '期交保费', label: '期交保费',
key: 'paymentPremium', key: 'paymentPremium',
...@@ -255,37 +254,37 @@ const policyInfo = [ ...@@ -255,37 +254,37 @@ const policyInfo = [
sm: 8, //栅格布局份数 sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 lg: 8 //栅格布局份数
}, },
{ // {
label: '受保人', // label: '受保人',
key: 'insured', // key: 'insured',
domType: 'Input', // domType: 'Input',
inputType: 'text', // inputType: 'text',
required: false, // required: false,
maxLength: 30, // maxLength: 30,
disabled: false, // disabled: false,
placeholder: '请输入', // placeholder: '请输入',
show: true, // show: true,
value: '', // value: '',
labelPosition: 'top', //标签的位置 // labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度 // labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数 // sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 // lg: 8 //栅格布局份数
}, // },
{ // {
label: '币种', // label: '币种',
key: 'currency', // key: 'currency',
domType: 'Select', // domType: 'Select',
required: false, // required: false,
disabled: false, // disabled: false,
placeholder: '请选择', // placeholder: '请选择',
dictType: 'bx_currency_type', // dictType: 'bx_currency_type',
show: true, // show: true,
value: '', // value: '',
labelPosition: 'top', //标签的位置 // labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度 // labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数 // sm: 8, //栅格布局份数
lg: 8 //栅格布局份数 // lg: 8 //栅格布局份数
}, // },
{ {
label: '首期保费', label: '首期保费',
key: 'initialPremium', key: 'initialPremium',
......
...@@ -9,7 +9,23 @@ const policyMailing = [ ...@@ -9,7 +9,23 @@ const policyMailing = [
data: [ data: [
{ {
label: '寄送方式', label: '寄送方式',
key: 'productCate', key: 'mailingMethod',
domType: 'Select',
inputType: 'text',
required: false,
maxLength: 30,
disabled: false,
placeholder: '请输入',
dictType: 'csf_policy_follow_mailing_method',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '快递单号',
key: 'deliveryNo',
domType: 'Input', domType: 'Input',
inputType: 'text', inputType: 'text',
required: false, required: false,
......
...@@ -10,13 +10,13 @@ const verifyPolicyInfo = [ ...@@ -10,13 +10,13 @@ const verifyPolicyInfo = [
{ {
label: '保险种类', label: '保险种类',
key: 'productCate', key: 'productCate',
domType: 'Input', domType: 'Select',
inputType: 'text',
required: false, required: false,
maxLength: 30, maxLength: 30,
disabled: false, disabled: false,
placeholder: '请输入', placeholder: '请输入',
show: true, show: true,
dictType: 'bx_product_type',
labelPosition: 'top', //标签的位置 labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度 labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数 sm: 8, //栅格布局份数
......
...@@ -39,7 +39,11 @@ export function useDictLists(typeLists) { ...@@ -39,7 +39,11 @@ export function useDictLists(typeLists) {
dictArray = resp.data.map(item => { dictArray = resp.data.map(item => {
item.dictItemList.forEach(dict => { item.dictItemList.forEach(dict => {
dict.label = dict.itemLabel dict.label = dict.itemLabel
if (item.dictType == 'sys_no_yes') {
dict.value = Number(dict.itemValue)
} else {
dict.value = dict.itemValue dict.value = dict.itemValue
}
}) })
return item return item
}) })
......
...@@ -98,6 +98,7 @@ ...@@ -98,6 +98,7 @@
:appointmentStatus="appointmentSummeryInfo.status" :appointmentStatus="appointmentSummeryInfo.status"
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="productPlanRef" ref="productPlanRef"
@policyEditSuccess="getPolicyDetail"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn" :showSubmitBtn="showSubmitBtn"
/> />
...@@ -113,6 +114,8 @@ ...@@ -113,6 +114,8 @@
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="policyHolderInfoRef" ref="policyHolderInfoRef"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
@policyEditSuccess="getPolicyDetail"
/> />
</div> </div>
<div v-if="tab.name === 'insurantInfo'"> <div v-if="tab.name === 'insurantInfo'">
...@@ -126,6 +129,8 @@ ...@@ -126,6 +129,8 @@
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="insuredInfoRef" ref="insuredInfoRef"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
@policyEditSuccess="getPolicyDetail"
/> />
</div> </div>
<div v-if="tab.name === 'secondHolder'"> <div v-if="tab.name === 'secondHolder'">
...@@ -139,6 +144,8 @@ ...@@ -139,6 +144,8 @@
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="secondHolderInfoRef" ref="secondHolderInfoRef"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
@policyEditSuccess="getPolicyDetail"
/> />
</div> </div>
<div v-if="tab.name === 'beneficiary'"> <div v-if="tab.name === 'beneficiary'">
...@@ -151,6 +158,8 @@ ...@@ -151,6 +158,8 @@
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="beneficiaryInfoRef" ref="beneficiaryInfoRef"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
@policyEditSuccess="getPolicyDetail"
/> />
</div> </div>
<div v-if="tab.name === 'questionnaires'"> <div v-if="tab.name === 'questionnaires'">
...@@ -162,6 +171,7 @@ ...@@ -162,6 +171,7 @@
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="questionnairesInfoRef" ref="questionnairesInfoRef"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
/> />
</div> </div>
<div v-if="tab.name === 'fna'"> <div v-if="tab.name === 'fna'">
...@@ -182,33 +192,50 @@ ...@@ -182,33 +192,50 @@
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
ref="policyTransferRef" ref="policyTransferRef"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
@policyEditSuccess="getPolicyDetail"
/> />
</div> </div>
<div v-if="tab.name === 'accessories'"> <div v-if="tab.name === 'accessories'">
<FileUpload <FileUpload
:activeName="activeName" :activeName="activeName"
:formStatus="formStatus"
:idsObj="idsObj" :idsObj="idsObj"
:apiAppointmentInfoDto="appointmentSummeryInfo.apiAppointmentInfoDto"
@handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)" @handleSuccessEdit="getAppointmentInfo(idsObj.appointmentBizId)"
:pageSource="pageSource" :pageSource="pageSource"
:showSubmitBtn="showSubmitBtn"
/> />
</div> </div>
<div v-if="tab.name === 'policyInfo'"> <div v-if="tab.name === 'policyInfo'">
<PolicyInfo :activeName="activeName" :policyBizId="route.query.policyBizId" /> <PolicyInfo
:activeName="activeName"
:policyBizId="route.query.policyBizId"
:policyFollowUpdateDto="policyDetailInfo.policyFollowUpdateDto"
/>
</div> </div>
<div v-if="tab.name === 'policyAccessories'"> <div v-if="tab.name === 'policyAccessories'">
<PolicyFileUpload :activeName="activeName" :policyBizId="route.query.policyBizId" /> <PolicyFileUpload :activeName="activeName" :policyBizId="route.query.policyBizId" />
</div> </div>
<div v-if="tab.name === 'policyBroker'"> <div v-if="tab.name === 'policyBroker'">
<PolicyBrokerInfo :activeName="activeName" :policyBizId="route.query.policyBizId" /> <PolicyBrokerInfo
:activeName="activeName"
:policyBizId="route.query.policyBizId"
:brokerList="policyDetailInfo.brokerList"
/>
</div> </div>
<div v-if="tab.name === 'policyMailing'"> <div v-if="tab.name === 'policyMailing'">
<PolicyMailing :activeName="activeName" :policyBizId="route.query.policyBizId" /> <PolicyMailing
:activeName="activeName"
:policyBizId="route.query.policyBizId"
:policyMailing="policyDetailInfo.policyMailing"
/>
</div> </div>
<div v-if="tab.name === 'newpolicyTodo'">新单事项</div> <div v-if="tab.name === 'newpolicyTodo'">新单事项</div>
<div v-if="tab.name === 'verifyPolicyInfo'"> <div v-if="tab.name === 'verifyPolicyInfo'">
<VerifyPolicyInfo :activeName="activeName" :policyBizId="route.query.policyBizId" /> <VerifyPolicyInfo
:activeName="activeName"
:policyBizId="route.query.policyBizId"
:verifyPolicyInfo="policyDetailInfo.verifyPolicyInfo"
/>
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
...@@ -273,6 +300,7 @@ import { ...@@ -273,6 +300,7 @@ import {
editAppointmentDetail, editAppointmentDetail,
uploadExcel uploadExcel
} from '@/api/sign/appointment' } from '@/api/sign/appointment'
import { getPolicyfollow, getPolicyInfo } from '@/api/sign/underwritingMain'
import { listTenantUser, getInsuranceProductList, getAdditionalProductList } from '@/api/common' import { listTenantUser, getInsuranceProductList, getAdditionalProductList } from '@/api/common'
import { Check } from '@element-plus/icons-vue' import { Check } from '@element-plus/icons-vue'
import { ref, nextTick, onUnmounted } from 'vue' import { ref, nextTick, onUnmounted } from 'vue'
...@@ -286,9 +314,9 @@ const props = defineProps({ ...@@ -286,9 +314,9 @@ const props = defineProps({
source: { type: String, default: '' }, //页面来源,不一样的页面会有不一样的操作 source: { type: String, default: '' }, //页面来源,不一样的页面会有不一样的操作
tabName: { type: String, default: '' }, //父组件的tab名称 tabName: { type: String, default: '' }, //父组件的tab名称
processDetail: { type: Object, default: () => ({}) }, //新增预约单时,传入的流程详情信息 processDetail: { type: Object, default: () => ({}) }, //新增预约单时,传入的流程详情信息
policyDetailInfo: { type: Object, default: () => ({}) } //新单跟进传递的参数 policyDetailInfo: { type: Object, default: () => ({}) }, //新单跟进传递关于保单的详情信息
policyId: { type: Object, default: () => ({}) } //新单跟进传递的Id
}) })
console.log('props', props.policyDetailInfo)
const userStore = useUserStore() const userStore = useUserStore()
const dictStore = useDictStore() const dictStore = useDictStore()
...@@ -308,7 +336,6 @@ const policyTransferRef = ref(null) ...@@ -308,7 +336,6 @@ const policyTransferRef = ref(null)
const questionnairesInfoRef = ref(null) const questionnairesInfoRef = ref(null)
const customerInfo = ref({}) const customerInfo = ref({})
const idsObj = ref({}) //各个模块的bizId const idsObj = ref({}) //各个模块的bizId
// const appointmentSummeryInfo = ref({ apiAppointmentInfoDto: { appointmentBizId: '' } }) //预约详情总信息
const appointmentSummeryInfo = ref({}) //预约详情总信息 const appointmentSummeryInfo = ref({}) //预约详情总信息
const currentFile = ref(null) const currentFile = ref(null)
const processInfo = ref({ const processInfo = ref({
...@@ -736,7 +763,7 @@ const handleSubmit = type => { ...@@ -736,7 +763,7 @@ const handleSubmit = type => {
// 编辑预约单 // 编辑预约单
editAppointmentDetail(submitAppointmentObj.value).then(res => { editAppointmentDetail(submitAppointmentObj.value).then(res => {
if (res.code == 200) { if (res.code == 200) {
getAppointmentInfo(idsObj.value.appointmentBizId) // getAppointmentInfo(idsObj.value.appointmentBizId)
appointmentInfoRef.value[0].handleEditStatus(true) appointmentInfoRef.value[0].handleEditStatus(true)
productPlanRef.value[0].handleEditStatus(true) productPlanRef.value[0].handleEditStatus(true)
policyHolderInfoRef.value[0].handleEditStatus(true) policyHolderInfoRef.value[0].handleEditStatus(true)
...@@ -762,6 +789,7 @@ const handleSubmit = type => { ...@@ -762,6 +789,7 @@ const handleSubmit = type => {
} }
}) })
} }
getAppointmentInfo(idsObj.value.appointmentBizId)
} }
//修改预约数据 //修改预约数据
...@@ -939,10 +967,40 @@ watch( ...@@ -939,10 +967,40 @@ watch(
} }
} }
) )
// 获取新单跟进详情数据
const getPolicyDetail = () => {
// 使用 Promise.all 并行发送请求
Promise.all([getPolicyfollow(route.query.policyBizId), getPolicyInfo(route.query.policyBizId)])
.then(([followRes, infoRes]) => {
// 只有当两个请求都成功时才执行后续操作
if (followRes.code === 200 && infoRes.code === 200) {
// 合并两个响应数据,infoRes.data 会覆盖 followRes.data 中的同名属性
appointmentSummeryInfo.value = {
...followRes.data,
...infoRes.data
}
if (route.query.source == 'policyList') {
appointmentSummeryInfo.value.apiAppointmentInfoDto = JSON.parse(
JSON.stringify(
appointmentSummeryInfo.value.apiProductPlanInfoDto.apiProductPlanMainInfoDto
)
)
}
}
})
.catch(error => {
// 统一错误处理(可选)
console.error('请求失败:', error)
})
}
if (route.query.source == 'policyList') { if (route.query.source == 'policyList') {
idsObj.value.policyBizId = route.query.policyBizId idsObj.value.policyBizId = route.query.policyBizId
// idsObj.value.appointmentNo = route.query.appointmentNo getCustomerInfo(props.policyDetailInfo.customerBizId)
// idsObj.value.appointmentBizId = route.query.appointmentBizId appointmentSummeryInfo.value = JSON.parse(JSON.stringify(props.policyDetailInfo))
appointmentSummeryInfo.value.apiAppointmentInfoDto = JSON.parse(
JSON.stringify(appointmentSummeryInfo.value.apiProductPlanInfoDto.apiProductPlanMainInfoDto)
)
idsObj.value.appointmentBizId = route.query.appointmentBizId
isEmbed.value = route.query.embed isEmbed.value = route.query.embed
tabsList.value = [ tabsList.value = [
{ {
...@@ -975,12 +1033,12 @@ if (route.query.source == 'policyList') { ...@@ -975,12 +1033,12 @@ if (route.query.source == 'policyList') {
id: 5, id: 5,
key: 'verifyPolicyInfo' key: 'verifyPolicyInfo'
}, },
{ // {
label: '新单事项', // label: '新单事项',
name: 'newpolicyTodo', // name: 'newpolicyTodo',
id: 6, // id: 6,
key: 'newpolicyTodo' // key: 'newpolicyTodo'
}, // },
{ {
label: '产品计划', label: '产品计划',
name: 'productPlan', name: 'productPlan',
...@@ -1023,13 +1081,13 @@ if (route.query.source == 'policyList') { ...@@ -1023,13 +1081,13 @@ if (route.query.source == 'policyList') {
status: '0', status: '0',
key: 'questionnaireBizId' key: 'questionnaireBizId'
}, },
{ // {
label: '关联FNA', // label: '关联FNA',
name: 'fna', // name: 'fna',
id: 13, // id: 13,
status: '0', // status: '0',
key: 'fnaBizId' // key: 'fnaBizId'
}, // },
{ {
label: '转保声明', label: '转保声明',
name: 'policyTransfer', name: 'policyTransfer',
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
>新增受益人</el-button >新增受益人</el-button
> >
<el-button <el-button
v-if="props.idsObj.appointmentBizId" v-if="props.showSubmitBtn"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus(!editStatus)" @click="handleEditStatus(!editStatus)"
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
</div> </div>
</el-row> </el-row>
</div> </div>
<el-row v-if="props.idsObj.appointmentBizId"> <el-row v-if="props.showSubmitBtn">
<el-col> <el-col>
<div class="tabButton"> <div class="tabButton">
<!-- <el-button <!-- <el-button
...@@ -210,7 +210,8 @@ import Phone from '@/views/components/phone' ...@@ -210,7 +210,8 @@ import Phone from '@/views/components/phone'
import Address from '@/views/components/address' import Address from '@/views/components/address'
import { watch, nextTick } from 'vue' import { watch, nextTick } from 'vue'
import { addCustomer, getCustomerDetail, editCustomer, getCustomerList } from '@/api/sign/fna' import { getCustomerList } from '@/api/sign/fna'
import { updatePolicyBeneficiary, delPolicyBeneficiary } from '@/api/sign/underwritingMain'
import { editBeneficiaryInfo, delBeneficiary } from '@/api/sign/appointment' import { editBeneficiaryInfo, delBeneficiary } from '@/api/sign/appointment'
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
...@@ -222,9 +223,11 @@ const props = defineProps({ ...@@ -222,9 +223,11 @@ const props = defineProps({
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiBeneficiaryInfoDtoList: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 apiBeneficiaryInfoDtoList: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情
appointmentStatus: { type: Number }, //父组件传递过来的预约的状态 appointmentStatus: { type: Number }, //父组件传递过来的预约的状态
customerInfo: { type: Object, default: () => ({}) } //客户详情回显表单用 customerInfo: { type: Object, default: () => ({}) }, //客户详情回显表单用
showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改
pageSource: { type: String, default: false } //页面来源
}) })
const emit = defineEmits(['handleSuccessEdit']) const emit = defineEmits(['handleSuccessEdit', 'policyEditSuccess'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// const { sys_gender } = proxy.useDict('sys_gender') // const { sys_gender } = proxy.useDict('sys_gender')
const showPhoneDrawer = ref(false) //电话抽屉开关 const showPhoneDrawer = ref(false) //电话抽屉开关
...@@ -364,6 +367,9 @@ const addBeneficiary = () => { ...@@ -364,6 +367,9 @@ const addBeneficiary = () => {
} }
// 删除受益人 // 删除受益人
const deleteBeneficiary = (l1, level1) => { const deleteBeneficiary = (l1, level1) => {
console.log('====================================')
console.log('l1', form.value.apiBeneficiaryInfoDtoList[l1])
console.log('====================================')
if (editStatus.value) { if (editStatus.value) {
proxy.$modal.confirm(`编辑状态下才能删除`, { showCancel: '0', title: '填写提示' }) proxy.$modal.confirm(`编辑状态下才能删除`, { showCancel: '0', title: '填写提示' })
return return
...@@ -372,12 +378,25 @@ const deleteBeneficiary = (l1, level1) => { ...@@ -372,12 +378,25 @@ const deleteBeneficiary = (l1, level1) => {
proxy.$modal.confirm(`至少保留一个受益人`, { showCancel: '0', title: '填写提示' }) proxy.$modal.confirm(`至少保留一个受益人`, { showCancel: '0', title: '填写提示' })
return return
} }
if (level1.beneficiaryBizId) { if (
level1.beneficiaryBizId &&
(props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')
) {
delBeneficiary(level1.beneficiaryBizId).then(res => { delBeneficiary(level1.beneficiaryBizId).then(res => {
if (res.code == 200) { if (res.code == 200) {
proxy.$message.success('受益人删除成功') proxy.$message.success('预约-受益人删除成功')
processedBeneficiaryData.value.splice(l1, 1) processedBeneficiaryData.value.splice(l1, 1)
form.value.apiBeneficiaryInfoDtoList.splice(l1, 1) form.value.apiBeneficiaryInfoDtoList.splice(l1, 1)
emit('handleSuccessEdit')
}
})
} else if (form.value.apiBeneficiaryInfoDtoList[l1].policyBeneficiaryBizId && props.pageSource == 'policyList') {
delPolicyBeneficiary(form.value.apiBeneficiaryInfoDtoList[l1].policyBeneficiaryBizId).then(res => {
if (res.code == 200) {
proxy.$message.success('新单跟进-受益人删除成功')
processedBeneficiaryData.value.splice(l1, 1)
form.value.apiBeneficiaryInfoDtoList.splice(l1, 1)
emit('policyEditSuccess')
} }
}) })
} else { } else {
...@@ -480,7 +499,11 @@ const processFormData = async obj => { ...@@ -480,7 +499,11 @@ const processFormData = async obj => {
} }
} }
} }
if (tempBeneficiaryDomData.value.length > 0 && !props.idsObj.appointmentBizId) { if (
tempBeneficiaryDomData.value.length > 0 &&
!props.idsObj.appointmentBizId &&
props.pageSource == 'fnaList'
) {
form.value = { ...tempBeneficiaryForm.value } form.value = { ...tempBeneficiaryForm.value }
saveKey.value = { ...tempSaveKey.value } saveKey.value = { ...tempSaveKey.value }
addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value)) addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value))
...@@ -489,7 +512,7 @@ const processFormData = async obj => { ...@@ -489,7 +512,7 @@ const processFormData = async obj => {
} else { } else {
processedBeneficiaryData.value = oldAppointmentData.value = processedData processedBeneficiaryData.value = oldAppointmentData.value = processedData
} }
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
editStatus.value = true editStatus.value = true
} else { } else {
editStatus.value = false editStatus.value = false
...@@ -798,7 +821,7 @@ const setFormValue = () => { ...@@ -798,7 +821,7 @@ const setFormValue = () => {
field.options = fetchDictData(field.dictType) field.options = fetchDictData(field.dictType)
} }
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
field.disabled = true field.disabled = true
} }
} }
...@@ -900,14 +923,6 @@ const setFormValue = () => { ...@@ -900,14 +923,6 @@ const setFormValue = () => {
} else { } else {
processedBeneficiaryData.value.push(oldDom[0]) // 详情中没有数据 ,dom应该根据默认数据来渲染 processedBeneficiaryData.value.push(oldDom[0]) // 详情中没有数据 ,dom应该根据默认数据来渲染
} }
// if (tempBeneficiaryDomData.value.length > 0) {
// form.value = { ...tempBeneficiaryForm.value }
// saveKey.value = { ...tempSaveKey.value }
// addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value))
// phoneQuickList.value = JSON.parse(JSON.stringify(tempPhoneQuickList.value))
// processedBeneficiaryData.value = JSON.parse(JSON.stringify(tempBeneficiaryDomData.value))
// }
// editStatus.value = true
} }
// 获取校验失败的字段信息 // 获取校验失败的字段信息
const getInvalidFields = fields => { const getInvalidFields = fields => {
...@@ -936,10 +951,17 @@ const handleFormValues = () => { ...@@ -936,10 +951,17 @@ const handleFormValues = () => {
result = JSON.parse(JSON.stringify(tempBeneficiaryForm.value)) result = JSON.parse(JSON.stringify(tempBeneficiaryForm.value))
} }
const pattern = /Time$/ // 以Time结尾 const pattern = /Time$/ // 以Time结尾
console.log('result', result)
for (const section of result['apiBeneficiaryInfoDtoList']) { for (const section of result['apiBeneficiaryInfoDtoList']) {
let submitObj = {} let submitObj = {}
if (
props.pageSource == 'policyList' &&
props.idsObj.policyBizId &&
section.policyBeneficiaryBizId
) {
submitObj['policyBeneficiaryBizId'] = section.policyBeneficiaryBizId
submitObj['policyBizId'] = section.policyBizId
}
if (phoneOraddressKey.value.length > 0) { if (phoneOraddressKey.value.length > 0) {
submitObj.addressList = [] submitObj.addressList = []
} }
...@@ -988,9 +1010,7 @@ const handleFormValues = () => { ...@@ -988,9 +1010,7 @@ const handleFormValues = () => {
}) })
} }
}) })
console.log('====================================')
console.log('受益人', submitObj)
console.log('====================================')
deleteKeyList.value.forEach(item => { deleteKeyList.value.forEach(item => {
delete submitObj[item] delete submitObj[item]
}) })
...@@ -1002,7 +1022,7 @@ const handleFormValues = () => { ...@@ -1002,7 +1022,7 @@ const handleFormValues = () => {
} }
console.log('====================================') console.log('====================================')
console.log('受益人', submitForm) console.log('提交受益人', submitForm)
console.log('====================================') console.log('====================================')
// 删除多余字段 // 删除多余字段
...@@ -1010,17 +1030,16 @@ const handleFormValues = () => { ...@@ -1010,17 +1030,16 @@ const handleFormValues = () => {
} }
// 表单提交 // 表单提交
const submitForm = () => { const submitForm = () => {
console.log('form.value', form.value)
proxy.$refs['beneficiaryInfoFormRef'].validate((valid, fields) => { proxy.$refs['beneficiaryInfoFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
let submitObj = handleFormValues() let submitObj = handleFormValues()
console.log('====================================')
console.log('submitObj', submitObj)
console.log('====================================')
// return // return
if (props.idsObj.appointmentBizId) { if (
props.idsObj.appointmentBizId &&
(props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')
) {
editBeneficiaryInfo({ editBeneficiaryInfo({
appointmentBizId: props.idsObj.appointmentBizId, appointmentBizId: props.idsObj.appointmentBizId,
apiBeneficiaryInfoDtoList: submitObj apiBeneficiaryInfoDtoList: submitObj
...@@ -1032,7 +1051,18 @@ const submitForm = () => { ...@@ -1032,7 +1051,18 @@ const submitForm = () => {
} }
}) })
} }
if (props.idsObj.policyBizId && props.pageSource == 'policyList') {
updatePolicyBeneficiary({
policyBizId: props.idsObj.policyBizId,
policyBeneficiaryList: submitObj
}).then(res => {
if (res.code == 200) {
handleEditStatus(true)
proxy.$message.success('新单跟进-受益人修改成功')
emit('policyEditSuccess')
}
})
}
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
// 获取校验失败的字段信息 // 获取校验失败的字段信息
...@@ -1074,7 +1104,7 @@ watch( ...@@ -1074,7 +1104,7 @@ watch(
openList.value = false openList.value = false
setTimeout(() => { setTimeout(() => {
// 修改状态 // 修改状态
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
setFormValue() setFormValue()
} else { } else {
// 新增状态 // 新增状态
......
<template> <template>
<!-- :limit="limit" :on-exceed="handleExceed"--> <!-- :limit="limit" :on-exceed="handleExceed"-->
<div> <div>
<!-- 来自新单跟进的不需要上传预约附件,只能看预约附件 -->
<div v-if="props.pageSource !== 'policyList'">
<div class="fileUploadBox"> <div class="fileUploadBox">
<el-upload <el-upload
:action="uploadImgUrl" :action="uploadImgUrl"
...@@ -16,6 +18,7 @@ ...@@ -16,6 +18,7 @@
</el-upload> </el-upload>
</div> </div>
<div class="tip">(支持Word,Excel,PDF,图片格式)</div> <div class="tip">(支持Word,Excel,PDF,图片格式)</div>
</div>
<el-table v-loading="loading" :data="fileTableList"> <el-table v-loading="loading" :data="fileTableList">
<!-- <el-table-column type="selection" width="55" /> --> <!-- <el-table-column type="selection" width="55" /> -->
<el-table-column label="序号" type="index" width="50" /> <el-table-column label="序号" type="index" width="50" />
...@@ -45,8 +48,20 @@ ...@@ -45,8 +48,20 @@
> >
查看 查看
</el-button> </el-button>
<el-button type="primary" link @click="handleUpdate(scope.row)">修改</el-button> <el-button
<el-button type="danger" link @click="handleDetele(scope.row)">删除</el-button> v-if="props.pageSource !== 'policyList'"
type="primary"
link
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
v-if="props.pageSource !== 'policyList'"
type="danger"
link
@click="handleDetele(scope.row)"
>删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -89,10 +104,8 @@ import { getToken } from '@/utils/auth' ...@@ -89,10 +104,8 @@ import { getToken } from '@/utils/auth'
import { addFile, getAppointmentFile, delFile, editAppointmentFile } from '@/api/sign/appointment' import { addFile, getAppointmentFile, delFile, editAppointmentFile } from '@/api/sign/appointment'
const props = defineProps({ const props = defineProps({
activeName: { type: String, default: '' }, //tab名称 activeName: { type: String, default: '' }, //tab名称
formStatus: { type: String, default: '' }, //父组件状态,新增、修改
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiAppointmentInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 pageSource: { type: String, default: '' } //页面来源
appointmentStatus: { type: Number } //父组件传递过来的预约的状态
}) })
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const editVisible = ref(false) const editVisible = ref(false)
......
...@@ -178,15 +178,7 @@ const handleLian = () => { ...@@ -178,15 +178,7 @@ const handleLian = () => {
} }
getList() getList()
} }
const handleCopy = row => {
// { fnaBizId: row.fnaBizId }
subProcess({ fnaBizId: row.fnaBizId }).then(response => {
if (response.code === 200) {
getList()
proxy.$modal.msgSuccess('生成副本成功')
}
})
}
const rowClick = row => { const rowClick = row => {
let data = { let data = {
fnaBizId: row.fnaBizId, fnaBizId: row.fnaBizId,
......
<!-- 新单跟进的修改提交还没写 -->
<template> <template>
<div> <div>
<div v-if="processedinsuredData.length > 0"> <div v-if="processedinsuredData.length > 0">
...@@ -12,8 +13,9 @@ ...@@ -12,8 +13,9 @@
:disabled="editStatus" :disabled="editStatus"
>导入联系人</el-button >导入联系人</el-button
> >
<!-- v-if="props.idsObj.appointmentBizId" -->
<el-button <el-button
v-if="props.idsObj.appointmentBizId" v-if="props.showSubmitBtn"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus(!editStatus)" @click="handleEditStatus(!editStatus)"
...@@ -107,7 +109,7 @@ ...@@ -107,7 +109,7 @@
</div> </div>
</el-row> </el-row>
</div> </div>
<el-row v-if="props.idsObj.appointmentBizId"> <el-row v-if="props.showSubmitBtn">
<el-col> <el-col>
<div class="tabButton"> <div class="tabButton">
<!-- <el-button <!-- <el-button
...@@ -206,7 +208,7 @@ import policyDomData from '@/formJson/insured' ...@@ -206,7 +208,7 @@ import policyDomData from '@/formJson/insured'
import Country from '@/views/components/country' import Country from '@/views/components/country'
import Phone from '@/views/components/phone' import Phone from '@/views/components/phone'
import Address from '@/views/components/address' import Address from '@/views/components/address'
import { updatePolicyInsurant } from '@/api/sign/underwritingMain'
import { watch, nextTick } from 'vue' import { watch, nextTick } from 'vue'
import { getCustomerList } from '@/api/sign/fna' import { getCustomerList } from '@/api/sign/fna'
import { editInsurantInfo } from '@/api/sign/appointment' import { editInsurantInfo } from '@/api/sign/appointment'
...@@ -220,9 +222,11 @@ const props = defineProps({ ...@@ -220,9 +222,11 @@ const props = defineProps({
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiInsurantInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 apiInsurantInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情
appointmentStatus: { type: Number }, //父组件传递过来的预约的状态 appointmentStatus: { type: Number }, //父组件传递过来的预约的状态
customerInfo: { type: Object, default: () => ({}) } //客户详情回显表单用 customerInfo: { type: Object, default: () => ({}) }, //客户详情回显表单用
showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改
pageSource: { type: String, default: '' } //页面来源
}) })
const emit = defineEmits(['handleSuccessEdit']) const emit = defineEmits(['handleSuccessEdit', 'policyEditSuccess'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender') // const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender')
const insuredInfoFormRef = ref(null) const insuredInfoFormRef = ref(null)
...@@ -616,7 +620,11 @@ const processFormData = async obj => { ...@@ -616,7 +620,11 @@ const processFormData = async obj => {
} }
} }
//当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来 //当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来
if (JSON.stringify(tempPolicyForm.value) !== '{}' && !props.idsObj.appointmentBizId) { if (
JSON.stringify(tempPolicyForm.value) !== '{}' &&
!props.idsObj.appointmentBizId &&
props.pageSource == 'fnaList'
) {
// 客户类型为公司时,隐藏非公司信息 // 客户类型为公司时,隐藏非公司信息
if ( if (
tempPolicyForm.value['customerType'] && tempPolicyForm.value['customerType'] &&
...@@ -640,7 +648,7 @@ const processFormData = async obj => { ...@@ -640,7 +648,7 @@ const processFormData = async obj => {
} }
} }
} }
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
field.disabled = true field.disabled = true
} else { } else {
if (field.key == 'age') { if (field.key == 'age') {
...@@ -671,14 +679,19 @@ const processFormData = async obj => { ...@@ -671,14 +679,19 @@ const processFormData = async obj => {
phoneQuickList.value = removeDuplicates(tempPhoneList, 'phoneString') phoneQuickList.value = removeDuplicates(tempPhoneList, 'phoneString')
addressQuickList.value = removeDuplicates(tempAddressList, 'addressString') addressQuickList.value = removeDuplicates(tempAddressList, 'addressString')
//当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来 //当tab切换走,在切换回来的时候,新增情况下需要把之前保存的值赋值回来
if (JSON.stringify(tempPolicyForm.value) !== '{}' && !props.idsObj.appointmentBizId) { if (
JSON.stringify(tempPolicyForm.value) !== '{}' &&
!props.idsObj.appointmentBizId &&
props.pageSource == 'fnaList'
) {
form.value = { ...tempPolicyForm.value } form.value = { ...tempPolicyForm.value }
saveKey.value = { ...tempSaveKey.value } saveKey.value = { ...tempSaveKey.value }
addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value)) addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value))
phoneQuickList.value = JSON.parse(JSON.stringify(tempPhoneQuickList.value)) phoneQuickList.value = JSON.parse(JSON.stringify(tempPhoneQuickList.value))
} }
if (props.idsObj.appointmentBizId) { // props.idsObj.appointmentBizId
if (props.showSubmitBtn) {
form.value = mergeObjects(form.value, obj.customerInfo) form.value = mergeObjects(form.value, obj.customerInfo)
if (form.value.smokingAllowed) { if (form.value.smokingAllowed) {
form.value.smokingAllowed = Number(form.value.smokingAllowed) form.value.smokingAllowed = Number(form.value.smokingAllowed)
...@@ -1064,12 +1077,8 @@ const submitForm = () => { ...@@ -1064,12 +1077,8 @@ const submitForm = () => {
proxy.$refs['insuredInfoFormRef'].validate((valid, fields) => { proxy.$refs['insuredInfoFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
let submitObj = handleFormValues() let submitObj = handleFormValues()
console.log('====================================') if (props.idsObj.appointmentBizId&&
console.log('submitObj', submitObj) (props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')) {
console.log('====================================')
// return
if (props.idsObj.appointmentBizId) {
submitObj['appointmentBizId'] = props.apiInsurantInfoDto.appointmentBizId submitObj['appointmentBizId'] = props.apiInsurantInfoDto.appointmentBizId
submitObj['id'] = props.apiInsurantInfoDto.id submitObj['id'] = props.apiInsurantInfoDto.id
submitObj['insurantBizId'] = props.apiInsurantInfoDto.insurantBizId submitObj['insurantBizId'] = props.apiInsurantInfoDto.insurantBizId
...@@ -1081,7 +1090,18 @@ const submitForm = () => { ...@@ -1081,7 +1090,18 @@ const submitForm = () => {
} }
}) })
} }
if (props.idsObj.policyBizId && props.pageSource == 'policyList') {
submitObj['policyInsurantBizId'] = props.apiInsurantInfoDto.policyInsurantBizId
submitObj['policyBizId'] = props.apiInsurantInfoDto.policyBizId
submitObj['id'] = props.apiInsurantInfoDto.id
updatePolicyInsurant(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus(true)
proxy.$message.success('新单跟进-受保人修改成功')
emit('policyEditSuccess')
}
})
}
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
// 获取校验失败的字段信息 // 获取校验失败的字段信息
...@@ -1120,7 +1140,7 @@ watch( ...@@ -1120,7 +1140,7 @@ watch(
if (newVal === 'insurantInfo') { if (newVal === 'insurantInfo') {
openList.value = false openList.value = false
setTimeout(() => { setTimeout(() => {
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
processFormData({ processFormData({
domdata: policyDomData, domdata: policyDomData,
customerInfo: props.apiInsurantInfoDto, customerInfo: props.apiInsurantInfoDto,
......
...@@ -12,8 +12,9 @@ ...@@ -12,8 +12,9 @@
:disabled="editStatus" :disabled="editStatus"
>导入联系人</el-button >导入联系人</el-button
> >
<!-- v-if="props.idsObj.appointmentBizId" -->
<el-button <el-button
v-if="props.idsObj.appointmentBizId" v-if="props.showSubmitBtn"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus(!editStatus)" @click="handleEditStatus(!editStatus)"
...@@ -34,17 +35,6 @@ ...@@ -34,17 +35,6 @@
<template v-for="child in father.data" :key="child.key"> <template v-for="child in father.data" :key="child.key">
<el-col :sm="child.sm" :lg="child.lg" class="formItem" v-if="child.show"> <el-col :sm="child.sm" :lg="child.lg" class="formItem" v-if="child.show">
<div> <div>
<!-- :rules="
child.required
? [
{
required: true,
message: `${child.label}不能为空`,
trigger: 'blur'
}
]
: []
" -->
<el-form-item <el-form-item
:label-width="child.labelWidth" :label-width="child.labelWidth"
:label="child.label" :label="child.label"
...@@ -53,7 +43,6 @@ ...@@ -53,7 +43,6 @@
:label-position="child.labelPosition" :label-position="child.labelPosition"
:rules="getRules(child)" :rules="getRules(child)"
> >
<!-- @input="handleInputChange(father, child)" -->
<el-input <el-input
v-if="child.domType === 'Input'" v-if="child.domType === 'Input'"
:type="child.inputType" :type="child.inputType"
...@@ -108,7 +97,7 @@ ...@@ -108,7 +97,7 @@
</div> </div>
</el-row> </el-row>
</div> </div>
<el-row v-if="props.idsObj.appointmentBizId"> <el-row v-if="props.showSubmitBtn">
<el-col> <el-col>
<div class="tabButton"> <div class="tabButton">
<!-- <el-button <!-- <el-button
...@@ -211,6 +200,7 @@ import Address from '@/views/components/address' ...@@ -211,6 +200,7 @@ import Address from '@/views/components/address'
import { watch, nextTick } from 'vue' import { watch, nextTick } from 'vue'
import { getCustomerList } from '@/api/sign/fna' import { getCustomerList } from '@/api/sign/fna'
import { editPolicyholderInfo } from '@/api/sign/appointment' import { editPolicyholderInfo } from '@/api/sign/appointment'
import { updatePolicyholder } from '@/api/sign/underwritingMain'
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -221,12 +211,15 @@ const props = defineProps({ ...@@ -221,12 +211,15 @@ const props = defineProps({
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiPolicyholderInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 apiPolicyholderInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情
appointmentStatus: { type: Number }, //父组件传递过来的预约的状态 appointmentStatus: { type: Number }, //父组件传递过来的预约的状态
customerInfo: { type: Object, default: () => ({}) } //客户详情回显表单用 customerInfo: { type: Object, default: () => ({}) }, //客户详情回显表单用
showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改
pageSource: { type: String, default: '' } //页面来源
}) })
//计算默认显示的日期(18年前的今天) //计算默认显示的日期(18年前的今天)
const defaultDisplayDate = ref(dayjs().subtract(18, 'year').toDate()) const defaultDisplayDate = ref(dayjs().subtract(18, 'year').toDate())
const emit = defineEmits(['handleSuccessEdit']) const emit = defineEmits(['handleSuccessEdit', 'policyEditSuccess'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender') // const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender')
const policyholderInfoFormRef = ref(null) const policyholderInfoFormRef = ref(null)
...@@ -620,7 +613,11 @@ const processFormData = async obj => { ...@@ -620,7 +613,11 @@ const processFormData = async obj => {
} }
} }
//当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来 //当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来
if (JSON.stringify(tempPolicyForm.value) !== '{}' && !props.idsObj.appointmentBizId) { if (
JSON.stringify(tempPolicyForm.value) !== '{}' &&
!props.idsObj.appointmentBizId &&
props.pageSource == 'fnaList'
) {
// 客户类型为公司时,隐藏非公司信息 // 客户类型为公司时,隐藏非公司信息
if ( if (
tempPolicyForm.value['customerType'] && tempPolicyForm.value['customerType'] &&
...@@ -644,8 +641,8 @@ const processFormData = async obj => { ...@@ -644,8 +641,8 @@ const processFormData = async obj => {
} }
} }
} }
// props.idsObj.appointmentBizId
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
field.disabled = true field.disabled = true
} else { } else {
if (field.key == 'age') { if (field.key == 'age') {
...@@ -677,13 +674,18 @@ const processFormData = async obj => { ...@@ -677,13 +674,18 @@ const processFormData = async obj => {
addressQuickList.value = removeDuplicates(tempAddressList, 'addressString') addressQuickList.value = removeDuplicates(tempAddressList, 'addressString')
//当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来 //当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来
if (JSON.stringify(tempPolicyForm.value) !== '{}' && !props.idsObj.appointmentBizId) { if (
JSON.stringify(tempPolicyForm.value) !== '{}' &&
!props.idsObj.appointmentBizId &&
props.pageSource == 'fnaList'
) {
form.value = { ...tempPolicyForm.value } form.value = { ...tempPolicyForm.value }
saveKey.value = { ...tempSaveKey.value } saveKey.value = { ...tempSaveKey.value }
addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value)) addressQuickList.value = JSON.parse(JSON.stringify(tempAddressQuickList.value))
phoneQuickList.value = JSON.parse(JSON.stringify(tempPhoneQuickList.value)) phoneQuickList.value = JSON.parse(JSON.stringify(tempPhoneQuickList.value))
} }
if (props.idsObj.appointmentBizId) { // props.idsObj.appointmentBizId
if (props.showSubmitBtn) {
form.value = mergeObjects(form.value, obj.customerInfo) form.value = mergeObjects(form.value, obj.customerInfo)
if (form.value.smokingAllowed) { if (form.value.smokingAllowed) {
form.value.smokingAllowed = Number(form.value.smokingAllowed) form.value.smokingAllowed = Number(form.value.smokingAllowed)
...@@ -1060,7 +1062,10 @@ const submitForm = () => { ...@@ -1060,7 +1062,10 @@ const submitForm = () => {
if (valid) { if (valid) {
let submitObj = handleFormValues() let submitObj = handleFormValues()
if (props.idsObj.appointmentBizId) { if (
props.idsObj.appointmentBizId &&
(props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')
) {
submitObj['appointmentBizId'] = props.apiPolicyholderInfoDto.appointmentBizId submitObj['appointmentBizId'] = props.apiPolicyholderInfoDto.appointmentBizId
submitObj['id'] = props.apiPolicyholderInfoDto.id submitObj['id'] = props.apiPolicyholderInfoDto.id
submitObj['policyholderBizId'] = props.apiPolicyholderInfoDto.policyholderBizId submitObj['policyholderBizId'] = props.apiPolicyholderInfoDto.policyholderBizId
...@@ -1072,6 +1077,18 @@ const submitForm = () => { ...@@ -1072,6 +1077,18 @@ const submitForm = () => {
} }
}) })
} }
if (props.idsObj.policyBizId && props.pageSource == 'policyList') {
submitObj['policyPolicyholderBizId'] = props.apiPolicyholderInfoDto.policyPolicyholderBizId
submitObj['policyBizId'] = props.apiPolicyholderInfoDto.policyBizId
submitObj['id'] = props.apiPolicyholderInfoDto.id
updatePolicyholder(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus(true)
proxy.$message.success('新单跟进-投保人修改成功')
emit('policyEditSuccess')
}
})
}
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
// 获取校验失败的字段信息 // 获取校验失败的字段信息
...@@ -1110,7 +1127,7 @@ watch( ...@@ -1110,7 +1127,7 @@ watch(
if (newVal === 'policyholder') { if (newVal === 'policyholder') {
openList.value = false openList.value = false
setTimeout(() => { setTimeout(() => {
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
processFormData({ processFormData({
domdata: policyDomData, domdata: policyDomData,
customerInfo: props.apiPolicyholderInfoDto, customerInfo: props.apiPolicyholderInfoDto,
......
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
import policyTransferDomData from '@/formJson/policyTransferInfo' import policyTransferDomData from '@/formJson/policyTransferInfo'
import { watch } from 'vue' import { watch } from 'vue'
import { editPolicytransfer } from '@/api/sign/appointment' import { editPolicytransfer } from '@/api/sign/appointment'
import { updatePolicyProduct } from '@/api/sign/underwritingMain'
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -75,9 +76,11 @@ const props = defineProps({ ...@@ -75,9 +76,11 @@ const props = defineProps({
formStatus: { type: String, default: '' }, //父组件状态,新增、修改 formStatus: { type: String, default: '' }, //父组件状态,新增、修改
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiAppointmentInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 apiAppointmentInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情
appointmentStatus: { type: Number } //父组件传递过来的预约的状态 appointmentStatus: { type: Number }, //父组件传递过来的预约的状态
showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改
pageSource: { type: String, default: '' } //页面来源
}) })
const emit = defineEmits(['handleSuccessEdit']) const emit = defineEmits(['handleSuccessEdit', 'policyEditSuccess'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender') // const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender')
const loading = ref(false) const loading = ref(false)
...@@ -132,6 +135,9 @@ const validateEnglish = (rule, value, callback) => { ...@@ -132,6 +135,9 @@ const validateEnglish = (rule, value, callback) => {
const processFormData = async obj => { const processFormData = async obj => {
form.value = {} form.value = {}
loading.value = true loading.value = true
// console.log('====================================')
// console.log('传值', props.apiAppointmentInfoDto)
// console.log('====================================')
// 深拷贝原始数据 // 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(obj.domdata)) const processedData = JSON.parse(JSON.stringify(obj.domdata))
...@@ -141,11 +147,17 @@ const processFormData = async obj => { ...@@ -141,11 +147,17 @@ const processFormData = async obj => {
section.options = fetchDictData(section.dictType) section.options = fetchDictData(section.dictType)
} }
} }
if (props.idsObj.appointmentBizId) { // debugger
if (props.showSubmitBtn) {
if (props.apiAppointmentInfoDto.policyTransfer) { if (props.apiAppointmentInfoDto.policyTransfer) {
form.value.policyTransfer = props.apiAppointmentInfoDto.policyTransfer form.value.policyTransfer = props.apiAppointmentInfoDto.policyTransfer
console.log('====================================')
console.log('表单数据', form.value)
console.log('====================================')
} }
} }
console.log('转报form', form.value)
policyTransferData.value = processedData policyTransferData.value = processedData
loading.value = false loading.value = false
} }
...@@ -207,17 +219,35 @@ const submitForm = () => { ...@@ -207,17 +219,35 @@ const submitForm = () => {
if (valid) { if (valid) {
let submitObj = JSON.parse(JSON.stringify(props.apiAppointmentInfoDto)) let submitObj = JSON.parse(JSON.stringify(props.apiAppointmentInfoDto))
submitObj.policyTransfer = form.value.policyTransfer submitObj.policyTransfer = form.value.policyTransfer
if (
props.idsObj.appointmentBizId &&
(props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')
) {
submitObj.appointmentBizId = props.idsObj.appointmentBizId submitObj.appointmentBizId = props.idsObj.appointmentBizId
if (props.idsObj.appointmentBizId) {
editPolicytransfer(submitObj).then(res => { editPolicytransfer(submitObj).then(res => {
if (res.code == 200) { if (res.code == 200) {
// handleEditStatus(true) // handleEditStatus(true)
proxy.$message.success('转保声明修改成功') proxy.$message.success('预约-转保声明修改成功')
emit('handleSuccessEdit') emit('handleSuccessEdit')
} }
}) })
} }
if (props.idsObj.policyBizId && props.pageSource == 'policyList') {
// submitObj.policyBizId = props.idsObj.policyBizId
// console.log('转包声明', submitObj)
// return
updatePolicyProduct({
policyBizId: props.idsObj.policyBizId,
apiProductPlanMainInfoDto: submitObj
}).then(res => {
if (res.code == 200) {
// handleEditStatus(true)
proxy.$message.success('新单跟进-转保声明修改成功')
emit('policyEditSuccess')
}
})
}
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
// 获取校验失败的字段信息 // 获取校验失败的字段信息
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="topBtn"> <div class="topBtn">
<!-- v-if="props.idsObj.appointmentBizId" -->
<el-button <el-button
v-if="props.idsObj.appointmentBizId" v-if="props.showSubmitBtn"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus(!editStatus)" @click="handleEditStatus(!editStatus)"
...@@ -221,9 +222,10 @@ ...@@ -221,9 +222,10 @@
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
import productDomData from '@/formJson/productPlan' import productDomData from '@/formJson/productPlan'
import { watch } from 'vue' import { watch } from 'vue'
import { addfanForm, getfanFormDetail, editFanForm, getCustomerList } from '@/api/sign/fna'
import { getInsuranceProductList, getAdditionalProductList } from '@/api/common' import { getInsuranceProductList, getAdditionalProductList } from '@/api/common'
import { editProductPlanInfo, delAdditional } from '@/api/sign/appointment' import { editProductPlanInfo, delAdditional } from '@/api/sign/appointment'
import { updatePolicyProduct, delPolicyAdditional } from '@/api/sign/underwritingMain'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
const userStore = useUserStore() const userStore = useUserStore()
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -235,12 +237,12 @@ const props = defineProps({ ...@@ -235,12 +237,12 @@ const props = defineProps({
dictTypeLists: { type: Array, default: () => [] }, //多个字典值数据 dictTypeLists: { type: Array, default: () => [] }, //多个字典值数据
formStatus: { type: String, default: '' }, //父组件状态,新增、修改 formStatus: { type: String, default: '' }, //父组件状态,新增、修改
showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改 showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改
pageSource: { type: String, default: false }, //页面来源 pageSource: { type: String, default: '' }, //页面来源
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiProductPlanInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 apiProductPlanInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情
appointmentStatus: { type: Number } //父组件传递过来的预约的状态 appointmentStatus: { type: Number } //父组件传递过来的预约的状态
}) })
const emit = defineEmits(['handleSuccessEdit']) const emit = defineEmits(['handleSuccessEdit', 'policyEditSuccess'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// const { sys_no_yes } = proxy.useDict('sys_no_yes') // const { sys_no_yes } = proxy.useDict('sys_no_yes')
const saveKey = ref({}) // 用于存储当前点击的drawer框返回的对象,修改的时候回显值也要存key const saveKey = ref({}) // 用于存储当前点击的drawer框返回的对象,修改的时候回显值也要存key
...@@ -469,8 +471,12 @@ const processFormData = async () => { ...@@ -469,8 +471,12 @@ const processFormData = async () => {
// 证明是修改 // 证明是修改
if (props.showSubmitBtn) { if (props.showSubmitBtn) {
editStatus.value = true editStatus.value = true
processedProductData.value = processedData // processedProductData.value = processedData
// setFormValue(props.apiProductPlanInfoDto, processedData) //在流程和预约的时候要调用这个方法回显修改数据
console.log('====================================')
console.log('props.apiProductPlanInfoDto', props.apiProductPlanInfoDto)
console.log('====================================')
setFormValue(props.apiProductPlanInfoDto, processedData)
} else { } else {
editStatus.value = false editStatus.value = false
processedProductData.value = processedData processedProductData.value = processedData
...@@ -484,7 +490,7 @@ const addChildren = father => { ...@@ -484,7 +490,7 @@ const addChildren = father => {
} }
const processedData = JSON.parse(JSON.stringify(processedProductData.value)) const processedData = JSON.parse(JSON.stringify(processedProductData.value))
let obj = { let obj = {
id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识 // id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识
span: 24, //栅格布局份数 span: 24, //栅格布局份数
childTitle: '附加险', childTitle: '附加险',
deleteBtn: true, deleteBtn: true,
...@@ -628,7 +634,11 @@ const deleteChildren = (father, childIndex) => { ...@@ -628,7 +634,11 @@ const deleteChildren = (father, childIndex) => {
return return
} }
const processedData = JSON.parse(JSON.stringify(processedProductData.value)) const processedData = JSON.parse(JSON.stringify(processedProductData.value))
if (props.idsObj.appointmentBizId && form.value[father.key][childIndex].additionalBizId) { if (
props.idsObj.appointmentBizId &&
form.value[father.key][childIndex].additionalBizId &&
(props.pageSource == 'appointmentList' || props.pageSource == 'fnaList')
) {
delAdditional(form.value[father.key][childIndex].additionalBizId).then(res => { delAdditional(form.value[father.key][childIndex].additionalBizId).then(res => {
if (res.code == 200) { if (res.code == 200) {
proxy.$message.success('附加险删除成功') proxy.$message.success('附加险删除成功')
...@@ -639,6 +649,25 @@ const deleteChildren = (father, childIndex) => { ...@@ -639,6 +649,25 @@ const deleteChildren = (father, childIndex) => {
} }
//更新form表单对应的数据,以便收集填写的值 //更新form表单对应的数据,以便收集填写的值
form.value[father.key].splice(childIndex, 1) form.value[father.key].splice(childIndex, 1)
emit('handleSuccessEdit')
}
})
} else if (
props.idsObj.policyBizId &&
form.value[father.key][childIndex].id &&
props.pageSource == 'policyList'
) {
delPolicyAdditional(form.value[father.key][childIndex].id).then(res => {
if (res.code == 200) {
proxy.$message.success('附加险删除成功')
for (const section of processedData) {
if (father.key == 'apiProductPlanAdditionalInfoDtoList' && section.key == father.key) {
section.data.splice(childIndex, 1)
}
}
//更新form表单对应的数据,以便收集填写的值
form.value[father.key].splice(childIndex, 1)
emit('policyEditSuccess')
} }
}) })
} else { } else {
...@@ -741,7 +770,7 @@ const setFormValue = (obj, formData) => { ...@@ -741,7 +770,7 @@ const setFormValue = (obj, formData) => {
} }
// 2.根据最新的表单数据更新processedProductData的值,因为有些模块是多项的,所以表单数据要和dom对应上,防止dom有form表单里没有对应的数据会报错 // 2.根据最新的表单数据更新processedProductData的值,因为有些模块是多项的,所以表单数据要和dom对应上,防止dom有form表单里没有对应的数据会报错
let newChildren = { let newChildren = {
id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识 //id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识
span: 24, //栅格布局份数 span: 24, //栅格布局份数
childTitle: '附加险', childTitle: '附加险',
deleteBtn: true, deleteBtn: true,
...@@ -889,8 +918,10 @@ const setFormValue = (obj, formData) => { ...@@ -889,8 +918,10 @@ const setFormValue = (obj, formData) => {
key == 'apiProductPlanAdditionalInfoDtoList' && key == 'apiProductPlanAdditionalInfoDtoList' &&
newForm[section.key].length > 0 newForm[section.key].length > 0
) { ) {
for (let i = 0; i < newForm[section.key].length; i++) {
section.data.push(newChildren) section.data.push(newChildren)
} }
}
for (const field of section.data) { for (const field of section.data) {
if (key == 'apiProductPlanMainInfoDto') { if (key == 'apiProductPlanMainInfoDto') {
for (const key2 in newForm[key]) { for (const key2 in newForm[key]) {
...@@ -906,7 +937,7 @@ const setFormValue = (obj, formData) => { ...@@ -906,7 +937,7 @@ const setFormValue = (obj, formData) => {
if (section.child == 'yes' && field.children && field.children.length > 0) { if (section.child == 'yes' && field.children && field.children.length > 0) {
for (const child of field.children) { for (const child of field.children) {
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
child.disabled = true child.disabled = true
} else { } else {
child.disabled = false child.disabled = false
...@@ -917,7 +948,9 @@ const setFormValue = (obj, formData) => { ...@@ -917,7 +948,9 @@ const setFormValue = (obj, formData) => {
} }
} }
} }
form.value = newForm form.value = newForm
processedProductData.value = oldProductDomData.value = processedData processedProductData.value = oldProductDomData.value = processedData
// 保存一份就得表单数据便于做撤销操作 // 保存一份就得表单数据便于做撤销操作
oldObjInfo.value = JSON.parse(JSON.stringify(obj)) oldObjInfo.value = JSON.parse(JSON.stringify(obj))
...@@ -1000,6 +1033,7 @@ const handleSubmitForm = () => { ...@@ -1000,6 +1033,7 @@ const handleSubmitForm = () => {
} }
} }
} }
console.log('新单提交产品计划', result)
return result return result
} }
...@@ -1011,10 +1045,7 @@ const submitForm = saveType => { ...@@ -1011,10 +1045,7 @@ const submitForm = saveType => {
proxy.$refs['productFormRef'].validate((valid, fields) => { proxy.$refs['productFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
let result = handleSubmitForm() let result = handleSubmitForm()
console.log('====================================')
console.log('提交的数据', result)
console.log('====================================')
// return
if ( if (
props.idsObj.appointmentBizId && props.idsObj.appointmentBizId &&
(props.pageSource == 'fnaList' || props.pageSource == 'appointmentList') (props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')
...@@ -1022,11 +1053,21 @@ const submitForm = saveType => { ...@@ -1022,11 +1053,21 @@ const submitForm = saveType => {
editProductPlanInfo(result).then(res => { editProductPlanInfo(result).then(res => {
if (res.code == 200) { if (res.code == 200) {
handleEditStatus(true) handleEditStatus(true)
proxy.$message.success('产品计划修改成功') proxy.$message.success('预约-产品计划修改成功')
emit('handleSuccessEdit') emit('handleSuccessEdit')
} }
}) })
} }
if (props.idsObj.policyBizId && props.pageSource == 'policyList') {
result.policyBizId = props.idsObj.policyBizId
updatePolicyProduct(result).then(res => {
if (res.code == 200) {
handleEditStatus(true)
proxy.$message.success('新单跟进-产品计划修改成功')
emit('policyEditSuccess')
}
})
}
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
// 获取校验失败的字段信息 // 获取校验失败的字段信息
...@@ -1038,16 +1079,6 @@ const submitForm = saveType => { ...@@ -1038,16 +1079,6 @@ const submitForm = saveType => {
}) })
} }
// 获取流程详情
function getFanformInfo(fnaFormBizId, formData) {
getfanFormDetail(fnaFormBizId).then(async res => {
if (res.code == 200) {
// 回显值
setFormValue(res.data, formData)
}
})
}
watch( watch(
() => props.activeName, () => props.activeName,
newVal => { newVal => {
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
>导入联系人</el-button >导入联系人</el-button
> --> > -->
<el-button <el-button
v-if="props.idsObj.appointmentBizId" v-if="props.showSubmitBtn"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus(!editStatus)" @click="handleEditStatus(!editStatus)"
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
</div> </div>
</el-row> </el-row>
</div> </div>
<el-row v-if="props.idsObj.appointmentBizId"> <el-row v-if="props.showSubmitBtn">
<el-col> <el-col>
<div class="tabButton"> <div class="tabButton">
<!-- <el-button <!-- <el-button
...@@ -189,6 +189,7 @@ import Address from '@/views/components/address' ...@@ -189,6 +189,7 @@ import Address from '@/views/components/address'
import { watch, nextTick } from 'vue' import { watch, nextTick } from 'vue'
import { getCustomerList } from '@/api/sign/fna' import { getCustomerList } from '@/api/sign/fna'
import { editSecondHolderInfo } from '@/api/sign/appointment' import { editSecondHolderInfo } from '@/api/sign/appointment'
import { updatePolicySecondHolder } from '@/api/sign/underwritingMain'
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -199,10 +200,12 @@ const props = defineProps({ ...@@ -199,10 +200,12 @@ const props = defineProps({
idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象 idsObj: { type: Object, default: () => ({}) }, //父组件传递过来的id对象
apiSecondHolderInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情 apiSecondHolderInfoDto: { type: Object, default: () => ({}) }, //父组件传递过来的预约信息的详情
appointmentStatus: { type: Number }, //父组件传递过来的预约的状态 appointmentStatus: { type: Number }, //父组件传递过来的预约的状态
customerInfo: { type: Object, default: () => ({}) } //客户详情回显表单用 customerInfo: { type: Object, default: () => ({}) }, //客户详情回显表单用
showSubmitBtn: { type: Boolean, default: false }, //父组件状态,新增、修改
pageSource: { type: String, default: false } //页面来源
}) })
const emit = defineEmits(['handleSuccessEdit']) const emit = defineEmits(['handleSuccessEdit', 'policyEditSuccess'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender') // const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender')
const showPhoneDrawer = ref(false) //电话抽屉开关 const showPhoneDrawer = ref(false) //电话抽屉开关
...@@ -417,7 +420,7 @@ const processFormData = async obj => { ...@@ -417,7 +420,7 @@ const processFormData = async obj => {
} }
} }
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
field.disabled = true field.disabled = true
} }
} }
...@@ -425,10 +428,14 @@ const processFormData = async obj => { ...@@ -425,10 +428,14 @@ const processFormData = async obj => {
} }
//当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来 //当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来
if (JSON.stringify(tempSecondHolderForm.value) !== '{}' && !props.idsObj.appointmentBizId) { if (
JSON.stringify(tempSecondHolderForm.value) !== '{}' &&
!props.idsObj.appointmentBizId &&
props.pageSource == 'fnaList'
) {
form.value = { ...tempSecondHolderForm.value } form.value = { ...tempSecondHolderForm.value }
} }
if (props.idsObj.appointmentBizId) { if (props.showSubmitBtn) {
form.value = { ...props.apiSecondHolderInfoDto } form.value = { ...props.apiSecondHolderInfoDto }
editStatus.value = true editStatus.value = true
} else { } else {
...@@ -652,15 +659,7 @@ const handleFormValues = () => { ...@@ -652,15 +659,7 @@ const handleFormValues = () => {
submitObj[key1] = proxy.formatToDateTime(submitObj[key1]) submitObj[key1] = proxy.formatToDateTime(submitObj[key1])
} }
} }
// if (Object.keys(submitObj).length > 0) {
// if (submitForm['documentType'] && !submitForm['idNumber']) {
// proxy.$message.error('请输入证件号码')
// return
// } else if(submitForm['idNumber'] && !submitForm['documentType']){
// proxy.$message.error('请输入证件类型')
// return
// }
// }
return submitObj return submitObj
} }
// 表单提交 // 表单提交
...@@ -668,7 +667,10 @@ const submitForm = () => { ...@@ -668,7 +667,10 @@ const submitForm = () => {
proxy.$refs['secondHolderFormRef'].validate((valid, fields) => { proxy.$refs['secondHolderFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
let submitObj = handleFormValues() let submitObj = handleFormValues()
if (props.idsObj.appointmentBizId) { if (
props.idsObj.appointmentBizId &&
(props.pageSource == 'fnaList' || props.pageSource == 'appointmentList')
) {
editSecondHolderInfo(submitObj).then(res => { editSecondHolderInfo(submitObj).then(res => {
if (res.code == 200) { if (res.code == 200) {
handleEditStatus(true) handleEditStatus(true)
...@@ -677,7 +679,18 @@ const submitForm = () => { ...@@ -677,7 +679,18 @@ const submitForm = () => {
} }
}) })
} }
if (props.idsObj.policyBizId && props.pageSource == 'policyList') {
// submitObj['policySecondHolderBizId'] = props.apiInsurantInfoDto.policySecondHolderBizId
// submitObj['policyBizId'] = props.apiInsurantInfoDto.policyBizId
// submitObj['id'] = props.apiInsurantInfoDto.id
updatePolicySecondHolder(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus(true)
proxy.$message.success('新单跟进-受保人修改成功')
emit('policyEditSuccess')
}
})
}
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
// 获取校验失败的字段信息 // 获取校验失败的字段信息
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-col :span="24"> <el-col :span="24">
<div class="topBtn"> <div class="topBtn">
<el-button <el-button
v-if="props.fnaFormBizId" v-if="props.policyBizId"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus" @click="handleEditStatus"
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
<div class="subTitle" v-if="father.subTitle">{{ father.subTitle }}</div> --> <div class="subTitle" v-if="father.subTitle">{{ father.subTitle }}</div> -->
<el-row v-if="father.showTable"> <el-row v-if="father.showTable">
<el-table :data="father.data" border> <el-table :data="father.data" border>
<!-- && form[father.key].length > 0 -->
<template v-if="father.key == 'brokerList'"> <template v-if="father.key == 'brokerList'">
<el-table-column label="转介人比例" prop="brokerRatio" align="center"> <el-table-column label="转介人比例" prop="brokerRatio" align="center">
<template #default="scope"> <template #default="scope">
...@@ -153,7 +152,7 @@ import { ...@@ -153,7 +152,7 @@ import {
getAllCompanys, getAllCompanys,
getClientUser getClientUser
} from '@/api/common' } from '@/api/common'
import { updatePolicyfollow } from '@/api/sign/underwritingMain' import { updatePolicyfollow, getPolicyfollow } from '@/api/sign/underwritingMain'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
const userStore = useUserStore() const userStore = useUserStore()
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -163,7 +162,8 @@ const props = defineProps({ ...@@ -163,7 +162,8 @@ const props = defineProps({
fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改 fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改
policyBizId: { type: String, default: '' }, //提交状态,新增、修改 policyBizId: { type: String, default: '' }, //提交状态,新增、修改
customerBizId: { type: String, default: '' }, //提交状态,新增、修改 customerBizId: { type: String, default: '' }, //提交状态,新增、修改
dictTypeLists: { type: Array, default: () => [] } //多个字典值数据 dictTypeLists: { type: Array, default: () => [] }, //多个字典值数据
brokerList: { type: Array, default: () => [] } //详情数据
}) })
const emit = defineEmits(['handleSuccess']) const emit = defineEmits(['handleSuccess'])
...@@ -331,6 +331,9 @@ const processFormData = () => { ...@@ -331,6 +331,9 @@ const processFormData = () => {
if (section.keyType == 'Array') { if (section.keyType == 'Array') {
form.value[section.key] = [] form.value[section.key] = []
if (section.key == 'brokerList') { if (section.key == 'brokerList') {
if (props.policyBizId && props.brokerList.length > 0) {
section.data = JSON.parse(JSON.stringify(props.brokerList))
}
form.value[section.key] = section.data form.value[section.key] = section.data
} }
} else if (section.keyType == 'Object') { } else if (section.keyType == 'Object') {
...@@ -382,11 +385,11 @@ const processFormData = () => { ...@@ -382,11 +385,11 @@ const processFormData = () => {
processedFanFormData.value = oldFanFormData.value = processedData processedFanFormData.value = oldFanFormData.value = processedData
} }
if (props.policyBizId) { if (props.policyBizId) {
// editStatus.value = true editStatus.value = true
} else { } else {
editStatus.value = false editStatus.value = false
loading.value = false
} }
loading.value = false
console.log('form', form.value) console.log('form', form.value)
} }
// 添加表单子级dom // 添加表单子级dom
...@@ -519,40 +522,12 @@ const isObject = value => { ...@@ -519,40 +522,12 @@ const isObject = value => {
// 处理表单填写得数据 // 处理表单填写得数据
const handleFormValues = () => { const handleFormValues = () => {
// 提交要从dom中拿数据,因为收集到dom中了 // 提交要从dom中拿数据,因为收集到dom中了
console.log('processedFanFormData.value', processedFanFormData.value) let domData = JSON.parse(JSON.stringify(processedFanFormData.value))
// let submitObj = JSON.parse(JSON.stringify(form.value))
let submitObj = JSON.parse(JSON.stringify(form.value)) let submitObj = { policyBizId: props.policyBizId, brokerList: [] }
const pattern = /Date$/ // 以Time结尾
// debugger // debugger
//处理表单数据 if (domData[0].data.length > 0) {
for (const key1 in form.value) { domData[0].data.forEach(item1 => {
// 对象数据格式
if (isObject(form.value[key1]) && Object.keys(form.value[key1]).length > 0) {
for (const key2 in form.value[key1]) {
if (pattern.test(key2) && form.value[key1][key2]) {
submitObj[key1][key2] = proxy.formatToDate(form.value[key1][key2])
}
// 处理搜索下拉框数据需要返回的各种业务ID
if ((key2 == 'insurer' || key2 === 'reconciliationCompany') && form.value[key1][key2]) {
dictStore.insureCompanyList.forEach(item => {
if (item.deptBizId == form.value[key1][key2]) {
submitObj[key1][key2] = item.deptName
submitObj[key1][`${key2}BizId`] = item.deptBizId
}
})
} else if (key2 == 'productName' && form.value[key1][key2]) {
dictStore.insureProductList.forEach(item => {
if (item.productBizId == form.value[key1][key2]) {
submitObj[key1][key2] = item.productName
submitObj[key1]['productBizId'] = item.productBizId
}
})
}
}
}
// 数组数据格式
if (isArray(form.value[key1]) && form.value[key1].length > 0) {
submitObj[key1] = form.value[key1].map(item1 => {
if (item1.brokerName) { if (item1.brokerName) {
dictStore.clientUserList.forEach(item => { dictStore.clientUserList.forEach(item => {
if (item.clientUserBizId == item1.brokerName) { if (item.clientUserBizId == item1.brokerName) {
...@@ -561,50 +536,27 @@ const handleFormValues = () => { ...@@ -561,50 +536,27 @@ const handleFormValues = () => {
} }
}) })
} }
delete item1.id submitObj.brokerList.push(item1)
return item1
}) })
} }
}
return submitObj return submitObj
} }
// 表单提交 // 表单提交
const submitForm = saveType => { const submitForm = saveType => {
let submitObj = handleFormValues() let submitObj = handleFormValues()
// return
proxy.$refs['fanFormRef'].validate((valid, fields) => { proxy.$refs['fanFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
console.log('====================================')
console.log(' props.policyBizId', submitObj)
console.log('====================================')
// return
if (props.policyBizId) { if (props.policyBizId) {
// submitObj.PolicyFollowUpdateDto.policyBizId = props.policyBizId
updatePolicyfollow(submitObj).then(res => { updatePolicyfollow(submitObj).then(res => {
if (res.code == 200) { if (res.code == 200) {
handleEditStatus() handleEditStatus()
proxy.$message.success('提交成功') proxy.$message.success('提交成功')
// emit('handleSuccess', { // 提交成功后,在获取详情信息,防止数据丢失
// tab: 'fnaform', getPolicyDetail()
// fnaFormBizId: props.fnaFormBizId,
// type: 'edit'
// })
} }
}) })
} else { } else {
// addfanForm(result).then(res => {
// if (res.code == 200) {
// proxy.$message.success('fnaForm新增成功')
// emit('handleSuccess', {
// tab: 'fnaform',
// fnaFormBizId: res.data.fnaFormBizId,
// type: 'add'
// })
// }
// })
} }
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
...@@ -617,24 +569,15 @@ const submitForm = saveType => { ...@@ -617,24 +569,15 @@ const submitForm = saveType => {
}) })
} }
// 获取流程详情 // 获取新单跟进详情数据
function getFanformInfo(fnaFormBizId, formData) { const getPolicyDetail = () => {
getfanFormDetail(fnaFormBizId).then(async res => { getPolicyfollow(props.policyBizId).then(res => {
if (res.code == 200) { if (res.code == 200) {
// 回显值 processedFanFormData.value.brokerList = res.data.brokerList
setFormValue(res.data, formData)
} }
}) })
} }
watch(fanFormRef, newVal => {
if (newVal) {
for (const key in rules.value) {
for (const key2 in rules.value[key]) {
fanFormRef.value.clearValidate(key2)
}
}
}
})
watch( watch(
() => props.activeName, () => props.activeName,
newVal => { newVal => {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-col :span="24"> <el-col :span="24">
<div class="topBtn"> <div class="topBtn">
<el-button <el-button
v-if="props.fnaFormBizId" v-if="props.policyBizId"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus" @click="handleEditStatus"
...@@ -109,107 +109,6 @@ ...@@ -109,107 +109,6 @@
</el-col> </el-col>
</template> </template>
</el-row> </el-row>
<el-row v-if="father.showTable">
<el-table :data="father.data" border>
<!-- && form[father.key].length > 0 -->
<template v-if="father.key == 'brokerList'">
<el-table-column label="转介人比例" prop="brokerRatio" align="center">
<template #default="scope">
<el-input
v-model="scope.row.brokerRatio"
size="default"
type="number"
placeholder="请输入"
:disabled="editStatus"
/>
</template>
</el-table-column>
<el-table-column label="转介人名称" prop="brokerName" align="center">
<template #default="scope">
<el-select
v-model="scope.row.brokerName"
filterable
remote
reserve-keyword
placeholder="请输入关键词搜索"
:remote-method="query => searchSelectList(query, 'brokerName', scope.row)"
:loading="searchLoadingStates['brokerName']"
:disabled="editStatus"
>
<el-option
v-for="item in searchOptions['brokerName'] || []"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="所属团队" prop="team" align="center">
<template #default="scope">
<el-input
v-model="scope.row.team"
size="default"
type="text"
placeholder="请输入"
:disabled="editStatus"
/>
<!-- 和csf的销售小程序团队挂钩,因为没有接口现在先放在这等有了在换 -->
<!-- <el-select
v-model="scope.row.team"
filterable
remote
reserve-keyword
placeholder="请输入关键词搜索"
:remote-method="query => searchSelectList(query, 'team')"
:loading="searchLoadingStates['team']"
:disabled="editStatus"
>
<el-option
v-for="item in searchOptions['team'] || []"
:key="item.userBizId"
:label="item.realName"
:value="item.userBizId"
/>
</el-select> -->
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" align="center">
<template #default="scope">
<el-input
v-model="scope.row.remark"
size="default"
type="textarea"
placeholder="请输入"
:disabled="editStatus"
/>
</template>
</el-table-column>
<el-table-column width="60px" align="center" label="操作">
<template #default="scope">
<el-icon @click="deleteChildren(father, scope.$index)" class="deleteIcon"
><Delete
/></el-icon>
</template>
</el-table-column>
</template>
</el-table>
<el-col
:span="24"
v-if="father.addFamilyChildren"
style="display: flex; justify-content: center"
>
<el-button
:disabled="editStatus"
style="margin-top: 10px"
type="primary"
icon="Plus"
@click="addChildren(father)"
>添加转介人</el-button
>
</el-col>
</el-row>
</div> </div>
</el-row> </el-row>
...@@ -244,7 +143,7 @@ import { ...@@ -244,7 +143,7 @@ import {
getAllCompanys, getAllCompanys,
getClientUser getClientUser
} from '@/api/common' } from '@/api/common'
import { updatePolicyfollow } from '@/api/sign/underwritingMain' import { updatePolicyfollow, getPolicyfollow } from '@/api/sign/underwritingMain'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
const userStore = useUserStore() const userStore = useUserStore()
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -255,7 +154,8 @@ const props = defineProps({ ...@@ -255,7 +154,8 @@ const props = defineProps({
fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改 fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改
policyBizId: { type: String, default: '' }, //提交状态,新增、修改 policyBizId: { type: String, default: '' }, //提交状态,新增、修改
customerBizId: { type: String, default: '' }, //提交状态,新增、修改 customerBizId: { type: String, default: '' }, //提交状态,新增、修改
dictTypeLists: { type: Array, default: () => [] } //多个字典值数据 dictTypeLists: { type: Array, default: () => [] }, //多个字典值数据
policyFollowUpdateDto: { type: Object, default: () => {} } //详情数据
}) })
const emit = defineEmits(['handleSuccess']) const emit = defineEmits(['handleSuccess'])
...@@ -434,8 +334,8 @@ const processFormData = () => { ...@@ -434,8 +334,8 @@ const processFormData = () => {
for (const field of section.data) { for (const field of section.data) {
// 为下拉搜索框加options // 为下拉搜索框加options
if (field.domType == 'SearchSelect') { if (field.domType == 'SearchSelect') {
if (field.key == 'accountName') { if (field.key == 'insurer' || field.key == 'reconciliationCompany') {
searchOptions.value[field.key] = dictStore.tenantUserList searchOptions.value[field.key] = dictStore.insureCompanyList
} }
} }
...@@ -453,7 +353,7 @@ const processFormData = () => { ...@@ -453,7 +353,7 @@ const processFormData = () => {
{ required: true, message: `${field.label}不能为空`, trigger: 'blur' } { required: true, message: `${field.label}不能为空`, trigger: 'blur' }
] ]
} }
if (props.fnaFormBizId) { if (props.policyBizId) {
field.disabled = true field.disabled = true
} else { } else {
field.disabled = false field.disabled = false
...@@ -463,62 +363,26 @@ const processFormData = () => { ...@@ -463,62 +363,26 @@ const processFormData = () => {
} }
} }
} }
if (Object.keys(tempFanFormValue.value).length > 0) {
form.value = JSON.parse(JSON.stringify(tempFanFormValue.value))
}
if (tempFanFormData.value.length > 0) {
processedFanFormData.value = oldFanFormData.value = JSON.parse(
JSON.stringify(tempFanFormData.value)
)
} else {
processedFanFormData.value = oldFanFormData.value = processedData
}
if (props.policyBizId) { if (props.policyBizId) {
form.value.policyFollowUpdateDto = JSON.parse(JSON.stringify(props.policyFollowUpdateDto))
form.value.policyBizId = props.policyBizId
editStatus.value = true editStatus.value = true
} else { } else {
// tab切走在切回来时,表单会重置,所以这里需要把表单的值赋回去 // tab切走在切回来时,表单会重置,所以这里需要把表单的值赋回去
editStatus.value = false editStatus.value = false
loading.value = false
}
console.log('form', form.value)
}
// 添加表单子级dom
const addChildren = father => {
// if (editStatus.value) {
// proxy.$modal.confirm(`请先点击编辑再添加儿女`, { showCancel: '0', title: '填写提示' })
// return
// }
const processedData = JSON.parse(JSON.stringify(processedFanFormData.value))
let obj = {
id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识
brokerName: '',
team: '',
brokerRatio: '',
remark: ''
}
for (const section of processedData) {
if (father.key == 'brokerList' && section.key == father.key) {
section.data.push(obj)
} }
if (Object.keys(tempFanFormValue.value).length > 0) {
form.value = JSON.parse(JSON.stringify(tempFanFormValue.value))
} }
//更新form表单对应的数据,以便收集填写的值 processedFanFormData.value = oldFanFormData.value = processedData
form.value[father.key].push(obj) // if (tempFanFormData.value.length > 0) {
processedFanFormData.value = processedData // processedFanFormData.value = oldFanFormData.value = JSON.parse(
} // JSON.stringify(tempFanFormData.value)
const deleteChildren = (father, childIndex) => { // )
// if (editStatus.value) { // } else {
// proxy.$modal.confirm(`请先点击编辑再删除儿女`, { showCancel: '0', title: '填写提示' }) // processedFanFormData.value = oldFanFormData.value = processedData
// } // }
const processedData = JSON.parse(JSON.stringify(processedFanFormData.value)) loading.value = false
for (const section of processedData) {
if (father.key == 'brokerList' && section.key == father.key) {
section.data.splice(childIndex, 1)
}
}
//更新form表单对应的数据,以便收集填写的值
form.value[father.key].splice(childIndex, 1)
processedFanFormData.value = processedData
} }
// 根据联动重置表单项的显示与否 // 根据联动重置表单项的显示与否
const resetShow = (childKey, status) => { const resetShow = (childKey, status) => {
...@@ -582,10 +446,6 @@ const handleEditStatus = () => { ...@@ -582,10 +446,6 @@ const handleEditStatus = () => {
} }
processedFanFormData.value = processedData processedFanFormData.value = processedData
} }
//给表单赋值 方便表单回显 obj 为表单数据
const setFormValue = (obj, formData) => {
loading.value = true
}
// 获取校验失败的字段信息 // 获取校验失败的字段信息
const getInvalidFields = fields => { const getInvalidFields = fields => {
...@@ -651,7 +511,7 @@ const handleFormValues = () => { ...@@ -651,7 +511,7 @@ const handleFormValues = () => {
} }
}) })
} }
delete item1.id // delete item1.id
return item1 return item1
}) })
} }
...@@ -663,38 +523,18 @@ const handleFormValues = () => { ...@@ -663,38 +523,18 @@ const handleFormValues = () => {
const submitForm = saveType => { const submitForm = saveType => {
let submitObj = handleFormValues() let submitObj = handleFormValues()
// return
proxy.$refs['fanFormRef'].validate((valid, fields) => { proxy.$refs['fanFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
console.log('====================================')
console.log(' props.policyBizId', submitObj)
console.log('====================================')
// return
if (props.policyBizId) { if (props.policyBizId) {
// submitObj.PolicyFollowUpdateDto.policyBizId = props.policyBizId
updatePolicyfollow(submitObj).then(res => { updatePolicyfollow(submitObj).then(res => {
if (res.code == 200) { if (res.code == 200) {
handleEditStatus() handleEditStatus()
proxy.$message.success('提交成功') proxy.$message.success('提交成功')
// emit('handleSuccess', { // 提交成功后,在获取详情信息,防止数据丢失
// tab: 'fnaform', getPolicyDetail()
// fnaFormBizId: props.fnaFormBizId,
// type: 'edit'
// })
} }
}) })
} else { } else {
// addfanForm(result).then(res => {
// if (res.code == 200) {
// proxy.$message.success('fnaForm新增成功')
// emit('handleSuccess', {
// tab: 'fnaform',
// fnaFormBizId: res.data.fnaFormBizId,
// type: 'add'
// })
// }
// })
} }
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
...@@ -706,25 +546,15 @@ const submitForm = saveType => { ...@@ -706,25 +546,15 @@ const submitForm = saveType => {
} }
}) })
} }
// 获取新单跟进详情数据
// 获取流程详情 const getPolicyDetail = () => {
function getFanformInfo(fnaFormBizId, formData) { getPolicyfollow(props.policyBizId).then(res => {
getfanFormDetail(fnaFormBizId).then(async res => {
if (res.code == 200) { if (res.code == 200) {
// 回显值 form.value.policyFollowUpdateDto = res.data.policyFollowUpdateDto
setFormValue(res.data, formData)
} }
}) })
} }
watch(fanFormRef, newVal => {
if (newVal) {
for (const key in rules.value) {
for (const key2 in rules.value[key]) {
fanFormRef.value.clearValidate(key2)
}
}
}
})
watch( watch(
() => props.activeName, () => props.activeName,
newVal => { newVal => {
...@@ -738,7 +568,6 @@ watch( ...@@ -738,7 +568,6 @@ watch(
} }
) )
processFormData() processFormData()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.domEmpty { .domEmpty {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-col :span="24"> <el-col :span="24">
<div class="topBtn"> <div class="topBtn">
<el-button <el-button
v-if="props.fnaFormBizId" v-if="props.policyBizId"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus" @click="handleEditStatus"
...@@ -109,107 +109,6 @@ ...@@ -109,107 +109,6 @@
</el-col> </el-col>
</template> </template>
</el-row> </el-row>
<el-row v-if="father.showTable">
<el-table :data="father.data" border>
<!-- && form[father.key].length > 0 -->
<template v-if="father.key == 'brokerList'">
<el-table-column label="转介人比例" prop="brokerRatio" align="center">
<template #default="scope">
<el-input
v-model="scope.row.brokerRatio"
size="default"
type="number"
placeholder="请输入"
:disabled="editStatus"
/>
</template>
</el-table-column>
<el-table-column label="转介人名称" prop="brokerName" align="center">
<template #default="scope">
<el-select
v-model="scope.row.brokerName"
filterable
remote
reserve-keyword
placeholder="请输入关键词搜索"
:remote-method="query => searchSelectList(query, 'brokerName', scope.row)"
:loading="searchLoadingStates['brokerName']"
:disabled="editStatus"
>
<el-option
v-for="item in searchOptions['brokerName'] || []"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="所属团队" prop="team" align="center">
<template #default="scope">
<el-input
v-model="scope.row.team"
size="default"
type="text"
placeholder="请输入"
:disabled="editStatus"
/>
<!-- 和csf的销售小程序团队挂钩,因为没有接口现在先放在这等有了在换 -->
<!-- <el-select
v-model="scope.row.team"
filterable
remote
reserve-keyword
placeholder="请输入关键词搜索"
:remote-method="query => searchSelectList(query, 'team')"
:loading="searchLoadingStates['team']"
:disabled="editStatus"
>
<el-option
v-for="item in searchOptions['team'] || []"
:key="item.userBizId"
:label="item.realName"
:value="item.userBizId"
/>
</el-select> -->
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" align="center">
<template #default="scope">
<el-input
v-model="scope.row.remark"
size="default"
type="textarea"
placeholder="请输入"
:disabled="editStatus"
/>
</template>
</el-table-column>
<el-table-column width="60px" align="center" label="操作">
<template #default="scope">
<el-icon @click="deleteChildren(father, scope.$index)" class="deleteIcon"
><Delete
/></el-icon>
</template>
</el-table-column>
</template>
</el-table>
<el-col
:span="24"
v-if="father.addFamilyChildren"
style="display: flex; justify-content: center"
>
<el-button
:disabled="editStatus"
style="margin-top: 10px"
type="primary"
icon="Plus"
@click="addChildren(father)"
>添加转介人</el-button
>
</el-col>
</el-row>
</div> </div>
</el-row> </el-row>
...@@ -244,7 +143,7 @@ import { ...@@ -244,7 +143,7 @@ import {
getAllCompanys, getAllCompanys,
getClientUser getClientUser
} from '@/api/common' } from '@/api/common'
import { updatePolicyfollow } from '@/api/sign/underwritingMain' import { updatePolicyfollow, getPolicyfollow } from '@/api/sign/underwritingMain'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
const userStore = useUserStore() const userStore = useUserStore()
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -254,7 +153,8 @@ const props = defineProps({ ...@@ -254,7 +153,8 @@ const props = defineProps({
fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改 fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改
policyBizId: { type: String, default: '' }, //提交状态,新增、修改 policyBizId: { type: String, default: '' }, //提交状态,新增、修改
customerBizId: { type: String, default: '' }, //提交状态,新增、修改 customerBizId: { type: String, default: '' }, //提交状态,新增、修改
dictTypeLists: { type: Array, default: () => [] } //多个字典值数据 dictTypeLists: { type: Array, default: () => [] }, //多个字典值数据
policyMailing: { type: Object, default: () => {} } //多个字典值数据
}) })
const emit = defineEmits(['handleSuccess']) const emit = defineEmits(['handleSuccess'])
...@@ -452,7 +352,7 @@ const processFormData = () => { ...@@ -452,7 +352,7 @@ const processFormData = () => {
{ required: true, message: `${field.label}不能为空`, trigger: 'blur' } { required: true, message: `${field.label}不能为空`, trigger: 'blur' }
] ]
} }
if (props.fnaFormBizId) { if (props.policyBizId) {
field.disabled = true field.disabled = true
} else { } else {
field.disabled = false field.disabled = false
...@@ -462,63 +362,22 @@ const processFormData = () => { ...@@ -462,63 +362,22 @@ const processFormData = () => {
} }
} }
} }
if (Object.keys(tempFanFormValue.value).length > 0) {
form.value = JSON.parse(JSON.stringify(tempFanFormValue.value))
}
if (tempFanFormData.value.length > 0) {
processedFanFormData.value = oldFanFormData.value = JSON.parse(
JSON.stringify(tempFanFormData.value)
)
} else {
processedFanFormData.value = oldFanFormData.value = processedData
}
if (props.policyBizId) { if (props.policyBizId) {
form.value.policyMailing = JSON.parse(JSON.stringify(props.policyMailing))
form.value.policyBizId = props.policyBizId
editStatus.value = true editStatus.value = true
} else { } else {
// tab切走在切回来时,表单会重置,所以这里需要把表单的值赋回去 // tab切走在切回来时,表单会重置,所以这里需要把表单的值赋回去
editStatus.value = false editStatus.value = false
loading.value = false
}
console.log('form', form.value)
}
// 添加表单子级dom
const addChildren = father => {
// if (editStatus.value) {
// proxy.$modal.confirm(`请先点击编辑再添加儿女`, { showCancel: '0', title: '填写提示' })
// return
// }
const processedData = JSON.parse(JSON.stringify(processedFanFormData.value))
let obj = {
id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识
brokerName: '',
team: '',
brokerRatio: '',
remark: ''
}
for (const section of processedData) {
if (father.key == 'brokerList' && section.key == father.key) {
section.data.push(obj)
} }
if (Object.keys(tempFanFormValue.value).length > 0) {
form.value = JSON.parse(JSON.stringify(tempFanFormValue.value))
console.log('form.value', form.value)
} }
//更新form表单对应的数据,以便收集填写的值
form.value[father.key].push(obj)
processedFanFormData.value = processedData processedFanFormData.value = processedData
loading.value = false
} }
const deleteChildren = (father, childIndex) => {
// if (editStatus.value) {
// proxy.$modal.confirm(`请先点击编辑再删除儿女`, { showCancel: '0', title: '填写提示' })
// }
const processedData = JSON.parse(JSON.stringify(processedFanFormData.value))
for (const section of processedData) {
if (father.key == 'brokerList' && section.key == father.key) {
section.data.splice(childIndex, 1)
}
}
//更新form表单对应的数据,以便收集填写的值
form.value[father.key].splice(childIndex, 1)
processedFanFormData.value = processedData
}
// 根据联动重置表单项的显示与否 // 根据联动重置表单项的显示与否
const resetShow = (childKey, status) => { const resetShow = (childKey, status) => {
console.log(childKey, status) console.log(childKey, status)
...@@ -581,10 +440,6 @@ const handleEditStatus = () => { ...@@ -581,10 +440,6 @@ const handleEditStatus = () => {
} }
processedFanFormData.value = processedData processedFanFormData.value = processedData
} }
//给表单赋值 方便表单回显 obj 为表单数据
const setFormValue = (obj, formData) => {
loading.value = true
}
// 获取校验失败的字段信息 // 获取校验失败的字段信息
const getInvalidFields = fields => { const getInvalidFields = fields => {
...@@ -621,38 +476,7 @@ const handleFormValues = () => { ...@@ -621,38 +476,7 @@ const handleFormValues = () => {
if (pattern.test(key2) && form.value[key1][key2]) { if (pattern.test(key2) && form.value[key1][key2]) {
submitObj[key1][key2] = proxy.formatToDate(form.value[key1][key2]) submitObj[key1][key2] = proxy.formatToDate(form.value[key1][key2])
} }
// 处理搜索下拉框数据需要返回的各种业务ID
if ((key2 == 'insurer' || key2 === 'reconciliationCompany') && form.value[key1][key2]) {
dictStore.insureCompanyList.forEach(item => {
if (item.deptBizId == form.value[key1][key2]) {
submitObj[key1][key2] = item.deptName
submitObj[key1][`${key2}BizId`] = item.deptBizId
}
})
} else if (key2 == 'productName' && form.value[key1][key2]) {
dictStore.insureProductList.forEach(item => {
if (item.productBizId == form.value[key1][key2]) {
submitObj[key1][key2] = item.productName
submitObj[key1]['productBizId'] = item.productBizId
}
})
}
}
}
// 数组数据格式
if (isArray(form.value[key1]) && form.value[key1].length > 0) {
submitObj[key1] = form.value[key1].map(item1 => {
if (item1.brokerName) {
dictStore.clientUserList.forEach(item => {
if (item.clientUserBizId == item1.brokerName) {
item1.brokerName = item.name
item1['brokerBizId'] = item.clientUserBizId
} }
})
}
delete item1.id
return item1
})
} }
} }
...@@ -666,34 +490,16 @@ const submitForm = saveType => { ...@@ -666,34 +490,16 @@ const submitForm = saveType => {
proxy.$refs['fanFormRef'].validate((valid, fields) => { proxy.$refs['fanFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
console.log('====================================')
console.log(' props.policyBizId', submitObj)
console.log('====================================')
// return
if (props.policyBizId) { if (props.policyBizId) {
// submitObj.PolicyFollowUpdateDto.policyBizId = props.policyBizId
updatePolicyfollow(submitObj).then(res => { updatePolicyfollow(submitObj).then(res => {
if (res.code == 200) { if (res.code == 200) {
handleEditStatus() handleEditStatus()
proxy.$message.success('提交成功') proxy.$message.success('提交成功')
// emit('handleSuccess', { // 提交成功后,在获取详情信息,防止数据丢失
// tab: 'fnaform', getPolicyDetail()
// fnaFormBizId: props.fnaFormBizId,
// type: 'edit'
// })
} }
}) })
} else { } else {
// addfanForm(result).then(res => {
// if (res.code == 200) {
// proxy.$message.success('fnaForm新增成功')
// emit('handleSuccess', {
// tab: 'fnaform',
// fnaFormBizId: res.data.fnaFormBizId,
// type: 'add'
// })
// }
// })
} }
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
...@@ -705,13 +511,11 @@ const submitForm = saveType => { ...@@ -705,13 +511,11 @@ const submitForm = saveType => {
} }
}) })
} }
// 获取新单跟进详情数据
// 获取流程详情 const getPolicyDetail = () => {
function getFanformInfo(fnaFormBizId, formData) { getPolicyfollow(props.policyBizId).then(res => {
getfanFormDetail(fnaFormBizId).then(async res => {
if (res.code == 200) { if (res.code == 200) {
// 回显值 processedFanFormData.value.brokerList = res.data.brokerList
setFormValue(res.data, formData)
} }
}) })
} }
...@@ -728,7 +532,7 @@ watch( ...@@ -728,7 +532,7 @@ watch(
() => props.activeName, () => props.activeName,
newVal => { newVal => {
tempFanFormValue.value = JSON.parse(JSON.stringify(form.value)) tempFanFormValue.value = JSON.parse(JSON.stringify(form.value))
tempFanFormData.value = JSON.parse(JSON.stringify(processedFanFormData.value)) // tempFanFormData.value = JSON.parse(JSON.stringify(processedFanFormData.value))
if (newVal === 'policyMailing') { if (newVal === 'policyMailing') {
setTimeout(() => { setTimeout(() => {
processFormData() processFormData()
...@@ -736,7 +540,6 @@ watch( ...@@ -736,7 +540,6 @@ watch(
} }
} }
) )
processFormData()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.domEmpty { .domEmpty {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-col :span="24"> <el-col :span="24">
<div class="topBtn"> <div class="topBtn">
<el-button <el-button
v-if="props.fnaFormBizId" v-if="props.policyBizId"
type="primary" type="primary"
icon="EditPen" icon="EditPen"
@click="handleEditStatus" @click="handleEditStatus"
...@@ -244,7 +244,7 @@ import { ...@@ -244,7 +244,7 @@ import {
getAllCompanys, getAllCompanys,
getClientUser getClientUser
} from '@/api/common' } from '@/api/common'
import { updatePolicyfollow } from '@/api/sign/underwritingMain' import { updatePolicyfollow, getPolicyfollow } from '@/api/sign/underwritingMain'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
const userStore = useUserStore() const userStore = useUserStore()
const dictStore = useDictStore() //获取字典数据 const dictStore = useDictStore() //获取字典数据
...@@ -254,7 +254,8 @@ const props = defineProps({ ...@@ -254,7 +254,8 @@ const props = defineProps({
fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改 fearthStatus: { type: String, default: '' }, //父组件状态,新增、修改
policyBizId: { type: String, default: '' }, //提交状态,新增、修改 policyBizId: { type: String, default: '' }, //提交状态,新增、修改
customerBizId: { type: String, default: '' }, //提交状态,新增、修改 customerBizId: { type: String, default: '' }, //提交状态,新增、修改
dictTypeLists: { type: Array, default: () => [] } //多个字典值数据 dictTypeLists: { type: Array, default: () => [] }, //多个字典值数据
verifyPolicyInfo: { type: Object, default: () => {} } //多个字典值数据
}) })
const emit = defineEmits(['handleSuccess']) const emit = defineEmits(['handleSuccess'])
...@@ -431,13 +432,6 @@ const processFormData = () => { ...@@ -431,13 +432,6 @@ const processFormData = () => {
for (const formKey in form.value) { for (const formKey in form.value) {
if (section.key == formKey) { if (section.key == formKey) {
for (const field of section.data) { for (const field of section.data) {
// 为下拉搜索框加options
if (field.domType == 'SearchSelect') {
if (field.key == 'accountName') {
searchOptions.value[field.key] = dictStore.tenantUserList
}
}
if (field.dictType) { if (field.dictType) {
// 获取字典数据 // 获取字典数据
field.options = fetchDictData(field.dictType) field.options = fetchDictData(field.dictType)
...@@ -452,7 +446,7 @@ const processFormData = () => { ...@@ -452,7 +446,7 @@ const processFormData = () => {
{ required: true, message: `${field.label}不能为空`, trigger: 'blur' } { required: true, message: `${field.label}不能为空`, trigger: 'blur' }
] ]
} }
if (props.fnaFormBizId) { if (props.policyBizId) {
field.disabled = true field.disabled = true
} else { } else {
field.disabled = false field.disabled = false
...@@ -462,23 +456,20 @@ const processFormData = () => { ...@@ -462,23 +456,20 @@ const processFormData = () => {
} }
} }
} }
if (Object.keys(tempFanFormValue.value).length > 0) {
form.value = JSON.parse(JSON.stringify(tempFanFormValue.value))
}
if (tempFanFormData.value.length > 0) {
processedFanFormData.value = oldFanFormData.value = JSON.parse(
JSON.stringify(tempFanFormData.value)
)
} else {
processedFanFormData.value = oldFanFormData.value = processedData
}
if (props.policyBizId) { if (props.policyBizId) {
form.value.verifyPolicyInfo = JSON.parse(JSON.stringify(props.verifyPolicyInfo))
form.value.policyBizId = props.policyBizId
editStatus.value = true editStatus.value = true
} else { } else {
// tab切走在切回来时,表单会重置,所以这里需要把表单的值赋回去 // tab切走在切回来时,表单会重置,所以这里需要把表单的值赋回去
editStatus.value = false editStatus.value = false
loading.value = false
} }
if (Object.keys(tempFanFormValue.value).length > 0) {
form.value = JSON.parse(JSON.stringify(tempFanFormValue.value))
}
processedFanFormData.value = processedData
loading.value = false
console.log('form', form.value) console.log('form', form.value)
} }
// 添加表单子级dom // 添加表单子级dom
...@@ -621,38 +612,7 @@ const handleFormValues = () => { ...@@ -621,38 +612,7 @@ const handleFormValues = () => {
if (pattern.test(key2) && form.value[key1][key2]) { if (pattern.test(key2) && form.value[key1][key2]) {
submitObj[key1][key2] = proxy.formatToDate(form.value[key1][key2]) submitObj[key1][key2] = proxy.formatToDate(form.value[key1][key2])
} }
// 处理搜索下拉框数据需要返回的各种业务ID
if ((key2 == 'insurer' || key2 === 'reconciliationCompany') && form.value[key1][key2]) {
dictStore.insureCompanyList.forEach(item => {
if (item.deptBizId == form.value[key1][key2]) {
submitObj[key1][key2] = item.deptName
submitObj[key1][`${key2}BizId`] = item.deptBizId
}
})
} else if (key2 == 'productName' && form.value[key1][key2]) {
dictStore.insureProductList.forEach(item => {
if (item.productBizId == form.value[key1][key2]) {
submitObj[key1][key2] = item.productName
submitObj[key1]['productBizId'] = item.productBizId
}
})
}
}
}
// 数组数据格式
if (isArray(form.value[key1]) && form.value[key1].length > 0) {
submitObj[key1] = form.value[key1].map(item1 => {
if (item1.brokerName) {
dictStore.clientUserList.forEach(item => {
if (item.clientUserBizId == item1.brokerName) {
item1.brokerName = item.name
item1['brokerBizId'] = item.clientUserBizId
}
})
} }
delete item1.id
return item1
})
} }
} }
...@@ -662,38 +622,17 @@ const handleFormValues = () => { ...@@ -662,38 +622,17 @@ const handleFormValues = () => {
const submitForm = saveType => { const submitForm = saveType => {
let submitObj = handleFormValues() let submitObj = handleFormValues()
// return
proxy.$refs['fanFormRef'].validate((valid, fields) => { proxy.$refs['fanFormRef'].validate((valid, fields) => {
if (valid) { if (valid) {
console.log('====================================')
console.log(' props.policyBizId', submitObj)
console.log('====================================')
// return
if (props.policyBizId) { if (props.policyBizId) {
// submitObj.PolicyFollowUpdateDto.policyBizId = props.policyBizId
updatePolicyfollow(submitObj).then(res => { updatePolicyfollow(submitObj).then(res => {
if (res.code == 200) { if (res.code == 200) {
handleEditStatus() handleEditStatus()
proxy.$message.success('提交成功') proxy.$message.success('提交成功')
// emit('handleSuccess', { // 提交成功后,在获取详情信息,防止数据丢失
// tab: 'fnaform', getPolicyDetail()
// fnaFormBizId: props.fnaFormBizId,
// type: 'edit'
// })
} }
}) })
} else {
// addfanForm(result).then(res => {
// if (res.code == 200) {
// proxy.$message.success('fnaForm新增成功')
// emit('handleSuccess', {
// tab: 'fnaform',
// fnaFormBizId: res.data.fnaFormBizId,
// type: 'add'
// })
// }
// })
} }
errorFields.value = [] // 清空错误信息 errorFields.value = [] // 清空错误信息
} else { } else {
...@@ -705,25 +644,15 @@ const submitForm = saveType => { ...@@ -705,25 +644,15 @@ const submitForm = saveType => {
} }
}) })
} }
// 获取新单跟进详情数据
// 获取流程详情 const getPolicyDetail = () => {
function getFanformInfo(fnaFormBizId, formData) { getPolicyfollow(props.policyBizId).then(res => {
getfanFormDetail(fnaFormBizId).then(async res => {
if (res.code == 200) { if (res.code == 200) {
// 回显值 processedFanFormData.value.brokerList = res.data.brokerList
setFormValue(res.data, formData)
} }
}) })
} }
watch(fanFormRef, newVal => {
if (newVal) {
for (const key in rules.value) {
for (const key2 in rules.value[key]) {
fanFormRef.value.clearValidate(key2)
}
}
}
})
watch( watch(
() => props.activeName, () => props.activeName,
newVal => { newVal => {
...@@ -736,8 +665,6 @@ watch( ...@@ -736,8 +665,6 @@ watch(
} }
} }
) )
processFormData()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.domEmpty { .domEmpty {
......
...@@ -35,13 +35,18 @@ ...@@ -35,13 +35,18 @@
</el-tabs> </el-tabs>
</div> </div>
</el-card> --> </el-card> -->
<AppointmentEdit source='policyList' :policyDetailInfo="route.query"/> <AppointmentEdit
source="policyList"
:policyId="route.query"
v-if="showTab"
:policyDetailInfo="policyInfo"
/>
</div> </div>
</template> </template>
<script setup name="FollowUpDetail"> <script setup name="FollowUpDetail">
import AppointmentEdit from '@/views/sign/appointment/appointmentEdit' import AppointmentEdit from '@/views/sign/appointment/appointmentEdit'
import { onUnmounted } from 'vue' import { onUnmounted } from 'vue'
import { getPolicyfollow, getPolicyStatus } from '@/api/sign/underwritingMain' import { getPolicyfollow, getPolicyInfo } from '@/api/sign/underwritingMain'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
import { addFna, getProcessDetail, updateProcess, getCustomerDetail } from '@/api/sign/fna' import { addFna, getProcessDetail, updateProcess, getCustomerDetail } from '@/api/sign/fna'
...@@ -63,6 +68,7 @@ const { proxy } = getCurrentInstance() ...@@ -63,6 +68,7 @@ const { proxy } = getCurrentInstance()
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const activeName = ref('status') const activeName = ref('status')
const showTab = ref(false)
const processInfo = ref({ const processInfo = ref({
fnaNo: '--', fnaNo: '--',
status: '未保存', status: '未保存',
...@@ -204,22 +210,29 @@ const getDictsData = async () => { ...@@ -204,22 +210,29 @@ const getDictsData = async () => {
'wj_question_first_category', 'wj_question_first_category',
'wj_question_second_category', 'wj_question_second_category',
'csf_ap_policy_transfer', 'csf_ap_policy_transfer',
'md_bank' 'md_bank',
'bx_product_type',
'csf_policy_follow_mailing_method'
]) ])
} }
// 获取新单跟进详情数据 // 获取新单跟进详情数据
const getPolicyDetail = () => { const getPolicyDetail = () => {
getPolicyfollow(route.query.policyBizId).then(res => { // 使用 Promise.all 并行发送请求
if (res.code == 200) { Promise.all([getPolicyfollow(route.query.policyBizId), getPolicyInfo(route.query.policyBizId)])
console.log('新单跟进详情', res) .then(([followRes, infoRes]) => {
policyInfo.value = res.data // 只有当两个请求都成功时才执行后续操作
if (followRes.code === 200 && infoRes.code === 200) {
// 合并两个响应数据,infoRes.data 会覆盖 followRes.data 中的同名属性
policyInfo.value = {
...followRes.data,
...infoRes.data
}
showTab.value = true
} }
}) })
getPolicyStatus(route.query.policyBizId).then(res => { .catch(error => {
if (res.code == 200) { // 统一错误处理(可选)
console.log('新单跟进状态', res) console.error('请求失败:', error)
policyStatusList.value = res.data
}
}) })
} }
...@@ -289,28 +302,7 @@ const beforeTabLeave = (activeTabName, oldTabName) => { ...@@ -289,28 +302,7 @@ const beforeTabLeave = (activeTabName, oldTabName) => {
return true return true
} }
// 处理步骤点击
const handleStep = item => {
// 总览页可以直接切换
if (item.id === -1 || item.name === 'customer') {
activeName.value = item.name
return
}
// 检查前一项状态
const prevTabIndex = tabsList.value.findIndex(tab => tab.id === item.id) - 1
if (prevTabIndex >= 0) {
const prevTab = tabsList.value[prevTabIndex]
// 如果前一项存在且未完成,阻止切换
if (prevTab.status === '0') {
proxy.$modal.confirm(`请先填写${prevTab.label}`, { showCancel: false })
return
}
}
// 允许切换
activeName.value = item.name
}
const handleBack = () => { const handleBack = () => {
router.go(-1) router.go(-1)
} }
......
...@@ -138,7 +138,11 @@ ...@@ -138,7 +138,11 @@
</el-table-column> </el-table-column>
<el-table-column prop="policyNo" label="保单号" width="150" align="center" sortable /> <el-table-column prop="policyNo" label="保单号" width="150" align="center" sortable />
<el-table-column prop="customerName" label="客户名称" width="100" align="center" sortable /> <el-table-column prop="customerName" label="客户名称" width="100" align="center" sortable />
<el-table-column prop="signDate" label="签单日期" width="150" align="center" sortable /> <el-table-column prop="signDate" label="签单日期" width="150" align="center" sortable>
<template #default="scope">
<span>{{ parseTime(scope.row.signDate) }}</span>
</template>
</el-table-column>
<el-table-column prop="signer" label="签单人" width="100" align="center" sortable /> <el-table-column prop="signer" label="签单人" width="100" align="center" sortable />
<el-table-column prop="paymentTerm" label="供款年期" width="100" align="center" sortable /> <el-table-column prop="paymentTerm" label="供款年期" width="100" align="center" sortable />
<el-table-column prop="productName" label="产品名称" width="150" align="center" sortable /> <el-table-column prop="productName" label="产品名称" width="150" align="center" sortable />
...@@ -592,13 +596,18 @@ const formatFileSize = bytes => { ...@@ -592,13 +596,18 @@ const formatFileSize = bytes => {
} }
// 新单跟进详情 // 新单跟进详情
const handleStatus = row => { const handleStatus = row => {
router.push({ router.push({
path: '/sign/underwritingMain/followUpDetail', path: '/sign/underwritingMain/followUpDetail',
query: { policyBizId: row.policyBizId, type: 'edit', source: 'policyList', embed:true,appointmentNo:row.appointmentNo ,appointmentBizId:row.appointmentBizId } query: {
policyBizId: row.policyBizId,
type: 'edit',
source: 'policyList',
embed: true,
appointmentNo: row.appointmentNo,
appointmentBizId: row.appointmentBizId
}
}) })
} }
</script> </script>
<style scoped> <style scoped>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment