{{ user.display_name || user.username }}{{ roleName(user.role) }}
最近动态
{{ n.title }} {{ notifTime(n.created_at) }}
{{ n.content }}
{{ n.created_by }} · {{ n.created_at }}
还没有动态

当月完成情况

⚠
{{ ov.month }} 还没有推广费 / 信息量数据 —— 看板里推广费只覆盖 {{ ov.status.platform.start }} ~ {{ ov.status.platform.end }} (暂无)。 上传该月的店铺数据后,推广费和费比才会显示;当前只有到款 / 下单(来自明细表)。
{{ ovTimeText }}
{{ pctText(ov.time_progress, 1) }}
{{ ovViewLabel }}{{ ovMainProgView.label }}进度
{{ pctText(ovMainProgView.pace, 0) }}
已完成 {{ unitText(ovMainProgView.actual, ovMainProgView.unit) }} / 目标 {{ unitText(ovMainProgView.target, ovMainProgView.unit) }} ({{ pctText(ovMainProgView.rate, 1) }})
{{ ovShop }}进度
—
该店铺本月未设置目标
合计进度
—
未设置目标值
店铺
{{ c.label }} {{ c.kSub }}
{{ c.value }} {{ c.unit }}
信息量趋势(最近30天) 截止 {{ ov.info_trend_end }},共 30 天 · 条/日
各店铺进度对比 虚线 = 100% 基准,低于它说明进度落后于时间
各店铺明细
店铺 产品数 推广费(元) 信息量(条) AB类信息(条) 总到款(万) 新到款(万) 总下单(万) 费比 信息成本(元/条) 到款进度 信息量进度
{{ s.shop }} {{ s.products }} {{ fmtNum(s.spend) }} {{ fmtNum(s.info) }} {{ fmtNum(s.ab_info != null ? s.ab_info : 0) }} {{ fmtNum(s.paid_amt) }} {{ fmtNum(s.new_paid_amt) }} {{ fmtNum(s.order_amt) }} {{ s.ratio ? (s.ratio * 100).toFixed(1) + '%' : '—' }} {{ s.info_cost ? fmtNum(s.info_cost, 0) : '—' }} {{ pctText(progOf(s,'paid_amt').pace, 0) }} — {{ pctText(progOf(s,'info').pace, 0) }} —
{{ ovViewLabel }}合计 {{ ovShop ? (ovShopsView.reduce((a, s) => a + s.products, 0)) : ov.products.length }} {{ fmtNum(ovView.spend) }} {{ fmtNum(ovView.info) }} {{ fmtNum(ovView.ab_info != null ? ovView.ab_info : 0) }} {{ fmtNum(ovView.paid_amt) }} {{ fmtNum(ovView.new_paid_amt) }} {{ fmtNum(ovView.order_amt) }} {{ ovView.ratio ? (ovView.ratio * 100).toFixed(1) + '%' : '—' }} {{ ovView.info_cost ? fmtNum(ovView.info_cost, 0) : '—' }} {{ pctText(progOf(ovView,'paid_amt').pace, 0) }} — {{ pctText(progOf(ovView,'info').pace, 0) }} —
该月份暂无数据

单品完成情况

信息完成度 · 成功率 · 预计环比 · 下钻到链接 月份
店铺
搜索
负责人
负责人信息量进度 指数 = 完成率 ÷ 时间进度
单品信息量完成 低于目标 全部 共 {{ ovProdRows.length }} 个 · 指数 = 完成率 ÷ 时间进度
单品明细({{ mpRows.length }} 个) 点列头排序 · 点行首 ▸ 展开链接明细
产品 {{ mpSortIcon('cat') }} 店铺 {{ mpSortIcon('shop') }} 负责人 {{ mpSortIcon('owner') }} 目标 {{ mpSortIcon('target_info') }} 实际 {{ mpSortIcon('actual_info') }} 完成度 {{ mpSortIcon('pace') }} 预计全月 {{ mpSortIcon('forecast') }} {{ mpMomLabel }} {{ mpSortIcon('mom_pct') }} 成功率 {{ mpSortIcon('success_rate') }} 推广费 {{ mpSortIcon('spend') }} 信息成本 {{ mpSortIcon('info_cost') }}
暂无数据
ℹ
{{ ov.cat_unassigned.length }} 个产品有数据但目标表里没有对应分类(如丰控旗舰店的分类、红外温度等),不计入上面的完成度。 例:{{ ov.cat_unassigned.slice(0, 6).map(x => x.product).join('、') }}{{ ov.cat_unassigned.length > 6 ? ' 等' : '' }}
单品四象限:完成度 × 成功率 气泡大小 = 实际信息量;右下=量大转化低(优先优化),左上=转化好但量不足(可加推)

周信息与费用

产品的信息、推广费、信息成本按周趋势 · 下钻到商品ID链接(含优化动作竖线) 周数 基准日
店铺
搜索
产品
商品ID
产品周趋势:信息量 / 信息成本
商品ID周趋势 {{ wkLinkRow.platform_id || wkLinkRow.id }} · {{ wkLinkRow.name }} 在上方「商品ID」下拉中选择 · 竖虚线 = 优化动作
选择商品ID后显示该链接的周趋势(含优化动作竖虚线)
链接明细({{ wkCostLinks.length }}/{{ wkCost.links.length }} 个商品ID链接) 信息量/推广费 = 基准日起往前 {{ wkWeekN }} 周(7天/周)累积 · 每周格 = 信息量(条) / 推广费(元) · 明细表显示最近 4 周
店铺 商品ID 链接名称 信息量 推广费 信息成本 {{ w.label }}
{{ l.shop || '—' }} {{ l.platform_id || '—' }} {{ l.name }} {{ l.info || '—' }} {{ l.spend ? fmtNum(l.spend) : '—' }} {{ l.info_cost ? fmtNum(l.info_cost, 0) : '—' }} —
该产品暂无周数据

周数据

按周看单品的推广费和信息量
店铺
产品名称
ℹ
当前周数据里没有信息量(历史周报只导入了推广费等指标)。信息量目前只有月度数据,若要按周看信息量,需要上传按周统计的信息量数据。
逐周走势 柱:推广费(万元) 折线:信息量(条)
{{ w.label }}
{{ ovCurWeek.label }} 推广费
{{ fmtNum(ovCurWeek.spend) }} 元
{{ ovCurWeek.label }} 信息量
{{ ovCurWeek.info ? fmtNum(ovCurWeek.info) : '—' }} 条
有推广费的产品数
{{ ovCurWeek.items.filter(x => x.spend > 0).length }} 个
{{ ovCurWeek.label }} 单品推广费 Top 10
{{ ovCurWeek.label }} 单品推广费 / 信息量
产品 店铺 推广费(元) 信息量(条)
{{ it.product }} {{ it.shop }} {{ fmtNum(it.spend) }} {{ it.info ? fmtNum(it.info) : '—' }}
合计 {{ fmtNum(ovCurWeek.spend) }} {{ ovCurWeek.info ? fmtNum(ovCurWeek.info) : '—' }}
暂无周数据

单品费比

推广占总 / 推广占新 vs 对比值(当年值:累积推广费 ÷ 累积总到款,取自历月数据) 月份
店铺
⚠
{{ ov.month }} 没有推广费数据,费比暂时算不出来。上传该月推广费后自动显示。
推广费 {{ ovRatioHead.scope }}
{{ unitText(ovRatioHead.spend, '元') }}
{{ ovRatioHead.grabbed ? '整店花费(花费列求和)' : '各产品相加' }}
推广占总
{{ ovRatioHead.ratio_main ? (ovRatioHead.ratio_main*100).toFixed(1)+'%' : '—' }}
变化值(当月−当年) {{ ppTxt(ovRatioHead.ratio_main, ovRatioHead.ytd_total) }}
推广占新
{{ ovRatioHead.ratio_new ? (ovRatioHead.ratio_new*100).toFixed(1)+'%' : '—' }}
变化值(当月−当年) {{ ppTxt(ovRatioHead.ratio_new, ovRatioHead.ytd_new) }}
对比值 当年值
{{ ovRatioHead.ytd_total ? (ovRatioHead.ytd_total*100).toFixed(1)+'%' : '—' }}
{{ ovYtdLabel }} · 累积推广费 ÷ 累积总到款(历月数据)
推广占总(大于 10%) ◈ = 当年值 · 黄 10~30% / 红 >30%
没有推广占总大于 10% 的产品
推广占新(大于 35%) ◈ = 当年值 · 超 35% 红
没有推广占新大于 35% 的产品
单品费比明细({{ ovRatioRows.length }} 个) 点列头排序 · 「对比值」= 当年累积推广费 ÷ 累积总到款
# 产品 {{ rsIcon('product') }} 店铺 推广费(元) {{ rsIcon('spend') }} {{ ovRatioBaseLabel }}(万) {{ rsIcon('base_total') }} 新{{ ovRatioBaseLabel }}(万) {{ rsIcon('base_new') }} 推广占总 {{ rsIcon('ratio_main') }} 推广占新 {{ rsIcon('ratio_new') }} 对比值 {{ rsIcon('ytd_ratio_total') }} 总差额(pp) {{ rsIcon('delta') }} 累积花费(元) 累积到款(万)
{{ i + 1 }} {{ p.product }} {{ p.shop }} {{ fmtNum(p.spend) }} {{ fmtNum(p.base_total) }} {{ fmtNum(p.base_new) }} {{ p.ratio_main ? (p.ratio_main*100).toFixed(1)+'%' : '—' }} {{ p.ratio_new ? (p.ratio_new*100).toFixed(1)+'%' : '—' }} {{ p.ytd_ratio_total ? (p.ytd_ratio_total*100).toFixed(1)+'%' : '—' }} {{ ppTxt(p.ratio_main, p.ytd_ratio_total) }} — {{ fmtNum(p.ytd_spend) }} {{ fmtNum(p.ytd_paid_amt) }}
合计 / 整体 {{ fmtNum(ovRatioHead.spend) }} {{ fmtNum(ovRatioHead.mainAmt) }} {{ fmtNum(ovRatioHead.newAmt) }} {{ ovRatioHead.ratio_main ? (ovRatioHead.ratio_main*100).toFixed(1)+'%' : '—' }} {{ ovRatioHead.ratio_new ? (ovRatioHead.ratio_new*100).toFixed(1)+'%' : '—' }} {{ ovRatioHead.ytd_total ? (ovRatioHead.ytd_total*100).toFixed(1)+'%' : '—' }} {{ ppTxt(ovRatioHead.ratio_main, ovRatioHead.ytd_total) }} {{ fmtNum(ovRatioHead.ytdSpend) }} {{ fmtNum(ovRatioHead.ytdPaidAmt) }}
暂无可计算的费比数据

历月 · 店铺总览

{{ histRangeText }}
◷
正在加载历月数据…
还没有历月单品数据。请先到「系统管理 → 数据维护 → 历月单品」上传《历月单品数据.xlsx》。

历月 · 产品分析

{{ histRangeText }}
◷
正在加载历月数据…
还没有历月单品数据。请先到「系统管理 → 数据维护 → 历月单品」上传《历月单品数据.xlsx》。

商品ID历月数据

{{ gmRangeText }}
◷
正在加载商品ID历月数据…
还没有商品ID历月数据。

历月 · 客户资产

{{ histRangeText }}
◷
正在加载历月数据…
还没有历月单品数据。请先到「系统管理 → 数据维护 → 历月单品」上传《历月单品数据.xlsx》。

丰控专项

{{ histNewShop.shop }} · {{ histNewShop.minMonth }} 开业 · 至今 T+{{ histAge(histNewShop) }} 个月
◷
正在加载历月数据…
还没有历月单品数据。
当前数据里没有识别到新店(起始月晚于其他店铺的店才会被标为新店)。

自由查询

自己选表、定时间、勾字段,查完直接导出 Excel
数据表 时间 至
信息类型清空全选
字段 合并
◷
正在准备可选字段…
!
字段字典没读到,点右上角「重置条件」重试。
日期范围 至 粒度
店铺 产品 链接名称 指标
{{ m.label }}{{ m.unit ? '('+m.unit+')' : '' }}
全部产品 {{ rangeLabel }}
{{ metricLabel(m) }}(区间合计)
{{ fmtNum(stats[m]) }} {{ metricUnit(m) }}
产品链接数
{{ scope.linkCount }} 个
主链接名称
{{ scopeFirstLinkName }}
链接类型
{{ linkTypeLabel(scope.link_type) }}
{{ scope.level===0 ? '产品汇总(点击柱子下钻到链接)' : (scope.level===1 ? '产品下钻:各链接汇总(点击继续下钻)' : '链接明细:单链接汇总') }}
趋势曲线({{ scope.level===0 ? '全店合计' : (scope.level===1 ? scope.product_name : scope.link_name) }},含操作标记)

数据上传

选文件 → 确认导入即可;原件自动留档,管理员可在「系统管理 → 数据维护」查台账
上传入口
支持 .xlsx / .xls / .csv 文件(GBK 编码自动识别),链接列商品ID / 主体ID / 链接ID(位置任意,自动识别),可上传三类文件:
· 指标数据(商品报表、生意参谋等):日期 + 指标列,自动入库;整月区间(如 20260801至20260831)自动归月度,7 天区间归业务周(周五~周四)
· 商品ID对应关系表(店铺名称/商品ID/链接名称/链接类型/产品名称/信息类型):自动更新对应关系,新 ID 自动建档,改归类直接生效
· 咨询明细(只有 日期+商品ID 两列):每行计 1 次咨询,自动按 ID×日期汇总为「咨询量」
同一链接同一天多人上传不同指标(如费用/咨询量)会合并保留,互不覆盖;完全重复的上传会提示。
数据粒度 {{ fileName || '尚未选择文件' }}
上传备注 写了备注,台账和同事通知里都能一眼看出这次传了什么
点击或拖拽 Excel/CSV 文件到此处(可一次选多个,逐个自动导入)
批量导入结果({{ batchResults.length }} 个文件)
#文件名状态说明
{{ b.index }} {{ b.name }} {{ b.status }} {{ b.summary }}
到款 / 下单 明细上传(ERP)
把 ERP 导出的两个文件一起选中上传:下单维度明细表_xxx.xlsx 和 到款维度明细表_xxx.xlsx。
系统自动识别哪个是下单、哪个是到款,按体检表里的抓取公式汇总成 产品 × 每天 的下单、到款、新客户数,再和看板里的推广费按产品对在一起。每天更新后重新上传即可。
抓取规则 {{ finRules.total || 0 }} 个产品 / {{ finShopCount }} 个店铺(来自体检表,固定不变) 到款下单对账 →
尚未初始化抓取规则,请先执行:node --experimental-sqlite scripts/seed-fin-rules.js --write
上传结果
#文件名状态说明
{{ b.index }} {{ b.name }} {{ b.status }} {{ b.summary }}
目标值上传 传了目标值,「当月完成情况」会自动显示完成率
列名:月份 / 店铺 / 产品 / 指标 / 目标值。店铺可留空 = 全公司;产品留空 = 该店铺整体目标;指标支持 推广费(预算)、信息量、总到款、总下单、新到款。 金额按万元填写(推广费存库自动转成元),信息量按条填写。同一月份重复上传会整月覆盖。
手动添加单条 (逐条保存,不覆盖已录目标;推广费 = 预算)
月份 {{ targetForm.fileName || '尚未选择文件' }}
⚠ {{ targetForm.err }}
已录入目标值({{ targetList.length }} 行)
月份店铺产品指标目标值
{{ t.month }}{{ t.shop || '全公司' }}{{ t.product || '店铺整体' }} {{ t.metric }}{{ t.metric === '推广费' ? fmtNum(t.value / 10000) + ' 万' : fmtNum(t.value) }}
上传历史(可按批次删除误传数据)
文件名行数上传人时间备注操作
{{ u.file_name }}{{ u.row_count }}{{ u.created_by }}{{ u.created_at }}{{ u.note || '—' }}
暂无上传记录
数据管理(系统管理)· 源数据台账 / 清洗后数据 / 关系映射表
进入数据管理 →

数据管理

① 源数据只留档 ② 清洗后数据供图表 ③ 关系映射表不能出错(仅管理员)
{{ g.name }}
{{ g.desc }}
{{ it.label }} {{ fmtNum(it.rows) }}{{ it.unit }}
{{ it.desc }}
{{ it.sub }} {{ it.last_label }} {{ it.last }}
⚠ {{ a }}
读取中…

第 1 层 · 源数据

源文件台账 最近 80 条 · 点「下载」取原件(历史批次只有台账)
时间源数据类型文件名源行数大小说明(含备注)操作
{{ r.created_at }} {{ rawSubType(r) }} {{ r.file_name }} {{ fmtNum(r.row_count) }} {{ rawSize(r.size) }} {{ r.note }}
还没有源文件记录
历月单品数据上传(环比基准) 已覆盖 {{ histStats.from }} ~ {{ histStats.to }}({{ histStats.months }} 个月 · {{ histStats.rows }} 行) 尚未上传 → 单品页「预计环比」无基准
列名:年份 / 时间 / 信息类型 / 平台 / 产品名称 / 总到款 / 信息数 / 新客户数 / 新到款 / 成功率 / 推广费(元)。 这是每个月算好的全月累积值,用作「预计全月 vs 上月」的对比基准(9 月平台明细里没有信息量,靠这张表才有环比)。 文件里每个店铺末行的「合计」行会自动跳过;同月重传会整月覆盖。
{{ histFileName || '尚未选择文件' }}
⚠ {{ histErr }}
✓ {{ histOk }}

第 2 层 · 清洗后数据

图表与接口只读这一层 由源数据按固定规则加工,可重建
数据表用途行数覆盖范围最新
数据成品(按月存档,可随时调取与导出) 历史月生成一次即固定;当月可反复重算
留空 = 整月;只填区间可临时按截止日查看/导出,不改写存档
月份 产品行 商品ID行 数据截止 最近生成 生成人 重算次数 操作
{{ d.month }} {{ fmtNum(d.row_count) }} {{ fmtNum(d.row_count_link) }} {{ d.data_as_of || '—' }} {{ d.generated_at || '—' }} {{ d.created_by || '—' }} {{ d.regenerate_count }}
还没有生成过成品 —— 选好月份点「生成 / 更新存档」
{{ dsPreview.month }} · {{ dsScope === 'link' ? '商品ID维度' : '产品维度' }}预览 {{ dsPreview.from === 'live' ? '实时数据(本次未生成存档)' : '来自存档' }} 区间 {{ dsPreview.range.start }} ~ {{ dsPreview.range.end }} 数据截止 {{ dsPreview.data_as_of }} {{ (dsPreview.rows || []).length }} 行
{{ c[1] }}
{{ dsFmt(c[0], r[c[0]]) }}
没有数据
仅显示前 200 行,导出可获得全部数据

第 3 层 · 关系映射表

商品ID / 产品 / 抓取规则
映射表用途行数状态
⚠️ 产品名称待统一 建议改名 {{ nameCheck.bad.length }} 个 · 标准清单未覆盖 {{ nameCheck.uncovered.length }} 个(共 {{ nameCheck.total }} 个产品 / 标准名 {{ nameCheck.std_count }} 个) {{ nameCheckOpen ? '收起' : '展开' }}
① 建议按标准名统一(在映射表「产品名称」标准列改好名字后重传即可)
{{ b.shop }} 「{{ b.name }}」 → 「{{ b.suggest }}」 {{ b.sc }}% 链接 {{ b.links }}
② 标准清单里没有(请在映射表「产品名称(标准)」sheet 补一个,或确认保留)
{{ u.shop }} · {{ u.name }}
产品列表 共 {{ pmGrouped.length }} 个(同名跨店铺已合并,原始 {{ productsWithLinks.length }} 条)
{{ p.name }}
⚠️ 产品名称待补齐 (ID: {{ p.ids[0] }},请手动填写)
{{ p.shops.length ? p.shops.join(' / ') : '未设置店铺' }} · {{ p.categories[0] || '未分类' }} · {{ p.linkCount }} 个链接 · 主链接:{{ p.mainLinkName }}
还没有产品,点击右上角新增
没有符合筛选条件的产品,试试清除筛选或换个关键字
{{ selProduct ? selProduct.name + ' 的链接管理' : '链接管理' }}
请先选择左侧产品(或点右上角"新增链接"直接建)
链接名称 店铺 商品ID 链接类型 信息类型 操作
{{ l.name }} {{ shopOfLink(l) }} {{ l.platform_id || '—' }} {{ linkTypeLabel(l.link_type) }} {{ l.info_type || '—' }}
该产品下暂无链接,点击"新增链接"
提示:数据上传时通过链接ID(或URL)自动关联到所属产品,产品汇总 = 其下所有链接之和。
新增操作记录
{{ opMatch.msg }}
历史调整记录
日期店铺产品链接操作类型调整幅度备注操作人操作
{{ o.op_date }} {{ o.product_shop || '—' }} {{ o.product_name || '—' }} {{ o.link_name || '(产品级)' }} {{ o.op_type }} {{ o.amount_change || '—' }} {{ o.note }} {{ o.created_by }}
暂无操作记录
到款 / 下单 明细上传
ERP 明细(下单维度 + 到款维度两个文件)统一在「数据上传」页上传,不用再来回切页面。
到款 / 下单 与推广费对账 金额单位:万元
日期范围 至 店铺
产品 {{ finSum.total_products }} 个,名称与看板产品对得上的 {{ finSum.matched_products }} 个; 推广费合计 {{ fmtNum(finSum.totals.spend) }} 万,到款合计({{ finSum.sum_label || '各产品相加' }}){{ fmtNum(finSum.totals.paid_amt) }} 万。
店铺真实总量(合计公式独立抓取,含未单列产品,≠ 各产品相加):
{{ st.shop }}:到款 {{ fmtNum(st.paid_amt) }} 万 / 下单 {{ fmtNum(st.order_amt) }} 万 / 新客户 {{ st.new_cust }}
上传明细后自动更新;明细未覆盖的店铺不在此列。
看板里还没有这段日期的推广费数据(目前看板推广费覆盖:{{ finSum.spend_start || '无' }} ~ {{ finSum.spend_end || '无' }}), 所以「推广费」列暂时显示 0。上传对应日期的推广费后会自动对上,不用重新上传明细。
有 {{ finSum.unmatched.length }} 个产品名和看板对不上({{ finSum.matched_products }} 个已对上)。 {{ showUnmatched ? '收起' : '展开查看' }}
· {{ u.shop }} / {{ u.product }}
完整对照表见:项目 out 目录下的《产品名称对照表.xlsx》——在平台里改好产品名后刷新本页即可,不用重新上传明细。
店铺产品 推广费 下单 到款 到款/推广费 新客户数 新客户到款 名称对上
{{ r.shop }} {{ r.product }} {{ r.spend || '—' }} {{ r.order_amt }} {{ r.paid_amt }} {{ r.ratio ? r.ratio : '—' }} {{ r.new_cust }} {{ r.new_paid_amt }} 已对上 待统一
该日期范围内还没有数据,请先上传明细文件
第 {{ finPage }} / {{ Math.ceil(finSum.rows.length / finPageSize) }} 页(共 {{ finSum.rows.length }} 行)
导入批次(可整批撤销)
时间文件名源明细行数生成条数覆盖日期上传人备注操作
{{ l.created_at }} {{ l.file_name }} {{ l.src_rows }} {{ l.row_count }} {{ l.date_range }} {{ l.created_by }} {{ l.note || '—' }}
暂无导入记录

日历管理

看板的时间进度按【有效工作日】加权:工作日 1.0、周六 0.4、周日 0.25、法定放假 0.25、调休补班 1.0;进度基准 = 数据截止日,不是今天(与「当月完成情况」页一致)。仅管理员可修改。
{{ wcMonth || '—' }}
时间进度{{ pctText(wc.progress.progress, 1) }}
已过 / 全月有效工作日{{ wc.progress.passed }} / {{ wc.w_total }}
其中工作日{{ wc.progress.workdays_passed }} / {{ wc.workdays_total }} 天
法定放假{{ wc.holiday_total }} 天
调休补班{{ wc.makeup_total }} 天
{{ w }}
工作日 周末(不计) 法定放假(不计) 调休补班(计入) 点击某天 → 右侧可改
{{ wcSelDay.date }} {{ wcDowName(wcSelDay.dow) }}
当前:{{ wcKindName(wcSelDay.kind) }} {{ wcSelDay.work ? '计入工作日' : '不计入' }}
仅管理员可修改
点日历里的某一天,这里会出现修改按钮
权重折算
权重 = 这类一天相当于多少个工作日。例如周日 0.25,即 4 个周日 ≈ 1 个工作日的询盘量。
批量标记(整段假期)
怎么维护
法定节假日每年由国务院办公厅发文(一般 11 月公布次年安排),程序无法推算,所以需要每年在这里录一次,约 5 分钟。
目前已内置 2026 年 全部假期与调休补班(来源:国务院办公厅 2025-11-04 通知)。
次年安排出来后,用上面的「批量标记」把放假日期贴进去即可。改完立刻影响「当月完成情况」「单品完成情况」的进度指数。

用户管理

账号、角色与负责店铺(仅管理员)
账号列表
用户名姓名密码角色负责店铺操作
{{ u.username }} {{ u.display_name || '—' }} {{ u.password_plain || '(登录一次后显示)' }} {{ roleName(u.role) }} {{ u.shop ? u.shop.split(',').join('、') : '全部店铺' }}
暂无用户
提醒规则:某人录入操作记录后,只有该记录所属店铺的负责人会收到弹窗提醒;负责"全部店铺"的账号(如管理员)始终收到全部提醒。 操作记录列表本身对所有人生效,这里只控制"提醒"的定向。
导入用户文件:表格列依次为 用户名 / 密码 / 角色 / 店铺 / 姓名(角色填 管理员、运营 或 只读;店铺多个用顿号分隔;用户名可用中文)。已存在的账号会更新密码/角色/店铺。
{{ t.msg }}