单击打开聊天记录消息

This commit is contained in:
2026-07-28 20:08:38 +08:00
parent 624968bede
commit 406dafd64f
2 changed files with 26 additions and 13 deletions

View File

@@ -102,7 +102,7 @@
</div> </div>
<!-- 弹窗 --> <!-- 弹窗 -->
<div id="create-modal" class="modal-overlay hidden"> <div id="create-modal" class="modal-overlay hidden" onclick="if(event.target===this)closeCreateModal()">
<div class="modal"> <div class="modal">
<button class="modal-close-btn" onclick="closeCreateModal()"> <button class="modal-close-btn" onclick="closeCreateModal()">
<svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
@@ -114,7 +114,7 @@
</div> </div>
</div> </div>
<div id="manage-modal" class="modal-overlay hidden"> <div id="manage-modal" class="modal-overlay hidden" onclick="if(event.target===this)closeManageModal()">
<div class="modal"> <div class="modal">
<button class="modal-close-btn" onclick="closeManageModal()"> <button class="modal-close-btn" onclick="closeManageModal()">
<svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
@@ -128,7 +128,7 @@
</div> </div>
<!-- 采购汇总弹窗 --> <!-- 采购汇总弹窗 -->
<div id="summary-modal" class="modal-overlay hidden"> <div id="summary-modal" class="modal-overlay hidden" onclick="if(event.target===this)closeSummaryModal()">
<div class="modal"> <div class="modal">
<button class="modal-close-btn" onclick="closeSummaryModal()"> <button class="modal-close-btn" onclick="closeSummaryModal()">
<svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
@@ -139,7 +139,7 @@
</div> </div>
<!-- 采购详情编辑弹窗 --> <!-- 采购详情编辑弹窗 -->
<div id="detail-modal" class="modal-overlay hidden"> <div id="detail-modal" class="modal-overlay hidden" onclick="if(event.target===this)closeDetailModal()">
<div class="modal detail-modal"> <div class="modal detail-modal">
<div class="detail-header"> <div class="detail-header">
<input type="text" id="edit-item" class="detail-title-input" placeholder="物品名称"> <input type="text" id="edit-item" class="detail-title-input" placeholder="物品名称">

View File

@@ -88,23 +88,23 @@ function replaceMessage(msgId, newMsg) {
function scrollToBottom() { messagesContainer.scrollTop = messagesContainer.scrollHeight; } function scrollToBottom() { messagesContainer.scrollTop = messagesContainer.scrollHeight; }
// 图片/气泡 // 图片/气泡
function bindMessageEvents() { function bindMessageEvents() {
document.querySelectorAll('.msg-img').forEach(img => { document.querySelectorAll('.msg-img').forEach(img => {
img.removeEventListener('dblclick', onImageDblClick); img.removeEventListener('click', onImageClick);
img.addEventListener('dblclick', onImageDblClick); img.addEventListener('click', onImageClick);
}); });
document.querySelectorAll('.msg-bubble').forEach(bubble => { document.querySelectorAll('.msg-bubble').forEach(bubble => {
bubble.removeEventListener('dblclick', onBubbleDblClick); bubble.removeEventListener('click', onBubbleClick);
bubble.addEventListener('dblclick', onBubbleDblClick); bubble.addEventListener('click', onBubbleClick);
}); });
} }
function onImageDblClick(e) { function onImageClick(e) {
e.stopPropagation(); e.stopPropagation();
const overlay = document.createElement('div'); const overlay = document.createElement('div');
overlay.className = 'fullscreen-overlay'; overlay.className = 'fullscreen-overlay';
overlay.innerHTML = `<img src="${e.target.src}" alt="">`; overlay.innerHTML = '<img src="' + e.target.src + '" alt="">';
overlay.addEventListener('click', () => overlay.remove()); overlay.addEventListener('click', () => overlay.remove());
document.body.appendChild(overlay); document.body.appendChild(overlay);
} }
@@ -112,12 +112,25 @@ function onImageDblClick(e) {
function onImgThumbDblClick(img) { function onImgThumbDblClick(img) {
const overlay = document.createElement('div'); const overlay = document.createElement('div');
overlay.className = 'fullscreen-overlay'; overlay.className = 'fullscreen-overlay';
overlay.innerHTML = `<img src="${img.src}" style="max-width:100%;max-height:100%;object-fit:contain" alt="">`; overlay.innerHTML = '<img src="' + img.src + '" style="max-width:100%;max-height:100%;object-fit:contain" alt="" id="fs-img">';
overlay.addEventListener('click', () => overlay.remove()); overlay.addEventListener('click', () => overlay.remove());
document.body.appendChild(overlay); document.body.appendChild(overlay);
var fsImg = overlay.querySelector('#fs-img');
var pressTimer;
fsImg.addEventListener('touchstart', function() {
pressTimer = setTimeout(function() {
var a = document.createElement('a');
a.href = fsImg.src;
a.download = fsImg.src.split('/').pop().split('?')[0] || 'image.jpg';
a.click();
clearTimeout(pressTimer);
}, 800);
});
fsImg.addEventListener('touchend', function() { clearTimeout(pressTimer); });
fsImg.addEventListener('touchmove', function() { clearTimeout(pressTimer); });
} }
function onBubbleDblClick(e) { function onBubbleClick(e) {
e.stopPropagation(); e.stopPropagation();
const bubble = e.currentTarget; const bubble = e.currentTarget;
const clone = bubble.cloneNode(true); const clone = bubble.cloneNode(true);