Files
Neo-ZQYY/docs/h5_ui/js/task-detail-notes.js

117 lines
4.0 KiB
JavaScript

/* task-detail 系列页面共享 — 备注弹窗 + Toast + 星星打分 */
/* ---- 星星打分交互 ---- */
function initNoteRatings() {
document.querySelectorAll('.note-rating-row').forEach(function (row) {
var stars = row.querySelectorAll('.nr-star');
var dragging = false;
function setScore(idx) {
row.dataset.score = idx + 1;
stars.forEach(function (s, i) {
s.classList.toggle('active', i <= idx);
});
}
/* 点击 */
stars.forEach(function (star, idx) {
star.addEventListener('click', function () { setScore(idx); });
});
/* 触摸拖动 */
row.addEventListener('touchstart', function (e) { dragging = true; handleTouch(e); }, { passive: false });
row.addEventListener('touchmove', function (e) { if (dragging) { e.preventDefault(); handleTouch(e); } }, { passive: false });
row.addEventListener('touchend', function () { dragging = false; });
function handleTouch(e) {
var touch = e.touches[0];
for (var i = 0; i < stars.length; i++) {
var rect = stars[i].getBoundingClientRect();
if (touch.clientX >= rect.left && touch.clientX < rect.right) {
setScore(i);
break;
}
}
}
/* 鼠标拖动 */
row.addEventListener('mousedown', function (e) { dragging = true; handleMouse(e); });
document.addEventListener('mousemove', function (e) { if (dragging) handleMouse(e); });
document.addEventListener('mouseup', function () { dragging = false; });
function handleMouse(e) {
for (var i = 0; i < stars.length; i++) {
var rect = stars[i].getBoundingClientRect();
if (e.clientX >= rect.left && e.clientX < rect.right) {
setScore(i);
break;
}
}
}
});
}
function resetNoteRatings() {
document.querySelectorAll('.note-rating-row').forEach(function (row) {
row.dataset.score = '0';
row.querySelectorAll('.nr-star').forEach(function (s) { s.classList.remove('active'); });
});
}
/* 页面加载后初始化 */
document.addEventListener('DOMContentLoaded', initNoteRatings);
/* ---- 弹窗控制 ---- */
function showNoteModal() {
document.getElementById('noteModal').classList.remove('hidden');
document.getElementById('noteModal').classList.add('flex');
document.getElementById('noteText').value = '';
resetNoteRatings();
/* 重置展开状态 */
var sec = document.getElementById('noteRatingSection');
var btn = document.getElementById('noteExpandBtn');
if (sec) sec.classList.add('hidden');
if (btn) btn.classList.remove('hidden');
}
function expandNoteRating() {
var sec = document.getElementById('noteRatingSection');
var btn = document.getElementById('noteExpandBtn');
if (sec) sec.classList.remove('hidden');
if (btn) btn.classList.add('hidden');
}
function hideNoteModal() {
document.getElementById('noteModal').classList.add('hidden');
document.getElementById('noteModal').classList.remove('flex');
}
function saveNote() {
var text = document.getElementById('noteText').value.trim();
if (!text) { showToast('请输入备注内容'); return; }
hideNoteModal();
showToast('备注已保存');
}
function confirmDeleteNote() {
document.getElementById('deleteNoteModal').classList.remove('hidden');
document.getElementById('deleteNoteModal').classList.add('flex');
}
function hideDeleteNoteModal() {
document.getElementById('deleteNoteModal').classList.add('hidden');
document.getElementById('deleteNoteModal').classList.remove('flex');
}
function deleteNote() {
hideDeleteNoteModal();
showToast('备注已删除');
}
function showToast(msg) {
var toast = document.getElementById('toast');
toast.textContent = msg;
toast.classList.remove('hidden');
setTimeout(function () { toast.classList.add('hidden'); }, 1500);
}