update alpha v0.906
This commit is contained in:
@@ -110,7 +110,7 @@
|
||||
<input name="quantity" class="form-control" placeholder="Кол-во" value="1">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select name="cabinet" class="form-select">
|
||||
<select name="cabinet" class="form-select" id="issue_cabinet">
|
||||
<option value="">Выберите кабинет...</option>
|
||||
{% for c in cabinets %}
|
||||
<option value="{{ c }}">{{ c }}</option>
|
||||
@@ -118,7 +118,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2 d-grid">
|
||||
<button class="btn btn-danger">Выдать</button>
|
||||
<button class="btn btn-danger" id="issue_submit_btn">Выдать</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -173,13 +173,43 @@
|
||||
const barcodeEl = document.getElementById('issue_barcode');
|
||||
const modelEl = document.getElementById('issue_model');
|
||||
const hintEl = document.getElementById('issue_hint');
|
||||
const cabinetEl = document.getElementById('issue_cabinet');
|
||||
const submitBtn = document.getElementById('issue_submit_btn');
|
||||
const defaultCabinetOptions = cabinetEl ? cabinetEl.innerHTML : '';
|
||||
|
||||
if (!barcodeEl || !modelEl || !hintEl) return;
|
||||
|
||||
function resetCabinets() {
|
||||
if (!cabinetEl) return;
|
||||
cabinetEl.innerHTML = defaultCabinetOptions;
|
||||
cabinetEl.disabled = false;
|
||||
if (submitBtn) submitBtn.disabled = false;
|
||||
}
|
||||
|
||||
function applyCabinets(cabinets) {
|
||||
if (!cabinetEl) return;
|
||||
const values = Array.isArray(cabinets) ? cabinets.filter(Boolean) : [];
|
||||
if (!values.length) {
|
||||
cabinetEl.innerHTML = '<option value="">Нет привязанных кабинетов</option>';
|
||||
cabinetEl.disabled = true;
|
||||
if (submitBtn) submitBtn.disabled = true;
|
||||
return;
|
||||
}
|
||||
const options = ['<option value="">Выберите кабинет...</option>']
|
||||
.concat(values.map((name) => `<option value="${name}">${name}</option>`));
|
||||
cabinetEl.innerHTML = options.join('');
|
||||
cabinetEl.disabled = false;
|
||||
if (submitBtn) submitBtn.disabled = false;
|
||||
}
|
||||
|
||||
let last = '';
|
||||
async function lookup() {
|
||||
const barcode = (barcodeEl.value || '').trim();
|
||||
if (!barcode || barcode === last) return;
|
||||
if (!barcode) {
|
||||
resetCabinets();
|
||||
return;
|
||||
}
|
||||
if (barcode === last) return;
|
||||
last = barcode;
|
||||
|
||||
modelEl.value = '';
|
||||
@@ -194,12 +224,15 @@
|
||||
const data = await res.json();
|
||||
if (!data.found) {
|
||||
hintEl.textContent = 'Не найдено (проверь штрихкод)';
|
||||
resetCabinets();
|
||||
return;
|
||||
}
|
||||
modelEl.value = data.model || '';
|
||||
hintEl.textContent = `Остаток: ${data.quantity}`;
|
||||
applyCabinets(data.allowed_cabinets || []);
|
||||
} catch (e) {
|
||||
hintEl.textContent = 'Ошибка сети';
|
||||
resetCabinets();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,7 +440,8 @@
|
||||
<th>Штрихкод</th><th>Модель</th><th>Остаток</th>
|
||||
</tr>
|
||||
{% for b,m,q,minq in items %}
|
||||
<tr class="js-cartridge-row {{ 'table-danger' if q < minq else '' }}"
|
||||
{% set model_key = (m or '')|trim|lower %}
|
||||
<tr class="js-cartridge-row {{ 'table-danger' if (q < minq) or (model_key in orphan_model_keys) else '' }}"
|
||||
data-barcode="{{ b }}"
|
||||
data-model="{{ m or '' }}"
|
||||
data-quantity="{{ q }}">
|
||||
|
||||
Reference in New Issue
Block a user