{{ pageTitle }}
{{ me.name }}(平台管理员)
医生 / 专家档案 ({{ pending.doctors.length }}) 机构 / 区域联络官资质 ({{ pending.tenants.length }}) 岗位发布 ({{ pending.jobs.length }}) 人员资质核验 ({{ pendingVerify.length }}) 会员退款 ({{ pendingRefund.length }})
已选 {{ tenantSel.length }} / 共 {{ tenantAllIds.length }} 个账号
名称角色归属 / 上下级城市手机号审核资质状态操作
{{ t.name }} {{ t.role === 'AGENCY' ? '区域联络官' : (t.role === 'INSTITUTION' ? '机构' : '平台') }} — {{ t.city || '未填写' }} {{ t.contactWxPhone || '-' }} {{ PC.reviewCN(t.reviewStatus) }} {{ t.qualCount }} 份 {{ t.frozen ? '已冻结' : '正常' }}

批量设置归属(已选 {{ tenantSel.length }} 个账号)

机构 → 归到该区域联络官名下(等同代录);区域联络官 → 设为该联络官的下级(最多两级,对方自己已有上级时会跳过)。

编辑资料 · {{ tenantEdit.name }}

当前没有可选的上级 —— 能当上级的必须是「已通过审核 + 自己还没有上级」的区域联络官(最多两级)。
归属将由「{{ tenantEdit.parentOrig==='__PLATFORM__' ? '平台直管(一级)' : (tenantEdit.parentOrigName || '当前上级') }}」改为「{{ parentNameOf(tenantEdit.parentPick) }}」,保存后立即生效,并通知上下级双方。
注册登记的推荐人:{{ tenantEdit.originParentName }}(已带出,可改)
改归属立即生效:联络官端「我的机构」、机构发岗位是否免审、订单渠道分成都跟着变。
绑定关系将由「{{ tenantEdit.ownerOrig ? (bindNameOf(tenantEdit.ownerOrig)) : '平台直营(公域)' }}」改为「{{ tenantEdit.ownerPick ? bindNameOf(tenantEdit.ownerPick) : '平台直营(公域)' }}」。
资质材料({{ tenantQualFields.length }} 项)
{{ f.label }} {{ f.isRequired ? '必传' : '选传' }} {{ tenantFilesOf(f.fieldKey).length ? '已上传 ' + tenantFilesOf(f.fieldKey).length + ' 份' : '未上传' }}
打开
{{ x.fileName }}
删除
平台未配置资质清单(可在「字段配置」维护 AGENCY_QUALIFICATION / INSTITUTION_QUALIFICATION 组)

新增租户

不选 = 平台直营(公域);选了 = 该机构归这位区域联络官名下,可在租户列表「上下级」列看到。
不选 = 平台直管(一级);选了 = 挂在该上级名下(二级)。
{{ addTenant.err }}
全部订单
{{ ordTotal }}
当前筛选结果
待确认(在途)
{{ ordByStatus.PENDING || 0 }}
等医生或机构点头
进行中
{{ (ordByStatus.ACCEPTED || 0) + (ordByStatus.ON_SITE || 0) }}
已接单 + 已到岗
已完工
{{ ordByStatus.COMPLETED || 0 }}
待结算
已结算
{{ ordByStatus.SETTLED || 0 }}
闭环完成

订单管理

~
「渠道区域联络官」= 该订单归属的区域联络官(区域联络官推荐成交,或被绑定医生在合作机构自行接单/被派单时自动归属)。 归属只做留痕与分成,不限制医生接单。区域联络官端可在「推荐进度」看到这些订单。
订单号机构渠道区域联络官医生岗位工作日期日薪发起方状态创建时间
{{ o.orderNo }} {{ o.tenantName }} {{ o.agencyName }} — {{ o.doctorName }} {{ o.jobTitle }} {{ o.workDate || '—' }}
{{ o.workSlot || '' }}
{{ PC.money(o.dailyFee) }} {{ initiatorCN(o.initiator) }} {{ PC.statusCN(o.status) }} {{ PC.fmt(o.createdAt) }}
暂无订单,可在筛选栏放宽条件后重查
待裁决
{{ disputeOpenCount }}
医生 / 机构提出的异议
本页异议单
{{ disputes.length }}
当前筛选结果(最近 200 条)

结算异议

裁决只处理「结算金额与责任归属」的争议:平台给出结论并同步通知医生、机构(渠道单同时通知区域联络官)。 裁决不会自动改钱,最终以线下结算为准。
提出时间订单号机构医生岗位排期日薪提出方异议内容状态操作
{{ PC.fmt(d.createdAt) }} {{ d.orderNo }} {{ d.tenantName }} {{ d.doctorName }} {{ d.jobTitle }} {{ (d.workDate || '—') + ' ' + (d.workSlot || '') }} {{ PC.money(d.amount) }} {{ d.raisedBy === 'DOCTOR' ? '医生' : '机构' }} {{ d.reason }} {{ d.status === 'OPEN' ? '待裁决' : '已裁决' }}
{{ disputeResultCN(d.result) }}
暂无异议单,有新的异议提交会显示在这里

{{ disputeTarget.status === 'OPEN' ? '裁决结算异议' : '异议详情' }}×

{{ disputeTarget.orderNo }} · {{ disputeTarget.jobTitle }}
{{ disputeTarget.tenantName }}(机构) / {{ disputeTarget.doctorName }}(医生)
{{ (disputeTarget.workDate || '—') + ' ' + (disputeTarget.workSlot || '') }} · {{ PC.money(disputeTarget.amount) }}/天
{{ disputeTarget.reason }}
共 {{ docTotal }} 名人员
已选 {{ docSel.length }} / 共 {{ docAllIds.length }} 名
照片 姓名身份手机城市归属审核启停登记时间操作
{{ (d.name || '医').charAt(0) }} {{ d.name }} {{ d.kindLabel || (d.kind === 'EXPERT' ? '临床应用专家' : '医生') }} 同号另有{{ d.twinKindLabel }} {{ d.phonePlain || d.phone }} 查看 {{ d.city || '未填写' }} {{ d.tenantName }} 区域联络官 机构 公域 {{ PC.reviewCN(d.reviewStatus) }} {{ d.disabled ? '已停用' : '正常' }} {{ d.createdAt ? PC.fmt(d.createdAt).slice(0, 10) : '-' }}
没有符合条件的医生,放宽筛选条件再试一次

变更归属(已选 {{ docSel.length }} 名医生)

变更后医生的归属与资料归属会同步更新,公域表示释放到平台公共池。
暂无可选的机构 / 区域联络官 —— 只有「已通过审核且未冻结」的才能当归属方,先去租户管理处理审核再来。

编辑医生资料 · {{ docEdit.name }}

改身份会换成另一套资料字段,请重新核对「登记资料」与「资质材料」。
医生照片
JPG / PNG / WEBP,≤5MB。点「保存」后生效并同步到医生端 / 区域联络官端 / 机构端。
当前:{{ docEdit.phonePlain || docEdit.phoneMasked || '—' }} 查看完整号码 改号后本人须用新号收验证码登录。
登记资料({{ docFieldsView.length }} 项)
【{{ f.label }}】
{{ (f.options && f.options[0]) || '' }}
至
打开
{{ x.fileName }}
删除
尚未上传
未配置资料字段(可在「字段配置」维护 DOCTOR_PROFILE 组)
资质材料({{ docQualFields.length }} 项)
{{ f.label }} {{ f.isRequired ? '必传' : '选传' }} {{ docFilesOf(f.fieldKey).length ? '已上传 ' + docFilesOf(f.fieldKey).length + ' 份' : '未上传' }}
打开
{{ x.fileName }}
删除
平台未配置该身份的资质清单(可在「字段配置」维护 DOCTOR_QUALIFICATION / APPDOCTOR_QUALIFICATION 组)

新增人员档案

手机号是医生登录的唯一凭证:建档后医生用「手机号 + 验证码」登录即可接管本档案。
登记资料({{ docFieldsView.length }} 项)
【{{ f.label }}】
{{ (f.options && f.options[0]) || '' }}
至
先创建档案,保存后在「编辑资料」里上传
未配置资料字段(可在「字段配置」维护 DOCTOR_PROFILE 组)
照片、简历与资质材料需先有档案才能上传:创建后在列表点「编辑资料」继续补充。
本页所有配置修改后,点右侧一次保存即可

全职招聘栏收费

默认关闭 + 0 元:发布招聘、收意向、看联系方式全部免费。开启后即时生效。 ⚠️ 真正收款前还需打开上方「收费合规总闸」(legalCleared)并接入微信支付;在此之前开启开关只做记账。

付费模式与平台抽佣

金额类受合规闸门 legalCleared 控制

{{ billing.legalCleared ? '已开启' : '关闭(免费运营)' }}

二级分销(硬性两级,第三层不分成)

分佣规则说明
  1. 分谁的钱:分的是平台自己收到的年费。下级区域联络官 / 机构向平台缴纳年费时,平台从这笔年费里拿出一部分奖励给它的上级;不从医生劳务费里扣,也不从机构付给区域联络官的费用里扣。
  2. 分多少:以「下级缴纳的年费金额」为基数。选「固定金额」=每笔固定给多少钱;选「按比例」=年费 × 比例。同一时刻只有一组生效。
  3. 给谁:绑定关系是 A → B → C 两层链。当 C 交年费时,B 拿一级、A 拿二级;A 自己上面若还有上级,不再分成(硬性两级)。
  4. 什么时候分:「仅首次缴费」只有第一次缴年费才产生分成;「每次续费」则每次续费都重新产生一次。
  5. 怎么到账:产生后进入下方「分销记录」为待结算,总后台点「结算」后变为已结算(当前为记账口径,不涉及真实打款)。

当前一级 + 二级比例合计 {{ distRateSum }}%,已超过 100%:每笔年费平台要倒贴,建议两项之和不大于 100%。

对绑定了区域联络官的医生 / 机构生效:选「不需要」= 联络官初审通过即自动生效,平台不再复审;未绑定联络官(公域)的登记始终由平台审核。
只对「登记了上级、需上级先初审」的区域联络官生效:选「不需要」= 上级一点确认就自动过审并自动绑定该上级,平台不再复核;没填上级、直接进平台队列的联络官始终由平台审核。与上一项是两把锁,互不影响。
{{ distSummary }}
切换分成类型不会清空另一组数值,切回即可复用

区域联络官成交分成(渠道保护)

这是什么:区域联络官绑定的医生在该区域联络官的合作机构接单(区域联络官推荐成交,或医生自行接单 / 机构派单后自动归属),订单结算时给区域联络官记一笔分成。

  1. 归属规则:医生已确认绑定到区域联络官 A,且岗位所属机构与 A 有「已生效合作绑定」或由 A 代录 → 该订单渠道归 A,区域联络官端「推荐进度」可见。
  2. 不限制医生:医生仍可自由接单,本规则只做归属留痕与分成,不拒绝接单请求。
  3. 什么时候记:订单进入「已结算」时按下方标准计算并写入结算单;区域联络官端「收益明细」显示为「订单渠道分成」。
  4. 口径:记账性质(不涉及真实打款),与上方年费分销互相独立。
默认启用但金额为 0,需填写后才产生实际分成

分销记录

受益区域联络官来源区域联络官类型层级年费分成状态操作
{{ r.beneficiaryName }}{{ r.sourceName }} {{ r.sourceType === 'ANNUAL_FEE_FIRST' ? '首次缴费' : '续费' }} {{ r.distributionLevel }} 级 {{ PC.money(r.sourceAmount) }} {{ PC.money(r.distributionAmount) }} {{ PC.statusCN(r.status) }}
暂无分销记录(区域联络官缴纳年费后自动产生)

字段分组

{{ roleCollapsed[sec.role] ? '▸' : '▾' }} {{ sec.name }} {{ sec.groups.length }} 组 待归类
暂无分组,点右上角「+ 新增」创建

{{ curGroupName }} · 字段定义({{ fields.length }})

{{ curGroupUsage.badge }}
本组字段出现在:{{ curGroupUsage.pages.join('、') }}
{{ curGroupUsage.note }}
手机号位置({{ phoneScopeCN }}) 手机号是登录凭证,不在下面这张清单里,只能用这一栏调位置;改完对应端刷新即可。
排序标识显示名类型必填注册必填注册位置敏感启用操作
{{ f.fieldKey }}{{ f.label }}{{ f.fieldType }} {{ regStepCN(f.regStep) }} {{ formSectionCN(f.formSection) }}
该组暂无字段,可在上方新增字段或切换到其他分组

{{ groupEdit.id ? '编辑分组' : '新增字段分组' }}

标识建议用 {{ rolePrefixTip }} 开头 —— 左栏会按前缀归到该角色下;即便不按前缀也不会丢,会落在「其他 / 未归类」。

编辑字段

全平台绑定关系(硬性两级:一级=平台直管,二级=挂上级)

区域联络官负责区域上级归属层级名下下级是否医生开通审核操作
{{ t.name }}待定归属 {{ t.regionText || '—' }} {{ t.parentName || '平台直管' }} {{ t.levelText }} · {{ t.manageNote }} {{ t.childCount }} {{ t.isDoctorAgency ? '是' : '否' }} {{ PC.reviewCN(t.reviewStatus) }}
暂无区域联络官,可先在“区域联络官管理”中添加
口径:上级只认「谁介绍入伙」(发展关系),不按区域自动推断;负责区域对不上只提示、不拦截。

区域联络官 ↔ 机构 合作绑定

区域联络官机构状态发起方申请说明生效/更新时间操作
{{ b.agencyName }} {{ b.institutionName }} {{ aiCN(b.status) }} {{ b.initiatedBy === 'AGENCY' ? '区域联络官发起' : '机构发起' }} {{ b.note || '—' }} {{ PC.fmt(b.agreedAt || b.updatedAt) }}
暂无绑定记录(规则:发起方需输入对方对接码 → 对方同意后生效)

归属申请(待处理)

方向下级目标上级发起方留言提交时间操作
{{ q.directionText }} {{ q.childName }} {{ q.parentName }} {{ q.initiatedBy === 'CHILD' ? '下级发起' : '上级发起' }} {{ q.note || '—' }} {{ PC.fmt(q.createdAt) }}
暂无待处理的归属申请
平台代处理会留下操作人记录;正常情况应由当事人双方自行同意。

消息模板

配置站内信 / 短信文案,支持 {变量} 占位符。未配置的场景自动回退到系统默认文案。
业务码名称渠道标题内容状态操作
{{ t.code }} {{ t.name }} {{ t.channel==='SMS' ? '短信' : (t.channel==='BOTH' ? '站内信+短信' : '站内信') }} {{ t.title }} {{ t.content }} {{ t.enabled ? '启用' : '停用' }}
暂无模板,点「+ 新增」创建(如审核场景 REVIEW_DOCTOR_PASS / REVIEW_TENANT_REJECT)

{{ tplForm.id ? '编辑模板' : '新增模板' }}×

可用占位符:{name} {reason} {orderNo} {jobTitle} {tenantName} {role}

实时预览

{{ previewTpl() }}

短信通道状态

真实发送
{{ sms.real ? '已启用(真实发信)' : '未启用' }}
开发模式
{{ sms.devMode ? '是(固定 123456)' : '否' }}
配置完整
{{ sms.configured ? '是' : '否(请检查 .env 的 SMS_* 配置)' }}
短信服务商:腾讯云 SMS(复用公司已有配置)。关闭开发模式并把 SMS_DEV_MODE 设为 0 即真实发信。

操作留痕(审核 / 冻结 / 删除等关键动作)

时间操作人角色动作对象详情IP
{{ PC.fmt(l.createdAt) }} {{ l.actorId ? String(l.actorId).slice(0, 8) : 'SYSTEM' }} {{ l.actorRole || '—' }} {{ l.action }} {{ l.targetType || '—' }} {{ l.targetId ? String(l.targetId).slice(0, 8) : '' }} {{ logDetail(l) }} {{ l.ip || '—' }}
暂无日志,操作发生后会实时记录在这里

{{ tenantDetail.name }} ×

角色
{{ tenantDetail.role === 'AGENCY' ? '区域联络官' : (tenantDetail.role === 'INSTITUTION' ? '机构' : '平台') }}
登录账号
{{ tenantDetail.username || '—' }}
联系手机
{{ tenantDetail.contactWxPhone || '—' }}
审核状态
{{ PC.reviewCN(tenantDetail.reviewStatus) }}
驳回原因
{{ tenantDetail.rejectReason || '—' }}
资质有效期
{{ tenantDetail.qualExpiry ? PC.fmt(tenantDetail.qualExpiry).slice(0,10) : '未填写' }}
套餐 / 状态
{{ tenantDetail.plan }} · {{ tenantDetail.frozen ? '已冻结' : '正常' }}
协议签署
{{ tenantDetail.agreementSigned ? '已签署' : '未签署' }}
机构介绍
{{ tenantDetail.institutionIntro || '—' }}
入驻时间
{{ PC.fmt(tenantDetail.createdAt) }}
提交审核时间
{{ tenantDetail.submittedAt ? PC.fmt(tenantDetail.submittedAt) : '—' }}
该租户暂无注册字段填写记录(可能为平台代建账号,或字段配置已调整)。
资质材料({{ tenantFiles.length }})已逐项标注对应材料;未标注的为补充材料
打开
{{ qualLabel(f) }}
{{ f.fileName }}
该租户尚未上传资质材料(可要求补充后再审)
× preview

{{ bindDlg.ctx === 'binding' ? '调整归属' : '指定归属并通过审核' }}

对象:{{ bindDlg.target.name }}
注意:登记时填的推荐人「{{ bindDlg.target.originParentName }}」现在不能当上级 —— {{ bindDlg.target.originParentBlock }}。已默认改为「平台直管」,请确认或另选一位上级。
他注册时登记的推荐人:{{ bindDlg.target.originParentName }} —— 上面已自动选中,确认无误直接通过即可;判断有误再改。
该联络官注册时没有登记推荐人,请手动指定上级。
会写进档案留痕,事后可查是谁、为什么这么定。
{{ bindDlg.err }}