feat: integrate 3 order tables, split agency vs self-invest channels

This commit is contained in:
王源
2026-09-07 12:41:59 +08:00
parent d1957bfa33
commit f14a200a4c
2 changed files with 23 additions and 18 deletions
+11 -6
View File
@@ -418,7 +418,8 @@
<th>日预算</th>
<th>状态</th>
<th>MMP</th>
<th>已铺投放渠道</th>
<th>代投渠道</th>
<th>平台自投渠道</th>
<th>数据来源</th>
</tr>
</thead>
@@ -482,7 +483,10 @@
const active = orderData.filter(o => o.status === 'Active').length;
const products = new Set(orderData.map(o => o.product)).size;
const allChannels = new Set();
orderData.forEach(o => (o.channels || []).forEach(c => allChannels.add(c)));
orderData.forEach(o => {
(o.agency_channels || []).forEach(c => allChannels.add(c));
(o.self_channels || []).forEach(c => allChannels.add(c));
});
document.getElementById('orderStats').innerHTML = `
<div class="summary-card">
@@ -509,11 +513,11 @@
// Table
const tbody = document.querySelector('#orderTable tbody');
const chipList = (arr) => (arr && arr.length)
? arr.map(c => `<span class="channel-chip">${c}</span>`).join('')
: '<span class="no-channel">—</span>';
tbody.innerHTML = orderData.map(o => {
const statusClass = o.status === 'Active' ? 'status-active' : 'status-pause';
const channels = (o.channels && o.channels.length)
? o.channels.map(c => `<span class="channel-chip">${c}</span>`).join('')
: '<span class="no-channel">—</span>';
return `
<tr>
<td style="font-weight:600">${o.product}</td>
@@ -525,7 +529,8 @@
<td class="num-cell">${o.budget}</td>
<td><span class="status-badge ${statusClass}">${o.status}</span></td>
<td>${o.mmp}</td>
<td style="max-width:260px;white-space:normal">${channels}</td>
<td style="max-width:220px;white-space:normal">${chipList(o.agency_channels)}</td>
<td style="max-width:180px;white-space:normal">${chipList(o.self_channels)}</td>
<td style="font-size:11px;color:#94a3b8">${o.source}</td>
</tr>
`;
+12 -12
View File
@@ -1,14 +1,14 @@
[
{"product":"Honor of Kings","pkg":"com.levelinfinite.sgameGlobal","platform":"Android","geo":"IN / PH","pay_mode":"CPI","price":"0.15","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"Campaign list"},
{"product":"IGG (Lords Mobile)","pkg":"com.igg.android.lordsmobile","platform":"Android","geo":"RU","pay_mode":"CPI","price":"0.5","budget":"$100/day","status":"Active","mmp":"AppsFlyer","channels":["Eagllwin-pubz","MediaGo","传音","PropellerAds代投"],"source":"Campaign list + 新一轮尝试"},
{"product":"Shahid","pkg":"net.mbc.shahid","platform":"Android","geo":"SA","pay_mode":"CPA","price":"5.4","budget":"$100/day","status":"Active","mmp":"AppsFlyer","channels":["Eagllwin-pubz","MediaGo","传音","PropellerAds代投","Smartyads","Adsterra"],"source":"Campaign list + 新一轮尝试"},
{"product":"灵犀互动","pkg":"com.sialiagames.xczyw.gp.tw","platform":"Android","geo":"TW","pay_mode":"CPI","price":"5","budget":"$150/day","status":"Active","mmp":"AppsFlyer","channels":["Eagllwin-pubz","MediaGo","Smartyads","Adsterra","RollerAds","PropellerAds代投"],"source":"Campaign list + 新一轮尝试"},
{"product":"灵犀互动","pkg":"com.qookkagames.xczyw.gp.hk","platform":"Android","geo":"HK","pay_mode":"CPI","price":"5","budget":"$150/day","status":"Active","mmp":"AppsFlyer","channels":["Eagllwin-pubz","MediaGo","Smartyads","Adsterra","RollerAds","PropellerAds代投"],"source":"Campaign list + 新一轮尝试"},
{"product":"Water Sort! Color Sort Puzzle","pkg":"water.sort.color.puzzle.offline.games","platform":"Android","geo":"US","pay_mode":"CPI","price":"-","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"Campaign list"},
{"product":"Magalu_BR","pkg":"com.luizalabs.mlapp / id891130066","platform":"Android + iOS","geo":"BR","pay_mode":"CPI","price":"0.12","budget":"$36/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"Campaign list"},
{"product":"Netshoes_BR","pkg":"br.com.netshoes.app / id886443637","platform":"Android + iOS","geo":"BR","pay_mode":"CPI","price":"0.12","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"Campaign list"},
{"product":"AUTODOC","pkg":"de.autodoc.gmbh / id1014949597","platform":"Android + iOS","geo":"26个欧洲国家","pay_mode":"CPA","price":"20","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"Campaign list"},
{"product":"Zombie","pkg":"com.ddup.zombiewaves.zw","platform":"Android","geo":"US","pay_mode":"CPI","price":"$1-2","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","channels":["Eagllwin-pubz","Newsbreak","Mintegral","Bigo"],"source":"新一轮尝试"},
{"product":"Xena","pkg":"com.xparty.androidapp.IQ","platform":"Android","geo":"IQ","pay_mode":"CPI","price":"0.2","budget":"$30/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"新一轮尝试"},
{"product":"Xena","pkg":"com.xparty.androidapp.EG","platform":"Android","geo":"EG","pay_mode":"CPI","price":"0.2","budget":"$30/day","status":"Pause","mmp":"AppsFlyer","channels":[],"source":"新一轮尝试"}
{"product":"Honor of Kings","pkg":"com.levelinfinite.sgameGlobal","platform":"Android","geo":"IN / PH","pay_mode":"CPI","price":"0.15","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":["Mintegral"],"source":"Campaign list + 平台自投"},
{"product":"IGG (Lords Mobile)","pkg":"com.igg.android.lordsmobile","platform":"Android","geo":"RU","pay_mode":"CPI","price":"0.5","budget":"$100/day","status":"Active","mmp":"AppsFlyer","agency_channels":["Eagllwin-pubz","MediaGo","传音","PropellerAds代投"],"self_channels":["Mintegral"],"source":"全部三表"},
{"product":"Shahid","pkg":"net.mbc.shahid","platform":"Android","geo":"SA","pay_mode":"CPA","price":"5.4","budget":"$100/day","status":"Active","mmp":"AppsFlyer","agency_channels":["Eagllwin-pubz","MediaGo","传音","PropellerAds代投","Smartyads","Adsterra"],"self_channels":["Mintegral"],"source":"全部三表"},
{"product":"Water Sort! Color Sort Puzzle","pkg":"water.sort.color.puzzle.offline.games","platform":"Android","geo":"US","pay_mode":"CPI","price":"-","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":["Mintegral"],"source":"Campaign list + 平台自投"},
{"product":"灵犀互动","pkg":"com.sialiagames.xczyw.gp.tw","platform":"Android","geo":"TW","pay_mode":"CPI","price":"5","budget":"$150/day","status":"Active","mmp":"AppsFlyer","agency_channels":["Eagllwin-pubz","MediaGo","Smartyads","Adsterra","RollerAds","PropellerAds代投"],"self_channels":["Mintegral","Kwai","Bigo"],"source":"全部三表"},
{"product":"灵犀互动","pkg":"com.qookkagames.xczyw.gp.hk","platform":"Android","geo":"HK","pay_mode":"CPI","price":"5","budget":"$150/day","status":"Active","mmp":"AppsFlyer","agency_channels":["Eagllwin-pubz","MediaGo","Smartyads","Adsterra","RollerAds","PropellerAds代投"],"self_channels":["Mintegral","Kwai","Bigo"],"source":"全部三表"},
{"product":"Magalu_BR","pkg":"com.luizalabs.mlapp / id891130066","platform":"Android + iOS","geo":"BR","pay_mode":"CPI","price":"0.12","budget":"$36/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":["Mintegral"],"source":"Campaign list + 平台自投"},
{"product":"Netshoes_BR","pkg":"br.com.netshoes.app / id886443637","platform":"Android + iOS","geo":"BR","pay_mode":"CPI","price":"0.12","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":["Mintegral"],"source":"Campaign list + 平台自投"},
{"product":"AUTODOC","pkg":"de.autodoc.gmbh / id1014949597","platform":"Android + iOS","geo":"26个欧洲国家","pay_mode":"CPA","price":"20","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":[],"source":"Campaign list + 平台自投"},
{"product":"Zombie","pkg":"com.ddup.zombiewaves.zw","platform":"Android","geo":"US","pay_mode":"CPI","price":"$1-2","budget":"$100/day","status":"Pause","mmp":"AppsFlyer","agency_channels":["Eagllwin-pubz","Newsbreak","Mintegral","Bigo"],"self_channels":[],"source":"新一轮尝试"},
{"product":"Xena","pkg":"com.xparty.androidapp.IQ","platform":"Android","geo":"IQ","pay_mode":"CPI","price":"0.2","budget":"$30/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":[],"source":"新一轮尝试"},
{"product":"Xena","pkg":"com.xparty.androidapp.EG","platform":"Android","geo":"EG","pay_mode":"CPI","price":"0.2","budget":"$30/day","status":"Pause","mmp":"AppsFlyer","agency_channels":[],"self_channels":[],"source":"新一轮尝试"}
]