Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf-front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yuzhenWang
yd-csf-front
Commits
e6731b25
Commit
e6731b25
authored
Jan 30, 2026
by
yuzhenWang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-20250827wyz-写业务' into 'test'
导入发布测试 See merge request
!53
parents
edf7624e
231d894f
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
950 additions
and
620 deletions
+950
-620
src/api/common.js
+8
-0
src/formJson/customer.js
+4
-4
src/formJson/productPlan.js
+241
-212
src/views/sign/FnaList/components/customer.vue
+48
-12
src/views/sign/FnaList/edit.vue
+103
-59
src/views/sign/appointment/appointmentEdit.vue
+124
-209
src/views/sign/appointment/components/appointmentInfo.vue
+340
-111
src/views/sign/appointment/components/beneficiaryInfo.vue
+13
-7
src/views/sign/appointment/components/productPlan.vue
+54
-3
src/views/sign/appointment/components/secondHolderInfo.vue
+15
-3
No files found.
src/api/common.js
View file @
e6731b25
...
@@ -213,3 +213,11 @@ export function downloadCompressedFile(data) {
...
@@ -213,3 +213,11 @@ export function downloadCompressedFile(data) {
method
:
'post'
method
:
'post'
})
})
}
}
// 获取保险对账公司列表
export
function
insuranceReconciliationCompany
(
data
)
{
return
request
({
url
:
'/insurance/base/api/insuranceReconciliationCompany/page'
,
data
:
data
,
method
:
'post'
})
}
src/formJson/customer.js
View file @
e6731b25
...
@@ -202,7 +202,7 @@ const customer = [
...
@@ -202,7 +202,7 @@ const customer = [
label
:
'婚姻状况'
,
label
:
'婚姻状况'
,
key
:
'maritalStatus'
,
key
:
'maritalStatus'
,
domType
:
'Select'
,
domType
:
'Select'
,
required
:
tru
e
,
required
:
fals
e
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请选择'
,
placeholder
:
'请选择'
,
dictType
:
'csf_marriage'
,
dictType
:
'csf_marriage'
,
...
@@ -216,7 +216,7 @@ const customer = [
...
@@ -216,7 +216,7 @@ const customer = [
label
:
'教育程度'
,
label
:
'教育程度'
,
key
:
'educationLevel'
,
key
:
'educationLevel'
,
domType
:
'Select'
,
domType
:
'Select'
,
required
:
tru
e
,
required
:
fals
e
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请选择'
,
placeholder
:
'请选择'
,
dictType
:
'csf_education'
,
dictType
:
'csf_education'
,
...
@@ -230,7 +230,7 @@ const customer = [
...
@@ -230,7 +230,7 @@ const customer = [
label
:
'是否退休'
,
label
:
'是否退休'
,
key
:
'isRetirement'
,
key
:
'isRetirement'
,
domType
:
'Select'
,
domType
:
'Select'
,
required
:
tru
e
,
required
:
fals
e
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请选择'
,
placeholder
:
'请选择'
,
dictType
:
'sys_no_yes'
,
dictType
:
'sys_no_yes'
,
...
@@ -434,7 +434,7 @@ const customer = [
...
@@ -434,7 +434,7 @@ const customer = [
key
:
'certificateAddress'
,
key
:
'certificateAddress'
,
domType
:
'Input'
,
domType
:
'Input'
,
inputType
:
'text'
,
inputType
:
'text'
,
required
:
tru
e
,
required
:
fals
e
,
maxLength
:
20
,
maxLength
:
20
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请输入'
,
placeholder
:
'请输入'
,
...
...
src/formJson/productPlan.js
View file @
e6731b25
...
@@ -168,6 +168,21 @@ const productPlan = [
...
@@ -168,6 +168,21 @@ const productPlan = [
lg
:
8
//栅格布局份数
lg
:
8
//栅格布局份数
},
},
{
{
label
:
'预缴年期'
,
key
:
'prepaymentPeriod'
,
domType
:
'Input'
,
inputType
:
'number'
,
required
:
false
,
maxLength
:
20
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
false
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'是否追溯'
,
label
:
'是否追溯'
,
key
:
'isTraceable'
,
key
:
'isTraceable'
,
domType
:
'Select'
,
domType
:
'Select'
,
...
@@ -238,87 +253,8 @@ const productPlan = [
...
@@ -238,87 +253,8 @@ const productPlan = [
lg
:
8
//栅格布局份数
lg
:
8
//栅格布局份数
},
},
{
{
label
:
'保单额度(重疾)'
,
label
:
'出单经纪公司'
,
key
:
'sumInsured'
,
key
:
'reconciliationCompanyName'
,
domType
:
'Input'
,
inputType
:
'number'
,
required
:
false
,
maxLength
:
20
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
false
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
}
]
},
//附加险
{
showMoudle
:
true
,
//模块是否展示
fatherTitle
:
'附加计划'
,
keyType
:
'Array'
,
//用于表单收集值时,判断是数组还是对象
key
:
'apiProductPlanAdditionalInfoDtoList'
,
anchorKey
:
'apiProductPlanAdditionalInfoDtoList'
,
fatherRequired
:
true
,
//父级必填,代表个人资料这个模块有必填项
addChildren
:
true
,
addChildrenTxt
:
'新增附加险'
,
showTable
:
true
,
//是否展示表格
data
:
[],
columns
:
[
{
label
:
'产品名称'
,
prop
:
'productLaunchNameValue'
,
type
:
'text'
},
{
label
:
'供款期数'
,
prop
:
'issueNumber'
,
type
:
'text'
},
{
label
:
'保障年期'
,
prop
:
'guaranteePeriod'
,
type
:
'text'
},
{
label
:
'保单币种'
,
prop
:
'policyCurrency'
,
type
:
'text'
},
{
label
:
'保单额度'
,
prop
:
'sumInsured'
,
type
:
'text'
},
{
label
:
'每期保费'
,
prop
:
'eachIssuePremium'
,
type
:
'text'
},
{
label
:
'保障级别'
,
prop
:
'protectionLevel'
,
type
:
'text'
},
{
label
:
'自付额'
,
prop
:
'deductibles'
,
type
:
'text'
},
{
label
:
'附加保障'
,
prop
:
'additionalSafeguards'
,
type
:
'text'
}
],
// 弹窗表单的配置
formItem
:
[
{
label
:
'产品名称'
,
value
:
''
,
key
:
'productLaunchName'
,
domType
:
'SearchSelect'
,
domType
:
'SearchSelect'
,
required
:
false
,
required
:
false
,
maxLength
:
30
,
maxLength
:
30
,
...
@@ -331,61 +267,12 @@ const productPlan = [
...
@@ -331,61 +267,12 @@ const productPlan = [
lg
:
8
//栅格布局份数
lg
:
8
//栅格布局份数
},
},
{
{
label
:
'供款期数'
,
key
:
'issueNumber'
,
value
:
''
,
domType
:
'Input'
,
required
:
false
,
disabled
:
false
,
placeholder
:
'请选择'
,
dictType
:
'issueNumber'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'保障年期(若是终身,输入999)'
,
key
:
'guaranteePeriod'
,
value
:
''
,
domType
:
'Input'
,
inputType
:
'number'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'保单币种'
,
key
:
'policyCurrency'
,
value
:
''
,
domType
:
'Select'
,
inputType
:
'text'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
dictType
:
'bx_currency_type'
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'保单额度(重疾)'
,
label
:
'保单额度(重疾)'
,
key
:
'sumInsured'
,
key
:
'sumInsured'
,
value
:
''
,
domType
:
'Input'
,
domType
:
'Input'
,
inputType
:
'number'
,
inputType
:
'number'
,
required
:
false
,
required
:
false
,
maxLength
:
30
0
,
maxLength
:
2
0
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请输入'
,
placeholder
:
'请输入'
,
show
:
false
,
show
:
false
,
...
@@ -393,89 +280,231 @@ const productPlan = [
...
@@ -393,89 +280,231 @@ const productPlan = [
labelWidth
:
'120px'
,
//标签宽度
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'每期保费'
,
key
:
'eachIssuePremium'
,
value
:
''
,
domType
:
'Input'
,
inputType
:
'number'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'保障地区'
,
key
:
'guaranteeRegion'
,
value
:
''
,
domType
:
'Input'
,
inputType
:
'text'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'保障级别'
,
value
:
''
,
key
:
'protectionLevel'
,
domType
:
'Input'
,
inputType
:
'text'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'自付额'
,
value
:
''
,
key
:
'deductibles'
,
domType
:
'Input'
,
inputType
:
'number'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
lg
:
8
//栅格布局份数
},
{
label
:
'附加保障'
,
value
:
''
,
key
:
'additionalSafeguards'
,
domType
:
'Input'
,
inputType
:
'textarea'
,
required
:
false
,
maxLength
:
300
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelWidth
:
'120px'
,
//标签宽度
sm
:
24
,
//栅格布局份数
lg
:
24
//栅格布局份数
}
}
]
]
}
}
//附加险
// {
// showMoudle: true, //模块是否展示
// fatherTitle: '附加计划',
// keyType: 'Array', //用于表单收集值时,判断是数组还是对象
// key: 'apiProductPlanAdditionalInfoDtoList',
// anchorKey: 'apiProductPlanAdditionalInfoDtoList',
// fatherRequired: true, //父级必填,代表个人资料这个模块有必填项
// addChildren: true,
// addChildrenTxt: '新增附加险',
// showTable: true, //是否展示表格
// data: [],
// columns: [
// {
// label: '产品名称',
// prop: 'productLaunchNameValue',
// type: 'text'
// },
// {
// label: '供款期数',
// prop: 'issueNumber',
// type: 'text'
// },
// {
// label: '保障年期',
// prop: 'guaranteePeriod',
// type: 'text'
// },
// {
// label: '保单币种',
// prop: 'policyCurrency',
// type: 'text'
// },
// {
// label: '保单额度',
// prop: 'sumInsured',
// type: 'text'
// },
// {
// label: '每期保费',
// prop: 'eachIssuePremium',
// type: 'text'
// },
// {
// label: '保障级别',
// prop: 'protectionLevel',
// type: 'text'
// },
// {
// label: '自付额',
// prop: 'deductibles',
// type: 'text'
// },
// {
// label: '附加保障',
// prop: 'additionalSafeguards',
// type: 'text'
// }
// ],
// // 弹窗表单的配置
// formItem: [
// {
// label: '产品名称',
// value: '',
// key: 'productLaunchName',
// domType: 'SearchSelect',
// required: false,
// maxLength: 30,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// labelPosition: 'top', //标签的位置
// lg: 8 //栅格布局份数
// },
// {
// label: '供款期数',
// key: 'issueNumber',
// value: '',
// domType: 'Input',
// required: false,
// disabled: false,
// placeholder: '请选择',
// dictType: 'issueNumber',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '保障年期(若是终身,输入999)',
// key: 'guaranteePeriod',
// value: '',
// domType: 'Input',
// inputType: 'number',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '保单币种',
// key: 'policyCurrency',
// value: '',
// domType: 'Select',
// inputType: 'text',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// dictType: 'bx_currency_type',
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '保单额度(重疾)',
// key: 'sumInsured',
// value: '',
// domType: 'Input',
// inputType: 'number',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: false,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '每期保费',
// key: 'eachIssuePremium',
// value: '',
// domType: 'Input',
// inputType: 'number',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '保障地区',
// key: 'guaranteeRegion',
// value: '',
// domType: 'Input',
// inputType: 'text',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '保障级别',
// value: '',
// key: 'protectionLevel',
// domType: 'Input',
// inputType: 'text',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '自付额',
// value: '',
// key: 'deductibles',
// domType: 'Input',
// inputType: 'number',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 12, //栅格布局份数
// lg: 8 //栅格布局份数
// },
// {
// label: '附加保障',
// value: '',
// key: 'additionalSafeguards',
// domType: 'Input',
// inputType: 'textarea',
// required: false,
// maxLength: 300,
// disabled: false,
// placeholder: '请输入',
// show: true,
// labelPosition: 'top', //标签的位置
// labelWidth: '120px', //标签宽度
// sm: 24, //栅格布局份数
// lg: 24 //栅格布局份数
// }
// ]
// }
]
]
export
default
productPlan
export
default
productPlan
src/views/sign/FnaList/components/customer.vue
View file @
e6731b25
...
@@ -353,7 +353,8 @@ const props = defineProps({
...
@@ -353,7 +353,8 @@ const props = defineProps({
tabSource
:
{
type
:
String
,
default
:
''
},
tabSource
:
{
type
:
String
,
default
:
''
},
idsObj
:
{
type
:
Object
,
default
:
()
=>
({})
},
//引用这个组件的页面来源,用于逻辑判断
idsObj
:
{
type
:
Object
,
default
:
()
=>
({})
},
//引用这个组件的页面来源,用于逻辑判断
apiPolicyholderInfoDto
:
{
type
:
Object
,
default
:
()
=>
({})
},
//投保人编辑状态详情
apiPolicyholderInfoDto
:
{
type
:
Object
,
default
:
()
=>
({})
},
//投保人编辑状态详情
apiInsurantInfoDto
:
{
type
:
Object
,
default
:
()
=>
({})
}
//受保人编辑状态详情
apiInsurantInfoDto
:
{
type
:
Object
,
default
:
()
=>
({})
},
//受保人编辑状态详情
isExportAppointment
:
{
type
:
Boolean
,
default
:
false
}
//是否导入
})
})
const
emit
=
defineEmits
([
'handleSuccess'
])
const
emit
=
defineEmits
([
'handleSuccess'
])
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
...
@@ -692,7 +693,17 @@ const processFormData = async () => {
...
@@ -692,7 +693,17 @@ const processFormData = async () => {
}
else
if
(
props
.
activeName
!==
'insurantInfo'
&&
section
.
key
==
'policyholderRel'
)
{
}
else
if
(
props
.
activeName
!==
'insurantInfo'
&&
section
.
key
==
'policyholderRel'
)
{
section
.
showMoudle
=
false
section
.
showMoudle
=
false
}
}
if
(
props
.
activeName
==
'insurantInfo'
)
{
if
(
form
.
value
[
'policyholderRel'
]
&&
form
.
value
[
'policyholderRel'
]
==
'MYSELF'
)
{
if
(
section
.
key
==
'policyholderRel'
)
{
section
.
showMoudle
=
true
}
else
{
section
.
showMoudle
=
false
}
}
else
{
section
.
showMoudle
=
true
}
}
if
(
section
.
data
)
{
if
(
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
if
(
field
.
dictType
)
{
if
(
field
.
dictType
)
{
...
@@ -731,7 +742,8 @@ const processFormData = async () => {
...
@@ -731,7 +742,8 @@ const processFormData = async () => {
}
else
if
(
}
else
if
(
props
.
customerBizId
&&
props
.
customerBizId
&&
(
props
.
tabSource
==
'policyholder'
||
props
.
tabSource
==
'insurantInfo'
)
&&
(
props
.
tabSource
==
'policyholder'
||
props
.
tabSource
==
'insurantInfo'
)
&&
!
props
.
idsObj
.
appointmentBizId
!
props
.
idsObj
.
appointmentBizId
&&
!
props
.
isExportAppointment
)
{
)
{
//是投保人/受保人但是新增预约 需要引用客户资料的值
//是投保人/受保人但是新增预约 需要引用客户资料的值
getCustomerInfo
(
props
.
customerBizId
,
processedData
)
getCustomerInfo
(
props
.
customerBizId
,
processedData
)
...
@@ -742,6 +754,9 @@ const processFormData = async () => {
...
@@ -742,6 +754,9 @@ const processFormData = async () => {
// 投保人回显值
// 投保人回显值
setFormValue
(
props
.
apiInsurantInfoDto
,
processedData
)
setFormValue
(
props
.
apiInsurantInfoDto
,
processedData
)
}
else
{
}
else
{
if
(
props
.
tabSource
==
'customer'
)
{
form
.
value
.
smokingStatus
=
'0'
}
processedCustomerData
.
value
=
oldCustomerData
.
value
=
processedData
processedCustomerData
.
value
=
oldCustomerData
.
value
=
processedData
}
}
}
}
...
@@ -1031,9 +1046,8 @@ const setFormValue = (obj, formData, exportValue) => {
...
@@ -1031,9 +1046,8 @@ const setFormValue = (obj, formData, exportValue) => {
}
}
if
(
addressObj
)
{
if
(
addressObj
)
{
form
.
value
[
form
.
value
[
field
.
key
]
=
field
.
key
`
${
addressObj
.
region
}
${
addressObj
.
city
}
${
addressObj
.
street
}
${
addressObj
.
location
}
`
]
=
`
${
addressObj
.
region
}
${
addressObj
.
city
}
${
addressObj
.
street
}
${
addressObj
.
location
}
`
addressObj
.
addressString
=
`
${
addressObj
.
region
}${
addressObj
.
city
}${
addressObj
.
street
}${
addressObj
.
location
}
`
addressObj
.
addressString
=
`
${
addressObj
.
region
}${
addressObj
.
city
}${
addressObj
.
street
}${
addressObj
.
location
}
`
addressObj
.
objType
=
field
.
drawerType
addressObj
.
objType
=
field
.
drawerType
saveKey
.
value
[
field
.
key
]
=
addressObj
saveKey
.
value
[
field
.
key
]
=
addressObj
...
@@ -1176,6 +1190,8 @@ const handleFormValues = source => {
...
@@ -1176,6 +1190,8 @@ const handleFormValues = source => {
}
else
{
}
else
{
submitObj
=
{
...
form
.
value
}
submitObj
=
{
...
form
.
value
}
}
}
console
.
log
(
'投保人form'
,
submitObj
)
let
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
processedCustomerData
.
value
))
let
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
processedCustomerData
.
value
))
return
new
Promise
(
async
resolve
=>
{
return
new
Promise
(
async
resolve
=>
{
// 如果没有点击受保人这个tab页就进行填写提醒,
// 如果没有点击受保人这个tab页就进行填写提醒,
...
@@ -1190,11 +1206,6 @@ const handleFormValues = source => {
...
@@ -1190,11 +1206,6 @@ const handleFormValues = source => {
if
(
processedData
.
length
>
0
)
{
if
(
processedData
.
length
>
0
)
{
customerFormRef
.
value
.
validate
((
valid
,
fields
)
=>
{
customerFormRef
.
value
.
validate
((
valid
,
fields
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
source
==
'insuredInfoRef'
)
{
console
.
log
(
'===================================='
)
console
.
log
(
'submitObj'
,
form
.
value
[
'policyholderRel'
])
console
.
log
(
'===================================='
)
}
let
addressList
=
[]
let
addressList
=
[]
if
(
submitObj
[
'birthday'
])
{
if
(
submitObj
[
'birthday'
])
{
if
(
source
==
'insuredInfoRef'
||
source
==
'policyHolderInfoRef'
)
{
if
(
source
==
'insuredInfoRef'
||
source
==
'policyHolderInfoRef'
)
{
...
@@ -1289,9 +1300,13 @@ const handleFormValues = source => {
...
@@ -1289,9 +1300,13 @@ const handleFormValues = source => {
resolve
(
errorFields
.
value
.
length
==
0
?
submitObj
:
null
)
resolve
(
errorFields
.
value
.
length
==
0
?
submitObj
:
null
)
}
else
{
}
else
{
errorFields
.
value
=
getInvalidFields
(
fields
)
errorFields
.
value
=
getInvalidFields
(
fields
)
console
.
log
(
'===================================='
)
console
.
log
(
'222222'
,
errorFields
.
value
)
console
.
log
(
'===================================='
)
if
(
errorFields
.
value
.
length
>
0
)
{
if
(
errorFields
.
value
.
length
>
0
)
{
proxy
.
$message
.
error
(
errorFields
.
value
[
0
].
message
)
proxy
.
$message
.
error
(
errorFields
.
value
[
0
].
message
)
}
}
resolve
(
undefined
)
resolve
(
undefined
)
}
}
})
})
...
@@ -1306,6 +1321,8 @@ const handleFormValues = source => {
...
@@ -1306,6 +1321,8 @@ const handleFormValues = source => {
}
else
{
}
else
{
// 新增状态
// 新增状态
// 因为这两个在同一个大提交里,所以要判断是哪个提交,方便这两个都有自己独立的提交验证
// 因为这两个在同一个大提交里,所以要判断是哪个提交,方便这两个都有自己独立的提交验证
console
.
log
(
'走这里了'
)
resolve
(
undefined
)
resolve
(
undefined
)
}
}
}
}
...
@@ -1330,6 +1347,8 @@ watch(
...
@@ -1330,6 +1347,8 @@ watch(
}
else
if
(
props
.
activeName
==
'insurantInfo'
)
{
}
else
if
(
props
.
activeName
==
'insurantInfo'
)
{
insuredForm
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
newVal
))
insuredForm
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
newVal
))
}
}
console
.
log
(
'form值变化policyholderForm'
,
policyholderForm
.
value
)
console
.
log
(
'form值变化insuredForm'
,
insuredForm
.
value
)
},
},
{
immediate
:
true
,
deep
:
true
}
{
immediate
:
true
,
deep
:
true
}
)
)
...
@@ -1364,11 +1383,28 @@ watch(
...
@@ -1364,11 +1383,28 @@ watch(
editStatus
.
value
=
newVal
editStatus
.
value
=
newVal
}
}
)
)
//导入预约单成功后,要重新渲染页面回显值
watch
(
()
=>
props
.
isExportAppointment
,
newVal
=>
{
console
.
log
(
'导入发生变化'
,
newVal
)
if
(
newVal
)
{
if
(
props
.
tabSource
==
'policyholder'
)
{
// 投保人回显值
setFormValue
(
props
.
apiPolicyholderInfoDto
,
processedCustomerData
.
value
)
}
else
if
(
props
.
tabSource
==
'insurantInfo'
)
{
// 受保人回显值
setFormValue
(
props
.
apiInsurantInfoDto
,
processedCustomerData
.
value
)
}
}
}
)
// 暴露给父组件
// 暴露给父组件
defineExpose
({
defineExpose
({
handleFormValues
,
handleFormValues
,
handleEditStatus
,
handleEditStatus
,
get
RawForm
:
()
=>
JSON
.
parse
(
JSON
.
stringify
(
f
orm
.
value
))
get
InsuredForm
:
()
=>
JSON
.
parse
(
JSON
.
stringify
(
insuredF
orm
.
value
))
})
})
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/sign/FnaList/edit.vue
View file @
e6731b25
...
@@ -10,69 +10,114 @@
...
@@ -10,69 +10,114 @@
<div
class=
"status"
>
{{
processInfo
.
status
||
'--'
}}
</div>
<div
class=
"status"
>
{{
processInfo
.
status
||
'--'
}}
</div>
<div
class=
"time"
>
<div
class=
"time"
>
<span
class=
"iconfont icon-yanqiweiwancheng"
></span>
<span
class=
"iconfont icon-yanqiweiwancheng"
></span>
<span>
{{
parseTime
(
processInfo
.
createTime
)
}}
由
{{
<span
>
{{
parseTime
(
processInfo
.
createTime
)
}}
由
{{
processInfo
.
customerName
||
'--'
processInfo
.
customerName
||
'--'
}}
创建
</span>
}}
创建
</span
>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"tabsBox"
>
<div
class=
"tabsBox"
>
<el-tabs
v-model=
"activeName"
class=
"demo-tabs"
:before-leave=
"beforeTabLeave"
ref=
"tabPaneRef"
>
<el-tabs
<el-tab-pane
v-for=
"(tab, tIndex) in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
v-model=
"activeName"
class=
"demo-tabs"
:before-leave=
"beforeTabLeave"
ref=
"tabPaneRef"
>
<el-tab-pane
v-for=
"(tab, tIndex) in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
<!-- 注意tabPaneBox这个类名与子组件的锚点定位相关,不能轻易改动 -->
<!-- 注意tabPaneBox这个类名与子组件的锚点定位相关,不能轻易改动 -->
<div
:class=
"
{ tabPaneBox: activeName !== 'appointment' }">
<div
:class=
"
{ tabPaneBox: activeName !== 'appointment' }">
<div
v-if=
"tab.name === 'overview'"
class=
"overviewBox"
>
<div
v-if=
"tab.name === 'overview'"
class=
"overviewBox"
>
<div
class=
"oneItem"
v-for=
"item in tabsList.filter(item => item.id !== -1 && item.status)"
<div
:key=
"item.id"
@
click=
"handleStep(item)"
>
class=
"oneItem"
<div
class=
"circle"
:class=
"
{
v-for=
"item in tabsList.filter(item => item.id !== -1 && item.status)"
:key=
"item.id"
@
click=
"handleStep(item)"
>
<div
class=
"circle"
:class=
"
{
finfishCircle: item.status == '1',
finfishCircle: item.status == '1',
unFinishCircle: item.status == '0'
unFinishCircle: item.status == '0'
}">
}"
>
<el-icon
v-if=
"item.status == '1'"
>
<el-icon
v-if=
"item.status == '1'"
>
<Check
/>
<Check
/>
</el-icon>
</el-icon>
<span
v-else
>
{{
item
.
id
}}
</span>
<span
v-else
>
{{
item
.
id
}}
</span>
</div>
</div>
<div
class=
"title"
:class=
"
{
<div
class=
"title"
:class=
"
{
finfishTitle: item.status == '1',
finfishTitle: item.status == '1',
unFinishTitle: item.status == '0'
unFinishTitle: item.status == '0'
}">
}"
>
{{
item
.
label
}}
{{
item
.
label
}}
</div>
</div>
<div
class=
"status"
:class=
"
{
<div
class=
"status"
:class=
"
{
finfishStatus: item.status == '1',
finfishStatus: item.status == '1',
unFinishStatus: item.status == '0'
unFinishStatus: item.status == '0'
}">
}"
>
{{
item
.
status
==
'1'
?
'已完成'
:
'未完成'
}}
{{
item
.
status
==
'1'
?
'已完成'
:
'未完成'
}}
</div>
</div>
<div
class=
"operation"
>
<div
class=
"operation"
>
<el-icon
class=
"editIcon"
v-if=
"item.status == '0'"
>
<el-icon
class=
"editIcon"
v-if=
"item.status == '0'"
>
<EditPen
/>
<EditPen
/>
</el-icon>
</el-icon>
<div
:class=
"
{
<div
:class=
"
{
finfishOperation: item.status == '1',
finfishOperation: item.status == '1',
unFinishOperation: item.status == '0'
unFinishOperation: item.status == '0'
}">
}"
>
{{
item
.
status
==
'1'
?
'点击查看详情'
:
'去填写'
}}
{{
item
.
status
==
'1'
?
'点击查看详情'
:
'去填写'
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<Customer
v-if=
"tab.name === 'customer'"
:activeName=
"activeName"
<Customer
:customerBizId=
"processInfo.customerBizId"
@
handleSuccess=
"handleSuccess"
v-if=
"tab.name === 'customer'"
:tabIndex=
"tabsList.findIndex(t => t.name === 'customer')"
anchorContainer=
".tabPaneBox"
:activeName=
"activeName"
tabSource=
"customer"
/>
:customerBizId=
"processInfo.customerBizId"
@
handleSuccess=
"handleSuccess"
:tabIndex=
"tabsList.findIndex(t => t.name === 'customer')"
anchorContainer=
".tabPaneBox"
tabSource=
"customer"
/>
<div
v-if=
"tab.name === 'fnaform'"
>
<div
v-if=
"tab.name === 'fnaform'"
>
<FanForm
:activeName=
"activeName"
:fnaFormBizId=
"processInfo.fnaFormBizId"
<FanForm
:customerBizId=
"processInfo.customerBizId"
:dictTypeLists=
"dictTypeLists"
:customerInfo=
"customerInfo"
:activeName=
"activeName"
@
handleSuccess=
"handleSuccess"
:tabIndex=
"tabsList.findIndex(t => t.name === 'fnaform')"
:fnaFormBizId=
"processInfo.fnaFormBizId"
anchorContainer=
".tabPaneBox"
tabSource=
"fnaform"
/>
:customerBizId=
"processInfo.customerBizId"
:dictTypeLists=
"dictTypeLists"
:customerInfo=
"customerInfo"
@
handleSuccess=
"handleSuccess"
:tabIndex=
"tabsList.findIndex(t => t.name === 'fnaform')"
anchorContainer=
".tabPaneBox"
tabSource=
"fnaform"
/>
</div>
</div>
<div
v-if=
"tab.name === 'appointment'"
>
<div
v-if=
"tab.name === 'appointment'"
>
<AppointmentEdit
:embed=
"true"
editStatus=
"add"
:tabName=
"activeName"
:processDetail=
"processInfo"
<AppointmentEdit
@
handleSuccess=
"handleSuccess"
source=
"fnaList"
/>
:embed=
"true"
editStatus=
"add"
:tabName=
"activeName"
:processDetail=
"processInfo"
@
handleSuccess=
"handleSuccess"
source=
"fnaList"
/>
</div>
</div>
<div
v-if=
"tab.name === 'newpolicy'"
>
关联新单内容
</div>
<div
v-if=
"tab.name === 'newpolicy'"
>
关联新单内容
</div>
</div>
</div>
...
@@ -165,6 +210,40 @@ const tabsList = ref([
...
@@ -165,6 +210,40 @@ const tabsList = ref([
const
{
csf_fna_status
}
=
proxy
.
useDict
(
'csf_fna_status'
)
const
{
csf_fna_status
}
=
proxy
.
useDict
(
'csf_fna_status'
)
// 获取各个流程所需要得字典数据
// 获取各个流程所需要得字典数据
const
getDictsData
=
async
()
=>
{
const
getDictsData
=
async
()
=>
{
// 请求每个流程中所涉及到的字典值数据,如果缓存中有,则不再请求
if
(
dictStore
.
dictTypeLists
.
length
==
0
)
{
proxy
.
useDictLists
([
'csf_employment'
,
'sys_no_yes'
,
'bx_currency_type'
,
'csf_liquid_asset_type'
,
'csf_premium_funding_source'
,
'csf_customer_type'
,
'csf_customer_title'
,
'sys_gender'
,
'csf_marriage'
,
'csf_education'
,
'csf_id_type'
,
'csf_ap_apply_type'
,
'csf_ap_meeting_point'
,
'csf_ap_first_issue'
,
'csf_ap_dividend'
,
'csf_ap_frequency'
,
'csf_ap_rel'
,
'csf_ap_registration'
,
'csf_ap_exercise'
,
'csf_ap_risk'
,
'csf_ap_movie'
,
'csf_ap_game'
,
'wj_question_first_category'
,
'wj_question_second_category'
,
'csf_ap_policy_transfer'
,
'md_bank'
,
'csf_property_type'
,
'oss_data_type'
,
'oss_data_person'
])
}
// 获取租户用户列表
// 获取租户用户列表
const
params1
=
{
const
params1
=
{
tenantBizId
:
userStore
.
projectInfo
.
tenantBizId
,
tenantBizId
:
userStore
.
projectInfo
.
tenantBizId
,
...
@@ -298,41 +377,6 @@ const getDictsData = async () => {
...
@@ -298,41 +377,6 @@ const getDictsData = async () => {
})
})
dictStore
.
setAllInsuranceCompanyList
(
response9
.
data
.
records
)
dictStore
.
setAllInsuranceCompanyList
(
response9
.
data
.
records
)
}
}
// 请求每个流程中所涉及到的字典值数据,如果缓存中有,则不再请求
if
(
dictStore
.
dictTypeLists
.
length
==
0
)
{
proxy
.
useDictLists
([
'csf_employment'
,
'sys_no_yes'
,
'bx_currency_type'
,
'csf_liquid_asset_type'
,
'csf_premium_funding_source'
,
'csf_customer_type'
,
'csf_customer_title'
,
'sys_gender'
,
'csf_marriage'
,
'csf_education'
,
'csf_id_type'
,
'csf_ap_apply_type'
,
'csf_ap_meeting_point'
,
'csf_ap_first_issue'
,
'csf_ap_dividend'
,
'csf_ap_frequency'
,
'csf_ap_rel'
,
'csf_ap_registration'
,
'csf_ap_exercise'
,
'csf_ap_risk'
,
'csf_ap_movie'
,
'csf_ap_game'
,
'wj_question_first_category'
,
'wj_question_second_category'
,
'csf_ap_policy_transfer'
,
'md_bank'
,
'csf_property_type'
,
'oss_data_type'
,
'oss_data_person'
])
}
}
}
// 更新流程
// 更新流程
...
...
src/views/sign/appointment/appointmentEdit.vue
View file @
e6731b25
...
@@ -83,13 +83,13 @@
...
@@ -83,13 +83,13 @@
<el-row
v-if=
"isEmbed"
>
<el-row
v-if=
"isEmbed"
>
<el-col>
<el-col>
<div
class=
"topButtonBox"
>
<div
class=
"topButtonBox"
>
<
!--
<
el-button
<el-button
v-if=
"
idsObj.appointmentBizId && pageSource !== 'policyList'
"
v-if=
"
!idsObj.appointmentBizId
"
type=
"primary"
type=
"primary"
icon=
"Plus"
icon=
"Plus"
@
click=
"
handleAddExecl
"
@
click=
"
execlDialog = true
"
>
上传EXECL
</el-button
>
导入
</el-button
>
-->
>
<el-button
<el-button
v-if=
"pageSource !== 'policyList' && idsObj.appointmentBizId"
v-if=
"pageSource !== 'policyList' && idsObj.appointmentBizId"
type=
"primary"
type=
"primary"
...
@@ -122,12 +122,7 @@
...
@@ -122,12 +122,7 @@
</el-col>
</el-col>
</el-row>
</el-row>
<el-tabs
v-model=
"activeName"
type=
"card"
class=
"demo-tabs"
:before-leave=
"beforeTabLeave"
>
<el-tabs
v-model=
"activeName"
type=
"card"
class=
"demo-tabs"
:before-leave=
"beforeTabLeave"
>
<el-tab-pane
<el-tab-pane
v-for=
"tab in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
v-for=
"tab in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
<div
<div
class=
"appointmentTabPaneBox"
class=
"appointmentTabPaneBox"
:style=
"
{
:style=
"
{
...
@@ -148,6 +143,7 @@
...
@@ -148,6 +143,7 @@
:fatherTabName=
"tabName"
:fatherTabName=
"tabName"
:editStatus=
"editStatus"
:editStatus=
"editStatus"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:isExportAppointment=
"isExportAppointment"
/>
/>
</div>
</div>
<div
v-if=
"tab.name === 'productPlan'"
>
<div
v-if=
"tab.name === 'productPlan'"
>
...
@@ -166,6 +162,7 @@
...
@@ -166,6 +162,7 @@
:fatherTabName=
"tabName"
:fatherTabName=
"tabName"
:editStatus=
"editStatus"
:editStatus=
"editStatus"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:isExportAppointment=
"isExportAppointment"
/>
/>
</div>
</div>
<!-- 投保人 -->
<!-- 投保人 -->
...
@@ -184,6 +181,7 @@
...
@@ -184,6 +181,7 @@
:apiPolicyholderInfoDto=
"appointmentSummeryInfo.apiPolicyholderInfoDto"
:apiPolicyholderInfoDto=
"appointmentSummeryInfo.apiPolicyholderInfoDto"
:idsObj=
"idsObj"
:idsObj=
"idsObj"
:customerBizId=
"props.processDetail.customerBizId"
:customerBizId=
"props.processDetail.customerBizId"
:isExportAppointment=
"isExportAppointment"
/>
/>
</div>
</div>
<!-- 受保人 -->
<!-- 受保人 -->
...
@@ -203,6 +201,7 @@
...
@@ -203,6 +201,7 @@
:customerBizId=
"props.processDetail.customerBizId"
:customerBizId=
"props.processDetail.customerBizId"
:customerInfo=
"customerInfo"
:customerInfo=
"customerInfo"
:apiInsurantInfoDto=
"appointmentSummeryInfo.apiInsurantInfoDto"
:apiInsurantInfoDto=
"appointmentSummeryInfo.apiInsurantInfoDto"
:isExportAppointment=
"isExportAppointment"
/>
/>
</div>
</div>
<div
v-if=
"tab.name === 'secondHolder'"
>
<div
v-if=
"tab.name === 'secondHolder'"
>
...
@@ -222,6 +221,7 @@
...
@@ -222,6 +221,7 @@
:fatherTabName=
"tabName"
:fatherTabName=
"tabName"
:editStatus=
"editStatus"
:editStatus=
"editStatus"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:isExportAppointment=
"isExportAppointment"
/>
/>
</div>
</div>
<div
v-if=
"tab.name === 'beneficiary'"
>
<div
v-if=
"tab.name === 'beneficiary'"
>
...
@@ -240,6 +240,7 @@
...
@@ -240,6 +240,7 @@
:fatherTabName=
"tabName"
:fatherTabName=
"tabName"
:editStatus=
"editStatus"
:editStatus=
"editStatus"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:affixOffset=
"pageSource == 'fnaList' ? 360 : 250"
:isExportAppointment=
"isExportAppointment"
/>
/>
</div>
</div>
<div
v-if=
"tab.name === 'questionnaires'"
>
<div
v-if=
"tab.name === 'questionnaires'"
>
...
@@ -339,8 +340,17 @@
...
@@ -339,8 +340,17 @@
</el-tabs>
</el-tabs>
</div>
</div>
</el-card>
</el-card>
<!-- 展示行程单详情 -->
<!-- 导入预约-->
<el-dialog
v-model=
"execlDialog"
title=
"Excel导入"
width=
"40%"
>
<CommonDialog
dialogTitle=
"导入预约"
cancleText=
"关闭"
dialogWidth=
"50%"
:openDialog=
"execlDialog"
:showClose=
"true"
@
close=
"execlDialog = false"
:showAction=
"false"
>
<div
class=
"dialogBox"
>
<div
class=
"dialogBox"
>
<div>
<div>
<div
class=
"tipTitle"
>
您需要准备
</div>
<div
class=
"tipTitle"
>
您需要准备
</div>
...
@@ -364,14 +374,15 @@
...
@@ -364,14 +374,15 @@
:on-change=
"handleFileChange"
:on-change=
"handleFileChange"
accept=
".xlsx,.xls"
accept=
".xlsx,.xls"
>
>
<el-button
type=
"primary"
@
click=
"execlUpload"
>
上传文件
</el-button>
<el-button
type=
"primary"
:loading=
"exprotLoading"
>
导入
</el-button>
</el-upload>
</el-upload>
</div>
</div>
</div>
</div>
</
el-d
ialog>
</
CommonD
ialog>
</div>
</div>
</
template
>
</
template
>
<
script
setup
name=
"AppointmentEdit"
>
<
script
setup
name=
"AppointmentEdit"
>
import
CommonDialog
from
'@/components/commonDialog'
import
AppointmentInfo
from
'./components/appointmentInfo.vue'
import
AppointmentInfo
from
'./components/appointmentInfo.vue'
import
ProductPlan
from
'./components/productPlan.vue'
import
ProductPlan
from
'./components/productPlan.vue'
import
PolicyHolderInfo
from
'./components/policyHolderInfo.vue'
import
PolicyHolderInfo
from
'./components/policyHolderInfo.vue'
...
@@ -449,6 +460,8 @@ const idsObj = ref({}) //各个模块的bizId
...
@@ -449,6 +460,8 @@ const idsObj = ref({}) //各个模块的bizId
const
appointmentSummeryInfo
=
ref
({})
//预约详情总信息
const
appointmentSummeryInfo
=
ref
({})
//预约详情总信息
const
currentFile
=
ref
(
null
)
const
currentFile
=
ref
(
null
)
const
foldInsurantInfo
=
ref
(
false
)
//健康信息中得受保人信息是否隐藏
const
foldInsurantInfo
=
ref
(
false
)
//健康信息中得受保人信息是否隐藏
const
exprotLoading
=
ref
(
false
)
//导入预约loading
const
isExportAppointment
=
ref
(
false
)
//是否导入预约信息
const
processInfo
=
ref
({
const
processInfo
=
ref
({
fnaNo
:
'暂无'
,
fnaNo
:
'暂无'
,
status
:
'未完成'
,
status
:
'未完成'
,
...
@@ -634,35 +647,53 @@ const handleFileChange = async file => {
...
@@ -634,35 +647,53 @@ const handleFileChange = async file => {
// 添加文件到 FormData(第二个参数是文件对象,第三个参数是文件名)
// 添加文件到 FormData(第二个参数是文件对象,第三个参数是文件名)
formData
.
append
(
'file'
,
rawFile
,
rawFile
.
name
)
formData
.
append
(
'file'
,
rawFile
,
rawFile
.
name
)
exprotLoading
.
value
=
true
// 添加其他参数
isExportAppointment
.
value
=
false
formData
.
append
(
'appointmentBizId'
,
idsObj
.
value
.
appointmentBizId
)
const
res
=
await
uploadExcel
(
formData
)
const
res
=
await
uploadExcel
(
formData
)
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
proxy
.
$message
.
success
(
'上传文件成功'
)
appointmentSummeryInfo
.
value
=
res
.
data
if
(
res
.
data
.
apiAppointmentInfoDto
.
isSecond
==
'0'
||
res
.
data
.
apiAppointmentInfoDto
.
isSecond
)
{
appointmentSummeryInfo
.
value
.
apiSecondHolderInfoDto
.
isSecond
=
res
.
data
.
apiAppointmentInfoDto
.
isSecond
}
isExportAppointment
.
value
=
true
proxy
.
$message
.
success
(
'预约导入成功!!'
)
console
.
log
(
'导入预约信息'
,
appointmentSummeryInfo
.
value
)
exprotLoading
.
value
=
false
execlDialog
.
value
=
false
execlDialog
.
value
=
false
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
proxy
.
$message
.
error
(
'上传失败'
)
exprotLoading
.
value
=
false
console
.
error
(
'Upload error:'
,
error
)
proxy
.
$message
.
error
(
error
.
message
)
}
}
return
false
// 阻止自动上传
return
false
// 阻止自动上传
}
}
const
execlUpload
=
()
=>
{
const
execlUpload
=
()
=>
{
let
data
=
{
// exprotLoading.value = true
appointmentBizId
:
idsObj
.
value
.
appointmentBizId
,
// let data = {
file
:
currentFile
.
value
// // appointmentBizId: idsObj.value.appointmentBizId,
}
// file: currentFile.value
if
(
currentFile
.
value
)
{
// }
uploadExcel
(
data
).
then
(
res
=>
{
// try {
if
(
res
.
code
==
200
)
{
// if (currentFile.value) {
proxy
.
$message
.
success
(
'上传文件成功'
)
// uploadExcel(data).then(res => {
execlDialog
.
value
=
false
// if (res.code == 200) {
}
// proxy.$message.success('预约导入成功')
})
// execlDialog.value = false
}
// exprotLoading.value = false
// }
// })
// }
// } catch (error) {
// proxy.$message.error(error.message)
// exprotLoading.value = false
// }
}
}
// 获取预约详情
// 获取预约详情
function
getAppointmentInfo
(
appointmentBizId
,
changeTab
)
{
function
getAppointmentInfo
(
appointmentBizId
,
changeTab
)
{
...
@@ -678,17 +709,13 @@ function getAppointmentInfo(appointmentBizId, changeTab) {
...
@@ -678,17 +709,13 @@ function getAppointmentInfo(appointmentBizId, changeTab) {
appointmentSummeryInfo
.
value
.
apiSecondHolderInfoDto
.
isSecond
=
appointmentSummeryInfo
.
value
.
apiSecondHolderInfoDto
.
isSecond
=
res
.
data
.
apiAppointmentInfoDto
.
isSecond
res
.
data
.
apiAppointmentInfoDto
.
isSecond
}
}
// 如果受保人中与投保人关系选择得是本人,那么健康信息中问卷只要填写投保人得问卷
// if (res.data.apiInsurantInfoDto && res.data.apiInsurantInfoDto.policyholderRel == 'MYSELF') {
// foldInsurantInfo.value = true
// }
let
options
=
fetchDictData
(
'csf_ap_status'
)
let
options
=
fetchDictData
(
'csf_ap_status'
)
options
.
forEach
(
item
=>
{
options
.
forEach
(
item
=>
{
if
(
item
.
value
==
appointmentSummeryInfo
.
value
.
status
)
{
if
(
item
.
value
==
appointmentSummeryInfo
.
value
.
status
)
{
processInfo
.
value
.
status
=
item
.
label
processInfo
.
value
.
status
=
item
.
label
}
}
})
})
// getCustomerInfo(res.data.apiAppointmentInfoDto.customerBizId)
if
(
!
appointmentSummeryInfo
.
value
.
apiAppointmentInfoDto
.
appointmentBizId
)
{
if
(
!
appointmentSummeryInfo
.
value
.
apiAppointmentInfoDto
.
appointmentBizId
)
{
showStorage
.
value
=
true
showStorage
.
value
=
true
}
}
...
@@ -717,6 +744,37 @@ function getCustomerInfo(customerBizId) {
...
@@ -717,6 +744,37 @@ function getCustomerInfo(customerBizId) {
}
}
// 获取各个流程所需要得字典数据
// 获取各个流程所需要得字典数据
const
getDictsData
=
async
()
=>
{
const
getDictsData
=
async
()
=>
{
proxy
.
useDictLists
([
'csf_employment'
,
'sys_no_yes'
,
'bx_currency_type'
,
'csf_liquid_asset_type'
,
'csf_premium_funding_source'
,
'csf_customer_type'
,
'csf_customer_title'
,
'sys_gender'
,
'csf_marriage'
,
'csf_education'
,
'csf_id_type'
,
'csf_ap_apply_type'
,
'csf_ap_meeting_point'
,
'csf_ap_first_issue'
,
'csf_ap_dividend'
,
'csf_ap_frequency'
,
'csf_ap_rel'
,
'csf_ap_registration'
,
'csf_ap_exercise'
,
'csf_ap_risk'
,
'csf_ap_movie'
,
'csf_ap_game'
,
'csf_ap_policy_transfer'
,
'wj_question_first_category'
,
'wj_question_second_category'
,
'csf_ap_status'
,
'md_bank'
,
'oss_data_type'
,
'oss_data_person'
])
if
(
route
.
query
.
source
==
'policyList'
)
{
if
(
route
.
query
.
source
==
'policyList'
)
{
const
params4
=
{
const
params4
=
{
pageNo
:
1
,
pageNo
:
1
,
...
@@ -827,37 +885,6 @@ const getDictsData = async () => {
...
@@ -827,37 +885,6 @@ const getDictsData = async () => {
})
})
dictStore
.
setSignPeopleList
(
response7
.
data
.
records
)
dictStore
.
setSignPeopleList
(
response7
.
data
.
records
)
}
}
proxy
.
useDictLists
([
'csf_employment'
,
'sys_no_yes'
,
'bx_currency_type'
,
'csf_liquid_asset_type'
,
'csf_premium_funding_source'
,
'csf_customer_type'
,
'csf_customer_title'
,
'sys_gender'
,
'csf_marriage'
,
'csf_education'
,
'csf_id_type'
,
'csf_ap_apply_type'
,
'csf_ap_meeting_point'
,
'csf_ap_first_issue'
,
'csf_ap_dividend'
,
'csf_ap_frequency'
,
'csf_ap_rel'
,
'csf_ap_registration'
,
'csf_ap_exercise'
,
'csf_ap_risk'
,
'csf_ap_movie'
,
'csf_ap_game'
,
'csf_ap_policy_transfer'
,
'wj_question_first_category'
,
'wj_question_second_category'
,
'csf_ap_status'
,
'md_bank'
,
'oss_data_type'
,
'oss_data_person'
])
}
}
// Tab切换前的验证
// Tab切换前的验证
const
beforeTabLeave
=
async
(
activeTabName
,
oldTabName
)
=>
{
const
beforeTabLeave
=
async
(
activeTabName
,
oldTabName
)
=>
{
...
@@ -865,7 +892,7 @@ const beforeTabLeave = async (activeTabName, oldTabName) => {
...
@@ -865,7 +892,7 @@ const beforeTabLeave = async (activeTabName, oldTabName) => {
// 获取受保人数据
// 获取受保人数据
let
insuredData
=
null
let
insuredData
=
null
if
(
insuredInfoRef
.
value
)
{
if
(
insuredInfoRef
.
value
)
{
insuredData
=
await
insuredInfoRef
.
value
[
0
].
handleFormValues
(
'insuredInfoRef'
)
insuredData
=
await
insuredInfoRef
.
value
[
0
].
getInsuredForm
(
)
// 健康信息得展示内容要根据受保人与投保人得关系展示
// 健康信息得展示内容要根据受保人与投保人得关系展示
if
(
activeTabName
==
'questionnaires'
)
{
if
(
activeTabName
==
'questionnaires'
)
{
// 编辑状态下
// 编辑状态下
...
@@ -900,15 +927,7 @@ const beforeTabLeave = async (activeTabName, oldTabName) => {
...
@@ -900,15 +927,7 @@ const beforeTabLeave = async (activeTabName, oldTabName) => {
}
}
}
}
// 判断是否为数组
const
isArray
=
value
=>
{
return
Array
.
isArray
(
value
)
}
// 判断是否为对象
const
isObject
=
value
=>
{
return
typeof
value
===
'object'
&&
value
!==
null
&&
!
Array
.
isArray
(
value
)
}
const
handleSubmit
=
async
type
=>
{
const
handleSubmit
=
async
type
=>
{
// 提交得时候要拿到各个步骤得表单数据
// 提交得时候要拿到各个步骤得表单数据
if
(
appointmentInfoRef
.
value
)
{
if
(
appointmentInfoRef
.
value
)
{
...
@@ -920,6 +939,10 @@ const handleSubmit = async type => {
...
@@ -920,6 +939,10 @@ const handleSubmit = async type => {
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
=
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
=
await
productPlanRef
.
value
[
0
].
handleSubmitForm
()
await
productPlanRef
.
value
[
0
].
handleSubmitForm
()
if
(
!
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
&&
isExportAppointment
.
value
)
{
proxy
.
$message
.
error
(
'请确认产品计划信息'
)
return
}
if
(
!
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
)
{
if
(
!
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
)
{
proxy
.
$message
.
error
(
'请完善产品计划信息'
)
proxy
.
$message
.
error
(
'请完善产品计划信息'
)
return
return
...
@@ -929,6 +952,12 @@ const handleSubmit = async type => {
...
@@ -929,6 +952,12 @@ const handleSubmit = async type => {
if
(
policyHolderInfoRef
.
value
)
{
if
(
policyHolderInfoRef
.
value
)
{
submitAppointmentObj
.
value
.
apiPolicyholderInfoDto
=
submitAppointmentObj
.
value
.
apiPolicyholderInfoDto
=
await
policyHolderInfoRef
.
value
[
0
].
handleFormValues
(
'policyHolderInfoRef'
)
await
policyHolderInfoRef
.
value
[
0
].
handleFormValues
(
'policyHolderInfoRef'
)
console
.
log
(
submitAppointmentObj
.
value
.
apiPolicyholderInfoDto
)
if
(
!
submitAppointmentObj
.
value
.
apiPolicyholderInfoDto
&&
isExportAppointment
.
value
)
{
proxy
.
$message
.
error
(
'请确认投保人信息'
)
return
}
if
(
!
submitAppointmentObj
.
value
.
apiPolicyholderInfoDto
)
{
if
(
!
submitAppointmentObj
.
value
.
apiPolicyholderInfoDto
)
{
proxy
.
$message
.
error
(
'请确认投保人信息'
)
proxy
.
$message
.
error
(
'请确认投保人信息'
)
return
return
...
@@ -937,11 +966,14 @@ const handleSubmit = async type => {
...
@@ -937,11 +966,14 @@ const handleSubmit = async type => {
// 获取受保人form
// 获取受保人form
if
(
insuredInfoRef
.
value
)
{
if
(
insuredInfoRef
.
value
)
{
submitAppointmentObj
.
value
.
apiInsurantInfoDto
=
await
insuredInfoRef
.
value
[
0
].
handleFormValues
(
submitAppointmentObj
.
value
.
apiInsurantInfoDto
=
'insuredInfoRef'
await
insuredInfoRef
.
value
[
0
].
handleFormValues
(
'insuredInfoRef'
)
)
console
.
log
(
'受保人'
,
submitAppointmentObj
.
value
.
apiInsurantInfoDto
)
console
.
log
(
'受保人'
,
submitAppointmentObj
.
value
.
apiInsurantInfoDto
)
if
(
!
submitAppointmentObj
.
value
.
apiInsurantInfoDto
&&
isExportAppointment
.
value
)
{
proxy
.
$message
.
error
(
'请确认受保人信息'
)
return
}
if
(
!
submitAppointmentObj
.
value
.
apiInsurantInfoDto
)
{
if
(
!
submitAppointmentObj
.
value
.
apiInsurantInfoDto
)
{
proxy
.
$message
.
error
(
'请完善受保人信息'
)
proxy
.
$message
.
error
(
'请完善受保人信息'
)
return
return
...
@@ -950,15 +982,22 @@ const handleSubmit = async type => {
...
@@ -950,15 +982,22 @@ const handleSubmit = async type => {
if
(
beneficiaryInfoRef
.
value
)
{
if
(
beneficiaryInfoRef
.
value
)
{
submitAppointmentObj
.
value
.
apiBeneficiaryInfoFzDto
=
submitAppointmentObj
.
value
.
apiBeneficiaryInfoFzDto
=
await
beneficiaryInfoRef
.
value
[
0
].
handleFormValues
()
await
beneficiaryInfoRef
.
value
[
0
].
handleFormValues
()
if
(
!
submitAppointmentObj
.
value
.
apiBeneficiaryInfoFzDto
&&
isExportAppointment
.
value
)
{
proxy
.
$message
.
error
(
'请确认受益人信息'
)
return
}
if
(
!
submitAppointmentObj
.
value
.
apiBeneficiaryInfoFzDto
)
{
if
(
!
submitAppointmentObj
.
value
.
apiBeneficiaryInfoFzDto
)
{
proxy
.
$message
.
error
(
'请完善受益人信息'
)
proxy
.
$message
.
error
(
'请完善受益人信息'
)
return
return
}
else
{
}
}
}
}
if
(
secondHolderInfoRef
.
value
)
{
if
(
secondHolderInfoRef
.
value
)
{
submitAppointmentObj
.
value
.
apiSecondHolderInfoDto
=
submitAppointmentObj
.
value
.
apiSecondHolderInfoDto
=
await
secondHolderInfoRef
.
value
[
0
].
handleFormValues
()
await
secondHolderInfoRef
.
value
[
0
].
handleFormValues
()
if
(
!
submitAppointmentObj
.
value
.
apiSecondHolderInfoDto
&&
isExportAppointment
.
value
)
{
proxy
.
$message
.
error
(
'请确认第二持有人信息'
)
return
}
if
(
!
submitAppointmentObj
.
value
.
apiSecondHolderInfoDto
)
{
if
(
!
submitAppointmentObj
.
value
.
apiSecondHolderInfoDto
)
{
proxy
.
$message
.
error
(
'请完善第二持有人信息'
)
proxy
.
$message
.
error
(
'请完善第二持有人信息'
)
return
return
...
@@ -1038,10 +1077,6 @@ const handleSubmit = async type => {
...
@@ -1038,10 +1077,6 @@ const handleSubmit = async type => {
}
}
// 编辑状态下预约暂存
// 编辑状态下预约暂存
if
(
type
==
'editStorage'
)
{
if
(
type
==
'editStorage'
)
{
// submitAppointmentObj.value.apiAppointmentInfoDto.customerBizId =
// props.processDetail.customerBizId
// submitAppointmentObj.value.apiAppointmentInfoDto.fnaBizId = props.processDetail.fnaBizId
// submitAppointmentObj.value.apiAppointmentInfoDto.fnaNo = props.processDetail.fnaNo
// 暂存预约单
// 暂存预约单
appointmentEditStorage
(
submitAppointmentObj
.
value
).
then
(
res
=>
{
appointmentEditStorage
(
submitAppointmentObj
.
value
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
...
@@ -1277,126 +1312,6 @@ const getPolicyDetail = tabName => {
...
@@ -1277,126 +1312,6 @@ const getPolicyDetail = tabName => {
console
.
error
(
'请求失败:'
,
error
)
console
.
error
(
'请求失败:'
,
error
)
})
})
}
}
if
(
route
.
query
.
source
==
'policyList'
)
{
idsObj
.
value
.
policyBizId
=
route
.
query
.
policyBizId
// getCustomerInfo(props.policyDetailInfo.customerBizId)
appointmentSummeryInfo
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
props
.
policyDetailInfo
))
if
(
appointmentSummeryInfo
.
value
.
apiProductPlanInfoDto
)
{
appointmentSummeryInfo
.
value
.
apiAppointmentInfoDto
=
JSON
.
parse
(
JSON
.
stringify
(
appointmentSummeryInfo
.
value
.
apiProductPlanInfoDto
.
apiProductPlanMainInfoDto
)
)
}
policyNo
.
value
=
route
.
query
.
policyNo
idsObj
.
value
.
appointmentBizId
=
route
.
query
.
appointmentBizId
isEmbed
.
value
=
route
.
query
.
embed
getDictsData
()
tabsList
.
value
=
[
{
label
:
'预计来佣'
,
name
:
'expectedCommission'
,
id
:
1
,
key
:
'expectedCommission'
},
{
label
:
'预计发佣'
,
name
:
'expectedFortune'
,
id
:
1
,
key
:
'expectedFortune'
},
{
label
:
'保单信息'
,
name
:
'policyInfo'
,
id
:
2
,
key
:
'policyInfo'
},
{
label
:
'保单附件'
,
name
:
'policyAccessories'
,
id
:
3
,
key
:
'policyAccessories'
},
{
label
:
'转介人'
,
name
:
'policyBroker'
,
id
:
4
,
key
:
'policyBroker'
},
{
label
:
'邮寄信息'
,
name
:
'policyMailing'
,
id
:
5
,
key
:
'policyMailing'
},
{
label
:
'核保信息'
,
name
:
'verifyPolicyInfo'
,
id
:
6
,
key
:
'verifyPolicyInfo'
},
{
label
:
'产品计划'
,
name
:
'productPlan'
,
id
:
8
,
status
:
'0'
,
key
:
'planBizId'
},
{
label
:
'投保人'
,
name
:
'policyholder'
,
id
:
9
,
status
:
'0'
,
key
:
'policyholderBizId'
},
{
label
:
'受保人'
,
name
:
'insurantInfo'
,
id
:
10
,
status
:
'0'
,
key
:
'insurantBizId'
},
{
label
:
'受益人'
,
name
:
'beneficiary'
,
id
:
11
,
status
:
'0'
,
key
:
'beneficiaryBizId'
},
{
label
:
'第二持有人'
,
name
:
'secondHolder'
,
id
:
12
,
status
:
'0'
,
key
:
'secondHolderBizId'
},
{
label
:
'健康信息'
,
//后端还没加这个字段
name
:
'questionnaires'
,
id
:
13
,
status
:
'0'
,
key
:
'questionnaireBizId'
},
{
label
:
'转保声明'
,
name
:
'policyTransfer'
,
id
:
15
,
status
:
'0'
,
key
:
'policyTransfer'
},
{
label
:
'预约附件'
,
//大提交的时候不用提交了,因为上传文件的时候已经入库了
name
:
'accessories'
,
id
:
16
,
status
:
'0'
,
key
:
'fnaBizId'
}
]
nextTick
(()
=>
{
activeName
.
value
=
'expectedCommission'
})
}
// 根据页面来源的不同控制tab项内模块小提交按钮的显示与否,也能证明是修改状态
// 根据页面来源的不同控制tab项内模块小提交按钮的显示与否,也能证明是修改状态
const
showSubmitBtn
=
computed
(()
=>
{
const
showSubmitBtn
=
computed
(()
=>
{
if
(
route
.
query
.
appointmentNo
&&
route
.
query
.
source
==
'appointmentList'
)
{
if
(
route
.
query
.
appointmentNo
&&
route
.
query
.
source
==
'appointmentList'
)
{
...
@@ -1447,11 +1362,11 @@ onUnmounted(() => {
...
@@ -1447,11 +1362,11 @@ onUnmounted(() => {
})
})
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
:deep
(
.el-card
)
{
:deep
(
.el-card
)
{
border
:
none
!important
;
border
:
none
!important
;
}
}
:deep
(
.el-input-group__append
),
:deep
(
.el-input-group__append
),
:deep
(
.el-input-group__prepend
)
{
:deep
(
.el-input-group__prepend
)
{
background-color
:
#fff
!important
;
background-color
:
#fff
!important
;
}
}
.noembed-container
{
.noembed-container
{
...
...
src/views/sign/appointment/components/appointmentInfo.vue
View file @
e6731b25
...
@@ -5,8 +5,15 @@
...
@@ -5,8 +5,15 @@
<div
style=
"position: relative; top: -100%; left: -1100%"
>
<div
style=
"position: relative; top: -100%; left: -1100%"
>
{{
appointmentRef
}}
{{
appointmentRef
}}
</div>
</div>
<CommonForm
:anchorList=
"anchorList"
:affixOffset=
"affixOffset"
:anchorOffset=
"10"
<CommonForm
:scrollContainerSelector=
"anchorContainer"
:domIndex=
"tabIndex"
:activeName=
"activeName"
v-if=
"appointmentRef"
>
:anchorList=
"anchorList"
:affixOffset=
"affixOffset"
:anchorOffset=
"10"
:scrollContainerSelector=
"anchorContainer"
:domIndex=
"tabIndex"
:activeName=
"activeName"
v-if=
"appointmentRef"
>
<template
#
form-right
>
<template
#
form-right
>
<el-form
ref=
"appointmentInfoFormRef"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form
ref=
"appointmentInfoFormRef"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<div
v-for=
"father in processedAppointmentData"
>
<div
v-for=
"father in processedAppointmentData"
>
...
@@ -15,71 +22,156 @@
...
@@ -15,71 +22,156 @@
<CardOne
:title=
"father.fatherTitle"
>
<CardOne
:title=
"father.fatherTitle"
>
<template
#
mainTitCustom
v-if=
"props.idsObj.appointmentBizId"
>
<template
#
mainTitCustom
v-if=
"props.idsObj.appointmentBizId"
>
<div
style=
"margin-left: 10px"
>
<div
style=
"margin-left: 10px"
>
<el-button
@
click=
"viewHistory"
type=
"primary"
link
<el-button
v-if=
"father.key == 'administration'"
>
历史记录
</el-button>
@
click=
"viewHistory"
type=
"primary"
link
v-if=
"father.key == 'administration'"
>
历史记录
</el-button
>
</div>
</div>
</
template
>
</
template
>
<
template
#
headerRight
v-if=
"father.key == 'administration'"
>
<
template
#
headerRight
v-if=
"father.key == 'administration'"
>
<div>
<div>
<el-button
v-if=
"idsObj.appointmentBizId"
@
click=
"handleExprot"
type=
"primary"
<el-button
link
>
导出预约表
</el-button>
v-if=
"idsObj.appointmentBizId"
<el-button
v-if=
"appointmentStatus >= 2"
@
click=
"getItineraryInfo"
type=
"primary"
@
click=
"handleExprot"
link
>
行程单预览
</el-button>
type=
"primary"
link
>
导出预约表
</el-button
>
<el-button
v-if=
"appointmentStatus >= 2"
@
click=
"getItineraryInfo"
type=
"primary"
link
>
行程单预览
</el-button
>
</div>
</div>
</
template
>
</
template
>
<
template
#
content
>
<
template
#
content
>
<!-- 不是表格 -->
<!-- 不是表格 -->
<el-row
:gutter=
"20"
v-if=
"!father.showTable"
>
<el-row
:gutter=
"20"
v-if=
"!father.showTable"
>
<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=
"formItemBox"
v-if=
"child.show"
>
<el-col
:sm=
"child.sm"
:lg=
"child.lg"
class=
"formItemBox"
v-if=
"child.show"
>
<div>
<div>
<el-form-item
:label-width=
"child.labelWidth"
:label=
"child.label"
:prop=
"child.key"
<el-form-item
:key=
"child.key"
:label-position=
"child.labelPosition"
class=
"button-form-item"
>
:label-width=
"child.labelWidth"
<el-input
v-if=
"child.domType === 'Input'"
:type=
"child.inputType"
:label=
"child.label"
v-model=
"form[child.key]"
:placeholder=
"child.placeholder"
maxlength=
"30"
:prop=
"child.key"
:rows=
"child.rows"
:disabled=
"editStatus"
/>
:key=
"child.key"
<el-select
v-if=
"child.domType === 'Select'"
v-model=
"form[child.key]"
:label-position=
"child.labelPosition"
:placeholder=
"child.placeholder"
@
change=
"handleSelectChange(father, child)"
class=
"button-form-item"
:disabled=
"editStatus"
>
>
<el-option
v-for=
"item in child.options"
:key=
"item.value"
:label=
"item.label"
<el-input
:value=
"item.value"
/>
v-if=
"child.domType === 'Input'"
:type=
"child.inputType"
v-model=
"form[child.key]"
:placeholder=
"child.placeholder"
maxlength=
"30"
:rows=
"child.rows"
:disabled=
"editStatus"
/>
<el-select
v-if=
"child.domType === 'Select'"
v-model=
"form[child.key]"
:placeholder=
"child.placeholder"
@
change=
"handleSelectChange(father, child)"
:disabled=
"editStatus"
>
<el-option
v-for=
"item in child.options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-select>
<!-- 带时分的时间框 -->
<!-- 带时分的时间框 -->
<div
v-if=
"child.domType === 'datetimePicker'"
class=
"compositionDateTime"
>
<div
<el-date-picker
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
v-if=
"child.domType === 'datetimePicker'"
v-model=
"form[child.key]"
:disabled=
"editStatus"
@
change=
"handleDateChange(child)"
class=
"compositionDateTime"
:disabled-date=
"time => disabledDate(time, child)"
format=
"YYYY-MM-DD"
>
value-format=
"YYYY-MM-DD"
@
clear=
"handleDateClear(child)"
/>
<el-date-picker
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
v-model=
"form[child.key]"
:disabled=
"editStatus"
@
change=
"handleDateChange(child)"
:disabled-date=
"time => disabledDate(time, child)"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
@
clear=
"handleDateClear(child)"
/>
<span
class=
"text-gray-500"
>
-
</span>
<span
class=
"text-gray-500"
>
-
</span>
<el-time-picker
placeholder=
"选择时分"
style=
"width: 100%"
v-model=
"child.timeValue"
<el-time-picker
:disabled=
"editStatus"
format=
"HH:mm"
value-format=
"HH:mm"
placeholder=
"选择时分"
@
change=
"timeValueChange(child)"
/>
style=
"width: 100%"
v-model=
"child.timeValue"
:disabled=
"editStatus"
format=
"HH:mm"
value-format=
"HH:mm"
@
change=
"timeValueChange(child)"
/>
</div>
</div>
<!-- 不带时分 -->
<!-- 不带时分 -->
<el-date-picker
style=
"width: 100%"
v-if=
"child.domType === 'DatePicker'"
<el-date-picker
v-model=
"form[child.key]"
type=
"date"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
style=
"width: 100%"
:placeholder=
"child.placeholder"
:disabled=
"editStatus"
v-if=
"child.domType === 'DatePicker'"
:disabled-date=
"time => disabledDate(time, child)"
@
change=
"handleDateChange(child)"
v-model=
"form[child.key]"
@
clear=
"handleDateClear(child)"
/>
type=
"date"
<el-input
v-if=
"child.domType === 'arrowRight'"
v-model=
"form[child.key]"
format=
"YYYY-MM-DD"
:placeholder=
"child.placeholder"
:suffix-icon=
"ArrowRight"
readonly
value-format=
"YYYY-MM-DD"
:disabled=
"editStatus"
@
focus=
"handleFoucs(child)"
>
:placeholder=
"child.placeholder"
:disabled=
"editStatus"
:disabled-date=
"time => disabledDate(time, child)"
@
change=
"handleDateChange(child)"
@
clear=
"handleDateClear(child)"
/>
<el-input
v-if=
"child.domType === 'arrowRight'"
v-model=
"form[child.key]"
:placeholder=
"child.placeholder"
:suffix-icon=
"ArrowRight"
readonly
:disabled=
"editStatus"
@
focus=
"handleFoucs(child)"
>
</el-input>
</el-input>
<el-select
v-model=
"form[child.key]"
v-if=
"child.domType === 'SearchSelect'"
filterable
<el-select
:allow-create=
"child.allowCreate"
reserve-keyword
v-model=
"form[child.key]"
v-if=
"child.domType === 'SearchSelect'"
filterable
:allow-create=
"child.allowCreate"
reserve-keyword
@
change=
"handleSelectChange(father, child)"
@
change=
"handleSelectChange(father, child)"
:remote-method=
"query => searchSelectList(query, child.key)"
placeholder=
"请输入关键词搜索"
:remote-method=
"query => searchSelectList(query, child.key)"
:loading=
"searchLoadingStates[child.key]"
:disabled=
"editStatus"
>
placeholder=
"请输入关键词搜索"
<el-option
v-for=
"item in searchOptions[child.key] || []"
:key=
"item.id"
:loading=
"searchLoadingStates[child.key]"
:label=
"item.label"
:value=
"item.value"
/>
:disabled=
"editStatus"
>
<el-option
v-for=
"item in searchOptions[child.key] || []"
:key=
"item.id"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<div
v-if=
"child.domType === 'Div'"
class=
"divClass"
>
<div
v-if=
"child.domType === 'Div'"
class=
"divClass"
>
<div
v-if=
"child.key == 'information'"
class=
"desBox"
>
<div
v-if=
"child.key == 'information'"
class=
"desBox"
>
<div
class=
"title"
>
{{
child
.
title
}}
:
</div>
<div
class=
"title"
>
{{
child
.
title
}}
:
</div>
<div
class=
"informationBox"
>
<div
class=
"informationBox"
>
<div
v-for=
"(item, index) in child.informationList"
:key=
"index"
>
<div
v-for=
"(item, index) in child.informationList"
:key=
"index"
>
{{
item
.
name
}}
{{
item
.
name
}}
</div>
</div>
</div>
</div>
...
@@ -92,9 +184,15 @@
...
@@ -92,9 +184,15 @@
<!-- 是表格数据 -->
<!-- 是表格数据 -->
<el-row
v-if=
"father.showTable"
>
<el-row
v-if=
"father.showTable"
>
<el-col
:span=
"24"
v-if=
"father.addChildren"
>
<el-col
:span=
"24"
v-if=
"father.addChildren"
>
<el-button
:disabled=
"editStatus"
type=
"primary"
icon=
"Plus"
size=
"small"
<el-button
style=
"margin-bottom: 10px"
@
click=
"addChildren(father)"
>
{{ father.addChildrenTxt
:disabled=
"editStatus"
}}
</el-button>
type=
"primary"
icon=
"Plus"
size=
"small"
style=
"margin-bottom: 10px"
@
click=
"addChildren(father)"
>
{{ father.addChildrenTxt }}
</el-button
>
</el-col>
</el-col>
<el-table
:data=
"father.data"
border
v-if=
"father.data.length > 0"
>
<el-table
:data=
"father.data"
border
v-if=
"father.data.length > 0"
>
<
template
v-if=
"father.key == 'referrerDtoList'"
>
<
template
v-if=
"father.key == 'referrerDtoList'"
>
...
@@ -103,12 +201,23 @@
...
@@ -103,12 +201,23 @@
<span
class=
"required-label"
>
姓名
</span>
<span
class=
"required-label"
>
姓名
</span>
</
template
>
</
template
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-select
v-model=
"scope.row.realName"
filterable
remote
reserve-keyword
<el-select
placeholder=
"请输入关键词搜索"
:remote-method=
"query => searchSelectList(query, 'realName')"
v-model=
"scope.row.realName"
:loading=
"searchLoadingStates['realName']"
:disabled=
"editStatus"
filterable
@
change=
"handleTableSelectChange(father, scope.row, 'realName')"
>
remote
<el-option
v-for=
"item in searchOptions['realName'] || []"
:key=
"item.id"
reserve-keyword
:label=
"item.label"
:value=
"item.value"
/>
placeholder=
"请输入关键词搜索"
:remote-method=
"query => searchSelectList(query, 'realName')"
:loading=
"searchLoadingStates['realName']"
:disabled=
"editStatus"
@
change=
"handleTableSelectChange(father, scope.row, 'realName')"
>
<el-option
v-for=
"item in searchOptions['realName'] || []"
:key=
"item.id"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-select>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -117,8 +226,12 @@
...
@@ -117,8 +226,12 @@
<span
class=
"required-label"
>
手机号
</span>
<span
class=
"required-label"
>
手机号
</span>
</
template
>
</
template
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.phone"
size=
"default"
placeholder=
"请输入"
<el-input
:disabled=
"editStatus"
/>
v-model=
"scope.row.phone"
size=
"default"
placeholder=
"请输入"
:disabled=
"editStatus"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"邮箱"
prop=
"email"
align=
"center"
>
<el-table-column
label=
"邮箱"
prop=
"email"
align=
"center"
>
...
@@ -126,13 +239,20 @@
...
@@ -126,13 +239,20 @@
<span
class=
"required-label"
>
邮箱
</span>
<span
class=
"required-label"
>
邮箱
</span>
</
template
>
</
template
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.email"
size=
"default"
placeholder=
"请输入"
<el-input
:disabled=
"editStatus"
/>
v-model=
"scope.row.email"
size=
"default"
placeholder=
"请输入"
:disabled=
"editStatus"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
width=
"60px"
align=
"center"
label=
"操作"
>
<el-table-column
width=
"60px"
align=
"center"
label=
"操作"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-icon
class=
"deleteIcon"
@
click=
"deleteChildren(father, scope.$index)"
>
<el-icon
class=
"deleteIcon"
@
click=
"deleteChildren(father, scope.$index)"
>
<Delete
/>
<Delete
/>
</el-icon>
</el-icon>
</
template
>
</
template
>
...
@@ -144,12 +264,23 @@
...
@@ -144,12 +264,23 @@
<span
class=
"required-label"
>
姓名
</span>
<span
class=
"required-label"
>
姓名
</span>
</
template
>
</
template
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-select
v-model=
"scope.row.name"
filterable
remote
reserve-keyword
placeholder=
"请选择"
<el-select
v-model=
"scope.row.name"
filterable
remote
reserve-keyword
placeholder=
"请选择"
:remote-method=
"query => searchSelectList(query, 'name')"
:remote-method=
"query => searchSelectList(query, 'name')"
:loading=
"searchLoadingStates['name']"
:disabled=
"editStatus"
:loading=
"searchLoadingStates['name']"
@
change=
"handleTableSelectChange(father, scope.row, 'name')"
>
:disabled=
"editStatus"
<el-option
v-for=
"item in searchOptions['name'] || []"
:key=
"item.id"
@
change=
"handleTableSelectChange(father, scope.row, 'name')"
:label=
"item.label"
:value=
"item.value"
/>
>
<el-option
v-for=
"item in searchOptions['name'] || []"
:key=
"item.id"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-select>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -158,8 +289,12 @@
...
@@ -158,8 +289,12 @@
<span
class=
"required-label"
>
手机号
</span>
<span
class=
"required-label"
>
手机号
</span>
</
template
>
</
template
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.phone"
size=
"default"
placeholder=
"请输入"
<el-input
:disabled=
"editStatus"
/>
v-model=
"scope.row.phone"
size=
"default"
placeholder=
"请输入"
:disabled=
"editStatus"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"执业编码"
prop=
"practiceCode"
align=
"center"
>
<el-table-column
label=
"执业编码"
prop=
"practiceCode"
align=
"center"
>
...
@@ -167,35 +302,58 @@
...
@@ -167,35 +302,58 @@
<span
class=
"required-label"
>
执业编码
</span>
<span
class=
"required-label"
>
执业编码
</span>
</
template
>
</
template
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.practiceCode"
size=
"default"
placeholder=
"请输入"
<el-input
:disabled=
"editStatus"
/>
v-model=
"scope.row.practiceCode"
size=
"default"
placeholder=
"请输入"
:disabled=
"editStatus"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"邮箱"
prop=
"email"
align=
"center"
>
<el-table-column
label=
"邮箱"
prop=
"email"
align=
"center"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.email"
size=
"default"
placeholder=
"请输入"
<el-input
:disabled=
"editStatus"
/>
v-model=
"scope.row.email"
size=
"default"
placeholder=
"请输入"
:disabled=
"editStatus"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"证件类型"
prop=
"cardType"
align=
"center"
>
<el-table-column
label=
"证件类型"
prop=
"cardType"
align=
"center"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-select
v-model=
"scope.row.cardType"
placeholder=
"请选择"
:disabled=
"editStatus"
<el-select
clearable
>
v-model=
"scope.row.cardType"
<el-option
v-for=
"item in fetchDictData('csf_id_type')"
:key=
"item.value"
placeholder=
"请选择"
:label=
"item.label"
:value=
"item.value"
/>
:disabled=
"editStatus"
clearable
>
<el-option
v-for=
"item in fetchDictData('csf_id_type')"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-select>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"证件号"
prop=
"cardNo"
align=
"center"
>
<el-table-column
label=
"证件号"
prop=
"cardNo"
align=
"center"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.cardNo"
size=
"default"
placeholder=
"请输入"
<el-input
:disabled=
"editStatus"
/>
v-model=
"scope.row.cardNo"
size=
"default"
placeholder=
"请输入"
:disabled=
"editStatus"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
width=
"60px"
align=
"center"
label=
"操作"
>
<el-table-column
width=
"60px"
align=
"center"
label=
"操作"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-icon
@
click=
"deleteChildren(father, scope.$index)"
class=
"deleteIcon"
>
<el-icon
@
click=
"deleteChildren(father, scope.$index)"
class=
"deleteIcon"
>
<Delete
/>
<Delete
/>
</el-icon>
</el-icon>
</
template
>
</
template
>
...
@@ -213,12 +371,26 @@
...
@@ -213,12 +371,26 @@
</CommonForm>
</CommonForm>
</div>
</div>
<!-- 历史签约记录 -->
<!-- 历史签约记录 -->
<CommonDialog
dialogTitle=
"历史记录"
:showConfirm=
"false"
cancleText=
"关闭"
dialogWidth=
"70%"
:openDialog=
"openList"
<CommonDialog
:showClose=
"true"
@
close=
"openList = false"
>
dialogTitle=
"历史记录"
:showConfirm=
"false"
cancleText=
"关闭"
dialogWidth=
"70%"
:openDialog=
"openList"
:showClose=
"true"
@
close=
"openList = false"
>
<div
class=
"dialogBox"
>
<div
class=
"dialogBox"
>
<CommonPage
:showSearchForm=
"false"
:show-pagination=
"true"
:currentPage=
"queryParams.pageNo"
:total=
"total"
<CommonPage
:pageSize=
"queryParams.pageSize"
@
current-change=
"changePageNo"
@
size-change=
"changePageSize"
:showSearchForm=
"false"
:showOperationBtn=
"false"
>
:show-pagination=
"true"
:currentPage=
"queryParams.pageNo"
:total=
"total"
:pageSize=
"queryParams.pageSize"
@
current-change=
"changePageNo"
@
size-change=
"changePageSize"
:showOperationBtn=
"false"
>
<
template
#
table
>
<
template
#
table
>
<el-table
v-loading=
"tableLoading"
:data=
"tableData"
border
height=
"350px"
>
<el-table
v-loading=
"tableLoading"
:data=
"tableData"
border
height=
"350px"
>
<el-table-column
label=
"创建人"
align=
"center"
prop=
"creatorName"
/>
<el-table-column
label=
"创建人"
align=
"center"
prop=
"creatorName"
/>
...
@@ -230,8 +402,13 @@
...
@@ -230,8 +402,13 @@
}}
</span>
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"100"
class-name=
"small-padding fixed-width"
<el-table-column
fixed=
"right"
>
label=
"操作"
align=
"center"
width=
"100"
class-name=
"small-padding fixed-width"
fixed=
"right"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
link
type=
"primary"
@
click=
"viewDetail(scope.row)"
>
查看
</el-button>
<el-button
link
type=
"primary"
@
click=
"viewDetail(scope.row)"
>
查看
</el-button>
</
template
>
</
template
>
...
@@ -242,8 +419,15 @@
...
@@ -242,8 +419,15 @@
</div>
</div>
</CommonDialog>
</CommonDialog>
<!-- 签约详情 -->
<!-- 签约详情 -->
<CommonDialog
:dialogTitle=
"detailTitle"
:showConfirm=
"false"
cancleText=
"关闭"
dialogWidth=
"70%"
<CommonDialog
:openDialog=
"showDetail"
:showClose=
"true"
@
close=
"showDetail = false"
>
:dialogTitle=
"detailTitle"
:showConfirm=
"false"
cancleText=
"关闭"
dialogWidth=
"70%"
:openDialog=
"showDetail"
:showClose=
"true"
@
close=
"showDetail = false"
>
<el-scrollbar
max-height=
"600px"
>
<el-scrollbar
max-height=
"600px"
>
<div
class=
"dialogBox"
>
<div
class=
"dialogBox"
>
<AppointmentDetail
:detailInfo=
"detailInfo"
:editSatus=
"true"
></AppointmentDetail>
<AppointmentDetail
:detailInfo=
"detailInfo"
:editSatus=
"true"
></AppointmentDetail>
...
@@ -251,22 +435,52 @@
...
@@ -251,22 +435,52 @@
</el-scrollbar>
</el-scrollbar>
</CommonDialog>
</CommonDialog>
<!-- 行程单详情 -->
<!-- 行程单详情 -->
<CommonDialog
dialogTitle=
"香港行程安排"
confirmText=
"下载行程单"
dialogWidth=
"70%"
:openDialog=
"showItinerary"
<CommonDialog
@
confirm=
"handleExprotPdf"
@
close=
"showItinerary = false"
:showClose=
"true"
:showCancle=
"false"
dialogTitle=
"香港行程安排"
:confirmLoading=
"exportLoading"
>
confirmText=
"下载行程单"
dialogWidth=
"70%"
:openDialog=
"showItinerary"
@
confirm=
"handleExprotPdf"
@
close=
"showItinerary = false"
:showClose=
"true"
:showCancle=
"false"
:confirmLoading=
"exportLoading"
>
<div
class=
"itineraryDialogBox"
>
<div
class=
"itineraryDialogBox"
>
<div
class=
"dialogItem"
v-for=
"item in itineraryData"
>
<div
class=
"dialogItem"
v-for=
"item in itineraryData"
>
<div
class=
"dialogItemTitle"
>
{{ item.title }}
</div>
<div
class=
"dialogItemTitle"
>
{{ item.title }}
</div>
<DetailPanel
:data=
"item.data"
:row-span=
"24"
col-gap=
"10px"
label-width=
"120px"
row-height=
"45px"
<DetailPanel
:show-col-border=
"true"
/>
:data=
"item.data"
:row-span=
"24"
col-gap=
"10px"
label-width=
"120px"
row-height=
"45px"
:show-col-border=
"true"
/>
</div>
</div>
</div>
</div>
</CommonDialog>
</CommonDialog>
<Phone
@
close=
"handleCloseDrawer"
:showDrawer=
"showPhoneDrawer"
:drawerInfo=
"drawerInfo"
<Phone
:phoneMenuList=
"phoneMenuList"
:phoneQuickList=
"phoneQuickList"
@
confirmDrawer=
"confirmDrawer"
/>
@
close=
"handleCloseDrawer"
<Address
@
close=
"handleCloseDrawer"
:showAddressDrawer=
"showAddressDrawer"
:drawerInfo=
"drawerInfo"
:showDrawer=
"showPhoneDrawer"
:addressMenuList=
"addressMenuList"
:addressQuickList=
"addressQuickList"
@
confirmDrawer=
"confirmDrawer"
/>
:drawerInfo=
"drawerInfo"
<Country
:showCountryDrawer=
"showCountryDrawer"
@
close=
"handleCloseDrawer"
@
confirmCountry=
"confirmDrawer"
/>
: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>
</div>
</template>
</template>
<
script
setup
name=
"appointmentInfo"
>
<
script
setup
name=
"appointmentInfo"
>
...
@@ -305,6 +519,7 @@ const props = defineProps({
...
@@ -305,6 +519,7 @@ const props = defineProps({
fatherTabName
:
{
type
:
String
,
default
:
''
},
//一级tab名称
fatherTabName
:
{
type
:
String
,
default
:
''
},
//一级tab名称
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
editStatus
:
{
type
:
Boolean
,
default
:
true
},
//编辑状态
editStatus
:
{
type
:
Boolean
,
default
:
true
},
//编辑状态
isExportAppointment
:
{
type
:
Boolean
,
default
:
false
},
//是否导入预约信息
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
},
//tab索引
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
},
//tab索引
affixOffset
:
{
type
:
Number
,
default
:
360
}
//tab索引
affixOffset
:
{
type
:
Number
,
default
:
360
}
//tab索引
})
})
...
@@ -581,7 +796,6 @@ const timeValueChange = child => {
...
@@ -581,7 +796,6 @@ const timeValueChange = child => {
proxy
.
$message
.
warning
(
`请先选择
${
child
.
label
}
日期`
)
proxy
.
$message
.
warning
(
`请先选择
${
child
.
label
}
日期`
)
child
.
timeValue
=
''
child
.
timeValue
=
''
}
}
console
.
log
(
'signDate'
,
child
.
finishTime
)
}
}
// 签约详情
// 签约详情
const
viewDetail
=
row
=>
{
const
viewDetail
=
row
=>
{
...
@@ -631,7 +845,6 @@ const handleTableSelectChange = (father, row, key) => {
...
@@ -631,7 +845,6 @@ const handleTableSelectChange = (father, row, key) => {
}
}
}
}
})
})
}
}
// 添加表单子级dom
// 添加表单子级dom
const
addChildren
=
father
=>
{
const
addChildren
=
father
=>
{
...
@@ -759,7 +972,7 @@ const disabledDate = (time, child) => {
...
@@ -759,7 +972,7 @@ const disabledDate = (time, child) => {
switch
(
child
.
key
)
{
switch
(
child
.
key
)
{
case
'signDate'
:
case
'signDate'
:
// 默认禁用今天及今天之前
// 默认禁用今天及今天之前
return
inputDate
.
isBefore
(
today
,
'day'
)
||
inputDate
.
isSame
(
today
,
'day'
)
//
return inputDate.isBefore(today, 'day') || inputDate.isSame(today, 'day')
break
break
case
'confirmAppointmentTime'
:
case
'confirmAppointmentTime'
:
...
@@ -807,11 +1020,19 @@ const handleDateChange = child => {
...
@@ -807,11 +1020,19 @@ const handleDateChange = child => {
// 拼接日期与时分
// 拼接日期与时分
if
(
child
.
key
==
'arrivalTime'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
if
(
child
.
key
==
'arrivalTime'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
}
else
if
(
child
.
key
==
'departureTime'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
}
else
if
(
child
.
key
==
'departureTime'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
}
else
if
(
child
.
key
==
'signDate'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
}
else
if
(
child
.
key
==
'signDate'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
console
.
log
(
'signDate'
,
child
.
finishTime
)
console
.
log
(
'signDate'
,
child
.
finishTime
)
}
}
// 离港时间在到港时间之前
// 离港时间在到港时间之前
if
(
if
(
...
@@ -919,7 +1140,6 @@ const processFormData = async () => {
...
@@ -919,7 +1140,6 @@ const processFormData = async () => {
// 编辑状态下回显值
// 编辑状态下回显值
if
(
props
.
idsObj
.
appointmentBizId
)
{
if
(
props
.
idsObj
.
appointmentBizId
)
{
setFormValue
(
props
.
apiAppointmentInfoDto
,
processedData
)
setFormValue
(
props
.
apiAppointmentInfoDto
,
processedData
)
return
return
}
else
{
}
else
{
processedAppointmentData
.
value
=
processedData
processedAppointmentData
.
value
=
processedData
...
@@ -993,7 +1213,8 @@ const confirmDrawer = info => {
...
@@ -993,7 +1213,8 @@ const confirmDrawer = info => {
newObj
.
objType
=
drawerInfo
.
value
.
drawerType
newObj
.
objType
=
drawerInfo
.
value
.
drawerType
// 因为电话有多个,根据点击的电话类型在抽屉里回显,所以要用drawerInfo.value.code来控制
// 因为电话有多个,根据点击的电话类型在抽屉里回显,所以要用drawerInfo.value.code来控制
newObj
.
key
=
drawerInfo
.
value
.
key
newObj
.
key
=
drawerInfo
.
value
.
key
form
.
value
[
info
.
key
]
=
newObj
.
phoneString
=
`
${
newObj
[
drawerInfo
.
value
.
code
]}
${
newObj
[
drawerInfo
.
value
.
key
]
form
.
value
[
info
.
key
]
=
newObj
.
phoneString
=
`
${
newObj
[
drawerInfo
.
value
.
code
]}
${
newObj
[
drawerInfo
.
value
.
key
]
}
`
}
`
saveKey
.
value
[
drawerInfo
.
value
.
key
]
=
newObj
saveKey
.
value
[
drawerInfo
.
value
.
key
]
=
newObj
// 检查数组中是否已存在key的电话
// 检查数组中是否已存在key的电话
...
@@ -1140,6 +1361,7 @@ const setFormValue = (obj, formData) => {
...
@@ -1140,6 +1361,7 @@ const setFormValue = (obj, formData) => {
phoneQuickList
.
value
=
[]
phoneQuickList
.
value
=
[]
// 深拷贝原始数据
// 深拷贝原始数据
form
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
obj
))
form
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
obj
))
// 深拷贝原始数据
// 深拷贝原始数据
const
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
formData
))
const
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
formData
))
for
(
const
section
of
processedData
)
{
for
(
const
section
of
processedData
)
{
...
@@ -1165,7 +1387,7 @@ const setFormValue = (obj, formData) => {
...
@@ -1165,7 +1387,7 @@ const setFormValue = (obj, formData) => {
if
(
field
.
key
==
'confirmAppointmentTime'
&&
props
.
appointmentStatus
!==
0
)
{
if
(
field
.
key
==
'confirmAppointmentTime'
&&
props
.
appointmentStatus
!==
0
)
{
field
.
show
=
true
field
.
show
=
true
}
}
if
(
field
.
compositionTime
&&
obj
[
field
.
key
])
{
if
(
field
.
compositionTime
&&
obj
[
field
.
key
])
{
field
.
finishTime
=
obj
[
field
.
key
]
field
.
finishTime
=
obj
[
field
.
key
]
form
.
value
[
field
.
key
]
=
proxy
.
formatToDate
(
obj
[
field
.
key
])
form
.
value
[
field
.
key
]
=
proxy
.
formatToDate
(
obj
[
field
.
key
])
field
.
timeValue
=
obj
[
field
.
key
].
split
(
' '
)[
1
]
field
.
timeValue
=
obj
[
field
.
key
].
split
(
' '
)[
1
]
...
@@ -1220,7 +1442,8 @@ const setFormValue = (obj, formData) => {
...
@@ -1220,7 +1442,8 @@ const setFormValue = (obj, formData) => {
}
}
if
(
phoneObj
[
field
.
key
])
{
if
(
phoneObj
[
field
.
key
])
{
phoneObj
.
phoneString
=
form
.
value
[
field
.
key
]
=
`
${
phoneObj
[
field
.
code
]}
${
phoneObj
[
field
.
key
]
phoneObj
.
phoneString
=
form
.
value
[
field
.
key
]
=
`
${
phoneObj
[
field
.
code
]}
${
phoneObj
[
field
.
key
]
}
`
}
`
tempPhoneList
.
push
(
phoneObj
)
tempPhoneList
.
push
(
phoneObj
)
}
}
...
@@ -1242,9 +1465,8 @@ const setFormValue = (obj, formData) => {
...
@@ -1242,9 +1465,8 @@ const setFormValue = (obj, formData) => {
}
}
if
(
addressObj
)
{
if
(
addressObj
)
{
form
.
value
[
form
.
value
[
field
.
key
]
=
field
.
key
`
${
addressObj
.
region
}
${
addressObj
.
city
}
${
addressObj
.
street
}
${
addressObj
.
location
}
`
]
=
`
${
addressObj
.
region
}
${
addressObj
.
city
}
${
addressObj
.
street
}
${
addressObj
.
location
}
`
addressObj
.
addressString
=
`
${
addressObj
.
region
}
${
addressObj
.
city
}
${
addressObj
.
street
}
${
addressObj
.
location
}
`
addressObj
.
addressString
=
`
${
addressObj
.
region
}
${
addressObj
.
city
}
${
addressObj
.
street
}
${
addressObj
.
location
}
`
addressObj
.
objType
=
field
.
drawerType
addressObj
.
objType
=
field
.
drawerType
saveKey
.
value
[
field
.
key
]
=
addressObj
saveKey
.
value
[
field
.
key
]
=
addressObj
...
@@ -1385,10 +1607,9 @@ const handleFormValues = () => {
...
@@ -1385,10 +1607,9 @@ const handleFormValues = () => {
practiceCode
:
'签单员执业编码'
practiceCode
:
'签单员执业编码'
}
}
processedAppointmentData
.
value
.
forEach
(
item
=>
{
processedAppointmentData
.
value
.
forEach
(
item
=>
{
if
(
item
.
data
)
{
if
(
item
.
data
){
item
.
data
.
forEach
(
item1
=>
{
item
.
data
.
forEach
(
item1
=>
{
if
(
item1
.
key
==
'signDate'
&&
!
item1
.
timeValue
)
{
if
(
item1
.
key
==
'signDate'
&&!
item1
.
timeValue
){
errorFields
.
value
.
push
({
errorFields
.
value
.
push
({
message
:
'请选择签单日的时分'
message
:
'请选择签单日的时分'
})
})
...
@@ -1500,7 +1721,6 @@ watch(
...
@@ -1500,7 +1721,6 @@ watch(
processFormData
()
processFormData
()
hasLoaded
.
value
=
true
hasLoaded
.
value
=
true
}
}
showDetail
.
value
=
false
showDetail
.
value
=
false
openList
.
value
=
false
openList
.
value
=
false
}
}
...
@@ -1516,6 +1736,15 @@ watch(
...
@@ -1516,6 +1736,15 @@ watch(
}
}
}
}
)
)
//导入预约单成功后,要重新渲染页面回显值
watch
(
()
=>
props
.
isExportAppointment
,
newVal
=>
{
if
(
newVal
)
{
setFormValue
(
props
.
apiAppointmentInfoDto
,
processedAppointmentData
.
value
)
}
}
)
// 暴露给父组件
// 暴露给父组件
defineExpose
({
defineExpose
({
...
...
src/views/sign/appointment/components/beneficiaryInfo.vue
View file @
e6731b25
<
template
>
<
template
>
<div
style=
"padding-top: 10px"
>
<div
style=
"padding-top: 10px"
>
<div
ref=
"beneficiaryRef"
>
<div
ref=
"beneficiaryRef"
>
<CommonForm
:showAnchor=
"false"
>
<CommonForm
:showAnchor=
"false"
>
...
@@ -277,6 +276,7 @@ const props = defineProps({
...
@@ -277,6 +276,7 @@ const props = defineProps({
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
editStatus
:
{
type
:
Boolean
,
default
:
true
},
//编辑状态
editStatus
:
{
type
:
Boolean
,
default
:
true
},
//编辑状态
affixOffset
:
{
type
:
Number
},
affixOffset
:
{
type
:
Number
},
isExportAppointment
:
{
type
:
Boolean
,
default
:
false
},
//是否导入
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
}
//tab索引
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
}
//tab索引
})
})
const
emit
=
defineEmits
([
'handleSuccessEdit'
,
'policyEditSuccess'
])
const
emit
=
defineEmits
([
'handleSuccessEdit'
,
'policyEditSuccess'
])
...
@@ -589,7 +589,7 @@ const processFormData = async obj => {
...
@@ -589,7 +589,7 @@ const processFormData = async obj => {
}
}
}
}
}
}
if
(
props
.
idsObj
.
appointmentBizId
)
{
if
(
props
.
idsObj
.
appointmentBizId
)
{
setFormValue
(
processedData
)
setFormValue
(
processedData
)
}
else
{
}
else
{
processedBeneficiaryData
.
value
=
oldAppointmentData
.
value
=
processedData
processedBeneficiaryData
.
value
=
oldAppointmentData
.
value
=
processedData
...
@@ -681,9 +681,8 @@ const confirmDrawer = info => {
...
@@ -681,9 +681,8 @@ const confirmDrawer = info => {
newObj
.
type
=
drawerInfo
.
value
.
key
newObj
.
type
=
drawerInfo
.
value
.
key
newObj
.
id
=
drawerInfo
.
value
.
id
newObj
.
id
=
drawerInfo
.
value
.
id
newObj
.
drawerType
=
drawerInfo
.
value
.
drawerType
newObj
.
drawerType
=
drawerInfo
.
value
.
drawerType
form
.
value
.
apiBeneficiaryInfoDtoList
[
drawerInfo
.
value
.
l1
][
form
.
value
.
apiBeneficiaryInfoDtoList
[
drawerInfo
.
value
.
l1
][
drawerInfo
.
value
.
key
]
=
drawerInfo
.
value
.
key
`
${
newObj
.
region
}
${
newObj
.
city
}
${
newObj
.
street
}
${
newObj
.
location
}
`
]
=
`
${
newObj
.
region
}
${
newObj
.
city
}
${
newObj
.
street
}
${
newObj
.
location
}
`
newObj
.
addressString
=
`
${
newObj
.
region
}
${
newObj
.
city
}
${
newObj
.
street
}
${
newObj
.
location
}
`
newObj
.
addressString
=
`
${
newObj
.
region
}
${
newObj
.
city
}
${
newObj
.
street
}
${
newObj
.
location
}
`
// 检查数组中是否已存在相同ID的地址
// 检查数组中是否已存在相同ID的地址
...
@@ -858,7 +857,6 @@ const setFormValue = processedData => {
...
@@ -858,7 +857,6 @@ const setFormValue = processedData => {
}
}
}
}
processedBeneficiaryData
.
value
=
oldDom
processedBeneficiaryData
.
value
=
oldDom
console
.
log
(
'受益人表单'
,
form
.
value
)
console
.
log
(
'dom'
,
processedBeneficiaryData
.
value
)
console
.
log
(
'dom'
,
processedBeneficiaryData
.
value
)
}
}
// 获取校验失败的字段信息
// 获取校验失败的字段信息
...
@@ -954,7 +952,15 @@ watch(
...
@@ -954,7 +952,15 @@ watch(
}
}
}
}
)
)
//导入预约单成功后,要重新渲染页面回显值
watch
(
()
=>
props
.
isExportAppointment
,
newVal
=>
{
if
(
newVal
)
{
setFormValue
(
processedBeneficiaryData
.
value
)
}
}
)
// 暴露给父组件
// 暴露给父组件
defineExpose
({
defineExpose
({
handleFormValues
,
handleFormValues
,
...
...
src/views/sign/appointment/components/productPlan.vue
View file @
e6731b25
...
@@ -249,7 +249,8 @@ import {
...
@@ -249,7 +249,8 @@ import {
getAdditionalProductList
,
getAdditionalProductList
,
secondAdditonalList
,
secondAdditonalList
,
getInsuranceCategory
,
getInsuranceCategory
,
getInsuranceCompany
getInsuranceCompany
,
insuranceReconciliationCompany
}
from
'@/api/common'
}
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
{
updatePolicyProduct
,
delPolicyAdditional
}
from
'@/api/sign/underwritingMain'
...
@@ -272,6 +273,7 @@ const props = defineProps({
...
@@ -272,6 +273,7 @@ const props = defineProps({
fatherTabName
:
{
type
:
String
,
default
:
''
},
//一级tab名称
fatherTabName
:
{
type
:
String
,
default
:
''
},
//一级tab名称
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
editStatus
:
{
type
:
Boolean
,
default
:
true
},
//编辑状态
editStatus
:
{
type
:
Boolean
,
default
:
true
},
//编辑状态
isExportAppointment
:
{
type
:
Boolean
,
default
:
false
},
//是否导入
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
}
//tab索引
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
}
//tab索引
})
})
const
emit
=
defineEmits
([
'handleSuccessEdit'
,
'policyEditSuccess'
])
const
emit
=
defineEmits
([
'handleSuccessEdit'
,
'policyEditSuccess'
])
...
@@ -475,6 +477,14 @@ const handleSearchSelectChange = (father, key) => {
...
@@ -475,6 +477,14 @@ const handleSearchSelectChange = (father, key) => {
}
}
})
})
}
}
if
(
key
==
'reconciliationCompanyName'
)
{
searchOptions
.
value
[
'reconciliationCompanyName'
].
forEach
(
item
=>
{
if
(
form
.
value
[
father
.
key
][
key
]
==
item
.
value
)
{
form
.
value
[
father
.
key
][
key
]
=
item
.
label
form
.
value
[
father
.
key
].
reconciliationCompanyId
=
item
.
value
}
})
}
}
}
// 下拉框搜索方法
// 下拉框搜索方法
// 搜索方法
// 搜索方法
...
@@ -553,7 +563,7 @@ const searchSelectList = async (query, fieldKey) => {
...
@@ -553,7 +563,7 @@ const searchSelectList = async (query, fieldKey) => {
showCancel
:
'0'
,
showCancel
:
'0'
,
title
:
'填写提示'
title
:
'填写提示'
})
})
// row.insuranceType = ''
return
return
}
}
const
params1
=
{
const
params1
=
{
...
@@ -572,6 +582,23 @@ const searchSelectList = async (query, fieldKey) => {
...
@@ -572,6 +582,23 @@ const searchSelectList = async (query, fieldKey) => {
})
})
searchOptions
.
value
[
fieldKey
]
=
response1
.
data
.
records
searchOptions
.
value
[
fieldKey
]
=
response1
.
data
.
records
}
}
}
else
if
(
fieldKey
==
'reconciliationCompanyName'
)
{
const
params1
=
{
pageNo
:
1
,
pageSize
:
10
,
name
:
query
.
trim
()
}
const
response1
=
await
insuranceReconciliationCompany
(
params1
)
if
(
response1
.
code
==
200
)
{
response1
.
data
.
records
=
response1
.
data
.
records
.
map
(
item
=>
{
return
{
...
item
,
label
:
item
.
name
,
value
:
item
.
reconciliationCompanyBizId
}
})
searchOptions
.
value
[
fieldKey
]
=
response1
.
data
.
records
}
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
`
${
fieldKey
}
搜索失败`
,
error
)
console
.
error
(
`
${
fieldKey
}
搜索失败`
,
error
)
...
@@ -735,6 +762,15 @@ const handleSelectChange = (father, child) => {
...
@@ -735,6 +762,15 @@ const handleSelectChange = (father, child) => {
}
}
break
break
case
'isPrepay'
:
// 选是,展示日期
if
(
form
.
value
[
father
.
key
][
child
.
key
]
==
'1'
)
{
resetShow
(
'prepaymentPeriod'
,
true
)
}
else
{
resetShow
(
'prepaymentPeriod'
,
false
)
}
break
default
:
default
:
break
break
...
@@ -805,6 +841,13 @@ const setFormValue = (obj, formData) => {
...
@@ -805,6 +841,13 @@ const setFormValue = (obj, formData) => {
)
{
)
{
filed
.
show
=
true
filed
.
show
=
true
}
}
if
(
filed
.
key
==
'prepaymentPeriod'
&&
obj
.
apiProductPlanMainInfoDto
.
isPrepay
&&
obj
.
apiProductPlanMainInfoDto
.
isPrepay
==
'1'
)
{
filed
.
show
=
true
}
}
}
// 为附加险增加dom
// 为附加险增加dom
if
(
if
(
...
@@ -939,7 +982,15 @@ watch(
...
@@ -939,7 +982,15 @@ watch(
}
}
}
}
)
)
//导入预约单成功后,要重新渲染页面回显值
watch
(
()
=>
props
.
isExportAppointment
,
newVal
=>
{
if
(
newVal
)
{
setFormValue
(
props
.
apiProductPlanInfoDto
,
processedProductData
.
value
)
}
}
)
// 暴露给父组件
// 暴露给父组件
defineExpose
({
defineExpose
({
handleSubmitForm
,
handleSubmitForm
,
...
...
src/views/sign/appointment/components/secondHolderInfo.vue
View file @
e6731b25
...
@@ -246,7 +246,8 @@ const props = defineProps({
...
@@ -246,7 +246,8 @@ const props = defineProps({
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
anchorContainer
:
{
type
:
String
,
default
:
''
},
//锚点滚动容器
editStatus
:
{
type
:
Boolean
,
default
:
false
},
//编辑状态
editStatus
:
{
type
:
Boolean
,
default
:
false
},
//编辑状态
affixOffset
:
{
type
:
Number
},
affixOffset
:
{
type
:
Number
},
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
}
//tab索引
tabIndex
:
{
type
:
[
String
,
Number
],
default
:
''
},
//tab索引
isExportAppointment
:
{
type
:
Boolean
,
default
:
false
}
//是否导入
})
})
const
emit
=
defineEmits
([
'handleSuccessEdit'
,
'policyEditSuccess'
])
const
emit
=
defineEmits
([
'handleSuccessEdit'
,
'policyEditSuccess'
])
...
@@ -757,7 +758,6 @@ watch(
...
@@ -757,7 +758,6 @@ watch(
exportValue
:
null
,
exportValue
:
null
,
detailInfo
:
props
.
apiSecondHolderInfoDto
detailInfo
:
props
.
apiSecondHolderInfoDto
})
})
console
.
log
(
' props.apiSecondHolderInfoDto'
,
props
.
apiSecondHolderInfoDto
)
}
else
{
}
else
{
processFormData
({
processFormData
({
domdata
:
secondHolderDomData
,
domdata
:
secondHolderDomData
,
...
@@ -769,7 +769,19 @@ watch(
...
@@ -769,7 +769,19 @@ watch(
}
}
}
}
)
)
//导入预约单成功后,要重新渲染页面回显值
watch
(
()
=>
props
.
isExportAppointment
,
newVal
=>
{
if
(
newVal
)
{
processFormData
({
domdata
:
secondHolderDomData
,
exportValue
:
null
,
detailInfo
:
props
.
apiSecondHolderInfoDto
})
}
}
)
// 暴露给父组件
// 暴露给父组件
defineExpose
({
defineExpose
({
handleFormValues
,
handleFormValues
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment