临时外出申请增加上下午

This commit is contained in:
lSun 2025-02-28 14:25:44 +08:00
parent bec1409474
commit 96a1a209c8
2 changed files with 100 additions and 1 deletions

View File

@ -16,11 +16,21 @@
<input type="text" v-model="formData.leaveStartDate" disabled />
</view>
<view class="form-item">
<text class="label required">外出结束时间上下午</text>
<input type="text" :value="['请选择','上午', '下午'][formData.leaveStartInterval]" disabled />
</view>
<view class="form-item">
<text class="label required">外出结束时间</text>
<input type="text" v-model="formData.leaveEndDate" disabled />
</view>
<view class="form-item">
<text class="label required">外出结束时间上下午</text>
<input type="text" :value="['请选择','上午', '下午'][formData.leaveEndInterval]" disabled />
</view>
<view class="form-item">
<text class="label required">外出时长</text>
<input type="number" v-model="formData.leaveDuration" disabled />

View File

@ -70,6 +70,21 @@
</text>
</view>
<view class="form-item">
<text class="label required">外出开始时间上下午</text>
<!-- 上下午选择 -->
<picker
mode="selector"
:range="['请选择','上午', '下午']"
:value="formData.leaveStartInterval"
@change="onStartAmPmChange"
:disabled="isFormDisabled"
>
<view class="picker-value">{{ ['请选择','上午', '下午'][formData.leaveStartInterval ] }}</view>
</picker>
</view>
<view class="form-item">
<text class="label required">外出结束时间</text>
<picker
@ -85,6 +100,20 @@
</text>
</view>
<view class="form-item">
<text class="label required">外出结束时间上下午</text>
<!-- 上下午选择 -->
<picker
mode="selector"
:range="['请选择','上午', '下午']"
:value="formData.leaveEndInterval"
@change="onEndAmPmChange"
:disabled="isFormDisabled"
>
<view class="picker-value">{{ ['请选择','上午', '下午'][formData.leaveEndInterval] }}</view>
</picker>
</view>
<view class="form-item">
<text class="label required">外出时长</text>
<input type="number" v-model="formData.leaveDuration" disabled />
@ -265,7 +294,9 @@
userName: '',
leaveType: null,
leaveStartDate: '',
leaveStartInterval:'',
leaveEndDate: '',
leaveEndInterval:'',
leaveDuration: '',
location: '',
isAgree: '1',
@ -292,6 +323,7 @@
hostUserNames: '', //
isCheckboxGroupVisibles: false,
isEdit: false, //
daysNumber: "", //
}
},
mounted() {
@ -353,11 +385,29 @@
this.formData.leaveStartDate = startDate
this.validateAndCalculateDuration(startDate, this.formData.leaveEndDate)
},
onStartAmPmChange(e) {
if(e.detail.value ==0){
return;
}
console.log("开始",e.detail.value)
this.formData.leaveStartInterval = e.detail.value;
this.handleDateChanges()
},
onEndDateChange(e) {
const endDate = e.detail.value
this.formData.leaveEndDate = endDate
this.validateAndCalculateDuration(this.formData.leaveStartDate, endDate)
},
onEndAmPmChange(e) {
if(e.detail.value ==0){
return;
}
console.log("结束",e.detail.value)
this.formData.leaveEndInterval = e.detail.value;
this.handleDateChanges()
},
validateAndCalculateDuration(startDate, endDate) {
//
this.errors.leaveStartDate = ''
@ -390,13 +440,48 @@
getDays(dateData).then((response) => {
if (response.status === 200) {
console.log(response)
this.formData.leaveDuration = response.data
// this.formData.leaveDuration = response.data
this.daysNumber = response.data
this.handleDateChanges()
} else {
this.formData.leaveDuration = ''
}
})
}
},
handleDateChanges() {
if (this.formData.leaveStartDate && this.formData.leaveEndDate && this.formData.leaveStartInterval && this.formData.leaveEndInterval ) {
//
const startDate = new Date(this.formData.leaveStartDate);
const endDate = new Date(this.formData.leaveEndDate);
if (startDate > endDate ||
(startDate.getTime() === endDate.getTime() &&
this.formData.leaveStartInterval > this.formData.leaveEndInterval)) {
this.errors.leaveStartDate = '开始时间应该早于结束时间'
this.formData.leaveStartDate = ''
this.formData.leaveEndDate = ''
this.formData.leaveStartInterval = ''
this.formData.leaveEndInterval = ''
return
//
return;
}
if (startDate.getTime() === endDate.getTime()) { //
if (this.formData.leaveStartInterval == 1 && this.formData.leaveEndInterval == 2) {
this.formData.leaveDuration = 1; // 1
} else {
this.formData.leaveDuration = 0.5; // //
}
} else { //
let totalDays = this.daysNumber;
if (this.formData.leaveStartInterval == 1) totalDays -= 0.5; //
if (this.formData.leaveEndInterval == 1) totalDays -= 0.5; //
this.formData.leaveDuration = totalDays;
}
}
},
onApprovalChange(e) {
this.formData.isApproved = e.detail.value
},
@ -541,6 +626,8 @@
leaveDuration,
leaveEndDate,
leaveStartDate,
leaveStartInterval,
leaveEndInterval,
leaveType,
location,
remark,
@ -560,6 +647,8 @@
leaveDuration,
leaveEndDate,
leaveStartDate,
leaveStartInterval,
leaveEndInterval,
leaveType,
location,
remark,