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
f1e81e99
Commit
f1e81e99
authored
Jan 16, 2026
by
yuzhenWang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-20250827wyz-写业务' into 'test'
发布测试 See merge request
!45
parents
6ae4c2de
48ce4bc3
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
113 additions
and
48 deletions
+113
-48
src/components/formCard/cardOne.vue
+5
-1
src/formJson/beneficiary.js
+2
-1
src/formJson/customer.js
+1
-0
src/formJson/secondHolder.js
+2
-1
src/views/components/commonForm.vue
+37
-0
src/views/sign/FnaList/components/customer.vue
+6
-2
src/views/sign/FnaList/components/fanForm.vue
+1
-1
src/views/sign/appointment/appointmentEdit.vue
+40
-32
src/views/sign/appointment/components/appointmentInfo.vue
+3
-1
src/views/sign/appointment/components/beneficiaryInfo.vue
+7
-3
src/views/sign/appointment/components/healthInfo.vue
+1
-1
src/views/sign/appointment/components/productPlan.vue
+1
-1
src/views/sign/appointment/components/secondHolderInfo.vue
+6
-3
src/views/sign/policyReceipts/premiumRecon.vue
+1
-1
No files found.
src/components/formCard/cardOne.vue
View file @
f1e81e99
<
template
>
<
template
>
<div
class=
"cardOneContainer"
>
<div
class=
"cardOneContainer"
>
<el-card
class=
"cardStyle"
>
<el-card
class=
"cardStyle"
>
<template
#
header
>
<template
#
header
v-if=
"showTitle"
>
<div
class=
"cardOneheader"
>
<div
class=
"cardOneheader"
>
<div
class=
"cardOneLeft"
>
<div
class=
"cardOneLeft"
>
<div
class=
"mainTitle"
>
<div
class=
"mainTitle"
>
...
@@ -25,6 +25,10 @@ const props = defineProps({
...
@@ -25,6 +25,10 @@ const props = defineProps({
type
:
String
,
type
:
String
,
default
:
''
default
:
''
},
},
showTitle
:
{
type
:
Boolean
,
default
:
true
},
desTitle
:
{
desTitle
:
{
type
:
String
,
type
:
String
,
default
:
''
default
:
''
...
...
src/formJson/beneficiary.js
View file @
f1e81e99
const
beneficiary
=
[
const
beneficiary
=
[
{
{
fatherTitle
:
'是否法定受益人'
,
fatherTitle
:
''
,
showTitle
:
false
,
keyType
:
'Object'
,
//用于表单收集值时,判断是数组还是对象
keyType
:
'Object'
,
//用于表单收集值时,判断是数组还是对象
key
:
'isLegalBeneficiary'
,
key
:
'isLegalBeneficiary'
,
anchorKey
:
'isLegalBeneficiary'
,
anchorKey
:
'isLegalBeneficiary'
,
...
...
src/formJson/customer.js
View file @
f1e81e99
...
@@ -2,6 +2,7 @@ const customer = [
...
@@ -2,6 +2,7 @@ const customer = [
// 与投保人关系-在受保人中显示
// 与投保人关系-在受保人中显示
{
{
fatherTitle
:
'与投保人关系'
,
fatherTitle
:
'与投保人关系'
,
showTitle
:
false
,
type
:
'object'
,
type
:
'object'
,
key
:
'policyholderRel'
,
key
:
'policyholderRel'
,
anchorKey
:
'policyholderRel'
,
anchorKey
:
'policyholderRel'
,
...
...
src/formJson/secondHolder.js
View file @
f1e81e99
const
secondHolder
=
[
const
secondHolder
=
[
{
{
fatherTitle
:
'是否有第二持有人'
,
fatherTitle
:
''
,
showTitle
:
false
,
keyType
:
'Object'
,
//用于表单收集值时,判断是数组还是对象
keyType
:
'Object'
,
//用于表单收集值时,判断是数组还是对象
key
:
'isSecond'
,
key
:
'isSecond'
,
anchorKey
:
'isSecond'
,
anchorKey
:
'isSecond'
,
...
...
src/views/components/commonForm.vue
View file @
f1e81e99
...
@@ -101,6 +101,7 @@ const handleLinkClick = (e, anchorId) => {
...
@@ -101,6 +101,7 @@ const handleLinkClick = (e, anchorId) => {
// 滚动到锚点
// 滚动到锚点
const
scrollToAnchor
=
anchorId
=>
{
const
scrollToAnchor
=
anchorId
=>
{
const
targetElement
=
document
.
getElementById
(
anchorId
)
const
targetElement
=
document
.
getElementById
(
anchorId
)
if
(
!
targetElement
)
return
if
(
!
targetElement
)
return
let
scrollContainer
let
scrollContainer
...
@@ -132,7 +133,43 @@ const scrollToAnchor = anchorId => {
...
@@ -132,7 +133,43 @@ const scrollToAnchor = anchorId => {
})
})
}
}
}
}
// 预留备用
// const scrollToAnchor = async (anchorId: string) => {
// // 确保 DOM 更新完成(尤其在 tab 切换后)
// await nextTick()
// const target = document.getElementById(anchorId)
// if (!target) {
// console.warn(`[Anchor Scroll] Target element not found: #${anchorId}`)
// return
// }
// // 关键:从目标元素向上查找最近的 .appointmentTabPaneBox
// let scrollContainer: HTMLElement | null = target
// while (scrollContainer && !scrollContainer.classList.contains('appointmentTabPaneBox')) {
// scrollContainer = scrollContainer.parentElement
// }
// if (!scrollContainer) {
// // 如果没找到,回退到全局滚动
// target.scrollIntoView({ behavior: 'smooth', block: 'start' })
// return
// }
// // 计算相对滚动位置
// const containerRect = scrollContainer.getBoundingClientRect()
// const targetRect = target.getBoundingClientRect()
// const scrollTop =
// scrollContainer.scrollTop +
// (targetRect.top - containerRect.top) -
// props.scrollOffset
// scrollContainer.scrollTo({
// top: scrollTop,
// behavior: 'smooth'
// })
// }
// 暴露方法给父组件
// 暴露方法给父组件
defineExpose
({
defineExpose
({
scrollToAnchor
scrollToAnchor
...
...
src/views/sign/FnaList/components/customer.vue
View file @
f1e81e99
<
template
>
<
template
>
<div
class=
"customerContainer"
>
<div
class=
"customerContainer"
style=
"padding-top: 10px"
>
<div
ref=
"customerRightRef"
>
<div
ref=
"customerRightRef"
>
<div
class=
"editBtn"
>
<div
class=
"editBtn"
>
<el-button
<el-button
...
@@ -24,7 +24,11 @@
...
@@ -24,7 +24,11 @@
<el-form
:model=
"form"
:rules=
"rules"
label-width=
"120px"
ref=
"customerFormRef"
>
<el-form
:model=
"form"
:rules=
"rules"
label-width=
"120px"
ref=
"customerFormRef"
>
<el-row
v-for=
"(father, fIndex) in processedCustomerData"
:id=
"father.anchorKey"
>
<el-row
v-for=
"(father, fIndex) in processedCustomerData"
:id=
"father.anchorKey"
>
<div
class=
"formBox"
>
<div
class=
"formBox"
>
<CardOne
:title=
"father.fatherTitle"
v-if=
"father.showMoudle"
>
<CardOne
:showTitle=
"father.showTitle"
:title=
"father.fatherTitle"
v-if=
"father.showMoudle"
>
<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"
>
...
...
src/views/sign/FnaList/components/fanForm.vue
View file @
f1e81e99
<
template
>
<
template
>
<div
v-if=
"processedFanFormData.length > 0"
>
<div
v-if=
"processedFanFormData.length > 0"
style=
"padding-top: 10px"
>
<div
ref=
"fanContainerRef"
>
<div
ref=
"fanContainerRef"
>
<div
class=
"editBtn"
>
<div
class=
"editBtn"
>
<el-button
<el-button
...
...
src/views/sign/appointment/appointmentEdit.vue
View file @
f1e81e99
...
@@ -122,7 +122,12 @@
...
@@ -122,7 +122,12 @@
</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
v-for=
"tab in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
<el-tab-pane
v-for=
"(tab, index) in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
<div
<div
class=
"appointmentTabPaneBox"
class=
"appointmentTabPaneBox"
:style=
"
{
:style=
"
{
...
@@ -181,7 +186,9 @@
...
@@ -181,7 +186,9 @@
:customerBizId=
"props.processDetail.customerBizId"
:customerBizId=
"props.processDetail.customerBizId"
/>
/>
</div>
</div>
<!-- 受保人 -->
<div
v-if=
"tab.name === 'insurantInfo'"
>
<div
v-if=
"tab.name === 'insurantInfo'"
>
<!-- anchorContainer=".appointmentTabPaneBox" -->
<Customer
<Customer
:activeName=
"activeName"
:activeName=
"activeName"
:fatherTabName=
"tabName"
:fatherTabName=
"tabName"
...
@@ -194,6 +201,7 @@
...
@@ -194,6 +201,7 @@
:fatherEditStatus=
"editStatus"
:fatherEditStatus=
"editStatus"
:idsObj=
"idsObj"
:idsObj=
"idsObj"
:customerBizId=
"props.processDetail.customerBizId"
:customerBizId=
"props.processDetail.customerBizId"
:customerInfo=
"customerInfo"
:apiInsurantInfoDto=
"appointmentSummeryInfo.apiInsurantInfoDto"
:apiInsurantInfoDto=
"appointmentSummeryInfo.apiInsurantInfoDto"
/>
/>
</div>
</div>
...
@@ -819,37 +827,37 @@ const getDictsData = async () => {
...
@@ -819,37 +827,37 @@ const getDictsData = async () => {
})
})
dictStore
.
setSignPeopleList
(
response7
.
data
.
records
)
dictStore
.
setSignPeopleList
(
response7
.
data
.
records
)
}
}
//
proxy.useDictLists([
proxy
.
useDictLists
([
//
'csf_employment',
'csf_employment'
,
//
'sys_no_yes',
'sys_no_yes'
,
//
'bx_currency_type',
'bx_currency_type'
,
//
'csf_liquid_asset_type',
'csf_liquid_asset_type'
,
//
'csf_premium_funding_source',
'csf_premium_funding_source'
,
//
'csf_customer_type',
'csf_customer_type'
,
//
'csf_customer_title',
'csf_customer_title'
,
//
'sys_gender',
'sys_gender'
,
//
'csf_marriage',
'csf_marriage'
,
//
'csf_education',
'csf_education'
,
//
'csf_id_type',
'csf_id_type'
,
//
'csf_ap_apply_type',
'csf_ap_apply_type'
,
//
'csf_ap_meeting_point',
'csf_ap_meeting_point'
,
//
'csf_ap_first_issue',
'csf_ap_first_issue'
,
//
'csf_ap_dividend',
'csf_ap_dividend'
,
//
'csf_ap_frequency',
'csf_ap_frequency'
,
//
'csf_ap_rel',
'csf_ap_rel'
,
//
'csf_ap_registration',
'csf_ap_registration'
,
//
'csf_ap_exercise',
'csf_ap_exercise'
,
//
'csf_ap_risk',
'csf_ap_risk'
,
//
'csf_ap_movie',
'csf_ap_movie'
,
//
'csf_ap_game',
'csf_ap_game'
,
//
'csf_ap_policy_transfer',
'csf_ap_policy_transfer'
,
//
'wj_question_first_category',
'wj_question_first_category'
,
//
'wj_question_second_category',
'wj_question_second_category'
,
//
'csf_ap_status',
'csf_ap_status'
,
//
'md_bank',
'md_bank'
,
//
'oss_data_type',
'oss_data_type'
,
//
'oss_data_person'
'oss_data_person'
//
])
])
}
}
// Tab切换前的验证
// Tab切换前的验证
const
beforeTabLeave
=
async
(
activeTabName
,
oldTabName
)
=>
{
const
beforeTabLeave
=
async
(
activeTabName
,
oldTabName
)
=>
{
...
...
src/views/sign/appointment/components/appointmentInfo.vue
View file @
f1e81e99
...
@@ -2,7 +2,9 @@
...
@@ -2,7 +2,9 @@
<div
v-if=
"processedAppointmentData.length > 0"
>
<div
v-if=
"processedAppointmentData.length > 0"
>
<div
ref=
"appointmentRef"
>
<div
ref=
"appointmentRef"
>
<!-- 预约为父组件得第一个tab,初次渲染得时候锚点没正常显示,先这样解决有空再解决 -->
<!-- 预约为父组件得第一个tab,初次渲染得时候锚点没正常显示,先这样解决有空再解决 -->
<div
style=
"position: relative; top: -100%; left: -100%"
>
{{
appointmentRef
}}
</div>
<div
style=
"position: relative; top: -100%; left: -1100%"
>
{{
appointmentRef
}}
</div>
<CommonForm
<CommonForm
:anchorList=
"anchorList"
:anchorList=
"anchorList"
:affixOffset=
"affixOffset"
:affixOffset=
"affixOffset"
...
...
src/views/sign/appointment/components/beneficiaryInfo.vue
View file @
f1e81e99
<
template
>
<
template
>
<!-- v-if="processedBeneficiaryData.length > 0" -->
<div>
<div
style=
"padding-top: 10px"
>
<div
ref=
"beneficiaryRef"
>
<div
ref=
"beneficiaryRef"
>
<CommonForm
:showAnchor=
"false"
>
<CommonForm
:showAnchor=
"false"
>
<template
#
form-right
>
<template
#
form-right
>
<el-form
ref=
"beneficiaryInfoFormRef"
:model=
"form"
:rules=
"rules"
>
<el-form
ref=
"beneficiaryInfoFormRef"
:model=
"form"
:rules=
"rules"
>
<el-row
v-for=
"father in processedBeneficiaryData"
style=
"margin-bottom: 10px"
>
<el-row
v-for=
"father in processedBeneficiaryData"
style=
"margin-bottom: 10px"
>
<div
class=
"formBox formFna"
>
<div
class=
"formBox formFna"
>
<CardOne
:title=
"father.fatherTitle"
v-if=
"father.showMoudle"
>
<CardOne
:showTitle=
"father.showTitle"
:title=
"father.fatherTitle"
v-if=
"father.showMoudle"
>
<template
#
content
>
<template
#
content
>
<el-row
v-if=
"!father.showTable"
:gutter=
"20"
>
<el-row
v-if=
"!father.showTable"
:gutter=
"20"
>
<template
v-for=
"child in father.data"
:key=
"child.key"
>
<template
v-for=
"child in father.data"
:key=
"child.key"
>
...
...
src/views/sign/appointment/components/healthInfo.vue
View file @
f1e81e99
<
template
>
<
template
>
<div>
<div
style=
"padding-top: 10px"
>
<div
v-if=
"questionnairesDom.length > 0"
ref=
"questionRef"
>
<div
v-if=
"questionnairesDom.length > 0"
ref=
"questionRef"
>
<CommonForm
<CommonForm
:anchorList=
"anchorList"
:anchorList=
"anchorList"
...
...
src/views/sign/appointment/components/productPlan.vue
View file @
f1e81e99
<
template
>
<
template
>
<!-- v-if="processedProductData.length > 0" -->
<!-- v-if="processedProductData.length > 0" -->
<div>
<div
style=
"padding-top: 10px"
>
<div
ref=
"productRef"
>
<div
ref=
"productRef"
>
<CommonForm
<CommonForm
:anchorList=
"anchorList"
:anchorList=
"anchorList"
...
...
src/views/sign/appointment/components/secondHolderInfo.vue
View file @
f1e81e99
<
template
>
<
template
>
<!-- v-if="processedSecondHolderData.length > 0" -->
<div
style=
"padding-top: 10px"
>
<div>
<div>
<div>
<CommonForm
:showAnchor=
"false"
>
<CommonForm
:showAnchor=
"false"
>
<template
#
form-right
>
<template
#
form-right
>
<el-form
ref=
"secondHolderFormRef"
:model=
"form"
:rules=
"rules"
>
<el-form
ref=
"secondHolderFormRef"
:model=
"form"
:rules=
"rules"
>
<el-row
v-for=
"father in processedSecondHolderData"
style=
"margin-bottom: 10px"
>
<el-row
v-for=
"father in processedSecondHolderData"
style=
"margin-bottom: 10px"
>
<div
class=
"formBox formFna"
>
<div
class=
"formBox formFna"
>
<CardOne
:title=
"father.fatherTitle"
v-if=
"father.showMoudle"
>
<CardOne
:title=
"father.fatherTitle"
v-if=
"father.showMoudle"
:showTitle=
"father.showTitle"
>
<template
#
content
>
<template
#
content
>
<el-row
v-if=
"!father.showTable"
:gutter=
"20"
>
<el-row
v-if=
"!father.showTable"
:gutter=
"20"
>
<template
v-for=
"child in father.data"
:key=
"child.key"
>
<template
v-for=
"child in father.data"
:key=
"child.key"
>
...
...
src/views/sign/policyReceipts/premiumRecon.vue
View file @
f1e81e99
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
?
'首期保费对账'
?
'首期保费对账'
:
'续期保费对账'
:
'续期保费对账'
}}
}}
<!--
{{
getDictLabel
(
'reconciliation_type'
,
row
.
reconciliationType
)
}}
-->
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"insuranceCompany"
label=
"保险公司"
width=
"150"
/>
<el-table-column
prop=
"insuranceCompany"
label=
"保险公司"
width=
"150"
/>
...
...
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