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
......
...@@ -34,7 +34,8 @@ ...@@ -34,7 +34,8 @@
<!-- 基本计划 --> <!-- 基本计划 -->
<div class="section"> <div class="section">
<h3 class="sectionTitle">基本计划</h3> <h3 class="sectionTitle">基本计划</h3>
<SearchForm ref="basicPlanFormRef" :config="basicPlanFormConfig" v-model="basicPlanFormData" /> <SearchForm ref="basicPlanFormRef" :config="basicPlanFormConfig" v-model="basicPlanFormData"
@selectChange="(prop, value, item) => handleSelectChange(prop, value, item, 'basicPlan')" />
</div> </div>
<!-- 附加计划(可编辑表格) --> <!-- 附加计划(可编辑表格) -->
...@@ -104,7 +105,8 @@ ...@@ -104,7 +105,8 @@
<div v-else-if="activeTab === 'attachment'" class="tab-content"> <div v-else-if="activeTab === 'attachment'" class="tab-content">
<div class="section"> <div class="section">
<h3 class="sectionTitle">附件</h3> <h3 class="sectionTitle">附件</h3>
<el-button type="primary" @click="fileUploadDialogFlag = true" :disabled="props.mode === 'viewDetail'"> <el-button type="primary" @click="fileUploadDialogFlag = true"
:disabled="props.mode === 'viewDetail'">
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
<Upload /> <Upload />
</el-icon>上传附件 </el-icon>上传附件
...@@ -141,8 +143,9 @@ ...@@ -141,8 +143,9 @@
<CommonDialog dialogTitle='文件导入' dialogWidth='80%' :openDialog=fileUploadDialogFlag :showAction='true' <CommonDialog dialogTitle='文件导入' dialogWidth='80%' :openDialog=fileUploadDialogFlag :showAction='true'
:showClose='true' @close='fileUploadDialogFlag = false; files = ""' :showClose='true' @close='fileUploadDialogFlag = false; files = ""'
@confirm='fileUploadDialogFlag = false; files = ""'> @confirm='fileUploadDialogFlag = false; files = ""'>
<FileUpload v-model="files" :data="{ obiectTableName: 'policy_follow',objectBizId: props.policyBizId }" <FileUpload v-model="files" :data="{ obiectTableName: 'policy_follow', objectBizId: props.policyBizId }"
:file-type="['xlsx', 'xls', 'doc', 'docx', 'pdf', 'txt', 'jpg', 'jpeg', 'png', 'gif']" :action="'/oss/api/oss/batch/upload'" :limit="10" :fileSize="15" :name="'files'" :file-type="['xlsx', 'xls', 'doc', 'docx', 'pdf', 'txt', 'jpg', 'jpeg', 'png', 'gif']"
:action="'/oss/api/oss/batch/upload'" :limit="10" :fileSize="15" :name="'files'"
@uploadEnd="handleUploadEnd" /> @uploadEnd="handleUploadEnd" />
</CommonDialog> </CommonDialog>
</div> </div>
...@@ -197,19 +200,16 @@ const introducerConfig = [ ...@@ -197,19 +200,16 @@ const introducerConfig = [
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
onChangeExtraFields: { onChangeExtraFields: {
broker: 'realName',// 选中后自动填 broker = raw.realName broker: 'realName',// 选中后自动填 broker = raw.realName
brokerName: 'realName',
internalCode: 'code', internalCode: 'code',
team: 'teamName', team: 'teamName',
phone: 'phone' phone: 'phone',
}, },
transform: (res) => { transform: (res) => {
return (res?.data.records || []).map(item => ({ return (res?.data.records || []).map(item => ({
value: item.clientUserBizId, value: item.clientUserBizId,
label: item.realName, label: item.realName,
// 👇 把 extra 字段挂到 option 上 ...item
realName: item.realName,
code: item.code,
teamName: item.teamName,
phone: item.phone
})) }))
}, },
}, },
...@@ -356,13 +356,12 @@ const basicInfoFormConfig = ref([ ...@@ -356,13 +356,12 @@ const basicInfoFormConfig = ref([
placeholder: '输入签单员姓名搜索', placeholder: '输入签单员姓名搜索',
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
onChangeExtraFields: { onChangeExtraFields: {
signerBizId: 'signerBizId', signerBizId: 'userSignBizId',
practiceCode: 'practiceCode', practiceCode: 'practiceCode',
}, },
valueKey: 'userSignBizId', valueKey: 'realName',
labelKey: 'realName', labelKey: 'realName',
transform: (res) => { transform: (res) => {
console.log(res)
return res?.data.records || [] return res?.data.records || []
}, },
rules: [ rules: [
...@@ -449,8 +448,7 @@ const policyInfoFormConfig = ref([ ...@@ -449,8 +448,7 @@ const policyInfoFormConfig = ref([
// 基本计划 // 基本计划
const basicPlanFormRef = ref() const basicPlanFormRef = ref()
const basicPlanFormData = ref({}) const basicPlanFormData = ref({})
const basicPlanFormConfig = computed(() => { const basicPlanFormConfig = ref([
return [
{ {
type: 'select', type: 'select',
prop: 'insuranceCompanyBizId', prop: 'insuranceCompanyBizId',
...@@ -483,34 +481,38 @@ const basicPlanFormConfig = computed(() => { ...@@ -483,34 +481,38 @@ const basicPlanFormConfig = computed(() => {
transform: (res) => { transform: (res) => {
return res?.data.records || [] return res?.data.records || []
}, },
onChangeExtraFields: {
insuranceCategoryCode: 'code',
},
}, },
{ {
type: 'select', type: 'select',
prop: 'productLaunchBizId', prop: 'productName',
label: '产品名称', label: '产品名称',
api: '/product/api/relProjectProductLaunch/parameter/page', api: '/product/api/relProjectProductLaunch/parameter/page',
keywordField: 'productName', keywordField: 'productName',
// ✅ 关键:requestParams 必须是函数,才能响应式获取最新值! requestParams: () => ({
requestParams: { tenantBizId: userStore.projectInfo.tenantBizId,
tenantBizId: userStore.projectInfo.tenantBizId || '', projectBizId: userStore.projectInfo.projectBizId,
projectBizId: userStore.projectInfo.projectBizId || '',
fieldBizId: 'field_olk1qZe81qHHKXbw', fieldBizId: 'field_olk1qZe81qHHKXbw',
fieldValueBizId: 'field_value_uOfJH5ucA2YwJpbn', fieldValueBizId: 'field_value_uOfJH5ucA2YwJpbn',
categoryCodeList: [basicPlanFormData.value.insuranceCategoryBizId || ''], categoryCodeList: [basicPlanFormData.value.insuranceCategoryBizId],
insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId || ''], insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId],
pageNo: 1, pageNo: 1,
pageSize: 20 pageSize: 20
}, }),
placeholder: '请选择产品名称', placeholder: '请选择产品名称',
debounceWait: 500, debounceWait: 500,
valueKey: 'productLaunchBizId', valueKey: 'productName',
labelKey: 'productName', labelKey: 'productName',
transform: (res) => res?.data.records || [], transform: (res) => res?.data.records || [],
// ✅ 关键:当选择产品时,自动回填其他字段 // ✅ 关键:当选择产品时,自动回填其他字段
onChangeExtraFields: { onChangeExtraFields: {
// 格式:targetProp: sourcePathInRawObject // 格式:targetProp: sourcePathInRawObject
apiAttributeSettingDtoList: 'apiAttributeSettingDtoList', apiAttributeSettingDtoList: 'apiAttributeSettingDtoList',
} productLaunchBizId: 'productLaunchBizId',
},
}, },
{ {
type: 'select', type: 'select',
...@@ -582,12 +584,11 @@ const basicPlanFormConfig = computed(() => { ...@@ -582,12 +584,11 @@ const basicPlanFormConfig = computed(() => {
dictType: 'csf_ap_first_issue' dictType: 'csf_ap_first_issue'
}, { }, {
type: 'select', type: 'select',
prop: 'dividendPaymentMethod', prop: 'dividendDistributionMethod',
label: '红利付款方式', label: '红利付款方式',
dictType: 'csf_ap_dividend' dictType: 'csf_ap_dividend'
}, },
] ])
})
// 首期保费 // 首期保费
...@@ -780,12 +781,13 @@ const handleTabClick = (tab) => { ...@@ -780,12 +781,13 @@ const handleTabClick = (tab) => {
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
console.log('提交数据', introducerTableData.value)
if (activeTab.value === 'postal') { if (activeTab.value === 'postal') {
emit('submit', { ...postalFormData.value, activeTab: activeTab.value }) emit('submit', { ...postalFormData.value, activeTab: activeTab.value })
} else if (activeTab.value === 'firstPayment') { } else if (activeTab.value === 'firstPayment') {
emit('submit', { ...firstPremiumFormData.value, activeTab: activeTab.value }) emit('submit', { ...firstPremiumFormData.value, activeTab: activeTab.value })
} else if (activeTab.value === 'attachment') { } else if (activeTab.value === 'attachment') {
emit('submit', { ...attachmentFormData.value, activeTab: activeTab.value }) emit('submit', { activeTab: activeTab.value })
} else if (activeTab.value === 'introducer') { } else if (activeTab.value === 'introducer') {
emit('submit', { ...introducerTableData.value, activeTab: activeTab.value }) emit('submit', { ...introducerTableData.value, activeTab: activeTab.value })
} else if (activeTab.value === 'basic') { } else if (activeTab.value === 'basic') {
...@@ -829,6 +831,7 @@ const getPolicyfollowDetail = () => { ...@@ -829,6 +831,7 @@ const getPolicyfollowDetail = () => {
basicPlanFormData.value = transformToFormData(res.data, basicPlanFormConfig.value); basicPlanFormData.value = transformToFormData(res.data, basicPlanFormConfig.value);
basicInfoFormData.value = transformToFormData(res.data, basicInfoFormConfig.value); basicInfoFormData.value = transformToFormData(res.data, basicInfoFormConfig.value);
firstPremiumFormData.value = transformToFormData(res.data, firstPremiumFormConfig.value); firstPremiumFormData.value = transformToFormData(res.data, firstPremiumFormConfig.value);
introducerTableData.value = res.data.brokerList || []
} }
}) })
...@@ -928,6 +931,19 @@ const viewRecordDetail = (e) => { ...@@ -928,6 +931,19 @@ const viewRecordDetail = (e) => {
} }
}) })
} }
const handleSelectChange = (prop, value, item, type) => {
console.log(basicPlanFormData.value)
if (type === 'basicPlan') {
const params = {
tenantBizId: userStore.projectInfo.tenantBizId,
projectBizId: userStore.projectInfo.projectBizId,
insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId],
pageNo: 1,
pageSize: 100,
}
getProductLists(params)
}
}
// 获取产品列表 // 获取产品列表
const getProductLists = (params) => { const getProductLists = (params) => {
......
...@@ -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