From fc78e30665636cdf945da9bdc3139388d8bb4980 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期二, 29 七月 2025 17:41:36 +0800 Subject: [PATCH] fix: 新增生煎保(短期方案) --- src/views/Home/components/UploadInsurePersonDialog.vue | 98 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 94 insertions(+), 4 deletions(-) diff --git a/src/views/Home/components/UploadInsurePersonDialog.vue b/src/views/Home/components/UploadInsurePersonDialog.vue index d63ba0f..9640f65 100644 --- a/src/views/Home/components/UploadInsurePersonDialog.vue +++ b/src/views/Home/components/UploadInsurePersonDialog.vue @@ -10,19 +10,38 @@ @close="onDialogClose" width="600px" > - <ProForm :model="innerForm" ref="dialogForm" label-width="100px"> + <ProForm :model="innerForm" ref="dialogForm" label-width="120px"> <ProFormItemV2 label="鎶曚繚浜у搧锛�" prop="productIdNumber" :check-rules="[{ message: '璇烽�夋嫨鎶曚繚浜у搧' }]" + v-if="allUserInsureProductSettingList.length > 0" > <ProFormSelect placeholder="璇烽�夋嫨鎶曚繚浜у搧" :value-enum="allUserInsureProductSettingList" clearable v-model="form.productIdNumber" - enum-label-key="insuranceScheme" + enum-label-key="productName" enum-value-key="productIdNumber" + @change="handleProductChange" + :disabled="isSupply" + ></ProFormSelect> + </ProFormItemV2> + <ProFormItemV2 + label="鎶曚繚浜у搧鏂规锛�" + prop="productSchemeIdNumber" + :check-rules="[{ message: '璇烽�夋嫨鎶曚繚浜у搧鏂规' }]" + v-if="allUserInsureProductSettingList.length > 0" + > + <ProFormSelect + placeholder="璇烽�夋嫨鎶曚繚浜у搧鏂规" + :value-enum="allInsureProductSchemeList" + clearable + v-model="form.productSchemeIdNumber" + enum-label-key="name" + enum-value-key="idNumber" + :disabled="isSupply" ></ProFormSelect> </ProFormItemV2> <ProFormItemV2 label="鎵规鍙凤細" prop="serialNum" :check-rules="[{ message: '璇疯緭鍏ユ壒娆″彿' }]"> @@ -30,7 +49,38 @@ placeholder="璇疯緭鍏ユ壒娆″彿" v-model.trim="innerForm.serialNum" :maxlength="30" + :disabled="isSupply" ></ProFormText> + </ProFormItemV2> + <ProFormItemV2 + label="璧蜂繚鏃ユ湡:" + prop="effectStartTime" + :check-rules="[{ message: '璇烽�夋嫨璧蜂繚鏃ユ湡' }]" + > + <ProFormDatePicker + v-model="form.effectStartTime" + type="date" + value-format="YYYY-MM-DD" + placeholder="璇烽�夋嫨璧蜂繚鏃ユ湡" + :disabled-date="disabledStartDate" + :disabled="isSupply" + @change="handleStartDateChange" + ></ProFormDatePicker> + </ProFormItemV2> + <ProFormItemV2 + label="鎴鏃ユ湡:" + prop="effectEndTime" + :check-rules="[{ message: '璇烽�夋嫨鎴鏃ユ湡' }]" + v-if="currentInsureProductScheme?.period === InsurancePeriodEnum['1-29D']" + > + <ProFormDatePicker + v-model="form.effectEndTime" + type="date" + value-format="YYYY-MM-DD" + placeholder="璇烽�夋嫨鎴鏃ユ湡" + :disabled-date="disabledEndDate" + :disabled="isSupply" + ></ProFormDatePicker> </ProFormItemV2> <ProFormItemV2 label="涓婁紶鏂囦欢锛�" @@ -60,7 +110,7 @@ </template> <script setup lang="ts"> -import { useUserInsureProductSetting } from '@/hooks'; +import { useUserInsureProductSetting, useInsureProductSchemeAllList } from '@/hooks'; import { ProDialog, UploadUserFile, @@ -69,9 +119,12 @@ ProFormText, ProFormUpload, ProFormSelect, + ProFormDatePicker, } from '@bole-core/components'; +import dayjs from 'dayjs'; import { FormInstance } from 'element-plus'; import _ from 'lodash'; +import { InsurancePeriodEnum } from '@/constants'; defineOptions({ name: 'UploadInsurePersonDialog', @@ -83,11 +136,17 @@ serialNum: string; url: UploadUserFile[]; productIdNumber: string; + productSchemeIdNumber: string; + effectStartTime: string; + effectEndTime: string; }; + //鏄惁鏄ˉ鎻� + isSupply?: boolean; }; const props = withDefaults(defineProps<Props>(), { modelValue: false, + isSupply: false, }); const emit = defineEmits<{ @@ -97,7 +156,38 @@ (e: 'onCancel'): void; }>(); -const { allUserInsureProductSettingList } = useUserInsureProductSetting(); +const { allUserInsureProductSettingList, getInsureProductIdByIdNumber } = + useUserInsureProductSetting(); +const { allInsureProductSchemeList, getInsureProductSchemeByIdNumber } = + useInsureProductSchemeAllList({ + insureProductId: computed(() => getInsureProductIdByIdNumber(props.form.productIdNumber)), + }); + +const currentInsureProductScheme = computed(() => + getInsureProductSchemeByIdNumber(props.form.productSchemeIdNumber) +); + +function handleProductChange() { + innerForm.value.productSchemeIdNumber = ''; +} + +const disabledStartDate = (time: Date) => { + return dayjs(time).isBefore(dayjs()) || dayjs(time).isAfter(dayjs().add(60, 'day')); +}; + +const disabledEndDate = (time: Date) => { + const startDate = dayjs(props.form.effectStartTime); + return ( + dayjs(time).isBefore(startDate) || + dayjs(time).isAfter(dayjs(props.form.effectStartTime).add(28, 'day')) + ); +}; + +function handleStartDateChange() { + if (disabledEndDate(props.form.effectEndTime as any)) { + innerForm.value.effectEndTime = ''; + } +} const innerVisible = computed({ get() { -- Gitblit v1.9.1