fix: 修复音乐编辑时长丢失及日期格式问题
This commit is contained in:
@@ -12,6 +12,7 @@ import java.time.format.DateTimeFormatter;
|
||||
@JsonComponent
|
||||
public class JacksonConfig {
|
||||
|
||||
// 全局默认使用短格式(仅日期),避免影响管理后台等只需日期的场景
|
||||
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
|
||||
public static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
||||
|
||||
@@ -74,6 +74,7 @@ public class SingerDTO {
|
||||
* 收藏时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime collectTime;
|
||||
|
||||
/**
|
||||
|
||||
@@ -410,7 +410,10 @@ public class MusicServiceImpl implements MusicService {
|
||||
// 更新音乐信息
|
||||
music.setName(musicDTO.getName());
|
||||
music.setAlbum(musicDTO.getAlbum());
|
||||
music.setDuration(musicDTO.getDuration());
|
||||
// 仅当 DTO 中有值时才覆盖时长,避免编辑时被清空
|
||||
if (musicDTO.getDuration() != null) {
|
||||
music.setDuration(musicDTO.getDuration());
|
||||
}
|
||||
|
||||
// 更新音乐类型
|
||||
if (musicDTO.getTypeIds() != null) {
|
||||
|
||||
@@ -270,7 +270,8 @@ const submitForm = async () => {
|
||||
singer: form.value.singer,
|
||||
album: form.value.album,
|
||||
typeIds: form.value.types,
|
||||
lyric: form.value.lyric
|
||||
lyric: form.value.lyric,
|
||||
duration: form.value.duration
|
||||
},
|
||||
form.value.file,
|
||||
form.value.cover
|
||||
|
||||
@@ -13,6 +13,20 @@ const collectMusicList = ref([])
|
||||
// 加载状态
|
||||
const loading = ref(false)
|
||||
|
||||
// 格式化日期时间,兼容后端返回的多种格式(ISO、yyyy-MM-dd HH:mm:ss、yyyy-MM-dd)
|
||||
const formatDate = (dateStr) => {
|
||||
if (!dateStr) return ''
|
||||
const date = new Date(dateStr)
|
||||
// 检查是否为有效日期
|
||||
if (isNaN(date.getTime())) return dateStr
|
||||
return date.getFullYear() + '-' +
|
||||
String(date.getMonth() + 1).padStart(2, '0') + '-' +
|
||||
String(date.getDate()).padStart(2, '0') + ' ' +
|
||||
String(date.getHours()).padStart(2, '0') + ':' +
|
||||
String(date.getMinutes()).padStart(2, '0') + ':' +
|
||||
String(date.getSeconds()).padStart(2, '0')
|
||||
}
|
||||
|
||||
// 获取收藏的音乐列表
|
||||
const fetchCollectMusic = async () => {
|
||||
loading.value = true
|
||||
@@ -31,7 +45,7 @@ const fetchCollectMusic = async () => {
|
||||
duration: item.duration || 0,
|
||||
cover: processImageUrl(item.cover),
|
||||
url: item.url,
|
||||
collectTime: item.collectTime ? new Date(item.collectTime).toLocaleDateString() : '未知'
|
||||
collectTime: item.collectTime ? formatDate(item.collectTime) : '未知'
|
||||
}))
|
||||
} else {
|
||||
ElMessage.error(res.message || '获取收藏的音乐列表失败')
|
||||
|
||||
Reference in New Issue
Block a user