feat(pos): add printer type/IP settings UI to receipt page
This commit is contained in:
parent
06abd3c551
commit
aec8e50f54
1 changed files with 43 additions and 0 deletions
|
|
@ -132,6 +132,9 @@ input,select{font:inherit;color:inherit}
|
|||
|
||||
/* ---- Status banner ---- */
|
||||
.status{padding:12px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--border);font-size:13px;display:flex;align-items:center;gap:10px;color:var(--fg);line-height:1.4}
|
||||
.printer-settings{padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface-card);display:flex;flex-direction:column;gap:8px}
|
||||
.printer-settings label{font-size:12px;font-weight:600;color:var(--ink-soft);display:flex;flex-direction:column;gap:4px}
|
||||
.printer-settings select,.printer-settings input{padding:9px 10px;border-radius:8px;border:1px solid var(--muted);background:var(--bg);color:var(--fg);font:inherit}
|
||||
.empty-state{padding:48px 18px;text-align:center;color:var(--ink-soft)}
|
||||
.empty-state h3{font-size:16px;font-weight:600;color:var(--fg);margin-bottom:6px;letter-spacing:-.01em}
|
||||
.empty-state p{font-size:13px;line-height:1.5}
|
||||
|
|
@ -297,6 +300,23 @@ input,select{font:inherit;color:inherit}
|
|||
<span class="t" id="statusText">Ready to print.</span>
|
||||
</div>
|
||||
|
||||
<div class="status" id="printerSettingsToggle" style="cursor:pointer" onclick="togglePrinterSettings()">
|
||||
<span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M3 7h18v6H3zM7 13v6h10v-6M7 17h10"/></svg></span>
|
||||
<span class="t" id="printerSettingsLabel">Printer: Bluetooth</span>
|
||||
</div>
|
||||
<div class="printer-settings" id="printerSettingsForm" style="display:none">
|
||||
<label>Printer type
|
||||
<select id="printerTypeSelect">
|
||||
<option value="bluetooth">Bluetooth</option>
|
||||
<option value="network">Network (Ethernet)</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>Printer IP address
|
||||
<input id="printerIpInput" placeholder="192.168.1.33">
|
||||
</label>
|
||||
<button class="btn" style="min-height:40px" onclick="savePrinterSettings()">Save printer settings</button>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<button class="btn primary" data-od-id="print-thermal" id="printBtn" onclick="printThermal()">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M3 7h18v6H3zM7 13v6h10v-6M7 17h10"/></svg>
|
||||
|
|
@ -316,6 +336,7 @@ input,select{font:inherit;color:inherit}
|
|||
|
||||
<script src="pos-config.js"></script>
|
||||
<script src="theme.js"></script>
|
||||
<script src="epos-print.js"></script>
|
||||
<script>
|
||||
(function(){
|
||||
'use strict';
|
||||
|
|
@ -652,6 +673,28 @@ async function printDelivery(){
|
|||
}
|
||||
}
|
||||
|
||||
function togglePrinterSettings(){
|
||||
const form = document.getElementById('printerSettingsForm');
|
||||
form.style.display = form.style.display === 'none' ? 'flex' : 'none';
|
||||
}
|
||||
|
||||
function savePrinterSettings(){
|
||||
const type = document.getElementById('printerTypeSelect').value;
|
||||
const ip = document.getElementById('printerIpInput').value.trim();
|
||||
window.EposPrint.setSettings({ type, ip });
|
||||
paintPrinterSettings();
|
||||
document.getElementById('printerSettingsForm').style.display = 'none';
|
||||
}
|
||||
|
||||
function paintPrinterSettings(){
|
||||
const settings = window.EposPrint.getSettings();
|
||||
document.getElementById('printerTypeSelect').value = settings.type;
|
||||
document.getElementById('printerIpInput').value = settings.ip || '';
|
||||
document.getElementById('printerSettingsLabel').textContent =
|
||||
'Printer: ' + (settings.type === 'network' ? ('Network' + (settings.ip ? ' (' + settings.ip + ')' : '')) : 'Bluetooth');
|
||||
}
|
||||
|
||||
paintPrinterSettings();
|
||||
paintNet();
|
||||
})();
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Reference in a new issue