情况汇报
当前身份:{{ user.role === 'admin' ? '主管理员' : (user.org_type === 'train' ? '培训单位 · ' : '单位账号 · ') + user.org_name }}
{{ todayText }}
当前系统共录入{{ fmt(stats.units) }}家单位、{{ fmt(stats.students) }}名学员,累计 {{ fmt(stats.eduTotal) }} 人次继续教育报名;
其中最近 3 个月内有{{ (stats.expiring || []).length }}名学员证书即将到期,请及时安排复审 / 换证,暂无到期风险。
本单位共有{{ fmt(stats.students) }}名学员,累计 {{ fmt(stats.eduTotal) }} 人次继续教育报名;
最近 3 个月内有{{ (stats.expiring || []).length }}名学员证书即将到期,请及时安排复审 / 换证,暂无到期风险。
单位总数
{{ fmt(stats.units) }}家
学员总数(按身份证去重)
{{ fmt(stats.students) }}名
累计报名 {{ fmt(stats.eduTotal) }} 人次
近 3 个月到期证书
{{ (stats.expiring || []).length }}本
累计查询
{{ fmt(stats.total) }}次
成功 {{ stats.success }} · 失败 {{ stats.fail }} · 今日 {{ stats.today }}
证书到期预警(近 3 个月)
{{ expIndex + 1 }} / {{ stats.expiring.length }}
后台核验中 {{ avStatus.progress.processed }}/{{ avStatus.progress.total }}
自动核验任务
{{ expView === 'card' ? '切换列表模式' : '切换卡片模式' }}
{{ curExp.name || '—' }}
{{ (typeMeta[curExp.query_type]||{}).short || curExp.type_label || '其他' }}
已核验
{{ curExp.days_left }}剩余天数
{{ maskIdcard(curExp.idcard) }}
—
{{ maskPhone(curExp.person_phone) }}
—
{{ curExp.cert_code || '—' }}
{{ curExp.job_name || '—' }}
{{ curExp.expire_date }}
{{ curExp.org_name || '—' }}
{{ curExp.train_org_name || '—' }}
核验证书(政务网实时查询)
{{ curExp.verify.text }}(核验于 {{ curExp.verify.at }})
批量核验中 {{ expVerifyProgress }}
停止
核验选中证书({{ expSelected.length }})
勾选名单(表头可全选本页)后批量核验 · 点「查看」进入单条卡片
expSelected = s">
{{ maskIdcard(row.idcard) }}
—
{{ maskPhone(row.person_phone) }}
—
{{ (typeMeta[row.query_type]||{}).short || row.type_label || '其他' }}
{{ row.cert_code || '—' }}
{{ row.job_name || '—' }}
{{ row.days_left }} 天
{{ row.org_name || '—' }}
{{ row.train_org_name || '—' }}
{{ row.verify.short }}
未核验
查看
注册类证书概况
进入台账 →
共{{ fmt(eduSummary.students) }}名学员持证({{ fmt(eduSummary.total) }} 人次报名)
有效{{ fmt(eduSummary.valid) }}
已过期{{ fmt(eduSummary.expired) }}
无效{{ fmt(eduSummary.invalid) }}
未查询{{ fmt(eduSummary.unqueried) }}
{{ p.name }} {{ fmt(p.count) }}人
近 3 个月到期 {{ fmt(eduSummary.expiringCount) }} 人
证书分类
{{ typeMeta[t.key].short }}
{{ typeMeta[t.key].source }}
{{ (stats.byType[t.key] || {}).count || 0 }}
查询记录
证书查询
{{ typeMeta[curType].source }}
查 询
清空
{{ r.ok ? '查询成功' : '查询失败' }}
{{ r.typeLabel }}
已录入台账 #{{ r.ledgerId }}
{{ r.showRaw ? '收起' : '原始JSON' }}
{{ r.msg }}
{{ pretty(r.raw) }}
{{ typeMeta[curType].short }} · 学员台账
{{ fmt(eduTotal) }} 条报名记录
含职称 / 八大员等其他工种
共{{ fmt(eduSummary.students) }}名学员持证
有效{{ fmt(eduSummary.valid) }}
已过期{{ fmt(eduSummary.expired) }}
无效{{ fmt(eduSummary.invalid) }}
未查询{{ fmt(eduSummary.unqueried) }}
{{ p.name }} {{ fmt(p.count) }}人
近 3 个月到期 {{ fmt(eduSummary.expiringCount) }} 人
筛 选
重置
批量查询中 {{ batchProgress }}
停止
批量查询有效期({{ selectedEdu.length }})
selectedEdu = s">
{{ maskIdcard(row.id_card) }}
{{ maskPhone(row.person_phone) }}
—
{{ row.train_org_name || '—' }}
{{ row.signup_psn || '—' }}
{{ maskPhone(row.signup_phone) }}
—
{{ row.register_no || '—' }}
{{ row.profession || '—' }}
{{ row.cert_status }}
未查询
即将到期
{{ row.valid_until || '—' }}
{{ row.remark }}
—
{{ row.last_query_at || '—' }}
查询
编辑
备注
详情
取消
保存(记录变更日志)
取消
保存(记录变更日志)
{{ eduDetail.row.person_name }}
{{ maskIdcard(eduDetail.row.id_card) }}
{{ maskPhone(eduDetail.row.person_phone) }}
—(可用于到期短信提醒)
编辑
{{ eduDetail.row.ent_name || '—' }}
{{ eduDetail.row.register_no || '—' }}
{{ eduDetail.row.train_org_name || '—' }}
{{ eduDetail.row.signup_psn || '—' }} /
{{ maskPhone(eduDetail.row.signup_phone) }}
—
{{ eduDetail.row.profession || '—' }}
{{ eduDetail.row.cert_status }}
未查询
即将到期
{{ eduDetail.row.valid_until || '—' }}
{{ eduDetail.row.last_query_at || '—' }}
{{ eduDetail.row.remark }}
—
编辑备注
变更日志
{{ eduDetail.changes.length }} 条
暂无变更记录
{{ eduFieldLabel(c.field) }}:
{{ c.old_value || '(空)' }}
→
{{ c.new_value || '(空)' }}
{{ typeMeta[curType].short }} · 分类台账
批量再查中 {{ batchProgress }}
停止
{{ typeMeta[t.key].short }}
短信任务
发送中 {{ smsInfo.task.processed }}/{{ smsInfo.task.total }} {{ smsInfo.task.current }}
待发送 {{ smsInfo.pending }} 条
天
天
可用占位符:{sign} 签名 · {name} 姓名 · {cert} 证书类别 · {certno} 证书编号 · {date} 到期日期 · {days} 剩余天数
保存设置
停止发送
立即执行发送({{ smsInfo ? smsInfo.pending : 0 }} 条)
模拟通道只记录不真发,便于先验证名单;接入真实服务商后切换通道即可
企业短信配置
开启短信开关的单位,其学员到期前才会收到提醒
筛 选
{{ row.org_kind === 'train' ? '培训单位' : '所属企业' }}
{{ fmt(row.students) }}
toggleOrgSms(row, v)">
提前 {{ row.remind_rules.join(' / ') }} 天
—
未配置
{{ row.channel_state }}
—
{{ row.config ? ({ person: '学员本人', contact: '单位联系人', both: '本人+联系人' })[row.config.send_to] : '—' }}
{{ maskPhone(row.config.contact_phone) }}
—
配置
短信发送记录
刷新
{{ maskPhone(row.phone) }}
{{ row.status }}
{{ row.content }}
开启前需配置好下方通道,否则无法保存
可设置多个阶段,如 90 / 30 / 7:到期前 90 天提醒一次,30 天再提醒,7 天最后提醒(同一证书每阶段只发一次)
学员本人
单位联系人
本人 + 联系人
跟随全局通道
企业独立通道
取消
保存
{{ row.role === 'admin' ? '主管理员' : (row.org_type === 'train' ? '培训单位' : '单位账号') }}
{{ row.org_name || '—' }}
全部
{{ row.perms.split(',').length }} / {{ Object.keys(typeMeta).length }} 项
不限
{{ row.points || 0 }}
编辑
重置密码
删除
单位账号
主管理员
所属企业
培训单位
共 {{ fmt(orgsTotal) }} 家培训单位 · 该账号可查看所选培训单位名下全部学员及其所属企业的数据
共 {{ fmt(orgsTotal) }} 家单位 · 该账号登录后仅能查看所选企业的数据,且不显示培训单位信息
{{ m.short }}
勾选的分类才允许查询并查看对应台账,未勾选的分类菜单不显示
点
+100
+500
+1000
每次成功调用证书查询接口扣 1 点,点数为 0 时无法查询
取消
{{ editingId ? '保存' : '创建' }}
取消
确定