From 903b0583400d91994fdffcecea93545bbe36e1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=BA=90?= Date: Mon, 19 Oct 2026 20:24:00 +0800 Subject: [PATCH] feat: add persistent link summary --- assets/link-generator.js | 137 ++++++++++++++++++++++++++++++++++----- assets/styles.css | 6 +- link-generator.html | 53 +++++++++------ 3 files changed, 155 insertions(+), 41 deletions(-) diff --git a/assets/link-generator.js b/assets/link-generator.js index a7b2b2f..c8f61e0 100644 --- a/assets/link-generator.js +++ b/assets/link-generator.js @@ -3,12 +3,14 @@ if (!templates?.length) return; const { convertTrackingLink } = window.TrackingLinkConverter; - + const HISTORY_KEY = 'traffic_link_history_v1'; + const MAX_HISTORY = 50; const $ = (id) => document.getElementById(id); const platformSelect = $('platformSelect'); const macroBody = $('macroTableBody'); const output = $('urlOutput'); let activeResult = null; + let history = loadHistory(); let inputTimer; $('templateCount').textContent = `${templates.length} 个平台模板`; @@ -26,7 +28,9 @@ function renderMacros() { const query = $('macroSearch').value.trim().toLowerCase(); - const rows = activeTemplate().macros.filter(([macro, desc]) => `${macro} ${desc}`.toLowerCase().includes(query)); + const allMacros = activeTemplate().macros; + const rows = allMacros.filter(([macro, desc]) => `${macro} ${desc}`.toLowerCase().includes(query)); + $('macroCount').textContent = `${allMacros.length} 个可用宏 · 点击展开`; macroBody.innerHTML = rows.length ? rows.map(([macro, desc]) => `${escapeHtml(macro)}${escapeHtml(desc)}`).join('') : '没有匹配的媒体宏'; @@ -66,7 +70,7 @@ if (!original) { showEmpty(); if (showRequiredMessage) $('generatorMessage').textContent = '请先粘贴一条完整的 Tracking Link'; - return; + return null; } try { @@ -84,34 +88,112 @@ $('conversionEmpty').classList.add('hidden'); $('conversionResult').classList.remove('hidden'); $('copyLink').disabled = false; + return result; } catch (error) { showError(error.message === 'Invalid URL' ? '链接格式不正确,请粘贴包含 http:// 或 https:// 的完整链接' : error.message); + return null; } } + function convertAndSave() { + const result = convertFromInput(true); + if (!result) return; + saveHistory(result); + $('generatorMessage').textContent = '转换完成,已加入平台链接总结'; + showToast('转换完成并已保存记录'); + } + function loadSample() { $('originalLink').value = 'https://trident.bigpinggo.com/l/click?advid=30&campid=91566789&platform=M_API_Self_Mintegral&pkg=com.salaryse.android&clickid={click_id}&offer_name={offer_name}&creative_id={creative_id}&creative_name={creative_name}&affiliate_id={affiliate_id}&idfa={idfa}&gaid={gaid}&imei={imei}&android_id={android_id}&mac={mac}&oaid={oaid}&uagent={ua}&os_platform={os_platform}&os_version={os_version}&device_model={device_model}&ip={ip}&country_code={country_code}&ext={ext}&rta_token={rta_token}&san_campid=91566789&adset_id=-1&c_cto=0'; convertFromInput(false); } + function loadHistory() { + try { + const stored = JSON.parse(localStorage.getItem(HISTORY_KEY) || '[]'); + return Array.isArray(stored) ? stored.filter((item) => item?.id && item?.url).slice(0, MAX_HISTORY) : []; + } catch (_) { return []; } + } + + function persistHistory() { + try { + localStorage.setItem(HISTORY_KEY, JSON.stringify(history)); + return true; + } catch (_) { + showToast('浏览器无法保存记录,请检查存储权限'); + return false; + } + } + + function extractPkg(url) { + try { return new URL(url).searchParams.get('pkg') || '—'; } + catch (_) { return '—'; } + } + + function saveHistory(result) { + const platform = activeTemplate().name; + const pkg = extractPkg(result.url); + history = history.filter((item) => item.url !== result.url); + history.unshift({ + id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`, + platform, + pkg, + type: result.type, + createdAt: new Date().toISOString(), + url: result.url + }); + history = history.slice(0, MAX_HISTORY); + persistHistory(); + renderHistory(); + } + + function formatTime(value) { + const date = new Date(value); + if (Number.isNaN(date.getTime())) return '—'; + return new Intl.DateTimeFormat('zh-CN', { year:'numeric', month:'2-digit', day:'2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit', hour12:false }).format(date); + } + + function renderHistory() { + $('historyCount').textContent = history.length; + $('clearHistory').disabled = history.length === 0; + $('historyEmpty').classList.toggle('hidden', history.length > 0); + $('historyTableWrap').classList.toggle('hidden', history.length === 0); + $('historyTableBody').innerHTML = history.map((item) => ` + + ${escapeHtml(item.platform)} + ${escapeHtml(item.pkg)} + + + `).join(''); + } + + async function copyText(text) { + try { await navigator.clipboard.writeText(text); } + catch (_) { + const area = document.createElement('textarea'); + area.value = text; + area.style.position = 'fixed'; + area.style.opacity = '0'; + document.body.appendChild(area); + area.select(); + document.execCommand('copy'); + area.remove(); + } + } + async function copyUrl() { if (!activeResult) return; - try { - await navigator.clipboard.writeText(activeResult.url); - } catch (_) { - const range = document.createRange(); - range.selectNodeContents(output); - const selection = window.getSelection(); - selection.removeAllRanges(); - selection.addRange(range); - document.execCommand('copy'); - selection.removeAllRanges(); - } + await copyText(activeResult.url); $('copyStatus').textContent = '已复制'; + showToast('转换后的平台链接已复制'); + } + + function showToast(message) { const toast = $('toast'); - toast.textContent = '转换后的平台链接已复制'; + toast.textContent = message; toast.classList.add('show'); - setTimeout(() => toast.classList.remove('show'), 1800); + clearTimeout(showToast.timer); + showToast.timer = setTimeout(() => toast.classList.remove('show'), 1800); } function escapeHtml(value) { @@ -120,10 +202,30 @@ platformSelect.addEventListener('change', renderPlatform); $('macroSearch').addEventListener('input', renderMacros); - $('convertLink').addEventListener('click', () => convertFromInput(true)); + $('convertLink').addEventListener('click', convertAndSave); $('sampleLink').addEventListener('click', loadSample); $('copyLink').addEventListener('click', copyUrl); $('clearConverter').addEventListener('click', () => { $('originalLink').value = ''; showEmpty(); $('originalLink').focus(); }); + $('clearHistory').addEventListener('click', () => { + if (!history.length || !window.confirm('确定清空全部平台链接记录吗?')) return; + history = []; + persistHistory(); + renderHistory(); + }); + $('historyTableBody').addEventListener('click', async (event) => { + const button = event.target.closest('button[data-action]'); + if (!button) return; + const item = history.find((record) => record.id === button.dataset.id); + if (!item) return; + if (button.dataset.action === 'copy') { + await copyText(item.url); + showToast('历史链接已复制'); + } else if (button.dataset.action === 'delete') { + history = history.filter((record) => record.id !== item.id); + persistHistory(); + renderHistory(); + } + }); $('originalLink').addEventListener('input', () => { clearTimeout(inputTimer); inputTimer = setTimeout(() => convertFromInput(false), 220); @@ -131,4 +233,5 @@ renderPlatform(); showEmpty(); + renderHistory(); })(); diff --git a/assets/styles.css b/assets/styles.css index 2e23abb..893a558 100644 --- a/assets/styles.css +++ b/assets/styles.css @@ -6,6 +6,6 @@ .hero{min-height:480px;display:grid;grid-template-columns:1.3fr .7fr;align-items:center;padding-block:74px 56px}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.13em;font-weight:500;display:flex;align-items:center;gap:9px;margin:0 0 22px;color:#394641}.eyebrow span{display:inline-block;width:28px;height:2px;background:var(--orange)}.hero h1{font-size:clamp(43px,5vw,68px);line-height:1.08;letter-spacing:-.055em;margin:0;max-width:780px}.hero h1 em{font-style:normal;color:var(--blue-dark)}.hero-lead{color:var(--muted);font-size:16px;max-width:610px;margin:24px 0 32px}.hero-meta{display:flex;align-items:center;gap:15px;color:var(--muted);font-size:11px}.hero-meta span{display:flex;align-items:center;gap:7px}.hero-meta b{font-family:var(--mono);color:var(--ink)}.hero-meta i{height:1px;width:25px;background:var(--line)}.hero-visual{height:330px;position:relative;display:grid;place-items:center}.orbit{position:absolute;border:1px solid rgba(17,35,31,.16);border-radius:50%;transform:rotate(-19deg)}.orbit-one{width:280px;height:160px}.orbit-two{width:210px;height:300px;transform:rotate(42deg)}.visual-core{height:114px;width:114px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;position:relative;z-index:2;box-shadow:0 20px 40px rgba(17,35,31,.2)}.visual-core span{font:9px var(--mono);letter-spacing:.12em}.visual-core strong{font-size:24px;line-height:0;color:var(--lime)}.visual-node{position:absolute;background:var(--white);border:1px solid var(--line);border-radius:99px;padding:8px 13px;font:9px var(--mono);box-shadow:var(--shadow)}.node-a{left:8%;top:26%}.node-b{right:4%;top:38%;background:var(--lime)}.node-c{left:22%;bottom:10%;background:#dfe5ff} .tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.tool-card{min-height:390px;padding:36px 38px;border-radius:var(--radius);position:relative;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}.tool-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}.card-blue{background:#718cfa;color:#0d1b18}.card-lime{background:var(--lime)}.tool-number{font:11px var(--mono);opacity:.65}.tool-icon{position:absolute;right:36px;top:31px;font-size:28px;width:48px;height:48px;border:1px solid rgba(17,35,31,.25);border-radius:50%;display:grid;place-items:center}.tool-kicker{font:10px var(--mono);letter-spacing:.12em;margin:63px 0 8px;opacity:.7}.tool-card h2{font-size:32px;letter-spacing:-.04em;margin:0 0 13px}.tool-card>p:not(.tool-kicker){max-width:430px;margin:0;color:rgba(17,35,31,.75);font-size:14px}.tool-card ul{list-style:none;padding:0;margin:27px 0 45px;display:flex;gap:9px;flex-wrap:wrap}.tool-card li{border:1px solid rgba(17,35,31,.18);border-radius:99px;padding:6px 10px;font-size:10px}.tool-cta{position:absolute;left:38px;bottom:33px;font-weight:700;font-size:13px}.tool-cta b{font-size:17px;margin-left:8px}.status-strip{margin-top:20px;padding:22px 26px;border:1px solid var(--line);border-radius:15px;display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.55)}.status-strip>div,.data-badge{display:flex;align-items:center;gap:12px}.status-strip p,.data-badge p{display:flex;flex-direction:column;margin:0}.status-strip strong,.data-badge strong{font-size:12px}.status-strip small,.data-badge small{font-size:10px;color:var(--muted)}.pulse-dot{width:9px;height:9px;border-radius:50%;background:#71ad31;box-shadow:0 0 0 5px rgba(113,173,49,.12)}.status-note{font:10px var(--mono)!important;color:var(--muted)} .site-footer{height:90px;display:flex;align-items:center;justify-content:space-between;color:#8b9591;font:10px var(--mono);letter-spacing:.04em}.site-footer b{font-weight:400}.page-main{padding-block:45px 70px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:30px}.page-heading .eyebrow{margin-bottom:11px}.page-heading h1{font-size:42px;letter-spacing:-.045em;line-height:1.12;margin:0 0 10px}.page-heading>div>p:last-child{margin:0;color:var(--muted);font-size:13px}.data-badge{border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.55);padding:13px 17px;min-width:208px}.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 9px 30px rgba(17,35,31,.035)}.workspace{display:grid}.recommendation-layout{grid-template-columns:370px 1fr;gap:20px;align-items:start}.form-panel{padding:28px;position:sticky;top:102px}.panel-title span{font:9px var(--mono);color:var(--blue-dark);letter-spacing:.1em}.panel-title h2{font-size:21px;letter-spacing:-.025em;margin:3px 0}.panel-title p{font-size:11px;color:var(--muted);margin:0}.panel-title.compact{padding:25px 26px 15px}.field-label{display:block;font-size:11px;font-weight:700;margin:22px 0 7px}.field-label b{color:#e4513e}.input-wrap{display:flex;border:1px solid var(--line);border-radius:10px;background:#fafaf7;overflow:hidden;transition:border .2s}.input-wrap:focus-within{border-color:var(--blue)}.input-prefix{display:grid;place-items:center;padding:0 11px;border-right:1px solid var(--line);font:9px var(--mono);color:var(--muted)}input,select{width:100%;height:43px;border:1px solid var(--line);border-radius:10px;background:#fafaf7;color:var(--ink);padding:0 12px;outline:none;transition:border-color .2s,box-shadow .2s}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(111,140,255,.1)}.input-wrap input{border:0;border-radius:0;box-shadow:none!important}.field-help{font-size:9px;color:#8c9692;margin:5px 0 0}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:4px;border:1px solid var(--line);border-radius:10px;background:#f5f5f1}.segmented input{position:absolute;opacity:0;pointer-events:none}.segmented span{height:31px;display:grid;place-items:center;border-radius:7px;font-size:10px;cursor:pointer}.segmented input:checked+span{background:var(--white);box-shadow:0 2px 8px rgba(17,35,31,.08);font-weight:700}.primary-btn{height:44px;border:0;border-radius:10px;background:var(--ink);color:#fff;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:18px;font-weight:700;font-size:12px}.primary-btn:hover{background:#263a35}.full-btn{width:100%;margin-top:21px;justify-content:space-between}.full-btn b{color:var(--lime);font-size:17px}.text-btn{border:0;background:transparent;color:var(--blue-dark);font-size:10px;width:100%;padding:12px 0 4px}.form-message,.validation-line{color:#c04431;font-size:10px;min-height:16px;margin-top:8px}.form-footnote{display:flex;gap:10px;background:#f6f6f2;border-radius:10px;padding:12px;margin-top:18px}.form-footnote b{min-width:18px;height:18px;border-radius:50%;border:1px solid #9da6a2;display:grid;place-items:center;font:10px var(--mono)}.form-footnote p{font-size:9px;color:var(--muted);margin:0}.result-panel{min-height:604px;padding:29px}.result-head,.config-topline{display:flex;align-items:center}.result-head{justify-content:space-between;padding-bottom:19px;border-bottom:1px solid var(--line)}.result-head h2,.config-topline h2{font-size:21px;margin:2px 0 0;letter-spacing:-.025em}.section-index{display:block;color:var(--blue-dark)}.outline-btn{border:1px solid var(--line);border-radius:9px;background:#fff;height:36px;padding:0 13px;font-size:10px;color:var(--muted)}.outline-btn:hover{border-color:var(--ink);color:var(--ink)}.result-empty{min-height:480px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-graphic{display:flex;align-items:center;gap:8px;margin-bottom:25px}.empty-graphic span{width:54px;height:54px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font:9px var(--mono);background:#f8f8f5}.empty-graphic span:nth-of-type(2){background:#e5eaff}.empty-graphic span:nth-of-type(3){background:#eaf7c9}.empty-graphic i{font-style:normal;color:#a4aca9}.result-empty h3{font-size:16px;margin:0 0 7px}.result-empty p{font-size:11px;color:var(--muted);max-width:390px;margin:0}.query-summary{display:grid;grid-template-columns:1.7fr 1fr .9fr;background:#f5f5f1;border-radius:12px;margin:18px 0 13px;padding:12px 16px;gap:13px}.query-summary div{display:flex;flex-direction:column;min-width:0}.query-summary div+div{border-left:1px solid var(--line);padding-left:15px}.query-summary span{font:8px var(--mono);color:#8b9591;letter-spacing:.07em}.query-summary strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.result-list{display:flex;flex-direction:column;gap:9px}.result-card{display:grid;grid-template-columns:37px 1fr auto;gap:14px;align-items:center;padding:15px 16px;border:1px solid var(--line);border-radius:13px;position:relative}.result-card.top-result{border-color:#98adff;background:#f7f8ff}.result-card.top-result:before{content:'BEST MATCH';position:absolute;right:13px;top:-7px;background:var(--blue);font:7px var(--mono);padding:3px 7px;border-radius:99px}.rank{font:13px var(--mono);color:#a0a9a5}.result-name{display:flex;align-items:center;gap:9px}.result-name h3{font-size:14px;margin:0}.result-name>span{font-size:8px;border:1px solid var(--line);border-radius:99px;padding:2px 6px;color:var(--muted)}.reason-tags{display:flex;gap:5px;flex-wrap:wrap;margin:6px 0 4px}.reason-tags span{font-size:8px;background:#eef1ea;padding:3px 6px;border-radius:4px}.result-main p{font-size:9px;color:var(--muted);margin:0}.score-block{display:flex;align-items:center;gap:11px}.score-ring{--score:50;width:50px;height:50px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle closest-side,#fff 78%,transparent 80% 99%),conic-gradient(var(--blue-dark) calc(var(--score)*1%),#e6e9e5 0)}.score-ring strong{font:12px var(--mono);line-height:1}.score-ring small{font:7px var(--mono);color:var(--muted)}.priority{font-size:8px;border-radius:99px;padding:4px 7px;white-space:nowrap}.priority-high{background:#dfe5ff;color:#273fae}.priority-mid{background:#e9f7c5;color:#58790a}.priority-low{background:#eee;color:#6e7774}.method-note{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:8px;color:var(--muted)}.method-note strong{margin-right:auto;color:var(--ink)}.method-note span{border-left:1px solid var(--line);padding-left:8px} -.generator-stack{display:flex;flex-direction:column;gap:18px}.converter-input-panel{padding:26px}.config-topline{gap:13px}.config-topline .outline-btn{margin-left:auto}.converter-toolbar{display:grid;grid-template-columns:1.3fr .7fr .7fr;gap:14px;margin-top:21px}.converter-toolbar label>span,.detect-card>span{display:block;font-size:9px;font-weight:700;margin-bottom:5px}.detect-card{height:65px;border:1px solid var(--line);border-radius:10px;background:#fafaf7;padding:9px 12px}.detect-card strong{display:flex;align-items:center;height:29px;font-size:11px}.textarea-label{display:flex;align-items:center;justify-content:space-between;margin:20px 0 7px}.textarea-label>span{font-size:10px;font-weight:700}.textarea-label small{font-size:9px;color:var(--muted)}.link-textarea{width:100%;min-height:132px;resize:vertical;border:1px solid var(--line);border-radius:12px;background:#fafaf7;padding:13px 14px;outline:none;font:10px/1.65 var(--mono);color:var(--ink)}.link-textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(111,140,255,.1)}.converter-actions{display:flex;align-items:center;gap:14px;margin-top:12px}.converter-actions .validation-line{margin:0 0 0 auto}.text-inline-btn{border:0;background:transparent;color:var(--blue-dark);font-size:10px}.type-chip{display:inline-block;background:#dfe5ff;color:#273fae;border-radius:99px;padding:3px 8px;font-size:9px}.generator-columns{display:grid;grid-template-columns:.72fr 1.28fr;gap:18px;align-items:start}.macro-panel{overflow:hidden}.macro-search{padding:0 25px 14px}.macro-search input{height:38px}.macro-table-wrap{max-height:550px;overflow:auto;border-top:1px solid var(--line)}table{width:100%;border-collapse:collapse}.macro-table th,.macro-table td,.mapping-table th,.mapping-table td{text-align:left;border-bottom:1px solid #eceeea;padding:10px 13px;font-size:9px}.macro-table th,.mapping-table th{position:sticky;top:0;background:#f8f8f5;color:var(--muted);font:8px var(--mono);z-index:1}.macro-table th:first-child{width:42%}.macro-table code,.mapping-table code{font-family:var(--mono);font-size:9px;color:#2e48bc;word-break:break-all}.table-empty{text-align:center!important;color:var(--muted);padding:30px!important}.template-status{display:inline-block;background:#eaf7c9;color:#5b7d0a;border-radius:99px;padding:3px 7px;font-size:8px}.template-status.review{background:#ffecdf;color:#b25329}.output-panel{padding:26px}.output-title{padding-bottom:16px;border-bottom:1px solid var(--line)}.live-chip{font:8px var(--mono);margin-left:auto;color:#4f7320;display:flex;align-items:center;gap:5px}.live-chip i{width:6px;height:6px;border-radius:50%;background:#7ab836}.conversion-empty{min-height:425px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.conversion-empty>div{width:58px;height:58px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;background:#f7f8ff;color:var(--blue-dark);font-size:24px}.conversion-empty h3{font-size:14px;margin:15px 0 4px}.conversion-empty p{font-size:10px;color:var(--muted);margin:0}.conversion-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.conversion-summary div{background:#f5f5f1;border-radius:9px;padding:9px 11px;display:flex;flex-direction:column}.conversion-summary span{font:8px var(--mono);color:var(--muted)}.conversion-summary strong{font-size:13px;margin-top:2px}.mapping-table-wrap{max-height:260px;overflow:auto;margin-top:12px;border:1px solid var(--line);border-radius:10px}.conversion-table th:first-child{width:20%}.conversion-table th:nth-child(2){width:38%}.mapping-table td{padding:8px 10px;word-break:break-all}.old-param{font:9px var(--mono);color:#7b8581}.empty-param{font-size:8px;color:#9a4e2e;background:#ffecdf;border-radius:4px;padding:2px 5px}.output-label{display:flex;justify-content:space-between;align-items:center;margin:17px 0 7px;font-size:10px;font-weight:700}.output-label small{font:8px var(--mono);color:var(--muted);font-weight:400}.url-output{min-height:128px;max-height:210px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;background:var(--ink);color:#dff28d;border-radius:12px;padding:15px;font:10px/1.7 var(--mono);border:1px solid #263b35}.output-actions{display:flex;align-items:center;gap:12px;margin-top:12px}.primary-btn:disabled{opacity:.45;cursor:not-allowed}.copy-status{font-size:9px;color:#4d7622}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--ink);color:#fff;padding:10px 16px;border-radius:99px;font-size:10px;transition:.25s;z-index:100}.toast.show{opacity:1;transform:translate(-50%,0)} -@media(max-width:900px){.hero{grid-template-columns:1fr}.hero-visual{display:none}.recommendation-layout,.generator-columns{grid-template-columns:1fr}.form-panel{position:static}.converter-toolbar{grid-template-columns:1fr 1fr}.converter-toolbar label{grid-column:1/-1}.main-nav{gap:18px}.method-note{flex-wrap:wrap}.method-note strong{width:100%}} -@media(max-width:620px){.shell{width:min(100% - 28px,1180px)}.site-header{height:68px;padding-inline:14px}.brand small,.home-link,.version-chip{display:none}.main-nav{gap:13px}.main-nav a{font-size:11px}.hero{min-height:auto;padding-block:55px 45px}.hero h1{font-size:39px}.hero-meta{display:none}.tool-grid{grid-template-columns:1fr}.tool-card{min-height:365px;padding:28px}.tool-cta{left:28px}.status-strip,.page-heading{align-items:flex-start;gap:17px;flex-direction:column}.status-note{display:none}.page-main{padding-block:32px 50px}.page-heading h1{font-size:34px}.data-badge{width:100%}.recommendation-layout{gap:14px}.form-panel,.result-panel,.converter-input-panel,.output-panel{padding:20px}.result-card{grid-template-columns:30px 1fr}.score-block{grid-column:2;justify-content:flex-start}.query-summary{grid-template-columns:1fr}.query-summary div+div{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:8px}.method-note{display:none}.converter-toolbar{grid-template-columns:1fr}.converter-toolbar label{grid-column:auto}.textarea-label{align-items:flex-start;gap:4px;flex-direction:column}.converter-actions{align-items:flex-start;flex-wrap:wrap}.converter-actions .validation-line{width:100%;margin:0}.conversion-summary{grid-template-columns:1fr}.generator-columns{gap:14px}.site-footer{height:70px}.site-footer span:first-child{display:none}} +.generator-stack{display:flex;flex-direction:column;gap:18px}.converter-input-panel{padding:26px}.config-topline{gap:13px}.config-topline .outline-btn{margin-left:auto}.converter-toolbar{display:grid;grid-template-columns:1.3fr .7fr .7fr;gap:14px;margin-top:21px}.converter-toolbar label>span,.detect-card>span{display:block;font-size:9px;font-weight:700;margin-bottom:5px}.detect-card{height:65px;border:1px solid var(--line);border-radius:10px;background:#fafaf7;padding:9px 12px}.detect-card strong{display:flex;align-items:center;height:29px;font-size:11px}.textarea-label{display:flex;align-items:center;justify-content:space-between;margin:20px 0 7px}.textarea-label>span{font-size:10px;font-weight:700}.textarea-label small{font-size:9px;color:var(--muted)}.link-textarea{width:100%;min-height:132px;resize:vertical;border:1px solid var(--line);border-radius:12px;background:#fafaf7;padding:13px 14px;outline:none;font:10px/1.65 var(--mono);color:var(--ink)}.link-textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(111,140,255,.1)}.converter-actions{display:flex;align-items:center;gap:14px;margin-top:12px}.converter-actions .validation-line{margin:0 0 0 auto}.text-inline-btn{border:0;background:transparent;color:var(--blue-dark);font-size:10px}.type-chip{display:inline-block;background:#dfe5ff;color:#273fae;border-radius:99px;padding:3px 8px;font-size:9px}.macro-disclosure{overflow:hidden}.macro-disclosure summary{height:66px;display:flex;align-items:center;gap:13px;padding:0 23px;cursor:pointer;list-style:none}.macro-disclosure summary::-webkit-details-marker{display:none}.macro-disclosure summary:hover{background:#fafaf7}.disclosure-icon{width:28px;height:28px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:16px;transition:transform .2s}.macro-disclosure[open] .disclosure-icon{transform:rotate(45deg)}.macro-disclosure summary>div{display:flex;align-items:center;gap:12px}.macro-disclosure summary strong{font-size:13px}.macro-disclosure summary>small{margin-left:auto;color:var(--muted);font-size:9px}.macro-content{border-top:1px solid var(--line);padding-top:15px}.macro-search{padding:0 23px 14px}.macro-search input{height:38px}.macro-table-wrap{max-height:330px;overflow:auto;border-top:1px solid var(--line)}table{width:100%;border-collapse:collapse}.macro-table th,.macro-table td,.mapping-table th,.mapping-table td{text-align:left;border-bottom:1px solid #eceeea;padding:10px 13px;font-size:9px}.macro-table th,.mapping-table th{position:sticky;top:0;background:#f8f8f5;color:var(--muted);font:8px var(--mono);z-index:1}.macro-table th:first-child{width:32%}.macro-table code,.mapping-table code{font-family:var(--mono);font-size:9px;color:#2e48bc;word-break:break-all}.table-empty{text-align:center!important;color:var(--muted);padding:30px!important}.template-status{display:inline-block;background:#eaf7c9;color:#5b7d0a;border-radius:99px;padding:3px 7px;font-size:8px}.template-status.review{background:#ffecdf;color:#b25329}.output-panel{padding:30px}.output-panel-wide{min-height:500px}.output-title{padding-bottom:16px;border-bottom:1px solid var(--line)}.live-chip{font:8px var(--mono);margin-left:auto;color:#4f7320;display:flex;align-items:center;gap:5px}.live-chip i{width:6px;height:6px;border-radius:50%;background:#7ab836}.conversion-empty{min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.conversion-empty>div{width:58px;height:58px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;background:#f7f8ff;color:var(--blue-dark);font-size:24px}.conversion-empty h3{font-size:14px;margin:15px 0 4px}.conversion-empty p{font-size:10px;color:var(--muted);margin:0}.conversion-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.conversion-summary div{background:#f5f5f1;border-radius:9px;padding:11px 13px;display:flex;flex-direction:column}.conversion-summary span{font:8px var(--mono);color:var(--muted)}.conversion-summary strong{font-size:15px;margin-top:2px}.mapping-table-wrap{max-height:330px;overflow:auto;margin-top:14px;border:1px solid var(--line);border-radius:10px}.conversion-table th:first-child{width:20%}.conversion-table th:nth-child(2){width:38%}.mapping-table td{padding:9px 12px;word-break:break-all}.old-param{font:9px var(--mono);color:#7b8581}.empty-param{font-size:8px;color:#9a4e2e;background:#ffecdf;border-radius:4px;padding:2px 5px}.output-label{display:flex;justify-content:space-between;align-items:center;margin:20px 0 8px;font-size:11px;font-weight:700}.output-label small{font:8px var(--mono);color:var(--muted);font-weight:400}.url-output{min-height:176px;max-height:280px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;background:var(--ink);color:#dff28d;border-radius:12px;padding:18px;font:11px/1.75 var(--mono);border:1px solid #263b35}.output-actions{display:flex;align-items:center;gap:12px;margin-top:14px}.primary-btn:disabled{opacity:.45;cursor:not-allowed}.copy-status{font-size:9px;color:#4d7622}.history-panel{padding:27px}.history-heading{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:18px;border-bottom:1px solid var(--line)}.history-heading h2{font-size:20px;margin:3px 0 2px}.history-heading h2 em{display:inline-grid;place-items:center;min-width:24px;height:20px;padding:0 6px;border-radius:99px;background:#e5eaff;color:#2e48bc;font:9px var(--mono);font-style:normal;vertical-align:2px}.history-heading p{margin:0;color:var(--muted);font-size:9px}.history-empty{height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted)}.history-empty span{font-size:27px}.history-empty p{font-size:10px;margin:5px 0}.history-table-wrap{overflow:auto}.history-table{min-width:900px}.history-table th,.history-table td{text-align:left;border-bottom:1px solid #eceeea;padding:12px 10px;font-size:9px}.history-table th{color:var(--muted);font:8px var(--mono);background:#fafaf7}.history-table th:first-child{width:145px}.history-table th:nth-child(2){width:105px}.history-table th:nth-child(3){width:190px}.history-table th:last-child{width:55px}.history-table time{color:var(--muted);white-space:nowrap}.history-platform{background:#eaf7c9;color:#58790a;border-radius:99px;padding:4px 7px;font-size:8px}.history-pkg{font:9px var(--mono);color:var(--ink)}.history-link{display:flex;align-items:center;gap:8px;min-width:300px}.history-link span{font:8px var(--mono);color:#5e6b67;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:470px}.history-link button,.delete-record{border:0;background:transparent;font-size:8px;white-space:nowrap}.history-link button{color:var(--blue-dark)}.delete-record{color:#b05b45}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--ink);color:#fff;padding:10px 16px;border-radius:99px;font-size:10px;transition:.25s;z-index:100}.toast.show{opacity:1;transform:translate(-50%,0)} +@media(max-width:900px){.hero{grid-template-columns:1fr}.hero-visual{display:none}.recommendation-layout{grid-template-columns:1fr}.form-panel{position:static}.converter-toolbar{grid-template-columns:1fr 1fr}.converter-toolbar label{grid-column:1/-1}.main-nav{gap:18px}.method-note{flex-wrap:wrap}.method-note strong{width:100%}.history-link span{max-width:300px}} +@media(max-width:620px){.shell{width:min(100% - 28px,1180px)}.site-header{height:68px;padding-inline:14px}.brand small,.home-link,.version-chip{display:none}.main-nav{gap:13px}.main-nav a{font-size:11px}.hero{min-height:auto;padding-block:55px 45px}.hero h1{font-size:39px}.hero-meta{display:none}.tool-grid{grid-template-columns:1fr}.tool-card{min-height:365px;padding:28px}.tool-cta{left:28px}.status-strip,.page-heading{align-items:flex-start;gap:17px;flex-direction:column}.status-note{display:none}.page-main{padding-block:32px 50px}.page-heading h1{font-size:34px}.data-badge{width:100%}.recommendation-layout{gap:14px}.form-panel,.result-panel,.converter-input-panel,.output-panel,.history-panel{padding:20px}.result-card{grid-template-columns:30px 1fr}.score-block{grid-column:2;justify-content:flex-start}.query-summary{grid-template-columns:1fr}.query-summary div+div{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:8px}.method-note{display:none}.converter-toolbar{grid-template-columns:1fr}.converter-toolbar label{grid-column:auto}.textarea-label{align-items:flex-start;gap:4px;flex-direction:column}.converter-actions{align-items:flex-start;flex-wrap:wrap}.converter-actions .validation-line{width:100%;margin:0}.macro-disclosure summary{height:auto;min-height:66px;padding:14px 18px}.macro-disclosure summary>small{display:none}.conversion-summary{grid-template-columns:1fr}.history-heading{gap:15px}.history-heading p{max-width:220px}.history-table{min-width:820px}.site-footer{height:70px}.site-footer span:first-child{display:none}} diff --git a/link-generator.html b/link-generator.html index 248627c..c2852a4 100644 --- a/link-generator.html +++ b/link-generator.html @@ -3,7 +3,7 @@ - + 自投链接转换器 · Traffic Intelligence @@ -16,7 +16,7 @@
-

TRACKING CONVERTER / 02

自投平台链接转换器

粘贴一条原始 Tracking Link,自动替换为目标平台要求的宏参数。

+

TRACKING CONVERTER / 02

自投平台链接转换器

粘贴一条原始 Tracking Link,自动替换为 Mintegral 要求的宏参数。

— 个平台模板Mintegral Click URL 转换

@@ -29,7 +29,7 @@
识别类型等待链接
- +
@@ -37,28 +37,39 @@
-
-
-
PLATFORM MACROS

目标平台宏参考

当前平台可用于替换的动态参数

+
+ +
REFERENCEMintegral 平台宏参考
点击展开完整宏清单
+
媒体宏说明
-
+ + -
-
STEP 02

转换结果

AUTO
-
↳

等待原始链接

转换后将在这里展示参数替换明细与最终链接。

- +
+ +
+
+
LINK SUMMARY

平台链接总结 0

保存已转换链接的平台、PKG、时间和最终结果,仅存储在当前浏览器。

+ +
+
⌁

还没有转换记录

+