v7: Должность — выпадающий список, нормы обновлены
This commit is contained in:
parent
d00b90cb61
commit
97c42ed1f0
77
index.html
77
index.html
@ -729,7 +729,15 @@ tr:hover td { background: var(--cyan-50); }
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label>Должность</label>
|
||||
<input type="text" id="empPosition" placeholder="Инженер">
|
||||
<select id="empPosition">
|
||||
<option value="">— Выберите —</option>
|
||||
<option>водитель автомобиля</option>
|
||||
<option>заведующий складом</option>
|
||||
<option>инженер</option>
|
||||
<option>кабельщик-спайщик</option>
|
||||
<option>электромеханик</option>
|
||||
<option>электромонтер</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Подразделение</label>
|
||||
@ -841,8 +849,15 @@ tr:hover td { background: var(--cyan-50); }
|
||||
<h2 id="normModalTitle">Добавить норму выдачи</h2>
|
||||
<div class="form-group">
|
||||
<label>Должность *</label>
|
||||
<input type="text" id="normPosition" list="positionsList" placeholder="Кабельщик-спайщик" autocomplete="off">
|
||||
<datalist id="positionsList"></datalist>
|
||||
<select id="normPosition">
|
||||
<option value="">— Выберите —</option>
|
||||
<option>водитель автомобиля</option>
|
||||
<option>заведующий складом</option>
|
||||
<option>инженер</option>
|
||||
<option>кабельщик-спайщик</option>
|
||||
<option>электромеханик</option>
|
||||
<option>электромонтер</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
@ -969,12 +984,12 @@ function daysBetween(d1, d2) {
|
||||
function seedDemo() {
|
||||
if (DB.employees.length > 0) return;
|
||||
DB.employees = [
|
||||
{ id: uid(), tabNum: '00001', fullName: 'Иванов Иван Иванович', position: 'Кабельщик-спайщик', department: 'Техническое подразделение', branch: 'ОДС', location: 'г. Астана', climateZone: '1', dateHired: '2020-03-15' },
|
||||
{ id: uid(), tabNum: '00002', fullName: 'Петрова Анна Сергеевна', position: 'Электромонтер', department: 'Энергоцех', branch: 'ДКБ', location: 'Акмолинская область', climateZone: '2', dateHired: '2021-06-01' },
|
||||
{ id: uid(), tabNum: '00003', fullName: 'Сериков Асхат Нурланович', position: 'Электромонтер', department: 'Энергоцех', branch: 'ДРБ', location: 'г. Шымкент', climateZone: '3', dateHired: '2019-11-10' },
|
||||
{ id: uid(), tabNum: '00004', fullName: 'Ким Елена Викторовна', position: 'Инженер', department: 'Отдел качества', branch: 'ДЦБСФ', location: 'Карагандинская область', climateZone: '0', dateHired: '2022-01-20' },
|
||||
{ id: uid(), tabNum: '00005', fullName: 'Нургалиев Даурен Кайратович', position: 'Сварщик', department: 'Ремонтный цех', branch: 'ДТК', location: 'Туркестанская область', climateZone: '2', dateHired: '2018-08-05' },
|
||||
{ id: uid(), tabNum: '00006', fullName: 'Ахметов Тимур Болатович', position: 'Кабельщик-спайщик', department: 'Линейный цех', branch: 'ОДС', location: 'Жамбылская область', climateZone: '2', dateHired: '2023-02-01' },
|
||||
{ id: uid(), tabNum: '00001', fullName: 'Иванов Иван Иванович', position: 'кабельщик-спайщик', department: 'Техническое подразделение', branch: 'ОДС', location: 'г. Астана', climateZone: '1', dateHired: '2020-03-15' },
|
||||
{ id: uid(), tabNum: '00002', fullName: 'Петрова Анна Сергеевна', position: 'электромонтер', department: 'Энергоцех', branch: 'ДКБ', location: 'Акмолинская область', climateZone: '2', dateHired: '2021-06-01' },
|
||||
{ id: uid(), tabNum: '00003', fullName: 'Сериков Асхат Нурланович', position: 'электромонтер', department: 'Энергоцех', branch: 'ДРБ', location: 'г. Шымкент', climateZone: '3', dateHired: '2019-11-10' },
|
||||
{ id: uid(), tabNum: '00004', fullName: 'Ким Елена Викторовна', position: 'инженер', department: 'Отдел качества', branch: 'ДЦБСФ', location: 'Карагандинская область', climateZone: '0', dateHired: '2022-01-20' },
|
||||
{ id: uid(), tabNum: '00005', fullName: 'Нургалиев Даурен Кайратович', position: 'электромеханик', department: 'Ремонтный цех', branch: 'ДТК', location: 'Туркестанская область', climateZone: '2', dateHired: '2018-08-05' },
|
||||
{ id: uid(), tabNum: '00006', fullName: 'Ахметов Тимур Болатович', position: 'кабельщик-спайщик', department: 'Линейный цех', branch: 'ОДС', location: 'Жамбылская область', climateZone: '2', dateHired: '2023-02-01' },
|
||||
];
|
||||
DB.siz = [
|
||||
{ id: uid(), name: 'Каска защитная', type: 'Головы', protection: '1 класс', standard: 'ГОСТ 12.4.128-83', wearMonths: 24, unit: 'шт.' },
|
||||
@ -992,25 +1007,24 @@ function seedDemo() {
|
||||
{ id: uid(), name: 'Щиток сварочный', type: 'Глаз', protection: '3 класс', standard: 'ГОСТ 12.4.254-2013', wearMonths: 24, unit: 'шт.' },
|
||||
];
|
||||
DB.norms = [
|
||||
{ id: uid(), position: 'Кабельщик-спайщик', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Кабельщик-спайщик', climateZone: '0', sizId: DB.siz[2].id, wearMonths: 1, quantity: 12, note: '' },
|
||||
{ id: uid(), position: 'Кабельщик-спайщик', climateZone: '0', sizId: DB.siz[4].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Кабельщик-спайщик', climateZone: '0', sizId: DB.siz[7].id, wearMonths: 12, quantity: 1, note: 'Летний' },
|
||||
{ id: uid(), position: 'Кабельщик-спайщик', climateZone: '0', sizId: DB.siz[8].id, wearMonths: 36, quantity: 1, note: 'Зимний' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '0', sizId: DB.siz[1].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '0', sizId: DB.siz[4].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '0', sizId: DB.siz[10].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '0', sizId: DB.siz[11].id, wearMonths: 36, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '1', sizId: DB.siz[8].id, wearMonths: 36, quantity: 1, note: 'Зимний, пояс 1: 3 года' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '2', sizId: DB.siz[8].id, wearMonths: 30, quantity: 1, note: 'Зимний, пояс 2: 2,5 года' },
|
||||
{ id: uid(), position: 'Электромонтер', climateZone: '3', sizId: DB.siz[8].id, wearMonths: 24, quantity: 1, note: 'Зимний, пояс 3: 2 года' },
|
||||
{ id: uid(), position: 'Сварщик', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Сварщик', climateZone: '0', sizId: DB.siz[12].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Сварщик', climateZone: '0', sizId: DB.siz[9].id, wearMonths: 1, quantity: 12, note: '' },
|
||||
{ id: uid(), position: 'Сварщик', climateZone: '0', sizId: DB.siz[4].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Инженер', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'Инженер', climateZone: '0', sizId: DB.siz[1].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'кабельщик-спайщик', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'кабельщик-спайщик', climateZone: '0', sizId: DB.siz[2].id, wearMonths: 1, quantity: 12, note: '' },
|
||||
{ id: uid(), position: 'кабельщик-спайщик', climateZone: '0', sizId: DB.siz[4].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'кабельщик-спайщик', climateZone: '0', sizId: DB.siz[7].id, wearMonths: 12, quantity: 1, note: 'Летний' },
|
||||
{ id: uid(), position: 'кабельщик-спайщик', climateZone: '0', sizId: DB.siz[8].id, wearMonths: 36, quantity: 1, note: 'Зимний' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '0', sizId: DB.siz[1].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '0', sizId: DB.siz[4].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '0', sizId: DB.siz[10].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '0', sizId: DB.siz[11].id, wearMonths: 36, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '1', sizId: DB.siz[8].id, wearMonths: 36, quantity: 1, note: 'Зимний, пояс 1: 3 года' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '2', sizId: DB.siz[8].id, wearMonths: 30, quantity: 1, note: 'Зимний, пояс 2: 2,5 года' },
|
||||
{ id: uid(), position: 'электромонтер', climateZone: '3', sizId: DB.siz[8].id, wearMonths: 24, quantity: 1, note: 'Зимний, пояс 3: 2 года' },
|
||||
{ id: uid(), position: 'инженер', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'инженер', climateZone: '0', sizId: DB.siz[1].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромеханик', climateZone: '0', sizId: DB.siz[0].id, wearMonths: 24, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромеханик', climateZone: '0', sizId: DB.siz[4].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
{ id: uid(), position: 'электромеханик', climateZone: '0', sizId: DB.siz[10].id, wearMonths: 12, quantity: 1, note: '' },
|
||||
];
|
||||
DB.warehouse = [
|
||||
{ id: uid(), sizId: DB.siz[0].id, quantity: 50, date: '2025-06-01', batch: 'Б-2025001', supplier: 'ТОО Спецзащита', opType: 'in' },
|
||||
@ -1278,12 +1292,6 @@ function fillNormSizSelect() {
|
||||
DB.siz.map(s => `<option value="${s.id}">${s.name} (${s.wearMonths} мес)</option>`).join('');
|
||||
}
|
||||
|
||||
function fillPositionsDatalist() {
|
||||
const list = document.getElementById('positionsList');
|
||||
const positions = [...new Set([...DB.norms.map(n => n.position), ...DB.employees.map(e => e.position)].filter(Boolean))];
|
||||
list.innerHTML = positions.map(p => `<option value="${p}">`).join('');
|
||||
}
|
||||
|
||||
function openNormModal(norm) {
|
||||
document.getElementById('normEditId').value = norm ? norm.id : '';
|
||||
document.getElementById('normModalTitle').textContent = norm ? 'Редактировать норму' : 'Добавить норму выдачи';
|
||||
@ -1294,7 +1302,6 @@ function openNormModal(norm) {
|
||||
document.getElementById('normQuantity').value = norm ? norm.quantity : '1';
|
||||
document.getElementById('normNote').value = norm ? norm.note : '';
|
||||
fillNormSizSelect();
|
||||
fillPositionsDatalist();
|
||||
if (norm) document.getElementById('normSizId').value = norm.sizId;
|
||||
openModal('normModal');
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user