mirror of
https://github.com/wasrusgen/wasrusgen1-crm.git
synced 2026-06-03 20:24:47 +00:00
cabinet: Telegram WebApp init (expand + start_param token), add Политика ПДн to signing docs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
e61ae25647
commit
1d9d4ef9c8
@ -4,6 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Кабинет клиента · @wasrusgen1 | КОНСАЛТИНГ</title>
|
<title>Кабинет клиента · @wasrusgen1 | КОНСАЛТИНГ</title>
|
||||||
|
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Montserrat:wght@700;800&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Montserrat:wght@700;800&display=swap" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
@ -188,7 +189,8 @@ body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);displ
|
|||||||
<div style="background:var(--subtle);border:1.5px solid var(--border);border-radius:11px;padding:14px;margin-bottom:16px;font-size:13px;line-height:1.6">
|
<div style="background:var(--subtle);border:1.5px solid var(--border);border-radius:11px;padding:14px;margin-bottom:16px;font-size:13px;line-height:1.6">
|
||||||
Ознакомьтесь с документами:<br>
|
Ознакомьтесь с документами:<br>
|
||||||
📄 <a href="#" onclick="viewDoc('offer');return false" style="color:var(--primary);font-weight:600">Договор-оферта на консультационные услуги</a><br>
|
📄 <a href="#" onclick="viewDoc('offer');return false" style="color:var(--primary);font-weight:600">Договор-оферта на консультационные услуги</a><br>
|
||||||
📄 <a href="#" onclick="viewDoc('pep');return false" style="color:var(--primary);font-weight:600">Соглашение об использовании ПЭП</a>
|
📄 <a href="#" onclick="viewDoc('pep');return false" style="color:var(--primary);font-weight:600">Соглашение об использовании ПЭП</a><br>
|
||||||
|
📄 <a href="#" onclick="viewDoc('pdn');return false" style="color:var(--primary);font-weight:600">Политика обработки персональных данных</a>
|
||||||
</div>
|
</div>
|
||||||
<label style="display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;cursor:pointer">
|
<label style="display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;cursor:pointer">
|
||||||
<input type="checkbox" id="signAgree" style="width:18px;height:18px;margin-top:2px;flex-shrink:0">
|
<input type="checkbox" id="signAgree" style="width:18px;height:18px;margin-top:2px;flex-shrink:0">
|
||||||
@ -357,6 +359,9 @@ function showTyping(){const t=document.createElement("div");t.className="msg";t.
|
|||||||
function hideTyping(){const t=document.getElementById("typing");if(t)t.remove()}
|
function hideTyping(){const t=document.getElementById("typing");if(t)t.remove()}
|
||||||
|
|
||||||
async function init(){
|
async function init(){
|
||||||
|
// Telegram Mini App: развернуть на весь экран + токен из start_param если нет в URL
|
||||||
|
const tg=window.Telegram&&window.Telegram.WebApp;
|
||||||
|
if(tg){try{tg.ready();tg.expand();const sp=tg.initDataUnsafe&&tg.initDataUnsafe.start_param;if(sp&&!token){token=sp;localStorage.setItem("cab_token",token);}}catch(e){}}
|
||||||
if(token){const r=await fetch(`${API}/api/project/${token}`);if(r.ok){state=await r.json();renderAll();
|
if(token){const r=await fetch(`${API}/api/project/${token}`);if(r.ok){state=await r.json();renderAll();
|
||||||
fillProfile();
|
fillProfile();
|
||||||
// Если профиль не заполнен — открыть вкладку Профиль
|
// Если профиль не заполнен — открыть вкладку Профиль
|
||||||
@ -423,7 +428,7 @@ async function viewDoc(doc){
|
|||||||
const dm=document.getElementById("docModal");
|
const dm=document.getElementById("docModal");
|
||||||
document.getElementById("docTitle").textContent="Загрузка...";document.getElementById("docText").textContent="";dm.classList.add("show");
|
document.getElementById("docTitle").textContent="Загрузка...";document.getElementById("docText").textContent="";dm.classList.add("show");
|
||||||
try{const r=await fetch(`${API}/api/legal/${doc}`);const d=await r.json();
|
try{const r=await fetch(`${API}/api/legal/${doc}`);const d=await r.json();
|
||||||
document.getElementById("docTitle").textContent=doc==="offer"?"Договор-оферта":"Соглашение об использовании ПЭП";
|
document.getElementById("docTitle").textContent={offer:"Договор-оферта",pep:"Соглашение об использовании ПЭП",pdn:"Политика обработки персональных данных"}[doc]||"Документ";
|
||||||
document.getElementById("docText").textContent=d.text||d.error||"Документ недоступен";
|
document.getElementById("docText").textContent=d.text||d.error||"Документ недоступен";
|
||||||
}catch(e){document.getElementById("docText").textContent="Ошибка: "+e.message}
|
}catch(e){document.getElementById("docText").textContent="Ошибка: "+e.message}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Кабинет клиента · @wasrusgen1 | КОНСАЛТИНГ</title>
|
<title>Кабинет клиента · @wasrusgen1 | КОНСАЛТИНГ</title>
|
||||||
|
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Montserrat:wght@700;800&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Montserrat:wght@700;800&display=swap" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
@ -188,7 +189,8 @@ body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);displ
|
|||||||
<div style="background:var(--subtle);border:1.5px solid var(--border);border-radius:11px;padding:14px;margin-bottom:16px;font-size:13px;line-height:1.6">
|
<div style="background:var(--subtle);border:1.5px solid var(--border);border-radius:11px;padding:14px;margin-bottom:16px;font-size:13px;line-height:1.6">
|
||||||
Ознакомьтесь с документами:<br>
|
Ознакомьтесь с документами:<br>
|
||||||
📄 <a href="#" onclick="viewDoc('offer');return false" style="color:var(--primary);font-weight:600">Договор-оферта на консультационные услуги</a><br>
|
📄 <a href="#" onclick="viewDoc('offer');return false" style="color:var(--primary);font-weight:600">Договор-оферта на консультационные услуги</a><br>
|
||||||
📄 <a href="#" onclick="viewDoc('pep');return false" style="color:var(--primary);font-weight:600">Соглашение об использовании ПЭП</a>
|
📄 <a href="#" onclick="viewDoc('pep');return false" style="color:var(--primary);font-weight:600">Соглашение об использовании ПЭП</a><br>
|
||||||
|
📄 <a href="#" onclick="viewDoc('pdn');return false" style="color:var(--primary);font-weight:600">Политика обработки персональных данных</a>
|
||||||
</div>
|
</div>
|
||||||
<label style="display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;cursor:pointer">
|
<label style="display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;cursor:pointer">
|
||||||
<input type="checkbox" id="signAgree" style="width:18px;height:18px;margin-top:2px;flex-shrink:0">
|
<input type="checkbox" id="signAgree" style="width:18px;height:18px;margin-top:2px;flex-shrink:0">
|
||||||
@ -357,6 +359,9 @@ function showTyping(){const t=document.createElement("div");t.className="msg";t.
|
|||||||
function hideTyping(){const t=document.getElementById("typing");if(t)t.remove()}
|
function hideTyping(){const t=document.getElementById("typing");if(t)t.remove()}
|
||||||
|
|
||||||
async function init(){
|
async function init(){
|
||||||
|
// Telegram Mini App: развернуть на весь экран + токен из start_param если нет в URL
|
||||||
|
const tg=window.Telegram&&window.Telegram.WebApp;
|
||||||
|
if(tg){try{tg.ready();tg.expand();const sp=tg.initDataUnsafe&&tg.initDataUnsafe.start_param;if(sp&&!token){token=sp;localStorage.setItem("cab_token",token);}}catch(e){}}
|
||||||
if(token){const r=await fetch(`${API}/api/project/${token}`);if(r.ok){state=await r.json();renderAll();
|
if(token){const r=await fetch(`${API}/api/project/${token}`);if(r.ok){state=await r.json();renderAll();
|
||||||
fillProfile();
|
fillProfile();
|
||||||
// Если профиль не заполнен — открыть вкладку Профиль
|
// Если профиль не заполнен — открыть вкладку Профиль
|
||||||
@ -423,7 +428,7 @@ async function viewDoc(doc){
|
|||||||
const dm=document.getElementById("docModal");
|
const dm=document.getElementById("docModal");
|
||||||
document.getElementById("docTitle").textContent="Загрузка...";document.getElementById("docText").textContent="";dm.classList.add("show");
|
document.getElementById("docTitle").textContent="Загрузка...";document.getElementById("docText").textContent="";dm.classList.add("show");
|
||||||
try{const r=await fetch(`${API}/api/legal/${doc}`);const d=await r.json();
|
try{const r=await fetch(`${API}/api/legal/${doc}`);const d=await r.json();
|
||||||
document.getElementById("docTitle").textContent=doc==="offer"?"Договор-оферта":"Соглашение об использовании ПЭП";
|
document.getElementById("docTitle").textContent={offer:"Договор-оферта",pep:"Соглашение об использовании ПЭП",pdn:"Политика обработки персональных данных"}[doc]||"Документ";
|
||||||
document.getElementById("docText").textContent=d.text||d.error||"Документ недоступен";
|
document.getElementById("docText").textContent=d.text||d.error||"Документ недоступен";
|
||||||
}catch(e){document.getElementById("docText").textContent="Ошибка: "+e.message}
|
}catch(e){document.getElementById("docText").textContent="Ошибка: "+e.message}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user