Commit 6b4dbc30 by Sweet Zhang

联调

parent d9ec28db
...@@ -251,7 +251,7 @@ export function batchSaveBrokers(data) { ...@@ -251,7 +251,7 @@ export function batchSaveBrokers(data) {
// 通过保险公司、险种查询产品列表及参数 // 通过保险公司、险种查询产品列表及参数
export function getProductList(data) { export function getProductList(data) {
return request({ return request({
url: '/csf/prodcut/api/relProjectProductLaunch/parameter/page', url: '/prodcut/api/relProjectProductLaunch/parameter/page',
method: 'post', method: 'post',
data: data data: data
}) })
......
...@@ -629,11 +629,11 @@ function getSelectOptions(item) { ...@@ -629,11 +629,11 @@ function getSelectOptions(item) {
return [] return []
} }
async function loadRemoteOptionsForInit(item) { async function loadRemoteOptionsForInit(item) {
const { prop, api, requestParams = {} } = item const { prop, api, requestParams } = item
try { try {
// 构造请求体:只传 requestParams,不传 keyword // 构造请求体:只传 requestParams,不传 keyword
const payload = { const payload = {
...(requestParams || {}) ...(typeof requestParams === 'function' ? requestParams() : requestParams || {})
} }
const res = await request({ const res = await request({
...@@ -663,7 +663,7 @@ async function loadRemoteOptionsForInit(item) { ...@@ -663,7 +663,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 || remoteOptions.value[prop]?.length > 0) return
try { try {
...@@ -671,7 +671,7 @@ async function loadRemoteOptions(item) { ...@@ -671,7 +671,7 @@ async function loadRemoteOptions(item) {
// 构造请求体:合并 requestParams + 分页(默认第一页) // 构造请求体:合并 requestParams + 分页(默认第一页)
const payload = { const payload = {
...(requestParams || {}) ...(typeof requestParams === 'function' ? requestParams() : requestParams || {})
// 注意:此时无 keyword,所以不加 keywordField // 注意:此时无 keyword,所以不加 keywordField
} }
...@@ -706,7 +706,7 @@ async function loadRemoteOptions(item) { ...@@ -706,7 +706,7 @@ async function loadRemoteOptions(item) {
// ==================== 远程搜索(带关键词,防抖) ==================== // ==================== 远程搜索(带关键词,防抖) ====================
let searchTimeout = null let searchTimeout = null
function handleFilterChange(keyword, item) { function handleFilterChange(keyword, item) {
const { prop, api, requestParams = {}, keywordField = 'keyword', debounceWait = 300 } = item const { prop, api, requestParams, keywordField = 'keyword', debounceWait = 300 } = item
if (!api) return if (!api) return
clearTimeout(searchTimeout) clearTimeout(searchTimeout)
...@@ -716,7 +716,7 @@ function handleFilterChange(keyword, item) { ...@@ -716,7 +716,7 @@ function handleFilterChange(keyword, item) {
// 构造请求体:requestParams + 分页 + 动态关键词字段 // 构造请求体:requestParams + 分页 + 动态关键词字段
const payload = { const payload = {
...(requestParams || {}), ...(typeof requestParams === 'function' ? requestParams() : requestParams || {}),
[keywordField]: keyword // ← 动态字段名,如 name / companyName [keywordField]: keyword // ← 动态字段名,如 name / companyName
} }
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
</template> </template>
<!-- 列表区域 --> <!-- 列表区域 -->
<template #table> <template #table>
<!-- 统计信息卡片 --> <!-- 统计信息卡片 v-if="statisticsData.totalInAmount > 0"-->
<div class="statistics-container" v-if="statisticsData.totalInAmount > 0"> <div class="statistics-container">
<el-row :gutter="20"> <el-row :gutter="20">
<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.totalInAmount }}</div> <div class="card-value">{{ statisticsData.totalInAmount ? formatCurrency(statisticsData.totalInAmount) : 0 }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<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.totalPolicyCount }}</div> <div class="card-value">{{ statisticsData.totalPolicyCount ? statisticsData.totalPolicyCount : 0 }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<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">总保费(HKD)</div> <div class="card-label">总保费(HKD)</div>
<div class="card-value">{{ statisticsData.totalPremium }}</div> <div class="card-value">{{ statisticsData.totalPremium ? formatCurrency(statisticsData.totalPremium) : 0 }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<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.pendingOutAmount }}</div> <div class="card-value">{{ statisticsData.pendingOutAmount ? formatCurrency(statisticsData.pendingOutAmount) : 0 }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
<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.availableOutAmount }}</div> <div class="card-value">{{ statisticsData.availableOutAmount ? formatCurrency(statisticsData.availableOutAmount) : 0 }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<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">{{ formatCurrency(statisticsData.differenceAmount) }}</div> <div class="card-value">{{ statisticsData.differenceAmount ? formatCurrency(statisticsData.differenceAmount) : 0 }}</div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
<el-table-column prop="policyNo" label="保单号" width="120" sortable /> <el-table-column prop="policyNo" label="保单号" width="120" sortable />
<el-table-column prop="insuranceCompany" label="保险公司" width="120" sortable /> <el-table-column prop="insuranceCompany" label="保险公司" width="120" sortable />
<el-table-column prop="commissionPaidAmount" label="累积已入账金额" width="120" sortable /> <el-table-column prop="commissionPaidAmount" label="累积已入账金额" width="120" sortable />
<el-table-column prop="commissionPaidRatio" label="累积已入账比例" width="120" sortable :formatter="(row) => `${row.commissionPaidRatio }%`" /> <el-table-column prop="commissionPaidRatio" label="累积已入账比例" width="120" sortable :formatter="(row) => `${row.commissionPaidRatio ? row.commissionPaidRatio : 0 }%`" />
<el-table-column prop="fortuneName" label="出账项目" width="130" sortable /> <el-table-column prop="fortuneName" label="出账项目" width="130" sortable />
<el-table-column prop="fortunePeriod" label="出账期数" width="130" sortable /> <el-table-column prop="fortunePeriod" label="出账期数" width="130" sortable />
<el-table-column prop="fortuneTotalPeriod" label="总期数" width="120" sortable /> <el-table-column prop="fortuneTotalPeriod" label="总期数" width="120" sortable />
...@@ -185,7 +185,7 @@ const searchConfig = ref([ ...@@ -185,7 +185,7 @@ const searchConfig = ref([
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
multiple: true, multiple: true,
valueKey: 'insuranceCompanyBizId', valueKey: 'insuranceCompanyBizId',
labelKey: 'abbreviation', labelKey: 'fullName',
transform: (res) => { transform: (res) => {
console.log(res) console.log(res)
return res?.data.records || [] return res?.data.records || []
......
...@@ -387,7 +387,7 @@ const searchConfig = ref([ ...@@ -387,7 +387,7 @@ const searchConfig = ref([
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
multiple: true, multiple: true,
valueKey: 'insuranceCompanyBizId', valueKey: 'insuranceCompanyBizId',
labelKey: 'abbreviation', labelKey: 'fullName',
transform: (res) => { transform: (res) => {
console.log(res) console.log(res)
return res?.data.records || [] return res?.data.records || []
......
...@@ -319,7 +319,7 @@ const searchConfig = ref([ ...@@ -319,7 +319,7 @@ const searchConfig = ref([
placeholder: '输入保险公司名称搜索', placeholder: '输入保险公司名称搜索',
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
valueKey: 'insuranceCompanyBizId', valueKey: 'insuranceCompanyBizId',
labelKey: 'abbreviation', labelKey: 'fullName',
transform: (res) => { transform: (res) => {
console.log(res) console.log(res)
return res?.data.records || [] return res?.data.records || []
...@@ -725,6 +725,7 @@ const handleConfirmSetPayRecordStatus = async () => { ...@@ -725,6 +725,7 @@ const handleConfirmSetPayRecordStatus = async () => {
onMounted(async () => { onMounted(async () => {
try { try {
await loadDicts(['csf_expected_fortune_status']) await loadDicts(['csf_expected_fortune_status'])
loadTableData()
} catch (error) { } catch (error) {
console.error('字典加载失败', error) console.error('字典加载失败', error)
} finally { } finally {
......
...@@ -410,7 +410,7 @@ const searchConfig = ref([ ...@@ -410,7 +410,7 @@ const searchConfig = ref([
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
multiple: true, multiple: true,
valueKey: 'insuranceCompanyBizId', valueKey: 'insuranceCompanyBizId',
labelKey: 'abbreviation', labelKey: 'fullName',
transform: (res) => { transform: (res) => {
return res?.data.records || [] return res?.data.records || []
} }
...@@ -736,6 +736,7 @@ const handleConfirmSetStatus = () => { ...@@ -736,6 +736,7 @@ const handleConfirmSetStatus = () => {
onMounted(async () => { onMounted(async () => {
try { try {
await loadDicts(['csf_expected_commission_status']) await loadDicts(['csf_expected_commission_status'])
loadTableData()
} catch (error) { } catch (error) {
console.error('字典加载失败', error) console.error('字典加载失败', error)
} finally { } finally {
......
...@@ -824,17 +824,25 @@ const viewHistory = () => { ...@@ -824,17 +824,25 @@ const viewHistory = () => {
} }
} }
const handleTableSelectChange = (father, row, key) => { const handleTableSelectChange = (father, row, key) => {
console.log('选择了', row, key)
searchOptions.value[key].forEach(item => { searchOptions.value[key].forEach(item => {
console.log('item', item)
if (row[key] == item.value) { if (row[key] == item.value) {
row[key] = item.label row[key] = item.label
row.userBizId = item.userBizId row.userBizId = item.userBizId
if (key == 'name') { if (key == 'name') {
row.userSignBizId = item.value row.userSignBizId = item.value
row.practiceCode = item.practiceCode
row.phone = item.phone
row.cardNo = item.cardNo
row.email = item.email
row.cardType = item.cardType
} else if (key == 'realName') { } else if (key == 'realName') {
row.userSaleBizId = item.value row.userSaleBizId = item.value
} }
} }
}) })
} }
// 添加表单子级dom // 添加表单子级dom
const addChildren = father => { const addChildren = father => {
......
...@@ -667,10 +667,10 @@ const remittanceConfig = [ ...@@ -667,10 +667,10 @@ const remittanceConfig = [
type: 'select', type: 'select',
prop: 'policyNo', prop: 'policyNo',
label: '保单号码', label: '保单号码',
api: '/csf/api/policy/list/page/vo', api: '/csf/api/policy_follow/policyNos',
keywordField: 'policyNo', keywordField: 'policyNo',
requestParams: { pageNo: 1, pageSize: 20 }, requestParams: { pageNo: 1, pageSize: 100 },
placeholder: '输入转介人名称搜索', placeholder: '输入保单号码搜索',
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
valueKey: 'policyNo', valueKey: 'policyNo',
labelKey: 'policyNo', labelKey: 'policyNo',
...@@ -1046,10 +1046,10 @@ const addCheckRecordConfig = [ ...@@ -1046,10 +1046,10 @@ const addCheckRecordConfig = [
type: 'select', type: 'select',
prop: 'policyNo', prop: 'policyNo',
label: '保单号码', label: '保单号码',
api: '/csf/api/policy/list/page/vo', api: '/csf/api/policy_follow/policyNos',
keywordField: 'policyNo', keywordField: 'policyNo',
requestParams: { pageNo: 1, pageSize: 20 }, requestParams: { pageNo: 1, pageSize: 100 },
placeholder: '输入转介人名称搜索', placeholder: '输入保单号码搜索',
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
valueKey: 'policyNo', valueKey: 'policyNo',
labelKey: 'policyNo', labelKey: 'policyNo',
......
...@@ -120,13 +120,14 @@ const editStatusFormConfig = ref([ ...@@ -120,13 +120,14 @@ const editStatusFormConfig = ref([
prop: 'status', prop: 'status',
label: '新单状态', label: '新单状态',
dictType: 'csf_policy_follow_status_new' dictType: 'csf_policy_follow_status_new'
}, { },
{
type: 'date', type: 'date',
prop: 'policyEffectiveDate', prop: 'effectiveDate',
label: '保单生效日', label: '保单生效日',
}, { }, {
type: 'date', type: 'date',
prop: 'policyInsureDate', prop: 'underwritingDate',
label: '保单核保日', label: '保单核保日',
}, },
]) ])
...@@ -243,6 +244,7 @@ const normalizeIntroducerData = (data) => { ...@@ -243,6 +244,7 @@ const normalizeIntroducerData = (data) => {
onMounted(async () => { onMounted(async () => {
try { try {
await loadDicts(['csf_policy_follow_status_new']) await loadDicts(['csf_policy_follow_status_new'])
loadTableData()
} catch (error) { } catch (error) {
console.error('字典加载失败', error) console.error('字典加载失败', error)
} finally { } finally {
...@@ -338,7 +340,7 @@ const searchConfig = ref([ ...@@ -338,7 +340,7 @@ const searchConfig = ref([
placeholder: '输入保险公司名称搜索', placeholder: '输入保险公司名称搜索',
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
valueKey: 'insuranceCompanyBizId', valueKey: 'insuranceCompanyBizId',
labelKey: 'abbreviation', labelKey: 'fullName',
multiple: true, multiple: true,
transform: (res) => { transform: (res) => {
return res?.data.records || [] return res?.data.records || []
...@@ -425,6 +427,10 @@ const handleSelect = async (e, row) => { ...@@ -425,6 +427,10 @@ const handleSelect = async (e, row) => {
viewDetailDialogFlag.value = true viewDetailDialogFlag.value = true
break break
case 'setNewSingleStatus': case 'setNewSingleStatus':
if (selectedRow.value.status === '生效') {
ElMessage.warning('保单已生效,不能更新新单状态')
return
}
editStatusDialogFlag.value = true editStatusDialogFlag.value = true
editStatusFormData.value = { editStatusFormData.value = {
status: row.status status: row.status
......
...@@ -62,6 +62,16 @@ export default defineConfig(({ mode, command }) => { ...@@ -62,6 +62,16 @@ export default defineConfig(({ mode, command }) => {
// proxyReq.setHeader('host', '139.224.145.34:9002') // proxyReq.setHeader('host', '139.224.145.34:9002')
// }) // })
// } // }
},'/product': {
target: 'http://139.224.145.34:9002',
changeOrigin: true,
secure: false,
// 如果后端需要 host 头
// configure: (proxy, options) => {
// proxy.on('proxyReq', (proxyReq, req, res) => {
// proxyReq.setHeader('host', '139.224.145.34:9002')
// })
// }
}, },
// springdoc proxy // springdoc proxy
'^/v3/api-docs/(.*)': { '^/v3/api-docs/(.*)': {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment