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
7f73a77f
Commit
7f73a77f
authored
Mar 10, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into prod
parents
b59dc9b9
daf22e2d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
494 additions
and
336 deletions
+494
-336
src/components/SearchForm/SearchForm.vue
+38
-1
src/components/commonDialog/index.vue
+1
-1
src/formJson/beneficiary.js
+1
-0
src/formJson/customer.js
+2
-2
src/formJson/fnaForm.js
+75
-72
src/formJson/productPlan.js
+14
-14
src/formJson/secondHolder.js
+1
-0
src/utils/copyToClipboard.js
+43
-0
src/views/financialCenter/financialBilling.vue
+21
-16
src/views/financialCenter/financialIncome.vue
+4
-4
src/views/financialCenter/financialSalary.vue
+2
-2
src/views/financialCenter/payables.vue
+11
-10
src/views/financialCenter/receivables.vue
+14
-14
src/views/sign/FnaList/components/customer.vue
+27
-20
src/views/sign/FnaList/components/fanForm.vue
+12
-1
src/views/sign/FnaList/edit.vue
+65
-50
src/views/sign/FnaList/index.vue
+35
-11
src/views/sign/appointment/appointmentEdit.vue
+2
-32
src/views/sign/appointment/components/appointmentInfo.vue
+14
-27
src/views/sign/appointment/components/beneficiaryInfo.vue
+8
-1
src/views/sign/appointment/components/productPlan.vue
+1
-17
src/views/sign/appointment/components/secondHolderInfo.vue
+7
-0
src/views/sign/appointment/index.vue
+10
-8
src/views/sign/policyReceipts/index.vue
+2
-1
src/views/sign/policyReceipts/premiumRecon.vue
+39
-10
src/views/sign/underwritingMain/index.vue
+30
-7
src/views/sign/underwritingMain/policyDetail.vue
+0
-0
src/views/workbench/index.vue
+15
-15
No files found.
src/components/SearchForm/SearchForm.vue
View file @
7f73a77f
...
@@ -579,7 +579,7 @@ async function loadRemoteOptionsForInit(item) {
...
@@ -579,7 +579,7 @@ async function loadRemoteOptionsForInit(item) {
// ==================== 加载远程 API 选项(首次 focus 时加载,无搜索词) ====================
// ==================== 加载远程 API 选项(首次 focus 时加载,无搜索词) ====================
async
function
loadRemoteOptions
(
item
)
{
async
function
loadRemoteOptions
(
item
)
{
const
{
prop
,
api
,
requestParams
,
keywordField
,
debounceWait
,
...
rest
}
=
item
const
{
prop
,
api
,
requestParams
,
keywordField
,
debounceWait
,
...
rest
}
=
item
if
(
!
api
||
remoteOptions
.
value
[
prop
]?.
length
>
0
)
return
if
(
!
api
)
return
try
{
try
{
remoteLoading
.
value
[
prop
]
=
true
remoteLoading
.
value
[
prop
]
=
true
...
@@ -728,6 +728,43 @@ defineExpose({
...
@@ -728,6 +728,43 @@ defineExpose({
})
})
localModel
.
value
=
{
...
resetData
}
localModel
.
value
=
{
...
resetData
}
nextTick
(()
=>
formRef
.
value
?.
clearValidate
())
nextTick
(()
=>
formRef
.
value
?.
clearValidate
())
},
// ✅ 新增:强制刷新某个字段的远程选项
async
refreshRemoteOptions
(
targetProp
)
{
console
.
log
(
`[SearchForm] 收到刷新请求:
${
targetProp
}
`
)
// 1. 查找配置项
const
item
=
internalConfig
.
value
.
find
(
i
=>
i
.
prop
===
targetProp
)
if
(
!
item
)
{
console
.
warn
(
`[SearchForm] 未找到 prop 为
${
targetProp
}
的配置项`
)
return
}
if
(
item
.
type
!==
'select'
||
!
item
.
api
)
{
console
.
warn
(
`[SearchForm] 字段
${
targetProp
}
不是远程 Select 或没有 API`
)
return
}
console
.
log
(
`[SearchForm] 开始强制加载
${
targetProp
}
的数据,API:
${
item
.
api
}
`
)
// 2. 关键:在调用前,先清空旧数据,防止子组件内部的 "已加载则跳过" 逻辑生效
// 如果你的 loadRemoteOptions 里有 "if (remoteOptions.value[prop]?.length > 0) return"
// 这里必须先清空
remoteOptions
.
value
[
targetProp
]
=
[]
remoteLoading
.
value
[
targetProp
]
=
true
// 手动开启 loading
try
{
// 3. 调用内部加载函数
// 注意:直接调用 loadRemoteOptions,它会读取最新的 requestParams
await
loadRemoteOptions
(
item
)
console
.
log
(
`[SearchForm]
${
targetProp
}
加载完成`
)
}
catch
(
error
)
{
console
.
error
(
`[SearchForm]
${
targetProp
}
加载失败`
,
error
)
throw
error
}
finally
{
remoteLoading
.
value
[
targetProp
]
=
false
}
}
}
})
})
</
script
>
</
script
>
...
...
src/components/commonDialog/index.vue
View file @
7f73a77f
...
@@ -82,7 +82,7 @@ const props = defineProps({
...
@@ -82,7 +82,7 @@ const props = defineProps({
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
},
},
//
打开弹窗
//
确定按钮loading效果
confirmLoading
:
{
confirmLoading
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
false
default
:
false
...
...
src/formJson/beneficiary.js
View file @
7f73a77f
...
@@ -13,6 +13,7 @@ const beneficiary = [
...
@@ -13,6 +13,7 @@ const beneficiary = [
label
:
'是否法定受益人'
,
label
:
'是否法定受益人'
,
key
:
'isLegalBeneficiary'
,
key
:
'isLegalBeneficiary'
,
domType
:
'Select'
,
domType
:
'Select'
,
defaultValue
:
'1'
,
required
:
true
,
required
:
true
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请选择'
,
placeholder
:
'请选择'
,
...
...
src/formJson/customer.js
View file @
7f73a77f
...
@@ -69,8 +69,8 @@ const customer = [
...
@@ -69,8 +69,8 @@ const customer = [
timeType
:
'daterange'
,
timeType
:
'daterange'
,
custom
:
true
,
custom
:
true
,
placeholder
:
'请选择证件有效期'
,
placeholder
:
'请选择证件有效期'
,
required
:
true
,
//
required: true,
width
:
300
width
:
300
}
}
],
],
data
:
[]
data
:
[]
...
...
src/formJson/fnaForm.js
View file @
7f73a77f
const
fnaForm
=
[
const
fnaForm
=
[
// 介绍人信息
// 介绍人信息
{
//
{
fatherTitle
:
'转介人信息'
,
//
fatherTitle: '转介人信息',
keyType
:
'Array'
,
//
keyType: 'Array',
key
:
'brokerList'
,
//
key: 'brokerList',
anchorKey
:
'brokerList'
,
//
anchorKey: 'brokerList',
moudleType
:
'brokerList'
,
//
moudleType: 'brokerList',
dataLength
:
1
,
//
dataLength: 1,
showMoudle
:
true
,
//
showMoudle: true,
showTable
:
true
,
//
showTable: true,
addChildren
:
true
,
//
addChildren: true,
addChildrenTxt
:
'转介人'
,
//
addChildrenTxt: '转介人',
fatherRequired
:
false
,
//
fatherRequired: false,
isOpen
:
false
,
//
isOpen: false,
// 新增表格列配置
//
// 新增表格列配置
columns
:
[
//
columns: [
{
//
{
label
:
'姓名'
,
//
label: '姓名',
prop
:
'brokerName'
,
//
prop: 'brokerName',
type
:
'remoteSelect'
,
//
type: 'remoteSelect',
searchType
:
'brokerName'
,
//
searchType: 'brokerName',
placeholder
:
'请输入关键词搜索'
,
//
placeholder: '请输入关键词搜索',
required
:
false
//
required: false
},
//
},
{
//
{
label
:
'性别'
,
//
label: '性别',
prop
:
'brokerGender'
,
//
prop: 'brokerGender',
type
:
'select'
,
//
type: 'select',
dictType
:
'sys_gender'
,
//
dictType: 'sys_gender',
placeholder
:
'请选择'
,
//
placeholder: '请选择',
required
:
false
//
required: false
},
//
},
{
//
{
label
:
'内部编号'
,
//
label: '内部编号',
prop
:
'brokerNumber'
,
//
prop: 'brokerNumber',
type
:
'input'
,
//
type: 'input',
placeholder
:
'请输入'
,
//
placeholder: '请输入',
required
:
false
//
required: false
},
//
},
{
//
{
label
:
'所属团队'
,
//
label: '所属团队',
prop
:
'brokerTeam'
,
//
prop: 'brokerTeam',
type
:
'remoteSelect'
,
//
type: 'remoteSelect',
searchType
:
'brokerTeam'
,
//
searchType: 'brokerTeam',
placeholder
:
'请输入关键词搜索'
,
//
placeholder: '请输入关键词搜索',
required
:
false
//
required: false
},
//
},
{
//
{
label
:
'分配比例'
,
//
label: '分配比例',
prop
:
'brokerRatio'
,
//
prop: 'brokerRatio',
type
:
'inputNumber'
,
//
type: 'inputNumber',
placeholder
:
'请输入'
,
//
placeholder: '请输入',
required
:
true
//
required: true
},
//
},
{
//
{
label
:
'备注'
,
//
label: '备注',
prop
:
'remark'
,
//
prop: 'remark',
type
:
'input'
,
//
type: 'input',
placeholder
:
'请输入'
,
//
placeholder: '请输入',
required
:
false
//
required: false
}
//
}
],
//
],
data
:
[
//
data: [
// {
//
// {
// brokerName: '',
//
// brokerName: '',
// brokerGender: '',
//
// brokerGender: '',
// brokerNumber: '',
//
// brokerNumber: '',
// brokerTeam: '',
//
// brokerTeam: '',
// brokerRatio: '',
//
// brokerRatio: '',
// remark: ''
//
// remark: ''
// }
//
// }
]
//
]
},
//
},
// 受供养人信息
// 受供养人信息
{
{
fatherTitle
:
'受供养人信息'
,
fatherTitle
:
'受供养人信息'
,
...
@@ -245,6 +245,7 @@ const fnaForm = [
...
@@ -245,6 +245,7 @@ const fnaForm = [
{
{
label
:
'在过去12个月里你的平均每月收入'
,
label
:
'在过去12个月里你的平均每月收入'
,
key
:
'monthlyIncome'
,
key
:
'monthlyIncome'
,
customerKey
:
'monthIncome'
,
value
:
''
,
value
:
''
,
domType
:
'Input'
,
domType
:
'Input'
,
unit
:
'HKD'
,
unit
:
'HKD'
,
...
@@ -264,6 +265,7 @@ const fnaForm = [
...
@@ -264,6 +265,7 @@ const fnaForm = [
{
{
label
:
'在过去12个月里你的平均每月开支'
,
label
:
'在过去12个月里你的平均每月开支'
,
key
:
'monthlyExpense'
,
key
:
'monthlyExpense'
,
customerKey
:
'monthExpenditure'
,
value
:
''
,
value
:
''
,
domType
:
'Input'
,
domType
:
'Input'
,
unit
:
'HKD'
,
unit
:
'HKD'
,
...
@@ -282,6 +284,7 @@ const fnaForm = [
...
@@ -282,6 +284,7 @@ const fnaForm = [
{
{
label
:
'您现时的累积流动资产约有多少?'
,
label
:
'您现时的累积流动资产约有多少?'
,
key
:
'liquidAssets'
,
key
:
'liquidAssets'
,
customerKey
:
'totalCurrentAssets'
,
value
:
''
,
value
:
''
,
domType
:
'Input'
,
domType
:
'Input'
,
unit
:
'HKD'
,
unit
:
'HKD'
,
...
...
src/formJson/productPlan.js
View file @
7f73a77f
...
@@ -9,6 +9,20 @@ const productPlan = [
...
@@ -9,6 +9,20 @@ const productPlan = [
fatherRequired
:
true
,
//父级必填,代表个人资料这个模块有必填项
fatherRequired
:
true
,
//父级必填,代表个人资料这个模块有必填项
data
:
[
data
:
[
{
{
label
:
'出单经纪公司'
,
key
:
'reconciliationCompanyName'
,
domType
:
'SearchSelect'
,
required
:
false
,
maxLength
:
30
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
labelPosition
:
'top'
,
//标签的位置
lg
:
8
//栅格布局份数
},
{
label
:
'保险公司'
,
label
:
'保险公司'
,
key
:
'companyName'
,
key
:
'companyName'
,
domType
:
'SearchSelect'
,
domType
:
'SearchSelect'
,
...
@@ -253,20 +267,6 @@ const productPlan = [
...
@@ -253,20 +267,6 @@ const productPlan = [
lg
:
8
//栅格布局份数
lg
:
8
//栅格布局份数
},
},
{
{
label
:
'出单经纪公司'
,
key
:
'reconciliationCompanyName'
,
domType
:
'SearchSelect'
,
required
:
false
,
maxLength
:
30
,
disabled
:
false
,
placeholder
:
'请输入'
,
show
:
true
,
labelWidth
:
'120px'
,
//标签宽度
sm
:
12
,
//栅格布局份数
labelPosition
:
'top'
,
//标签的位置
lg
:
8
//栅格布局份数
},
{
label
:
'保单额度(重疾)'
,
label
:
'保单额度(重疾)'
,
key
:
'sumInsured'
,
key
:
'sumInsured'
,
domType
:
'Input'
,
domType
:
'Input'
,
...
...
src/formJson/secondHolder.js
View file @
7f73a77f
...
@@ -12,6 +12,7 @@ const secondHolder = [
...
@@ -12,6 +12,7 @@ const secondHolder = [
{
{
label
:
'是否有第二持有人'
,
label
:
'是否有第二持有人'
,
key
:
'isSecond'
,
key
:
'isSecond'
,
defaultValue
:
'0'
,
domType
:
'Select'
,
domType
:
'Select'
,
required
:
true
,
required
:
true
,
disabled
:
false
,
disabled
:
false
,
...
...
src/utils/copyToClipboard.js
0 → 100644
View file @
7f73a77f
import
{
ElMessage
}
from
'element-plus'
export
function
copyToClipboard
(
text
)
{
// 方案1:使用现代 Clipboard API
if
(
navigator
.
clipboard
&&
navigator
.
clipboard
.
writeText
)
{
return
navigator
.
clipboard
.
writeText
(
text
).
catch
((
err
)
=>
{
console
.
error
(
'Clipboard API 写入失败:'
,
err
);
ElMessage
.
error
(
'复制失败'
)
// 降级到传统方案
fallbackCopyText
(
text
);
});
}
// 方案2:降级使用传统方法
else
{
fallbackCopyText
(
text
);
}
}
// 传统复制方法
function
fallbackCopyText
(
text
,
typeName
=
'内容'
)
{
const
textarea
=
document
.
createElement
(
'textarea'
);
textarea
.
value
=
text
;
textarea
.
style
.
position
=
'fixed'
;
textarea
.
style
.
opacity
=
'0'
;
document
.
body
.
appendChild
(
textarea
);
try
{
textarea
.
select
();
textarea
.
setSelectionRange
(
0
,
99999
);
// 对于移动设备
document
.
execCommand
(
'copy'
);
console
.
log
(
'传统方法复制成功'
);
ElMessage
.
success
(
`
${
typeName
}
已复制`
)
}
catch
(
err
)
{
console
.
error
(
'传统方法复制失败:'
,
err
)
ElMessage
.
error
(
'复制失败'
);
}
finally
{
document
.
body
.
removeChild
(
textarea
);
}
}
export
default
{
copyToClipboard
}
src/views/financialCenter/financialBilling.vue
View file @
7f73a77f
...
@@ -52,14 +52,14 @@
...
@@ -52,14 +52,14 @@
</div>
</div>
</el-card>
</el-card>
</el-col>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<
!--
<
el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
差额(估)
</div>
<div
class=
"card-label"
>
差额(估)
</div>
<div
class=
"card-value"
>
{{
statisticsData
.
differenceAmount
?
formatCurrency
(
statisticsData
.
differenceAmount
)
:
0
}}
</div>
<div
class=
"card-value"
>
{{
statisticsData
.
differenceAmount
?
formatCurrency
(
statisticsData
.
differenceAmount
)
:
0
}}
</div>
</div>
</div>
</el-card>
</el-card>
</el-col>
</el-col>
-->
</el-row>
</el-row>
</div>
</div>
<el-table
:data=
"tableData"
@
selection-change=
"handleSelectionChange"
height=
"400"
border
highlight-current-row
<el-table
:data=
"tableData"
@
selection-change=
"handleSelectionChange"
height=
"400"
border
highlight-current-row
...
@@ -79,20 +79,23 @@
...
@@ -79,20 +79,23 @@
<el-table-column
prop=
"fortuneTotalPeriod"
label=
"总期数"
width=
"120"
sortable
/>
<el-table-column
prop=
"fortuneTotalPeriod"
label=
"总期数"
width=
"120"
sortable
/>
<el-table-column
prop=
"broker"
label=
"转介人"
width=
"130"
sortable
/>
<el-table-column
prop=
"broker"
label=
"转介人"
width=
"130"
sortable
/>
<el-table-column
prop=
"team"
label=
"所属团队"
width=
"120"
sortable
/>
<el-table-column
prop=
"team"
label=
"所属团队"
width=
"120"
sortable
/>
<el-table-column
prop=
"amount"
label=
"应出账金额"
width=
"140"
sortable
/>
<el-table-column
prop=
"exchangeRate"
label=
"结算汇率(估)"
width=
"140"
sortable
/>
<el-table-column
prop=
"hkdAmount"
label=
"应出账金额(HKD)"
width=
"160"
sortable
/>
<el-table-column
prop=
"currency"
label=
"出账币种"
width=
"130"
sortable
/>
<el-table-column
prop=
"currency"
label=
"出账币种"
width=
"130"
sortable
/>
<el-table-column
prop=
"fortunePaidAmount"
label=
"已出账金额"
width=
"120"
sortable
/>
<el-table-column
prop=
"fortunePaidAmount"
label=
"已出账金额"
width=
"160"
sortable
/>
<el-table-column
prop=
"fortuneUnpaidAmount"
label=
"剩余出账金额"
width=
"120"
sortable
/>
<el-table-column
prop=
"fortuneUnpaidAmount"
label=
"剩余出账金额"
width=
"160"
sortable
/>
<el-table-column
prop=
"currentPaymentAmount"
label=
"本期出账金额"
width=
"120"
sortable
/>
<!-- <el-table-column prop="currentPaymentAmount" label="本期出账金额" width="120" sortable/> -->
<el-table-column
prop=
"currentPaymentHkdAmount"
label=
"本期出账金额(HKD)"
width=
"160"
sortable
/>
<el-table-column
prop=
"fortuneUnpaidRatio"
label=
"剩余出账比例"
width=
"120"
sortable
:formatter=
"(row) => `${row.fortuneUnpaidRatio }%`"
/>
<el-table-column
prop=
"fortuneUnpaidRatio"
label=
"剩余出账比例"
width=
"120"
sortable
:formatter=
"(row) => `${row.fortuneUnpaidRatio }%`"
/>
<el-table-column
prop=
"status"
label=
"出账状态"
width=
"1
2
0"
sortable
>
<el-table-column
prop=
"status"
label=
"出账状态"
width=
"1
6
0"
sortable
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
{{
selectDictLabel
(
csf_fortune_status
,
row
.
status
)
}}
{{
selectDictLabel
(
csf_fortune_status
,
row
.
status
)
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"premium"
label=
"期交保费"
width=
"120"
sortable
/>
<el-table-column
prop=
"premium"
label=
"期交保费"
width=
"120"
sortable
/>
<el-table-column
prop=
"policyCurrency"
label=
"保单币种"
width=
"120"
sortable
/>
<el-table-column
prop=
"policyCurrency"
label=
"保单币种"
width=
"120"
sortable
/>
<el-table-column
prop=
"payoutDate"
label=
"出账日(实)"
width=
"120"
sortable
/>
<el-table-column
prop=
"payoutDate"
label=
"出账日(估)"
width=
"120"
sortable
/>
<el-table-column
prop=
"actualPayoutDate"
label=
"出账日(实)"
width=
"120"
sortable
/>
<el-table-column
prop=
"remark"
label=
"备注"
width=
"120"
sortable
/>
<el-table-column
prop=
"remark"
label=
"备注"
width=
"120"
sortable
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
...
@@ -330,18 +333,20 @@ const setPayoutAmountDialogFlag = ref(false)
...
@@ -330,18 +333,20 @@ const setPayoutAmountDialogFlag = ref(false)
const
setPayoutAmountConfig
=
[
const
setPayoutAmountConfig
=
[
{
{
type
:
'input'
,
type
:
'input'
,
prop
:
'currentPaymentAmount'
,
prop
:
'currentPayment
Hkd
Amount'
,
label
:
'
出账金额
'
,
label
:
'
本期出账金额(HKD)
'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
rules
:
[
rules
:
[
{
pattern
:
/^
\d
+$/
,
message
:
'只能输入正整数'
,
trigger
:
'blur'
}
{
pattern
:
/^
\d
+$/
,
message
:
'只能输入正整数'
,
trigger
:
'blur'
}
]
]
},
{
},
type
:
'select'
,
// {
prop
:
'currency'
,
// type: 'select',
label
:
'出账币种'
,
// prop: 'currency',
dictType
:
'bx_currency_type'
// label: '出账币种',
},
{
// dictType: 'bx_currency_type'
// },
{
type
:
'select'
,
type
:
'select'
,
prop
:
'status'
,
prop
:
'status'
,
label
:
'出账状态'
,
label
:
'出账状态'
,
...
...
src/views/financialCenter/financialIncome.vue
View file @
7f73a77f
...
@@ -564,10 +564,10 @@ const addCheckRecordConfig = ref([
...
@@ -564,10 +564,10 @@ const addCheckRecordConfig = ref([
prop
:
'amount'
,
prop
:
'amount'
,
label
:
'入账金额'
,
label
:
'入账金额'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
decimalDigits
:
2
,
decimalDigits
:
4
,
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请输入金额'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入金额'
,
trigger
:
'blur'
},
{
pattern
:
/^
\d
+
(\.\d{1,
2})?
$/
,
message
:
'最多两
位小数'
,
trigger
:
'blur'
}
{
pattern
:
/^
\d
+
(\.\d{1,
4})?
$/
,
message
:
'最多四
位小数'
,
trigger
:
'blur'
}
]
]
},
{
},
{
type
:
'select'
,
type
:
'select'
,
...
@@ -615,10 +615,10 @@ const addCheckRecordConfig = ref([
...
@@ -615,10 +615,10 @@ const addCheckRecordConfig = ref([
prop
:
'exchangeRate'
,
prop
:
'exchangeRate'
,
label
:
'结算汇率(实)'
,
label
:
'结算汇率(实)'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
decimalDigits
:
2
,
decimalDigits
:
4
,
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请输入金额'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入金额'
,
trigger
:
'blur'
},
{
pattern
:
/^
\d
+
(\.\d{1,
2})?
$/
,
message
:
'最多两
位小数'
,
trigger
:
'blur'
}
{
pattern
:
/^
\d
+
(\.\d{1,
4})?
$/
,
message
:
'最多四
位小数'
,
trigger
:
'blur'
}
]
]
},
},
])
])
...
...
src/views/financialCenter/financialSalary.vue
View file @
7f73a77f
...
@@ -25,9 +25,9 @@
...
@@ -25,9 +25,9 @@
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
prop=
"broker"
label=
"转介人"
min-width=
"120"
sortable
/>
<el-table-column
prop=
"broker"
label=
"转介人"
min-width=
"120"
sortable
/>
<el-table-column
prop=
"team"
label=
"所属团队"
min-width=
"120"
sortable
/>
<el-table-column
prop=
"team"
label=
"所属团队"
min-width=
"120"
sortable
/>
<el-table-column
prop=
"
a
mount"
label=
"出账金额"
width=
"120"
sortable
>
<el-table-column
prop=
"
hkdA
mount"
label=
"出账金额"
width=
"120"
sortable
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
{{
formatCurrency
(
scope
.
row
.
a
mount
)
}}
{{
formatCurrency
(
scope
.
row
.
hkdA
mount
)
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"currency"
label=
"出账币种"
width=
"120"
sortable
>
<el-table-column
prop=
"currency"
label=
"出账币种"
width=
"120"
sortable
>
...
...
src/views/financialCenter/payables.vue
View file @
7f73a77f
...
@@ -204,7 +204,7 @@ const payableReportTableColumns = ref([
...
@@ -204,7 +204,7 @@ const payableReportTableColumns = ref([
{
prop
:
'unpaidRatio'
,
label
:
'待出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidRatio'
,
label
:
'待出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'paidAmount'
,
label
:
'已出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'unpaidAmount'
,
label
:
'待出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'unpaidAmount'
,
label
:
'待出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'
amount'
,
label
:
'应出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
a
mount
||
0
)
},
{
prop
:
'
hkdAmount'
,
label
:
'应出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
hkdA
mount
||
0
)
},
{
prop
:
'currency'
,
label
:
'出账币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'currency'
,
label
:
'出账币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
...
@@ -215,23 +215,24 @@ const detailDialogVisible = ref(false)
...
@@ -215,23 +215,24 @@ const detailDialogVisible = ref(false)
// 应付明细列表
// 应付明细列表
const
payableReportListTableColumns
=
ref
([
const
payableReportListTableColumns
=
ref
([
{
prop
:
'fortuneBizType'
,
label
:
'应付款类型'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
getFortuneBizTypeLabel
(
row
.
fortuneBizType
)
||
'-'
},
//
{ prop: 'fortuneBizType', label: '应付款类型', sortable: true, width: '120', formatter: (row) => getFortuneBizTypeLabel(row.fortuneBizType) || '-' },
{
prop
:
'payableNo'
,
label
:
'应付账款编号'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
payableNo
||
'-'
},
//
{ prop: 'payableNo', label: '应付账款编号', sortable: true, width: '120', formatter: (row) => row.payableNo || '-' },
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'1
2
0'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'1
3
0'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'broker'
,
label
:
'转介人'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
broker
||
'-'
},
{
prop
:
'broker'
,
label
:
'转介人'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
broker
||
'-'
},
{
prop
:
'fortuneName'
,
label
:
'出账项目'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
fortuneName
||
'-'
},
{
prop
:
'status'
,
label
:
'出账状态'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
getDictLabel
(
'csf_expected_fortune_status'
,
row
.
status
)
||
'-'
},
{
prop
:
'status'
,
label
:
'出账状态'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
getDictLabel
(
'csf_expected_fortune_status'
,
row
.
status
)
||
'-'
},
{
prop
:
'currency'
,
label
:
'出账币种'
,
sortable
:
true
,
width
:
'1
2
0'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'currency'
,
label
:
'出账币种'
,
sortable
:
true
,
width
:
'1
0
0'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'fortunePeriod'
,
label
:
'出账期数'
,
sortable
:
true
,
width
:
'1
2
0'
,
formatter
:
(
row
)
=>
row
.
fortunePeriod
||
'-'
},
{
prop
:
'fortunePeriod'
,
label
:
'出账期数'
,
sortable
:
true
,
width
:
'1
0
0'
,
formatter
:
(
row
)
=>
row
.
fortunePeriod
||
'-'
},
{
prop
:
'fortuneTotalPeriod'
,
label
:
'出账总期数'
,
sortable
:
true
,
width
:
'1
2
0'
,
formatter
:
(
row
)
=>
row
.
fortuneTotalPeriod
||
'-'
},
{
prop
:
'fortuneTotalPeriod'
,
label
:
'出账总期数'
,
sortable
:
true
,
width
:
'1
0
0'
,
formatter
:
(
row
)
=>
row
.
fortuneTotalPeriod
||
'-'
},
{
prop
:
'payoutDate'
,
label
:
'出账日(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
payoutDate
||
'-'
},
{
prop
:
'payoutDate'
,
label
:
'出账日(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
payoutDate
||
'-'
},
{
prop
:
'actualPayoutDate'
,
label
:
'出账日(实)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
actualPayoutDate
||
'-'
},
{
prop
:
'actualPayoutDate'
,
label
:
'出账日(实)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
actualPayoutDate
||
'-'
},
{
prop
:
'commissionRatio'
,
label
:
'出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
// { prop: 'commissionRatio', label: '职级对应积分比例', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0)
|| '-' },
{
prop
:
'
amount'
,
label
:
'应出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
a
mount
||
0
)
},
{
prop
:
'
hkdAmount'
,
label
:
'应出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
hkdA
mount
||
0
)
},
{
prop
:
'paidRatio'
,
label
:
'已出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidRatio'
,
label
:
'已出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'paidAmount'
,
label
:
'已出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'unpaidRatio'
,
label
:
'待出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidRatio'
,
label
:
'待出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidAmount'
,
label
:
'待出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'unpaidAmount'
,
label
:
'待出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'brokerRatio'
,
label
:
'持有比例'
,
sortable
:
true
,
width
:
'1
2
0'
,
formatter
:
(
row
)
=>
(
row
.
brokerRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'brokerRatio'
,
label
:
'持有比例'
,
sortable
:
true
,
width
:
'1
0
0'
,
formatter
:
(
row
)
=>
(
row
.
brokerRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
...
...
src/views/financialCenter/receivables.vue
View file @
7f73a77f
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
<!-- 应收款管理列表 -->
<!-- 应收款管理列表 -->
<el-table
:data=
"tableData"
height=
"400"
border
highlight-current-row
style=
"width: 100%"
<el-table
:data=
"tableData"
height=
"400"
border
highlight-current-row
style=
"width: 100%"
v-loading=
"loading"
>
v-loading=
"loading"
>
<el-table-column
v-for=
"(column, index) in receivableReportTableColumns"
:key=
"index"
<el-table-column
v-for=
"(column, index) in receivableReportTableColumns"
:key=
"index"
:fixed=
"column.fixed"
:prop=
"column.prop"
:label=
"column.label"
:width=
"column.width"
:sortable=
"column.sortable"
:prop=
"column.prop"
:label=
"column.label"
:width=
"column.width"
:sortable=
"column.sortable"
:formatter=
"column.formatter"
/>
:formatter=
"column.formatter"
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
</div>
</div>
<el-table
:data=
"receivableReportTableData"
border
style=
"width: 100%;margin-bottom: 10px;min-height: 300px;"
>
<el-table
:data=
"receivableReportTableData"
border
style=
"width: 100%;margin-bottom: 10px;min-height: 300px;"
>
<el-table-column
v-for=
"item in receivableReportItemTableColumns"
:key=
"item.property"
:prop=
"item.prop"
<el-table-column
v-for=
"item in receivableReportItemTableColumns"
:key=
"item.property"
:prop=
"item.prop"
:label=
"item.label"
:width=
"item.width"
/>
:label=
"item.label"
:width=
"item.width"
:formatter=
"item.formatter"
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<el-popover
placement=
"right"
:width=
"200"
trigger=
"click"
>
<el-popover
placement=
"right"
:width=
"200"
trigger=
"click"
>
...
@@ -248,22 +248,22 @@ const addReceivablesFormConfig = [
...
@@ -248,22 +248,22 @@ const addReceivablesFormConfig = [
prop
:
'amount'
,
prop
:
'amount'
,
label
:
'入账金额'
,
label
:
'入账金额'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
decimalDigits
:
2
,
decimalDigits
:
4
,
visible
:
(
formData
)
=>
formData
.
commissionBizType
===
'U'
,
visible
:
(
formData
)
=>
formData
.
commissionBizType
===
'U'
,
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请输入金额'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入金额'
,
trigger
:
'blur'
},
{
pattern
:
/^
\d
+
(\.\d{1,
2})?
$/
,
message
:
'最多两
位小数'
,
trigger
:
'blur'
}
{
pattern
:
/^
\d
+
(\.\d{1,
4})?
$/
,
message
:
'最多四
位小数'
,
trigger
:
'blur'
}
]
]
},
{
},
{
type
:
'input'
,
type
:
'input'
,
prop
:
'commissionRatio'
,
prop
:
'commissionRatio'
,
label
:
'入账比例(%)'
,
label
:
'入账比例(%)'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
decimalDigits
:
2
,
decimalDigits
:
4
,
visible
:
(
formData
)
=>
formData
.
commissionBizType
===
'R'
,
visible
:
(
formData
)
=>
formData
.
commissionBizType
===
'R'
,
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请输入入账比例'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入入账比例'
,
trigger
:
'blur'
},
{
pattern
:
/^
\d
+
(\.\d{1,
2})?
$/
,
message
:
'最多两
位小数'
,
trigger
:
'blur'
}
{
pattern
:
/^
\d
+
(\.\d{1,
4})?
$/
,
message
:
'最多四
位小数'
,
trigger
:
'blur'
}
]
]
},
{
},
{
type
:
'select'
,
type
:
'select'
,
...
@@ -744,27 +744,27 @@ onMounted(async () => {
...
@@ -744,27 +744,27 @@ onMounted(async () => {
}
}
})
})
// 格式化函数(每次渲染都会调用,所以能拿到最新字典)
// 格式化函数(每次渲染都会调用,所以能拿到最新字典)
const
formatStatus
=
(
row
,
column
)
=>
{
const
formatStatus
=
(
row
,
column
)
=>
{
return
getDictLabel
(
'csf_expected_commission_status'
,
row
.
status
)
// 实时查缓存
return
getDictLabel
(
'csf_expected_commission_status'
,
row
.
status
)
// 实时查缓存
}
}
const
detailDialogVisible
=
ref
(
false
)
const
detailDialogVisible
=
ref
(
false
)
const
receivableReportTableData
=
ref
([])
const
receivableReportTableData
=
ref
([])
const
receivableReportTableColumns
=
ref
([
const
receivableReportTableColumns
=
ref
([
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
fixed
:
'left'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'reconciliationCompany'
,
label
:
'对账公司'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
reconciliationCompany
||
'-'
},
{
prop
:
'reconciliationCompany'
,
label
:
'对账公司'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
reconciliationCompany
||
'-'
},
{
prop
:
'commissionPeriod'
,
label
:
'入账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
commissionPeriod
||
'-'
},
{
prop
:
'commissionPeriod'
,
label
:
'入账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
commissionPeriod
||
'-'
},
{
prop
:
'totalPeriod'
,
label
:
'入账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
totalPeriod
||
'-'
},
{
prop
:
'totalPeriod'
,
label
:
'入账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
totalPeriod
||
'-'
},
{
prop
:
'commissionDate'
,
label
:
'入账日(估)'
,
sortable
:
true
,
width
:
'130'
,
},
{
prop
:
'commissionDate'
,
label
:
'入账日(估)'
,
sortable
:
true
,
width
:
'130'
,
},
{
prop
:
'commissionRatio'
,
label
:
'
预估入账比例
'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'commissionRatio'
,
label
:
'
产品对应来佣率
'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'hkdAmount'
,
label
:
'预估入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
hkdAmount
||
0
)
},
{
prop
:
'hkdAmount'
,
label
:
'预估入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
hkdAmount
||
0
)
},
{
prop
:
'paidRatio'
,
label
:
'已入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidRatio'
,
label
:
'已入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'paidAmount'
,
label
:
'已入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'unpaidRatio'
,
label
:
'待入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidRatio'
,
label
:
'待入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidAmount'
,
label
:
'待入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'unpaidAmount'
,
label
:
'待入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'exchangeRate'
,
label
:
'结算汇率(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
exchangeRate
||
0
)
},
{
prop
:
'exchangeRate'
,
label
:
'结算汇率(估)'
,
sortable
:
true
,
width
:
'120'
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
pr
oductName
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
pr
emium
||
'-'
},
{
prop
:
'policyCurrency'
,
label
:
'保单币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
policyCurrency
||
'-'
},
{
prop
:
'policyCurrency'
,
label
:
'保单币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
policyCurrency
||
'-'
},
])
])
const
receivableReportItemTableColumns
=
ref
([
const
receivableReportItemTableColumns
=
ref
([
...
@@ -772,18 +772,18 @@ const receivableReportItemTableColumns = ref([
...
@@ -772,18 +772,18 @@ const receivableReportItemTableColumns = ref([
{
prop
:
'receivableNo'
,
label
:
'应收款编号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
receivableNo
||
'-'
},
{
prop
:
'receivableNo'
,
label
:
'应收款编号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
receivableNo
||
'-'
},
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'reconciliationCompany'
,
label
:
'对账公司'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
reconciliationCompany
||
'-'
},
{
prop
:
'reconciliationCompany'
,
label
:
'对账公司'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
reconciliationCompany
||
'-'
},
{
prop
:
'status'
,
label
:
'入账状态'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatStatus
(
row
.
status
)
||
'-'
},
{
prop
:
'status'
,
label
:
'入账状态'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatStatus
(
row
)
||
'-'
},
{
prop
:
'commissionPeriod'
,
label
:
'入账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
commissionPeriod
||
'-'
},
{
prop
:
'commissionPeriod'
,
label
:
'入账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
commissionPeriod
||
'-'
},
{
prop
:
'totalPeriod'
,
label
:
'入账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
totalPeriod
||
'-'
},
{
prop
:
'totalPeriod'
,
label
:
'入账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
totalPeriod
||
'-'
},
{
prop
:
'commissionName'
,
label
:
'入账项目'
,
sortable
:
true
,
width
:
'130'
,
formatter
:
(
row
)
=>
row
.
commissionName
||
'-'
},
{
prop
:
'commissionName'
,
label
:
'入账项目'
,
sortable
:
true
,
width
:
'130'
,
formatter
:
(
row
)
=>
row
.
commissionName
||
'-'
},
{
prop
:
'commissionDate'
,
label
:
'入账日(估)'
,
sortable
:
true
,
width
:
'130'
,
formatter
:
(
row
)
=>
row
.
commissionDate
||
'-'
},
{
prop
:
'commissionDate'
,
label
:
'入账日(估)'
,
sortable
:
true
,
width
:
'130'
,
formatter
:
(
row
)
=>
row
.
commissionDate
||
'-'
},
{
prop
:
'commissionRatio'
,
label
:
'
预估入账比例
'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'commissionRatio'
,
label
:
'
产品对应来佣率
'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'expectedAmount'
,
label
:
'预估入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
expectedAmount
||
0
)
},
{
prop
:
'expectedAmount'
,
label
:
'预估入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
expectedAmount
||
0
)
},
{
prop
:
'paidRatio'
,
label
:
'已入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidRatio'
,
label
:
'已入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'paidAmount'
,
label
:
'已入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'pendingRatio'
,
label
:
'待入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
pendingRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'pendingRatio'
,
label
:
'待入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
pendingRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'pendingAmount'
,
label
:
'待入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
pendingAmount
||
0
)
},
{
prop
:
'pendingAmount'
,
label
:
'待入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
pendingAmount
||
0
)
},
{
prop
:
'defaultExchangeRate'
,
label
:
'结算汇率(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
defaultExchangeRate
||
0
)
},
{
prop
:
'defaultExchangeRate'
,
label
:
'结算汇率(估)'
,
sortable
:
true
,
width
:
'120'
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
...
...
src/views/sign/FnaList/components/customer.vue
View file @
7f73a77f
...
@@ -261,6 +261,7 @@
...
@@ -261,6 +261,7 @@
@
change=
"
@
change=
"
handleIsPermanentChange(father, scope.row, column.prop, $event)
handleIsPermanentChange(father, scope.row, column.prop, $event)
"
"
:disabled=
"editStatus"
>
>
<el-radio
value=
"1"
size=
"large"
>
是
</el-radio>
<el-radio
value=
"1"
size=
"large"
>
是
</el-radio>
<el-radio
value=
"0"
size=
"large"
>
否
</el-radio>
<el-radio
value=
"0"
size=
"large"
>
否
</el-radio>
...
@@ -1132,6 +1133,10 @@ const setFormValue = (obj, formData, exportValue) => {
...
@@ -1132,6 +1133,10 @@ const setFormValue = (obj, formData, exportValue) => {
phoneQuickList
.
value
=
[]
phoneQuickList
.
value
=
[]
// 深拷贝原始数据
// 深拷贝原始数据
form
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
obj
))
form
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
obj
))
// 新增预约,是受保人,与投保人关系默认值是本人
if
(
props
.
activeName
==
'insurantInfo'
&&
!
props
.
idsObj
.
appointmentBizId
)
{
form
.
value
[
'policyholderRel'
]
=
'MYSELF'
}
// 深拷贝原始数据
// 深拷贝原始数据
const
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
formData
))
const
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
formData
))
...
@@ -1158,8 +1163,7 @@ const setFormValue = (obj, formData, exportValue) => {
...
@@ -1158,8 +1163,7 @@ const setFormValue = (obj, formData, exportValue) => {
// 编辑状态当tab为受保人时,与投保人关系为本人控制受保人信息模块隐藏
// 编辑状态当tab为受保人时,与投保人关系为本人控制受保人信息模块隐藏
if
(
if
(
props
.
activeName
==
'insurantInfo'
&&
props
.
activeName
==
'insurantInfo'
&&
props
.
idsObj
.
appointmentBizId
&&
form
.
value
[
'policyholderRel'
]
==
'MYSELF'
&&
obj
.
policyholderRel
==
'MYSELF'
&&
section
.
key
!==
'policyholderRel'
section
.
key
!==
'policyholderRel'
)
{
)
{
section
.
showMoudle
=
false
section
.
showMoudle
=
false
...
@@ -1446,16 +1450,16 @@ const handleFormValues = source => {
...
@@ -1446,16 +1450,16 @@ const handleFormValues = source => {
processedData
.
forEach
(
item
=>
{
processedData
.
forEach
(
item
=>
{
if
(
item
.
key
==
'apiCertificateDtoList'
&&
item
.
data
.
length
>
0
)
{
if
(
item
.
key
==
'apiCertificateDtoList'
&&
item
.
data
.
length
>
0
)
{
item
.
data
.
forEach
((
item1
,
index
)
=>
{
item
.
data
.
forEach
((
item1
,
index
)
=>
{
if
(
!
item1
.
isPermanent
||
item1
.
isPermanent
==
'0'
)
{
//
if (!item1.isPermanent || item1.isPermanent == '0') {
if
(
!
item1
.
certificateStartDate
)
{
//
if (!item1.certificateStartDate) {
obj1
.
certificateStartDate
=
'证件开始时间'
//
obj1.certificateStartDate = '证件开始时间'
}
//
}
if
(
!
item1
.
certificateEndDate
)
{
//
if (!item1.certificateEndDate) {
obj1
.
certificateEndDate
=
'证件结束时间'
//
obj1.certificateEndDate = '证件结束时间'
}
//
}
}
else
if
(
item1
.
isPermanent
==
'1'
&&
!
item1
.
certificateStartDate
)
{
//
} else if (item1.isPermanent == '1' && !item1.certificateStartDate) {
obj1
.
certificateStartDate
=
'证件有效时间'
//
obj1.certificateStartDate = '证件有效时间'
}
//
}
for
(
const
key
in
obj1
)
{
for
(
const
key
in
obj1
)
{
if
(
!
item1
[
key
])
{
if
(
!
item1
[
key
])
{
errorFields
.
value
.
push
({
errorFields
.
value
.
push
({
...
@@ -1502,6 +1506,8 @@ const handleFormValues = source => {
...
@@ -1502,6 +1506,8 @@ const handleFormValues = source => {
}
}
if
(
props
.
customerBizId
&&
props
.
activeName
==
'customer'
)
{
if
(
props
.
customerBizId
&&
props
.
activeName
==
'customer'
)
{
submitObj
[
'fnaBizId'
]
=
props
.
idsObj
.
fnaBizId
editCustomer
(
submitObj
).
then
(
res
=>
{
editCustomer
(
submitObj
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
handleEditStatus
()
handleEditStatus
()
...
@@ -1516,6 +1522,7 @@ const handleFormValues = source => {
...
@@ -1516,6 +1522,7 @@ const handleFormValues = source => {
}
else
if
(
!
props
.
customerBizId
&&
props
.
activeName
==
'customer'
)
{
}
else
if
(
!
props
.
customerBizId
&&
props
.
activeName
==
'customer'
)
{
addFna
({
remark
:
''
}).
then
(
response
=>
{
addFna
({
remark
:
''
}).
then
(
response
=>
{
if
(
response
.
code
==
200
)
{
if
(
response
.
code
==
200
)
{
submitObj
[
'fnaBizId'
]
=
response
.
data
.
fnaBizId
addCustomer
(
submitObj
).
then
(
res
=>
{
addCustomer
(
submitObj
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
proxy
.
$message
.
success
(
'客户新增成功'
)
proxy
.
$message
.
success
(
'客户新增成功'
)
...
@@ -1600,15 +1607,15 @@ watch(
...
@@ -1600,15 +1607,15 @@ watch(
editStatus
.
value
=
false
editStatus
.
value
=
false
customerRightRef
.
value
=
null
customerRightRef
.
value
=
null
if
(
newVal
===
'customer'
)
{
if
(
newVal
===
'customer'
)
{
if
(
JSON
.
stringify
(
customerForm
.
value
)
!=
'{}'
)
{
processFormData
()
form
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
customerForm
.
value
))
// if (JSON.stringify(customerForm.value) != '{}') {
// form.value = JSON.parse(JSON.stringify(customerForm.value))
processedCustomerData
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
tempCustomerDom
.
value
))
// processedCustomerData.value = JSON.parse(JSON.stringify(tempCustomerDom.value))
return
// return
}
else
{
// } else {
processFormData
()
// processFormData()
}
// }
// processFormData()
// 因为客户资料里的编辑状态是单独控制的
// 因为客户资料里的编辑状态是单独控制的
if
(
props
.
tabSource
==
'customer'
&&
props
.
customerBizId
)
{
if
(
props
.
tabSource
==
'customer'
&&
props
.
customerBizId
)
{
editStatus
.
value
=
true
editStatus
.
value
=
true
...
...
src/views/sign/FnaList/components/fanForm.vue
View file @
7f73a77f
...
@@ -423,6 +423,7 @@ const handleRemoteSelectChange = async (row, column, father) => {
...
@@ -423,6 +423,7 @@ const handleRemoteSelectChange = async (row, column, father) => {
//如果险种选择了重疾险,则显示重疾险的输入框
//如果险种选择了重疾险,则显示重疾险的输入框
row
.
insuranceTypeOption
.
forEach
(
item
=>
{
row
.
insuranceTypeOption
.
forEach
(
item
=>
{
if
(
item
.
value
==
row
.
insuranceType
)
{
if
(
item
.
value
==
row
.
insuranceType
)
{
row
.
sumInsured
=
''
if
(
item
.
code
==
'CATEGORY5934890141'
)
{
if
(
item
.
code
==
'CATEGORY5934890141'
)
{
row
.
showSumInsured
=
true
row
.
showSumInsured
=
true
}
else
{
}
else
{
...
@@ -445,7 +446,7 @@ const searchSelectList = async (query, fieldKey, row) => {
...
@@ -445,7 +446,7 @@ const searchSelectList = async (query, fieldKey, row) => {
const
params5
=
{
const
params5
=
{
pageNo
:
1
,
pageNo
:
1
,
pageSize
:
10
,
pageSize
:
10
,
queryContent
:
queryString
realName
:
queryString
}
}
const
response5
=
await
getUserSaleExpandList
(
params5
)
const
response5
=
await
getUserSaleExpandList
(
params5
)
if
(
response5
.
code
==
200
)
{
if
(
response5
.
code
==
200
)
{
...
@@ -566,6 +567,13 @@ const processFormData = async () => {
...
@@ -566,6 +567,13 @@ const processFormData = async () => {
}
}
if
(
section
.
data
)
{
if
(
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
if
(
field
.
customerKey
)
{
for
(
const
cKey
in
props
.
customerInfo
)
{
if
(
cKey
==
field
.
customerKey
&&
!
props
.
fnaFormBizId
)
{
form
.
value
[
section
.
key
][
field
.
key
]
=
props
.
customerInfo
[
cKey
]
}
}
}
if
(
field
.
dictType
)
{
if
(
field
.
dictType
)
{
// 获取字典数据
// 获取字典数据
field
.
options
=
fetchDictData
(
field
.
dictType
)
field
.
options
=
fetchDictData
(
field
.
dictType
)
...
@@ -592,6 +600,9 @@ const processFormData = async () => {
...
@@ -592,6 +600,9 @@ const processFormData = async () => {
loading
.
value
=
false
loading
.
value
=
false
}
}
processedFanFormData
.
value
=
oldFanFormData
.
value
=
processedData
processedFanFormData
.
value
=
oldFanFormData
.
value
=
processedData
console
.
log
(
'===================================='
)
console
.
log
(
'新增'
,
form
.
value
)
console
.
log
(
'===================================='
)
}
}
// 添加表单子级dom
// 添加表单子级dom
const
addChildren
=
father
=>
{
const
addChildren
=
father
=>
{
...
...
src/views/sign/FnaList/edit.vue
View file @
7f73a77f
...
@@ -87,6 +87,7 @@
...
@@ -87,6 +87,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<Customer
<Customer
v-if=
"tab.name === 'customer'"
v-if=
"tab.name === 'customer'"
:activeName=
"activeName"
:activeName=
"activeName"
...
@@ -95,6 +96,7 @@
...
@@ -95,6 +96,7 @@
:tabIndex=
"tabsList.findIndex(t => t.name === 'customer')"
:tabIndex=
"tabsList.findIndex(t => t.name === 'customer')"
anchorContainer=
".tabPaneBox"
anchorContainer=
".tabPaneBox"
tabSource=
"customer"
tabSource=
"customer"
:idsObj=
"processInfo"
/>
/>
<div
v-if=
"tab.name === 'fnaform'"
>
<div
v-if=
"tab.name === 'fnaform'"
>
<FanForm
<FanForm
...
@@ -153,7 +155,8 @@ const dictStore = useDictStore()
...
@@ -153,7 +155,8 @@ const dictStore = useDictStore()
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
const
route
=
useRoute
()
const
route
=
useRoute
()
const
router
=
useRouter
()
const
router
=
useRouter
()
const
activeName
=
ref
(
'overview'
)
const
activeName
=
ref
()
const
loading
=
ref
(
false
)
const
processInfo
=
ref
({
const
processInfo
=
ref
({
fnaNo
:
'--'
,
fnaNo
:
'--'
,
status
:
'未保存'
,
status
:
'未保存'
,
...
@@ -163,7 +166,6 @@ const processInfo = ref({
...
@@ -163,7 +166,6 @@ const processInfo = ref({
const
updateStatus
=
ref
(
false
)
const
updateStatus
=
ref
(
false
)
const
dictTypeLists
=
ref
([])
const
dictTypeLists
=
ref
([])
const
customerInfo
=
ref
({})
const
customerInfo
=
ref
({})
const
tabPaneRef
=
ref
(
null
)
const
tabsList
=
ref
([
const
tabsList
=
ref
([
{
{
label
:
'总览'
,
label
:
'总览'
,
...
@@ -210,40 +212,40 @@ const tabsList = ref([
...
@@ -210,40 +212,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
()
=>
{
// 请求每个流程中所涉及到的字典值数据,如果缓存中有,则不再请求
loading
.
value
=
true
if
(
dictStore
.
dictTypeLists
.
length
==
0
)
{
await
proxy
.
useDictLists1
([
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_typ
e'
,
'csf_premium_funding_sourc
e'
,
'csf_premium_funding_sourc
e'
,
'csf_customer_typ
e'
,
'csf_customer_typ
e'
,
'csf_customer_titl
e'
,
'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_movi
e'
,
'csf_ap_gam
e'
,
'csf_ap_game
'
,
'wj_question_first_category
'
,
'wj_question_first
_category'
,
'wj_question_second
_category'
,
'wj_question_second_category
'
,
'csf_ap_policy_transfer
'
,
'csf_ap_policy_transfer
'
,
'md_bank
'
,
'md_bank
'
,
'csf_property_type
'
,
'csf_property
_type'
,
'oss_data
_type'
,
'oss_data_type'
,
'oss_data_person'
'oss_data_person'
])
])
activeName
.
value
=
'overview'
}
loading
.
value
=
false
// 获取租户用户列表
// 获取租户用户列表
const
params1
=
{
const
params1
=
{
tenantBizId
:
userStore
.
projectInfo
.
tenantBizId
,
tenantBizId
:
userStore
.
projectInfo
.
tenantBizId
,
...
@@ -394,7 +396,7 @@ const processUpdate = (data, status) => {
...
@@ -394,7 +396,7 @@ const processUpdate = (data, status) => {
// 获取流程详情
// 获取流程详情
function
getProcessInfo
(
fnaBizId
,
changeTab
,
currentTab
)
{
function
getProcessInfo
(
fnaBizId
,
changeTab
,
currentTab
)
{
getProcessDetail
(
fnaBizId
).
then
(
res
=>
{
getProcessDetail
(
fnaBizId
).
then
(
async
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
processInfo
.
value
=
res
.
data
processInfo
.
value
=
res
.
data
tabsList
.
value
.
forEach
(
item
=>
{
tabsList
.
value
.
forEach
(
item
=>
{
...
@@ -404,13 +406,16 @@ function getProcessInfo(fnaBizId, changeTab, currentTab) {
...
@@ -404,13 +406,16 @@ function getProcessInfo(fnaBizId, changeTab, currentTab) {
item
.
status
=
'0'
item
.
status
=
'0'
}
}
})
})
console
.
log
(
'客户资料新增成功'
,
tabsList
.
value
)
csf_fna_status
.
_object
.
csf_fna_status
.
forEach
(
item
=>
{
csf_fna_status
.
_object
.
csf_fna_status
.
forEach
(
item
=>
{
if
(
item
.
value
==
res
.
data
.
status
)
{
if
(
item
.
value
==
res
.
data
.
status
)
{
processInfo
.
value
.
status
=
item
.
label
processInfo
.
value
.
status
=
item
.
label
}
}
})
})
if
(
res
.
data
.
customerBizId
)
{
await
getCustomerInfo
(
res
.
data
.
customerBizId
)
}
if
(
currentTab
==
'appointment'
&&
changeTab
==
'appointment'
)
{
if
(
currentTab
==
'appointment'
&&
changeTab
==
'appointment'
)
{
router
.
push
({
path
:
'/sign/appointment'
})
router
.
push
({
path
:
'/sign/appointment'
})
}
else
if
(
changeTab
)
{
}
else
if
(
changeTab
)
{
...
@@ -421,9 +426,6 @@ function getProcessInfo(fnaBizId, changeTab, currentTab) {
...
@@ -421,9 +426,6 @@ function getProcessInfo(fnaBizId, changeTab, currentTab) {
}
}
// Tab切换前的验证
// Tab切换前的验证
const
beforeTabLeave
=
(
activeTabName
,
oldTabName
)
=>
{
const
beforeTabLeave
=
(
activeTabName
,
oldTabName
)
=>
{
if
(
processInfo
.
value
.
customerBizId
)
{
// getCustomerInfo(processInfo.value.customerBizId)
}
// 如果切换到总览,始终允许
// 如果切换到总览,始终允许
if
(
activeTabName
===
'overview'
||
activeTabName
===
'customer'
)
{
if
(
activeTabName
===
'overview'
||
activeTabName
===
'customer'
)
{
return
true
return
true
...
@@ -471,9 +473,6 @@ const handleStep = item => {
...
@@ -471,9 +473,6 @@ const handleStep = item => {
// 允许切换
// 允许切换
activeName
.
value
=
item
.
name
activeName
.
value
=
item
.
name
}
}
const
handleBack
=
()
=>
{
router
.
go
(
-
1
)
}
if
(
route
.
query
.
type
==
'add'
)
{
if
(
route
.
query
.
type
==
'add'
)
{
// getAddInfo()
// getAddInfo()
...
@@ -482,24 +481,30 @@ if (route.query.type == 'add') {
...
@@ -482,24 +481,30 @@ if (route.query.type == 'add') {
getProcessInfo
(
route
.
query
.
fnaBizId
)
getProcessInfo
(
route
.
query
.
fnaBizId
)
},
100
)
},
100
)
}
}
// 获取客户详情
// 获取客户详情(返回 Promise)
function
getCustomerInfo
(
customerBizId
)
{
function
getCustomerInfo
(
customerBizId
)
{
getCustomerDetail
(
customerBizId
).
then
(
async
res
=>
{
return
getCustomerDetail
(
customerBizId
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
=
200
)
{
customerInfo
.
value
=
res
.
data
customerInfo
.
value
=
res
.
data
return
res
.
data
// 成功时返回数据
}
else
{
// 可选:抛出错误以便调用方捕获
throw
new
Error
(
res
.
msg
||
'获取客户详情失败'
)
}
}
})
})
}
}
const
handleSuccess
=
info
=>
{
const
handleSuccess
=
async
info
=>
{
switch
(
info
.
tab
)
{
switch
(
info
.
tab
)
{
case
'customer'
:
case
'customer'
:
// await getCustomerInfo(info.customerBizId)
if
(
info
.
type
==
'add'
)
{
if
(
info
.
type
==
'add'
)
{
//客户提交成功,更新流程
//客户提交成功,更新流程
processUpdate
({
fnaBizId
:
info
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
},
'fnaform'
)
processUpdate
({
fnaBizId
:
info
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
},
'fnaform'
)
}
else
{
}
else
{
processUpdate
({
fnaBizId
:
processInfo
.
value
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
})
processUpdate
({
fnaBizId
:
processInfo
.
value
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
})
}
}
getCustomerInfo
(
info
.
customerBizId
)
break
break
case
'fnaform'
:
case
'fnaform'
:
if
(
info
.
type
==
'add'
)
{
if
(
info
.
type
==
'add'
)
{
...
@@ -552,7 +557,17 @@ getDictsData()
...
@@ -552,7 +557,17 @@ getDictsData()
min-height
:
calc
(
100vh
-
84.5px
);
min-height
:
calc
(
100vh
-
84.5px
);
padding
:
20px
;
padding
:
20px
;
background-color
:
#f2f3f5
;
background-color
:
#f2f3f5
;
.domEmpty
{
width
:
100%
;
height
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
height
:
100%
;
font-size
:
16px
;
color
:
#a8abb2
;
margin-top
:
100px
;
}
.cardHeader
{
.cardHeader
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
...
...
src/views/sign/FnaList/index.vue
View file @
7f73a77f
...
@@ -75,9 +75,21 @@
...
@@ -75,9 +75,21 @@
border
border
max-height=
"380px"
max-height=
"380px"
>
>
<el-table-column
type=
"index"
width=
"60"
label=
"序号"
/>
<el-table-column
type=
"index"
width=
"100"
label=
"序号"
/>
<el-table-column
label=
"客户姓名"
align=
"center"
prop=
"customerName"
width=
"100"
/>
<el-table-column
label=
"客户姓名"
align=
"center"
prop=
"customerName"
width=
"180"
>
<el-table-column
label=
"中文姓名"
align=
"center"
prop=
"customerNameCn"
width=
"100"
/>
<template
#
default=
"scope"
>
<el-button
link
size=
"default"
>
<span
@
click=
"copyToClipboard(scope.row.customerName,'客户姓名')"
>
{{
scope
.
row
.
customerName
}}
</span>
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"中文姓名"
align=
"center"
prop=
"customerNameCn"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-button
link
size=
"default"
>
<span
@
click=
"copyToClipboard(scope.row.customerNameCn,'中文姓名')"
>
{{
scope
.
row
.
customerNameCn
}}
</span>
</el-button>
</
template
>
</el-table-column>
<!-- <el-table-column label="状态" align="center" prop="status" width="100" :formatter="getDictLabel('csf_fna_status')"/> -->
<!-- <el-table-column label="状态" align="center" prop="status" width="100" :formatter="getDictLabel('csf_fna_status')"/> -->
<el-table-column
label=
"流程状态"
sortable
align=
"center"
prop=
"status"
width=
"200"
>
<el-table-column
label=
"流程状态"
sortable
align=
"center"
prop=
"status"
width=
"200"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
...
@@ -88,18 +100,29 @@
...
@@ -88,18 +100,29 @@
label=
"流程编号"
label=
"流程编号"
align=
"center"
align=
"center"
prop=
"fnaNo"
prop=
"fnaNo"
width=
"200"
width=
"240"
show-overflow-tooltip
show-overflow-tooltip
>
/>
<
template
#
default=
"scope"
>
<el-button
link
size=
"default"
>
<span
@
click=
"copyToClipboard(scope.row.fnaNo,'流程编号')"
>
{{
scope
.
row
.
fnaNo
}}
</span>
</el-button>
</
template
>
</el-table-column>
<el-table-column
<el-table-column
label=
"预约编号"
label=
"预约编号"
align=
"center"
align=
"center"
prop=
"appointmentNo"
prop=
"appointmentNo"
width=
"2
0
0"
width=
"2
4
0"
show-overflow-tooltip
show-overflow-tooltip
/>
>
<el-table-column
label=
"新单编号"
align=
"center"
prop=
"policyId"
/>
<
template
#
default=
"scope"
>
<el-table-column
label=
"保单号"
align=
"center"
prop=
"policyNo"
width=
"150"
/>
<el-button
link
size=
"default"
>
<span
@
click=
"copyToClipboard(scope.row.appointmentNo,'预约编号')"
>
{{
scope
.
row
.
appointmentNo
}}
</span>
</el-button>
</
template
>
</el-table-column>
<!-- <el-table-column label="新单编号" align="center" prop="policyId" /> -->
<el-table-column
label=
"保单号"
align=
"center"
prop=
"policyNo"
width=
"180"
/>
<el-table-column
label=
"创建时间"
sortable
align=
"center"
prop=
"createTime"
width=
"200"
>
<el-table-column
label=
"创建时间"
sortable
align=
"center"
prop=
"createTime"
width=
"200"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
...
@@ -107,7 +130,7 @@
...
@@ -107,7 +130,7 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"
8
0"
align=
"center"
>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"
15
0"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<el-popover
placement=
"left"
:width=
"160"
trigger=
"click"
>
<el-popover
placement=
"left"
:width=
"160"
trigger=
"click"
>
<template
#
reference
>
<template
#
reference
>
...
@@ -158,6 +181,7 @@ import { getFnaList, deleteFna, subProcess } from '@/api/sign/fna'
...
@@ -158,6 +181,7 @@ import { getFnaList, deleteFna, subProcess } from '@/api/sign/fna'
import
useUserStore
from
'@/store/modules/user'
import
useUserStore
from
'@/store/modules/user'
import
{
MoreFilled
,
InfoFilled
}
from
'@element-plus/icons-vue'
import
{
MoreFilled
,
InfoFilled
}
from
'@element-plus/icons-vue'
import
useDictStore
from
'@/store/modules/dict'
import
useDictStore
from
'@/store/modules/dict'
import
copyToClipboard
from
'@/utils/copyToClipboard'
;
const
dictStore
=
useDictStore
()
const
dictStore
=
useDictStore
()
const
userStore
=
useUserStore
()
const
userStore
=
useUserStore
()
const
router
=
useRouter
()
const
router
=
useRouter
()
...
...
src/views/sign/appointment/appointmentEdit.vue
View file @
7f73a77f
...
@@ -321,7 +321,7 @@
...
@@ -321,7 +321,7 @@
:policyMailing=
"policyDetailInfo.policyMailing"
:policyMailing=
"policyDetailInfo.policyMailing"
/>
/>
</div>
</div>
<div
v-if=
"tab.name === 'newpolicyTodo'"
>
新单事项
</div>
<div
v-if=
"tab.name === 'verifyPolicyInfo'"
>
<div
v-if=
"tab.name === 'verifyPolicyInfo'"
>
<VerifyPolicyInfo
<VerifyPolicyInfo
:activeName=
"activeName"
:activeName=
"activeName"
...
@@ -752,37 +752,6 @@ function getCustomerInfo(customerBizId) {
...
@@ -752,37 +752,6 @@ 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
,
...
@@ -977,6 +946,7 @@ const handleSubmit = async type => {
...
@@ -977,6 +946,7 @@ const handleSubmit = async type => {
submitAppointmentObj
.
value
.
apiAppointmentInfoDto
=
result
submitAppointmentObj
.
value
.
apiAppointmentInfoDto
=
result
if
(
!
submitAppointmentObj
.
value
.
apiAppointmentInfoDto
)
return
if
(
!
submitAppointmentObj
.
value
.
apiAppointmentInfoDto
)
return
}
}
if
(
productPlanRef
.
value
)
{
if
(
productPlanRef
.
value
)
{
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
=
submitAppointmentObj
.
value
.
apiProductPlanInfoDto
=
await
productPlanRef
.
value
[
0
].
handleSubmitForm
()
await
productPlanRef
.
value
[
0
].
handleSubmitForm
()
...
...
src/views/sign/appointment/components/appointmentInfo.vue
View file @
7f73a77f
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
>
>
<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, fIndex)
in processedAppointmentData"
>
<el-row
style=
"margin-bottom: 10px"
v-if=
"father.showMoudle"
:id=
"father.anchorKey"
>
<el-row
style=
"margin-bottom: 10px"
v-if=
"father.showMoudle"
:id=
"father.anchorKey"
>
<div
class=
"formBox"
>
<div
class=
"formBox"
>
<CardOne
:title=
"father.fatherTitle"
>
<CardOne
:title=
"father.fatherTitle"
>
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
<
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, cIndex)
in father.data"
:key=
"child.key"
>
<el-col
<el-col
:sm=
"child.sm"
:sm=
"child.sm"
:lg=
"child.lg"
:lg=
"child.lg"
...
@@ -829,10 +829,9 @@ const changePageSize = val => {
...
@@ -829,10 +829,9 @@ const changePageSize = val => {
queryParams
.
value
.
pageSize
=
val
queryParams
.
value
.
pageSize
=
val
viewHistory
()
viewHistory
()
}
}
const
timeValueChange
=
child
=>
{
const
timeValueChange
=
child
=>
{
if
(
form
.
value
[
child
.
key
])
{
if
(
!
form
.
value
[
child
.
key
])
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
}
else
if
(
!
form
.
value
[
child
.
key
])
{
proxy
.
$message
.
warning
(
`请先选择
${
child
.
label
}
日期`
)
proxy
.
$message
.
warning
(
`请先选择
${
child
.
label
}
日期`
)
child
.
timeValue
=
''
child
.
timeValue
=
''
}
}
...
@@ -1058,6 +1057,7 @@ const disabledDate = (time, child) => {
...
@@ -1058,6 +1057,7 @@ const disabledDate = (time, child) => {
}
}
}
}
const
handleDateClear
=
child
=>
{
const
handleDateClear
=
child
=>
{
form
.
value
[
child
.
key
]
=
''
if
(
child
.
key
==
'openAccountStartTime'
&&
!
form
.
value
[
'openAccountStartTime'
])
{
if
(
child
.
key
==
'openAccountStartTime'
&&
!
form
.
value
[
'openAccountStartTime'
])
{
form
.
value
[
'openAccountEndTime'
]
=
''
form
.
value
[
'openAccountEndTime'
]
=
''
resetShow
({
type
:
'child'
,
key
:
'openAccountEndTime'
,
status
:
true
,
flag
:
'disabled'
})
resetShow
({
type
:
'child'
,
key
:
'openAccountEndTime'
,
status
:
true
,
flag
:
'disabled'
})
...
@@ -1070,28 +1070,11 @@ const handleDateClear = child => {
...
@@ -1070,28 +1070,11 @@ const handleDateClear = child => {
}
}
}
}
const
handleDateChange
=
child
=>
{
const
handleDateChange
=
child
=>
{
// debugger;
if
(
child
.
key
==
'openAccountStartTime'
&&
form
.
value
[
'openAccountStartTime'
])
{
if
(
child
.
key
==
'openAccountStartTime'
&&
form
.
value
[
'openAccountStartTime'
])
{
resetShow
({
type
:
'child'
,
key
:
'openAccountEndTime'
,
status
:
false
,
flag
:
'disabled'
})
resetShow
({
type
:
'child'
,
key
:
'openAccountEndTime'
,
status
:
false
,
flag
:
'disabled'
})
disabledDate
(
form
.
value
[
'openAccountStartTime'
],
{
key
:
'openAccountEndTime'
})
disabledDate
(
form
.
value
[
'openAccountStartTime'
],
{
key
:
'openAccountEndTime'
})
}
}
// 拼接日期与时分
if
(
child
.
key
==
'arrivalTime'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
}
else
if
(
child
.
key
==
'departureTime'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
}
else
if
(
child
.
key
==
'signDate'
&&
child
.
finishTime
&&
child
.
finishTime
.
split
(
' '
).
length
==
2
)
{
child
.
finishTime
=
`
${
form
.
value
[
child
.
key
]}
${
child
.
timeValue
}
:00`
console
.
log
(
'signDate'
,
child
.
finishTime
)
}
// 离港时间在到港时间之前
// 离港时间在到港时间之前
if
(
if
(
child
.
key
==
'arrivalTime'
&&
child
.
key
==
'arrivalTime'
&&
...
@@ -1203,8 +1186,6 @@ const processFormData = async () => {
...
@@ -1203,8 +1186,6 @@ const processFormData = async () => {
processedAppointmentData
.
value
=
processedData
processedAppointmentData
.
value
=
processedData
console
.
log
(
'processedAppointmentData.value'
,
processedAppointmentData
.
value
)
console
.
log
(
'processedAppointmentData.value'
,
processedAppointmentData
.
value
)
}
}
console
.
log
(
'processedAppointmentData.value'
,
processedAppointmentData
.
value
)
console
.
log
(
'form.value'
,
form
.
value
)
anchorListReady
.
value
=
true
anchorListReady
.
value
=
true
}
}
...
@@ -1673,7 +1654,13 @@ const handleFormValues = () => {
...
@@ -1673,7 +1654,13 @@ const handleFormValues = () => {
})
})
}
}
if
(
item1
.
compositionTime
)
{
if
(
item1
.
compositionTime
)
{
submitObj
[
item1
.
key
]
=
item1
.
finishTime
let
dateTime
=
''
if
(
item1
.
timeValue
)
{
dateTime
=
proxy
.
formatToDateTime
(
`
${
form
.
value
[
item1
.
key
]}
${
item1
.
timeValue
}
`
)
}
else
if
(
form
.
value
[
item1
.
key
])
{
dateTime
=
proxy
.
formatToDateTime
(
`
${
form
.
value
[
item1
.
key
]}
`
)
}
submitObj
[
item1
.
key
]
=
dateTime
}
}
})
})
}
}
...
@@ -1710,7 +1697,7 @@ const handleFormValues = () => {
...
@@ -1710,7 +1697,7 @@ const handleFormValues = () => {
}
}
})
})
console
.
log
(
'submitObj'
,
submitObj
)
console
.
log
(
'submitObj
表单值
'
,
submitObj
)
if
(
submitObj
[
'departureTime'
])
{
if
(
submitObj
[
'departureTime'
])
{
// 开始时间是否在结束时间之前
// 开始时间是否在结束时间之前
if
(
if
(
...
...
src/views/sign/appointment/components/beneficiaryInfo.vue
View file @
7f73a77f
...
@@ -571,6 +571,13 @@ const processFormData = async obj => {
...
@@ -571,6 +571,13 @@ const processFormData = async obj => {
for
(
const
section
of
processedData
)
{
for
(
const
section
of
processedData
)
{
if
(
section
.
data
)
{
if
(
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
if
(
!
props
.
idsObj
.
appointmentBizId
&&
field
.
defaultValue
)
{
if
(
field
.
key
==
'isLegalBeneficiary'
)
{
form
.
value
[
field
.
key
]
=
Number
(
field
.
defaultValue
)
}
else
{
form
.
value
[
field
.
key
]
=
field
.
defaultValue
}
}
rules
.
value
[
field
.
key
]
=
[
rules
.
value
[
field
.
key
]
=
[
{
required
:
true
,
message
:
`
${
field
.
label
}
不能为空`
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
`
${
field
.
label
}
不能为空`
,
trigger
:
'blur'
}
]
]
...
@@ -589,7 +596,7 @@ const processFormData = async obj => {
...
@@ -589,7 +596,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
...
...
src/views/sign/appointment/components/productPlan.vue
View file @
7f73a77f
...
@@ -435,23 +435,6 @@ const handleSearchSelectChange = (father, key) => {
...
@@ -435,23 +435,6 @@ const handleSearchSelectChange = (father, key) => {
form
.
value
[
father
.
key
][
key
]
=
item1
.
label
form
.
value
[
father
.
key
][
key
]
=
item1
.
label
form
.
value
[
father
.
key
][
'productLaunchBizId'
]
=
item1
.
value
form
.
value
[
father
.
key
][
'productLaunchBizId'
]
=
item1
.
value
console
.
log
(
'item1.apiAttributeSettingDtoList'
,
item1
.
apiAttributeSettingDtoList
)
console
.
log
(
'item1.apiAttributeSettingDtoList'
,
item1
.
apiAttributeSettingDtoList
)
// item1.apiAttributeSettingDtoList.forEach(item2 => {
// if (item2.fieldBizId == 'field_eWCnuwS3WPKog5kZ' && item.key == 'issueNumber') {
// if (item2.value) {
// item.options = item2.value
// .split(/[,,;;\s]+/)
// .map(item => item.trim())
// .filter(item => item !== '')
// .map(item => {
// return { label: item, value: item }
// })
// if (item.options.length > 0)
// form.value[father.key]['issueNumber'] = item.options[0].value
// }
// console.log(item.options, item, '1111')
// }
// })
}
}
})
})
})
})
...
@@ -482,6 +465,7 @@ const handleSearchSelectChange = (father, key) => {
...
@@ -482,6 +465,7 @@ const handleSearchSelectChange = (father, key) => {
if
(
form
.
value
[
father
.
key
][
key
]
==
item
.
value
)
{
if
(
form
.
value
[
father
.
key
][
key
]
==
item
.
value
)
{
form
.
value
[
father
.
key
][
key
]
=
item
.
label
form
.
value
[
father
.
key
][
key
]
=
item
.
label
form
.
value
[
father
.
key
].
reconciliationCompanyId
=
item
.
value
form
.
value
[
father
.
key
].
reconciliationCompanyId
=
item
.
value
form
.
value
[
father
.
key
].
reconciliationCompanyCode
=
item
.
code
}
}
})
})
}
}
...
...
src/views/sign/appointment/components/secondHolderInfo.vue
View file @
7f73a77f
...
@@ -436,6 +436,13 @@ const processFormData = async obj => {
...
@@ -436,6 +436,13 @@ const processFormData = async obj => {
for
(
const
section
of
processedData
)
{
for
(
const
section
of
processedData
)
{
if
(
section
.
data
)
{
if
(
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
for
(
const
field
of
section
.
data
)
{
if
(
!
props
.
idsObj
.
appointmentBizId
&&
field
.
defaultValue
)
{
if
(
field
.
key
==
'isSecond'
)
{
form
.
value
[
field
.
key
]
=
Number
(
field
.
defaultValue
)
}
else
{
form
.
value
[
field
.
key
]
=
field
.
defaultValue
}
}
// 编辑状态下回显表单值
// 编辑状态下回显表单值
if
(
section
.
key
==
'apiSecondHolderInfoDto'
&&
props
.
idsObj
.
appointmentBizId
)
{
if
(
section
.
key
==
'apiSecondHolderInfoDto'
&&
props
.
idsObj
.
appointmentBizId
)
{
if
(
obj
[
'detailInfo'
]
&&
obj
[
'detailInfo'
][
'isSecond'
]
==
'0'
)
{
if
(
obj
[
'detailInfo'
]
&&
obj
[
'detailInfo'
][
'isSecond'
]
==
'0'
)
{
...
...
src/views/sign/appointment/index.vue
View file @
7f73a77f
...
@@ -70,7 +70,13 @@
...
@@ -70,7 +70,13 @@
prop=
"appointmentNo"
prop=
"appointmentNo"
width=
"200"
width=
"200"
fixed=
"left"
fixed=
"left"
/>
>
<template
#
default=
"scope"
>
<el-button
link
size=
"default"
>
<span
@
click=
"copyToClipboard(scope.row.appointmentNo,'预约编号')"
>
{{
scope
.
row
.
appointmentNo
}}
</span>
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"预约状态"
align=
"center"
prop=
"status"
fixed=
"left"
width=
"100"
>
<el-table-column
label=
"预约状态"
align=
"center"
prop=
"status"
fixed=
"left"
width=
"100"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"csf_ap_status"
:value=
"scope.row.status"
/>
<dict-tag
:options=
"csf_ap_status"
:value=
"scope.row.status"
/>
...
@@ -94,16 +100,11 @@
...
@@ -94,16 +100,11 @@
<el-table-column
label=
"投保人"
align=
"center"
prop=
"policyholder"
width=
"150"
/>
<el-table-column
label=
"投保人"
align=
"center"
prop=
"policyholder"
width=
"150"
/>
<el-table-column
label=
"受保人"
align=
"center"
prop=
"insurant"
width=
"150"
/>
<el-table-column
label=
"受保人"
align=
"center"
prop=
"insurant"
width=
"150"
/>
<!-- <el-table-column label="供款频率" align="center"
prop="paymentFrequency" width="100
">
<!-- <el-table-column label="供款频率" align="center"
width="150" prop="paymentFrequency
">
<template #default="scope">
<template #default="scope">
<dict-tag :options="csf_ap_frequency" :value="scope.row.paymentFrequency" />
<dict-tag :options="csf_ap_frequency" :value="scope.row.paymentFrequency" />
</template>
</template>
</el-table-column> -->
</el-table-column> -->
<el-table-column
label=
"供款频率"
align=
"center"
width=
"150"
prop=
"paymentFrequency"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"csf_ap_frequency"
:value=
"scope.row.paymentFrequency"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"供款期数"
align=
"center"
prop=
"paymentTerm"
width=
"100"
/>
<el-table-column
label=
"供款期数"
align=
"center"
prop=
"paymentTerm"
width=
"100"
/>
<el-table-column
label=
"每期保费"
align=
"center"
prop=
"eachIssuePremium"
width=
"100"
/>
<el-table-column
label=
"每期保费"
align=
"center"
prop=
"eachIssuePremium"
width=
"100"
/>
...
@@ -212,6 +213,7 @@ import {
...
@@ -212,6 +213,7 @@ import {
getItineraryExprot
getItineraryExprot
}
from
'@/api/sign/appointment'
}
from
'@/api/sign/appointment'
import
useUserStore
from
'@/store/modules/user'
import
useUserStore
from
'@/store/modules/user'
import
{
copyToClipboard
}
from
'@/utils/copyToClipboard'
const
dictStore
=
useDictStore
()
const
dictStore
=
useDictStore
()
const
userStore
=
useUserStore
()
const
userStore
=
useUserStore
()
const
router
=
useRouter
()
const
router
=
useRouter
()
...
@@ -270,7 +272,7 @@ const { bx_currency_type, csf_ap_status, csf_ap_meeting_point, csf_ap_frequency
...
@@ -270,7 +272,7 @@ const { bx_currency_type, csf_ap_status, csf_ap_meeting_point, csf_ap_frequency
const
baseDropdownItems
=
[
const
baseDropdownItems
=
[
{
label
:
'修改'
,
value
:
'edit'
,
confirm
:
''
},
{
label
:
'修改'
,
value
:
'edit'
,
confirm
:
''
},
{
{
label
:
'生成行程单'
,
label
:
'
确认
生成行程单'
,
value
:
'viewItinerary'
,
value
:
'viewItinerary'
,
confirm
:
''
,
confirm
:
''
,
// 只有当 row.status == 1 时才显示
// 只有当 row.status == 1 时才显示
...
...
src/views/sign/policyReceipts/index.vue
View file @
7f73a77f
...
@@ -330,7 +330,8 @@ const setPayoutAmountConfig = [
...
@@ -330,7 +330,8 @@ const setPayoutAmountConfig = [
prop
:
'currentPaymentAmount'
,
prop
:
'currentPaymentAmount'
,
label
:
'出账金额'
,
label
:
'出账金额'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
rules
:
[{
pattern
:
/^
\d
+$/
,
message
:
'只能输入正整数'
,
trigger
:
'blur'
}]
decimalDigits
:
4
,
rules
:
[{
pattern
:
/^
\d
+
(\.\d{1,4})?
$/
,
message
:
'最多四位小数'
,
trigger
:
'blur'
}]
},
},
{
{
type
:
'select'
,
type
:
'select'
,
...
...
src/views/sign/policyReceipts/premiumRecon.vue
View file @
7f73a77f
...
@@ -36,7 +36,6 @@
...
@@ -36,7 +36,6 @@
?
'首期保费对账'
?
'首期保费对账'
:
'续期保费对账'
:
'续期保费对账'
}}
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"insuranceCompany"
label=
"保险公司"
width=
"150"
/>
<el-table-column
prop=
"insuranceCompany"
label=
"保险公司"
width=
"150"
/>
...
@@ -218,6 +217,7 @@
...
@@ -218,6 +217,7 @@
:showClose=
"true"
:showClose=
"true"
@
close=
"showAffirm = false"
@
close=
"showAffirm = false"
@
confirm=
"confirmAffirm"
@
confirm=
"confirmAffirm"
:confirmLoading=
"settingAffirmLoading"
>
>
<SearchForm
ref=
"affirmFormRef"
:config=
"affirmConfig"
v-model=
"affirmFormModel"
/>
<SearchForm
ref=
"affirmFormRef"
:config=
"affirmConfig"
v-model=
"affirmFormModel"
/>
</CommonDialog>
</CommonDialog>
...
@@ -320,6 +320,7 @@ const showRemittance = ref(false)
...
@@ -320,6 +320,7 @@ const showRemittance = ref(false)
const
remittanceFormRef
=
ref
(
null
)
const
remittanceFormRef
=
ref
(
null
)
const
bankOptions
=
ref
([])
//银行options
const
bankOptions
=
ref
([])
//银行options
const
currentRow
=
ref
({})
//银行options
const
currentRow
=
ref
({})
//银行options
const
settingAffirmLoading
=
ref
(
false
)
const
searchConfig
=
ref
([
const
searchConfig
=
ref
([
{
{
type
:
'select'
,
type
:
'select'
,
...
@@ -460,9 +461,10 @@ const affirmConfig = [
...
@@ -460,9 +461,10 @@ const affirmConfig = [
prop
:
'recognizedAmount'
,
prop
:
'recognizedAmount'
,
label
:
'保司认定金额'
,
label
:
'保司认定金额'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
decimalDigits
:
4
,
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
},
{
pattern
:
/^
\d
+
$/
,
message
:
'只能输入正整数
'
}
{
pattern
:
/^
\d
+
(\.\d{1,4})?
$/
,
message
:
'最多四位小数'
,
trigger
:
'blur
'
}
]
]
},
},
{
{
...
@@ -494,7 +496,8 @@ const affirmConfig = [
...
@@ -494,7 +496,8 @@ const affirmConfig = [
placeholder
:
'请选择'
,
placeholder
:
'请选择'
,
maxDate
:
'today'
,
maxDate
:
'today'
,
visible
:
formData
=>
visible
:
formData
=>
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
,
(
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
)
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
,
rules
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
rules
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
},
},
{
{
...
@@ -505,7 +508,8 @@ const affirmConfig = [
...
@@ -505,7 +508,8 @@ const affirmConfig = [
maxDate
:
'today'
,
maxDate
:
'today'
,
rules
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
rules
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
visible
:
formData
=>
visible
:
formData
=>
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
,
(
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
)
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
},
},
{
{
type
:
'select'
,
type
:
'select'
,
...
@@ -513,7 +517,30 @@ const affirmConfig = [
...
@@ -513,7 +517,30 @@ const affirmConfig = [
label
:
'保单状态'
,
label
:
'保单状态'
,
dictType
:
'csf_policy_status_new'
,
dictType
:
'csf_policy_status_new'
,
visible
:
formData
=>
visible
:
formData
=>
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
,
(
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
)
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
},
{
type
:
'date'
,
prop
:
'policyExpirationDate'
,
label
:
'保单截至日'
,
placeholder
:
'请选择'
,
// maxDate: 'today',
visible
:
formData
=>
(
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
)
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
// rules: [{ required: true, message: '请输入', trigger: 'blur' }]
},
{
type
:
'date'
,
prop
:
'coolingOffEndDate'
,
label
:
'冷静期到期日'
,
placeholder
:
'请选择'
,
// maxDate: 'today',
visible
:
formData
=>
(
formData
.
remainingUnpaidAmount
&&
Number
(
formData
.
remainingUnpaidAmount
)
<
0
)
||
Number
(
formData
.
remainingUnpaidAmount
)
==
0
,
rules
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
}
}
]
]
//计算待付金额
//计算待付金额
...
@@ -533,6 +560,7 @@ const calculateAmount = async () => {
...
@@ -533,6 +560,7 @@ const calculateAmount = async () => {
}
}
}
}
const
confirmAffirm
=
async
()
=>
{
const
confirmAffirm
=
async
()
=>
{
settingAffirmLoading
.
value
=
true
try
{
try
{
const
formData
=
await
affirmFormRef
.
value
.
validate
()
const
formData
=
await
affirmFormRef
.
value
.
validate
()
console
.
log
(
formData
.
value
)
console
.
log
(
formData
.
value
)
...
@@ -545,6 +573,7 @@ const confirmAffirm = async () => {
...
@@ -545,6 +573,7 @@ const confirmAffirm = async () => {
newObj
.
premiumReconciliationBizId
=
currentRow
.
value
.
premiumReconciliationBizId
newObj
.
premiumReconciliationBizId
=
currentRow
.
value
.
premiumReconciliationBizId
let
res
=
await
submitResult
(
newObj
)
let
res
=
await
submitResult
(
newObj
)
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
settingAffirmLoading
.
value
=
false
ElMessage
.
success
(
'认定成功'
)
ElMessage
.
success
(
'认定成功'
)
showAffirm
.
value
=
false
showAffirm
.
value
=
false
affirmFormModel
.
value
=
{}
affirmFormModel
.
value
=
{}
...
@@ -587,14 +616,13 @@ const remittanceConfig = [
...
@@ -587,14 +616,13 @@ const remittanceConfig = [
prop
:
'paymentAmount'
,
prop
:
'paymentAmount'
,
label
:
'付款金额'
,
label
:
'付款金额'
,
inputType
:
'decimal'
,
inputType
:
'decimal'
,
decimalDigits
:
4
,
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
},
{
{
validator
:
(
rule
,
value
,
callback
)
=>
{
validator
:
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
''
||
value
==
null
)
{
if
(
value
===
''
||
value
==
null
)
{
callback
(
new
Error
(
'请输入付款金额'
))
callback
(
new
Error
(
'请输入付款金额'
))
}
else
if
(
!
/^
\d
+$/
.
test
(
String
(
value
)))
{
callback
(
new
Error
(
'只能输入正整数'
))
}
else
{
}
else
{
callback
()
callback
()
}
}
...
@@ -636,7 +664,7 @@ const remittanceConfig = [
...
@@ -636,7 +664,7 @@ const remittanceConfig = [
label
:
'付款银行'
,
label
:
'付款银行'
,
api
:
'/base/api/bank/page'
,
api
:
'/base/api/bank/page'
,
keywordField
:
'policyNo'
,
keywordField
:
'policyNo'
,
requestParams
:
{
pageNo
:
1
,
pageSize
:
2
0
},
requestParams
:
{
pageNo
:
1
,
pageSize
:
5
0
},
debounceWait
:
500
,
// 自定义防抖时间
debounceWait
:
500
,
// 自定义防抖时间
valueKey
:
'bankBizId'
,
valueKey
:
'bankBizId'
,
...
@@ -768,10 +796,10 @@ const handleUploadSuccess = (prop, Model) => {
...
@@ -768,10 +796,10 @@ const handleUploadSuccess = (prop, Model) => {
// 代表是从新增保单对账开始
// 代表是从新增保单对账开始
if
(
item
.
response
)
{
if
(
item
.
response
)
{
let
newObj
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
response
.
data
))
let
newObj
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
response
.
data
))
;(
item
.
fileName
=
newObj
.
originalName
),
//文件名
;(
(
item
.
fileName
=
newObj
.
originalName
),
//文件名
(
item
.
fileType
=
newObj
.
fileType
),
//文件类型
(
item
.
fileType
=
newObj
.
fileType
),
//文件类型
(
item
.
fileUrl
=
newObj
.
url
),
//文件URL,
(
item
.
fileUrl
=
newObj
.
url
),
//文件URL,
(
item
.
url
=
newObj
.
url
)
(
item
.
url
=
newObj
.
url
)
)
}
}
})
})
tempOtherFileList
.
value
=
list
tempOtherFileList
.
value
=
list
...
@@ -1188,6 +1216,7 @@ const handleSelect = (command, row) => {
...
@@ -1188,6 +1216,7 @@ const handleSelect = (command, row) => {
getPremiumReconciliationDetail
(
row
)
getPremiumReconciliationDetail
(
row
)
}
else
if
(
command
===
'settingResult'
)
{
}
else
if
(
command
===
'settingResult'
)
{
affirmFormModel
.
value
=
{}
affirmFormModel
.
value
=
{}
settingAffirmLoading
.
value
=
false
showAffirm
.
value
=
true
showAffirm
.
value
=
true
currentRow
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
row
))
currentRow
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
row
))
}
}
...
...
src/views/sign/underwritingMain/index.vue
View file @
7f73a77f
<
template
>
<
template
>
<div>
<div>
<CommonPage
:operationBtnList=
'operationBtnList'
:visibleDefaultButtons=
"visibleDefaultButtons"
<CommonPage
:operationBtnList=
'operationBtnList'
:visibleDefaultButtons=
"visibleDefaultButtons"
v-loading
.
fullscreen
.
lock=
"statusLoading"
:showSearchForm=
'true'
:show-pagination=
'true'
:total=
'pageTotal'
:current-page=
'currentPage'
:showSearchForm=
'true'
:show-pagination=
'true'
:total=
'pageTotal'
:current-page=
'currentPage'
:page-size=
'pageSize'
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
>
:page-size=
'pageSize'
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
>
<!-- 搜索区域 -->
<!-- 搜索区域 -->
...
@@ -69,7 +69,7 @@
...
@@ -69,7 +69,7 @@
<!-- 查看详情、更新数据 -->
<!-- 查看详情、更新数据 -->
<CommonDialog
:dialogTitle=
'mode === "viewDetail" ? "查看详情" : "更新数据"'
dialogWidth=
'80%'
<CommonDialog
:dialogTitle=
'mode === "viewDetail" ? "查看详情" : "更新数据"'
dialogWidth=
'80%'
:openDialog=
viewDetailDialogFlag
:showAction=
'false'
:showClose=
'true'
@
close=
'viewDetailDialogFlag
=
false'
:openDialog=
viewDetailDialogFlag
:showAction=
'false'
:showClose=
'true'
@
close=
'viewDetailDialogFlag
=
false'
@
confirm=
'handleUpdateSubmit'
>
@
confirm=
'handleUpdateSubmit'
>
<PolicyDetail
v-model=
"policyDetailFormData"
:policyBizId=
"selectedRow.policyBizId"
:mode=
"mode"
<PolicyDetail
v-model=
"policyDetailFormData"
:policyBizId=
"selectedRow.policyBizId"
:mode=
"mode"
ref=
"policyDetailFormRef"
@
submit=
"onSubmit"
@
cancel=
"viewDetailDialogFlag = false"
ref=
"policyDetailFormRef"
@
submit=
"onSubmit"
@
cancel=
"viewDetailDialogFlag = false"
...
@@ -82,7 +82,7 @@
...
@@ -82,7 +82,7 @@
<
script
setup
>
<
script
setup
>
import
{
ref
,
reactive
,
computed
,
watch
,
nextTick
}
from
'vue'
import
{
ref
,
reactive
,
computed
,
watch
,
nextTick
}
from
'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
CommonPage
from
'@/components/commonPage'
import
CommonPage
from
'@/components/commonPage'
import
SearchForm
from
'@/components/SearchForm/SearchForm.vue'
import
SearchForm
from
'@/components/SearchForm/SearchForm.vue'
import
CommonDialog
from
'@/components/commonDialog'
import
CommonDialog
from
'@/components/commonDialog'
...
@@ -94,9 +94,9 @@ import {
...
@@ -94,9 +94,9 @@ import {
getExpectedCommissionList
,
getExpectedCommissionList
,
changePolicyStatus
,
changePolicyStatus
,
policyFollowReport
,
policyFollowReport
,
saveMailingInfo
,
updatePolicyfollow
,
batchSaveBrokers
,
saveInitialPayment
saveMailingInfo
,
updatePolicyfollow
,
batchSaveBrokers
,
saveInitialPayment
,
updatePolicyProduct
}
from
'@/api/sign/underwritingMain'
}
from
'@/api/sign/underwritingMain'
import
{
copyToClipboard
}
from
'@/utils/copyToClipboard'
import
PolicyDetail
from
'./policyDetail.vue'
import
PolicyDetail
from
'./policyDetail.vue'
const
policyDetailFormRef
=
ref
(
null
)
const
policyDetailFormRef
=
ref
(
null
)
const
policyDetailFormData
=
ref
({})
const
policyDetailFormData
=
ref
({})
...
@@ -106,11 +106,13 @@ const currentPage = ref(1)
...
@@ -106,11 +106,13 @@ const currentPage = ref(1)
const
pageSize
=
ref
(
10
)
const
pageSize
=
ref
(
10
)
const
pageTotal
=
ref
(
0
)
const
pageTotal
=
ref
(
0
)
const
loading
=
ref
(
false
)
const
loading
=
ref
(
false
)
const
statusLoading
=
ref
(
false
)
// 搜索表单数据
// 搜索表单数据
const
searchFormData
=
reactive
({})
const
searchFormData
=
reactive
({})
const
selectedRow
=
ref
(
null
)
const
selectedRow
=
ref
(
null
)
// 弹窗相关
// 弹窗相关
const
editStatusDialogFlag
=
ref
(
false
)
const
editStatusDialogFlag
=
ref
(
false
)
// 修改状态
// 修改状态
const
editStatusFormData
=
ref
({})
const
editStatusFormData
=
ref
({})
const
editStatusFormRef
=
ref
(
null
)
const
editStatusFormRef
=
ref
(
null
)
...
@@ -139,6 +141,7 @@ const viewRelatedDetail = (row) => {
...
@@ -139,6 +141,7 @@ const viewRelatedDetail = (row) => {
}
}
// 提交修改状态
// 提交修改状态
const
handleEditStatusSubmit
=
async
()
=>
{
const
handleEditStatusSubmit
=
async
()
=>
{
statusLoading
.
value
=
true
;
try
{
try
{
await
editStatusFormRef
.
value
.
validate
()
await
editStatusFormRef
.
value
.
validate
()
const
res
=
await
changePolicyStatus
({
const
res
=
await
changePolicyStatus
({
...
@@ -146,13 +149,16 @@ const handleEditStatusSubmit = async () => {
...
@@ -146,13 +149,16 @@ const handleEditStatusSubmit = async () => {
...
editStatusFormData
.
value
...
editStatusFormData
.
value
})
})
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
statusLoading
.
value
=
false
;
ElMessage
.
success
(
'修改状态成功'
)
ElMessage
.
success
(
'修改状态成功'
)
editStatusDialogFlag
.
value
=
false
editStatusDialogFlag
.
value
=
false
loadTableData
()
loadTableData
()
}
else
{
}
else
{
statusLoading
.
value
=
false
;
ElMessage
.
error
(
res
.
msg
||
'修改状态失败'
)
ElMessage
.
error
(
res
.
msg
||
'修改状态失败'
)
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
statusLoading
.
value
=
false
;
console
.
error
(
'修改状态失败'
,
error
)
console
.
error
(
'修改状态失败'
,
error
)
}
}
}
}
...
@@ -177,7 +183,7 @@ const onSubmit = async (data) => {
...
@@ -177,7 +183,7 @@ const onSubmit = async (data) => {
}
else
{
}
else
{
ElMessage
.
error
(
res
.
msg
||
'保存邮寄信息失败'
)
ElMessage
.
error
(
res
.
msg
||
'保存邮寄信息失败'
)
}
}
}
else
if
(
data
.
activeTab
===
'basic'
||
data
.
activeTab
===
'productPlan'
)
{
}
else
if
(
data
.
activeTab
===
'basic'
)
{
params
=
{
params
=
{
policyBizId
:
selectedRow
.
value
.
policyBizId
,
policyBizId
:
selectedRow
.
value
.
policyBizId
,
...
data
,
...
data
,
...
@@ -186,10 +192,25 @@ const onSubmit = async (data) => {
...
@@ -186,10 +192,25 @@ const onSubmit = async (data) => {
const
res
=
await
updatePolicyfollow
(
params
)
const
res
=
await
updatePolicyfollow
(
params
)
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
ElMessage
.
success
(
data
.
activeTab
===
'basic'
?
'保存基本信息成功'
:
'保存产品计划成功'
)
ElMessage
.
success
(
data
.
activeTab
===
'basic'
?
'保存基本信息成功'
:
'保存产品计划成功'
)
loadTableData
()
// viewDetailDialogFlag.value = false
// viewDetailDialogFlag.value = false
}
else
{
}
else
{
ElMessage
.
error
(
res
.
msg
||
(
data
.
activeTab
===
'basic'
?
'保存基本信息失败'
:
'保存产品计划失败'
))
ElMessage
.
error
(
res
.
msg
||
(
data
.
activeTab
===
'basic'
?
'保存基本信息失败'
:
'保存产品计划失败'
))
}
}
}
else
if
(
data
.
activeTab
===
'productPlan'
)
{
params
=
{
policyBizId
:
selectedRow
.
value
.
policyBizId
,
apiProductPlanMainInfoDto
:{...
data
},
activeTab
:
undefined
}
const
res
=
await
updatePolicyProduct
(
params
)
if
(
res
.
code
===
200
)
{
ElMessage
.
success
(
'保存产品计划成功'
)
loadTableData
()
// viewDetailDialogFlag.value = false
}
else
{
ElMessage
.
error
(
res
.
msg
||
(
'保存产品计划失败'
))
}
}
else
if
(
data
.
activeTab
===
'introducer'
)
{
}
else
if
(
data
.
activeTab
===
'introducer'
)
{
params
=
{
params
=
{
policyBizId
:
selectedRow
.
value
.
policyBizId
,
policyBizId
:
selectedRow
.
value
.
policyBizId
,
...
@@ -433,7 +454,9 @@ const handleSelect = async (e, row) => {
...
@@ -433,7 +454,9 @@ const handleSelect = async (e, row) => {
}
}
editStatusDialogFlag
.
value
=
true
editStatusDialogFlag
.
value
=
true
editStatusFormData
.
value
=
{
editStatusFormData
.
value
=
{
status
:
row
.
status
status
:
row
.
status
,
effectiveDate
:
row
.
effectiveDate
,
underwritingDate
:
row
.
underwritingDate
}
}
break
break
case
'viewRelated'
:
case
'viewRelated'
:
...
...
src/views/sign/underwritingMain/policyDetail.vue
View file @
7f73a77f
This diff is collapsed.
Click to expand it.
src/views/workbench/index.vue
View file @
7f73a77f
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<el-col
:sm=
"12"
:lg=
"12"
:xs=
"24"
>
<el-col
:sm=
"12"
:lg=
"12"
:xs=
"24"
>
<div
class=
"headerLeft"
>
<div
class=
"headerLeft"
>
<div
class=
"top"
>
欢迎!
</div>
<div
class=
"top"
>
欢迎!
</div>
<div
class=
"bottom"
>
王力群
</div>
<div
class=
"bottom"
>
CSF-HK
</div>
</div>
</div>
</el-col>
</el-col>
<el-col
:sm=
"12"
:lg=
"12"
:xs=
"24"
class=
"right"
>
<el-col
:sm=
"12"
:lg=
"12"
:xs=
"24"
class=
"right"
>
...
@@ -180,14 +180,14 @@ const headerList = ref([
...
@@ -180,14 +180,14 @@ const headerList = ref([
id
:
'1'
,
id
:
'1'
,
title
:
'总保费(HKD)'
,
title
:
'总保费(HKD)'
,
icon
:
'icon-zongbaofei'
,
icon
:
'icon-zongbaofei'
,
count
:
'
392.52
'
,
count
:
'
--
'
,
url
:
'/todo'
url
:
'/todo'
},
},
{
{
id
:
'2'
,
id
:
'2'
,
title
:
'有效保单数'
,
title
:
'有效保单数'
,
icon
:
'icon-youxiaobaodan'
,
icon
:
'icon-youxiaobaodan'
,
count
:
'
0.00
'
,
count
:
'
--
'
,
url
:
'/todo'
url
:
'/todo'
},
},
...
@@ -195,7 +195,7 @@ const headerList = ref([
...
@@ -195,7 +195,7 @@ const headerList = ref([
id
:
'3'
,
id
:
'3'
,
title
:
'待来佣保单'
,
title
:
'待来佣保单'
,
icon
:
'icon-daijiesuan'
,
icon
:
'icon-daijiesuan'
,
count
:
'
10
'
,
count
:
'
--
'
,
url
:
'/todo'
url
:
'/todo'
}
}
])
])
...
@@ -275,7 +275,7 @@ const staticList = ref([
...
@@ -275,7 +275,7 @@ const staticList = ref([
id
:
'1'
,
id
:
'1'
,
title
:
'财务需求分析数'
,
title
:
'财务需求分析数'
,
icon
:
'icon-xiexian'
,
icon
:
'icon-xiexian'
,
count
:
'
3735
'
,
count
:
'
--
'
,
unit
:
'条'
,
unit
:
'条'
,
url
:
'/todo'
,
url
:
'/todo'
,
color
:
'#F53F3F'
color
:
'#F53F3F'
...
@@ -284,7 +284,7 @@ const staticList = ref([
...
@@ -284,7 +284,7 @@ const staticList = ref([
id
:
'2'
,
id
:
'2'
,
title
:
'预约单数'
,
title
:
'预约单数'
,
icon
:
'icon-xiexian'
,
icon
:
'icon-xiexian'
,
count
:
'
12
'
,
count
:
'
--
'
,
unit
:
'单'
,
unit
:
'单'
,
url
:
'/todo'
,
url
:
'/todo'
,
color
:
'#0FC6C2'
color
:
'#0FC6C2'
...
@@ -293,7 +293,7 @@ const staticList = ref([
...
@@ -293,7 +293,7 @@ const staticList = ref([
id
:
'3'
,
id
:
'3'
,
title
:
'新单数'
,
title
:
'新单数'
,
icon
:
'icon-xiexian'
,
icon
:
'icon-xiexian'
,
count
:
'
12
'
,
count
:
'
--
'
,
unit
:
'单'
,
unit
:
'单'
,
url
:
'/todo'
,
url
:
'/todo'
,
color
:
'#165DFF'
color
:
'#165DFF'
...
@@ -302,7 +302,7 @@ const staticList = ref([
...
@@ -302,7 +302,7 @@ const staticList = ref([
id
:
'4'
,
id
:
'4'
,
title
:
'续期保单数'
,
title
:
'续期保单数'
,
icon
:
'icon-xiexian'
,
icon
:
'icon-xiexian'
,
count
:
'
13
'
,
count
:
'
--
'
,
unit
:
'份'
,
unit
:
'份'
,
url
:
'/todo'
,
url
:
'/todo'
,
color
:
'#0FC6C2'
color
:
'#0FC6C2'
...
@@ -312,22 +312,22 @@ const infoList = ref([
...
@@ -312,22 +312,22 @@ const infoList = ref([
{
{
id
:
'1'
,
id
:
'1'
,
title
:
'产品优惠'
,
title
:
'产品优惠'
,
subTitle
:
'
XXXXX第四季度优惠政策
'
subTitle
:
'
暂未开放
'
},
},
{
{
id
:
'2'
,
id
:
'2'
,
title
:
'产品培训'
,
title
:
'产品培训'
,
subTitle
:
'
XXXXX产品培训回
放'
subTitle
:
'
暂未开
放'
},
},
{
{
id
:
'3'
,
id
:
'3'
,
title
:
'重要通知'
,
title
:
'重要通知'
,
subTitle
:
'
XXXXX保单未续费
'
subTitle
:
'
暂未开放
'
},
},
{
{
id
:
'4'
,
id
:
'4'
,
title
:
'系统消息'
,
title
:
'系统消息'
,
subTitle
:
'
FNA导出成功
!'
subTitle
:
'
暂未开放
!'
}
}
])
])
const
timeList
=
ref
([
const
timeList
=
ref
([
...
@@ -351,21 +351,21 @@ const workList = ref([
...
@@ -351,21 +351,21 @@ const workList = ref([
{
{
id
:
'1'
,
id
:
'1'
,
title
:
'新单跟进'
,
title
:
'新单跟进'
,
subTitle
:
'
张三预约单待录入
'
,
subTitle
:
'
暂未开放
'
,
unit
:
'Q'
,
unit
:
'Q'
,
color
:
'#7BC616'
color
:
'#7BC616'
},
},
{
{
id
:
'2'
,
id
:
'2'
,
title
:
'续费提醒'
,
title
:
'续费提醒'
,
subTitle
:
'
bug fix
'
,
subTitle
:
'
暂未开放
'
,
unit
:
'Y'
,
unit
:
'Y'
,
color
:
'#14C9C9'
color
:
'#14C9C9'
},
},
{
{
id
:
'3'
,
id
:
'3'
,
title
:
'预约单生成'
,
title
:
'预约单生成'
,
subTitle
:
'
车险预约单已生成
'
,
subTitle
:
'
暂未开放
'
,
unit
:
'N'
,
unit
:
'N'
,
color
:
'#168CFF'
color
:
'#168CFF'
}
}
...
...
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