单击打开聊天记录消息
This commit is contained in:
@@ -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="物品名称">
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user