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
7623c5ef
Commit
7623c5ef
authored
Nov 07, 2025
by
yuzhenWang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加预计来佣和修改新单跟进状态
parent
0421718f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
166 additions
and
242 deletions
+166
-242
src/api/sign/underwritingMain.js
+39
-0
src/formJson/commissionList.js
+23
-0
src/views/sign/FnaList/index.vue
+1
-10
src/views/sign/appointment/appointmentEdit.vue
+32
-21
src/views/sign/underwritingMain/components/brokerInfo.vue
+1
-0
src/views/sign/underwritingMain/components/expectedCommission.vue
+0
-0
src/views/sign/underwritingMain/components/policyInfo.vue
+0
-1
src/views/sign/underwritingMain/followUpDetail.vue
+5
-201
src/views/sign/underwritingMain/index.vue
+65
-9
No files found.
src/api/sign/underwritingMain.js
View file @
7623c5ef
...
@@ -134,3 +134,42 @@ export function delPolicyBeneficiary(policyBeneficiaryBizId) {
...
@@ -134,3 +134,42 @@ export function delPolicyBeneficiary(policyBeneficiaryBizId) {
method
:
'delete'
method
:
'delete'
})
})
}
}
// 新单跟进的预计来佣列表
export
function
getCommissionList
(
data
)
{
return
request
({
url
:
'/csf/api/CommissionExpected/list/page'
,
method
:
'post'
,
data
:
data
})
}
// 新单跟进的预计来佣单个提交
export
function
editSigalCommission
(
data
)
{
return
request
({
url
:
'/csf/api/CommissionExpected/update'
,
method
:
'post'
,
data
:
data
})
}
// 新单跟进的预计来佣批量提交
export
function
editMultipleCommission
(
data
)
{
return
request
({
url
:
'/csf/api/CommissionExpected/add'
,
method
:
'post'
,
data
:
data
})
}
// 删除单个来佣
export
function
delCommissionExpected
(
commissionExpectedBizId
)
{
return
request
({
url
:
'/csf/api/CommissionExpected/delete?commissionExpectedBizId='
+
commissionExpectedBizId
,
method
:
'delete'
})
}
// 编辑新单跟进状态
export
function
changePolicyStatus
(
data
)
{
return
request
({
url
:
'/csf/api/policy_follow/change_status'
,
method
:
'post'
,
data
:
data
})
}
src/formJson/commissionList.js
0 → 100644
View file @
7623c5ef
const
commissionList
=
[
// 转介人信息
{
fatherTitle
:
'预计来佣'
,
keyType
:
'Array'
,
//用于表单收集值时,判断是数组还是对象
showTable
:
true
,
//以table的形式展示
key
:
'commissionList'
,
addFamilyChildren
:
true
,
//是否可以新增子级dom
fatherRequired
:
false
,
//父级必填,代表个人资料这个模块有必填项
data
:
[
// {
// id: Date.now() + Math.floor(Math.random() * 1000), //唯一标识
// brokerName: '',
// team: '',
// brokerRatio: '',
// needProvide: '',
// currency: '',
// remark: ''
// }
]
}
]
export
default
commissionList
src/views/sign/FnaList/index.vue
View file @
7623c5ef
...
@@ -191,16 +191,7 @@ const handleCopy = row => {
...
@@ -191,16 +191,7 @@ const handleCopy = row => {
proxy
.
$modal
.
msgSuccess
(
'生成副本成功'
)
proxy
.
$modal
.
msgSuccess
(
'生成副本成功'
)
}
}
})
})
// proxy.$modal
// .confirm('是否确认复用' + row.customerName + '的FNA流程?')
// .then(function () {
// return subProcess({ fnaBizId: row.fnaBizId })
// })
// .then(() => {
// getList()
// proxy.$modal.msgSuccess('生成副本成功')
// })
// .catch(() => {})
}
}
const
sortChange
=
({
prop
,
order
})
=>
{
const
sortChange
=
({
prop
,
order
})
=>
{
if
(
order
==
'ascending'
)
{
if
(
order
==
'ascending'
)
{
...
...
src/views/sign/appointment/appointmentEdit.vue
View file @
7623c5ef
...
@@ -44,7 +44,6 @@
...
@@ -44,7 +44,6 @@
<el-row
v-if=
"isEmbed"
>
<el-row
v-if=
"isEmbed"
>
<el-col>
<el-col>
<div
class=
"topButtonBox"
>
<div
class=
"topButtonBox"
>
<!-- -->
<el-button
<el-button
v-if=
"idsObj.appointmentBizId && pageSource !== 'policyList'"
v-if=
"idsObj.appointmentBizId && pageSource !== 'policyList'"
type=
"primary"
type=
"primary"
...
@@ -237,6 +236,13 @@
...
@@ -237,6 +236,13 @@
:verifyPolicyInfo=
"policyDetailInfo.verifyPolicyInfo"
:verifyPolicyInfo=
"policyDetailInfo.verifyPolicyInfo"
/>
/>
</div>
</div>
<div
v-if=
"tab.name === 'expectedCommission'"
>
<ExpectedCommission
:activeName=
"activeName"
:policyBizId=
"route.query.policyBizId"
:brokerList=
"policyDetailInfo.brokerList"
/>
</div>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
...
@@ -290,6 +296,7 @@ import PolicyFileUpload from '@/views/sign/underwritingMain/components/fileUploa
...
@@ -290,6 +296,7 @@ import PolicyFileUpload from '@/views/sign/underwritingMain/components/fileUploa
import
PolicyBrokerInfo
from
'@/views/sign/underwritingMain/components/brokerInfo.vue'
//新单跟进里的保单附件
import
PolicyBrokerInfo
from
'@/views/sign/underwritingMain/components/brokerInfo.vue'
//新单跟进里的保单附件
import
PolicyMailing
from
'@/views/sign/underwritingMain/components/policyMailing.vue'
//新单跟进里的保单附件
import
PolicyMailing
from
'@/views/sign/underwritingMain/components/policyMailing.vue'
//新单跟进里的保单附件
import
VerifyPolicyInfo
from
'@/views/sign/underwritingMain/components/verifyPolicyInfo.vue'
//新单跟进里的保单附件
import
VerifyPolicyInfo
from
'@/views/sign/underwritingMain/components/verifyPolicyInfo.vue'
//新单跟进里的保单附件
import
ExpectedCommission
from
'@/views/sign/underwritingMain/components/expectedCommission.vue'
//新单跟进里的保单附件
import
useUserStore
from
'@/store/modules/user'
import
useUserStore
from
'@/store/modules/user'
import
useDictStore
from
'@/store/modules/dict'
import
useDictStore
from
'@/store/modules/dict'
import
{
getCustomerDetail
}
from
'@/api/sign/fna'
import
{
getCustomerDetail
}
from
'@/api/sign/fna'
...
@@ -307,7 +314,6 @@ import { ref, nextTick, onUnmounted } from 'vue'
...
@@ -307,7 +314,6 @@ import { ref, nextTick, onUnmounted } from 'vue'
const
emit
=
defineEmits
([
'handleSuccess'
])
const
emit
=
defineEmits
([
'handleSuccess'
])
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
// const { csf_ap_status } = proxy.useDict('csf_ap_status')
const
props
=
defineProps
({
const
props
=
defineProps
({
embed
:
{
type
:
Boolean
,
default
:
false
},
//作为组件嵌入别的地方
embed
:
{
type
:
Boolean
,
default
:
false
},
//作为组件嵌入别的地方
editStatus
:
{
type
:
String
,
default
:
''
},
//作为组件嵌入别的地方
editStatus
:
{
type
:
String
,
default
:
''
},
//作为组件嵌入别的地方
...
@@ -317,6 +323,7 @@ const props = defineProps({
...
@@ -317,6 +323,7 @@ const props = defineProps({
policyDetailInfo
:
{
type
:
Object
,
default
:
()
=>
({})
},
//新单跟进传递关于保单的详情信息
policyDetailInfo
:
{
type
:
Object
,
default
:
()
=>
({})
},
//新单跟进传递关于保单的详情信息
policyId
:
{
type
:
Object
,
default
:
()
=>
({})
}
//新单跟进传递的Id
policyId
:
{
type
:
Object
,
default
:
()
=>
({})
}
//新单跟进传递的Id
})
})
// console.log();
const
userStore
=
useUserStore
()
const
userStore
=
useUserStore
()
const
dictStore
=
useDictStore
()
const
dictStore
=
useDictStore
()
...
@@ -808,7 +815,7 @@ const tabHight = computed(() => {
...
@@ -808,7 +815,7 @@ const tabHight = computed(() => {
if
(
pageSource
.
value
==
'fnaList'
)
{
if
(
pageSource
.
value
==
'fnaList'
)
{
return
'calc(100vh - 407px)'
return
'calc(100vh - 407px)'
}
else
if
(
pageSource
.
value
==
'policyList'
)
{
}
else
if
(
pageSource
.
value
==
'policyList'
)
{
return
'calc(100vh - 2
30
px)'
return
'calc(100vh - 2
25
px)'
}
else
{
}
else
{
return
'calc(100vh - 276px)'
return
'calc(100vh - 276px)'
}
}
...
@@ -1005,107 +1012,113 @@ if (route.query.source == 'policyList') {
...
@@ -1005,107 +1012,113 @@ if (route.query.source == 'policyList') {
isEmbed
.
value
=
route
.
query
.
embed
isEmbed
.
value
=
route
.
query
.
embed
tabsList
.
value
=
[
tabsList
.
value
=
[
{
{
label
:
'预计来佣'
,
name
:
'expectedCommission'
,
id
:
1
,
key
:
'expectedCommission'
},
{
label
:
'保单信息'
,
label
:
'保单信息'
,
name
:
'policyInfo'
,
name
:
'policyInfo'
,
id
:
1
,
id
:
2
,
key
:
'policyInfo'
key
:
'policyInfo'
},
},
{
{
label
:
'保单附件'
,
label
:
'保单附件'
,
name
:
'policyAccessories'
,
name
:
'policyAccessories'
,
id
:
2
,
id
:
3
,
key
:
'policyAccessories'
key
:
'policyAccessories'
},
},
{
{
label
:
'转介人'
,
label
:
'转介人'
,
name
:
'policyBroker'
,
name
:
'policyBroker'
,
id
:
3
,
id
:
4
,
key
:
'policyBroker'
key
:
'policyBroker'
},
},
{
{
label
:
'邮寄信息'
,
label
:
'邮寄信息'
,
name
:
'policyMailing'
,
name
:
'policyMailing'
,
id
:
4
,
id
:
5
,
key
:
'policyMailing'
key
:
'policyMailing'
},
},
{
{
label
:
'核保信息'
,
label
:
'核保信息'
,
name
:
'verifyPolicyInfo'
,
name
:
'verifyPolicyInfo'
,
id
:
5
,
id
:
6
,
key
:
'verifyPolicyInfo'
key
:
'verifyPolicyInfo'
},
},
// {
// {
// label: '新单事项',
// label: '新单事项',
// name: 'newpolicyTodo',
// name: 'newpolicyTodo',
// id:
6
,
// id:
7
,
// key: 'newpolicyTodo'
// key: 'newpolicyTodo'
// },
// },
{
{
label
:
'产品计划'
,
label
:
'产品计划'
,
name
:
'productPlan'
,
name
:
'productPlan'
,
id
:
7
,
id
:
8
,
status
:
'0'
,
status
:
'0'
,
key
:
'planBizId'
key
:
'planBizId'
},
},
{
{
label
:
'投保人'
,
label
:
'投保人'
,
name
:
'policyholder'
,
name
:
'policyholder'
,
id
:
8
,
id
:
9
,
status
:
'0'
,
status
:
'0'
,
key
:
'policyholderBizId'
key
:
'policyholderBizId'
},
},
{
{
label
:
'受保人'
,
label
:
'受保人'
,
name
:
'insurantInfo'
,
name
:
'insurantInfo'
,
id
:
9
,
id
:
10
,
status
:
'0'
,
status
:
'0'
,
key
:
'insurantBizId'
key
:
'insurantBizId'
},
},
{
{
label
:
'受益人'
,
label
:
'受益人'
,
name
:
'beneficiary'
,
name
:
'beneficiary'
,
id
:
1
0
,
id
:
1
1
,
status
:
'0'
,
status
:
'0'
,
key
:
'beneficiaryBizId'
key
:
'beneficiaryBizId'
},
},
{
{
label
:
'第二持有人'
,
label
:
'第二持有人'
,
name
:
'secondHolder'
,
name
:
'secondHolder'
,
id
:
1
1
,
id
:
1
2
,
status
:
'0'
,
status
:
'0'
,
key
:
'secondHolderBizId'
key
:
'secondHolderBizId'
},
},
{
{
label
:
'健康信息'
,
//后端还没加这个字段
label
:
'健康信息'
,
//后端还没加这个字段
name
:
'questionnaires'
,
name
:
'questionnaires'
,
id
:
1
2
,
id
:
1
3
,
status
:
'0'
,
status
:
'0'
,
key
:
'questionnaireBizId'
key
:
'questionnaireBizId'
},
},
// {
// {
// label: '关联FNA',
// label: '关联FNA',
// name: 'fna',
// name: 'fna',
// id: 1
3
,
// id: 1
4
,
// status: '0',
// status: '0',
// key: 'fnaBizId'
// key: 'fnaBizId'
// },
// },
{
{
label
:
'转保声明'
,
label
:
'转保声明'
,
name
:
'policyTransfer'
,
name
:
'policyTransfer'
,
id
:
1
4
,
id
:
1
5
,
status
:
'0'
,
status
:
'0'
,
key
:
'policyTransfer'
key
:
'policyTransfer'
},
},
{
{
label
:
'预约附件'
,
//大提交的时候不用提交了,因为上传文件的时候已经入库了
label
:
'预约附件'
,
//大提交的时候不用提交了,因为上传文件的时候已经入库了
name
:
'accessories'
,
name
:
'accessories'
,
id
:
1
5
,
id
:
1
6
,
status
:
'0'
,
status
:
'0'
,
key
:
'fnaBizId'
key
:
'fnaBizId'
}
}
]
]
nextTick
(()
=>
{
nextTick
(()
=>
{
activeName
.
value
=
'
policyInfo
'
activeName
.
value
=
'
expectedCommission
'
})
})
}
}
// 根据页面来源的不同控制tab项内模块小提交按钮的显示与否,也能证明是修改状态
// 根据页面来源的不同控制tab项内模块小提交按钮的显示与否,也能证明是修改状态
...
@@ -1121,8 +1134,6 @@ const showSubmitBtn = computed(() => {
...
@@ -1121,8 +1134,6 @@ const showSubmitBtn = computed(() => {
}
}
})
})
onUnmounted
(()
=>
{
onUnmounted
(()
=>
{
console
.
log
(
'预约编辑页面完全销毁'
)
// 彻底重置所有响应式数据
// 彻底重置所有响应式数据
submitAppointmentObj
.
value
=
{}
submitAppointmentObj
.
value
=
{}
appointmentSummeryInfo
.
value
=
{}
appointmentSummeryInfo
.
value
=
{}
...
...
src/views/sign/underwritingMain/components/brokerInfo.vue
View file @
7623c5ef
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
<el-row
v-if=
"father.showTable"
>
<el-row
v-if=
"father.showTable"
>
<el-table
:data=
"father.data"
border
>
<el-table
:data=
"father.data"
border
>
<template
v-if=
"father.key == 'brokerList'"
>
<template
v-if=
"father.key == 'brokerList'"
>
<el-table-column
type=
"index"
width=
"60"
label=
"序号"
/>
<el-table-column
label=
"转介人比例"
prop=
"brokerRatio"
align=
"center"
>
<el-table-column
label=
"转介人比例"
prop=
"brokerRatio"
align=
"center"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<el-input
<el-input
...
...
src/views/sign/underwritingMain/components/expectedCommission.vue
0 → 100644
View file @
7623c5ef
This diff is collapsed.
Click to expand it.
src/views/sign/underwritingMain/components/policyInfo.vue
View file @
7623c5ef
...
@@ -567,7 +567,6 @@ watch(
...
@@ -567,7 +567,6 @@ watch(
}
}
}
}
)
)
processFormData
()
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.domEmpty
{
.domEmpty
{
...
...
src/views/sign/underwritingMain/followUpDetail.vue
View file @
7623c5ef
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<!--
<div>
<el-button
type=
"primary"
icon=
"Back"
@
click=
"handleBack"
style=
"margin-bottom: 10px"
>
返回
</el-button
>
</div>
-->
<!--
<el-card
shadow=
"never"
>
<div
class=
"tabsBox"
>
<el-tabs
v-model=
"activeName"
type=
"card"
class=
"demo-tabs"
:before-leave=
"beforeTabLeave"
>
<el-tab-pane
v-for=
"tab in tabsList"
:key=
"tab.name"
:label=
"tab.label"
:name=
"tab.name"
>
<div
class=
"tabPaneBox"
>
<div
v-if=
"tab.name === 'status'"
>
新单状态
</div>
<div
v-if=
"tab.name === 'info'"
>
<PolicyInfo
:activeName=
"activeName"
:policyBizId=
"route.query.policyBizId"
:dictTypeLists=
"dictTypeLists"
:policyInfo=
"policyInfo"
/>
</div>
<div
v-if=
"tab.name === 'accessories'"
>
<FileUpload
:activeName=
"activeName"
:policyBizId=
"route.query.policyBizId"
/>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-card>
-->
<AppointmentEdit
<AppointmentEdit
source=
"policyList"
source=
"policyList"
:policyId=
"route.query"
:policyId=
"route.query"
...
@@ -45,11 +10,9 @@
...
@@ -45,11 +10,9 @@
</
template
>
</
template
>
<
script
setup
name=
"FollowUpDetail"
>
<
script
setup
name=
"FollowUpDetail"
>
import
AppointmentEdit
from
'@/views/sign/appointment/appointmentEdit'
import
AppointmentEdit
from
'@/views/sign/appointment/appointmentEdit'
import
{
onUnmounted
}
from
'vue'
import
{
getPolicyfollow
,
getPolicyInfo
}
from
'@/api/sign/underwritingMain'
import
{
getPolicyfollow
,
getPolicyInfo
}
from
'@/api/sign/underwritingMain'
import
useUserStore
from
'@/store/modules/user'
import
useUserStore
from
'@/store/modules/user'
import
useDictStore
from
'@/store/modules/dict'
import
useDictStore
from
'@/store/modules/dict'
import
{
addFna
,
getProcessDetail
,
updateProcess
,
getCustomerDetail
}
from
'@/api/sign/fna'
import
{
import
{
listTenantUser
,
listTenantUser
,
getInsuranceProductList
,
getInsuranceProductList
,
...
@@ -57,53 +20,15 @@ import {
...
@@ -57,53 +20,15 @@ import {
getAllCompanys
,
getAllCompanys
,
getClientUser
getClientUser
}
from
'@/api/common'
}
from
'@/api/common'
import
PolicyInfo
from
'./components/policyInfo'
import
FileUpload
from
'./components/fileUpload.vue'
import
{
Check
}
from
'@element-plus/icons-vue'
import
{
ref
}
from
'vue'
import
{
ref
}
from
'vue'
const
userStore
=
useUserStore
()
const
userStore
=
useUserStore
()
const
dictStore
=
useDictStore
()
const
dictStore
=
useDictStore
()
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
const
route
=
useRoute
()
const
route
=
useRoute
()
const
router
=
useRouter
()
const
activeName
=
ref
(
'status'
)
const
showTab
=
ref
(
false
)
const
showTab
=
ref
(
false
)
const
processInfo
=
ref
({
fnaNo
:
'--'
,
status
:
'未保存'
,
createTime
:
proxy
.
parseTime
(
new
Date
()),
customerName
:
userStore
.
name
})
// 流程详情信息
const
updateStatus
=
ref
(
false
)
const
dictTypeLists
=
ref
([])
const
customerInfo
=
ref
({})
const
tabsList
=
ref
([
{
label
:
'新单状态'
,
name
:
'status'
,
id
:
1
,
status
:
'0'
,
key
:
'customerBizId'
},
{
label
:
'新单信息'
,
name
:
'info'
,
id
:
2
,
status
:
'0'
,
key
:
'fnaFormBizId'
},
{
label
:
'新单附件'
,
name
:
'accessories'
,
id
:
3
,
status
:
'0'
,
key
:
'policyBizld'
}
])
const
policyInfo
=
ref
({})
//新单信息详情
const
policyInfo
=
ref
({})
//新单信息详情
const
policyStatusList
=
ref
({})
//新单信息状态
const
{
csf_fna_status
}
=
proxy
.
useDict
(
'csf_fna_status'
)
// 获取各个流程所需要得字典数据
// 获取各个流程所需要得字典数据
const
getDictsData
=
async
()
=>
{
const
getDictsData
=
async
()
=>
{
// 获取租户用户列表
// 获取租户用户列表
...
@@ -228,6 +153,9 @@ const getPolicyDetail = () => {
...
@@ -228,6 +153,9 @@ const getPolicyDetail = () => {
...
infoRes
.
data
...
infoRes
.
data
}
}
showTab
.
value
=
true
showTab
.
value
=
true
// if (policyInfo.value.nextStatusList && policyInfo.value.nextStatusList.length > 0) {
// }
}
}
})
})
.
catch
(
error
=>
{
.
catch
(
error
=>
{
...
@@ -235,130 +163,6 @@ const getPolicyDetail = () => {
...
@@ -235,130 +163,6 @@ const getPolicyDetail = () => {
console
.
error
(
'请求失败:'
,
error
)
console
.
error
(
'请求失败:'
,
error
)
})
})
}
}
// 更新流程
const
processUpdate
=
(
data
,
status
)
=>
{
updateProcess
(
data
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
updateStatus
.
value
=
false
console
.
log
(
'更新流程'
,
res
)
// 获取流程详情
getProcessInfo
(
data
.
fnaBizId
,
status
)
}
})
}
// 获取流程详情
function
getProcessInfo
(
fnaBizId
,
changeTab
)
{
getProcessDetail
(
fnaBizId
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
processInfo
.
value
=
res
.
data
tabsList
.
value
.
forEach
(
item
=>
{
if
(
res
.
data
[
item
.
key
]
&&
item
.
status
)
{
item
.
status
=
'1'
}
else
{
item
.
status
=
'0'
}
})
csf_fna_status
.
_object
.
csf_fna_status
.
forEach
(
item
=>
{
if
(
item
.
value
==
res
.
data
.
status
)
{
processInfo
.
value
.
status
=
item
.
label
}
})
if
(
changeTab
)
{
activeName
.
value
=
changeTab
}
}
})
}
// Tab切换前的验证
const
beforeTabLeave
=
(
activeTabName
,
oldTabName
)
=>
{
// if (processInfo.value.customerBizId) {
// getCustomerInfo(processInfo.value.customerBizId)
// }
// // 如果切换到总览,始终允许
// if (activeTabName === 'overview' || activeTabName === 'customer') {
// return true
// }
// // 获取当前要切换到的tab
// const targetTab = tabsList.value.find(tab => tab.name === activeTabName)
// // 如果目标tab不存在,阻止切换
// if (!targetTab) {
// return false
// }
// // 检查前一项状态
// const prevTabIndex = tabsList.value.findIndex(tab => tab.name === activeTabName) - 1
// if (prevTabIndex >= 0) {
// const prevTab = tabsList.value[prevTabIndex]
// // 如果前一项存在且未完成,阻止切换
// if (prevTab.status === '0') {
// proxy.$modal.confirm(`请先填写${prevTab.label}`, { showCancel: '0', title: '填写提示' })
// return false
// }
// }
return
true
}
const
handleBack
=
()
=>
{
router
.
go
(
-
1
)
}
// 获取客户详情
function
getCustomerInfo
(
customerBizId
)
{
getCustomerDetail
(
customerBizId
).
then
(
async
res
=>
{
if
(
res
.
code
==
200
)
{
customerInfo
.
value
=
res
.
data
}
})
}
const
handleSuccess
=
info
=>
{
switch
(
info
.
tab
)
{
case
'customer'
:
if
(
info
.
type
==
'add'
)
{
//客户提交成功,更新流程
processUpdate
({
fnaBizId
:
info
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
},
'fnaform'
)
}
else
{
processUpdate
({
fnaBizId
:
processInfo
.
value
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
})
}
getCustomerInfo
(
info
.
customerBizId
)
break
case
'fnaform'
:
if
(
info
.
type
==
'add'
)
{
//客户提交成功,更新流程
processUpdate
(
{
fnaBizId
:
processInfo
.
value
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
,
fnaFormBizId
:
info
.
fnaFormBizId
},
'appointment'
)
}
else
{
processUpdate
({
fnaBizId
:
processInfo
.
value
.
fnaBizId
,
customerBizId
:
info
.
customerBizId
,
fnaFormBizId
:
info
.
fnaFormBizId
})
}
break
case
'appointment'
:
if
(
info
.
type
==
'add'
)
{
getProcessInfo
(
processInfo
.
value
.
fnaBizId
,
'newpolicy'
)
}
else
{
}
break
case
'newpolicy'
:
break
case
'policy'
:
break
default
:
break
}
}
if
(
route
.
query
.
type
==
'edit'
)
{
if
(
route
.
query
.
type
==
'edit'
)
{
getPolicyDetail
()
getPolicyDetail
()
}
}
...
...
src/views/sign/underwritingMain/index.vue
View file @
7623c5ef
...
@@ -178,14 +178,9 @@
...
@@ -178,14 +178,9 @@
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
text
size=
"primary"
@
click=
"handleView(scope.row)"
>
查看
</el-button>
<el-button
text
size=
"primary"
@
click=
"handleView(scope.row)"
>
查看
</el-button>
<el-button
text
size=
"primary"
@
click=
"handleStatus(scope.row)"
>
跟进
</el-button>
<el-button
text
size=
"primary"
@
click=
"handleStatus(scope.row)"
>
跟进
</el-button>
<!--
<el-button
<el-button
text
type=
"warning"
@
click=
"handleEditStatus(scope.row)"
>
text
修改状态
size=
"default"
</el-button>
type=
"primary"
@
click=
"handleEdit(scope.row)"
>
编辑
</el-button>
-->
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -213,6 +208,32 @@
...
@@ -213,6 +208,32 @@
:policy-fortune-list=
"policyFortuneList"
:policy-fortune-list=
"policyFortuneList"
@
close=
"handleDetailClose"
@
close=
"handleDetailClose"
/>
/>
<el-dialog
title=
"修改新单状态"
v-model=
"editStatus"
width=
"500px"
append-to-body
>
<div
style=
"height: 10vh"
>
<el-form>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"状态"
>
<el-select
v-model=
"form.status"
placeholder=
"请选择"
>
<el-option
v-for=
"item in currentPolicyRow.nextStatusList"
:label=
"item.itemLabel"
:value=
"item.itemValue"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"canelEdit"
>
取 消
</el-button>
</div>
</
template
>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -220,19 +241,50 @@
...
@@ -220,19 +241,50 @@
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
axios
from
'axios'
import
axios
from
'axios'
import
{
getPolicyFollowList
,
getExpectedCommissionList
}
from
'@/api/sign/underwritingMain'
import
{
getPolicyFollowList
,
getExpectedCommissionList
,
changePolicyStatus
}
from
'@/api/sign/underwritingMain'
import
{
getToken
}
from
'@/utils/auth'
import
{
getToken
}
from
'@/utils/auth'
import
{
listType
}
from
'@/api/system/dict/type'
import
{
listType
}
from
'@/api/system/dict/type'
import
date
from
'@/utils/date'
import
date
from
'@/utils/date'
import
PolicyDetailDialog
from
'@/components/PolicyDetailDialog/index.vue'
import
PolicyDetailDialog
from
'@/components/PolicyDetailDialog/index.vue'
import
{
numberWithCommas
}
from
'@/utils/index.js'
import
{
numberWithCommas
}
from
'@/utils/index.js'
import
{
getPolicyFortuneList
}
from
'@/api/financial/commission'
import
{
getPolicyFortuneList
}
from
'@/api/financial/commission'
const
{
proxy
}
=
getCurrentInstance
()
const
router
=
useRouter
()
const
router
=
useRouter
()
// 通过dictType=csf_policy_follow_status获取新单状态字典值,获取对象中的dictItemList
// 通过dictType=csf_policy_follow_status获取新单状态字典值,获取对象中的dictItemList
const
policyFollowStatusList
=
ref
([])
const
policyFollowStatusList
=
ref
([])
const
commissionStatusList
=
ref
([])
const
commissionStatusList
=
ref
([])
const
fortuneStatusList
=
ref
([])
const
fortuneStatusList
=
ref
([])
const
currentPolicyRow
=
ref
({})
//当前保单
const
editStatus
=
ref
(
false
)
//新单信息状态
const
data
=
reactive
({
form
:
{}
})
const
{
form
}
=
toRefs
(
data
)
const
canelEdit
=
()
=>
{
editStatus
.
value
=
false
form
.
value
=
{}
}
// 修改新单状态
const
submitForm
=
()
=>
{
let
obj
=
{
policyBizId
:
currentPolicyRow
.
value
.
policyBizId
,
status
:
form
.
value
.
status
}
changePolicyStatus
(
obj
).
then
(
response
=>
{
if
(
response
.
code
==
200
)
{
proxy
.
$modal
.
msgSuccess
(
'新单状态修改成功'
)
editStatus
.
value
=
false
form
.
value
=
{}
fetchTableData
()
}
})
}
const
getLists
=
()
=>
{
const
getLists
=
()
=>
{
listType
({
listType
({
typeList
:
[
'csf_policy_follow_status'
,
'csf_expected_commission_status'
,
'csf_fortune_status'
]
typeList
:
[
'csf_policy_follow_status'
,
'csf_expected_commission_status'
,
'csf_fortune_status'
]
...
@@ -608,6 +660,10 @@ const handleStatus = row => {
...
@@ -608,6 +660,10 @@ const handleStatus = row => {
}
}
})
})
}
}
const
handleEditStatus
=
row
=>
{
currentPolicyRow
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
row
))
editStatus
.
value
=
true
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
...
...
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