{{ currentMenu?.label || '' }}
{{ stats.totalDevices }}
设备总数
{{ stats.onlineDevices }}
在线设备
{{ stats.totalClients }}
甲方数量
{{ stats.totalPlans }}
播放方案
{{ stats.todayPlays }}
今日投放
{{ stats.activePlans }}
活跃方案
📊 升级统计
{{ upgradeStats.total }}
总升级次数
{{ upgradeStats.pending }}
待升级
{{ upgradeStats.success }}
升级成功
{{ upgradeStats.failed }}
升级失败
{{ editingMaterial ? '编辑素材' : '上传素材' }}
{{ uploadFile ? uploadFile.name : '点击或拖拽文件到此处上传' }}
支持 JPG/PNG/GIF/MP4/AVI/MKV/M4V 等格式
(已自动从视频获取)
{{ t.name }}
{{ t.name }}
{{ previewMaterialData?.name || '预览' }}
{{ previewMaterialData?.type === 'image' ? '图片' : '视频' }}
素材详情
加载中...
素材不存在
| 素材名称 | {{ materialDetail.name }} |
| 类型 | {{ materialDetail.type === 'image' ? '图片' : '视频' }} |
| 播放时长 | {{ materialDetail.duration }} 秒 |
| 所属甲方 | {{ materialDetail.client_name || '-' }} |
| 所属分组 | {{ materialDetail.group_name || '-' }} |
| 文件大小 | {{ formatFileSize(materialDetail.file_size) }} |
| MD5 | {{ materialDetail.md5 }} |
| 分辨率 | {{ materialDetail.width }} × {{ materialDetail.height }} |
| 状态 | {{ materialDetail.status === 1 ? '启用' : '禁用' }} |
| 上传时间 | {{ formatTime(materialDetail.created_at) }} |
| 更新时间 | {{ formatTime(materialDetail.updated_at) }} |
| 标签 | {{ t.name }} 无 |
{{ editingMaterialGroup ? '编辑分组' : '新建分组' }}
素材分组
暂无分组,点击新建分组按钮创建
| ID | 分组名称 | 所属甲方 | 素材数 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ g.id }} | {{ g.name }} | {{ g.client_name }} | {{ g.material_count }} | {{ g.status === 1 ? '启用' : '禁用' }} | {{ formatTime(g.created_at) }} |
加载中...
该分组暂无素材
| ID | 名称 | 分组 | 甲方 | 类型 | 时长(s) | 状态 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ m.id }} | {{ m.name }} | {{ m.group_name || '-' }} | {{ m.client_name || '-' }} | {{ m.type === 'image' ? '图片' : '视频' }} | {{ m.duration }} | {{ m.status === 1 ? '启用' : '禁用' }} |
加载中...
暂无播放方案
| ID | 名称 | 有效期 | 时段 | 素材 | 设备 | 优先级 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ p.id }} | {{ p.name }} | {{ p.start_date || '-' }} ~ {{ p.end_date || '-' }} | {{ p.start_time || '-' }} - {{ p.end_time || '-' }} | {{ p.material_count }} | {{ p.device_count }} | {{ p.priority || 0 }} | {{ p.status === 1 ? '启用' : '禁用' }} | {{ formatTime(p.created_at) }} |
共 {{ playlistTotal }} 条
{{ editingPlaylist ? '编辑播放方案' : '新建播放方案' }}
{{ playlistFormStep > s.n ? '✓' : s.n }}
{{ s.t }}
加载中...
🎬
{{ m.name }}
暂无可用素材
📍 按地区快捷选择
{{ playlistTreeTotalCount }} 台设备
{{ playlistDeviceTreeSearch ? '未找到匹配' : '暂无设备' }}
{{ playlistIsExpanded(prov.province) ? '▼' : '▶' }}
{{ prov.province }}
({{ playlistCountProv(prov.province) }})
{{ playlistIsExpanded(prov.province + '/' + city.city) ? '▼' : '▶' }}
{{ city.cityName }}
({{ playlistCountCity(prov.province, city.city) }})
{{ playlistIsExpanded(prov.province + '/' + city.city + '/' + store.store) ? '▼' : '▶' }}
{{ store.store }}
({{ playlistCountStore(prov.province, city.city, store.store) }})
{{ d.device_name || d.device_code }}
加载中...
| 设备名称 / 编码 | 所属公司 | 所属门店 | App版本 | 分辨率 | 状态 | 在线 | 最后上线 | |
|---|---|---|---|---|---|---|---|---|
{{ d.device_name || '-' }}{{ d.device_code || '-' }} |
{{ displayCity(d.city) }} | {{ d.store_name || '-' }} | {{ d.app_version || '-' }} | {{ d.screen_width && d.screen_height ? d.screen_width + '×' + d.screen_height : '-' }} | {{ deviceStatusLabel(d.status) }} | {{ d.status === 'online' ? '在线' : '离线' }} | {{ formatHeartbeat(d.last_heartbeat) }} | |
📭 {{ playlistDeviceSearch.keyword || playlistDeviceSearch.status ? '未找到匹配的设备' : '暂无可用设备' }} | ||||||||
共 {{ playlistDeviceTotal }} 条
{{ playlistDevicePage }} / {{ Math.ceil(playlistDeviceTotal / playlistDevicePageSize) }}
加载中...
| ID | 设备编码 | 设备名称 | 二十支公司 | 所属门店 | 型号 | 状态 | 心跳 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ d.id }} | {{ d.device_code || '-' }} | {{ d.device_name || '-' }} | {{ displayCity(d.city) }} | {{ d.store_name || '-' }} | {{ d.device_model || '-' }} | {{ deviceStatusLabel(d.status) }} | {{ formatHeartbeat(d.last_heartbeat) }} | |
| 暂无设备 | ||||||||
共 {{ deviceTotal }} 条
设备详情 - {{ deviceDetail?.device_name || deviceDetail?.device_code }}
设备编码:{{ deviceDetail.device_code }}
型号:{{ deviceDetail.device_model || '-' }}
Android:{{ deviceDetail.android_version }}
APP版本:{{ deviceDetail.app_version }}
IP:{{ deviceDetail.ip_address }}
屏幕:{{ deviceDetail.screen_width }}x{{ deviceDetail.screen_height }}
总存储:{{ formatFileSize(deviceDetail.storage_total) }}
剩余:{{ formatFileSize(deviceDetail.storage_free) }}
已分配的播放列表
{{ pl.name }}
未分配播放列表
编辑设备资料
{{ t.name }}
{{ t.name }}
分配播放列表
暂无播放列表
新增设备
留空则使用系统预设默认密码
{{ t.name }}
{{ t.name }}
⚠️ 播放日志仅保留最近 7 天数据,超期自动清理。历史统计请查看「播放报表」。
| 设备编号 | 设备名称 | 素材名称 | 播放时间 | 时长 |
|---|---|---|---|---|
| {{ log.device_code }} | {{ log.device_name }} | {{ log.material_name }} | {{ formatTime(log.start_time) }} | {{ log.duration }}s |
| 暂无数据 | ||||
第 {{ playLogPage }} / {{ Math.ceil(playLogTotal / playLogPageSize) }} 页
暂无版本,请上传APK
| ID | 平台 | 版本号 | 版本名 | 文件大小 | MD5 | 强制更新 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ v.id }} | {{ v.platform === 'windows' ? 'Win' : '安卓' }} | {{ v.version_code }} | {{ v.version_name }} | {{ formatFileSize(v.file_size) }} | {{ v.md5?.substring(0, 8) }}… | {{ v.force_update ? '是' : '否' }} | {{ v.status === 1 ? '启用' : '禁用' }} | {{ formatTime(v.created_at) }} |
上传新版本
{{ apkFile ? apkFile.name : '点击选择文件 (APK / EXE)' }}
暂无升级记录
| ID | 设备 | 从版本 | 到版本 | 状态 | 开始时间 | 完成时间 |
|---|---|---|---|---|---|---|
| {{ u.id }} | {{ u.device_name || u.device_code }} | {{ u.from_version || '-' }} | {{ u.to_version }} | {{ upgradeStatusLabel(u.status) }} | {{ formatTime(u.started_at) }} | {{ formatTime(u.completed_at) }} |
推送升级
将自动匹配 {{ selectedPushPlatform === 'windows' ? 'Windows' : 'Android' }} 设备
📍 按地区快捷选择
{{ upgradeTreeTotalCount }} 台设备
{{ upgradeDeviceTreeSearch ? '未找到匹配' : '暂无设备' }}
{{ upgradeIsExpanded(prov.province) ? '▼' : '▶' }}
{{ prov.province }}
({{ upgradeCountProv(prov.province) }})
{{ upgradeIsExpanded(prov.province + '/' + city.city) ? '▼' : '▶' }}
{{ city.cityName }}
({{ upgradeCountCity(prov.province, city.city) }})
{{ upgradeIsExpanded(prov.province + '/' + city.city + '/' + store.store) ? '▼' : '▶' }}
{{ store.store }}
({{ upgradeCountStore(prov.province, city.city, store.store) }})
{{ d.device_name || d.device_code }}
加载中...
| 设备名称 / 编码 | 所属公司 | 所属门店 | App版本 | 分辨率 | 状态 | 在线 | 最后上线 | |
|---|---|---|---|---|---|---|---|---|
|
{{ d.device_name || '-' }}
{{ d.device_code || '-' }}
|
{{ displayCity(d.city) }} | {{ d.store_name || '-' }} | {{ d.app_version || '-' }} | {{ d.screen_width && d.screen_height ? d.screen_width + '×' + d.screen_height : '-' }} | {{ deviceStatusLabel(d.status) }} | {{ d.status === 'online' ? '在线' : '离线' }} | {{ formatHeartbeat(d.last_heartbeat) }} | |
|
📭
{{ upgradeDeviceSearch.keyword || upgradeDeviceSearch.status ? '未找到匹配的设备' : '暂无可用设备' }}
|
||||||||
共 {{ upgradeDeviceTotal }} 条
{{ upgradeDevicePage }} / {{ Math.ceil(upgradeDeviceTotal / upgradeDevicePageSize) }}
加载中...
暂无企业,点击新建企业按钮添加
| ID | 企业简称 | 企业全称 | 联系人 | 电话 | 地址 | 素材数 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ c.id }} | {{ c.name }} | {{ c.full_name || '-' }} | {{ c.contact_person || '-' }} | {{ c.contact_phone || '-' }} | {{ c.address || '-' }} | {{ c.material_count }} | {{ c.status === 1 ? '启用' : '禁用' }} | {{ formatTime(c.created_at) }} |
|
共 {{ clientTotal }} 条
{{ reportData.list.reduce((s, r) => s + Number(r.total_plays), 0) }}
总播放次数
{{ formatDuration(reportData.list.reduce((s, r) => s + Number(r.total_duration), 0)) }}
总播放时长
{{ reportData.list.reduce((s, r) => s + Number(r.unique_materials), 0) }}
覆盖素材数
{{ reportData.list.reduce((s, r) => s + Number(r.unique_devices), 0) }}
覆盖设备数
加载中...
{{ reportClientId ? '素材播放明细' : '企业播放汇总' }}
| 企业名称 | 总播放次数 | 总播放时长 | 覆盖素材 | 覆盖设备 | 操作 |
|---|---|---|---|---|---|
| {{ r.client_name }} | {{ r.total_plays }} | {{ formatDuration(r.total_duration) }} | {{ r.unique_materials }} | {{ r.unique_devices }} |
|
| 素材ID | 素材名称 | 类型 | 播放次数 | 播放时长 |
|---|---|---|---|---|
| {{ m.material_id }} | {{ m.material_name }} | {{ m.material_type === 'image' ? '图片' : '视频' }} | {{ m.play_count }} | {{ formatDuration(m.total_duration) }} |
暂无播放数据
暂无统计数据
创建播放报表 - {{ reportCreateForm.client_name }}
🎬
{{ m.name }}
该企业暂无素材
加载中...
暂无已创建的播放报表
| ID | 企业名称 | 素材数量 | 统计周期 | 口令 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ def.id }} | {{ def.client_name }} | {{ def.material_count === -1 ? '全部' : def.material_count }} | {{ def.start_date || '不限' }} ~ {{ def.end_date || '不限' }} | {{ def.passcode ? '已设置' : '无' }} | {{ formatTime(def.created_at) }} |
|
共 {{ reportDefTotal }} 条
加载中...
暂无分享记录
| ID | 甲方企业 | 统计周期 | 分享Token | 口令 | 状态 | 过期时间 | 创建者 | 创建时间 |
|---|---|---|---|---|---|---|---|---|
| {{ h.id }} | {{ h.enterprise_names || '-' }} | {{ h.start_date || '不限' }} ~ {{ h.end_date || '不限' }} | {{ h.token?.substring(0,16) }}... | {{ h.passcode ? '已设置' : '无' }} | {{ h.is_active ? '有效' : '已失效' }} | {{ h.expires_at ? formatTime(h.expires_at) : '永久' }} | {{ h.creator_name || '-' }} | {{ formatTime(h.created_at) }} |
共 {{ shareHistoryTotal }} 条
暂无标签,请创建新标签
| ID | 标签名称 | 创建时间 | 操作 |
|---|---|---|---|
| {{ t.id }} | {{ t.name }} | {{ formatTime(t.created_at) }} |