You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

208 lines
5.9 KiB

7 months ago
<!-- @format -->
<template>
<span style="color: #37abc4; cursor: pointer" class="config-input" @click="editTime()">
{{ timeValue.expectedValue || '-' }}
</span>
<a-modal
v-model:visible="visibleTime"
title="选择"
@ok="changeDate"
:mask="false"
style="top: 150px">
<div class="modal-time-picker">
<a-time-picker
format="HH:mm"
v-model:value="startTimeValue"
valueFormat="HH:mm"
:allowClear="false"
v-model:open="startOpen"
@change="_onChange"
:disabledHours="startDisabledHours"
:disabledMinutes="startDisabledMinutes" />~
<a-time-picker
format="HH:mm"
valueFormat="HH:mm"
v-model:value="endTimeValue"
:allowClear="false"
v-model:open="endOpen"
@change="_onChange"
:disabledHours="endDisabledHours"
:disabledMinutes="endDisabledMinutes" />
</div>
</a-modal>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
import moment from 'moment';
export default defineComponent({
props: {
timeValue: {
type: Object,
},
index: {
type: Number,
},
listKey: {
type: String,
},
// text: {
// type: String,
// default: '',
// },
},
emits: ['changeDate', 'blur'],
setup(props, ctx) {
const startOpen = ref(false);
const endOpen = ref(false);
const time = props.timeValue.expectedValue.split('-');
let startTimeValue = ref(time[0]);
let startTimeValue1 = moment(time[0], 'HH:mm');
let endTimeValue = ref(time[1]);
let endTimeValue1 = moment(time[1], 'HH:mm');
const visibleTime = ref<boolean>(false);
let timeValue = ref('');
const editTime = () => {
visibleTime.value = true;
};
const changeDate = () => {
visibleTime.value = false;
let value = {
configValue: timeValue.value,
index: props.index,
key: props.listKey,
};
ctx.emit('changeDate', value);
// console.log(timeValue.value);
};
const handleClose = () => {
startOpen.value = false;
endOpen.value = false;
};
const _onChange = () => {
// console.log('change', startTimeValue.value, endTimeValue.value);
timeValue.value = startTimeValue.value + '-' + endTimeValue.value;
return;
let start: string = startTimeValue.value._d.toString();
let end: string = endTimeValue.value._d.toString();
let startTime = start.split(' ');
let endTime = end.split(' ');
startTimeValue.value = startTime[4].split(':')[0] + ':' + startTime[4].split(':')[1];
endTimeValue.value = endTime[4].split(':')[0] + ':' + endTime[4].split(':')[1];
timeValue.value = startTimeValue.value + '-' + endTimeValue.value;
};
const startDisabledHours = () => {
let disHours = [];
let starthours: Number;
if (endTimeValue.value == undefined) {
let time = endTimeValue.value.split(':');
starthours = time[0];
} else {
let time = endTimeValue.value;
starthours = time.split(':')[0];
}
for (let i = 24; i > starthours; i--) {
disHours.push(i);
}
return disHours;
};
const endDisabledHours = () => {
let disHours = [];
let endhours: Number;
if (startTimeValue.value == undefined) {
let time = startTimeValue.value.split(':');
endhours = time[0];
} else {
let time = startTimeValue.value;
endhours = time.split(':')[0];
}
for (let i = 0; i < endhours; i++) {
disHours.push(i);
}
return disHours;
};
const startDisabledMinutes = (selectedHour: any) => {
let time: Number[] = [];
let endhours: Number;
let endMinutes: Number;
let disminutes = [];
if (endTimeValue.value == undefined) {
time = startTimeValue.value.split(':');
endhours = time[0];
endMinutes = time[1];
if (selectedHour == endhours) {
for (var i = 59; i > endMinutes; i--) {
disminutes.push(i);
}
}
} else {
time = endTimeValue.value.split(':');
endhours = time[0];
endMinutes = time[1];
if (selectedHour == endhours) {
for (var i = 59; i > endMinutes; i--) {
disminutes.push(i);
}
}
}
return disminutes;
};
const endDisabledMinutes = (selectedHour: any) => {
let time: Number[] = [];
let endhours: Number;
let endMinutes: Number;
let disminutes = [];
if (startTimeValue.value == undefined) {
time = startTimeValue.value.split(':');
endhours = time[0];
endMinutes = time[1];
if (selectedHour == endhours) {
for (var i = 0; i < endMinutes; i++) {
disminutes.push(i);
}
}
} else {
time = startTimeValue.value.split(':');
endhours = time[0];
endMinutes = time[1];
if (selectedHour == endhours) {
for (var i = 0; i < endMinutes; i++) {
disminutes.push(i);
}
}
}
return disminutes;
};
return {
editTime,
time,
_onChange,
startDisabledHours,
endDisabledHours,
startDisabledMinutes,
endDisabledMinutes,
visibleTime,
endOpen,
startOpen,
startTimeValue,
endTimeValue,
startTimeValue1,
endTimeValue1,
changeDate,
handleClose,
};
},
});
</script>
<style scoped>
.modal-time-picker {
margin-left: 50px;
}
:deep(.ant-time-picker) {
width: 150px;
}
</style>