|
|
|
@ -474,32 +474,86 @@ const channelOptions = ref([ |
|
|
|
|
|
|
|
|
|
|
|
// 预览图片函数 |
|
|
|
// const previewImage = (imageUrl) => { |
|
|
|
// // 使用 element-plus 的 el-image 组件实现图片预览功能 |
|
|
|
// const imageElement = document.createElement('img'); |
|
|
|
// imageElement.src = imageUrl; |
|
|
|
// imageElement.style.maxWidth = '80vw'; |
|
|
|
// imageElement.style.maxHeight = '80vh'; |
|
|
|
|
|
|
|
// const viewer = document.createElement('div'); |
|
|
|
// viewer.style.position = 'fixed'; |
|
|
|
// viewer.style.top = '0'; |
|
|
|
// viewer.style.left = '0'; |
|
|
|
// viewer.style.width = '100vw'; |
|
|
|
// viewer.style.height = '100vh'; |
|
|
|
// viewer.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; |
|
|
|
// viewer.style.display = 'flex'; |
|
|
|
// viewer.style.justifyContent = 'center'; |
|
|
|
// viewer.style.alignItems = 'center'; |
|
|
|
// viewer.style.zIndex = '9999'; |
|
|
|
// viewer.style.overflow = 'auto'; |
|
|
|
|
|
|
|
// viewer.appendChild(imageElement); |
|
|
|
// document.body.appendChild(viewer); |
|
|
|
|
|
|
|
// viewer.addEventListener('click', () => { |
|
|
|
// document.body.removeChild(viewer); |
|
|
|
// }); |
|
|
|
// }; |
|
|
|
const previewImage = (imageUrl) => { |
|
|
|
// 使用 element-plus 的 el-image 组件实现图片预览功能 |
|
|
|
const imageElement = document.createElement('img'); |
|
|
|
imageElement.src = imageUrl; |
|
|
|
imageElement.style.maxWidth = '80vw'; |
|
|
|
imageElement.style.maxHeight = '80vh'; |
|
|
|
|
|
|
|
const viewer = document.createElement('div'); |
|
|
|
viewer.style.position = 'fixed'; |
|
|
|
viewer.style.top = '0'; |
|
|
|
viewer.style.left = '0'; |
|
|
|
viewer.style.width = '100vw'; |
|
|
|
viewer.style.height = '100vh'; |
|
|
|
viewer.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; |
|
|
|
viewer.style.display = 'flex'; |
|
|
|
viewer.style.justifyContent = 'center'; |
|
|
|
viewer.style.alignItems = 'center'; |
|
|
|
viewer.style.zIndex = '9999'; |
|
|
|
viewer.style.overflow = 'auto'; |
|
|
|
|
|
|
|
viewer.appendChild(imageElement); |
|
|
|
document.body.appendChild(viewer); |
|
|
|
|
|
|
|
viewer.addEventListener('click', () => { |
|
|
|
document.body.removeChild(viewer); |
|
|
|
}); |
|
|
|
if (!imageUrl) return; |
|
|
|
|
|
|
|
const imageElement = document.createElement('img'); |
|
|
|
imageElement.src = imageUrl; |
|
|
|
imageElement.style.maxWidth = '90vw'; |
|
|
|
imageElement.style.maxHeight = '90vh'; |
|
|
|
imageElement.style.display = 'block'; |
|
|
|
|
|
|
|
imageElement.style.transition = 'transform 0.2s ease-out'; |
|
|
|
imageElement.style.cursor = 'zoom-in'; |
|
|
|
imageElement.style.transformOrigin = 'center center'; // 缩放中心点 |
|
|
|
|
|
|
|
const viewer = document.createElement('div'); |
|
|
|
viewer.style.position = 'fixed'; |
|
|
|
viewer.style.top = '0'; |
|
|
|
viewer.style.left = '0'; |
|
|
|
viewer.style.width = '100vw'; |
|
|
|
viewer.style.height = '100vh'; |
|
|
|
viewer.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; |
|
|
|
|
|
|
|
viewer.style.display = 'flex'; |
|
|
|
viewer.style.justifyContent = 'center'; |
|
|
|
viewer.style.alignItems = 'center'; |
|
|
|
|
|
|
|
viewer.style.overflow = 'hidden'; |
|
|
|
|
|
|
|
viewer.style.zIndex = '999999'; |
|
|
|
viewer.appendChild(imageElement); |
|
|
|
|
|
|
|
let currentScale = 1; |
|
|
|
const scaleStep = 0.2; |
|
|
|
const handleWheel = (e) => { |
|
|
|
e.preventDefault(); |
|
|
|
if (e.deltaY > 0) { |
|
|
|
currentScale -= scaleStep; |
|
|
|
} else { |
|
|
|
currentScale += scaleStep; |
|
|
|
} |
|
|
|
if (currentScale < 0.5) currentScale = 0.5; |
|
|
|
imageElement.style.transform = `scale(${currentScale})`; |
|
|
|
imageElement.style.cursor = currentScale > 1 ? 'zoom-out' : 'zoom-in'; |
|
|
|
}; |
|
|
|
|
|
|
|
viewer.addEventListener('wheel', handleWheel, { passive: false }); |
|
|
|
viewer.addEventListener('click', (e) => { |
|
|
|
if (e.target === viewer) { |
|
|
|
document.body.removeChild(viewer); |
|
|
|
viewer.removeEventListener('wheel', handleWheel); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
document.body.appendChild(viewer); |
|
|
|
}; |
|
|
|
|
|
|
|
const handleImageChange = (file) => { |
|
|
|
|