智能沉淀进每一个模型

需求洞察 · 方案共创 · 数据寻源 训练执行 · 交付,全链路本地工作台

使用漫途 OPC 统一账号登录 · 没有账号?去注册
(function () { 'use strict'; /* ── 视频同步:master 漂移 >0.12s 时对齐 ── */ var vids = Array.prototype.slice.call(document.querySelectorAll('video')); var reduce = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce) { vids.forEach(function (v) { v.removeAttribute('autoplay'); v.pause(); }); } else if (vids.length > 1) { var master = vids[0]; master.addEventListener('timeupdate', function () { for (var i = 1; i < vids.length; i++) { if (Math.abs(vids[i].currentTime - master.currentTime) > 0.12) { try { vids[i].currentTime = master.currentTime; } catch (e) {} } } }); } /* ── 已登录直接放行 ── */ fetch('/auth/check', { credentials: 'same-origin' }).then(function (r) { if (r.ok) { var next = new URLSearchParams(location.search).get('next'); location.replace(next && next.charAt(0) === '/' ? next : '/'); } }).catch(function () {}); /* ── 登录提交 ── */ var form = document.getElementById('loginForm'); var fmsg = document.getElementById('fmsg'); var btn = document.getElementById('btnLogin'); var btnLabel = document.getElementById('btnLabel'); form.addEventListener('submit', function (ev) { ev.preventDefault(); fmsg.textContent = ''; document.getElementById('fldUser').classList.remove('err'); document.getElementById('fldPass').classList.remove('err'); btn.disabled = true; btnLabel.textContent = '验证中…'; fetch('/auth/login', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: document.getElementById('username').value.trim(), password: document.getElementById('password').value }) }).then(function (r) { return r.json().then(function (j) { return { ok: r.ok, j: j }; }); }).then(function (res) { if (res.ok && res.j.ok) { btnLabel.textContent = '欢迎回来'; var next = new URLSearchParams(location.search).get('next'); location.href = next && next.charAt(0) === '/' ? next : '/'; } else { fmsg.textContent = (res.j && res.j.error) || '登录失败,请重试'; document.getElementById('fldUser').classList.add('err'); document.getElementById('fldPass').classList.add('err'); btn.disabled = false; btnLabel.textContent = '进入智库'; } }).catch(function () { fmsg.textContent = '网络异常,请稍后重试'; btn.disabled = false; btnLabel.textContent = '进入智库'; }); }); (一次性,绝对时间表) ── */ if (!document.documentElement.classList.contains('intro')) return; var EXPO = 'cubic-bezier(.16,1,.3,1)', QUINT = 'cubic-bezier(.22,1,.36,1)', QUART = 'cubic-bezier(.25,1,.5,1)', TYPE = 'cubic-bezier(.22,.85,.24,1)'; var phoneM = window.matchMedia && matchMedia('(max-width:599px)').matches ? 0.86 : 1; function K(t, d) { return { duration: d * phoneM * 1000, delay: t * phoneM * 1000, fill: 'both' }; } var anims = []; function run() { var root = document.documentElement; anims.push(document.querySelector('.logo').animate( [{ opacity: 0, transform: 'scale(.9)' }, { opacity: 1, transform: 'scale(1)' }], Object.assign(K(0.00, .70), { easing: EXPO }))); Array.prototype.forEach.call(document.querySelectorAll('nav a'), function (a, i) { anims.push(a.animate([{ opacity: 0, transform: 'translateY(7px)' }, { opacity: 1, transform: 'translateY(0)' }], Object.assign(K(0.12 + i * .055, .62), { easing: QUINT }))); }); Array.prototype.forEach.call(document.querySelectorAll('h1 .ln > span'), function (sp, i) { anims.push(sp.animate([{ transform: 'translateY(120%)' }, { transform: 'translateY(0%)' }], Object.assign(K(0.34 + i * .09, .98), { easing: TYPE }))); }); anims.push(document.querySelector('.sub').animate( [{ opacity: 0, transform: 'translateY(14px)' }, { opacity: 1, transform: 'translateY(0)' }], Object.assign(K(0.74, .72), { easing: QUINT }))); anims.push(document.querySelector('.btn-cta').animate( [{ clipPath: 'inset(0 100% 0 0)' }, { clipPath: 'inset(0 0% 0 0)' }], Object.assign(K(0.90, .70), { easing: EXPO }))); /* 表单字段在 CTA 之后逐级浮入 */ ['#fldUser', '#fldPass', '#fmsg', '.foot'].forEach(function (sel, i) { var el = document.querySelector(sel); if (!el) return; anims.push(el.animate( [{ opacity: 0, transform: 'translateY(14px)' }, { opacity: 1, transform: 'translateY(0)' }], Object.assign(K(1.00 + i * .07, .60), { easing: QUINT }))); }); Array.prototype.forEach.call(document.querySelectorAll('.rule'), function (r, i) { anims.push(r.animate([{ transform: 'scaleY(0)' }, { transform: 'scaleY(1)' }], Object.assign(K(0.98 + i * .07, .60), { easing: QUART }))); }); Array.prototype.forEach.call(document.querySelectorAll('.num'), function (n, i) { anims.push(n.animate([{ opacity: 0, transform: 'translateY(12px)' }, { opacity: 1, transform: 'translateY(0)' }], Object.assign(K(1.04 + i * .085, .66), { easing: QUINT }))); }); Array.prototype.forEach.call(document.querySelectorAll('.lab'), function (n, i) { anims.push(n.animate([{ opacity: 0, transform: 'translateY(10px)' }, { opacity: 1, transform: 'translateY(0)' }], Object.assign(K(1.10 + i * .085, .62), { easing: QUINT }))); }); var done = false; function finish() { if (done) return; done = true; anims.forEach(function (a) { a.cancel(); }); root.classList.remove('intro'); } var last = anims[anims.length - 1]; Promise.all(anims.map(function (a) { return a.finished.catch(function () {}); })).then(finish); setTimeout(finish, 4000); } var started = false; function start() { if (started) return; started = true; run(); } var p = (document.fonts && document.fonts.ready) ? document.fonts.ready : Promise.resolve(); Promise.race([p, new Promise(function (r) { setTimeout(r, 1000); })]).then(function () { requestAnimationFrame(function () { start(); setTimeout(start, 1200); }); }); })();