From 796e039b932c3de815814b2868b8e17fd0b3e4a5 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 19 九月 2025 14:03:24 +0800 Subject: [PATCH] fix: bug --- src/views/EmploymentManage/components/AddOrEditEmploymentView.vue | 164 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 144 insertions(+), 20 deletions(-) diff --git a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue index 3d0d1d1..c2ea175 100644 --- a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue +++ b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue @@ -5,14 +5,34 @@ <ProForm :model="form" ref="productFormRef" label-width="110px" :is-read="isDetail"> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="浠诲姟鍚嶇О:" prop="name"> + <ProFormItemV2 + label="浠诲姟鍚嶇О:" + prop="name" + :check-rules="[{ message: '璇疯緭鍏ヤ换鍔″悕绉�' }]" + > <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" /> </ProFormItemV2> </ProFormColItem> </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="鏈嶅姟璐�:" prop="billingMethod"> + <ProFormItemV2 + label="鏈嶅姟璐�:" + prop="billingMethod" + :check-rules="[ + { + validator: (rule, value, callback) => { + if (!form.billingMethod) { + callback(new Error('璇烽�夋嫨鏈嶅姟璐圭被鍨�')); + } + if (!form.serviceFee) { + callback(new Error('璇疯緭鍏ユ湇鍔¤垂')); + } + callback(); + }, + }, + ]" + > <RadioWithExtra v-model="form.billingMethod" :value-enum="EnumBillingMethodText" @@ -24,6 +44,8 @@ :controls="false" v-model="form.serviceFee" placeholder="璇疯緭鍏�" + :min="0" + :max="999999999999" :unit="EnumBillingMethodUnitText[form.billingMethod]" ></ProFormInputNumber> </template> @@ -33,12 +55,35 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="缁撶畻鏂瑰紡:" prop="settlementCycle"> + <ProFormItemV2 + label="缁撶畻鏂瑰紡:" + prop="settlementCycle" + :check-rules="[{ message: '璇烽�夋嫨缁撶畻鏂瑰紡' }]" + > <ProFormRadio v-model="form.settlementCycle" :value-enum="EnumSettlementCycleText" :button-style="false" + @change="handleSettlementCycleChange" ></ProFormRadio> + </ProFormItemV2> + </ProFormColItem> + </ProFormCol> + <ProFormCol> + <ProFormColItem :span="12" class="settlement-cycle-date-form-item"> + <ProFormItemV2 + v-if="form.settlementCycle !== EnumSettlementCycle.Day" + label="缁撶畻鏃ユ湡:" + prop="settlementCycle" + :check-rules="[{ message: '璇烽�夋嫨缁撶畻鏃ユ湡' }]" + > + {{ EnumSettlementCycleDateText[form.settlementCycle] }} + <ProFormSelect + v-model="form.settlementDate" + :value-enum="settlementDateList" + :button-style="false" + ></ProFormSelect> + {{ '缁撶畻' }} </ProFormItemV2> </ProFormColItem> </ProFormCol> @@ -63,32 +108,54 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="骞撮緞鑼冨洿:" prop="ageRange" class="form-age-range"> + <ProFormItemV2 + label="骞撮緞鑼冨洿:" + prop="ageRange" + class="form-age-range" + :check-rules="[ + { + validator: (rule, value, callback) => { + if (!form.ageMinLimit) { + callback(new Error('璇疯緭鍏ュ勾榫勮姹�')); + } + if (!form.ageMaxLimit) { + callback(new Error('璇疯緭鍏ュ勾榫勮姹�')); + } + if (Number(form.ageMaxLimit) <= Number(form.ageMinLimit)) { + callback(new Error('鏈�澶у勾榫勪笉鑳藉皬浜庢渶灏忓勾榫�')); + } + callback(); + }, + }, + ]" + > <ProFormInputNumber :controls="false" - :min="1" + :min="16" v-model="form.ageMinLimit" placeholder="璇疯緭鍏�" ></ProFormInputNumber> <div class="form-input-separator">鑷�</div> <ProFormInputNumber :controls="false" - :min="1" + :min="16" v-model="form.ageMaxLimit" placeholder="璇疯緭鍏�" ></ProFormInputNumber> + 宀� </ProFormItemV2> </ProFormColItem> </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="鎬у埆瑕佹眰:" prop="genderLimit"> + <ProFormItemV2 + label="鎬у埆瑕佹眰:" + prop="genderLimit" + :check-rules="[{ message: '璇烽�夋嫨鎬у埆瑕佹眰' }]" + > <ProFormRadio v-model="form.genderLimit" :value-enum="EnumUserGenderTextForEdit" - show-all-btn - :all-btn-label="'涓嶉檺'" - :allBtnValue="0" ></ProFormRadio> </ProFormItemV2> </ProFormColItem> @@ -114,7 +181,11 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="浠诲姟鍦扮偣:" prop="weMapInfo"> + <ProFormItemV2 + label="浠诲姟鍦扮偣:" + prop="weMapInfo" + :check-rules="[{ message: '璇烽�夋嫨浠诲姟鍦扮偣', type: 'weMap' }]" + > <WeMap v-if="!isDetail" v-model="form.weMapInfo" /> <div v-else> {{ @@ -128,20 +199,29 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="璇︾粏鍦板潃:" prop="addressDetail"> + <ProFormItemV2 + label="璇︾粏鍦板潃:" + prop="addressDetail" + :check-rules="[{ message: '璇疯緭鍏ヨ缁嗗湴鍧�' }]" + > <ProFormText v-model.trim="form.addressDetail" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" /> </ProFormItemV2> </ProFormColItem> </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="浠诲姟鏃堕棿:" prop="time"> + <ProFormItemV2 + label="浠诲姟鏃堕棿:" + prop="time" + :check-rules="[{ message: '璇烽�夋嫨浠诲姟鏃堕棿', type: 'array' }]" + > <ProFormDatePicker v-model="form.time" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" + :disabled-date="disabledDate" ></ProFormDatePicker> </ProFormItemV2> </ProFormColItem> @@ -169,6 +249,7 @@ ProFormRadio, ProFormDatePicker, ProFormCheckbox, + ProFormSelect, } from '@bole-core/components'; import { FormInstance, ModelValueType } from 'element-plus'; import { Message } from '@bole-core/core'; @@ -180,8 +261,12 @@ EnumBillingMethodText, EnumBillingMethodUnitText, EnumSettlementCycleText, + EnumSettlementCycleDateText, + EnumSettlementCycleDateMonthArray, + EnumSettlementCycleDateWeekArray, + EnumSettlementCycle, } from '@/constants'; -import { format } from '@/utils'; +import { format, FormValidator } from '@/utils'; import dayjs from 'dayjs'; defineOptions({ @@ -195,6 +280,10 @@ const id = route.params.id as string; const isEdit = !!id; +function disabledDate(time: Date) { + return dayjs(time).isBefore(dayjs(), 'day'); +} + const eventContext = useGlobalEventContext(); const { closeViewPush } = useRouteView(); @@ -203,6 +292,16 @@ }); const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({ categoryCode: CategoryCode.CertificateType, +}); + +const settlementDateList = computed(() => { + if (form.settlementCycle === EnumSettlementCycle.Month) { + return EnumSettlementCycleDateMonthArray; + } + if (form.settlementCycle === EnumSettlementCycle.Week) { + return EnumSettlementCycleDateWeekArray; + } + return []; }); const state = reactive({ @@ -215,12 +314,13 @@ const form = reactive({ name: '', - billingMethod: '' as any as EnumBillingMethod, - serviceFee: 0, - settlementCycle: '' as any as EnumSettlementCycle, + billingMethod: EnumBillingMethod.Day, + serviceFee: null, + settlementCycle: EnumSettlementCycle.Day, + settlementDate: null as number, benefits: [] as string[], - ageMinLimit: 0, - ageMaxLimit: 0, + ageMinLimit: null, + ageMaxLimit: null, genderLimit: 0 as any as EnumUserGender, credentialLimits: [] as string[], time: [] as unknown as ModelValueType, @@ -244,6 +344,7 @@ form.billingMethod = data.billingMethod; form.serviceFee = data.serviceFee; form.settlementCycle = data.settlementCycle; + form.settlementDate = data.settlementDate; form.benefits = data.benefits?.map((x) => x.benefitCode) ?? []; form.ageMinLimit = data.ageMinLimit; form.ageMaxLimit = data.ageMaxLimit; @@ -267,6 +368,10 @@ enabled: isEdit, }); +function handleSettlementCycleChange() { + form.settlementDate = null as number; +} + function handleBack() { closeViewPush(route, { name: 'TaskManageList', @@ -285,12 +390,12 @@ } async function submit() { try { - console.log('form.weMapInfo: ', form.weMapInfo); let params: API.SaveTaskInfoCommand = { name: form.name, billingMethod: form.billingMethod, serviceFee: form.serviceFee, settlementCycle: form.settlementCycle, + settlementDate: form.settlementDate ? form.settlementDate : 0, benefits: form.benefits, ageMinLimit: form.ageMinLimit, ageMaxLimit: form.ageMaxLimit, @@ -361,5 +466,24 @@ width: auto; } } + + .settlement-cycle-date-form-item { + color: inherit; + + .el-form-item__content { + flex-wrap: nowrap; + + .el-select { + margin: 0 20px; + width: auto; + min-width: 0; + flex: 1; + } + + .pro-from-item-read-content-wrapper { + width: auto; + } + } + } } </style> -- Gitblit v1.9.1