feat: integrate 3 order tables, split agency vs self-invest channels
This commit is contained in:
+11
-6
@@ -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
@@ -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":"新一轮尝试"}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user