diff --git a/docs/mockup_manager.html b/docs/mockup_manager.html index 0cd2194..cbf2eb4 100644 --- a/docs/mockup_manager.html +++ b/docs/mockup_manager.html @@ -1844,7 +1844,8 @@ function renderScreen(id) { if (id==='manager_schedule') return screenSchedule(); if (id==='manager_calc') return screenCalc(); if (id==='manager_salary') return screenSalary(); - if (id==='manager_client') return screenClient(); + if (id==='manager_client') return screenClientsList(); + if (id==='manager_client_card') return screenClient(); if (id==='manager_own_tech') return screenOwnTech(); if (id==='manager_tech_client') return screenTechClient(); if (id==='manager_kb') return screenKB(); @@ -3633,7 +3634,118 @@ function _renderSendPreview(msg, sel){ +''; } -// ── CLIENT ──────────────────────────────────────────────────────────────────── +// ── CLIENTS LIST ───────────────────────────────────────────────────────────── +window._clientFilter = window._clientFilter || 'all'; +window._clientSearch = window._clientSearch || ''; + +function screenClientsList() { + var all = window._managerOrders || []; + var filter = window._clientFilter; + var search = (window._clientSearch || '').toLowerCase(); + + // Фильтрация + var filtered = all.filter(function(o) { + var matchFilter = + filter === 'all' ? true : + filter === 'leads' ? !!o.isLead : + filter === 'active' ? (!o.isLead && o.stage < 7) : + filter === 'done' ? (!o.isLead && o.stage >= 7) : true; + var matchSearch = !search || o.client.toLowerCase().indexOf(search) >= 0 + || (o.contract||'').toLowerCase().indexOf(search) >= 0 + || (o.label||'').toLowerCase().indexOf(search) >= 0; + return matchFilter && matchSearch; + }); + + var counts = { + all: all.length, + leads: all.filter(function(o){ return !!o.isLead; }).length, + active: all.filter(function(o){ return !o.isLead && o.stage < 7; }).length, + done: all.filter(function(o){ return !o.isLead && o.stage >= 7; }).length, + }; + + var stageLabel = ['','Замер','Проект','Техника','Технолог','Производство','Сборка','Закрыт']; + var stageColor = ['','#3B82F6','#8B5CF6','#F59E0B','#EF4444','#10B981','#0891B2','#6B7280']; + var leadStageLabel = {new:'Новый',meeting:'Замер',kp:'КП',thinking:'Думает',done:'Договор'}; + var typeIcon = {kitchen:'🍳', wardrobe:'🚪', other:'📦'}; + + // Фильтр-таб + var tabs = [ + {key:'all', label:'Все', cnt:counts.all}, + {key:'leads', label:'Лиды', cnt:counts.leads}, + {key:'active', label:'Активные', cnt:counts.active}, + {key:'done', label:'Закрытые', cnt:counts.done}, + ]; + var tabHtml = '