Commit 11c7857a by yuzhenWang

预约前端已经写完发布测试

parent 2e0664dc
......@@ -54,6 +54,14 @@ export function getAppointmentDetail(appointmentBizId) {
method: 'get'
})
}
// 获取行程单详情
export function getItineraryDetail(appointmentBizId) {
return request({
url: `/csf/api/appointmentFile/pdf/itinerary/detail?appointmentBizId=${appointmentBizId}`,
method: 'get'
})
}
// 获取预约健康信息数据
export function getQuestionnaires(appointmentBizId) {
return request({
......@@ -61,6 +69,14 @@ export function getQuestionnaires(appointmentBizId) {
method: 'get'
})
}
// 预约-提交健康信息模块
export function saveQuestionnaires(data) {
return request({
url: '/question/api/questionnaires/answer/save',
method: 'post',
data: data
})
}
// 预约-提交预约信息模块
export function editAppointmentInfo(data) {
return request({
......@@ -171,6 +187,19 @@ export function getAppointmentFile(data) {
data: data
})
}
// 上传Execl
export function uploadExcel(data) {
return request({
url: '/csf/api/appointmentFile/excel/import/appointment',
method: 'post',
data: data,
// 重要:不要手动设置 Content-Type,让浏览器自动设置
headers: {
// 如果您的请求拦截器中有默认的 Content-Type,可能需要覆盖
'Content-Type': 'multipart/form-data'
}
})
}
// 删除单个附件
export function delFile(appointmentFileBizId) {
return request({
......
......@@ -13,7 +13,11 @@ const customer = [
maxLength: 5,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '名字',
......@@ -24,7 +28,11 @@ const customer = [
maxLength: 10,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '姓名',
......@@ -35,7 +43,11 @@ const customer = [
maxLength: 15,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '姓氏拼音',
......@@ -46,7 +58,11 @@ const customer = [
maxLength: 30,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '姓名拼音',
......@@ -57,7 +73,11 @@ const customer = [
maxLength: 30,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '名字-英文',
......@@ -68,7 +88,11 @@ const customer = [
maxLength: 30,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '称谓',
......@@ -78,7 +102,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'csf_customer_title',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '性别',
......@@ -88,7 +116,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'sys_gender',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '生日',
......@@ -97,7 +129,11 @@ const customer = [
required: false,
disabled: false,
placeholder: '请选择',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '年龄',
......@@ -108,7 +144,11 @@ const customer = [
required: true,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '移动电话',
......@@ -121,7 +161,11 @@ const customer = [
drawerType: 'phone',
phone: {},
code: 'areaCode',
value: ''
value: '',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '邮箱',
......@@ -132,7 +176,11 @@ const customer = [
required: true,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '是否吸烟',
......@@ -142,7 +190,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'sys_no_yes',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '吸烟数量(支/天)',
......@@ -153,7 +205,11 @@ const customer = [
required: false,
disabled: false,
placeholder: '请输入',
show: false
show: false,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
// {
// label: '公司类型',
......@@ -173,7 +229,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'csf_customer_type',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
// {
// label: '客户来源',
......@@ -194,7 +254,11 @@ const customer = [
required: true,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
},
......@@ -212,7 +276,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'csf_marriage',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '国籍(国家/地区)',
......@@ -222,7 +290,11 @@ const customer = [
disabled: false,
placeholder: '请填写',
show: true,
drawerType: 'country'
drawerType: 'country',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '出生地',
......@@ -233,7 +305,11 @@ const customer = [
maxLength: 300,
disabled: false,
placeholder: '请输入出生地(省市)',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '教育程度',
......@@ -243,7 +319,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'csf_education',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '住宅电话',
......@@ -256,7 +336,11 @@ const customer = [
drawerType: 'phone',
residenceTelephone: {},
code: 'residenceAreaCode',
maxLength: 20
maxLength: 20,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '固定电话',
......@@ -267,7 +351,11 @@ const customer = [
disabled: false,
placeholder: '请填写',
show: true,
maxLength: 20
maxLength: 20,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '是否长期出国',
......@@ -277,7 +365,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'sys_no_yes',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '通讯地址',
......@@ -288,7 +380,11 @@ const customer = [
placeholder: '请填写',
show: true,
drawerType: 'address',
residenceAddress: {}
residenceAddress: {},
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '住宅地址',
......@@ -299,7 +395,11 @@ const customer = [
placeholder: '请填写',
show: true,
drawerType: 'address',
residentialAddress: {}
residentialAddress: {},
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '邮寄地址',
......@@ -310,7 +410,11 @@ const customer = [
placeholder: '请填写',
show: true,
drawerType: 'address',
mailingAddress: {}
mailingAddress: {},
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
},
......@@ -328,7 +432,11 @@ const customer = [
disabled: false,
placeholder: '请选择',
dictType: 'csf_id_type',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '证件号码',
......@@ -339,7 +447,11 @@ const customer = [
maxLength: 20,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
},
......@@ -357,7 +469,11 @@ const customer = [
maxLength: 300,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '公司电话',
......@@ -370,7 +486,11 @@ const customer = [
drawerType: 'phone',
companyTelephone: {},
code: 'companyAreaCode',
maxLength: 20
maxLength: 20,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '职位',
......@@ -381,7 +501,11 @@ const customer = [
maxLength: 300,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '总工作年期',
......@@ -392,7 +516,11 @@ const customer = [
maxLength: 300,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '现时每月收入',
......@@ -403,7 +531,11 @@ const customer = [
maxLength: 300,
disabled: false,
placeholder: '请输入',
show: true
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '公司地址',
......@@ -414,7 +546,11 @@ const customer = [
placeholder: '请填写',
show: true,
drawerType: 'address',
companyAddress: {}
companyAddress: {},
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
}
......
......@@ -35,9 +35,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
labelPosition: 'right', //标签的位置
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
......@@ -51,11 +51,10 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelWidth: '130px', //标签宽度
sm: 12, //栅格布局份数
lg: 8, //栅格布局份数,
labelPosition: 'right', //标签的位置
labelWidth: '140px'
labelPosition: 'top', //标签的位置
labelWidth: '140px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
label: '理财顾问内部编码',
......@@ -67,9 +66,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '130px', //标签宽度
labelPosition: 'right', //标签的位置
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -82,9 +81,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
labelPosition: 'right', //标签的位置
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -97,9 +96,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
labelPosition: 'right', //标签的位置
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -112,9 +111,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'csf_employment',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
labelPosition: 'right', //标签的位置
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -127,9 +126,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'sys_no_yes',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
labelPosition: 'right', //标签的位置
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -142,9 +141,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
labelPosition: 'right', //标签的位置
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
......@@ -158,9 +157,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: false,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
labelPosition: 'right', //标签的位置
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -190,8 +189,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -204,8 +204,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'sys_no_yes',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -226,8 +227,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -240,8 +242,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'sys_no_yes',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -262,8 +265,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -276,8 +280,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'sys_no_yes',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -308,8 +313,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -322,8 +328,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -336,8 +343,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -351,8 +359,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'bx_currency_type',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -364,8 +373,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -395,8 +405,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -409,8 +420,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -423,8 +435,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -438,8 +451,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'bx_currency_type',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -451,8 +465,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -483,8 +498,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '180px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -498,8 +514,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'bx_currency_type',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -512,8 +529,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '220px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -542,8 +560,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -557,8 +576,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'bx_currency_type',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -571,8 +591,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -597,8 +618,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '220px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -611,8 +633,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelWidth: '200px', //标签宽度
sm: 12, //栅格布局份数
labelPosition: 'top', //标签的位置
labelWidth: '220px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -626,8 +649,9 @@ const fnaForm = [
placeholder: '请输入',
show: true,
dictType: 'bx_currency_type',
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -640,8 +664,9 @@ const fnaForm = [
disabled: false,
placeholder: '请输入',
show: true,
labelWidth: '170px', //标签宽度
sm: 12, //栅格布局份数
labelPosition: 'top', //标签的位置
labelWidth: '220px', //标签宽度
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -683,7 +708,8 @@ const fnaForm = [
inputWidth: '300px', //输入框宽度
labelWidth: '260px', //标签宽度
sm: 24, //栅格布局份数
lg: 12 //栅格布局份数
lg: 12, //栅格布局份数
labelPosition: 'top' //标签的位置
}
]
},
......@@ -707,7 +733,7 @@ const fnaForm = [
labelWidth: '220px', //标签宽度
sm: 24, //栅格布局份数
lg: 12, //栅格布局份数
labelPosition: 'right' //标签的位置
labelPosition: 'top' //标签的位置
},
{
label: '流动资产种类',
......@@ -719,24 +745,24 @@ const fnaForm = [
placeholder: '请输入金额(HKD)',
show: true,
labelWidth: '100px', //标签宽度
sm: 20, //栅格布局份数
lg: 20, //栅格布局份数
labelPosition: 'right', //标签的位置
sm: 18, //栅格布局份数
lg: 16, //栅格布局份数
labelPosition: 'top', //标签的位置
dictType: 'csf_liquid_asset_type'
},
{
label: '',
key: 'otherLiquidAsset',
domType: 'Input',
inputType: 'Input',
required: false,
maxLength: 300,
disabled: false,
placeholder: '请输入说明',
show: true,
labelWidth: '0px', //标签宽度
sm: 4, //栅格布局份数
lg: 4, //栅格布局份数
labelPosition: 'right' //标签的位置
sm: 6, //栅格布局份数
lg: 8, //栅格布局份数
labelPosition: 'top' //标签的位置
}
]
},
......@@ -760,6 +786,7 @@ const fnaForm = [
labelWidth: '180px', //标签宽度
sm: 24, //栅格布局份数
lg: 24, //栅格布局份数
labelPosition: 'top', //标签的位置
dictType: 'csf_premium_funding_source'
}
]
......
......@@ -186,7 +186,7 @@ const productPlan = [
required: false,
disabled: false,
placeholder: '请选择',
show: true,
show: false,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -53,3 +53,9 @@ export const calculateExactAge = birthDate => {
return 0
}
}
export default {
formatIsoToDateTime,
formatToDateTime,
formatToDate,
getNowTime
}
......@@ -23,11 +23,17 @@
<div class="fatherLable">{{ father.fatherTitle }}</div>
<div class="fatherDes">{{ father.description }}</div>
<el-row>
<el-row :gutter="20">
<template v-for="child in father.data" :key="child.key">
<el-col :span="8" class="formItem" v-if="child.show">
<el-col :sm="child.sm" :lg="child.lg" class="formItem" v-if="child.show">
<div>
<el-form-item :label="child.label" :prop="child.key" :key="child.key">
<el-form-item
:label="child.label"
:prop="child.key"
:key="child.key"
:label-width="child.labelWidth"
:label-position="child.labelPosition"
>
<el-input
v-if="child.type === 'Input'"
:type="child.inputType"
......@@ -180,8 +186,7 @@ import Country from '@/views/components/country'
import Phone from '@/views/components/phone'
import Address from '@/views/components/address'
import { watch, } from 'vue'
import { watch } from 'vue'
import { addCustomer, getCustomerDetail, editCustomer, getCustomerList } from '@/api/sign/fna'
import useDictStore from '@/store/modules/dict'
const dictStore = useDictStore() //获取字典数据
......
......@@ -20,7 +20,7 @@
<div class="fatherLable">{{ father.fatherTitle }}</div>
<div class="subTitle" v-if="father.subTitle">{{ father.subTitle }}</div>
<el-row v-if="father.child == 'no'">
<el-row v-if="father.child == 'no'" :gutter="20">
<template v-for="child in father.data" :key="child.key">
<el-col :sm="child.sm" :lg="child.lg" class="formItem" v-if="child.show">
<div>
......@@ -40,6 +40,16 @@
:disabled="child.disabled"
:style="{ width: child.inputWidth ? child.inputWidth : '100%' }"
/>
<el-input
v-if="child.inputType === 'Input'"
:type="child.inputType"
v-model="form[father.key][child.key]"
:placeholder="child.placeholder"
maxlength="30"
:disabled="child.disabled"
:style="{ width: child.inputWidth ? child.inputWidth : '100%' }"
class="formInput"
/>
<el-select
v-if="child.domType === 'Select'"
v-model="form[father.key][child.key]"
......@@ -99,7 +109,7 @@
</template>
</el-row>
<!-- 有子孙的dom -->
<el-row v-if="father.child == 'yes'">
<el-row v-if="father.child == 'yes'" :gutter="20">
<template v-for="(child, childIndex) in father.data" :key="child.id">
<el-col :span="child.span">
<div class="childLabel" v-if="father.key == 'familyMembers'">
......@@ -130,6 +140,7 @@
:prop="grandchildren.key"
:key="grandchildren.key"
:label-width="grandchildren.labelWidth"
:label-position="grandchildren.labelPosition"
>
<el-input
v-if="grandchildren.domType === 'Input'"
......@@ -139,6 +150,7 @@
maxlength="30"
:disabled="grandchildren.disabled"
/>
<el-select
v-if="grandchildren.domType === 'Select'"
v-model="form[father.key][childIndex][grandchildren.key]"
......@@ -169,9 +181,7 @@
style="margin-left: 10px"
@click="deleteChildren(father, childIndex)"
>
<el-icon style="color: red; font-size: 18px; padding-top: 15px"
><Delete
/></el-icon>
<el-icon class="deleteIcon"><Delete /></el-icon>
</el-col>
</template>
<el-col
......@@ -179,7 +189,11 @@
v-if="father.addFamilyChildren"
style="display: flex; justify-content: flex-end"
>
<el-button type="primary" icon="Plus" @click="addChildren(father)"
<el-button
:disabled="editStatus"
type="primary"
icon="Plus"
@click="addChildren(father)"
>添加儿女</el-button
>
</el-col>
......@@ -382,6 +396,10 @@ const processFormData = async () => {
}
// 添加表单子级dom
const addChildren = father => {
if (editStatus.value) {
proxy.$modal.confirm(`请先点击编辑再添加儿女`, { showCancel: '0', title: '填写提示' })
return
}
const processedData = JSON.parse(JSON.stringify(processedFanFormData.value))
let obj = {
type: '4',
......@@ -402,8 +420,9 @@ const addChildren = father => {
disabled: false,
placeholder: '请输入',
show: true,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
},
{
......@@ -417,8 +436,9 @@ const addChildren = father => {
show: true,
dictType: 'sys_no_yes',
options: noYesList.value,
labelPosition: 'top', //标签的位置
labelWidth: '120px', //标签宽度
sm: 10, //栅格布局份数
sm: 8, //栅格布局份数
lg: 8 //栅格布局份数
}
]
......@@ -804,12 +824,12 @@ watch(
}
.subTitle {
font-size: 16px;
padding-left: 8px;
/* padding-left: 8px; */
margin-bottom: 10px;
}
.childLabel {
font-size: 14px;
padding-left: 15px;
/* padding-left: 15px; */
margin-bottom: 15px;
}
.fatherDes {
......@@ -832,6 +852,11 @@ watch(
color: #a8abb2;
}
}
.deleteIcon {
color: red;
font-size: 18px;
padding-top: 15px;
}
}
.tabButton {
box-shadow: 0 -1px 14px #00000014;
......@@ -894,14 +919,17 @@ watch(
margin-right: 10px;
}
/* 确保标签对齐方式正确 */
/* :deep(.el-form-item) {
display: flex;
align-items: center;
} */
@media only screen and (min-width: 768px) {
.formInput,
.deleteIcon {
margin-top: 30px !important;
}
}
/* :deep(.el-form-item__content) {
flex: 1;
margin-left: 0 !important;
} */
@media only screen and (min-width: 1200px) {
.formInput,
.deleteIcon {
margin-top: 30px !important;
}
}
</style>
......@@ -265,7 +265,8 @@ const getDictsData = async () => {
'csf_ap_movie',
'csf_ap_game',
'wj_question_first_category',
'wj_question_second_category'
'wj_question_second_category',
'csf_ap_policy_transfer'
])
}
......
......@@ -83,7 +83,7 @@
<el-table-column type="selection" width="55" />
<el-table-column type="index" width="50" />
<el-table-column label="流程编号" align="center" prop="fnaNo" width="200" />
<el-table-column label="预约编号" align="center" prop="appointmentNo" />
<el-table-column label="预约编号" align="center" prop="appointmentNo" width="200" />
<el-table-column label="新单编号" align="center" prop="policyId" />
<el-table-column label="保单号" align="center" prop="policyNo" width="150" />
......@@ -102,7 +102,7 @@
</span>
</template>
</el-table-column>
<el-table-column label="创建时间" sortable align="center" prop="createTime" width="150">
<el-table-column label="创建时间" sortable align="center" prop="createTime" width="200">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
......
......@@ -35,12 +35,26 @@
</div>
<div class="right">
<el-button type="success" :icon="Check" @click="handleSubmit('submit')">提交</el-button>
<el-button
v-if="idsObj.appointmentBizId"
type="primary"
icon="Plus"
@click="handleAddExecl"
>上传EXECL</el-button
>
</div>
</div>
<div class="tabsBox">
<el-row v-if="embed">
<el-col>
<div class="topButtonBox">
<el-button
v-if="idsObj.appointmentBizId"
type="primary"
icon="Plus"
@click="handleAddExecl"
>上传EXECL</el-button
>
<el-button type="success" :icon="Check" @click="handleSubmit('submit')"
>提交</el-button
>
......@@ -167,6 +181,36 @@
</el-tabs>
</div>
</el-card>
<!-- 展示行程单详情 -->
<el-dialog v-model="execlDialog" title="Excel导入" width="40%">
<div class="dialogBox">
<div>
<div class="tipTitle">您需要准备</div>
<div class="tipContent">
<div>
1、下载模板 Excel
<span class="downloadBtn" @click="downloadExcel"
><el-icon><Download /></el-icon>点击下载</span
>
</div>
<div class="">2、将数据复制到模板 Excel 中</div>
<div class="">3、填写后在这上传模板Excel</div>
</div>
</div>
<div class="exprotBtn">
<!-- :action="uploadImgUrl"
:headers="headers" :on-success="uploadSuccess" -->
<el-upload
:show-file-list="false"
:auto-upload="false"
:on-change="handleFileChange"
accept=".xlsx,.xls"
>
<el-button type="primary" @click="execlUpload">上传文件</el-button>
</el-upload>
</div>
</div>
</el-dialog>
</div>
</template>
<script setup name="AppointmentEdit">
......@@ -187,7 +231,8 @@ import {
addAppointment,
getAppointmentDetail,
storageAppointment,
editAppointmentDetail
editAppointmentDetail,
uploadExcel
} from '@/api/sign/appointment'
import { listTenantUser, getInsuranceProductList, getAdditionalProductList } from '@/api/common'
import { Check } from '@element-plus/icons-vue'
......@@ -222,13 +267,15 @@ const customerInfo = ref({})
const idsObj = ref({}) //各个模块的bizId
// const appointmentSummeryInfo = ref({ apiAppointmentInfoDto: { appointmentBizId: '' } }) //预约详情总信息
const appointmentSummeryInfo = ref({}) //预约详情总信息
const currentFile = ref(null)
const processInfo = ref({
fnaNo: '暂无',
status: '未完成',
createTime: proxy.parseTime(new Date()),
customerName: userStore.name
})
const execlDialog = ref(false)
const tabsList = ref([
{
label: '预约信息',
......@@ -315,11 +362,112 @@ const tabsList = ref([
// key: 'fnaBizId'
// },
])
// 获取字典数据
const fetchDictData = dictType => {
let options = []
try {
dictStore.dictTypeLists.forEach(item => {
if (item.dictType == dictType) {
options = item.dictItemList
}
})
return options
} catch (error) {
console.error('获取字典数据失败:', error)
return []
}
}
// 上传EXECL
const handleAddExecl = () => {
execlDialog.value = true
}
const downloadExcel = () => {
// 创建隐藏的下载链接
const link = document.createElement('a')
link.href =
'https://yd-ali-oss.oss-cn-shanghai-finance-1-pub.aliyuncs.com/xlsx/2025/10/13/1e7a3124c5c04c6b83a43c99fd5af241.xlsx'
// link.target = '_blank' // 新窗口打开
// 设置下载文件名(重要)
// 从URL中提取文件名,或者使用返回的文件名
const fileName = `预约模板.pdf`
link.download = fileName
// 触发下载
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
const handleFileChange = async file => {
// 文件验证
const isExcel = file.name.endsWith('.xlsx') || file.name.endsWith('.xls')
if (!isExcel) {
ElMessage.error('只能上传 Excel 文件!')
return false
}
if (file.name.includes(',')) {
ElMessage.error('文件名不正确,不能包含英文逗号!')
return false
}
const isLt = file.size / 1024 / 1024 < 10
if (!isLt) {
ElMessage.error(`上传文件大小不能超过10MB!`)
return false
}
// 直接上传
try {
// 创建 FormData 对象
const formData = new FormData()
// 获取原始文件对象(重要!)
const rawFile = file.raw
// 添加文件到 FormData(第二个参数是文件对象,第三个参数是文件名)
formData.append('file', rawFile, rawFile.name)
// 添加其他参数
formData.append('appointmentBizId', idsObj.value.appointmentBizId)
const res = await uploadExcel(formData)
if (res.code === 200) {
proxy.$message.success('上传文件成功')
execlDialog.value = false
}
} catch (error) {
proxy.$message.error('上传失败')
console.error('Upload error:', error)
}
return false // 阻止自动上传
}
const execlUpload = () => {
let data = {
appointmentBizId: idsObj.value.appointmentBizId,
file: currentFile.value
}
if (currentFile.value) {
uploadExcel(data).then(res => {
if (res.code == 200) {
proxy.$message.success('上传文件成功')
execlDialog.value = false
}
})
}
}
// 获取预约详情
function getAppointmentInfo(appointmentBizId, changeTab) {
getAppointmentDetail(appointmentBizId).then(res => {
if (res.code == 200) {
appointmentSummeryInfo.value = res.data
let options = fetchDictData('csf_ap_status')
options.forEach(item => {
if (item.value == appointmentSummeryInfo.value.status) {
processInfo.value.status = item.label
}
})
if (!appointmentSummeryInfo.value.apiAppointmentInfoDto.appointmentBizId) {
showStorage.value = true
}
......@@ -413,7 +561,8 @@ const getDictsData = async () => {
'csf_ap_game',
'csf_ap_policy_transfer',
'wj_question_first_category',
'wj_question_second_category'
'wj_question_second_category',
'csf_ap_status'
])
}
// Tab切换前的验证
......@@ -464,6 +613,10 @@ const handleSubmit = type => {
submitAppointmentObj.value.apiAppointmentInfoDto.policyTransfer =
policyTransferRef.value[0].form.policyTransfer
}
if (questionnairesInfoRef.value) {
submitAppointmentObj.value.answerSessionsDtoList =
questionnairesInfoRef.value[0].handleFormValues().answerSessionsDtoList
}
// 代表新增预约
if (formStatus.value == 'appointmentAdd' && !idsObj.value.appointmentBizId) {
submitAppointmentObj.value.apiAppointmentInfoDto.customerBizId =
......@@ -502,20 +655,44 @@ const handleSubmit = type => {
) {
submitAppointmentObj.value[key2] = appointmentSummeryInfo.value[key1]
}
// if()
if (
key2 == 'apiPolicyholderInfoDto' &&
Object.keys(submitAppointmentObj.value[key2]).length !== 0
) {
submitAppointmentObj.value[key2]['appointmentBizId'] =
appointmentSummeryInfo.value.apiPolicyholderInfoDto.appointmentBizId
submitAppointmentObj.value[key2]['id'] =
appointmentSummeryInfo.value.apiPolicyholderInfoDto.id
submitAppointmentObj.value[key2]['policyholderBizId'] =
appointmentSummeryInfo.value.apiPolicyholderInfoDto.policyholderBizId
}
if (
key2 == 'apiInsurantInfoDto' &&
Object.keys(submitAppointmentObj.value[key2]).length !== 0
) {
submitAppointmentObj.value[key2]['appointmentBizId'] =
appointmentSummeryInfo.value.apiInsurantInfoDto.appointmentBizId
submitAppointmentObj.value[key2]['id'] =
appointmentSummeryInfo.value.apiInsurantInfoDto.id
submitAppointmentObj.value[key2]['insurantBizId'] =
appointmentSummeryInfo.value.apiInsurantInfoDto.insurantBizId
}
}
}
// 新增预约单
// 编辑预约单
editAppointmentDetail(submitAppointmentObj.value).then(res => {
if (res.code == 200) {
getAppointmentInfo(idsObj.value.appointmentBizId)
appointmentInfoRef.value[0].handleEditStatus()
productPlanRef.value[0].handleEditStatus()
policyHolderInfoRef.value[0].handleEditStatus()
insuredInfoRef.value[0].handleEditStatus()
secondHolderInfoRef.value[0].handleEditStatus()
beneficiaryInfoRef.value[0].handleEditStatus()
policyTransferRef.value[0].handleEditStatus()
questionnairesInfoRef.value[0].handleEditStatus()
appointmentInfoRef.value[0].handleEditStatus(true)
productPlanRef.value[0].handleEditStatus(true)
policyHolderInfoRef.value[0].handleEditStatus(true)
insuredInfoRef.value[0].handleEditStatus(true)
secondHolderInfoRef.value[0].handleEditStatus(true)
beneficiaryInfoRef.value[0].handleEditStatus(true)
policyTransferRef.value[0].handleEditStatus(true)
questionnairesInfoRef.value[0].handleEditStatus(true)
proxy.$message.success('修改预约单成功')
}
})
......@@ -732,7 +909,7 @@ onUnmounted(() => {
min-height: calc(100vh - 84.5px);
}
.embed-container {
min-height: calc(100vh - 317px);
min-height: calc(100vh - 325px);
}
.appointment-container {
display: flex;
......@@ -792,6 +969,7 @@ onUnmounted(() => {
width: 100%;
display: flex;
justify-content: flex-end;
margin-bottom: 10px;
}
.tabButton {
box-shadow: 0 -1px 14px #00000014;
......@@ -905,4 +1083,25 @@ onUnmounted(() => {
}
}
}
.dialogBox {
.tipTitle {
font-size: 16px;
font-weight: 600;
}
.tipContent {
margin-top: 10px;
div {
margin-top: 10px;
.downloadBtn {
color: #165dff;
}
}
}
.exprotBtn {
width: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
}
}
</style>
......@@ -8,7 +8,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -126,6 +126,7 @@
</el-row>
</el-form>
</div>
<!-- <div v-else class="domEmpty" v-loading="loading"></div> -->
<Phone
@close="handleCloseDrawer"
:showDrawer="showPhoneDrawer"
......@@ -489,8 +490,8 @@ const handleSelectChange = (father, child) => {
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
const handleEditStatus = status => {
editStatus.value = status
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(processedAppointmentData.value))
for (const section of processedData) {
......@@ -726,7 +727,7 @@ const submitForm = () => {
if (props.idsObj.appointmentBizId) {
editAppointmentInfo(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus()
handleEditStatus(true)
proxy.$message.success('预约信息修改成功')
emit('handleSuccessEdit')
}
......@@ -772,6 +773,7 @@ watch(
setTimeout(() => {
processFormData()
}, 500)
// processFormData()
}
}
)
......@@ -791,6 +793,17 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
.domEmpty {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
font-size: 16px;
color: #a8abb2;
margin-top: 100px;
}
.topBtn {
width: 100%;
display: flex;
......
......@@ -15,7 +15,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -174,6 +174,7 @@
</div>
</el-dialog>
</div>
<!-- <div v-else class="domEmpty" v-loading="loading"></div> -->
<Phone
@close="handleCloseDrawer"
:showDrawer="showPhoneDrawer"
......@@ -692,8 +693,8 @@ const handleSelectChange = (child, l1, l2) => {
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
const handleEditStatus = status => {
editStatus.value = status
console.log('触发了编辑状态', editStatus.value)
// 深拷贝原始数据
......@@ -891,21 +892,21 @@ const handleFormValues = () => {
if (pattern.test(key) && section[key]) {
section[key] = proxy.formatToDateTime(section[key])
}
if (section['customerType'] == 'COMPANY') {
for (const key1 in companyObj.value) {
if (key == key1 && section[key]) {
submitObj[key1] = section[key]
}
if (key == 'companyMobile' && section[key]) {
submitObj[key] = section[key].split(' ')[1]
submitObj['companyMobileCode'] = section[key].split(' ')[0]
}
if (key == 'authMobile' && section[key]) {
submitObj[key] = section[key].split(' ')[1]
submitObj['authMobileCode'] = section[key].split(' ')[0]
}
}
}
// if (section['customerType'] == 'COMPANY') {
// for (const key1 in companyObj.value) {
// if (key == key1 && section[key]) {
// submitObj[key1] = section[key]
// }
// if (key == 'companyMobile' && section[key]) {
// submitObj[key] = section[key].split(' ')[1]
// submitObj['companyMobileCode'] = section[key].split(' ')[0]
// }
// if (key == 'authMobile' && section[key]) {
// submitObj[key] = section[key].split(' ')[1]
// submitObj['authMobileCode'] = section[key].split(' ')[0]
// }
// }
// }
if (section['customerType'] == 'INDIVIDUAL' && section[key]) {
for (const key1 in personalObj.value) {
if (key == key1) {
......@@ -914,6 +915,18 @@ const handleFormValues = () => {
}
}
}
if (submitObj['companyMobile']) {
submitObj['companyMobileCode'] = submitObj['companyMobile'].split(' ')[0]
submitObj['companyMobile'] = submitObj['companyMobile'].split(' ')[1]
}
if (submitObj['mobile']) {
submitObj['mobileCode'] = submitObj['mobile'].split(' ')[0]
submitObj['mobile'] = submitObj['mobile'].split(' ')[1]
}
if (submitObj['authMobile']) {
submitObj['authMobileCode'] = submitObj['authMobile'].split(' ')[0]
submitObj['authMobile'] = submitObj['authMobile'].split(' ')[1]
}
phoneOraddressKey.value.forEach(item => {
if (item.drawerType == 'address' && item.id === section.id) {
submitObj.addressList.push({
......@@ -958,7 +971,7 @@ const submitForm = () => {
apiBeneficiaryInfoDtoList: submitObj
}).then(res => {
if (res.code == 200) {
handleEditStatus()
handleEditStatus(true)
proxy.$message.success('受益人修改成功')
emit('handleSuccessEdit')
}
......@@ -1026,6 +1039,17 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
.domEmpty {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
font-size: 16px;
color: #a8abb2;
margin-top: 100px;
}
.topBtn {
width: 100%;
display: flex;
......
......@@ -7,10 +7,10 @@
@sort-change="sortChange"
>
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column type="index" width="50" />
<el-table-column type="index" width="50" label="序号" />
<el-table-column label="流程编号" align="center" prop="fnaNo" width="200" />
<el-table-column label="预约编号" align="center" prop="appointmentNo" />
<el-table-column label="新单编号" align="center" prop="policyId" />
<el-table-column label="预约编号" align="center" prop="appointmentNo" width="200" />
<el-table-column label="新单编号" align="center" prop="policyId" width="150" />
<el-table-column label="保单号" align="center" prop="policyNo" width="150" />
<el-table-column label="客户姓名" align="center" prop="customerName" width="100" />
......@@ -28,7 +28,7 @@
</span>
</template>
</el-table-column>
<el-table-column label="创建时间" sortable align="center" prop="createTime" width="150">
<el-table-column label="创建时间" sortable align="center" prop="createTime" width="200">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
......
......@@ -11,7 +11,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -22,7 +22,6 @@
<el-row style="margin-bottom: 10px">
<div class="formBox">
<div class="fatherLable">{{ level1.firstCategoryName }}</div>
<!-- <div class="fatherDes">{{ father.description }}</div> -->
<el-row :gutter="20">
<template
......@@ -30,140 +29,144 @@
:key="level2.secondCategory"
>
<el-col :sm="level2.sm" :lg="level2.lg" class="formItem">
<div class="level2Title">{{ level2.secondCategoryName }}</div>
<div class="level2Content" v-for="(level3, l3) in level2.questionsDtoList">
<div class="level2Left">
{{ l3 + 1 }}/{{ level2.questionsDtoList.length }}
</div>
<div class="level2Right">
<div class="level3Title">{{ level3.text }}</div>
<!-- <el-form-item
:label-width="level3.labelWidth"
:key="level3.key"
:label-position="level3.labelPosition"
> -->
<div class="level3Content">
<el-radio-group
v-model="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3][
'answerSessionsDto'
]['optionBizId']
"
@change="handleRadioChange(l1, l2, l3, level3)"
<div class="level2Title">
{{ level2.secondCategoryName }}
</div>
<div>
<div class="level2Content" v-for="(level3, l3) in level2.questionsDtoList">
<div
class="level2Left"
v-if="level2.secondCategory !== 'MEDICAL_CONDITION'"
>
{{ l3 + 1 }}/{{ level2.questionsDtoList.length }}
</div>
<div class="level2Right">
<div
class="level3Title"
v-if="level2.secondCategory !== 'MEDICAL_CONDITION'"
>
<el-radio
v-for="dict in level3.optionsDtoList"
:key="dict.optionBizId"
:value="dict.optionBizId"
>{{ dict.text }}</el-radio
>
</el-radio-group>
{{ level3.text }}
</div>
<div
v-if="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3][
'answerSessionsDto'
]['optionBizId'] == 'option_1002'
"
style="width: 100%"
class="level3Content"
v-if="level2.secondCategory !== 'MEDICAL_CONDITION'"
>
<div v-for="level4 in level3.addQuestionsDtoList">
<!-- -->
<el-form-item
label-position="top"
:key="level4.addQuestionsBizId"
:label="level4.text"
:rules="
level4.isRequired
? [
{
required: true,
message: `${level4.text}不能为空`,
trigger: 'blur'
}
]
: []
"
<!-- 回显得时候拿不到optionBizId -->
<el-radio-group
v-model="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3][
'answerSessionsDto'
]['optionBizId']
"
@change="handleRadioChange(l1, l2, l3, level3)"
:disabled="editStatus"
>
<el-radio
v-for="dict in level3.optionsDtoList"
:key="dict.optionBizId"
:value="dict.optionBizId"
>{{ dict.text }}</el-radio
>
<div class="level4Content">
<el-input
v-if="level4.type === 'TEXT'"
:type="level4.type"
placeholder="请输入"
maxlength="30"
style="width: 50%"
@blur="inputBlur(l1, l2, l3, level4)"
/>
<!-- @change="handleDateChange(child)" -->
<el-date-picker
style="width: 50%"
v-if="level4.type === 'DATE'"
:type="level4.type"
placeholder="请输入"
:disabled-date="disabledDate"
/>
</div>
</el-form-item>
</el-radio-group>
<!--选择是才展示附加条件 -->
<div
v-if="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3][
'answerSessionsDto'
]['optionBizId'] == 'option_1002'
"
style="width: 100%"
>
<!-- 附加问题 -->
<div v-for="(level4, l4) in level3.addQuestionsDtoList">
<el-form-item
label-position="top"
:key="level4.addQuestionsBizId"
:label="level4.text"
:rules="
level4.isRequired
? [
{
required: true,
message: `${level4.text}不能为空`,
trigger: 'blur'
}
]
: []
"
>
<div class="level4Content">
<el-input
v-if="level4.type === 'TEXT'"
:type="level4.type"
v-model="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][
l3
]['addQuestionsDtoList'][l4]['content']
"
placeholder="请输入"
maxlength="30"
style="width: 50%"
:disabled="editStatus"
/>
<el-date-picker
style="width: 50%"
v-if="level4.type === 'DATE'"
:disabled="editStatus"
v-model="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][
l3
]['addQuestionsDtoList'][l4]['content']
"
type="date"
placeholder="请输入"
:disabled-date="disabledDate"
@change="handleDateChange(l1, l2, l3, l4)"
/>
</div>
</el-form-item>
</div>
</div>
</div>
<div v-if="level2.secondCategory == 'MEDICAL_CONDITION'">
<div
v-for="(question, q4) in level3.answerSessionsDto
.questionTextJsonDtoList"
style="margin-bottom: 10px"
>
<div class="questionContent">
<div class="questionTitle">{{ `${question.title}${q4 + 1}` }}</div>
<el-input
type="text"
:disabled="editStatus"
v-model="
form[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3][
'answerSessionsDto'
]['questionTextJsonDtoList'][q4]['content']
"
placeholder="请输入"
maxlength="300"
style="width: 70%"
/>
<el-icon class="deleteIcon" @click="deleteMedical(l1, l2, l3, q4)"
><Remove
/></el-icon>
</div>
</div>
<el-button
class="addBtn"
type="primary"
:icon="Plus"
size="small"
@click="addMedical(l1, l2, l3)"
:disabled="editStatus"
>继续添加</el-button
>
</div>
</div>
<!-- </el-form-item> -->
</div>
</div>
<!-- <div>
<el-form-item
:label-width="child.labelWidth"
:label="child.label"
:prop="child.key"
:key="child.key"
:label-position="child.labelPosition"
>
<el-input
v-if="child.domType === 'Input'"
:type="child.inputType"
v-model="form[child.key]"
:placeholder="child.placeholder"
maxlength="30"
:disabled="child.disabled"
/>
<el-select
v-if="child.domType === 'Select'"
v-model="form[child.key]"
:placeholder="child.placeholder"
@change="handleSelectChange(father, child)"
:disabled="child.disabled"
>
<el-option
v-for="item in child.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-date-picker
v-model="form[child.key]"
style="width: 100%"
v-if="child.domType === 'DatePicker'"
type="date"
:placeholder="child.placeholder"
:disabled="child.disabled"
:disabled-date="disabledDate"
@change="handleDateChange(child)"
/>
<el-input
v-if="child.domType === 'arrowRight'"
v-model="form[child.key]"
:placeholder="child.placeholder"
@click="handleFoucs(child)"
:suffix-icon="ArrowRight"
readonly
:disabled="child.disabled"
>
</el-input>
<el-button v-if="child.domType === 'button'" :type="child.buttonType">{{
child.buttonTxt
}}</el-button>
</el-form-item>
</div> -->
</el-col>
</template>
</el-row>
......@@ -185,91 +188,23 @@
type="primary"
icon="Check"
@click="submitForm"
size="large"
:disabled="editStatus"
size="large"
>提交</el-button
>
</div>
</el-col>
</el-row>
</el-form>
<el-dialog title="联系人信息" v-model="openList" width="600px" append-to-body>
<div>
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="85px">
<el-form-item label="联系人姓名" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入姓名" @input="customerList" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" circle @click="customerList" />
<el-button type="info" icon="Refresh" circle @click="resetCustomerList" />
</el-form-item>
</el-form>
<div class="customerBox">
<div class="customerItem" v-for="item in tableData" :key="item.id">
<div class="top">
<div class="right">
<el-button type="primary" size="small" @click="handleExport(item)"
>导入联系人</el-button
>
</div>
</div>
<div class="bottom">
<div class="left">
<div class="infoItem">
<span>姓名:</span>
<span> {{ item.name || '暂无' }}</span>
</div>
<div class="infoItem">
<span>性别:</span>
<span>
<dict-tag :options="fetchDictData('sys_gender')" :value="item.gender"
/></span>
</div>
<div class="infoItem">
<span>年龄:</span>
<span> {{ item.age || '暂无' }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</el-dialog>
</div>
<Phone
@close="handleCloseDrawer"
:showDrawer="showPhoneDrawer"
:drawerInfo="drawerInfo"
:phoneMenuList="phoneMenuList"
:phoneQuickList="phoneQuickList"
@confirmDrawer="confirmDrawer"
/>
<Address
@close="handleCloseDrawer"
:showAddressDrawer="showAddressDrawer"
:drawerInfo="drawerInfo"
:addressMenuList="addressMenuList"
:addressQuickList="addressQuickList"
@confirmDrawer="confirmDrawer"
/>
<Country
:showCountryDrawer="showCountryDrawer"
@close="handleCloseDrawer"
@confirmCountry="confirmDrawer"
/>
<div v-else class="domEmpty" v-loading="loading"></div>
</div>
</template>
<script setup name="secondHolderInfo">
import { calculateExactAge } from '@/utils/date'
import { ArrowRight } from '@element-plus/icons-vue'
import secondHolderDomData from '@/formJson/secondHolder'
import Country from '@/views/components/country'
import Phone from '@/views/components/phone'
import Address from '@/views/components/address'
import { Plus } from '@element-plus/icons-vue'
import { watch, nextTick } from 'vue'
import { getCustomerList } from '@/api/sign/fna'
import { editSecondHolderInfo, getQuestionnaires } from '@/api/sign/appointment'
import { watch } from 'vue'
import { getQuestionnaires, saveQuestionnaires } from '@/api/sign/appointment'
import useDictStore from '@/store/modules/dict'
const dictStore = useDictStore() //获取字典数据
......@@ -284,90 +219,14 @@ const props = defineProps({
})
const emit = defineEmits(['handleSuccessEdit'])
const { proxy } = getCurrentInstance()
// const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender')
const showPhoneDrawer = ref(false) //电话抽屉开关
const showAddressDrawer = ref(false) //地址抽屉开关
const showCountryDrawer = ref(false) //国家/地区抽屉开关
const drawerInfo = ref({}) // 用于存储所有arrowRight类型的输入框输入值
const saveKey = ref({}) // 用于存储当前点击的drawer框返回的对象,修改的时候回显值也要存key
const tempSaveKey = ref({}) // 用于tab切换的时候保存一份临时的值,防止切换的时候数据丢失
const loading = ref(false)
const errorFields = ref([]) // 存储校验失败的字段信息
const editStatus = ref(true) // 表单是否可编辑,若是修改初始不可编辑
const openList = ref(false) // 客户列表弹窗
const oldObjInfo = ref({}) // 修改时存储原始数据,便于撤销操作
const showContacts = ref(true)
const tableLoading = ref(false)
const tableData = ref([])
const total = ref(0)
// 地址组件菜单数据
const addressMenuList = ref([
{
name: '国家/地区',
icon: false,
value: '',
placeholder: '请输入国家/地区',
key: 'region'
},
{
name: '省市',
icon: false,
value: '',
placeholder: '请输入省市',
key: 'city'
},
{
name: '街道',
icon: false,
value: '',
placeholder: '请输入街道',
key: 'street'
},
{
name: '详细地址',
icon: false,
value: '',
placeholder: '请输入详细地址',
key: 'location'
}
])
// 快捷地址的数据
const addressQuickList = ref([])
const phoneMenuList = ref([
{
name: '区号',
icon: true,
value: '',
placeholder: '请输入区号',
arrow: true,
type: 'string'
},
{
name: '电话号码',
icon: false,
value: '',
placeholder: '请输入电话号码',
type: 'number'
}
])
const phoneQuickList = ref([])
const personalObj = ref({}) //存储个人key
const companyObj = ref({}) //存储公司key
const commonObj = ref({}) //存储个人和公司的公共key
const deleteKeyList = ref([
'objType',
'mailingAddress',
'residentialAddress',
'residenceAddress',
'companyAddress',
'txAddress',
'companyEnterAddress',
'phoneString',
'phoneCode'
]) // 存储需要删除的key
const data = reactive({
form: {},
tempSecondHolderForm: {}, //由于切换tab的时候,表单数据会重置,所以需要
form: [],
tempSecondHolderForm: [], //由于切换tab的时候,表单数据会重置,所以需要
questionnairesDom: [], // 处理后的表单数据
oldAppointmentData: [], // 保存旧的表单Dom,便于撤销操作
rules: {}, //表单验证规则,
......@@ -379,97 +238,68 @@ const data = reactive({
})
const { form, rules, questionnairesDom, queryParams, oldAppointmentData, tempSecondHolderForm } =
toRefs(data)
const addMedical = (l1, l2, l3) => {
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['answerSessionsDto'][
'questionTextJsonDtoList'
].push({
title: '病况',
content: ''
})
}
const deleteMedical = (l1, l2, l3, index) => {
if (editStatus.value) {
proxy.$modal.confirm(`请先点击编辑在删除病况`, { showCancel: '0', title: '填写提示' })
return
}
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['answerSessionsDto'][
'questionTextJsonDtoList'
].splice(index, 1)
questionnairesDom.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3][
'answerSessionsDto'
]['questionTextJsonDtoList'].splice(index, 1)
}
const handleRadioChange = (l1, l2, l3, level3) => {
let answer = JSON.parse(
JSON.stringify(
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['answerSessionsDto']
)
)
let optionItem = level3.optionsDtoList.filter(item => item.optionBizId === answer.optionBizId)
if (optionItem[0].value == 'YES') {
let newObj = {
optionBizId: optionItem[0].optionBizId,
content: optionItem[0].value
}
// 检查数组中是否已存在相同ID的地址
const existingIndex = answer.optionJsonDtoList.findIndex(
item => item.optionBizId === optionItem[0].optionBizId
)
let newObj = {
optionBizId: optionItem[0].optionBizId,
content: optionItem[0].value
}
// 检查数组中是否已存在相同ID的地址
const existingIndex = answer.optionJsonDtoList.findIndex(
item => item.optionBizId === optionItem[0].optionBizId
)
if (existingIndex !== -1) {
// 更新已存在的地址
answer.optionJsonDtoList[existingIndex] = { ...newObj }
} else {
// 添加新地址
answer.optionJsonDtoList.push({ ...newObj })
}
if (existingIndex !== -1) {
// 更新已存在的数据
answer.optionJsonDtoList[existingIndex] = { ...newObj }
} else {
// 添加新的数据
answer.optionJsonDtoList.push({ ...newObj })
}
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['answerSessionsDto'] = answer
console.log('====================================')
console.log(
'改变',
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['answerSessionsDto']
)
console.log('====================================')
}
const inputBlur = (l1, l2, l3, level4) => {
// 写到这了
let answer = JSON.parse(
JSON.stringify(
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['answerSessionsDto']
)
)
}
const handleDateChange = child => {
let age = null
if (child.key == 'birthTime') {
age = calculateExactAge(proxy.formatToDate(form.value.birthTime))
if (age >= 0) {
form.value.age = age
}
}
const handleDateChange = (l1, l2, l3, l4) => {
let time =
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['addQuestionsDtoList'][l4][
'content'
]
time = proxy.formatToDate(time)
form.value[l1]['secondCategoryDtoList'][l2]['questionsDtoList'][l3]['addQuestionsDtoList'][l4][
'content'
] = time
}
const disabledDate = time => {
return time.getTime() > Date.now()
}
const exportInfo = () => {
if (props.customerBizId && editStatus.value) {
proxy.$modal.confirm(`请先点击编辑在导入客户信息`, { showCancel: '0', title: '填写提示' })
return
}
openList.value = true
customerList()
}
const customerList = () => {
tableLoading.value = true
getCustomerList(queryParams.value).then(res => {
if (res.code == 200) {
tableData.value = res.data.records
total.value = res.data.total
tableLoading.value = false
}
})
}
const resetCustomerList = () => {
queryParams.value = {
pageNo: 1,
pageSize: 4,
name: undefined
}
customerList()
}
// 从客户列表中导入客户信息到当前表单
const handleExport = row => {
oldObjInfo.value = JSON.parse(JSON.stringify(form.value)) // 修改时存储原始数据,便于撤销操作
processFormData({
domdata: questionnairesDom.value,
customerInfo: row,
exportValue: true
})
openList.value = false
}
// 获取字典数据
const fetchDictData = dictType => {
......@@ -486,288 +316,12 @@ const fetchDictData = dictType => {
return []
}
}
// 添加英文校验函数
const validateEnglish = (rule, value, callback) => {
if (value && !/^[A-Za-z]*$/.test(value)) {
// 清空非英文字符
form.value.firstNamePinyin = ''
callback(new Error('只能输入英文字母'))
} else {
callback()
}
}
// 处理表单配置,添加字典数据
/**
* domdata:表单的dom数据
* customerInfo:根据客户信息回显表单
* exportValue:是否从导入联系人列表中导入客户信息到当前表单
*/
const processFormData = async obj => {
form.value = {}
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(obj.domdata))
for (const section of processedData) {
if (section.data) {
for (const field of section.data) {
if (field.dictType) {
// 获取字典数据
field.options = fetchDictData(field.dictType)
}
if (field.required) {
if (field.showEn) {
rules.value[field.key] = [
{ required: true, message: `${field.label}不能为空`, trigger: 'blur' },
{ validator: validateEnglish, trigger: 'change' }
]
} else {
rules.value[field.key] = [
{ required: true, message: `${field.label}不能为空`, trigger: 'blur' }
]
}
}
if (obj.customerInfo) {
for (const key1 in obj.customerInfo) {
if (key1 == 'birthdate' && obj.customerInfo[key1]) {
obj.customerInfo[key1] = proxy.formatToDate(obj.customerInfo[key1])
}
// 对应客户和dom表单字段方便赋值
if (field.customerKey && key1 == field.customerKey) {
form.value[field.key] = obj.customerInfo[key1]
}
}
}
if (props.idsObj.appointmentBizId) {
field.disabled = true
} else {
if (field.key == 'age') {
field.disabled = true
} else {
field.disabled = false
}
}
}
}
}
//当tab切换走,在切换回来的时候,需要把之前保存的值赋值回来
if (JSON.stringify(tempSecondHolderForm.value) !== '{}' && !props.idsObj.appointmentBizId) {
form.value = { ...tempSecondHolderForm.value }
}
if (props.idsObj.appointmentBizId) {
form.value = { ...props.apiSecondHolderInfoDto }
editStatus.value = true
} else {
editStatus.value = false
}
questionnairesDom.value = oldAppointmentData.value = processedData
}
//弹出右侧抽屉
const handleFoucs = child => {
if (child.disabled) return
console.log('saveKey.value', saveKey.value)
console.log('child', child)
drawerInfo.value = JSON.parse(JSON.stringify(child))
switch (child.drawerType) {
case 'phone':
phoneMenuList.value[0].key = child.code
phoneMenuList.value[1].key = child.key
phoneMenuList.value.forEach(item => {
item.value = ''
for (const key in saveKey.value) {
if (key == child.key) {
for (const key2 in saveKey.value[key]) {
if (item.key == key2) {
item.value = saveKey.value[key][key2]
}
}
}
}
})
showPhoneDrawer.value = true
break
case 'address':
addressMenuList.value.forEach(item => {
for (const key in saveKey.value) {
if (key == child.key) {
for (const key2 in saveKey.value[key]) {
if (item.key == key2) {
item.value = saveKey.value[key][key2]
}
}
}
}
})
showAddressDrawer.value = true
break
case 'country':
showCountryDrawer.value = true
break
default:
break
}
}
// 处理抽屉关闭
const handleCloseDrawer = () => {
showPhoneDrawer.value = false
showAddressDrawer.value = false
showCountryDrawer.value = false
drawerInfo.value = {}
}
const confirmDrawer = info => {
// info 为抽屉返回的值
if (drawerInfo.value.domType == 'arrowRight' && drawerInfo.value.drawerType) {
let newObj = info[drawerInfo.value.key]
if (form.value['customerType'] == 'COMPANY') {
newObj.fatherKey = 'company'
} else if (form.value['customerType'] == 'INDIVIDUAL') {
newObj.fatherKey = 'person'
}
//要判断drawerType
switch (drawerInfo.value.drawerType) {
case 'phone':
newObj.objType = drawerInfo.value.drawerType
// 因为电话有多个,根据点击的电话类型在抽屉里回显,所以要用drawerInfo.value.code来控制
form.value[info.key] = `${newObj[drawerInfo.value.code]} ${newObj[drawerInfo.value.key]}`
saveKey.value[drawerInfo.value.key] = newObj
break
case 'address':
newObj.objType = drawerInfo.value.drawerType
newObj.type = drawerInfo.value.key
form.value[info.key] = `${newObj.region} ${newObj.city} ${newObj.street} ${newObj.location}`
saveKey.value[info.key] = newObj
break
case 'country':
info.objType = drawerInfo.value.drawerType
form.value[drawerInfo.value.key] = info.name
saveKey.value[drawerInfo.value.key] = info
break
default:
break
}
}
handleCloseDrawer()
}
// 根据联动重置表单项的显示与否
const resetShow = obj => {
for (const section of questionnairesDom.value) {
switch (obj.type) {
case 'father':
if (section.key == obj.key) {
section.showMoudle = obj.status
}
break
case 'child':
if (section.data) {
for (const field of section.data) {
if (field.key == obj.key) {
// 获取字典数据
field.show = obj.status
}
}
}
break
default:
break
}
}
}
const handleSelectChange = (father, child) => {
switch (child.key) {
case 'customerType':
if (form.value[child.key] == 'COMPANY') {
showContacts.value = false
for (const section of questionnairesDom.value) {
if (section.key == 'company') {
for (const key1 in saveKey.value) {
for (const key2 in commonObj.value) {
if (key1 == key2) {
saveKey.value[key1]['fatherKey'] = section.key
}
}
}
section.showMoudle = true
} else if (section.key !== 'customer') {
section.showMoudle = false
}
}
} else {
showContacts.value = true
for (const section of questionnairesDom.value) {
if (section.key == 'company') {
section.showMoudle = false
} else {
section.showMoudle = true
}
}
}
break
case 'smokingAllowed':
// 选择吸烟,展示吸烟数量
if (form.value[child.key] == '1') {
resetShow({ type: 'child', key: 'smokingVolume', status: true })
} else {
resetShow({ type: 'child', key: 'smokingVolume', status: false })
}
break
case 'isVip':
// 选择vip,展示vip备注
if (form.value[child.key] == '1') {
resetShow({ type: 'child', key: 'vipRemark', status: true })
} else {
resetShow({ type: 'child', key: 'vipRemark', status: false })
}
break
default:
break
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
console.log('触发了编辑状态', editStatus.value)
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(questionnairesDom.value))
for (const section of processedData) {
if (section.data) {
for (const field of section.data) {
if (editStatus.value) {
field.disabled = true
} else {
field.disabled = false
}
}
}
}
questionnairesDom.value = processedData
const handleEditStatus = status => {
editStatus.value = status
}
// 数组去重
function removeDuplicates(arr, key) {
const seen = new Map()
const result = []
for (const item of arr) {
if (item[key] && !seen.has(item[key])) {
seen.set(item[key], true)
result.push(item)
}
}
return result
}
// 获取校验失败的字段信息
const getInvalidFields = fields => {
const errors = []
......@@ -784,36 +338,64 @@ const getInvalidFields = fields => {
// 处理表单填写得数据
const handleFormValues = () => {
let submitObj = {}
if (props.activeName == 'secondHolder') {
let submitObj = []
if (props.activeName == 'questionnaires') {
submitObj = JSON.parse(JSON.stringify(form.value))
console.log('1111', submitObj)
} else {
submitObj = JSON.parse(JSON.stringify(tempSecondHolderForm.value))
// submitObj = JSON.parse(JSON.stringify(tempSecondHolderForm.value))
// console.log('2222', submitObj)
}
//处理表单数据
for (const key1 in submitObj) {
if (key1 == 'birthTime') {
submitObj[key1] = proxy.formatToDateTime(submitObj[key1])
}
let answerSessionsDtoList = []
// 处理表单数据
submitObj.forEach(level1 => {
level1.secondCategoryDtoList.forEach(level2 => {
// 修正:应该是 questionsDtoList 而不是 questionDtoList
if (level2.questionsDtoList && level2.questionsDtoList.length > 0) {
level2.questionsDtoList.forEach(level3 => {
// 检查是否有答案数据和附加问题
//
if (level3.answerSessionsDto) {
// 问题选择了是
if (
level3.answerSessionsDto.optionJsonDtoList &&
level3.answerSessionsDto.optionBizId &&
level3.answerSessionsDto.optionBizId == 'option_1002'
) {
level3.answerSessionsDto.optionJsonDtoList.forEach(level4 => {
level4.addQuestionsJsonDtoList = JSON.parse(
JSON.stringify(level3.addQuestionsDtoList)
)
})
}
answerSessionsDtoList.push({
questionBizId: level3.questionBizId,
...level3.answerSessionsDto
})
}
})
}
})
})
return {
questionnaireBizId: 'questionnaires_1001',
objectBizId: props.idsObj.appointmentBizId,
answerSessionsDtoList
}
return submitObj
}
// 表单提交
const submitForm = () => {
proxy.$refs['heathFormRef'].validate((valid, fields) => {
if (valid) {
let submitObj = handleFormValues()
console.log('====================================')
console.log('submitObj', submitObj)
console.log('====================================')
// return
if (props.idsObj.appointmentBizId) {
editSecondHolderInfo(submitObj).then(res => {
saveQuestionnaires(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus()
proxy.$message.success('第二持有人修改成功')
handleEditStatus(true)
proxy.$message.success('健康信息修改成功')
emit('handleSuccessEdit')
}
})
......@@ -846,6 +428,7 @@ const resetForm = () => {
.catch(() => {})
}
const getQuestionnairesInfo = () => {
loading.value = true
getQuestionnaires(props.idsObj.appointmentBizId).then(res => {
if (res.code == 200) {
let result = res.data.firstAndSecondCategoryDtoList
......@@ -871,11 +454,59 @@ const getQuestionnairesInfo = () => {
level3.labelWidth = '100%'
level3.labelPosition = 'top'
level3.key = level3.id
if (level3.optionsDtoList && level3.optionsDtoList.length > 0) {
level3.optionsDtoList.forEach((level4, l4) => {})
}
if (!level3.answerSessionsDto) {
level3.answerSessionsDto = {}
if (!level3.answerSessionsDto.optionJsonDtoList) {
if (
level2.secondCategory !== 'MEDICAL_CONDITION' &&
!level3.answerSessionsDto.optionJsonDtoList
) {
level3.answerSessionsDto.optionJsonDtoList = []
}
if (
level2.secondCategory == 'MEDICAL_CONDITION' &&
!level3.answerSessionsDto.questionTextJsonDtoList
) {
level3.answerSessionsDto.questionTextJsonDtoList = []
}
} else {
if (
level2.secondCategory !== 'MEDICAL_CONDITION' &&
!level3.answerSessionsDto.optionJsonDtoList
) {
level3.answerSessionsDto.optionJsonDtoList = []
level3.answerSessionsDto.optionJsonDtoList.addQuestionsJsonDtoList = []
} else {
// 给单选框赋值,方便回显
if (
level3.answerSessionsDto.optionJsonDtoList &&
level3.answerSessionsDto.optionJsonDtoList.length > 0
) {
level3.answerSessionsDto.optionBizId =
level3.answerSessionsDto.optionJsonDtoList[0].optionBizId
if (level3.answerSessionsDto.optionJsonDtoList[0].addQuestionsJsonDtoList) {
level3.addQuestionsDtoList.forEach((level5, l5) => {
level3.answerSessionsDto.optionJsonDtoList[0].addQuestionsJsonDtoList.forEach(
(level6, l6) => {
if (level5.addQuestionsBizId == level6.addQuestionsBizId) {
if (level5.type == 'DATE') {
level5.content = proxy.formatToDate(level6.content)
} else {
level5.content = level6.content
}
}
}
)
})
}
}
}
if (
level2.secondCategory == 'MEDICAL_CONDITION' &&
!level3.answerSessionsDto.questionTextJsonDtoList
) {
level3.answerSessionsDto.questionTextJsonDtoList = []
}
}
})
......@@ -883,6 +514,7 @@ const getQuestionnairesInfo = () => {
})
questionnairesDom.value = form.value = result
loading.value = false
}
})
}
......@@ -894,6 +526,9 @@ watch(
tempSecondHolderForm.value = { ...form.value }
if (newVal === 'questionnaires') {
if (props.idsObj.appointmentBizId) {
editStatus.value = true
}
getQuestionnairesInfo()
}
}
......@@ -906,6 +541,17 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
.domEmpty {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
font-size: 16px;
color: #a8abb2;
margin-top: 100px;
}
.topBtn {
width: 100%;
display: flex;
......@@ -951,6 +597,22 @@ defineExpose({
width: 100%;
}
}
.questionContent {
display: flex;
align-items: center;
.questionTitle {
margin-right: 10px;
font-size: 13px;
}
.addBtn {
margin-top: 10px;
}
.deleteIcon {
font-size: 20px;
color: red;
margin-left: 5px;
}
}
}
}
.inputBox {
......
......@@ -16,7 +16,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -78,6 +78,7 @@
style="width: 100%"
v-if="child.domType === 'DatePicker'"
type="date"
:disabled-date="disabledDate"
:placeholder="child.placeholder"
:disabled="child.disabled"
/>
......@@ -169,6 +170,7 @@
</div>
</el-dialog>
</div>
<!-- <div v-else class="domEmpty" v-loading="loading"></div> -->
<Phone
@close="handleCloseDrawer"
:showDrawer="showPhoneDrawer"
......@@ -313,6 +315,9 @@ const data = reactive({
})
const { form, rules, processedinsuredData, queryParams, oldAppointmentData, tempPolicyForm } =
toRefs(data)
const disabledDate = time => {
return time.getTime() > Date.now()
}
const exportInfo = () => {
if (props.customerBizId && editStatus.value) {
proxy.$modal.confirm(`请先点击编辑在导入客户信息`, { showCancel: '0', title: '填写提示' })
......@@ -776,10 +781,8 @@ const handleSelectChange = (father, child) => {
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
console.log('触发了编辑状态', editStatus.value)
const handleEditStatus = status => {
editStatus.value = status
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(processedinsuredData.value))
for (const section of processedData) {
......@@ -921,13 +924,15 @@ const handleFormValues = () => {
submitObj['authMobileCode'] = submitObj['authMobile'].split(' ')[0]
submitObj['authMobile'] = submitObj['authMobile'].split(' ')[1]
}
console.log('====================================')
console.log('受保人submitObj', submitObj)
console.log('====================================')
// 删除多余字段
deleteKeyList.value.forEach(item => {
delete submitObj[item]
})
console.log('====================================')
console.log('受保人submitObj', submitObj)
console.log('====================================')
return submitObj
}
// 表单提交
......@@ -953,7 +958,7 @@ const submitForm = () => {
submitObj['insurantBizId'] = props.apiInsurantInfoDto.insurantBizId
editInsurantInfo(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus()
handleEditStatus(true)
proxy.$message.success('受保人修改成功')
emit('handleSuccessEdit')
}
......@@ -1022,6 +1027,17 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
.domEmpty {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
font-size: 16px;
color: #a8abb2;
margin-top: 100px;
}
.topBtn {
width: 100%;
display: flex;
......
......@@ -16,7 +16,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -78,6 +78,7 @@
style="width: 100%"
v-if="child.domType === 'DatePicker'"
type="date"
:disabled-date="disabledDate"
:placeholder="child.placeholder"
:disabled="child.disabled"
/>
......@@ -169,6 +170,7 @@
</div>
</el-dialog>
</div>
<!-- <div v-else class="domEmpty" v-loading="loading"></div> -->
<Phone
@close="handleCloseDrawer"
:showDrawer="showPhoneDrawer"
......@@ -200,7 +202,7 @@ import Phone from '@/views/components/phone'
import Address from '@/views/components/address'
import { watch, nextTick } from 'vue'
import { addCustomer, getCustomerDetail, editCustomer, getCustomerList } from '@/api/sign/fna'
import { getCustomerList } from '@/api/sign/fna'
import { editPolicyholderInfo } from '@/api/sign/appointment'
import useDictStore from '@/store/modules/dict'
......@@ -313,6 +315,9 @@ const data = reactive({
})
const { form, rules, processedPolicyData, queryParams, oldAppointmentData, tempPolicyForm } =
toRefs(data)
const disabledDate = time => {
return time.getTime() > Date.now()
}
const exportInfo = () => {
if (props.customerBizId && editStatus.value) {
proxy.$modal.confirm(`请先点击编辑在导入客户信息`, { showCancel: '0', title: '填写提示' })
......@@ -660,11 +665,7 @@ const confirmDrawer = info => {
// info 为抽屉返回的值
if (drawerInfo.value.domType == 'arrowRight' && drawerInfo.value.drawerType) {
let newObj = info[drawerInfo.value.key]
// if (form.value['customerType'] == 'COMPANY') {
// newObj.fatherKey = 'company'
// } else if (form.value['customerType'] == 'INDIVIDUAL') {
// newObj.fatherKey = 'person'
// }
//要判断drawerType
switch (drawerInfo.value.drawerType) {
case 'phone':
......@@ -772,10 +773,8 @@ const handleSelectChange = (father, child) => {
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
console.log('触发了编辑状态', editStatus.value)
const handleEditStatus = status => {
editStatus.value = status
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(processedPolicyData.value))
for (const section of processedData) {
......@@ -924,6 +923,8 @@ const handleFormValues = () => {
delete submitObj[item]
})
console.log('投保人', submitObj)
return submitObj
}
// 表单提交
......@@ -931,10 +932,6 @@ const submitForm = () => {
proxy.$refs['policyholderInfoFormRef'].validate((valid, fields) => {
if (valid) {
let submitObj = handleFormValues()
console.log('====================================')
console.log('submitObj', submitObj)
console.log('====================================')
// return
if (props.idsObj.appointmentBizId) {
submitObj['appointmentBizId'] = props.apiPolicyholderInfoDto.appointmentBizId
......@@ -942,7 +939,7 @@ const submitForm = () => {
submitObj['policyholderBizId'] = props.apiPolicyholderInfoDto.policyholderBizId
editPolicyholderInfo(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus()
handleEditStatus(true)
proxy.$message.success('投保人修改成功')
emit('handleSuccessEdit')
}
......@@ -974,15 +971,7 @@ const resetForm = () => {
.catch(() => {})
}
// 获取流程详情
// function getCustomerInfo(customerBizId, formData) {
// getCustomerDetail(customerBizId).then(async res => {
// if (res.code == 200) {
// // 回显值
// setFormValue(res.data, formData)
// }
// })
// }
watch(
() => props.activeName,
newVal => {
......@@ -1018,6 +1007,17 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
.domEmpty {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
font-size: 16px;
color: #a8abb2;
margin-top: 100px;
}
.topBtn {
width: 100%;
display: flex;
......
......@@ -8,7 +8,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -52,18 +52,13 @@
<el-row>
<el-col>
<div class="tabButton">
<el-button
type="primary"
icon="Check"
@click="submitForm"
size="large"
:disabled="editStatus"
>提交</el-button
>
<!-- :disabled="editStatus" -->
<el-button type="primary" icon="Check" @click="submitForm" size="large">提交</el-button>
</div>
</el-col>
</el-row>
</div>
<!-- <div v-else class="domEmpty" v-loading="loading"></div> -->
</div>
</template>
<script setup name="PolicyTransferInfo">
......@@ -85,6 +80,7 @@ const props = defineProps({
const emit = defineEmits(['handleSuccessEdit'])
const { proxy } = getCurrentInstance()
// const { csf_id_type, sys_gender } = proxy.useDict('csf_id_type', 'sys_gender')
const loading = ref(false)
const editStatus = ref(false) //编辑状态
const errorFields = ref([]) // 存储校验失败的字段信息
const data = reactive({
......@@ -135,6 +131,7 @@ const validateEnglish = (rule, value, callback) => {
*/
const processFormData = async obj => {
form.value = {}
loading.value = true
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(obj.domdata))
......@@ -150,10 +147,11 @@ const processFormData = async obj => {
}
}
policyTransferData.value = processedData
loading.value = false
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
const handleEditStatus = status => {
editStatus.value = status
console.log('触发了编辑状态', editStatus.value)
// 深拷贝原始数据
......@@ -213,7 +211,7 @@ const submitForm = () => {
if (props.idsObj.appointmentBizId) {
editPolicytransfer(submitObj).then(res => {
if (res.code == 200) {
// handleEditStatus()
// handleEditStatus(true)
proxy.$message.success('转保声明修改成功')
emit('handleSuccessEdit')
}
......@@ -252,6 +250,17 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
.domEmpty {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
font-size: 16px;
color: #a8abb2;
margin-top: 100px;
}
.content {
display: flex;
flex-direction: column;
......
......@@ -8,7 +8,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -684,14 +684,24 @@ const handleSelectChange = (father, child) => {
}
break
case 'isBacktrack':
// 选是,展示日期
if (form.value[father.key][child.key] == '1') {
resetShow('policyEffectiveDate', true)
// form.value[father.key]['policyEffectiveDate'] = ''
} else {
resetShow('policyEffectiveDate', false)
}
break
default:
break
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
const handleEditStatus = status => {
editStatus.value = status
// 深拷贝原始数据
const processedData = JSON.parse(JSON.stringify(processedProductData.value))
for (const section of processedData) {
......@@ -867,6 +877,8 @@ const setFormValue = (obj, formData) => {
const processedData = JSON.parse(JSON.stringify(formData))
for (const section of processedData) {
for (const key in newForm) {
console.log('key', key)
//回显的数据有的没填写就会是null,收集表单值得时候和dom对应不上,对于null值得项要根据section得keyType给form正确得数据类型
if (!newForm[key]) {
if (section.keyType == 'Array') {
......@@ -885,6 +897,18 @@ const setFormValue = (obj, formData) => {
section.data.push(newChildren)
}
for (const field of section.data) {
if (key == 'apiProductPlanMainInfoDto') {
for (const key2 in newForm[key]) {
if (
field.key == 'policyEffectiveDate' &&
newForm[key][field.key] &&
newForm[key]['isBacktrack'] == '1'
) {
field.show = true
}
}
}
if (section.child == 'yes' && field.children && field.children.length > 0) {
for (const child of field.children) {
if (props.idsObj.appointmentBizId) {
......@@ -936,6 +960,9 @@ const handleSubmitForm = () => {
for (const key in result) {
if (isObject(result[key])) {
for (const key2 in result[key]) {
if (key2 == 'isBacktrack' && result[key][key2] == '0') {
result[key]['policyEffectiveDate'] = null
}
if (key2 == 'policyEffectiveDate' && result[key][key2]) {
result[key][key2] = proxy.formatToDateTime(result[key][key2])
}
......@@ -992,10 +1019,11 @@ const submitForm = saveType => {
console.log('====================================')
console.log('提交的数据', result)
console.log('====================================')
// return
if (props.idsObj.appointmentBizId) {
editProductPlanInfo(result).then(res => {
if (res.code == 200) {
handleEditStatus()
handleEditStatus(true)
proxy.$message.success('产品计划修改成功')
emit('handleSuccessEdit')
}
......@@ -1034,11 +1062,7 @@ watch(
}
}
)
if (props.formStatus == 'appointmentAdd') {
setTimeout(() => {
processFormData()
}, 1000)
}
// 暴露给父组件
defineExpose({
handleSubmitForm,
......
......@@ -11,7 +11,7 @@
v-if="props.idsObj.appointmentBizId"
type="primary"
icon="EditPen"
@click="handleEditStatus"
@click="handleEditStatus(!editStatus)"
>编辑</el-button
>
</div>
......@@ -270,8 +270,6 @@ const phoneMenuList = ref([
}
])
const phoneQuickList = ref([])
const personalObj = ref({}) //存储个人key
const companyObj = ref({}) //存储公司key
const commonObj = ref({}) //存储个人和公司的公共key
const deleteKeyList = ref([
'objType',
......@@ -450,8 +448,6 @@ const processFormData = async obj => {
//弹出右侧抽屉
const handleFoucs = child => {
if (child.disabled) return
console.log('saveKey.value', saveKey.value)
console.log('child', child)
drawerInfo.value = JSON.parse(JSON.stringify(child))
switch (child.drawerType) {
......@@ -617,8 +613,8 @@ const handleSelectChange = (father, child) => {
}
}
// 改变编辑状态
const handleEditStatus = () => {
editStatus.value = !editStatus.value
const handleEditStatus = status => {
editStatus.value = status
console.log('触发了编辑状态', editStatus.value)
// 深拷贝原始数据
......@@ -686,15 +682,10 @@ const submitForm = () => {
proxy.$refs['secondHolderFormRef'].validate((valid, fields) => {
if (valid) {
let submitObj = handleFormValues()
console.log('====================================')
console.log('submitObj', submitObj)
console.log('====================================')
// return
if (props.idsObj.appointmentBizId) {
editSecondHolderInfo(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus()
handleEditStatus(true)
proxy.$message.success('第二持有人修改成功')
emit('handleSuccessEdit')
}
......@@ -742,6 +733,10 @@ watch(
exportValue: null
})
}, 500)
// processFormData({
// domdata: secondHolderDomData,
// exportValue: null
// })
}
}
)
......@@ -806,7 +801,7 @@ defineExpose({
}
}
.tabButton {
box-shadow: 0 -1px 14px #00000014;
/* box-shadow: 0 -1px 14px #00000014; */
width: 100%;
display: flex;
align-items: center;
......
......@@ -16,12 +16,6 @@
v-show="showSearch"
label-width="100px"
>
<el-form-item
><el-button type="primary" icon="Plus" @click="handleAdd"
>上传EXECL</el-button
></el-form-item
>
<el-form-item label="确认预约时间" style="width: 300px">
<el-date-picker
v-model="dateRange"
......@@ -144,22 +138,31 @@
<!-- 展示行程单详情 -->
<el-dialog v-model="dialogVisible" width="70%">
<div class="dialogBox">
<div class="dialogTitle">
{{ appointmentSummeryInfo.apiAppointmentInfoDto.creatorName }} - 香港行程安排
</div>
<div class="dialogTitle">香港行程安排</div>
<div class="dialogItem" v-for="item in detailData">
<div class="dialogItemTitle">{{ item.title }}</div>
<DetailPanel
:data="item.data"
:row-span="24"
col-gap="16px"
col-gap="10px"
label-width="120px"
row-height="45px"
:show-col-border="true"
/>
</div>
<div class="remarkBOx">
<div class="remarkTitle">备注</div>
<div class="remarkContent" v-if="appointmentSummeryInfo.remark">
{{ appointmentSummeryInfo.remark }}
</div>
<div class="remarkEmpty" v-else>暂无备注</div>
</div>
<div class="exprotBtn">
<el-button :loading="exportLoading" type="primary" @click="handleExprotPdf"
<el-button
:loading="exportLoading"
type="primary"
style="margin-top: 15px"
@click="handleExprotPdf"
>下载行程单</el-button
>
</div>
......@@ -176,7 +179,7 @@ import {
getAppointmentList,
getAppointmentExprot,
delSigleAppointment,
getAppointmentDetail,
getItineraryDetail,
getItineraryExprot
} from '@/api/sign/appointment'
import useUserStore from '@/store/modules/user'
......@@ -209,7 +212,11 @@ const data = reactive({
})
const { queryParams, form, rules } = toRefs(data)
const { bx_currency_type, csf_ap_status } = proxy.useDict('bx_currency_type', 'csf_ap_status')
const { bx_currency_type, csf_ap_status, csf_ap_meeting_point } = proxy.useDict(
'bx_currency_type',
'csf_ap_status',
'csf_ap_meeting_point'
)
const handleExprotPdf = () => {
exportLoading.value = true
getItineraryExprot(appointmentSummeryInfo.value.apiAppointmentInfoDto.appointmentBizId).then(
......@@ -222,7 +229,7 @@ const handleExprotPdf = () => {
// 设置下载文件名(重要)
// 从URL中提取文件名,或者使用返回的文件名
const fileName = `${appointmentSummeryInfo.value.apiAppointmentInfoDto.creatorName} - 香港行程安排.pdf`
const fileName = `香港行程安排.pdf`
link.download = fileName
// 触发下载
......@@ -238,13 +245,18 @@ const handleExprotPdf = () => {
}
// 获取预约详情
function getAppointmentInfo(appointmentBizId) {
getAppointmentDetail(appointmentBizId).then(res => {
getItineraryDetail(appointmentBizId).then(res => {
if (res.code == 200) {
appointmentSummeryInfo.value = res.data
let appointment = appointmentSummeryInfo.value.apiAppointmentInfoDto
let insurant = appointmentSummeryInfo.value.apiInsurantInfoDto
let productPlan = appointmentSummeryInfo.value.apiProductPlanInfoDto.apiProductPlanMainInfoDto
productPlan.total = (productPlan.paymentTerm * productPlan.eachIssuePremium).toFixed(2)
csf_ap_meeting_point._object.csf_ap_meeting_point.forEach(item => {
if (item.value == appointmentSummeryInfo.value.meetingPoint) {
appointmentSummeryInfo.value.meetingPoint = item.label
}
})
if (appointmentSummeryInfo.value.total) {
appointmentSummeryInfo.value.total = Number(appointmentSummeryInfo.value.total).toFixed(2)
}
detailData.value = [
{
title: '集合信息',
......@@ -252,17 +264,17 @@ function getAppointmentInfo(appointmentBizId) {
// 第一行:2列布局(各占12)
{
label: '集合时间',
value: appointment.arrivalTime,
value: appointmentSummeryInfo.value.arrivalTime,
span: 12 // 占12/24
},
{
label: '集合地点',
value: appointment.meetingPoint,
value: appointmentSummeryInfo.value.meetingPoint,
span: 12 // 占12/24
},
{
label: '意向地点',
value: appointment.signingAddress,
value: appointmentSummeryInfo.value.signingAddress,
span: 12 // 占12/24
}
]
......@@ -273,13 +285,14 @@ function getAppointmentInfo(appointmentBizId) {
// 第一行:2列布局(各占12)
{
label: '姓名',
value: appointment.businessRepresentName1,
value: appointmentSummeryInfo.value.businessRepresentName1,
span: 12 // 占12/24
},
{
label: '联系电话',
value: appointment.businessRepresentMobile1
? appointment.businessRepresentMobile1Code + appointment.businessRepresentMobile1
value: appointmentSummeryInfo.value.businessRepresentMobile1
? appointmentSummeryInfo.value.businessRepresentMobile1Code +
appointmentSummeryInfo.value.businessRepresentMobile1
: '-',
span: 12 // 占12/24
}
......@@ -291,43 +304,42 @@ function getAppointmentInfo(appointmentBizId) {
// 第一行:2列布局(各占12)
{
label: '咨询人',
value: appointment.arrivalTime,
value: appointmentSummeryInfo.value.name,
span: 12 // 占12/24
},
{
label: '受保人',
value: insurant.insurantName,
value: appointmentSummeryInfo.value.insurantName,
span: 12 // 占12/24
},
{
label: '意向缴费年期',
value: productPlan.paymentTerm,
value: appointmentSummeryInfo.value.paymentTerm,
span: 12 // 占12/24
},
{
label: '保单费',
value: productPlan.policyFee || '-',
label: '保单费',
value: appointmentSummeryInfo.value.policyFee || '-',
span: 12 // 占12/24
},
{
label: '币种',
value: productPlan.currency,
value: appointmentSummeryInfo.value.currency,
span: 12 // 占12/24
},
{
label: '意向咨询产品',
value: productPlan.productName,
value: appointmentSummeryInfo.value.productName,
span: 12 // 占12/24
},
{
label: '合计金额',
value: productPlan.total,
value: appointmentSummeryInfo.value.total,
span: 12 // 占12/24
}
]
}
]
console.log('detailData.value', detailData.value)
dialogVisible.value = true
}
......@@ -381,7 +393,7 @@ const goToAppointment = type => {
if (type == 'previousStep') {
router.push({ path: '/sign/FnaList' })
} else if (type == 'nextStep') {
router.push({ path: '/sign/appointment' })
router.push({ path: '/sign/underwritingMain' })
}
}
/** 查询租户列表 */
......@@ -505,6 +517,24 @@ getList()
font-size: 16px;
font-weight: 500;
margin: 10px 0;
color: #333;
}
}
.remarkBOx {
padding: 10px;
box-sizing: border-box;
background-color: #f5f5f5;
border-radius: 5px;
.remarkTitle {
font-size: 16px;
}
.remarkEmpty {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
color: #999;
margin-bottom: 10px;
}
}
.exprotBtn {
......
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