📺
{{ stats.totalDevices }}
设备总数
🟢
{{ stats.onlineDevices }}
在线设备
🏢
{{ stats.totalClients }}
甲方数量
📋
{{ stats.totalPlans }}
播放方案
{{ stats.todayPlays }}
今日投放
📡
{{ stats.activePlans }}
活跃方案
📊 升级统计
{{ upgradeStats.total }}
总升级次数
{{ upgradeStats.pending }}
待升级
{{ upgradeStats.success }}
升级成功
{{ upgradeStats.failed }}
升级失败
📁
{{ uploadFile ? uploadFile.name : '点击或拖拽文件到此处上传' }}
支持 JPG/PNG/GIF/MP4/AVI/MKV/M4V 等格式
(已自动从视频获取)
{{ t.name }}
{{ t.name }}
加载中...
素材不存在
素材名称{{ 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 }}
素材分组
暂无分组,点击新建分组按钮创建
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) }}
加载中...
🎬
{{ m.name }}
{{ m.type === 'image' ? '图片' : '视频' }} · {{ m.duration }}s
暂无可用素材
📍 按地区快捷选择 {{ playlistTreeTotalCount }} 台设备
{{ playlistDeviceTreeSearch ? '未找到匹配' : '暂无设备' }}
已选择 {{ playlistForm.device_ids.length }} 台设备 清空 共 {{ playlistDeviceTotal }} 台匹配
加载中...
设备名称 / 编码所属公司所属门店 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 ? '未找到匹配的设备' : '暂无可用设备' }}
加载中...
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) }}
暂无设备
设备编码:{{ 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
暂无数据
暂无版本,请上传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 ? '未找到匹配' : '暂无设备' }}
已选择 {{ pushUpgradeForm.device_ids.length }} 台设备 清空 共 {{ upgradeDeviceTotal }} 台匹配
加载中...
设备名称 / 编码 所属公司 所属门店 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 ? '未找到匹配的设备' : '暂无可用设备' }}
加载中...
暂无企业,点击新建企业按钮添加
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) }}
{{ 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) }}
覆盖设备数
加载中...
🎬
{{ m.name }}
{{ m.type === 'image' ? '图片' : '视频' }} · {{ m.duration }}s
该企业暂无素材
加载中...
暂无已创建的播放报表
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) }}
加载中...
暂无分享记录
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) }}
暂无标签,请创建新标签
ID标签名称创建时间操作
{{ t.id }} {{ t.name }} {{ formatTime(t.created_at) }}