feat: 统一文件上传接口 + 模板图片展示 + 导航页 + 侧边栏调整
This commit is contained in:
10
web/dist/music1/index.html
vendored
10
web/dist/music1/index.html
vendored
@@ -1245,7 +1245,6 @@ function escapeHtml(str){
|
||||
|
||||
/* 根据歌曲标题哈希生成渐变封面 */
|
||||
function coverGradient(song){
|
||||
if(song && song.cover) return null; // 有真实封面URL时返回null
|
||||
const str = (song && (song.title||song.artist||'music'))+'';
|
||||
let hash = 0;
|
||||
for(let i=0;i<str.length;i++){
|
||||
@@ -1376,7 +1375,7 @@ function renderHotList(songs){
|
||||
<span class="play-icon">▶</span>
|
||||
</div>
|
||||
<div class="track-info">
|
||||
<div class="track-cover" style="background:${grad||'#333'}">${coverIcon(s)}</div>
|
||||
<div class="track-cover" style="background:${grad||'#333'}">${s.cover?`<img src="${escapeHtml(s.cover)}" alt="" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover" onerror="this.style.display='none'">`:''}${coverIcon(s)}</div>
|
||||
<div class="track-meta">
|
||||
<div class="track-title">${escapeHtml(s.title)}</div>
|
||||
<div class="track-artist">${escapeHtml(s.artist)}</div>
|
||||
@@ -1407,7 +1406,7 @@ function renderNewGrid(songs){
|
||||
return `
|
||||
<div class="new-card" data-id="${s.id}">
|
||||
<div class="cover-wrap">
|
||||
<div class="card-cover" style="background:${grad||'#333'}">${coverIcon(s)}</div>
|
||||
<div class="card-cover" style="background:${grad||'#333'}">${s.cover?`<img src="${escapeHtml(s.cover)}" alt="" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover" onerror="this.style.display='none'">`:''}${coverIcon(s)}</div>
|
||||
${s.is_new?'<span class="badge-new">NEW</span>':''}
|
||||
<div class="play-overlay">▶</div>
|
||||
</div>
|
||||
@@ -1450,7 +1449,7 @@ function renderLibrary(data){
|
||||
<span class="play-icon">▶</span>
|
||||
</div>
|
||||
<div class="track-info">
|
||||
<div class="track-cover" style="background:${grad||'#333'}">${coverIcon(s)}</div>
|
||||
<div class="track-cover" style="background:${grad||'#333'}">${s.cover?`<img src="${escapeHtml(s.cover)}" alt="" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover" onerror="this.style.display='none'">`:''}${coverIcon(s)}</div>
|
||||
<div class="track-meta">
|
||||
<div class="track-title">${escapeHtml(s.title)}</div>
|
||||
<div class="track-artist">${escapeHtml(s.artist)}</div>
|
||||
@@ -1683,7 +1682,7 @@ function playSong(song){
|
||||
const grad = coverGradient(song);
|
||||
const cover = document.getElementById('playerCover');
|
||||
cover.style.background = grad||'linear-gradient(135deg,#535353,#1a1a1a)';
|
||||
cover.innerHTML = coverIcon(song);
|
||||
cover.innerHTML = (song.cover?`<img src="${escapeHtml(song.cover)}" alt="" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover" onerror="this.style.display='none'">`:'') + coverIcon(song);
|
||||
document.getElementById('playerTitle').textContent = song.title;
|
||||
document.getElementById('playerArtist').textContent = song.artist;
|
||||
document.getElementById('totalTime').textContent = formatDuration(song.duration);
|
||||
@@ -1829,6 +1828,7 @@ async function openSongModal(song){
|
||||
document.getElementById('modalHeader').innerHTML = `
|
||||
<div class="modal-cover" style="background:${grad||'#333'}">
|
||||
<div class="cover-glow"></div>
|
||||
${detail.cover?`<img src="${escapeHtml(detail.cover)}" alt="" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover" onerror="this.style.display='none'">`:''}
|
||||
${coverIcon(detail)}
|
||||
</div>
|
||||
<div class="modal-header-info">
|
||||
|
||||
Reference in New Issue
Block a user