Commit 8857fdea by Sweet Zhang

新单跟进对接

parent 6b4dbc30
......@@ -251,7 +251,7 @@ export function batchSaveBrokers(data) {
// 通过保险公司、险种查询产品列表及参数
export function getProductList(data) {
return request({
url: '/prodcut/api/relProjectProductLaunch/parameter/page',
url: '/product/api/relProjectProductLaunch/parameter/page',
method: 'post',
data: data
})
......
<template>
<el-form
ref="formRef"
:model="localModel"
:rules="formRules"
label-width="auto"
v-bind="$attrs"
:validate-on-rule-change="false"
>
<el-form ref="formRef" :model="localModel" :rules="formRules" label-width="auto" v-bind="$attrs"
:validate-on-rule-change="false">
<el-row :gutter="20">
<el-col v-for="item in visibleConfig" :key="item.prop" :span="item.span || 6">
<el-form-item
:label="item.label"
:prop="item.prop"
:class="{ 'search-form-item': isSearch }"
:label-position="item.labelPosition || 'top'"
>
<el-form-item :label="item.label" :prop="item.prop" :class="{ 'search-form-item': isSearch }"
:label-position="item.labelPosition || 'top'">
<!-- Input -->
<el-input
v-if="item.type === 'input'"
v-model="localModel[item.prop]"
:placeholder="item.placeholder || `请输入${item.label}`"
:clearable="true"
:disabled="item.disabled"
@input="val => handleNumberInput(val, item)"
@change="val => handleModelChange(val, item)"
/>
<el-input v-if="item.type === 'input'" v-model="localModel[item.prop]"
:placeholder="item.placeholder || `请输入${item.label}`" :clearable="true" :disabled="item.disabled"
@input="val => handleNumberInput(val, item)" @change="val => handleModelChange(val, item)" />
<!-- Select (支持 dictType / api / options) -->
<el-select
v-else-if="item.type === 'select'"
v-model="localModel[item.prop]"
:multiple="!!item.multiple"
:placeholder="item.placeholder || `请选择${item.label}`"
:clearable="true"
filterable
:disabled="item.disabled"
:loading="remoteLoading[item.prop] || false"
@change="val => handleModelChange(val, item)"
@focus="() => loadRemoteOptions(item)"
@filter-change="keyword => handleFilterChange(keyword, item)"
>
<el-option
v-for="opt in getSelectOptions(item)"
:key="opt.value"
:label="opt.label"
:value="opt.value"
/>
<el-select v-else-if="item.type === 'select'" v-model="localModel[item.prop]" :multiple="!!item.multiple"
:placeholder="item.placeholder || `请选择${item.label}`" :clearable="true" filterable :disabled="item.disabled"
:loading="remoteLoading[item.prop] || false" @change="val => handleModelChange(val, item)"
@focus="() => loadRemoteOptions(item)" @filter-change="keyword => handleFilterChange(keyword, item)">
<el-option v-for="opt in getSelectOptions(item)" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
<!-- Date -->
<el-date-picker
v-else-if="item.type === 'date'"
v-model="localModel[item.prop]"
type="date"
:placeholder="`选择${item.label}`"
:disabled="item.disabled"
:value-format="item.valueFormat || 'YYYY-MM-DD'"
style="width: 100%"
:disabled-date="getDisabledDateFn(item)"
@change="val => handleModelChange(val, item)"
/>
<el-date-picker v-else-if="item.type === 'date'" v-model="localModel[item.prop]" type="date"
:placeholder="`选择${item.label}`" :disabled="item.disabled" :value-format="item.valueFormat || 'YYYY-MM-DD'"
style="width: 100%" :disabled-date="getDisabledDateFn(item)"
@change="val => handleModelChange(val, item)" />
<!-- Month -->
<el-date-picker
v-else-if="item.type === 'month'"
v-model="localModel[item.prop]"
type="month"
:placeholder="`选择${item.label}`"
:value-format="item.valueFormat || 'YYYY-MM'"
style="width: 100%"
:disabled="item.disabled"
:disabled-date="getDisabledDateFn(item)"
@change="val => handleModelChange(val, item)"
/>
<el-date-picker v-else-if="item.type === 'month'" v-model="localModel[item.prop]" type="month"
:placeholder="`选择${item.label}`" :value-format="item.valueFormat || 'YYYY-MM'" style="width: 100%"
:disabled="item.disabled" :disabled-date="getDisabledDateFn(item)"
@change="val => handleModelChange(val, item)" />
<!-- Daterange -->
<el-date-picker
v-else-if="item.type === 'daterange'"
v-model="localModel[item.prop]"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:value-format="item.valueFormat || 'YYYY-MM-DD'"
:disabled="item.disabled"
:disabled-date="getDisabledDateFn(item)"
style="width: 100%"
@change="val => handleModelChange(val, item)"
/>
<el-date-picker v-else-if="item.type === 'daterange'" v-model="localModel[item.prop]" type="daterange"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
:value-format="item.valueFormat || 'YYYY-MM-DD'" :disabled="item.disabled"
:disabled-date="getDisabledDateFn(item)" style="width: 100%"
@change="val => handleModelChange(val, item)" />
<!-- Checkbox Group -->
<el-checkbox-group
v-else-if="item.type === 'checkbox-group'"
v-model="localModel[item.prop]"
:disabled="item.disabled"
@change="val => handleModelChange(val, item)"
>
<el-checkbox-group v-else-if="item.type === 'checkbox-group'" v-model="localModel[item.prop]"
:disabled="item.disabled" @change="val => handleModelChange(val, item)">
<el-checkbox v-for="opt in getSelectOptions(item)" :key="opt.value" :label="opt.value">
{{ opt.label }}
</el-checkbox>
</el-checkbox-group>
<!-- textarea -->
<el-input
v-else-if="item.type === 'textarea'"
v-model="localModel[item.prop]"
style="width: 240px"
autosize
:disabled="item.disabled"
type="textarea"
placeholder="请输入"
:clearable="true"
@change="val => handleModelChange(val, item)"
/>
<el-input v-else-if="item.type === 'textarea'" v-model="localModel[item.prop]" style="width: 240px" autosize
:disabled="item.disabled" type="textarea" placeholder="请输入" :clearable="true"
@change="val => handleModelChange(val, item)" />
<!-- Upload 回显值得时候数据格式至少是[{url: '必须要传', name: 'name不是必须的根据需要传值'}]-->
<el-upload
v-else-if="item.type === 'upload'"
v-model:file-list="localModel[item.prop]"
:action="item.action"
:headers="item.headers"
:multiple="!!item.multiple"
:limit="item.limit || (item.multiple ? 999 : 1)"
:accept="item.accept"
:list-type="item.listType || 'text'"
:disabled="item.disabled"
:auto-upload="true"
:show-file-list="item.showFileList"
:on-exceed="handleExceed"
<el-upload v-else-if="item.type === 'upload'" v-model:file-list="localModel[item.prop]" :action="item.action"
:headers="item.headers" :multiple="!!item.multiple" :limit="item.limit || (item.multiple ? 999 : 1)"
:accept="item.accept" :list-type="item.listType || 'text'" :disabled="item.disabled" :auto-upload="true"
:show-file-list="item.showFileList" :on-exceed="handleExceed"
:before-upload="file => beforeUpload(file, item)"
:on-success="(res, file, fileList) => handleUploadSuccess(res, file, fileList, item)"
:on-error="(err, file, fileList) => handleUploadError(err, file, fileList, item)"
:on-remove="(file, fileList) => handleUploadRemove(file, fileList, item)"
>
<el-icon class="iconStyle" :size="20" v-if="item.uploadType === 'image'"
><Upload
/></el-icon>
<el-button
v-else
size="small"
type="primary"
:link="item.link"
:disabled="item.disabled"
>
:on-remove="(file, fileList) => handleUploadRemove(file, fileList, item)">
<el-icon class="iconStyle" :size="20" v-if="item.uploadType === 'image'">
<Upload />
</el-icon>
<el-button v-else size="small" type="primary" :link="item.link" :disabled="item.disabled">
{{ '点击上传文件' }}
</el-button>
<template #tip v-if="item.maxSize || item.accept">
......@@ -364,6 +284,7 @@ watch(
// ✅ 在这里同步 modelValue(包括 extra 字段)
localModel.value = syncModelFromProps(props.modelValue, internalConfig.value)
console.log('子组件监测config变化', localModel.value)
},
{ immediate: true }
)
......@@ -376,6 +297,7 @@ watch(
if (!newVal || !internalConfig.value) return
// ✅ 同样使用 sync 函数
localModel.value = syncModelFromProps(newVal, internalConfig.value)
console.log('子组件监测 modelValue 变化:', localModel.value)
},
{ deep: true }
)
......@@ -464,7 +386,7 @@ function syncModelFromProps(newModelValue, newConfig) {
synced[key] = newModelValue[key]
}
}
// console.log('🚀 子组件 props.modelValue 同步后:', synced)
console.log('🚀 子组件 进行modelvalue处理:', synced)
return synced
}
function getNestedValue(obj, path) {
......@@ -481,10 +403,7 @@ function markDictLoaded(prop) {
// 2. 用户操作导致 localModel 变化时,emit(防抖可选)
function handleModelChange(value, item) {
console.group('🔄 handleModelChange')
// console.log('输入 value:', value)
// console.log('item:', item)
// console.log('当前 localModel:', localModel.value)
console.group('用户操作导致 localModel 变化时,emit(防抖可选)')
const newModel = { ...localModel.value, [item.prop]: value }
......@@ -501,22 +420,18 @@ function handleModelChange(value, item) {
}
}
}
// console.log('🆕 newModel:', newModel)
// console.log('📦 props.modelValue:', props.modelValue)
// console.log('isEqualShallow?', isEqualShallow(props.modelValue, newModel))
localModel.value = newModel
console.log('子组件用户操作后,modelvalue值==', newModel)
nextTick(() => {
if (!isEqualShallow(props.modelValue, newModel)) {
// console.log('📤 emit update:modelValue:', newModel)
console.log('如果新旧值不一样,反馈给父组件', newModel)
emit('update:modelValue', newModel)
} else {
console.log('🚫 跳过 emit:认为相等')
}
})
if (item.type === 'select') {
console.log('如果是select类型,反馈给父组件', item.prop, value, item)
emit('selectChange', item.prop, value, item)
} else if (item.type == 'upload') {
// 传给父组件最新的上传值newModel
......@@ -821,9 +736,11 @@ defineExpose({
.formBox {
box-sizing: border-box;
}
.search-form-item {
margin-bottom: 20px;
}
.iconStyle {
color: #409eff;
}
......
......@@ -24,7 +24,11 @@ const appointmentInfo = [
{
label: '签单日',
key: 'signDate',
domType: 'DatePicker',
domType: 'datetimePicker',
dateValue: '', //YYYY-MM-DD
timeValue: '', //HH:mm
compositionTime: true, //是否组合时间
finishTime: '',
required: true,
disabled: false,
placeholder: '请选择',
......
......@@ -32,6 +32,7 @@ export function useDict(...args) {
*/
export function useDictLists(typeLists) {
let params = { typeList: typeLists }
console.log(params)
let dictArray = []
return (() => {
getMoreDicts(params).then(resp => {
......
......@@ -914,9 +914,6 @@ const handleSubmit = async type => {
if (appointmentInfoRef.value) {
const result = await appointmentInfoRef.value[0].handleFormValues()
submitAppointmentObj.value.apiAppointmentInfoDto = result
console.log('====================================')
console.log('预约', result)
console.log('====================================')
if (!submitAppointmentObj.value.apiAppointmentInfoDto) return
}
if (productPlanRef.value) {
......
......@@ -5,15 +5,8 @@
<div style="position: relative; top: -100%; left: -1100%">
{{ appointmentRef }}
</div>
<CommonForm
:anchorList="anchorList"
:affixOffset="affixOffset"
:anchorOffset="10"
:scrollContainerSelector="anchorContainer"
:domIndex="tabIndex"
:activeName="activeName"
v-if="appointmentRef"
>
<CommonForm :anchorList="anchorList" :affixOffset="affixOffset" :anchorOffset="10"
:scrollContainerSelector="anchorContainer" :domIndex="tabIndex" :activeName="activeName" v-if="appointmentRef">
<template #form-right>
<el-form ref="appointmentInfoFormRef" :model="form" :rules="rules" label-width="120px">
<div v-for="father in processedAppointmentData">
......@@ -22,156 +15,71 @@
<CardOne :title="father.fatherTitle">
<template #mainTitCustom v-if="props.idsObj.appointmentBizId">
<div style="margin-left: 10px">
<el-button
@click="viewHistory"
type="primary"
link
v-if="father.key == 'administration'"
>历史记录</el-button
>
<el-button @click="viewHistory" type="primary" link
v-if="father.key == 'administration'">历史记录</el-button>
</div>
</template>
<template #headerRight v-if="father.key == 'administration'">
<div>
<el-button
v-if="idsObj.appointmentBizId"
@click="handleExprot"
type="primary"
link
>导出预约表</el-button
>
<el-button
v-if="appointmentStatus >= 2"
@click="getItineraryInfo"
type="primary"
link
>行程单预览</el-button
>
<el-button v-if="idsObj.appointmentBizId" @click="handleExprot" type="primary"
link>导出预约表</el-button>
<el-button v-if="appointmentStatus >= 2" @click="getItineraryInfo" type="primary"
link>行程单预览</el-button>
</div>
</template>
<template #content>
<!-- 不是表格 -->
<el-row :gutter="20" v-if="!father.showTable">
<template v-for="child in father.data" :key="child.key">
<el-col
:sm="child.sm"
:lg="child.lg"
class="formItemBox"
v-if="child.show"
>
<el-col :sm="child.sm" :lg="child.lg" class="formItemBox" v-if="child.show">
<div>
<el-form-item
:label-width="child.labelWidth"
:label="child.label"
:prop="child.key"
:key="child.key"
:label-position="child.labelPosition"
class="button-form-item"
>
<el-input
v-if="child.domType === 'Input'"
:type="child.inputType"
v-model="form[child.key]"
:placeholder="child.placeholder"
maxlength="30"
:rows="child.rows"
:disabled="editStatus"
/>
<el-select
v-if="child.domType === 'Select'"
v-model="form[child.key]"
:placeholder="child.placeholder"
@change="handleSelectChange(father, child)"
:disabled="editStatus"
>
<el-option
v-for="item in child.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-form-item :label-width="child.labelWidth" :label="child.label" :prop="child.key"
:key="child.key" :label-position="child.labelPosition" class="button-form-item">
<el-input v-if="child.domType === 'Input'" :type="child.inputType"
v-model="form[child.key]" :placeholder="child.placeholder" maxlength="30"
:rows="child.rows" :disabled="editStatus" />
<el-select v-if="child.domType === 'Select'" v-model="form[child.key]"
:placeholder="child.placeholder" @change="handleSelectChange(father, child)"
:disabled="editStatus">
<el-option v-for="item in child.options" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
<!-- 带时分的时间框 -->
<div
v-if="child.domType === 'datetimePicker'"
class="compositionDateTime"
>
<el-date-picker
type="date"
placeholder="选择日期"
style="width: 100%"
v-model="form[child.key]"
:disabled="editStatus"
@change="handleDateChange(child)"
:disabled-date="time => disabledDate(time, child)"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@clear="handleDateClear(child)"
/>
<div v-if="child.domType === 'datetimePicker'" class="compositionDateTime">
<el-date-picker type="date" placeholder="选择日期" style="width: 100%"
v-model="form[child.key]" :disabled="editStatus" @change="handleDateChange(child)"
:disabled-date="time => disabledDate(time, child)" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" @clear="handleDateClear(child)" />
<span class="text-gray-500">-</span>
<el-time-picker
placeholder="选择时分"
style="width: 100%"
v-model="child.timeValue"
:disabled="editStatus"
format="HH:mm"
value-format="HH:mm"
@change="timeValueChange(child)"
/>
<el-time-picker placeholder="选择时分" style="width: 100%" v-model="child.timeValue"
:disabled="editStatus" format="HH:mm" value-format="HH:mm"
@change="timeValueChange(child)" />
</div>
<!-- 不带时分 -->
<el-date-picker
style="width: 100%"
v-if="child.domType === 'DatePicker'"
v-model="form[child.key]"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:placeholder="child.placeholder"
:disabled="editStatus"
:disabled-date="time => disabledDate(time, child)"
@change="handleDateChange(child)"
@clear="handleDateClear(child)"
/>
<el-input
v-if="child.domType === 'arrowRight'"
v-model="form[child.key]"
:placeholder="child.placeholder"
:suffix-icon="ArrowRight"
readonly
:disabled="editStatus"
@focus="handleFoucs(child)"
>
<el-date-picker style="width: 100%" v-if="child.domType === 'DatePicker'"
v-model="form[child.key]" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
:placeholder="child.placeholder" :disabled="editStatus"
:disabled-date="time => disabledDate(time, child)" @change="handleDateChange(child)"
@clear="handleDateClear(child)" />
<el-input v-if="child.domType === 'arrowRight'" v-model="form[child.key]"
:placeholder="child.placeholder" :suffix-icon="ArrowRight" readonly
:disabled="editStatus" @focus="handleFoucs(child)">
</el-input>
<el-select
v-model="form[child.key]"
v-if="child.domType === 'SearchSelect'"
filterable
:allow-create="child.allowCreate"
reserve-keyword
<el-select v-model="form[child.key]" v-if="child.domType === 'SearchSelect'" filterable
:allow-create="child.allowCreate" reserve-keyword
@change="handleSelectChange(father, child)"
:remote-method="query => searchSelectList(query, child.key)"
placeholder="请输入关键词搜索"
:loading="searchLoadingStates[child.key]"
:disabled="editStatus"
>
<el-option
v-for="item in searchOptions[child.key] || []"
:key="item.id"
:label="item.label"
:value="item.value"
/>
:remote-method="query => searchSelectList(query, child.key)" placeholder="请输入关键词搜索"
:loading="searchLoadingStates[child.key]" :disabled="editStatus">
<el-option v-for="item in searchOptions[child.key] || []" :key="item.id"
:label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<div v-if="child.domType === 'Div'" class="divClass">
<div v-if="child.key == 'information'" class="desBox">
<div class="title">{{ child.title }}</div>
<div class="informationBox">
<div
v-for="(item, index) in child.informationList"
:key="index"
>
<div v-for="(item, index) in child.informationList" :key="index">
{{ item.name }}
</div>
</div>
......@@ -184,15 +92,9 @@
<!-- 是表格数据 -->
<el-row v-if="father.showTable">
<el-col :span="24" v-if="father.addChildren">
<el-button
:disabled="editStatus"
type="primary"
icon="Plus"
size="small"
style="margin-bottom: 10px"
@click="addChildren(father)"
>{{ father.addChildrenTxt }}</el-button
>
<el-button :disabled="editStatus" type="primary" icon="Plus" size="small"
style="margin-bottom: 10px" @click="addChildren(father)">{{ father.addChildrenTxt
}}</el-button>
</el-col>
<el-table :data="father.data" border v-if="father.data.length > 0">
<template v-if="father.key == 'referrerDtoList'">
......@@ -201,23 +103,12 @@
<span class="required-label">姓名</span>
</template>
<template #default="scope">
<el-select
v-model="scope.row.realName"
filterable
remote
reserve-keyword
placeholder="请输入关键词搜索"
:remote-method="query => searchSelectList(query, 'realName')"
:loading="searchLoadingStates['realName']"
:disabled="editStatus"
@change="handleTableSelectChange(father, scope.row, 'realName')"
>
<el-option
v-for="item in searchOptions['realName'] || []"
:key="item.id"
:label="item.label"
:value="item.value"
/>
<el-select v-model="scope.row.realName" filterable remote reserve-keyword
placeholder="请输入关键词搜索" :remote-method="query => searchSelectList(query, 'realName')"
:loading="searchLoadingStates['realName']" :disabled="editStatus"
@change="handleTableSelectChange(father, scope.row, 'realName')">
<el-option v-for="item in searchOptions['realName'] || []" :key="item.id"
:label="item.label" :value="item.value" />
</el-select>
</template>
</el-table-column>
......@@ -226,12 +117,8 @@
<span class="required-label">手机号</span>
</template>
<template #default="scope">
<el-input
v-model="scope.row.phone"
size="default"
placeholder="请输入"
:disabled="editStatus"
/>
<el-input v-model="scope.row.phone" size="default" placeholder="请输入"
:disabled="editStatus" />
</template>
</el-table-column>
<el-table-column label="邮箱" prop="email" align="center">
......@@ -239,21 +126,15 @@
<span class="required-label">邮箱</span>
</template>
<template #default="scope">
<el-input
v-model="scope.row.email"
size="default"
placeholder="请输入"
:disabled="editStatus"
/>
<el-input v-model="scope.row.email" size="default" placeholder="请输入"
:disabled="editStatus" />
</template>
</el-table-column>
<el-table-column width="60px" align="center" label="操作">
<template #default="scope">
<el-icon
class="deleteIcon"
@click="deleteChildren(father, scope.$index)"
><Delete
/></el-icon>
<el-icon class="deleteIcon" @click="deleteChildren(father, scope.$index)">
<Delete />
</el-icon>
</template>
</el-table-column>
</template>
......@@ -263,23 +144,12 @@
<span class="required-label">姓名</span>
</template>
<template #default="scope">
<el-select
v-model="scope.row.name"
filterable
remote
reserve-keyword
placeholder="请选择"
<el-select v-model="scope.row.name" filterable remote reserve-keyword placeholder="请选择"
:remote-method="query => searchSelectList(query, 'name')"
:loading="searchLoadingStates['name']"
:disabled="editStatus"
@change="handleTableSelectChange(father, scope.row, 'name')"
>
<el-option
v-for="item in searchOptions['name'] || []"
:key="item.id"
:label="item.label"
:value="item.value"
/>
:loading="searchLoadingStates['name']" :disabled="editStatus"
@change="handleTableSelectChange(father, scope.row, 'name')">
<el-option v-for="item in searchOptions['name'] || []" :key="item.id"
:label="item.label" :value="item.value" />
</el-select>
</template>
</el-table-column>
......@@ -288,12 +158,8 @@
<span class="required-label">手机号</span>
</template>
<template #default="scope">
<el-input
v-model="scope.row.phone"
size="default"
placeholder="请输入"
:disabled="editStatus"
/>
<el-input v-model="scope.row.phone" size="default" placeholder="请输入"
:disabled="editStatus" />
</template>
</el-table-column>
<el-table-column label="执业编码" prop="practiceCode" align="center">
......@@ -301,59 +167,37 @@
<span class="required-label">执业编码</span>
</template>
<template #default="scope">
<el-input
v-model="scope.row.practiceCode"
size="default"
placeholder="请输入"
:disabled="editStatus"
/>
<el-input v-model="scope.row.practiceCode" size="default" placeholder="请输入"
:disabled="editStatus" />
</template>
</el-table-column>
<el-table-column label="邮箱" prop="email" align="center">
<template #default="scope">
<el-input
v-model="scope.row.email"
size="default"
placeholder="请输入"
:disabled="editStatus"
/>
<el-input v-model="scope.row.email" size="default" placeholder="请输入"
:disabled="editStatus" />
</template>
</el-table-column>
<el-table-column label="证件类型" prop="cardType" align="center">
<template #default="scope">
<el-select
v-model="scope.row.cardType"
placeholder="请选择"
:disabled="editStatus"
clearable
>
<el-option
v-for="item in fetchDictData('csf_id_type')"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="scope.row.cardType" placeholder="请选择" :disabled="editStatus"
clearable>
<el-option v-for="item in fetchDictData('csf_id_type')" :key="item.value"
:label="item.label" :value="item.value" />
</el-select>
</template>
</el-table-column>
<el-table-column label="证件号" prop="cardNo" align="center">
<template #default="scope">
<el-input
v-model="scope.row.cardNo"
size="default"
placeholder="请输入"
:disabled="editStatus"
/>
<el-input v-model="scope.row.cardNo" size="default" placeholder="请输入"
:disabled="editStatus" />
</template>
</el-table-column>
<el-table-column width="60px" align="center" label="操作">
<template #default="scope">
<el-icon
@click="deleteChildren(father, scope.$index)"
class="deleteIcon"
><Delete
/></el-icon>
<el-icon @click="deleteChildren(father, scope.$index)" class="deleteIcon">
<Delete />
</el-icon>
</template>
</el-table-column>
</template>
......@@ -369,26 +213,12 @@
</CommonForm>
</div>
<!-- 历史签约记录 -->
<CommonDialog
dialogTitle="历史记录"
:showConfirm="false"
cancleText="关闭"
dialogWidth="70%"
:openDialog="openList"
:showClose="true"
@close="openList = false"
>
<CommonDialog dialogTitle="历史记录" :showConfirm="false" cancleText="关闭" dialogWidth="70%" :openDialog="openList"
:showClose="true" @close="openList = false">
<div class="dialogBox">
<CommonPage
:showSearchForm="false"
:show-pagination="true"
:currentPage="queryParams.pageNo"
:total="total"
:pageSize="queryParams.pageSize"
@current-change="changePageNo"
@size-change="changePageSize"
:showOperationBtn="false"
>
<CommonPage :showSearchForm="false" :show-pagination="true" :currentPage="queryParams.pageNo" :total="total"
:pageSize="queryParams.pageSize" @current-change="changePageNo" @size-change="changePageSize"
:showOperationBtn="false">
<template #table>
<el-table v-loading="tableLoading" :data="tableData" border height="350px">
<el-table-column label="创建人" align="center" prop="creatorName" />
......@@ -400,13 +230,8 @@
}}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
width="100"
class-name="small-padding fixed-width"
fixed="right"
>
<el-table-column label="操作" align="center" width="100" class-name="small-padding fixed-width"
fixed="right">
<template #default="scope">
<el-button link type="primary" @click="viewDetail(scope.row)">查看</el-button>
</template>
......@@ -417,15 +242,8 @@
</div>
</CommonDialog>
<!-- 签约详情 -->
<CommonDialog
:dialogTitle="detailTitle"
:showConfirm="false"
cancleText="关闭"
dialogWidth="70%"
:openDialog="showDetail"
:showClose="true"
@close="showDetail = false"
>
<CommonDialog :dialogTitle="detailTitle" :showConfirm="false" cancleText="关闭" dialogWidth="70%"
:openDialog="showDetail" :showClose="true" @close="showDetail = false">
<el-scrollbar max-height="600px">
<div class="dialogBox">
<AppointmentDetail :detailInfo="detailInfo" :editSatus="true"></AppointmentDetail>
......@@ -433,52 +251,22 @@
</el-scrollbar>
</CommonDialog>
<!-- 行程单详情 -->
<CommonDialog
dialogTitle="香港行程安排"
confirmText="下载行程单"
dialogWidth="70%"
:openDialog="showItinerary"
@confirm="handleExprotPdf"
@close="showItinerary = false"
:showClose="true"
:showCancle="false"
:confirmLoading="exportLoading"
>
<CommonDialog dialogTitle="香港行程安排" confirmText="下载行程单" dialogWidth="70%" :openDialog="showItinerary"
@confirm="handleExprotPdf" @close="showItinerary = false" :showClose="true" :showCancle="false"
:confirmLoading="exportLoading">
<div class="itineraryDialogBox">
<div class="dialogItem" v-for="item in itineraryData">
<div class="dialogItemTitle">{{ item.title }}</div>
<DetailPanel
:data="item.data"
:row-span="24"
col-gap="10px"
label-width="120px"
row-height="45px"
:show-col-border="true"
/>
<DetailPanel :data="item.data" :row-span="24" col-gap="10px" label-width="120px" row-height="45px"
:show-col-border="true" />
</div>
</div>
</CommonDialog>
<Phone
@close="handleCloseDrawer"
:showDrawer="showPhoneDrawer"
:drawerInfo="drawerInfo"
:phoneMenuList="phoneMenuList"
:phoneQuickList="phoneQuickList"
@confirmDrawer="confirmDrawer"
/>
<Address
@close="handleCloseDrawer"
:showAddressDrawer="showAddressDrawer"
:drawerInfo="drawerInfo"
:addressMenuList="addressMenuList"
:addressQuickList="addressQuickList"
@confirmDrawer="confirmDrawer"
/>
<Country
:showCountryDrawer="showCountryDrawer"
@close="handleCloseDrawer"
@confirmCountry="confirmDrawer"
/>
<Phone @close="handleCloseDrawer" :showDrawer="showPhoneDrawer" :drawerInfo="drawerInfo"
:phoneMenuList="phoneMenuList" :phoneQuickList="phoneQuickList" @confirmDrawer="confirmDrawer" />
<Address @close="handleCloseDrawer" :showAddressDrawer="showAddressDrawer" :drawerInfo="drawerInfo"
:addressMenuList="addressMenuList" :addressQuickList="addressQuickList" @confirmDrawer="confirmDrawer" />
<Country :showCountryDrawer="showCountryDrawer" @close="handleCloseDrawer" @confirmCountry="confirmDrawer" />
</div>
</template>
<script setup name="appointmentInfo">
......@@ -793,6 +581,7 @@ const timeValueChange = child => {
proxy.$message.warning(`请先选择${child.label}日期`)
child.timeValue = ''
}
console.log('signDate',child.finishTime)
}
// 签约详情
const viewDetail = row => {
......@@ -1010,6 +799,7 @@ const handleDateClear = child => {
}
}
const handleDateChange = child => {
// debugger;
if (child.key == 'openAccountStartTime' && form.value['openAccountStartTime']) {
resetShow({ type: 'child', key: 'openAccountEndTime', status: false, flag: 'disabled' })
disabledDate(form.value['openAccountStartTime'], { key: 'openAccountEndTime' })
......@@ -1017,12 +807,11 @@ const handleDateChange = child => {
// 拼接日期与时分
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
) {
} 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 (
......@@ -1204,8 +993,7 @@ const confirmDrawer = info => {
newObj.objType = drawerInfo.value.drawerType
// 因为电话有多个,根据点击的电话类型在抽屉里回显,所以要用drawerInfo.value.code来控制
newObj.key = drawerInfo.value.key
form.value[info.key] = newObj.phoneString = `${newObj[drawerInfo.value.code]} ${
newObj[drawerInfo.value.key]
form.value[info.key] = newObj.phoneString = `${newObj[drawerInfo.value.code]} ${newObj[drawerInfo.value.key]
}`
saveKey.value[drawerInfo.value.key] = newObj
// 检查数组中是否已存在key的电话
......@@ -1377,7 +1165,11 @@ const setFormValue = (obj, formData) => {
if (field.key == 'confirmAppointmentTime' && props.appointmentStatus !== 0) {
field.show = true
}
if(field.compositionTime){
field.finishTime = obj[field.key]
form.value[field.key] = proxy.formatToDate(obj[field.key])
field.timeValue = obj[field.key].split(' ')[1]
}
// 处理时间
if (field.key == 'openAccountEndTime' && obj[field.key]) {
// 开始时间是否在结束时间之前
......@@ -1428,8 +1220,7 @@ const setFormValue = (obj, formData) => {
}
if (phoneObj[field.key]) {
phoneObj.phoneString = form.value[field.key] = `${phoneObj[field.code]} ${
phoneObj[field.key]
phoneObj.phoneString = form.value[field.key] = `${phoneObj[field.code]} ${phoneObj[field.key]
}`
tempPhoneList.push(phoneObj)
}
......@@ -1505,7 +1296,7 @@ const setFormValue = (obj, formData) => {
addressQuickList.value = removeDuplicates(tempAddressList, 'addressString')
processedAppointmentData.value = oldAppointmentData.value = processedData
oldObjInfo.value = JSON.parse(JSON.stringify(form.value))
console.log('form.value', form.value)
console.log('辉县', form.value)
}
// 数组去重
function removeDuplicates(arr, key) {
......@@ -1594,6 +1385,19 @@ const handleFormValues = () => {
practiceCode: '签单员执业编码'
}
processedAppointmentData.value.forEach(item => {
if(item.data){
item.data.forEach(item1=>{
if(item1.key=='signDate'&&!item1.timeValue){
errorFields.value.push({
message: '请选择签单日的时分'
})
}
if (item1.compositionTime) {
submitObj[item1.key] = item1.finishTime
}
})
}
if (item.key == 'referrerDtoList') {
if (form.value['isReferrerAccompany'] == 1 && item.data.length > 0) {
item.data.forEach((item1, index) => {
......@@ -1612,13 +1416,7 @@ const handleFormValues = () => {
})
}
}
if (item.key == 'position') {
item.data.forEach((item1, index) => {
if (item1.compositionTime) {
submitObj[item1.key] = item1.finishTime
}
})
}
if (item.key == 'userSignDtoList' && item.data.length > 0) {
item.data.forEach((item1, index) => {
for (const key in obj1) {
......@@ -1632,9 +1430,7 @@ const handleFormValues = () => {
submitObj['userSignDtoList'] = item.data
}
})
if (submitObj['signDate']) {
submitObj['signDate'] = proxy.formatToDateTime(submitObj['signDate'])
}
console.log('submitObj', submitObj)
if (submitObj['departureTime']) {
// 开始时间是否在结束时间之前
......@@ -1733,6 +1529,7 @@ defineExpose({
color: #f56c6c;
margin-right: 4px;
}
.domEmpty {
width: 100%;
height: 100%;
......@@ -1744,25 +1541,30 @@ defineExpose({
color: #a8abb2;
margin-top: 100px;
}
.topBtn {
width: 100%;
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
.formBox {
width: 100%;
.fatherLable {
font-size: 18px;
border-left: 4px solid #165dff;
padding-left: 5px;
}
.fatherDes {
font-size: 14px;
color: #a8abb2;
margin-top: 5px;
margin-bottom: 20px;
}
.inputBox {
width: 100%;
border: 1px solid #dcdfe6;
......@@ -1772,11 +1574,13 @@ defineExpose({
justify-content: space-between;
min-height: 32px;
padding: 0px 11px;
.rightArrow {
font-size: 14px;
color: #a8abb2;
}
}
.desBox {
.title {
width: 120px;
......@@ -1786,6 +1590,7 @@ defineExpose({
color: #606266;
font-weight: 700;
}
.informationBox {
font-size: 14px;
border: 1px solid #dcdfe6;
......@@ -1796,6 +1601,7 @@ defineExpose({
}
}
}
.tabButton {
box-shadow: 0 -1px 14px #00000014;
width: 100%;
......@@ -1804,6 +1610,7 @@ defineExpose({
justify-content: center;
/* padding-right: 20px; */
padding-top: 20px;
.sumbitBtn {
display: flex;
align-items: center;
......@@ -1813,34 +1620,40 @@ defineExpose({
background-color: #165dff;
color: #fff;
padding: 0 30px;
.buttonIcon {
font-size: 16px;
color: #fff;
}
}
}
.customerBox {
.customerItem {
padding: 10px;
border-radius: 5px;
margin-bottom: 20px;
box-shadow: 0 -1px 14px #00000014;
.top {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
.left {
width: 40%;
display: flex;
align-items: center;
justify-content: flex-start;
.gender {
display: flex;
align-items: center;
}
}
}
.bottom {
.infoItem {
display: flex;
......@@ -1849,20 +1662,24 @@ defineExpose({
}
}
}
.customerItem:last-child {
margin-bottom: 0px;
}
}
.deleteIcon {
color: red;
font-size: 18px;
padding-top: 10px;
}
.compositionDateTime {
display: flex;
width: 100%;
box-sizing: border-box;
}
.itineraryDialogBox {
.dialogItem {
.dialogItemTitle {
......@@ -1873,6 +1690,7 @@ defineExpose({
}
}
}
@media only screen and (min-width: 768px) {
.formBtn {
margin-top: 0 !important;
......
......@@ -302,6 +302,7 @@ import { getBankList } from '@/api/common'
import useUserStore from '@/store/modules/user'
import { loadDicts, getDictLabel } from '@/utils/useDict'
import { getToken } from '@/utils/auth'
import { getNowTime, formatToDate, formatToDateTime } from '@/utils/date'
const { proxy } = getCurrentInstance()
const userStore = useUserStore()
// 分页相关
......@@ -493,7 +494,7 @@ const affirmConfig = [
placeholder: '请选择',
maxDate: 'today',
visible: formData =>
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) <= 0,
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0 || Number(formData.remainingUnpaidAmount) == 0,
rules: [{ required: true, message: '请输入', trigger: 'blur' }]
},
{
......@@ -504,7 +505,7 @@ const affirmConfig = [
maxDate: 'today',
rules: [{ required: true, message: '请输入', trigger: 'blur' }],
visible: formData =>
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) <= 0
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0 || Number(formData.remainingUnpaidAmount) == 0,
},
{
type: 'select',
......@@ -512,7 +513,7 @@ const affirmConfig = [
label: '保单状态',
dictType: 'csf_policy_status_new',
visible: formData =>
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) <= 0
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0 || Number(formData.remainingUnpaidAmount) == 0,
}
]
//计算待付金额
......@@ -534,6 +535,7 @@ const calculateAmount = async () => {
const confirmAffirm = async () => {
try {
const formData = await affirmFormRef.value.validate()
console.log(formData.value)
let newObj = JSON.parse(JSON.stringify(formData))
for (const key in newObj) {
if (/Date/.test(key)) {
......
......@@ -23,7 +23,7 @@
<el-table-column prop="insured" label="受保人" width="150" sortable />
<el-table-column prop="insuranceCompany" label="保险公司" width="200" sortable />
<el-table-column prop="productName" label="产品计划" width="200" sortable />
<el-table-column prop="paymentTerm" label="缴费年期" width="120" sortable />
<el-table-column prop="issueNumber" label="缴费年期" width="120" sortable />
<el-table-column fixed="right" label="操作" min-width="80">
<template #default="{ row }">
<el-popover placement="right" :width="200" trigger="click">
......
......@@ -3,7 +3,7 @@
<div class="form-page">
<el-form ref="formRef" :model="localData" label-width="120px" size="default">
<!-- Tabs -->
<el-tabs v-model="activeTab" @tab-click="handleTabClick">
<el-tabs v-model="activeTab" @tab-click="handleTabClick" @before-leave="() => handleBeforeLeave()">
<el-tab-pane label="基础信息" name="basic"></el-tab-pane>
<el-tab-pane label="产品计划" name="productPlan"></el-tab-pane>
<el-tab-pane label="首期缴费" name="firstPayment"></el-tab-pane>
......@@ -54,7 +54,8 @@
v-model="firstPremiumFormData" />
<h3 class="sectionTitle">首期对账信息</h3>
<el-table :data="firstPremiumTableData" border style="width: 100%">
<el-table-column prop="createTime" label="申请对账日期" width="180" />
<el-table-column prop="createTime" label="申请对账日期" width="180"
:formatter="(row, col, val) => formatToDateTime(val, 'YYYY-MM-DD HH:mm:ss')" />
<el-table-column prop="reconciliationStatus" label="对账状态" width="180" />
<el-table-column prop="paymentMethod" label="缴费方式" width="180" />
<el-table-column prop="paymentAmount" label="汇款金额" width="180" />
......@@ -155,20 +156,33 @@
import { ref, reactive, watch, nextTick, onMounted, computed } from 'vue'
import SearchForm from '@/components/SearchForm/SearchForm.vue'
import CommonDialog from '@/components/commonDialog'
import { ElMessage } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Delete, Edit, Search, Share, Upload } from '@element-plus/icons-vue'
import { getPolicyfollow, getProductList } from '@/api/sign/underwritingMain'
import { uploadOssFileList } from '@/api/common'
import { getProcessDetail } from '@/api/sign/fna'
import { premiumReconciliationList } from '@/api/sign/policy'
import { loadDicts, getDictLabel } from '@/utils/useDict'
import { formatToDate } from '@/utils/date'
import { getNowTime, formatToDate, formatToDateTime } from '@/utils/date'
import EditableTable from '@/components/csf-common/EditableTable.vue'
import useUserStore from '@/store/modules/user'
const { proxy } = getCurrentInstance()
proxy.useDictLists(['sys_no_yes', 'csf_ap_frequency', 'bx_currency_type', 'csf_ap_first_issue', 'csf_ap_dividend', 'csf_fortune_status', 'csf_ap_mailing_method', 'receipt_status'])
const router = useRouter()
const userStore = useUserStore()
const files = ref('')
const fileUploadDialogFlag = ref(false)
// 记录每个 tab 是否有未保存的修改(dirty 状态)
const tabDirty = ref({
basic: false,
productPlan: false,
firstPayment: false,
introducer: false,
postal: false,
related: false,
attachment: false
})
// ===== Props & Emits =====
const props = defineProps({
modelValue: {
......@@ -461,7 +475,6 @@ const basicPlanFormConfig = ref([
valueKey: 'insuranceCompanyBizId',
labelKey: 'fullName',
transform: (res) => {
console.log(res)
return res?.data.records || []
},
onChangeExtraFields: {
......@@ -497,8 +510,9 @@ const basicPlanFormConfig = ref([
projectBizId: userStore.projectInfo.projectBizId,
fieldBizId: 'field_olk1qZe81qHHKXbw',
fieldValueBizId: 'field_value_uOfJH5ucA2YwJpbn',
categoryCodeList: [basicPlanFormData.value.insuranceCategoryBizId],
insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId],
// ✅ 确认这里用的是正确的字段(code 或 bizId)
categoryCodeList: [basicPlanFormData.value.insuranceCategoryCode || ''],
insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId || ''],
pageNo: 1,
pageSize: 20
}),
......@@ -506,12 +520,15 @@ const basicPlanFormConfig = ref([
debounceWait: 500,
valueKey: 'productName',
labelKey: 'productName',
transform: (res) => res?.data.records || [],
// ✅ 关键:当选择产品时,自动回填其他字段
transform: (res) => {
console.log('======子组件选择选项后,父组件接收的值 :', res?.data.records || [])
return res?.data.records || []
},
onChangeExtraFields: {
// 格式:targetProp: sourcePathInRawObject
apiAttributeSettingDtoList: 'apiAttributeSettingDtoList',
productLaunchBizId: 'productLaunchBizId',
insuranceCategoryCode: 'code',
// 如果需要,也可以回填其他字段
},
},
{
......@@ -729,11 +746,12 @@ const localData = ref(defaultFormData())
// ✅ 只在挂载时初始化一次(避免 watch 形成闭环)
onMounted(async () => {
if (props.modelValue) {
console.log('🚀 父组件 props.modelValue 挂载时:', props.modelValue)
// 深拷贝 + 合并默认值,防止缺失字段
localData.value = { ...defaultFormData(), ...props.modelValue }
}
try {
await loadDicts(['sys_no_yes', 'csf_ap_frequency', 'bx_currency_type', 'csf_ap_first_issue', 'csf_ap_dividend', 'csf_fortune_status', 'csf_ap_mailing_method', 'receipt_status'])
getPolicyfollowDetail()
} catch (error) {
console.error('字典加载失败', error)
......@@ -745,11 +763,25 @@ onMounted(async () => {
policyInfoFormConfig.value = policyInfoFormConfig ? applyViewMode(policyInfoFormConfig.value, props.mode) : []
})
watch(
() => ({
...basicInfoFormData.value,
...policyInfoFormData.value,
...firstPremiumFormData.value,
...postalFormData.value,
...basicPlanFormData.value
}),
() => {
console.log('========父组件监听basicPlanFormData的变化', basicPlanFormData.value)
tabDirty.value.basic = true
},
{ deep: true }
)
// ✅ 监听 localData 变化,emit 出去(用于 v-model)
watch(
() => localData.value,
(newVal) => {
console.log('========父组件监测的localData:', newVal)
emit('update:modelValue', newVal)
},
{ deep: true }
......@@ -757,12 +789,46 @@ watch(
// ===== 表单引用 & 验证规则 =====
const formRef = ref()
const activeTab = ref('basic')
// ========================
// ✅ 新增:切换前确认
// ========================
const handleBeforeLeave = async (newTabName, oldTabName) => {
console.log('切换前确认', newTabName, oldTabName)
if (tabDirty.value[oldTabName]) {
try {
await ElMessageBox.confirm(
`“${getTabLabel(oldTabName)}” 有未保存的内容,确定要切换吗?`,
'提示',
{
confirmButtonText: '继续切换',
cancelButtonText: '取消',
type: 'warning'
}
)
return true // 允许切换
} catch {
return false // 阻止切换
}
}
return true // 无未保存内容,允许切换
}
const getTabLabel = (name) => {
const labels = {
basic: '基础信息',
productPlan: '产品计划',
firstPayment: '首期缴费',
introducer: '介绍人',
postal: '邮寄信息',
related: '关联记录',
attachment: '附件'
}
return labels[name] || name
}
const handleTabClick = (tab) => {
if (tab.props.name === 'firstPayment') {
firstPremiumFormConfig.value = firstPremiumFormConfig ? applyViewMode(firstPremiumFormConfig.value, props.mode) : []
if (!basicInfoFormData.value.policyNo) return
getPremiumReconciliationList(basicInfoFormData.value.policyNo)
if (!policyInfoFormData.value.policyNo) return
getPremiumReconciliationList(policyInfoFormData.value.policyNo)
} else if (tab.props.name === 'postal') {
postalFormConfig.value = postalFormConfig ? applyViewMode(postalFormConfig.value, props.mode) : []
} else if (tab.props.name === 'related') {
......@@ -782,6 +848,7 @@ const handleSubmit = () => {
formRef.value?.validate((valid) => {
if (valid) {
console.log('提交数据', introducerTableData.value)
savTabList.value.push(activeTab.value)
if (activeTab.value === 'postal') {
emit('submit', { ...postalFormData.value, activeTab: activeTab.value })
} else if (activeTab.value === 'firstPayment') {
......@@ -826,12 +893,14 @@ const getPolicyfollowDetail = () => {
}
getPolicyfollow(props.policyBizId).then(res => {
if (res.code === 200) {
console.log('====父组件在赋值basicPlanFormData前', basicPlanFormData.value)
newOrderData.value = res.data
policyInfoFormData.value = transformToFormData(res.data, policyInfoFormConfig.value);
basicPlanFormData.value = transformToFormData(res.data, basicPlanFormConfig.value);
basicInfoFormData.value = transformToFormData(res.data, basicInfoFormConfig.value);
firstPremiumFormData.value = transformToFormData(res.data, firstPremiumFormConfig.value);
policyInfoFormData.value = { ...transformToFormData(res.data, policyInfoFormConfig.value) };
basicPlanFormData.value = { ...transformToFormData(res.data, basicPlanFormConfig.value) };
basicInfoFormData.value = { ...transformToFormData(res.data, basicInfoFormConfig.value) };
firstPremiumFormData.value = { ...transformToFormData(res.data, firstPremiumFormConfig.value) };
introducerTableData.value = res.data.brokerList || []
console.log('====父组件在赋值basicPlanFormData后', basicPlanFormData.value)
}
})
......@@ -931,17 +1000,23 @@ const viewRecordDetail = (e) => {
}
})
}
const handleSelectChange = (prop, value, item, type) => {
console.log(basicPlanFormData.value)
const handleSelectChange = async (prop, value, item, type) => {
await nextTick()
// console.log('======子组件选择选项后,父组件接收的值 :', basicPlanFormData.value)
if (type === 'basicPlan') {
const params = {
tenantBizId: userStore.projectInfo.tenantBizId,
projectBizId: userStore.projectInfo.projectBizId,
fieldBizId: 'field_olk1qZe81qHHKXbw',
fieldValueBizId: 'field_value_uOfJH5ucA2YwJpbn',
insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId],
categoryCodeList: [basicPlanFormData.value.insuranceCategoryCode],
pageNo: 1,
pageSize: 100,
}
console.log('====父组件拿到值,去调用产品列表查询接口', params)
getProductLists(params)
}
}
......
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