미리듣기 시간설정 기능 추가 #3

Merged
klaus merged 3 commits from test into main 2023-10-04 15:43:23 +00:00
1 changed files with 77 additions and 1 deletions

View File

@ -378,6 +378,33 @@
label="가격"
required
/>
유료 콘텐츠 가격을 입력하면 해당 콘텐츠의 미리듣기 시간을 설정할 있습니다.<br>미리듣기 시간은 최소 30 이상 설정해야 합니다.
</v-col>
</v-row>
</v-card-text>
<v-card-text v-show="audio_content.price > 0">
<v-row align="center">
<v-col cols="4">
미리듣기 시간설정
</v-col>
<v-col cols="8">
<v-row align="center">
<v-col cols="5">
<v-text-field
v-model="audio_content.preview_start_time"
label="시작시간(00:00:00)"
/>
</v-col>
<v-col cols="2">
~
</v-col>
<v-col cols="5">
<v-text-field
v-model="audio_content.preview_end_time"
label="종료시간(00:00:30)"
/>
</v-col>
</v-row>
</v-col>
</v-row>
</v-card-text>
@ -606,6 +633,12 @@ export default {
}
},
isValidTimeFormat(time) {
// "HH:mm:ss"
const regex = /^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;
return regex.test(time);
},
async save() {
if (
this.audio_content.title === null ||
@ -647,7 +680,50 @@ export default {
price: this.audio_content.price,
themeId: this.audio_content.theme_id,
isAdult: this.audio_content.is_adult,
isCommentAvailable: this.audio_content.is_comment_available,
isCommentAvailable: this.audio_content.is_comment_available
}
let previewStartTime = this.audio_content.preview_start_time;
let previewEndTime = this.audio_content.preview_end_time;
if (
previewStartTime !== undefined &&
previewStartTime !== null &&
previewStartTime.trim() !== '' &&
previewEndTime !== undefined &&
previewEndTime !== null &&
previewEndTime.trim() !== ''
) {
if (
!this.isValidTimeFormat(previewStartTime) ||
!this.isValidTimeFormat(previewEndTime)
) {
this.notifyError("미리 듣기 시간 형식은 00:30:00 과 같아야 합니다")
return
}
// .
const [h1, m1, s1] = previewStartTime.split(':').map(Number);
const [h2, m2, s2] = previewEndTime.split(':').map(Number);
const totalSeconds1 = h1 * 3600 + m1 * 60 + s1;
const totalSeconds2 = h2 * 3600 + m2 * 60 + s2;
const timeDifference = totalSeconds2 - totalSeconds1;
if (timeDifference < 30) {
this.notifyError("미리 듣기의 최소 시간은 30초 입니다.")
return
}
request["previewStartTime"] = previewStartTime
request["previewEndTime"] = previewEndTime
} else {
if (
(previewStartTime !== undefined && previewStartTime.trim() !== '') ||
(previewEndTime !== undefined && previewEndTime.trim() !== '')
) {
this.notifyError("미리 듣기 시작 시간과 종료 시간 둘 다 입력을 하거나 둘 다 입력 하지 않아야 합니다.")
return
}
}
formData.append("coverImage", this.audio_content.cover_image)