feat: 健康排查模块列表调整+详情页重构+跳转tab联动+新增活动管理+去侧栏图标
- archive-personal.html: 健康排查列改为应参加/已参加/未参加,>0红色 - archive-unit.html: 健康排查列改为活动次数/未参加人数,wrapLink添加tab参数 - archive-personal-detail.html: 健康排查tab改为活动列表+问卷详情弹窗 - archive-unit-health-checkup-detail.html: 重写为活动列表+未参加员工双Tab - 4个详情页: 根据URL tab参数自动切换对应tab面板 - 7个页面: 去除侧边栏菜单图标 - 新增: activity-manage/edit/detail/stat + survey-edit/manage Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
89f0744749
commit
c634c3295e
@@ -32,39 +32,64 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
.activity-info__value { color: #333; flex: 1; min-width: 0; }
|
||||
.activity-info__value.phone { color: #1890ff; cursor: pointer; text-decoration: underline; }
|
||||
.activity-info__divider { height: 1px; background: #f0f0f0; margin: 4px 0; }
|
||||
.activity-info__desc { font-size: 13px; color: #666; line-height: 1.7; }
|
||||
|
||||
/* 活动描述-展开收起 */
|
||||
.activity-info__desc-wrap { display: flex; flex-direction: column; gap: 6px; }
|
||||
.activity-info__desc { font-size: 13px; color: #666; line-height: 1.7; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
|
||||
.activity-info__desc.expanded { -webkit-line-clamp: unset; display: block; }
|
||||
.btn-toggle { font-size: 12px; color: #667eea; cursor: pointer; flex-shrink: 0; display: flex; align-items: center; gap: 2px; user-select: none; }
|
||||
.btn-toggle:active { opacity: 0.7; }
|
||||
.btn-toggle svg { transition: transform 0.2s; }
|
||||
.btn-toggle--up svg { transform: rotate(180deg); }
|
||||
|
||||
/* 分隔条 */
|
||||
.section-divider { height: 12px; background: #f5f7fa; }
|
||||
|
||||
/* 问卷列表区域 */
|
||||
/* 问卷大卡片容器 */
|
||||
.questionnaire-section { padding: 0 12px; }
|
||||
.questionnaire-section__title { font-size: 15px; font-weight: 700; color: #1a1a1a; padding: 14px 4px 10px; display: flex; align-items: center; gap: 6px; }
|
||||
.questionnaire-list { display: flex; flex-direction: column; gap: 12px; padding-bottom: 8px; }
|
||||
.questionnaire-card { background: #fff; border-radius: 16px; padding: 16px; margin-top: 12px; }
|
||||
.questionnaire-card__title { font-size: 15px; font-weight: 700; color: #1a1a1a; padding-bottom: 12px; border-bottom: 1px solid #f0f0f0; margin-bottom: 14px; display: flex; align-items: center; gap: 6px; }
|
||||
|
||||
/* 问卷卡片 */
|
||||
.q-card { background: #fff; border-radius: 14px; padding: 16px; position: relative; }
|
||||
.q-card--filled { background: #f8f9fb; }
|
||||
.q-card__header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 8px; }
|
||||
.q-card__name { font-size: 15px; font-weight: 600; color: #1a1a1a; flex: 1; cursor: pointer; }
|
||||
.q-card__badge { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 20px; white-space: nowrap; flex-shrink: 0; margin-left: 10px; }
|
||||
/* 问卷条目 */
|
||||
.q-list { display: flex; flex-direction: column; gap: 14px; padding-bottom: 2px; }
|
||||
.q-item { position: relative; }
|
||||
.q-item__header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 6px; }
|
||||
.q-item__name { font-size: 14px; font-weight: 600; color: #1a1a1a; flex: 1; cursor: pointer; }
|
||||
.q-item__badge { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 20px; white-space: nowrap; flex-shrink: 0; margin-left: 10px; }
|
||||
.badge--unfilled { color: #faad14; background: #fffbe6; border: 1px solid #ffe58f; }
|
||||
.badge--filled { color: #52c41a; background: #f6ffed; border: 1px solid #b7eb8f; }
|
||||
.q-card__meta { display: flex; gap: 16px; font-size: 12px; color: #999; }
|
||||
.q-card__meta span { color: #666; }
|
||||
.q-card__arrow { position: absolute; right: 16px; bottom: 16px; width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; }
|
||||
.q-card--filled .q-card__arrow { display: none; }
|
||||
.badge--locked { color: #999; background: #fafafa; border: 1px solid #d9d9d9; }
|
||||
.q-item__meta { display: flex; gap: 16px; font-size: 12px; color: #999; }
|
||||
.q-item__meta span { color: #666; }
|
||||
|
||||
/* 已填写标记 */
|
||||
.q-card__done-mark { display: none; align-items: center; gap: 4px; font-size: 12px; color: #52c41a; margin-top: 8px; }
|
||||
.q-card--filled .q-card__done-mark { display: flex; }
|
||||
.q-card--filled .q-card__name { color: #555; font-weight: 500; }
|
||||
.q-item__done-mark { display: none; align-items: center; gap: 4px; font-size: 12px; color: #52c41a; margin-top: 6px; }
|
||||
.q-item--filled .q-item__badge { display: none; }
|
||||
.q-item--filled .q-item__done-mark { display: flex; }
|
||||
.q-item--filled .q-item__name { color: #555; font-weight: 500; }
|
||||
|
||||
/* 不符合人群 */
|
||||
.q-item--disabled { opacity: 0.45; pointer-events: none; }
|
||||
.q-item__disabled-mask { display: none; align-items: center; gap: 6px; font-size: 12px; color: #bbb; margin-top: 6px; }
|
||||
.q-item--disabled .q-item__disabled-mask { display: flex; }
|
||||
.q-item--disabled .q-item__name { color: #ccc; cursor: default; }
|
||||
.q-item--disabled .q-item__meta { color: #ccc; }
|
||||
.q-item--disabled .q-item__meta span { color: #ccc; }
|
||||
|
||||
/* 锁定状态(活动已结束/未开始) */
|
||||
.q-item--locked { opacity: 0.45; pointer-events: none; }
|
||||
.q-item--locked .q-item__name { color: #ccc; cursor: default; }
|
||||
|
||||
/* 分隔线 */
|
||||
.q-item__divider { height: 1px; background: #f5f5f5; }
|
||||
|
||||
/* 底部按钮 */
|
||||
.submit-bar { padding: 12px 16px; background: #fff; border-top: 1px solid #f0f0f0; flex-shrink: 0; }
|
||||
.btn-submit { width: 100%; height: 48px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; border-radius: 24px; font-size: 16px; font-weight: 600; color: #fff; cursor: pointer; transition: transform 0.15s; display: flex; align-items: center; justify-content: center; gap: 6px; }
|
||||
.btn-submit:active { transform: scale(0.97); }
|
||||
.submit-bar--hidden { display: none; }
|
||||
.btn-submit--disabled { background: #d9d9d9 !important; cursor: not-allowed; }
|
||||
.btn-submit--disabled:active { transform: none; }
|
||||
|
||||
/* 底部安全区 */
|
||||
.bottom-safe { height: 20px; flex-shrink: 0; }
|
||||
@@ -93,7 +118,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<div class="activity-info">
|
||||
<div class="activity-info__header">
|
||||
<div class="activity-info__name">2026年第二季度健康排查</div>
|
||||
<div class="activity-info__status status--ongoing">进行中</div>
|
||||
<div class="activity-info__status status--ongoing" id="activityStatusBadge">进行中</div>
|
||||
</div>
|
||||
<div class="activity-info__rows">
|
||||
<div class="activity-info__row">
|
||||
@@ -116,10 +141,20 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<span class="activity-info__label">联系电话</span>
|
||||
<span class="activity-info__value phone" onclick="window.location.href='tel:13812345678'">138-1234-5678</span>
|
||||
</div>
|
||||
<div class="activity-info__row" id="submitTimeRow" style="display:none;">
|
||||
<span class="activity-info__label">提交时间</span>
|
||||
<span class="activity-info__value" id="submitTimeValue"></span>
|
||||
</div>
|
||||
<div class="activity-info__divider"></div>
|
||||
<div class="activity-info__row">
|
||||
<span class="activity-info__label">活动描述</span>
|
||||
<span class="activity-info__desc">为全面掌握职工健康状况,组织开展第二季度健康排查活动。请全体职工认真填写健康问卷,如实反馈自身健康情况。本次活动由工会办公室统一组织,各单位积极配合。</span>
|
||||
<div class="activity-info__desc-wrap">
|
||||
<span class="activity-info__desc" id="descText">为全面掌握职工健康状况,组织开展第二季度健康排查活动。请全体职工认真填写健康问卷,如实反馈自身健康情况。本次活动由工会办公室统一组织,各单位积极配合。问卷分为通用问卷和专项问卷两部分,其中职业健康危害因素调查仅面向一线作业岗位员工,其他岗位员工无需填写。请各班组负责人做好动员和督促工作。</span>
|
||||
<span class="btn-toggle" id="descToggle" onclick="toggleDesc()">
|
||||
<span id="descBtnText">展开</span>
|
||||
<svg width="12" height="12" fill="none"><path d="M2 5l4 4 4-4" stroke="#667eea" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -127,49 +162,58 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<!-- 分隔条 -->
|
||||
<div class="section-divider"></div>
|
||||
|
||||
<!-- 问卷列表 -->
|
||||
<!-- 问卷大卡片 -->
|
||||
<div class="questionnaire-section">
|
||||
<div class="questionnaire-section__title">📋 问卷列表</div>
|
||||
<div class="questionnaire-list" id="questionnaireList">
|
||||
<div class="questionnaire-card">
|
||||
<div class="questionnaire-card__title">📋 问卷列表</div>
|
||||
<div class="q-list" id="questionnaireList">
|
||||
|
||||
<!-- 问卷1 -->
|
||||
<div class="q-card" data-index="0">
|
||||
<div class="q-card__header">
|
||||
<div class="q-card__name">职工健康状况问卷</div>
|
||||
<div class="q-card__badge badge--unfilled">未填写</div>
|
||||
<!-- 问卷1:符合人群 -->
|
||||
<div class="q-item" data-index="0">
|
||||
<div class="q-item__header">
|
||||
<div class="q-item__name">职工健康状况问卷</div>
|
||||
<div class="q-item__badge badge--unfilled">未填写</div>
|
||||
</div>
|
||||
<div class="q-item__meta">
|
||||
适用人群:<span>A类、B类、C类</span>
|
||||
</div>
|
||||
<div class="q-item__meta" style="margin-top:4px;">
|
||||
题目数量:<span>8 题</span>
|
||||
</div>
|
||||
<div class="q-item__done-mark">
|
||||
<svg width="14" height="14" fill="none"><path d="M2 7l3.5 3.5L12 4" stroke="#52c41a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
已填写 2026-06-05 10:30
|
||||
</div>
|
||||
<div class="q-item__disabled-mask">
|
||||
<svg width="14" height="14" fill="none"><path d="M7 1a6 6 0 100 12 6 6 0 000-12zM5 7l1.5 1.5L10 5" stroke="#bbb" stroke-width="1.2"/></svg>
|
||||
不符合人群,无需填写
|
||||
</div>
|
||||
</div>
|
||||
<div class="q-card__meta">
|
||||
适用人群:<span>全体职工</span>
|
||||
|
||||
<div class="q-item__divider"></div>
|
||||
|
||||
<!-- 问卷2:不符合人群(置灰) -->
|
||||
<div class="q-item q-item--disabled" data-index="1">
|
||||
<div class="q-item__header">
|
||||
<div class="q-item__name">职业健康危害因素调查</div>
|
||||
</div>
|
||||
<div class="q-item__meta">
|
||||
适用人群:<span>D类</span>
|
||||
</div>
|
||||
<div class="q-item__meta" style="margin-top:4px;">
|
||||
题目数量:<span>6 题</span>
|
||||
</div>
|
||||
<div class="q-item__done-mark">
|
||||
<svg width="14" height="14" fill="none"><path d="M2 7l3.5 3.5L12 4" stroke="#52c41a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
已填写 2026-06-05 10:30
|
||||
</div>
|
||||
<div class="q-item__disabled-mask">
|
||||
<svg width="14" height="14" fill="none"><path d="M7 1a6 6 0 100 12 6 6 0 000-12zM5 7l1.5 1.5L10 5" stroke="#bbb" stroke-width="1.2"/></svg>
|
||||
不符合人群,无需填写
|
||||
</div>
|
||||
</div>
|
||||
<div class="q-card__meta" style="margin-top:4px;">
|
||||
题目数量:<span>12 题</span>
|
||||
</div>
|
||||
<div class="q-card__done-mark">
|
||||
<svg width="14" height="14" fill="none"><path d="M2 7l3.5 3.5L12 4" stroke="#52c41a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
已填写 2026-06-05 10:30
|
||||
</div>
|
||||
<div class="q-card__arrow"><svg width="7" height="12" fill="none"><path d="M1 1l5 5-5 5" stroke="#ccc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 问卷2 -->
|
||||
<div class="q-card" data-index="1">
|
||||
<div class="q-card__header">
|
||||
<div class="q-card__name">职业健康危害因素调查</div>
|
||||
<div class="q-card__badge badge--unfilled">未填写</div>
|
||||
</div>
|
||||
<div class="q-card__meta">
|
||||
适用人群:<span>一线作业岗位</span>
|
||||
</div>
|
||||
<div class="q-card__meta" style="margin-top:4px;">
|
||||
题目数量:<span>8 题</span>
|
||||
</div>
|
||||
<div class="q-card__done-mark">
|
||||
<svg width="14" height="14" fill="none"><path d="M2 7l3.5 3.5L12 4" stroke="#52c41a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
已填写 2026-06-05 10:30
|
||||
</div>
|
||||
<div class="q-card__arrow"><svg width="7" height="12" fill="none"><path d="M1 1l5 5-5 5" stroke="#ccc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -211,7 +255,89 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</style>
|
||||
|
||||
<script>
|
||||
/* 获取 URL 参数 */
|
||||
function getParam(name) {
|
||||
var match = location.search.match(new RegExp('[?&]' + name + '=([^&]*)'));
|
||||
return match ? decodeURIComponent(match[1]) : null;
|
||||
}
|
||||
|
||||
var activityStatus = getParam('activityStatus'); // pending / ongoing / ended
|
||||
var participated = getParam('participated'); // 0 / 1
|
||||
var submitTime = getParam('submitTime'); // 提交时间
|
||||
|
||||
var bar = document.getElementById('submitBar');
|
||||
var btn = bar.querySelector('.btn-submit');
|
||||
var safe = document.getElementById('bottomSafe');
|
||||
|
||||
/* 根据 activityStatus 更新活动状态标签 */
|
||||
var statusMap = {
|
||||
pending: { cls: 'status--pending', text: '待开始' },
|
||||
ongoing: { cls: 'status--ongoing', text: '进行中' },
|
||||
ended: { cls: 'status--ended', text: '已结束' }
|
||||
};
|
||||
if (activityStatus && statusMap[activityStatus]) {
|
||||
var badge = document.getElementById('activityStatusBadge');
|
||||
badge.className = 'activity-info__status ' + statusMap[activityStatus].cls;
|
||||
badge.textContent = statusMap[activityStatus].text;
|
||||
}
|
||||
|
||||
/* 已参加状态:显示提交时间,问卷置为已填写,隐藏提交按钮 */
|
||||
var isFilled = (participated === '1') || (location.search.indexOf('filled=1') !== -1);
|
||||
if (isFilled) {
|
||||
document.querySelectorAll('.q-item').forEach(function(card) {
|
||||
if (!card.classList.contains('q-item--disabled')) {
|
||||
card.classList.add('q-item--filled');
|
||||
}
|
||||
});
|
||||
/* 显示提交时间 */
|
||||
var timeRow = document.getElementById('submitTimeRow');
|
||||
var timeVal = document.getElementById('submitTimeValue');
|
||||
if (timeRow && submitTime) {
|
||||
timeRow.style.display = '';
|
||||
timeVal.textContent = submitTime;
|
||||
}
|
||||
/* 隐藏提交按钮 */
|
||||
bar.classList.add('submit-bar--hidden');
|
||||
safe.style.display = 'block';
|
||||
/* 如果是从 filled=1 跳转回来,弹出成功提示 */
|
||||
}
|
||||
/* 活动已结束:禁用提交按钮,问卷显示锁定状态 */
|
||||
else if (activityStatus === 'ended') {
|
||||
btn.textContent = '活动已结束,不可填写';
|
||||
btn.classList.add('btn-submit--disabled');
|
||||
btn.onclick = null;
|
||||
/* 问卷卡片置为锁定状态 */
|
||||
document.querySelectorAll('.q-item').forEach(function(card) {
|
||||
if (!card.classList.contains('q-item--disabled')) {
|
||||
card.classList.add('q-item--locked');
|
||||
var badge = card.querySelector('.q-item__badge');
|
||||
if (badge) {
|
||||
badge.className = 'q-item__badge badge--locked';
|
||||
badge.textContent = '不可填写';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/* 活动未开始:禁用提交按钮 */
|
||||
else if (activityStatus === 'pending') {
|
||||
btn.textContent = '活动未开始,不可填写';
|
||||
btn.classList.add('btn-submit--disabled');
|
||||
btn.onclick = null;
|
||||
/* 问卷卡片置为锁定状态 */
|
||||
document.querySelectorAll('.q-item').forEach(function(card) {
|
||||
if (!card.classList.contains('q-item--disabled')) {
|
||||
card.classList.add('q-item--locked');
|
||||
var badge = card.querySelector('.q-item__badge');
|
||||
if (badge) {
|
||||
badge.className = 'q-item__badge badge--locked';
|
||||
badge.textContent = '未开始';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function goFill() {
|
||||
if (btn.classList.contains('btn-submit--disabled')) return;
|
||||
location.href = 'activity-fill.html';
|
||||
}
|
||||
|
||||
@@ -219,27 +345,32 @@ function closeDialog() {
|
||||
document.getElementById('dialogMask').classList.remove('show');
|
||||
}
|
||||
|
||||
/* 活动描述展开/收起 */
|
||||
var descExpanded = false;
|
||||
function toggleDesc() {
|
||||
descExpanded = !descExpanded;
|
||||
var el = document.getElementById('descText');
|
||||
var btn = document.getElementById('descToggle');
|
||||
var txt = document.getElementById('descBtnText');
|
||||
if (descExpanded) {
|
||||
el.classList.add('expanded');
|
||||
txt.textContent = '收起';
|
||||
btn.classList.add('btn-toggle--up');
|
||||
} else {
|
||||
el.classList.remove('expanded');
|
||||
txt.textContent = '展开';
|
||||
btn.classList.remove('btn-toggle--up');
|
||||
}
|
||||
}
|
||||
|
||||
/* 点击已填写的问卷卡片,查看填写内容 */
|
||||
document.querySelectorAll('.q-card').forEach(function(card) {
|
||||
document.querySelectorAll('.q-item').forEach(function(card) {
|
||||
card.addEventListener('click', function() {
|
||||
if (this.classList.contains('q-card--filled')) {
|
||||
if (this.classList.contains('q-item--filled') && !this.classList.contains('q-item--disabled') && !this.classList.contains('q-item--locked')) {
|
||||
location.href = 'questionnaire-fill.html';
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* 根据 URL 参数判断是否已提交 */
|
||||
if (location.search.indexOf('filled=1') !== -1) {
|
||||
var bar = document.getElementById('submitBar');
|
||||
var safe = document.getElementById('bottomSafe');
|
||||
document.querySelectorAll('.q-card').forEach(function(card) {
|
||||
card.classList.add('q-card--filled');
|
||||
});
|
||||
bar.classList.add('submit-bar--hidden');
|
||||
safe.style.display = 'block';
|
||||
/* 弹出提交成功提示 */
|
||||
document.getElementById('dialogMask').classList.add('show');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,6 +23,9 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
.q-title-card__name { font-size: 16px; font-weight: 700; margin-bottom: 6px; }
|
||||
.q-title-card__meta { font-size: 12px; opacity: 0.85; display: flex; gap: 14px; }
|
||||
|
||||
/* 问卷间分隔条 */
|
||||
.q-divider { height: 12px; background: transparent; }
|
||||
|
||||
/* 分类标题 */
|
||||
.category-title { font-size: 14px; font-weight: 700; color: #1a1a1a; margin: 16px 0 10px; padding-left: 10px; border-left: 3px solid #667eea; }
|
||||
.category-title:first-child { margin-top: 0; }
|
||||
@@ -49,7 +52,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
.option-item--check.selected .option-item__checkbox::after { content: ''; width: 6px; height: 6px; border-left: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(-45deg) translateY(-1px); }
|
||||
|
||||
/* 文本输入 */
|
||||
.text-input { width: 100%; height: 80px; border: 1px solid #e8e8e8; border-radius: 8px; padding: 10px 12px; font-size: 13px; color: #333; resize: none; font-family: inherit; outline: none; transition: border-color 0.15s; }
|
||||
.text-input { width: 100%; min-height: 80px; border: 1px solid #e8e8e8; border-radius: 8px; padding: 10px 12px; font-size: 13px; color: #333; font-family: inherit; outline: none; transition: border-color 0.15s; }
|
||||
.text-input:focus { border-color: #667eea; }
|
||||
.text-input::placeholder { color: #ccc; }
|
||||
|
||||
@@ -90,11 +93,11 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
|
||||
<div class="scroll-content">
|
||||
|
||||
<!-- 问卷名称卡片 -->
|
||||
<!-- ==================== 问卷1 ==================== -->
|
||||
<div class="q-title-card">
|
||||
<div class="q-title-card__name">职工健康状况问卷</div>
|
||||
<div class="q-title-card__meta">
|
||||
<span>共 12 题</span>
|
||||
<span>共 8 题</span>
|
||||
<span>预计用时 5 分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -209,11 +212,106 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<textarea class="text-input" placeholder="如有其他健康情况需要说明,请在此填写..."></textarea>
|
||||
</div>
|
||||
|
||||
<!-- ==================== 问卷1 & 问卷2 分隔条 ==================== -->
|
||||
<div class="q-divider"></div>
|
||||
|
||||
<!-- ==================== 问卷2 ==================== -->
|
||||
<div class="q-title-card" style="background: linear-gradient(135deg, #36cfc9 0%, #08979c 100%);">
|
||||
<div class="q-title-card__name">职业健康危害因素调查</div>
|
||||
<div class="q-title-card__meta">
|
||||
<span>共 6 题</span>
|
||||
<span>预计用时 3 分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 工作环境 -->
|
||||
<div class="category-title" style="border-left-color: #36cfc9;">工作环境</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">1. 您的工作场所是否存在噪音污染?</div>
|
||||
<span class="tag-required">必填</span>
|
||||
</div>
|
||||
<div class="question-card__options">
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>无噪音或影响很小</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>偶尔有噪音,可以忍受</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>经常有噪音,影响较大</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>噪音严重,影响健康</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">2. 您的工作场所通风情况如何?</div>
|
||||
<span class="tag-required">必填</span>
|
||||
</div>
|
||||
<div class="question-card__options">
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>通风良好</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>基本可以</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>通风较差</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>通风很差</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 防护措施 -->
|
||||
<div class="category-title" style="border-left-color: #36cfc9;">防护措施</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">3. 您是否配备了必要的劳动防护用品?</div>
|
||||
<span class="tag-required">必填</span>
|
||||
</div>
|
||||
<div class="question-card__options">
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>配备齐全,质量良好</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>基本配备,但质量一般</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>部分配备,有缺失</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>几乎没有配备</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">4. 您使用的防护用品包括哪些?</div>
|
||||
<span class="tag-optional">选填</span>
|
||||
</div>
|
||||
<div class="question-card__options">
|
||||
<div class="option-item option-item--check" onclick="selectCheck(this)"><span class="option-item__checkbox"></span>防护口罩</div>
|
||||
<div class="option-item option-item--check" onclick="selectCheck(this)"><span class="option-item__checkbox"></span>防护手套</div>
|
||||
<div class="option-item option-item--check" onclick="selectCheck(this)"><span class="option-item__checkbox"></span>耳塞/耳罩</div>
|
||||
<div class="option-item option-item--check" onclick="selectCheck(this)"><span class="option-item__checkbox"></span>防护眼镜</div>
|
||||
<div class="option-item option-item--check" onclick="selectCheck(this)"><span class="option-item__checkbox"></span>无</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 健康状况 -->
|
||||
<div class="category-title" style="border-left-color: #36cfc9;">职业健康影响</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">5. 您是否出现过与工作相关的健康问题?</div>
|
||||
<span class="tag-required">必填</span>
|
||||
</div>
|
||||
<div class="question-card__options">
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>无相关问题</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>偶有轻微症状</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>有明确的工作相关健康问题</div>
|
||||
<div class="option-item" onclick="selectRadio(this)"><span class="option-item__radio"></span>健康问题较严重,需要治疗</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">6. 其他需要反映的职业健康问题</div>
|
||||
<span class="tag-optional">选填</span>
|
||||
</div>
|
||||
<textarea class="text-input" placeholder="如有其他职业健康问题需要反映,请在此填写..."></textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 底部提交按钮 -->
|
||||
<!-- 底部提交按钮(统一一个提交按钮) -->
|
||||
<div class="submit-bar">
|
||||
<button class="btn-submit" onclick="submitForm()">提交问卷</button>
|
||||
<button class="btn-submit" onclick="submitForm()">提交全部问卷</button>
|
||||
</div>
|
||||
<div class="bottom-safe"></div>
|
||||
|
||||
@@ -224,7 +322,6 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<svg width="32" height="32" fill="none"><path d="M8 16l5 5 11-11" stroke="#fff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</div>
|
||||
<div class="dialog__title">提交成功</div>
|
||||
<div class="dialog__desc">问卷已提交,正在返回活动详情...</div>
|
||||
<button class="dialog__btn" onclick="goBack()">确 认</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -105,7 +105,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<div class="activity-list" id="tab-pending" style="display:none;">
|
||||
|
||||
<!-- 活动1:待参加 -->
|
||||
<a class="activity-card activity-card--pending" href="activity-detail.html?id=1">
|
||||
<a class="activity-card activity-card--pending" href="activity-detail.html?activityStatus=ongoing&participated=0">
|
||||
<div class="activity-card__header">
|
||||
<div class="activity-card__name">2026年第二季度健康排查</div>
|
||||
<div class="activity-card__status status--ongoing">进行中</div>
|
||||
@@ -133,7 +133,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</a>
|
||||
|
||||
<!-- 活动2:待参加 -->
|
||||
<a class="activity-card activity-card--pending" href="activity-detail.html?id=2">
|
||||
<a class="activity-card activity-card--pending" href="activity-detail.html?activityStatus=pending&participated=0">
|
||||
<div class="activity-card__header">
|
||||
<div class="activity-card__name">2026年第三季度健康排查</div>
|
||||
<div class="activity-card__status status--pending">待开始</div>
|
||||
@@ -166,7 +166,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<div class="activity-list" id="tab-done">
|
||||
|
||||
<!-- 活动3:已参加-进行中 -->
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?id=3">
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?activityStatus=ongoing&participated=1&submitTime=2026-06-05 10:30">
|
||||
<div class="activity-card__header">
|
||||
<div class="activity-card__name">2026年第二季度健康排查</div>
|
||||
<div class="activity-card__status status--ongoing">进行中</div>
|
||||
@@ -196,7 +196,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</a>
|
||||
|
||||
<!-- 活动4:已参加-已结束 -->
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?id=4">
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?activityStatus=ended&participated=1&submitTime=2026-03-15 09:20">
|
||||
<div class="activity-card__header">
|
||||
<div class="activity-card__name">2026年第一季度健康排查</div>
|
||||
<div class="activity-card__status status--ended">已结束</div>
|
||||
@@ -226,7 +226,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</a>
|
||||
|
||||
<!-- 活动5:已参加 -->
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?id=5">
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?activityStatus=ended&participated=1&submitTime=2025-12-10 14:35">
|
||||
<div class="activity-card__header">
|
||||
<div class="activity-card__name">2025年第四季度健康排查</div>
|
||||
<div class="activity-card__status status--ended">已结束</div>
|
||||
@@ -256,7 +256,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</a>
|
||||
|
||||
<!-- 活动6:已参加 -->
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?id=6">
|
||||
<a class="activity-card activity-card--done" href="activity-detail.html?activityStatus=ended&participated=1&submitTime=2025-09-08 10:12">
|
||||
<div class="activity-card__header">
|
||||
<div class="activity-card__name">2025年第三季度健康排查</div>
|
||||
<div class="activity-card__status status--ended">已结束</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>问卷填写 - 员工端 | 健康CQ原型</title>
|
||||
<title>问卷详情 - 员工端 | 健康CQ原型</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #f0f2f5; display: flex; justify-content: center; align-items: flex-start; min-height: 100vh; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', sans-serif; }
|
||||
@@ -20,11 +20,14 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
/* 问卷名称卡片 */
|
||||
.q-title-card { border-radius: 14px; padding: 18px; color: #fff; margin-bottom: 14px; position: relative; overflow: hidden; }
|
||||
.q-title-card--view { background: linear-gradient(135deg, #52c41a 0%, #389e0d 100%); }
|
||||
.q-title-card--edit { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
|
||||
.q-title-card--view2 { background: linear-gradient(135deg, #36cfc9 0%, #08979c 100%); }
|
||||
.q-title-card::after { content: ''; position: absolute; top: -20px; right: -20px; width: 80px; height: 80px; background: rgba(255,255,255,0.08); border-radius: 50%; }
|
||||
.q-title-card__name { font-size: 16px; font-weight: 700; margin-bottom: 6px; }
|
||||
.q-title-card__meta { font-size: 12px; opacity: 0.85; display: flex; gap: 14px; }
|
||||
|
||||
/* 问卷间分隔 */
|
||||
.q-divider { height: 12px; background: transparent; }
|
||||
|
||||
/* 分类标题 */
|
||||
.category-title { font-size: 14px; font-weight: 700; color: #1a1a1a; margin: 16px 0 10px; padding-left: 10px; border-left: 3px solid #52c41a; }
|
||||
.category-title:first-child { margin-top: 0; }
|
||||
@@ -67,7 +70,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
<div class="q-title-card q-title-card--view">
|
||||
<div class="q-title-card__name">职工健康状况问卷</div>
|
||||
<div class="q-title-card__meta">
|
||||
<span>共 12 题</span>
|
||||
<span>共 8 题</span>
|
||||
<span>已提交 2026-06-05 10:30</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -184,6 +187,103 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ==================== 问卷2 分隔条 ==================== -->
|
||||
<div class="q-divider"></div>
|
||||
|
||||
<!-- ==================== 问卷2:职业健康危害因素调查 ==================== -->
|
||||
<div class="q-title-card q-title-card--view2">
|
||||
<div class="q-title-card__name">职业健康危害因素调查</div>
|
||||
<div class="q-title-card__meta">
|
||||
<span>共 6 题</span>
|
||||
<span>已提交 2026-06-05 10:30</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 工作环境 -->
|
||||
<div class="category-title" style="border-left-color: #36cfc9;">工作环境</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">1. 您的工作场所是否存在噪音污染?</div>
|
||||
<span class="tag-answered">已答</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>无噪音或影响很小</div>
|
||||
<div class="answer-item answer-item--selected"><span class="answer-item__dot answer-item__dot--selected"></span>偶尔有噪音,可以忍受</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>经常有噪音,影响较大</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>噪音严重,影响健康</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">2. 您的工作场所通风情况如何?</div>
|
||||
<span class="tag-answered">已答</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>通风良好</div>
|
||||
<div class="answer-item answer-item--selected"><span class="answer-item__dot answer-item__dot--selected"></span>基本可以</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>通风较差</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>通风很差</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 防护措施 -->
|
||||
<div class="category-title" style="border-left-color: #36cfc9;">防护措施</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">3. 您是否配备了必要的劳动防护用品?</div>
|
||||
<span class="tag-answered">已答</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="answer-item answer-item--selected"><span class="answer-item__dot answer-item__dot--selected"></span>基本配备,但质量一般</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>配备齐全,质量良好</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>部分配备,有缺失</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>几乎没有配备</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">4. 您使用的防护用品包括哪些?</div>
|
||||
<span class="tag-answered">已答</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>防护口罩</div>
|
||||
<div class="answer-item answer-item--selected"><span class="answer-item__dot answer-item__dot--selected"></span>防护手套</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>耳塞/耳罩</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>防护眼镜</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>无</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 职业健康影响 -->
|
||||
<div class="category-title" style="border-left-color: #36cfc9;">职业健康影响</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">5. 您是否出现过与工作相关的健康问题?</div>
|
||||
<span class="tag-answered">已答</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="answer-item answer-item--selected"><span class="answer-item__dot answer-item__dot--selected"></span>偶有轻微症状</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>无相关问题</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>有明确的工作相关健康问题</div>
|
||||
<div class="answer-item answer-item--normal"><span class="answer-item__dot answer-item__dot--normal"></span>健康问题较严重,需要治疗</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="question-card">
|
||||
<div class="question-card__header">
|
||||
<div class="question-card__title">6. 其他需要反映的职业健康问题</div>
|
||||
<span class="tag-answered">已答</span>
|
||||
</div>
|
||||
<div class="answer-item answer-item--selected" style="display:block; padding: 14px; line-height: 1.7;">
|
||||
车间粉尘较多,建议加强除尘措施。另外夏季高温时防暑降温设备不够用。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 底部安全区 -->
|
||||
|
||||
@@ -171,17 +171,17 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
|
||||
</a>
|
||||
|
||||
<!-- 健康排查 -->
|
||||
<a class="entry-card" href="health-screening/index.html">
|
||||
<div class="entry-icon entry-icon--screening">🔍</div>
|
||||
<div class="entry-info">
|
||||
<div class="entry-name">健康排查</div>
|
||||
<div class="entry-metrics">
|
||||
<span class="entry-metric">积分 <strong>1,280</strong></span>
|
||||
<span class="entry-metric">连续记录 <strong>7</strong> 天</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="entry-arrow"><svg width="7" height="12" fill="none"><path d="M1 1l5 5-5 5" stroke="#ccc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
|
||||
</a>
|
||||
<!-- <a class="entry-card" href="health-screening/index.html">-->
|
||||
<!-- <div class="entry-icon entry-icon--screening">🔍</div>-->
|
||||
<!-- <div class="entry-info">-->
|
||||
<!-- <div class="entry-name">健康排查</div>-->
|
||||
<!-- <div class="entry-metrics">-->
|
||||
<!-- <span class="entry-metric">积分 <strong>1,280</strong></span>-->
|
||||
<!-- <span class="entry-metric">连续记录 <strong>7</strong> 天</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="entry-arrow"><svg width="7" height="12" fill="none"><path d="M1 1l5 5-5 5" stroke="#ccc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div>-->
|
||||
<!-- </a>-->
|
||||
|
||||
<!-- 健康排查 V2 -->
|
||||
<a class="entry-card" href="health-checkup/index.html">
|
||||
|
||||
Reference in New Issue
Block a user