Files
SMANAGE/backup/www/IntegrityReport.html
T

319 lines
24 KiB
HTML

<div class="bg-gray-50 font-sans text-gray-800 min-h-screen flex flex-col">
<main class="flex-grow pt-24 pb-16 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full">
<div id="terms-section" class="mb-8 bg-white rounded-lg card-shadow p-6 file-corner slide-up">
<h2 class="text-xl font-semibold mb-4 text-gray-800">举报条款与声明</h2>
<div class="mb-6 h-64 overflow-y-auto border border-gray-200 rounded-md p-4 bg-gray-50 text-sm text-gray-700">
<p class="mb-3">1. 举报人应当如实提供被举报人的有关情况和举报材料,不得捏造、歪曲事实,不得诬告、陷害他人。</p>
<p class="mb-3">2. 对于实名举报,我们将对举报人信息严格保密;对于匿名举报,我们将按照规定程序处理,但可能无法反馈处理结果。</p>
<p class="mb-3">3. 故意捏造事实、诬告陷害他人的,依法承担相应责任。</p>
<p class="mb-3">4. 举报内容应当客观真实,对所提供材料内容的真实性负责,不得提供虚假信息。</p>
<p class="mb-3">5. 本平台将依法保护举报人的合法权益,对打击报复举报人的行为将依法处理。</p>
<p class="mb-3">6. 举报事项应当属于本平台受理范围,对于不属于受理范围的举报,将按规定转相关部门处理或告知举报人。</p>
<p>7. 请您认真阅读并理解以上条款,点击"我同意以上条目"即表示您已阅读并同意遵守上述规定。</p>
</div>
<div class="flex items-center">
<input type="checkbox" id="agree-terms" class="h-4 w-4 text-primary border-gray-300 rounded focus:ring-primary">
<label for="agree-terms" class="ml-2 block text-sm text-gray-700">我同意以上条目</label>
</div>
<div id="countdown" class="mt-4 text-sm text-gray-500 hidden"> 请等待 <span id="countdown-timer" class="font-medium">10</span> 秒后开始填写举报信息 </div>
<button id="start-button" class="mt-6 bg-primary hover:bg-primary/90 text-white px-6 py-2 rounded-md font-medium transition-colors opacity-50 cursor-not-allowed disabled:opacity-50 disabled:cursor-not-allowed" disabled> 开始举报 </button>
</div>
<div id="report-form" class="hidden space-y-8">
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in">
<h3 class="text-lg font-semibold mb-4 text-gray-800">举报方式</h3>
<div class="flex space-x-6">
<label class="inline-flex items-center">
<input type="radio" name="report-type" value="anonymous" class="text-primary focus:ring-primary h-4 w-4" checked>
<span class="ml-2 text-gray-700">匿名举报</span>
</label>
<label class="inline-flex items-center">
<input type="radio" name="report-type" value="realname" class="text-primary focus:ring-primary h-4 w-4">
<span class="ml-2 text-gray-700">实名举报</span>
</label>
</div>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.1s">
<label for="report-title" class="block text-sm font-medium text-gray-700 mb-2">举报标题</label>
<input type="text" id="report-title" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请简要描述举报内容">
<p class="mt-1 text-xs text-gray-500">请简明扼要地描述举报的核心内容</p>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.2s">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold text-gray-800">被举报人信息</h3>
<button id="add-person" class="text-primary hover:text-primary/80 text-sm font-medium flex items-center transition-colors">
<i class="fa fa-plus-circle mr-1"></i> 添加被举报人 </button>
</div>
<div id="persons-container">
<div class="person-card border border-gray-200 rounded-md p-4 mb-4 relative">
<button class="remove-person absolute top-2 right-2 text-gray-400 hover:text-red-500 transition-colors">
<i class="fa fa-times"></i>
</button>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">被举报人</label>
<input type="text" class="person-name w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请输入被举报人名/昵称">
</div>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">被举报人ID(选填)</label>
<input type="text" class="person-id w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请输入被举报人ID(如有)">
</div>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">联系方式(选填,空格分隔)</label>
<input type="text" class="person-contacts w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="微信号 QQ号 X账号 Discord 姓名 性别 身份证 邮箱">
<p class="mt-1 text-xs text-gray-500">支持填写多种联系方式,用空格分隔</p>
</div>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">地址(选填,空格分隔)</label>
<input type="text" class="person-address w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="省 市 区 详细地址">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">个人网站(选填)</label>
<input type="text" class="person-website w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="如个人博客、社交媒体主页等">
</div>
</div>
</div>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.3s">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold text-gray-800">涉事部门(可多选)</h3>
<button id="add-department" class="text-primary hover:text-primary/80 text-sm font-medium flex items-center transition-colors"><i class="fa fa-plus-circle mr-1"></i> 添加部门 </button>
</div>
<div id="departments-container" class="flex flex-wrap gap-2">
<div class="department-card bg-neutral rounded-md px-3 py-2 flex items-center scale-in">
<select class="department-select bg-transparent border-none focus:ring-0 text-sm">
<option value="">请选择部门</option>
<option value="engineering">工程部</option>
<option value="design">美工部</option>
<option value="operation">运营部</option>
<option value="testing">测试部</option>
<option value="administration">行政部</option>
<option value="hr">人事部</option>
<option value="finance">财务部</option>
<option value="marketing">营销部</option>
</select>
<button class="remove-department ml-2 text-gray-400 hover:text-red-500 transition-colors">
<i class="fa fa-times-circle"></i>
</button>
</div>
</div>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.4s">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold text-gray-800">参与组织(可多选)</h3>
<button id="add-organization" class="text-primary hover:text-primary/80 text-sm font-medium flex items-center transition-colors"><i class="fa fa-plus-circle mr-1"></i> 添加组织 </button>
</div>
<div id="organizations-container">
<div class="organization-card border border-gray-200 rounded-md p-4 mb-4 relative scale-in">
<button class="remove-organization absolute top-2 right-2 text-gray-400 hover:text-red-500 transition-colors"><i class="fa fa-times"></i></button>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">商家名称</label>
<input type="text" class="org-name w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请输入参与组织/商家名称">
</div>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">商家ICP(选填)</label>
<input type="text" class="org-icp w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请输入ICP备案号">
</div>
<div class="mb-3">
<label class="block text-sm font-medium text-gray-700 mb-1">商家联系方式(选填)</label>
<input type="text" class="org-contact w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请输入联系方式">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">其它备注(选填)</label>
<textarea class="org-notes w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" rows="2" placeholder="请输入其他相关信息"></textarea>
</div>
</div>
</div>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.5s">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold text-gray-800">举报类型(可多选)</h3>
<button id="add-report-type" class="text-primary hover:text-primary/80 text-sm font-medium flex items-center transition-colors"><i class="fa fa-plus-circle mr-1"></i> 添加类型 </button>
</div>
<div id="report-types-container" class="flex flex-wrap gap-2">
<div class="report-type-card bg-neutral rounded-md px-3 py-2 flex items-center scale-in">
<select class="type-select bg-transparent border-none focus:ring-0 text-sm">
<option value="">请选择举报类型</option>
<option value="bribery">收受贿赂</option>
<option value="bullying">员工霸凌</option>
<option value="verbal-abuse">言语咒骂</option>
<option value="crisis-neglect">危机未处理</option>
<option value="theft">窃取机密</option>
<option value="espionage">间谍</option>
<option value="political-affiliation">私通党派</option>
<option value="indecent-content">公开场合不雅图片、视频</option>
</select>
<button class="remove-type ml-2 text-gray-400 hover:text-red-500 transition-colors"><i class="fa fa-times-circle"></i></button>
</div>
</div>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.6s">
<label for="report-content" class="block text-sm font-medium text-gray-700 mb-2">举报内容</label>
<textarea id="report-content" rows="8" class="w-full px-4 py-3 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请详细描述举报事实,包括时间、地点、人物、事件经过等信息,尽可能提供相关证据线索..."></textarea>
<p class="mt-1 text-xs text-gray-500">请客观、准确、详细地描述事件经过,这将有助于我们进行调查核实</p>
</div>
<div class="bg-white rounded-lg card-shadow p-6 file-corner scale-in" style="animation-delay: 0.7s">
<label for="contact-email" class="block text-sm font-medium text-gray-700 mb-2">您的邮箱(用于消息处理和反馈)</label>
<input type="email" id="contact-email" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors" placeholder="请输入您的邮箱地址">
<p class="mt-1 text-xs text-gray-500">我们将通过此邮箱向您反馈举报处理进度和结果(匿名举报也建议填写)</p>
</div>
<div class="flex justify-center scale-in" style="animation-delay: 0.8s">
<button id="submit-report" class="bg-primary hover:bg-primary/90 text-white px-8 py-3 rounded-md font-medium transition-colors shadow-md hover:shadow-lg"> 提交举报 </button>
</div>
</div>
</main>
<div id="warning-modal" class="fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center hidden">
<div class="bg-white rounded-lg p-6 max-w-md w-full mx-4 scale-in">
<div class="flex items-start mb-4">
<div class="flex-shrink-0"><i class="fa fa-exclamation-triangle text-yellow-500 text-xl"></i></div>
<div class="ml-3">
<h3 class="text-lg font-medium text-gray-900">提交前提示</h3>
<div class="mt-2 text-sm text-gray-600">
<p>请确认您所提供的举报信息真实、准确、完整。</p>
<p class="mt-1">故意捏造事实、诬告陷害他人的,将承担相应法律责任。</p>
</div>
</div>
</div>
<div class="mt-6 flex justify-end space-x-3">
<button id="cancel-submit" class="px-4 py-2 border border-gray-300 rounded-md text-sm font-medium text-gray-700 hover:bg-gray-50 transition-colors"> 取消 </button>
<button id="confirm-submit" class="px-4 py-2 bg-primary border border-transparent rounded-md text-sm font-medium text-white hover:bg-primary/90 transition-colors"> 确认提交 </button>
</div>
</div>
</div>
</div>
<script>
const agreeTermsCheckbox = document.getElementById('agree-terms');
const countdownEl = document.getElementById('countdown');
const countdownTimer = document.getElementById('countdown-timer');
const startButton = document.getElementById('start-button');
const termsSection = document.getElementById('terms-section');
const reportForm = document.getElementById('report-form');
let countdownSeconds = 10;
let countdownInterval;
agreeTermsCheckbox.addEventListener('change', function() {
if (this.checked) {
countdownEl.classList.remove('hidden');
startButton.disabled = true;
startButton.classList.add('opacity-50', 'cursor-not-allowed');
countdownSeconds = 10;
countdownTimer.textContent = countdownSeconds;
if (countdownInterval) clearInterval(countdownInterval);
countdownInterval = setInterval(() => {
countdownSeconds--;
countdownTimer.textContent = countdownSeconds;
if (countdownSeconds <= 0) {
clearInterval(countdownInterval);
startButton.disabled = false;
startButton.classList.remove('opacity-50', 'cursor-not-allowed');
countdownEl.textContent = '可以开始填写举报信息了'
}
}, 1000)
} else {
clearInterval(countdownInterval);
countdownEl.classList.add('hidden');
startButton.disabled = true;
startButton.classList.add('opacity-50', 'cursor-not-allowed')
}
});
startButton.addEventListener('click', function() {
termsSection.classList.add('hidden');
reportForm.classList.remove('hidden');
reportForm.scrollIntoView({
behavior: 'smooth'
})
});
const addPersonButton = document.getElementById('add-person');
const personsContainer = document.getElementById('persons-container');
addPersonButton.addEventListener('click', function() {
const newPersonCard = document.createElement('div');
newPersonCard.className = 'person-card border border-gray-200 rounded-md p-4 mb-4 relative scale-in';
newPersonCard.innerHTML = `<button class="remove-person absolute top-2 right-2 text-gray-400 hover:text-red-500 transition-colors"><i class="fa fa-times"></i></button><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">被举报人</label><input type="text"class="person-name w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="请输入被举报人名/昵称"></div><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">被举报人ID(选填)</label><input type="text"class="person-id w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="请输入被举报人ID(如有)"></div><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">联系方式(选填,空格分隔)</label><input type="text"class="person-contacts w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="微信号 QQ号 X账号 Discord 姓名 性别 身份证 邮箱"><p class="mt-1 text-xs text-gray-500">支持填写多种联系方式,用空格分隔</p></div><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">地址(选填,空格分隔)</label><input type="text"class="person-address w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="省 市 区 详细地址"></div><div><label class="block text-sm font-medium text-gray-700 mb-1">个人网站(选填)</label><input type="text"class="person-website w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="如个人博客、社交媒体主页等"></div>`;
personsContainer.appendChild(newPersonCard);
newPersonCard.querySelector('.remove-person').addEventListener('click', function() {
newPersonCard.remove()
})
});
document.querySelector('.remove-person').addEventListener('click', function() {
if (document.querySelectorAll('.person-card').length > 1) {
this.closest('.person-card').remove()
} else {
alert('至少需要填写一个被举报人信息')
}
});
const addDepartmentButton = document.getElementById('add-department');
const departmentsContainer = document.getElementById('departments-container');
addDepartmentButton.addEventListener('click', function() {
const newDepartmentCard = document.createElement('div');
newDepartmentCard.className = 'department-card bg-neutral rounded-md px-3 py-2 flex items-center scale-in';
newDepartmentCard.innerHTML = `<select class="department-select bg-transparent border-none focus:ring-0 text-sm"><option value="">请选择部门</option><option value="engineering">工程部</option><option value="design">美工部</option><option value="operation">运营部</option><option value="testing">测试部</option><option value="administration">行政部</option><option value="hr">人事部</option><option value="finance">财务部</option><option value="marketing">营销部</option></select><button class="remove-department ml-2 text-gray-400 hover:text-red-500 transition-colors"><i class="fa fa-times-circle"></i></button>`;
departmentsContainer.appendChild(newDepartmentCard);
newDepartmentCard.querySelector('.remove-department').addEventListener('click', function() {
newDepartmentCard.remove()
})
});
document.querySelector('.remove-department').addEventListener('click', function() {
this.closest('.department-card').remove()
});
const addOrganizationButton = document.getElementById('add-organization');
const organizationsContainer = document.getElementById('organizations-container');
addOrganizationButton.addEventListener('click', function() {
const newOrganizationCard = document.createElement('div');
newOrganizationCard.className = 'organization-card border border-gray-200 rounded-md p-4 mb-4 relative scale-in';
newOrganizationCard.innerHTML = `<button class="remove-organization absolute top-2 right-2 text-gray-400 hover:text-red-500 transition-colors"><i class="fa fa-times"></i></button><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">商家名称</label><input type="text"class="org-name w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="请输入参与组织/商家名称"></div><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">商家ICP(选填)</label><input type="text"class="org-icp w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="请输入ICP备案号"></div><div class="mb-3"><label class="block text-sm font-medium text-gray-700 mb-1">商家联系方式(选填)</label><input type="text"class="org-contact w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"placeholder="请输入联系方式"></div><div><label class="block text-sm font-medium text-gray-700 mb-1">其它备注(选填)</label><textarea class="org-notes w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-primary focus:border-primary transition-colors"rows="2"placeholder="请输入其他相关信息"></textarea></div>`;
organizationsContainer.appendChild(newOrganizationCard);
newOrganizationCard.querySelector('.remove-organization').addEventListener('click', function() {
newOrganizationCard.remove()
})
});
document.querySelector('.remove-organization').addEventListener('click', function() {
this.closest('.organization-card').remove()
});
const addReportTypeButton = document.getElementById('add-report-type');
const reportTypesContainer = document.getElementById('report-types-container');
addReportTypeButton.addEventListener('click', function() {
const newReportTypeCard = document.createElement('div');
newReportTypeCard.className = 'report-type-card bg-neutral rounded-md px-3 py-2 flex items-center scale-in';
newReportTypeCard.innerHTML = `<select class="type-select bg-transparent border-none focus:ring-0 text-sm"><option value="">请选择举报类型</option><option value="bribery">收受贿赂</option><option value="bullying">员工霸凌</option><option value="verbal-abuse">言语咒骂</option><option value="crisis-neglect">危机未处理</option><option value="theft">窃取机密</option><option value="espionage">间谍</option><option value="political-affiliation">私通党派</option><option value="indecent-content">公开场合不雅图片、视频</option></select><button class="remove-type ml-2 text-gray-400 hover:text-red-500 transition-colors"><i class="fa fa-times-circle"></i></button>`;
reportTypesContainer.appendChild(newReportTypeCard);
newReportTypeCard.querySelector('.remove-type').addEventListener('click', function() {
newReportTypeCard.remove()
})
});
document.querySelector('.remove-type').addEventListener('click', function() {
this.closest('.report-type-card').remove()
});
const submitReportButton = document.getElementById('submit-report');
const warningModal = document.getElementById('warning-modal');
const cancelSubmitButton = document.getElementById('cancel-submit');
const confirmSubmitButton = document.getElementById('confirm-submit');
submitReportButton.addEventListener('click', function() {
const reportTitle = document.getElementById('report-title').value.trim();
const reportContent = document.getElementById('report-content').value.trim();
const contactEmail = document.getElementById('contact-email').value.trim();
const reportTypes = Array.from(document.querySelectorAll('.type-select')).filter(sel => sel.value !== '');
if (!reportTitle) {
alert('请填写举报标题');
return
}
if (!reportContent) {
alert('请填写举报内容');
return
}
if (!contactEmail) {
alert('请填写您的邮箱地址,以便我们反馈处理结果');
return
}
if (reportTypes.length === 0) {
alert('请至少选择一种举报类型');
return
}
warningModal.classList.remove('hidden')
});
cancelSubmitButton.addEventListener('click', function() {
warningModal.classList.add('hidden')
});
confirmSubmitButton.addEventListener('click', function() {
warningModal.classList.add('hidden');
setTimeout(() => {
alert('举报提交成功!我们将尽快处理您的举报,并通过您提供的邮箱反馈处理结果。感谢您的监督!')
}, 500)
});
</script>