全部 ({{ notificationCounts.all }})
未读 ({{ notificationCounts.unread }})
理赔 ({{ notificationCounts.claim }})
问题件 ({{ notificationCounts.issue }})
催办 ({{ notificationCounts.remind }})
这里是所有通知的汇总(列表最多显示最近 50 条)。左侧菜单上的红色数字就是那一类没读的条数(如问题件 3 条 → 问题件菜单显示 3),点某条通知会直接跳到对应菜单。
暂无通知
{{ notifTagLabel(notif.type) }}
{{ notif.title }}
{{ notif.content }}
{{ notif.createTime }}
全部标为已读
关闭
{{ new Date().getHours() < 12 ? '早上好' : (new Date().getHours() < 18 ? '下午好' : '晚上好') }},{{ currentUser.username }} 👋
松古中台 · 数据看板
实时 · {{ lastRefreshTime || '加载中' }}
{{ dashboardMonth ? dashboardMonth + ' 月数据' : '全部数据' }}
📱 手机版
您有 条待审批工单,点击去审批
📌 我的待办
{{ myTodo.pendingApproval }}
待我审批
{{ myTodo.myTasks }}
我的任务
{{ myTodo.myRejected }}
被驳回待修改
{{ myTodo.myApproving }}
我提交的审批中
{{ myTodo.unreadNotif }}
未读通知
🎯 核心指标
{{ dashNums.scopeTag }}
{{ k.label }}
{{ k.tag }}
¥{{ k.unit }}
{{ k.sub }}
⏱ 考核时效汇总
{{ dashHasSummary ? (dashboardMonth ? dashboardMonth + ' 月' : '本月') + ' · 下发 / 处理 / 完成率 / 超时 / 及时率 / 平均时长' : '该角色没有「数据分析」权限,这张表看不了' }}
看各角色个人维度 →
-
{{ scope.row.doneRate }}%
-
{{ scope.row.overdue }}
-
{{ scope.row.onTimeRate }}%
-
{{ scope.row.avgHandleHours }} h
-
{{ scope.row.examRate }}%
📦 各板块分析
{{ dashNums.scopeTag }} · 点标题右边的「看列表」直接跳到对应工单
理赔工单
看列表 →
{{ dashNums.claim.total }}单总额 ¥{{ fmtNum(dashNums.claim.amount) }}
{{ dashNums.claim.paid }}单已赔付 ¥{{ fmtNum(dashNums.claim.paidAmount) }}
{{ dashNums.claim.approving }}单审批中 ¥{{ fmtNum(dashNums.claim.approvingAmount) }}
{{ dashNums.claim.rejected }}单已驳回 ¥{{ fmtNum(dashNums.claim.rejectedAmount) }}
赔付率 {{ dashNums.claim.paidPct }}% · 今日新增 {{ dashNums.claim.today }} 单
({{ dashNums.claim.scope }})
问题件工单
看列表 →
{{ dashNums.issue.total }}单下发总数
{{ dashNums.issue.pending }}单待处理
{{ dashNums.issue.processing }}单处理中
{{ dashNums.issue.done }}单已完成
完成率 {{ dashNums.issue.doneRate }}%
· 及时率 {{ dashNums.issue.onTimeRate === null ? '-' : dashNums.issue.onTimeRate + '%' }}
· 超时 {{ dashNums.issue.overdue }} 单
· 平均处理 {{ dashNums.issue.avgHours === null ? '-' : dashNums.issue.avgHours + ' h' }}
· 🚨 疑似遗失 {{ dashNums.issue.lost }} 单
({{ dashNums.issue.scope }}) · 时效类指标需要「数据分析」权限
破损 / 污损
看列表 →
{{ dashNums.damage.total }}单上报总数
{{ dashNums.damage.pending }}单待处理
{{ dashNums.damage.processing }}单处理中
{{ dashNums.damage.done }}单已完成
完成率 {{ dashNums.damage.doneRate }}%
· 及时率 {{ dashNums.damage.onTimeRate === null ? '-' : dashNums.damage.onTimeRate + '%' }}
· 平均处理 {{ dashNums.damage.avgHours === null ? '-' : dashNums.damage.avgHours + ' h' }}
{{ b.label }}
{{ b.value }} 单
上报及时率 {{ dashNums.damage.examRate === null ? '-' : dashNums.damage.examRate + '%' }}
(有效 ÷ 有效+超时上报)
无头件
看列表 →
{{ dashNums.headless.total }}件登记总数
{{ dashNums.headless.pending }}件待认领
{{ dashNums.headless.claiming }}件待出库
{{ dashNums.headless.done }}件已完结
完结率 {{ dashNums.headless.rate }}%({{ dashNums.headless.scope }})
退件
看列表 →
{{ dashNums.ret.total }}件退回件数
{{ dashNums.ret.inStock }}件待交接
{{ dashNums.ret.delivering }}件派送中
{{ dashNums.ret.exception }}件异常
签收率 {{ dashNums.ret.rate }}%(已签收 {{ dashNums.ret.signed }} 件)({{ dashNums.ret.scope }})
📈 理赔趋势(按月)
{{ trendRange && trendRange.length === 2 ? trendRange[0] + ' ~ ' + trendRange[1] : '默认近 6 个月' }}
重置为近 6 个月
📋 理赔工单列表
共 {{ filteredOrders.length }} 条
物流查询
导出Excel
全部 {{ claimStats.total || 0 }}
审批中 {{ claimStats.approving || 0 }}
已通过 {{ claimStats.approved || 0 }}
已赔付 {{ claimStats.paid || 0 }}
已驳回 {{ claimRejectedCount }}
查询看全部 重置
{{ (filterDateRange && filterDateRange.length === 2) ? '' : (claimAllTime ? '全部时间' : '默认只看本月') }}
{{ scope.row.type }}
{{ scope.row.trackingNo }}
物流
{{ (scope.row.amount || 0).toFixed(2) }}
{{ scope.row.paymentMethod }}
({{ scope.row.paymentSubMethod }})
{{ scope.row.bearParty }} ({{ scope.row.companyRatio || 0 }}% / {{ scope.row.salesmanRatio || 0 }}%)
{{ scope.row.status }}
待 {{ scope.row.currentApprover.approverName }}
({{ scope.row.approvalApproved + 1 }}/{{ scope.row.approvalTotal }})
{{ approvalWho(scope.row.approvalRecords[scope.row.approvalRecords.length-1]) }}
-
详情
审批
重新提交
更多
留言
获取支付宝凭证
删除工单
共 {{ filteredOrders.length }} 条记录
📋 问题件工单列表
共 {{ issueOrders.length }} 条
其中未完成急件 {{ issueUrgentCount }} 条(排在最前)
导出Excel
全部 {{ issueStats.total || 0 }}
未分配 {{ issueStats.unassigned || 0 }}
待处理 {{ issueStats.pending || 0 }}
处理中 {{ issueStats.processing || 0 }}
已完成 {{ issueStats.resolved || 0 }}
超时未处理 {{ issueStats.overdue || 0 }}
🚨 疑似遗失 {{ issueStats.lost || 0 }}
未完成急件 {{ issueStats.urgent || 0 }}
查询 重置看全部
{{ scope.row.priority || '普通' }}
{{ scope.row.status }}
🚨 疑似遗失
-
超时未处理
超时处理
-
详情
微信下发
未绑微信
更多
处理(写处理结果)
物流轨迹
转理赔
留言
轨迹核查
催办
删除工单
共 {{ issueOrdersTotal }} 条{{ (issueFilter.dateRange && issueFilter.dateRange.length === 2) ? '' : (issueFilter.allTime ? '(全部时间)' : '(默认只看本月)') }}
🧰 破损工单列表
共 {{ damageOrders.length }} 条
待处理 {{ damageStats.pending }}
及时上报率 {{ damageStats.examRate }}%(有效 {{ damageStats.examValid || 0 }} / 超时 {{ damageStats.examOvertime || 0 }} / 待核实 {{ damageStats.examPending || 0 }})
+ 破损登记
刷新
全部 {{ damageStats.total || 0 }}
待处理 {{ damageStats.pending || 0 }}
处理中 {{ damageStats.doing || 0 }}
已完成 {{ damageStats.done || 0 }}
上报有效 {{ damageStats.examValid || 0 }}
超时上报 {{ damageStats.examOvertime || 0 }}
待核实 {{ damageStats.examPending || 0 }}
查询
看全部
📥 导出这个列表
共 {{ damageTotal }} 条{{ (damageFilter.dateRange && damageFilter.dateRange.length === 2) ? '' : (damageFilter.allTime ? '(全部时间)' : '(默认只看本月)') }}
已选 {{ damageSelection.length }} 张
✓ 批量完成结单
指派责任人
取消选择
+{{ scope.row.images.length - 2 }}
无图
{{ scope.row.trackingNo }}
{{ scope.row.damageType }}
{{ scope.row.status }}
{{ scope.row.serviceName || '未分配' }}
{{ scope.row.reporterName || '-' }}
{{ scope.row.examResult || '未判定' }}
人工
{{ scope.row.examStartKind || '' }}
改有效
改超时
改回待核实
{{ { system: '系统', wechat: '微信', mp: '小程序', dingtalk: '钉钉' }[scope.row.source] || scope.row.source }}
详情
{{ scope.row.status === '已完成' ? '已结单' : '处理' }}
更多
{{ scope.row.status === '已转理赔' ? '已转理赔' : '转理赔' }}
留言({{ scope.row.commentCount }})
重新核查考核
删除工单
工单号:{{ damageCurrent.orderNo }}
快递单号:{{ damageCurrent.trackingNo }}
品牌:{{ damageCurrent.expressCompany || '-' }}
类型:{{ damageCurrent.damageType }}
状态:{{ damageCurrent.status }}
责任人(客服):{{ damageCurrent.serviceName || '未分配' }}
上报人:{{ damageCurrent.reporterName || '-' }}
上报时间:{{ damageCurrent.createTime }}
说明:{{ damageCurrent.description || '-' }}
上报时效:
{{ damageCurrent.examResult || '未判定' }}
(考核时限 {{ damageCurrent.examHours }} 小时)
考核开始:{{ damageCurrent.examStartTime || '—' }}
(取自「{{ damageCurrent.examStartKind }}」)
轨迹状态:{{ damageCurrent.traceState }}
依据节点:{{ damageCurrent.examStartText }}
{{ damageCurrent.examNote }}
处理记录:
-
{{ r.username }} ({{ r.replyType || '处理' }}):{{ r.content }}
{{ r.createTime }}
留言:
{{ c.username || c.workNo }}
微信
{{ c.createTime }}
{{ c.content }}
关闭
留言
{{ damageCurrent.status === '已转理赔' ? '已转理赔' : '转理赔' }}
工单:{{ damageReplyRow.orderNo }} 单号:{{ damageReplyRow.trackingNo }} {{ damageReplyRow.damageType }}
这里就是最终写进工单的处理意见,随便改,没有任何固定选项。
{{ t }}
清空
上面只是"点一下写进框里"的省事短语,填进去之后照样能改(不再是必选的下拉)
处理中
已完成(结单)
已关闭
取消
提交
随便改,没有固定选项
{{ t }}
清空
已完成(结单)
处理中
已关闭
取消
确认处理 {{ damageSelection.length }} 张
文件正在后台生成,请到
「导出中心」 下载。
大一点的数据可能要等几秒;列表刷新一下就能看到。
导出中心里只显示你自己导出的任务(管理员可以看全部)。
知道了
去导出中心
👤 我的工单 · {{ mineTypeLabel }}
{{ mineRows.length }} 条
{{ mineSub === 'initiated' ? '我发起的' : '待我处理' }}
当前工号:{{ currentUser.workNo }} {{ currentUser.username }}
刷新
{{ mineType === 'claim' ? '💰' : (mineType === 'issue' ? '⚠️' : '🧰') }} {{ mineTypeLabel }}
📤 我发起的
📥 待我处理
查询
{{ mineHint }}
¥{{ Number(scope.row.amount || 0).toFixed(2) }}
{{ scope.row.status }}
{{ scope.row.priority || '普通' }}
{{ scope.row.status }}
{{ scope.row.serviceName || '未分配' }}
{{ scope.row.reporterName || scope.row.reporterWorkNo }}
{{ scope.row.status }}
详情
留言
说明:「我发起的」= 工单的登记/提交人是我;「待我处理」= 指派给我的未完成工单(问题件=处理人,破损=责任客服,理赔=处理人)。全部工单请到左侧对应的「理赔/问题件/破损工单 → 工单列表」查看。
⚙️ 审批管理
共 {{ filteredOrders.length }} 条
只处理理赔工单(问题件/破损/无头件在各自菜单处理)
导出Excel
支
支付宝可用余额
余额不足 · 请及时充值
余额充足
告警线 ¥{{ alipayBalance.threshold }}
¥ {{ alipayBalance.availableAmount.toFixed(2) }}
冻结 ¥{{ alipayBalance.freezeAmount.toFixed(2) }}
|
账户总额 ¥{{ alipayBalance.totalAmount.toFixed(2) }}
|
更新于 {{ alipayBalance.queryTime }}
可用余额已低于告警线 ¥{{ alipayBalance.threshold }},请尽快充值,避免赔付转账失败
余额查询失败:{{ alipayBalanceError }}
支付宝余额查询中…
刷新余额
查询 重置
审批管理是待办清单,不限时间(跨月待审也能看到)
{{ scope.row.type }}
{{ (scope.row.amount || 0).toFixed(2) }}
{{ scope.row.paymentMethod }}({{ scope.row.paymentSubMethod }})
{{ scope.row.bearParty }} ({{ scope.row.companyRatio || 0 }}% / {{ scope.row.salesmanRatio || 0 }}%)
{{ scope.row.status }}
待 {{ scope.row.currentApprover.approverName }}
({{ scope.row.approvalApproved + 1 }}/{{ scope.row.approvalTotal }})
{{ approvalWho(scope.row.approvalRecords[scope.row.approvalRecords.length-1]) }}
-
详情
审批
修改后重新提交
删除
共 {{ filteredOrders.length }} 条记录
🔐 权限管理
新增角色
权限分两类:系统权限(电脑后台能看哪些菜单)和 手机端权限(微信 / 钉钉小程序各自能看到哪些入口)。
⚠️ 小程序还没上线,这里先配好等上线即生效,现在配了也不影响使用。
手机端权限没配置过的角色 = 该端全部可见,配置过就严格按勾选。
{{ menuLabel(m) }}
(空 = 没有后台权限)
微信 {{ scope.row.miniWechat === null ? '未配置(跟系统权限)' : (scope.row.miniWechat.length + ' 项') }}
钉钉 {{ scope.row.miniDingtalk === null ? '未配置(跟系统权限)' : (scope.row.miniDingtalk.length + ' 项') }}
{{ scope.row.isAdmin ? '是' : '否' }}
编辑删除
共 {{ users.length }} 人 / {{ deptOptions.length }} 个部门,点部门进去看人
👥 全部人员{{ users.length }}
🔸🏢 {{ d.name }}
{{ d.count }}
+ 新建部门
外部人员 / 承包区
返回部门
{{ userDeptLabel }}
{{ filteredUsers.length }} 人
批量分配 ({{ selectedUsers.length }})
批量调部门 ({{ selectedUsers.length }})
清空选择
{{ scope.row.deptName }}
未分配部门
+{{ extraMenuCount(scope.row) }} 项
仅角色权限
分配权限
共 {{ filteredUsers.length }} 人
添加员工
同步钉钉(只新增人员)
仅更新已有(钉钉ID/部门)
从钉钉导入员工
重名核查
部门→角色规则
在职 {{ users.length - leftUsers.length }}
离职 {{ leftUsers.length }}
全部 {{ users.length }}
⚠️ {{ roleTodoUsers.length }} 人角色待确认
共 {{ users.length }} 人 / {{ deptOptions.length }} 个部门,点部门进去看人
👥 全部人员{{ users.length }}
🔸🏢 {{ d.name }}
{{ d.count }}
离职 {{ d.leftCount }}
+ 新建部门
外部人员 / 承包区
返回部门
{{ empDeptLabel }}
{{ filteredEmployees.length }} 人
清空筛选
批量调部门 ({{ selectedUsers.length }})
清空选择
{{ scope.row.deptName }}
未分配部门
{{ scope.row.role }}
待确认
已离职
{{ scope.row.leftFrom === 'manual' ? '(手工标)' : '(钉钉)' }}
在职
编辑恢复正常标记离职删除
新增规则
编辑删除
+ 新增时效
这里决定「多久算超时 / 多久算遗失」,以及超时前多久开始催办责任人。
定时任务按这张表判定;超时/遗失前会推微信 + 站内消息给责任人(同一条单同一种提醒一天只催一次;站内消息在电脑端/手机H5 登录后能看到)。
🚨 问题件「优先级」时限倍数
上面那张表配的是普通单的时限;这里填的是急件的倍数(越小越早催、越早算超时)。
例:某类型时限 24 小时,紧急 ×0.5 → 12 小时就算超时;非常紧急 ×0.25 → 6 小时。
倍数在下一小时的定时任务里生效(最少 1 小时)。
保存倍数
恢复显示
🧰 破损上报考核时限(超标算「超时上报」)
破损上报考核时限
默认 {{ damageExamDefault }} 小时 ·
按角色设过 {{ damageExamRoleRows.filter(r => r.hours).length }} 条 ·
个人微调 {{ damageExamPersonalCount }} 人
(共 {{ damageExamRows.length }} 人)
编辑
立即全员同步
改完对新登记的破损单生效;老单可点列表里的「重新核查」重算
破损登记时系统会查物流轨迹,取首次派件时间(没有派件记录就取最后一次到件时间)作为考核开始时间;
登记时间晚于它超过这里的时限 → 超时上报;在时限内 → 有效;查不到轨迹 → 待核实(不计入及时率)。
及时上报率 = 有效 ÷(有效 + 超时上报)。
用法:给每个角色填一个数(填 0 / 留空 = 用全局默认)——
保存后立刻同步,并且每 30 分钟再自动同步一次;以后这个角色的新人进来会自动跟着走。
个别人要特殊对待,切到「按个人微调」单独设(设过的不再被角色覆盖;清空又回到跟角色走)。
小时(角色没配时用它)
保存默认
立即全员同步
按角色设置
{{ scope.row.userCount }} 人
{{ scope.row.hours }} 小时
用默认({{ damageExamDefault }})
保存
清空(用默认)
按个人微调(一般不用动)
小时
应用到已选 {{ damageExamSelection.length }} 人
改回跟角色走
取消选择
只看单独设置过的({{ damageExamPersonalCount }} 人)
显示全部员工({{ damageExamRows.length }} 人)
默认只看有差异的人,页面清爽;要批量改就切到"显示全部"再勾选
{{ scope.row.hours }}
用默认({{ damageExamDefault }})
角色同步
个人微调
默认
共 {{ damageExamRows.length }} 人(个人微调过:{{ damageExamPersonalCount }} 人,当前显示 {{ damageExamView === 'all' ? damageExamRows.length : damageExamRows.filter(r => r.hours).length }} 人)。改完对**新登记**的破损单生效;老单可以点列表里的「重新核查」重算。
关闭
{{ timeoutObjName(scope.row.objType) }}
{{ scope.row.condKey }}
全部(兜底)
超时前 {{ scope.row.remindBeforeHours }} 小时
不提前催
{{ scope.row.lostHours }}
—
{{ scope.row.enabled ? '启用' : '停用' }}
编辑
删除
同一对象下,先匹配具体条件,匹配不到才用「全部」那条
超过就算超时
0 = 不提前催,只在超时后催
多久没有任何新路由 = 疑似遗失
取消
保存
新增类型
这里就是登记问题件时「问题类型」下拉框的来源(电脑端 + 手机端共用);改名会把历史工单一起改过来,已经被工单用过的类型不能删除、只能停用。「微信回复选项」可以按科目单独配:下发这张工单时,微信里「直接回复数字即可」那段显示的就是该类型的选项(留空 = 用默认 {{ issueTypeDefaultReplyLine }})。「自动核查签收」是定时任务去查物流轨迹:查到即关单给「查签收 / 催件」这种"签收了就说明事情结了"的;只提醒不关单给「签收未收到」这种 —— 物流签收本来就是它的成因(客户没收到),不能拿签收节点关单
{{ scope.row.isActive === 0 ? '已停用' : '启用' }}
{{ issueReplyText(scope.row) }}
默认({{ issueTypeDefaultReplyLine }})
{{ scope.row.lostHours }} 小时
不监控
编辑
{{ scope.row.isActive === 0 ? '启用' : '停用' }}
删除
下发这张工单时,微信里「直接回复处理结果即可」那段就按这里显示(业务员回下面某个文案 → 写进留言、按"结单"开关改状态)。
结单 = 选它就把工单改成「已完成」;必须写说明 = 只回那个词不认,要带一句说明(默认只有「其他」要)。
序号只是内部排序用的,业务员不用回数字(回数字只记留言、不改状态 —— 他们常拿「1」表示"收到")。
留空 = 用默认:{{ issueTypeDefaultReplyLine }}
删
+ 加一项
填入默认选项
清空(改回用默认)
序号只能是 1-9 且不能重复(只是内部排序,业务员不用回数字);最多 9 项
定时任务去查物流轨迹(查签收/催件这类勾上)
自动关单
只提醒、不关单
只提醒、不关单:给「签收未收到」这类用 —— 物流显示签收本来就是这类问题的成因(客户没收到),
拿签收节点关单 = 把问题当成已解决。系统只会写一条留言 + 弹窗提醒去核实收货人,工单状态不动。
要结单请让业务员/客服回下面「微信回复选项」里勾了结单的那个(例如「已收到」)。
类型名里带「未收到 / 没收到 / 未签收 / 未送达」的,这里默认就是"只提醒"。
查到退回记录就自动关单(拦截退回这类勾上)
填 0 = 不监控;填了之后:既没签收也没退回、而且这么久没有任何新轨迹 → 标「疑似遗失」并弹窗提醒客服
取消保存
新增品牌
启用中的品牌会出现在理赔登记的下拉框里;「客服工号」决定该品牌的破损/污损工单自动下发给谁
{{ brandServiceText(scope.row) }}
未设置 —— 会通知全部客服
{{ scope.row.isActive === 1 ? '启用' : '停用' }}
编辑
{{ scope.row.isActive === 1 ? '停用' : '启用' }}
删除
发布新版本
发布后,所有账号登录时会弹出更新内容
删除
📘 《松古中台 · 系统使用手册》
覆盖登录与权限、数据看板、五大业务模块、审批流、微信/钉钉推送配置、报表导出、系统设置、FAQ 与微信指令速查卡。支持在线查看,也可以打印成册发给同事。
打开使用手册
打开产品介绍图册
打印 / 存 PDF(在手册页点打印)
常用入口速记
管理端:/claim.html 无头件手机版:/headless.html 客户寄件:/order.html
使用手册:/manual.html 产品图册:/promo.html
⚠️ 图文里出现的电话、金额、单号都是示例,实际以系统数据为准。
下载备份
上传备份恢复
📌 备份:点击下载当前数据库的备份文件(.db)
📌 恢复:选择之前备份的 .db 文件上传
📦 无头件管理
共 {{ headlessOrders.length }} 条
📱 手机版
+ 登记无头件
📭 待认领
{{ headlessStats.pending || 0 }}件
📤 待出库
{{ headlessStats.claiming || 0 }}件
✅ 已完结
{{ headlessStats.done || 0 }}件
📊 总计
{{ headlessStats.total || 0 }}件
进出港分类:
进港 共 {{ headlessTypeStats['进港'].total }} 件 · 未完结 {{ headlessTypeStats['进港'].undone }} 件
出港 共 {{ headlessTypeStats['出港'].total }} 件 · 未完结 {{ headlessTypeStats['出港'].undone }} 件
⚠ 未区分 {{ headlessTypeStats['未区分'].total }} 件
查询
重置
{{ scope.row.type || '未区分' }}
¥{{ (scope.row.estimatedValue || 0).toFixed(2) }}
{{ scope.row.status }}
详情
认领
出库完结
改进出港
删除
共 {{ headlessOrders.length }} 条记录
🖨️ 寄件下单
小客户扫码取号 · 客服扫码打单
查询
+ 新增面单账号
{{ scope.row.clientName }}
公共
{{ scope.row.partnerKey ? '••••••' : '未填' }}
{{ scope.row.tempId }}
未填
{{ scope.row.lastTestResult }}
未测试
{{ scope.row.isActive ? '启用' : '停用' }}
默认
测试
编辑
删除
查询
+ 新增小客户
{{ kuaidicomLabel(scope.row.defaultKuaidicom) }}
-
{{ scope.row.token ? '已生成' : '无' }}
寄件码
编辑
重发码
删除
快递100
快宝
快宝:走 get.waybill.number,只需「快递平台账号 + 密码」,**不需要打印机**(推荐)
快递100:走 label/order,要「U码 + 密码」,出图片还需「面单模板ID」
{{ k.label }}
极兔必开
原始返回:{{ presaleAccountTest.raw }}
测试这个账号
取消
保存
取消
保存
{{ presaleQrClient.name }}
{{ presaleQrError }}
小客户微信「扫一扫」这个码 → 填收件人信息 → 系统自动取号
{{ presaleQrUrl }}
复制链接
打印这张码
关闭
📣 消息推送(微信 / 钉钉)
群通知 · 业务员下发 · 群内查单 · 定时报表
+ 新增钉钉群机器人
刷新
测试工作通知(按工号)
群机器人怎么拿:钉钉群 → 群设置 → 智能群助手 → 添加机器人 → 自定义 → 安全设置勾「加签」→ 复制 Webhook 和密钥
{{ scope.row.secret ? '已配' : '无' }}
{{ scope.row.enabled ? '启用' : '停用' }}
{{ scope.row.lastSendTime }}还没发过
发测试
编辑
删除
🚨 服务异常告警(系统崩了 / 不通了,钉钉直接推给你)
什么情况会推:服务不通/打不开(看门狗每 2 分钟查一次)、服务异常重启(上次不是正常退出)、
接口大面积 5xx、未捕获异常、磁盘快满(≥85% 提醒 / ≥92% 严重,盘满会让上传和数据库都写不进去)。
恢复正常时也会推一条「已恢复」。
发给谁:按下面工号发钉钉工作通知(需要这个人已绑钉钉);一个都没绑就退化成发「默认钉钉群」;另外系统里也会留管理员站内通知。
防刷屏:同一种异常 {{ alertCfg.minIntervalMin }} 分钟内只发一次。
保存
发测试消息
刷新
{{ x.workNo }}
{{ x.username || '(未知工号)' }} —— {{ x.hint }}
还没填工号:现在只会发「默认钉钉群」
🤖 智能助手(右下角那个圆头像)
不配也能用:找单号 / 看数据 / 讲功能怎么用 都是本地算的(免费、不联网)。
想让它能答任何问题,就在这里填一个 OpenAI 兼容的大模型接口(如 DeepSeek、通义、Kimi):地址填
https://api.deepseek.com/v1 这种(不要带 /chat/completions),再填模型名和 Key。
Key 只存在服务器数据库里,页面上不会再显示出来。
保存
刷新
清空 Key
已配 Key
未配 Key(本地问答模式)
掉线原因/时间见下面表格的「状态」与提示。请点这个号那一行的
「扫码/重新登录」 用微信重新扫一次码;
也可以先点「刷新」,系统会自动去平台确认并重新取二维码。
刷新并重新取码
立即扫码登录
+ 新增机器人
刷新
一个机器人 = 一个微信小号(托管协议,不用自己开电脑跑网关)
保存口令
复制当前口令
当前生效:{{ wxStatusData.activateCode || '(未设置)' }}
—— 改完立即生效;已经激活过的群 / 人不受影响。
{{ scope.row.type === 'pad' ? '平板协议' : (scope.row.type === 'wcf' ? 'WCF(Windows)' : '安卓自动化') }}
在线{{ scope.row.wxNick ? ' · ' + scope.row.wxNick : '' }}
等待扫码
异常
未登录
{{ scope.row.enabled ? '启用' : '停用' }}
扫码登录
编辑
删除
只看这些(已激活 + 未绑工号)
最近激活:{{ (wxUnbound.list || []).slice(0,6).map(x => x.name).join('、') }}
客服办公室 / 管理层群 / 财务群这种只当推送目标的群,点「编辑」勾上「不需要绑业务员」就不再提醒。
查询
一键自动匹配工号
🏷 一键自动打标签
+ 手工添加
已选 {{ wxContactSelection.length }} 个
+ 打标签
- 去掉这些标签
= 覆盖为这些
📤 设为只推送(不接收消息)
📥 恢复正常接收
取消选择
{{ scope.row.ctype === 'group' ? '群' : '好友' }}
只推送
管理群
无需绑定
已绑
待绑
无需
改回待绑
{{ scope.row.source === 'sync' ? '网关同步' : (scope.row.source === 'inbound' ? '口令激活' : '手工') }}
编辑
删除
共 {{ (wxContacts || []).length }} 个{{ wxContactSelection.length ? (',已勾选 ' + wxContactSelection.length + ' 个') : '' }}
(勾选只作用于当前页;要跨页批量打标签请先调大每页条数)
🙋 客服微信(共 {{ (wxCsList || []).length }} 个,其中 {{ wxCsActiveCount }} 个正在忽略)
刷新
+ 手工添加
{{ scope.row.source === 'cmd' ? '群里发指令' : '后台手工' }}
{{ Number(scope.row.enabled || 0) ? '忽略中(不接收他的消息)' : '已关闭(正常接收)' }}
{{ Number(scope.row.enabled || 0) ? '关闭客服功能' : '开启客服功能' }}
编辑
删除
💬 微信规则({{ wxRuleChannelCount('wechat') }})
📌 钉钉规则({{ wxRuleChannelCount('dingtalk') }})
+ 新增规则
刷新
📊 定时报表(理赔/问题件 日报·月报)在这里配 →
{{ wxEventName(scope.row.eventKey) }}
{{ ruleChannel(scope.row) === 'dingtalk' ? '钉钉' : '微信' }}
{{ scope.row.condJson }}
全部
{{ wxTargetText(scope.row) }}
{{ scope.row.enabled ? '启用' : '停用' }}
编辑
删除
+ 新增推送
刷新
到点自动发到群/人:理赔日报·月报、问题件日报·月报,还能发自定义内容和当天天气;时间、周几/几号、统计范围都能自己选
{{ scope.row.reportTypeName || wxReportTypeName(scope.row.reportType) }}
{{ scope.row.channelName || '💬 微信' }}
{{ wxReportSchedule(scope.row) }}
{{ wxReportRange(scope.row) }}
{{ wxRankSummary(scope.row) }}
—
{{ scope.row.targetName || scope.row.targetId || '(未设置)' }}
{{ scope.row.lastRunTime }}
累计 {{ scope.row.runCount || 0 }} 次
还没发过
{{ scope.row.enabled ? '启用' : '停用' }}
预览
立即发
编辑
删除
🤖 机器人调试台
试一句话,看机器人会怎么判断(走哪条分支 / 命中哪张单 / 认成哪个选项 / 会不会结单 / 会回什么 / 会动什么数据)
—— 跑在**数据库快照**上,不动真实数据、也不会真发微信
当成群消息
@了机器人
▶ 模拟这一句
快捷试:
已签收
已送达
已处理
已退回
帮助
我的工单
客服
{{ wxSimResult.why === 'closed' ? '✅ ' : (wxSimResult.handled ? 'ℹ️ ' : '🚫 ') }}{{ wxSimResult.judgeText }}
原因:{{ wxSimResult.note }}
判定链路:{{ (wxSimResult.steps || []).join(' → ') }}
命中工单:{{ wxSimResult.trace.orderNo }}
(怎么找到的:{{ wxSimResult.trace.how }})
认成选项:{{ wxSimResult.trace.option }}
状态:{{ wxSimResult.trace.statusFrom }} → {{ wxSimResult.trace.statusTo }}
会回复:
{{ wxSimResult.reply }}
会动的数据:
留言 {{ (wxSimResult.effects.comments || []).length }} 条
微信推送 {{ (wxSimResult.effects.outbound || []).length }} 条
站内通知 {{ (wxSimResult.effects.notifications || []).length }} 条
工单状态 {{ wxSimResult.effects.order ? wxSimResult.effects.order.status : '不变' }}
(模拟在快照库上跑,这些都不会真的发生)
只看有用
全部
刷新
把卡住的重发
清理无用({{ wxLogNoise }})
待发 {{ wxStatusData.pending || 0 }} ·
已发 {{ wxStatusData.sent || 0 }} ·
失败 {{ wxStatusData.failed || 0 }} ·
收到 {{ wxStatusData.inbound || 0 }} 条
「只看有用」= 真处理了工单 / 查了单号 / 绑定 / 帮助 + 所有发出去的;
下面这些自动过滤掉(点「全部」能看):未激活的群或人、机器人自己发的、空消息、
群里没 @机器人的闲聊、「只回了一句提示、其实什么都没做」的、激活口令。
{{ wxLogNoise ? '另外还有 ' + wxLogNoise + ' 条无用记录' : '' }}
{{ scope.row.channel === 'dingtalk' ? '钉钉' : '微信' }}
{{ scope.row.direction === 'out' ? '发出' : '收到' }}
{{ scope.row.direction === 'out' ? (scope.row.chatName || scope.row.toId) : ((scope.row.chatName ? '群:' + scope.row.chatName : '私聊:') + (scope.row.senderName || '')) }}
{{ { pending: '待发', sending: '发送中', sent: '已发', failed: '失败', received: '已收到' }[scope.row.status] || scope.row.status }}
{{ wxLogResultText(scope.row) }}
共 {{ wxLogTotal }} 条
发送(进待发队列)
消息会进入待发队列,托管协议会自动发出去
① 激活口令(陌生群 / 陌生人必须先发这一句)
{{ wxStatusData.activateCode || '理赔机器人上线' }}
复制口令
也认这些别名:{{ (wxStatusData.activateAlias || []).join(' / ') }}
每个群、每个人只需激活一次;未激活的会话发什么都不会被处理(消息直接忽略)。
③ 使用流程
1. 管理员在「机器人」页扫码登录(小号),状态变「在线」
2. 在每个要用的群里发一句激活口令 → 群被登记进系统
3. 「群与联系人」→ 一键自动匹配工号(★ 业务员自己把手机号发过来就自动绑上工号)
4. 「推送规则」配:什么事件 → 发到哪个群 / 发给工单处理人
5. 群里发「查 单号」查物流;问题件列表点「微信下发」推给业务员
② 指令与回复
复制指令菜单
复制给业务员的说明
④ 注意
· 平板协议是第三方非官方方案,务必用小号,有封号风险
· 未激活的群/人:消息会被直接忽略(服务日志写「🔒 未激活…已忽略」)
· 绑了工号的微信 = 自动激活;后台也能手工开关「已激活」
· 收不到回复时:先在扫码弹窗点「发测试消息」,验证这个号能不能发出去
· 定时报表在「报表推送」里配:选类型(理赔/问题件 × 日报/月报)→ 填时间 → 选发到哪 → 保存即生效
· 报表保存后建议先点「预览」看内容,再点「立即发」验证一次,最后交给定时任务自动发
· 工单处理/留言默认在私聊里做;群绑上工号后,就能在群里 @机器人 处理(工号关联的是谁,这个群就是谁的群)
· 系统里的「留言」弹窗就是双向沟通:你留言 → 推到业务员微信;业务员微信回复 → 进这里(标「微信」)
平板协议(扫码登录)
WCF(Windows Hook)
安卓自动化
取消
保存
群
微信好友
给群绑上业务员工号后 —— ① 这些业务员的工单会直接下发到群里;② 群里 @机器人 + 带快递单号 + 处理结果 就能处理(等于群就是他们的处理端)
承包区群里有多个业务员就都选上(可多选)。
🔒 一个工号只能绑一处:要么绑一个群,要么绑私人微信 —— 不能同时绑,也不能绑多个群(否则同一条工单会被处理多次、消息重复)。
普通群不用绑,绑了才会在群里处理工单。绑工号只代表"这个群是这些业务员的群",不代表承包区;要按承包区/网点群发,用标签(🏷)自己标。
打过标签后,推送规则 / 定时推送里选「按标签(群/好友,可多选)」就能一次群发。
勾上 = 这个群/人只是"推送给它"的目标(客服办公室、管理层群、财务群这种),不需要绑业务员;勾上后就不再提醒你绑
勾上 = 只发不收:机器人不接收这个群/人的消息、也不回复(群里的聊天不会被当成工单指令、不会建单、照片也不会被暂存);
但推送照旧发得进来(推送规则、定时推送、手工下发都能发到这个群)。适合"只用来接收推送数据的群"。
@机器人 的那句仍然会处理(2026/9/21 起)。
勾上 = 管理群:这个群不用绑工号机器人也照常处理,只要 @机器人 就能问;
回答按管理员口径(能看到全公司数据,含金额);只读——不会替人改单/放款/审批。
适合「管理层群」「客服办公室群」这种要问全局数据、但不绑某个业务员工号的群。
取消
保存
昵称和 wxid 至少填一个。按昵称匹配比较宽松:同名的微信也会被一起忽略,所以能填 wxid 就填 wxid。
「忽略」= 这个微信在所有群发的消息机器人都当没看见(不回复、不建单、不存图片、不写流水)。
取消
保存
⏰ 什么时候发:{{ wxEventDesc(wxRuleForm.eventKey) }}
只发给已打上这些标签的群 / 好友;没打标签的收不到。建议在「群与联系人」页先批量打一遍。
当前命中:{{ wxTagHitText(wxRuleForm.targetId) }}
—— 每次发送时实时按标签算,以后新增的群/好友只要打上这个标签,会自动带上。
自动发给这张工单的处理人(按处理人工号找已绑定的微信;没有个人微信时回落到该工号关联的群)
自动发给这张工单的发起人 / 登记人 / 上报人(按工号找已绑定的微信)
自动发给这张工单的处理人(按处理人工号发钉钉工作通知,需该员工绑了钉钉 UserId)
不填 = 该事件全部满足
填入默认模板
占位符:{{ wxPlaceholderHint }}
💡 批量处理(破损工单勾选多张一次结单)时,同一个收件人只会收到一条消息:
{{orderNo}} 会自动变成「单号1、单号2、单号3…」把所有单号排在一条里,
{{count}} 是这一批的单数。所以模板不用改也能收到合并后的推送。
取消
保存
安全设置如果选的是「自定义关键词」,这里可以留空,但关键词要包含「理赔」之类的词
取消
保存
取消
发送
{{ wxReportTypeHint(wxReportForm.reportType) }}
你写什么就发什么(不会被改动排版);上面的「页头/页脚」也会一起发出去。
{{ c }}
数据源 open-meteo(免费),给出的是当天实时 + 未来天气;地点按县/市写最准。
只看今天
今天+明天
今天+明天+后天
{{ f.name }}
0~23 时都能选;到点后 30 分钟内发出(服务器每 5 分钟检查一次)
当月没这天就按月末最后一天发
当天
昨天
本月
上月
月初发选「上月」,月底发选「本月」
早上发建议选「昨天」,晚上发选「当天」
{{ s.name }}
前几名
末尾几名(填 0 = 不显示末尾)
指标后面的「越少越好」表示**数字小才是好的**(比如超时、平均时长、理赔金额),
这些项的「末尾」列的是**最多/最慢**的那几个(标成 ⚠️ 要盯一下);
比率和时长类会要求满 3 单才上榜,免得"只做 1 单"的人霸榜;同榜重名的人自动带工号。
口径跟「📊 数据分析」页面**完全一致**(按角色归属,不是另算一套)。
只发给已打上这些标签的群 / 好友(如:日报发给「管理层」+「客服」)。
当前命中:{{ wxTagHitText(wxReportForm.targetId) }}
—— 每次发送时实时按标签算,所以以后新增的群/好友只要打上这个标签,
下次发送就会自动带上,不用回来改这条推送。
取消
先看看长啥样
保存
{{ wxReportPreviewText }}
关闭
复制文本
可自动绑定 {{ wxAutoBindResult.matched }} 个
需人工 {{ wxAutoBindResult.total - wxAutoBindResult.matched }} 个
共检查 {{ wxAutoBindResult.total }} 个微信好友
{{ scope.row.to.username }} · {{ scope.row.to.workNo }}
未匹配
取消
确认绑定这 {{ wxAutoBindResult ? wxAutoBindResult.matched : 0 }} 个
可自动打标签 {{ wxAutoTagResult.matched }} 个
共检查 {{ wxAutoTagResult.total }} 个群 / 好友
{{ scope.row.ctype === 'group' ? '群' : '好友' }}
{{ t }}
{{ (scope.row.tags || []).join('、') }}
无
取消
确认打标签这 {{ wxAutoTagResult ? wxAutoTagResult.matched : 0 }} 个
✅ 已在线{{ wxQrData.wxNick ? ' · ' + wxQrData.wxNick : '' }}
⏳ 等待扫码
❌ 登录异常
未登录
该微信号已登录
收不到消息/没回复时,先点下面的「发测试消息」验证这个号能不能发出去
发测试消息(发给自己)
正在等待网关生成二维码…
请确认云服务器/电脑上的平板协议网关(wechat-gateway/pad)已启动
{{ (wxQrData && wxQrData.qrTip) || '用要当机器人的那个微信号扫这个码,并在手机上确认' }}
二维码已超过 3 分钟未刷新,可能已失效(网关一般会自动换新的)
最后更新:{{ wxQrData.qrUpdatedAt }}
重新取码
换号重扫
刷新状态
关闭
📦 退件管理
共 {{ returnOrders.length }} 条
退件列表
客户管理
客户-小哥分配
退件交接
📥 已入库
{{ returnStats.inStock || 0 }}件
📤 已交接
{{ returnStats.handed || 0 }}件
✅ 已签收
{{ returnStats.signed || 0 }}件
⚠️ 异常
{{ returnStats.exception || 0 }}件
查询
重置
{{ scope.row.status }}
详情
删除
共 {{ returnOrders.length }} 条记录
查询
新增客户
导入客户
下载模板
编辑
删除
共 {{ returnClients.length }} 条记录
📤 报表导出
查询重置导出Excel
共 {{ reportData.length }} 条记录
🗂️ 导出中心
刷新
清理 30 天前
共 {{ exportFiles.length }} 份,可重复下载;在「报表导出」点导出后会自动存一份到这里。
系统每月 1 号自动生成上个月的「理赔月报」(只统计理赔工单)也在这里,管理员/财务可见
{{ scope.row.rowCount ? scope.row.rowCount + ' 条' : '-' }}
{{ exportFileSize(scope.row.size) }}
{{ scope.row.params || '-' }}
{{ scope.row.userName || '-' }}
下载
删除
📊 数据分析
{{ analyticsRoleName }} · {{ analyticsRangeLabel || '本月' }}
🧑🔧 收派员
👩💼 客服
📦 电商收件员
{{ q.label }}
刷新
最多可选一个自然月(例:7 月整月 7-01 ~ 7-31,或 9-01 ~ 9-19);跨月请分两次看。所有数字列都能点表头排序。
🧠 判断类分析
系统按「时效配置」的时限自动判的结论 · {{ analyticsRangeLabel || '本月' }} · 点下面的图表/明细可以核对每个数字
{{ ins.level === 'danger' ? '⚠️' : (ins.level === 'warn' ? '🔔' : (ins.level === 'ok' ? '✅' : '💡')) }}
{{ ins.title }}
{{ ins.text }}
正在分析…
没有分析结论(换个时间范围试试)
📈 图文分析
全公司口径(不随上面「角色」切换)· 鼠标悬停看每个点的数值
⏱ 破损上报时效(单):有效 / 超时上报 / 待核实
📦 各板块状态分布
五个板块各自的状态构成(问题件 / 破损 / 理赔按状态;无头件 / 退件按流转环节)· {{ analyticsRangeLabel || '本月' }}
{{ b.title }}
看列表 →
状态分布(共 {{ b.total }} 单)
该时间段没有数据
{{ b.note }}
🔍 细维度
「及时率」= 有超时口径的单里没超时的占比(问题件 + 破损);「平均时长」只算已处理的单
📦 按快递公司 共 {{ (analyticsDetail && analyticsDetail.companies.length) || 0 }} 家
{{ scope.row.overdue || 0 }}
-
{{ scope.row.onTimeRate }}%
-
{{ scope.row.avgHours }} h
¥{{ fmtNum(scope.row.claimAmount) }}
-
-
{{ scope.row.examRate }}%
📌 按问题类型 哪些问题最费时间、哪些压着超时
{{ scope.row.overdue }}
0
-
{{ scope.row.doneRate }}%
-
{{ scope.row.avgHours }} 小时
{{ scope.row.lost }}
0
破损上报
{{ (analyticsStaff && analyticsStaff.summary.damageReportTotal) || 0 }}单
含客服上报(客服上报的归「公司」)
破损及时上报率
{{ (analyticsSummary && analyticsSummary.damage && analyticsSummary.damage.examRate !== null) ? analyticsSummary.damage.examRate + '%' : '-' }}
有效 {{ (analyticsSummary && analyticsSummary.damage && analyticsSummary.damage.examValid) || 0 }} ·
超时上报 {{ (analyticsSummary && analyticsSummary.damage && analyticsSummary.damage.examOvertime) || 0 }} ·
待核实 {{ (analyticsSummary && analyticsSummary.damage && analyticsSummary.damage.examPending) || 0 }}
问题件完成
{{ (analyticsStaff && analyticsStaff.summary.issueDoneTotal) || 0 }}单
派件员完成的 + 客服处理的
理赔金额(责任单)
¥{{ fmtNum(analyticsStaff && analyticsStaff.summary.claimAmountTotal) }}
承担方是业务员 / 双方的;其中业务员承担 ¥{{ fmtNum(analyticsStaff && analyticsStaff.summary.claimBearAmountTotal) }}
超时合计
{{ (analyticsStaff && analyticsStaff.summary.overdueTotal) || 0 }}单
参与人数 {{ (analyticsStaff && analyticsStaff.summary.courierCount) || 0 }} 人
破损处理
{{ analyticsDamageDoneTotal }}单
我作为责任客服的破损单里已处理完的
问题件处理
{{ analyticsIssueDoneTotal }}单
我处理 / 被指派的问题件
理赔上报金额
¥{{ fmtNum(analyticsClaimAmountTotal) }}
我作为建单人的理赔单金额
超时合计
{{ (analyticsStaff && analyticsStaff.summary.overdueTotal) || 0 }}单
参与人数 {{ (analyticsStaff && analyticsStaff.summary.serviceCount) || 0 }} 人
退回件数
{{ (analyticsStaff && analyticsStaff.summary.retTotal) || 0 }}件
按退件客户负责的收件员归属
已签收
{{ (analyticsStaff && analyticsStaff.summary.retSignedTotal) || 0 }}件
签收率 {{ pctOf(analyticsStaff && analyticsStaff.summary.retSignedTotal, analyticsStaff && analyticsStaff.summary.retTotal) }}%
路由中断 / 疑似遗失
{{ (analyticsStaff && analyticsStaff.summary.retLostTotal) || 0 }}件
超过「时效配置」里的遗失时限、没有任何新路由记录
超时未签收
{{ (analyticsStaff && analyticsStaff.summary.overdueTotal) || 0 }}件
参与人数 {{ (analyticsStaff && analyticsStaff.summary.ecomCount) || 0 }} 人
🧑🔧 收派员(角色:{{ analyticsRoleNames.courier.join(' / ') }})
共 {{ (analyticsStaff && analyticsStaff.courier.length) || 0 }} 人 · 破损按上报人;问题件按派件员;理赔按「业务员姓名」对上的人(对不上退回建单人)
-
{{ scope.row.damageExamRate }}%(有效 {{ scope.row.examValid || 0 }} / 超时 {{ scope.row.examOvertime || 0 }} / 待核 {{ scope.row.examPending }})
-
{{ scope.row.issueAvgHours }} 小时
{{ scope.row.issueOverdueRate }}%(超时 {{ scope.row.issueOverdue }} / 共 {{ scope.row.issueTotal }})
¥{{ fmtNum(scope.row.claimAmount) }}
-
¥{{ fmtNum(scope.row.claimBearAmount) }}
-
👩💼 客服(角色:{{ analyticsRoleNames.service.join(' / ') }})
共 {{ (analyticsStaff && analyticsStaff.service.length) || 0 }} 行(含「公司」行:客服上报的破损记在公司名下)
·「破损处理」和「破损平均处理时长」按实际结单的人算(谁处理挂谁);
「破损超时占比」按品牌派给他的责任客服算(超时 ÷ 派到他名下的量)
{{ scope.row.workNo }}
(公司)
-
{{ scope.row.damageAvgHours }} 小时
{{ scope.row.damageOverdueRate }}%(超时 {{ scope.row.damageOverdue }} / 共 {{ scope.row.damageTotal }})
-(没有派到他名下的破损单)
-
{{ scope.row.issueAvgHours }} 小时
{{ scope.row.issueOverdueRate }}%(超时 {{ scope.row.issueOverdue }} / 共 {{ scope.row.issueTotal }})
¥{{ fmtNum(scope.row.claimAmount) }}
-
📦 电商收件员(角色:{{ analyticsRoleNames.ecom.join(' / ') }})
共 {{ (analyticsStaff && analyticsStaff.ecom.length) || 0 }} 人 ·
「路由中断」= 超过「时效配置」里的遗失时限、系统里没有任何新的路由/签收记录
-
{{ scope.row.retAvgHours }} 小时
{{ scope.row.retOnTimeRate }}%
{{ scope.row.retLost }} 件
0
🧾 访问日志
请求总数
{{ (devStats && devStats.total) || 0 }}
其中正常请求 {{ (devStats && devStats.human) || 0 }} · 轮询 {{ (devStats && devStats.noise) || 0 }}
独立 IP
{{ (devStats && devStats.ips) || 0 }}
所选时间段内
慢请求(≥1 秒)
{{ (devStats && devStats.slow) || 0 }}
点表格表头可按耗时排序看
出错(4xx/5xx)
{{ (devStats && devStats.err) || 0 }}
未落库缓存 {{ (devStats && devStats.buffered) || 0 }} 条
—
查询
重置
刷新
清理过期
{{ devFmtTime(scope.row.tsMs) }}
{{ scope.row.query || '-' }}
{{ scope.row.status }}
{{ scope.row.ms }} ms
{{ exportFileSize(scope.row.bytes) }}
{{ scope.row.ua || '-' }}
轮询
-
共 {{ devLogTotal }} 条
🔥 请求最多的接口
{{ scope.row.avgMs }} ms
{{ scope.row.maxMs }} ms
🐢 最慢的 10 次请求
{{ scope.row.ms }} ms
{{ scope.row.time }}
🔑 开发人员账号
新增开发人员
刷新
这里只列出「开发人员」角色的账号;该角色默认**只有**「开发运维」菜单,看不到业务数据
重置密码
删除
取消
创建
给「{{ devPwdName || devPwdWorkNo }}」设置新密码
取消
确定
查询
批量分配小哥({{ selectedClients.length }})
设置代班
取消代班
批量转移(离职继承)
{{ scope.row.salesmanName }}
未分配
{{ scope.row.substituteName }}
{{ scope.row.subStartTime }} ~ {{ scope.row.subEndTime }}
-
共 {{ assignClients.length }} 条记录
查询
✅ 交接({{ selectedHandover.length }} 件)
全选
清空
共 {{ pendingHandover.length }} 件待交接
🖥 系统权限(电脑后台菜单)
勾上这个角色在后台能看到的菜单。
一个都不勾 = 这个角色没有后台权限(登录后只有一句说明,侧边栏一项都不显示)——
不影响下面两套小程序 / H5 权限,那是单独配的。
消息推送 / 系统设置 这两组支持二级菜单单独授权:
勾一级 = 这一组全给;只勾其中几项 → 保存后一级会自动去掉,只留勾上的那几项。
(管理员角色另有"管理员权限"开关:开了就是全部菜单 + 所有工单)
m.key)">全选
全不选
{{ m.label }}
📱 小程序权限 · 微信
微信小程序里能看到哪些入口(⚠️ 小程序还没上线,先配好、上线即生效)。没保存过 = 跟随上面的系统权限;保存过就严格只看勾选(全不选 = 小程序什么都不显示)
全选
全不选
恢复"未配置"
{{ m.name }}
当前:未配置 → 微信小程序按系统权限判断(老规则,管理员/客服/业务员全部可见)
📱 小程序权限 · 钉钉
钉钉小程序里能看到哪些入口(同样是"没保存过 = 跟随系统权限";小程序还没上线)
全选
全不选
恢复"未配置"
{{ m.name }}
当前:未配置 → 钉钉小程序按系统权限判断
开启后可查看所有工单
取消保存
{{ userMenuForm.username }}
({{ userMenuForm.workNo }})
{{ userMenuForm.role }}
{{ userMenuForm.deptName }}
{{ m.label }}
(角色自带)
取消
保存
查询
快递公司可留空(自动识别)。数据来源:申通走超级商家(含重量/网点电话),中通、韵达、极兔等其他品牌走快宝
{{ logisticsResult.company }}
{{ logisticsResult.stateText }}
单号 {{ logisticsResult.trackingNo }} · 识别方式:{{ logisticsResult.identifiedBy }} · 数据源:{{ logisticsResult.source }}
(缓存)
候选公司:
{{ c.name }}
{{ t.type }}
{{ t.site }} · {{ t.sitePhone }}
⚖ {{ t.weight }}kg
{{ t.context }}
关闭
外部人员(没有钉钉工号)选「外部工号」角色即可用账号密码登入 H5 破损登记(小程序还没上线)。
直接输入不存在的名字回车 = 顺手建一个新部门(如「承包区部门」);留空 = 未分配部门。
取消{{ editUserDialogVisible ? '保存' : '确定' }}
你正在添加:{{ userForm.username }} 工号 {{ userForm.workNo || '(未填)' }}
{{ scope.row.fromDingtalk ? '钉钉同步' : '手工建的' }}
{{ scope.row.hint }}
理赔 {{ scope.row.usage.claims }} / 问题件 {{ scope.row.usage.issues }} / 破损 {{ scope.row.usage.damages }}
去修改 TA
如果是同一个人换了手机号:点「去修改 TA」把那个账号的工号改成现在的手机号(或把资料改对),别再建新账号 —— 否则排行榜里同一个人会裂成两行。
如果确实是两个人同名:直接「继续添加」。
取消
去修改已有账号
确实另有其人,继续添加
重新检查
🎉 没有重名账号
{{ g.username }}
{{ g.count }} 个账号
{{ scope.row.fromDingtalk ? '钉钉同步' : '手工建的' }}
{{ scope.row.everLoggedIn ? ('是 ' + scope.row.logins + ' 次') : '否' }}
理赔建单 {{ scope.row.usage.claims }} 问题件 {{ scope.row.usage.issues }} 破损 {{ scope.row.usage.damages }} 通知 {{ scope.row.usage.notices }}
最近:{{ scope.row.usage.lastTime ? (scope.row.usage.lastTime + ' ' + scope.row.usage.lastAction) : '没有任何记录' }}
{{ scope.row.hint }}
去编辑
删除
+ 加一条
恢复系统默认(按你说的部门表)
建号后会打「待确认」标记,员工管理顶栏会提示你去改
取消
保存
改成正确角色即自动清除「待确认」
关闭
{{ c.name }}
钉钉手机号 {{ c.phone }}
{{ c.deptName }}
用 已有账号 登录(把钉钉挂到他名下)
确实是另一个人,新建账号
{{ scope.row.fromDingtalk ? '钉钉同步' : '手工建的' }}
理赔 {{ scope.row.usage.claims }} / 问题件 {{ scope.row.usage.issues }} / 破损 {{ scope.row.usage.damages }} {{ scope.row.hint }}
稍后处理
全部按「新建」处理
确认并执行
内部部门
外部人员部门
外部人员部门 = 没有钉钉工号、用账号密码登入的人(会标成 🔸 排在最前面,不会被钉钉通讯录同步覆盖)。
取消
保存
取消保存
数字越小越靠前
可多选:一个品牌配多个客服;同一个人也可以负责多个品牌。
该品牌的破损/污损工单会同时通知这些人(系统通知 + 微信通知,没绑微信就只发系统通知);一个都不配就通知全部客服。
停用后不出现在下拉框
取消
保存
进港件
出港件
进港=外地到本站的无头件;出港=本站发出的无头件
点击上传
最多 6 张,必传至少 1 张
取消
提交登记
货物描述:{{ headlessClaimTarget.goodsDesc }}
存放位置:{{ headlessClaimTarget.storageLocation }}
点击上传
如面单、聊天记录、订单截图等
取消
提交认领
单号:{{ headlessCurrentOrder.orderNo }}
进出港:{{ headlessCurrentOrder.type || '未区分' }}
状态:{{ headlessCurrentOrder.status }}
快递单号:{{ headlessCurrentOrder.trackingNo || '无' }}
快递公司:{{ headlessCurrentOrder.expressCompany || '无' }}
货物描述:{{ headlessCurrentOrder.goodsDesc }}
存放位置:{{ headlessCurrentOrder.storageLocation }}
收货日期:{{ headlessCurrentOrder.receiveDate }}
预估价值:¥{{ (headlessCurrentOrder.estimatedValue || 0).toFixed(2) }}
备注:{{ headlessCurrentOrder.remark || '无' }}
登记人:{{ headlessCurrentOrder.creatorName }}({{ headlessCurrentOrder.creatorWorkNo }})
登记时间:{{ headlessCurrentOrder.createTime }}
认领人:{{ headlessCurrentOrder.claimName }}({{ headlessCurrentOrder.claimTime }})
出库时间:{{ headlessCurrentOrder.outTime }}
认领记录:
{{ c.claimName }}({{ c.claimWorkNo }})
{{ c.createTime }}
快递单号:{{ c.trackingNo }} | 联系:{{ c.contact }}
备注:{{ c.remark }}
关闭
{{ s }}
添加
OCR 识别到这些寄件人姓名时,会自动归属到本客户
取消
保存
扫描单号
添加
已扫 {{ scanList.length }} 件
清空列表
面单照片(选填,这批单子共用;按月存放,3 个月后自动清理)
拍/选面单照
最多 6 张
取消
提交入库({{ scanList.length }} 件)
取消
确认分配
取消
确认转移
取消
确认设置
1. 点【下载模板】获取 Excel 模板
2. 按格式填写:客户名称 / 快递品牌 / 寄件人 / 备注
3. 同一个客户可以填多行(每行一个寄件人)
4. 客户名称为空会报错;已有客户会自动合并品牌和寄件人
选择 Excel 文件上传
支持 .xlsx / .xls
导入结果:
总行数:{{ importClientResult.totalRows }}
新增客户:{{ importClientResult.newClients }}
更新客户:{{ importClientResult.updatedClients }}
新增寄件人:{{ importClientResult.sendersAdded }}
关闭
退件单号:{{ returnCurrentOrder.orderNo }}
状态:{{ returnCurrentOrder.status }}
快递公司:{{ returnCurrentOrder.expressCompany || '无' }}
归属客户:{{ returnCurrentOrder.clientName }}
寄件人:{{ returnCurrentOrder.senderName || '未识别' }}
收件人:{{ returnCurrentOrder.customerName || '未识别' }}
电话:{{ returnCurrentOrder.customerPhone || '未识别' }}
地址:{{ returnCurrentOrder.customerAddress || '未识别' }}
当前持件人:{{ returnCurrentOrder.currentHolderName || '仓库' }}
入库时间:{{ returnCurrentOrder.warehouseInTime }}
交接时间:{{ returnCurrentOrder.handoverTime }}
签收时间:{{ returnCurrentOrder.signTime }}
备注:{{ returnCurrentOrder.remark }}
流转日志:
{{ log.action }} · {{ log.operatorName || log.operatorWorkNo }}
{{ log.createTime }}
{{ log.remark }}
关闭
取消
确认修改
{{ latestChangelog.title }}
{{ latestChangelog.content }}
发布时间:{{ latestChangelog.createTime }}
我已阅读
取消
发布
工单号:{{ currentOrderDetail.orderNo }}
类型:{{ currentOrderDetail.type }}
客户:{{ currentOrderDetail.customerName }}
快递单号:{{ currentOrderDetail.trackingNo }}
快递公司:{{ currentOrderDetail.expressCompany }}
受赔方:{{ currentOrderDetail.payee }}
理赔金额:{{ currentOrderDetail.amount }} 元
支付方式:{{ currentOrderDetail.paymentMethod }} ({{ currentOrderDetail.paymentSubMethod }})
收款信息:{{ currentOrderDetail.payeeInfo }}
承担方:{{ currentOrderDetail.bearParty }} (公司{{ currentOrderDetail.companyRatio || 0 }}%,业务员{{ currentOrderDetail.salesmanRatio || 0 }}%)
业务员:{{ currentOrderDetail.salesmanName || '无' }}
支付宝账号:{{ currentOrderDetail.alipayAccount }}
收款人姓名:{{ currentOrderDetail.alipayRealName }}
理赔原因:{{ currentOrderDetail.reason }}
状态:{{ currentOrderDetail.status }}
申请人:{{ currentOrderDetail.creatorName || '未知' }}
备注:{{ currentOrderDetail.description }}
登记时间:{{ currentOrderDetail.createTime }}
审批记录:
- {{ rec.node }} - {{ rec.result }} ({{ approvalWho(rec) }}) {{ rec.remark ? '备注:'+rec.remark : '' }} {{ rec.time }}
价值证明:
{{ f.originalName || f.name }}
理赔证明:
{{ f.originalName || f.name }}
收款信息凭证:
{{ f.originalName || f.name }}
转账凭证:
{{ f.originalName || f.name }}
手工转账凭证上传
上传转账凭证
上传银行转账截图、微信转账截图等
确认已转账
工单号:{{ issueCurrentOrder.orderNo }}
问题类型:{{ issueCurrentOrder.issueType }}
状态:{{ issueCurrentOrder.status }}
优先级:{{ issueCurrentOrder.priority || '普通' }}
快递单号:{{ issueCurrentOrder.trackingNo }}
快递公司:{{ issueCurrentOrder.expressCompany || '未填写' }}
收件人:{{ issueCurrentOrder.customerName || '未填写' }}
联系电话:{{ issueCurrentOrder.customerPhone || '未填写' }}
收件地址:{{ issueCurrentOrder.customerAddress || '未填写' }}
问题描述:{{ issueCurrentOrder.description || '未填写' }}
登记人:{{ issueCurrentOrder.creatorName }}
处理人:{{ issueCurrentOrder.assigneeName || '未分配' }}
催办次数:{{ issueCurrentOrder.remindCount || 0 }}
登记时间:{{ issueCurrentOrder.createTime }}
📎 凭证图片:
{{ typeof img === 'string' ? img : img.originalName }}
处理记录:
-
{{ r.username }} ({{ r.replyType || '处理' }}):{{ r.content }}
{{ r.createTime }}
- 暂无处理记录
分配
关闭工单
关闭
工单号:{{ commentOrderNo }}
这里就是和业务员的双向沟通渠道:你在这里留言 → 微信推给业务员;业务员在微信里回处理结果(或直接发文字)→ 自动进这里
暂无留言
{{ c.username || c.workNo }}
微信
{{ c.createTime }}
{{ c.content }}
关闭
发送
检测到下面这些还没配好,配完这些统计/推送才准:
破损上报考核时限没配
{{ (setupInfo.examMissing || []).join('、') }}{{ setupInfo.examMissingCount > (setupInfo.examMissing || []).length ? ' 等 ' + setupInfo.examMissingCount + ' 个角色' : '' }}
没配的角色会用「全局默认」,但如果不同角色该用不同时限,这里要填
菜单权限是空的
{{ (setupInfo.menuEmpty || []).join('、') }}{{ setupInfo.menuEmptyCount > (setupInfo.menuEmpty || []).length ? ' 等 ' + setupInfo.menuEmptyCount + ' 个角色' : '' }}
菜单为空 = 这个角色的人登录后基本看不到东西
新激活的群/联系人还没绑业务员
{{ setupInfo.contactUnboundCount }} 个:{{ (setupInfo.contactUnbound || []).slice(0, 8).map(x => x.name).join('、') }}{{ setupInfo.contactUnboundCount > (setupInfo.contactUnbound || []).length ? ' 等' : '' }}
没绑业务员的话,问题件「微信下发」发不到他们(客服会看到「该业务员无法微信推送」)
还没有人用的角色
{{ (setupInfo.emptyRoles || []).join('、') }}{{ setupInfo.emptyRolesCount > (setupInfo.emptyRoles || []).length ? ' 等 ' + setupInfo.emptyRolesCount + ' 个' : '' }}
(不用管,建角色时会先建好)
今天不再提示
去看未绑业务员的群/人
去配菜单权限
去配考核时限
问题件
{{ o.orderNo }}
{{ o.status }}
已生成理赔单 {{ o.claimOrderNo }}
快递单号 {{ o.trackingNo || '-' }} · {{ o.expressCompany || '-' }} · {{ o.issueType || '-' }} · 登记人 {{ o.creatorName || '-' }} · {{ o.createTime || '' }}
说明:{{ o.description }}
{{ o.canConvert ? '一键转理赔' : '已转理赔' }}
破损
{{ o.orderNo }}
{{ o.status }}
上报{{ o.examResult }}
已生成理赔单 {{ o.claimOrderNo }}
快递单号 {{ o.trackingNo || '-' }} · {{ o.expressCompany || '-' }} · {{ o.damageType || '-' }} · 上报人 {{ o.reporterName || '-' }} · {{ o.createTime || '' }}
说明:{{ o.description }}
{{ o.canConvert ? '一键转理赔' : '已转理赔' }}
不改了,继续手工登记理赔
出港发货
进港派件
公司
业务员
双方
现付
月结
支付宝
微信
转账
📎 附件上传
点击上传
{{ u.tip }}
取消
提交转理赔
取消
提交
通过驳回
上传付款凭证
请上传微信/银行转账截图,审批通过必须上传
取消确认
工单号:{{ currentOrderDetail.orderNo }} | 收款人:{{ currentOrderDetail.payee || '-' }} | 金额:{{ currentOrderDetail.amount }} 元
{{ f.originalName || f.name }}
关闭
现付
月结
支付宝
微信
转账
公司
业务员
双方
取消
提交重新审批