From 3cefe883ca5c8c8ec03489f9f0ce4f3cc5f122d2 Mon Sep 17 00:00:00 2001 From: wasrusgen Date: Thu, 28 May 2026 15:22:02 +0300 Subject: [PATCH] =?UTF-8?q?feat(manager):=20client=5Fchosen=20status=20?= =?UTF-8?q?=E2=80=94=20accept/reject=20client=20tech=20choice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/mockup_manager.html | 51 ++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/docs/mockup_manager.html b/docs/mockup_manager.html index 2acdc2e..5f8a567 100644 --- a/docs/mockup_manager.html +++ b/docs/mockup_manager.html @@ -251,7 +251,7 @@ window._managerOrders = window._managerOrders || [ tech:[ {name:'Духовой шкаф', wkey:'oven', status:'wait', dims:'', brand:'', source:null}, {name:'Варочная панель', wkey:'cooktop', status:'done', dims:'60×52 см', brand:'Bosch', model:'HXA050B20R', source:'ai'}, - {name:'Вытяжка', wkey:'hood', status:'waiting_client', dims:'', brand:'', source:'client'}, + {name:'Вытяжка', wkey:'hood', status:'client_chosen', dims:'60 см', brand:'Elica', model:'FLAT GLASS IX/A/60', source:'client'}, {name:'Посудомойка', wkey:'dishwasher', status:'wait', dims:'', brand:'', source:null}, {name:'Холодильник', wkey:'fridge', status:'wait', dims:'', brand:'', source:null}, ], @@ -2234,9 +2234,9 @@ function screenOrder() { // Tech section (kitchen only) var techHtml=''; if(isKitchen && o.tech.length){ - var dc2=o.tech.filter(function(t){return t.status==='done'||t.status==='waiting_client';}).length; + var dc2=o.tech.filter(function(t){return t.status==='done'||t.status==='client_chosen'||t.status==='waiting_client';}).length; var items=o.tech.map(function(t){ - var iconBox='
' + var iconBox='
' +_techIcon(t.wkey,22)+'
'; var sourceLabel = t.source==='own'?'Своя техника' @@ -2277,6 +2277,24 @@ function screenOrder() { +'' +'
'; } + // client_chosen — клиент выбрал, ждёт подтверждения менеджера + if(t.status==='client_chosen'){ + var cDetail=(t.brand||'')+(t.model?' '+t.model:'')+(t.dims?' · '+t.dims:''); + return '
' + +'
' + +iconBox + +'
'+nameRow + +'
👤 Клиент выбрал
' + +'
'+cDetail+'
' + +'
' + +'
' + +'
Подтвердить выбор клиента?
' + +'
' + +'' + +'' + +'
' + +'
'; + } // done var detail=(t.brand||'')+(t.model?' '+t.model:'')+(t.dims?'
'+t.dims+'':''); return '
' @@ -2288,8 +2306,10 @@ function screenOrder() { +'
'; }).join(''); var waitCount = o.tech.filter(function(t){return t.status==='wait';}).length; + var clientChosenCount = o.tech.filter(function(t){return t.status==='client_chosen';}).length; var clientCount = o.tech.filter(function(t){return t.status==='waiting_client';}).length; - var allFilled = waitCount===0; + // allFilled: все должны быть done (client_chosen ≠ done — надо подтвердить) + var allFilled = waitCount===0 && clientChosenCount===0 && clientCount===0; var confirmed = !!o.techConfirmed; // Bottom of tech card: confirm CTA or confirmed status @@ -2306,9 +2326,12 @@ function screenOrder() { +'
Технолог получит спецификацию и сможет согласовать проект
' +''; } else { - techFooter='
' - +'
' - +'
Заполните все позиции — технолог не может работать без параметров техники
' + var pendingMsg = clientChosenCount>0 + ? 'Клиент выбрал технику — подтвердите выбор выше, затем передайте технологу' + : 'Заполните все позиции — технолог не может работать без параметров техники'; + techFooter='
' + +'
'+(clientChosenCount>0?'👆':'⏳')+'
' + +'
'+pendingMsg+'
' +'
'; } @@ -2944,6 +2967,20 @@ function _startClientPick(key){ function _techClientRemind(key){ _toast('📲 Напоминание отправлено в TG-кабинет клиента','var(--accent)'); } +function _acceptClientChoice(oi,key){ + var o=window._managerOrders[oi]; + var t=o.tech.filter(function(x){return x.wkey===key;})[0]; + if(t){t.status='done';} + _toast('✅ Выбор принят и зафиксирован','var(--success)'); + document.getElementById('screen').innerHTML=renderScreen('manager_order'); +} +function _rejectClientChoice(oi,key){ + var o=window._managerOrders[oi]; + var t=o.tech.filter(function(x){return x.wkey===key;})[0]; + if(t){t.status='waiting_client'; t.brand=''; t.model=''; t.dims='';} + _toast('↩ Клиенту отправлена просьба выбрать снова','var(--warn)'); + document.getElementById('screen').innerHTML=renderScreen('manager_order'); +} function screenTechClient(){ var key=window._clientPickKey||'oven'; var tt=TECH_TYPES.filter(function(t){return t.key===key;})[0]||{key:key,label:key};