Logic fixed
This commit is contained in:
@@ -39,7 +39,7 @@ let formData = {
|
|||||||
const response = await fetch('/api/unit-personnel');
|
const response = await fetch('/api/unit-personnel');
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
personnel = data.goodsManagers || [];
|
personnel = data.unitPersonnel || [];
|
||||||
} else {
|
} else {
|
||||||
error = 'Personel bilgileri yüklenemedi.';
|
error = 'Personel bilgileri yüklenemedi.';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
let units = [];
|
let units = [];
|
||||||
let personnel = [];
|
let personnel = [];
|
||||||
let goodsManagers = [];
|
let goodsManagers = [];
|
||||||
|
let filteredGoodsManagers = [];
|
||||||
let formError = "";
|
let formError = "";
|
||||||
let formSuccess = "";
|
let formSuccess = "";
|
||||||
let isSubmitting = false;
|
let isSubmitting = false;
|
||||||
@@ -181,10 +182,8 @@
|
|||||||
if (goodsManagersRes.ok) {
|
if (goodsManagersRes.ok) {
|
||||||
const goodsData = await goodsManagersRes.json();
|
const goodsData = await goodsManagersRes.json();
|
||||||
goodsManagers =
|
goodsManagers =
|
||||||
goodsData.goodsManagers?.filter((gm) => gm.is_active) || [];
|
goodsData.unitPersonnel?.filter((gm) => gm.is_active) || [];
|
||||||
if (!formData.goods_manager_id && goodsManagers.length) {
|
syncGoodsManagerSelection();
|
||||||
formData.goods_manager_id = goodsManagers[0].id;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Yakıt verileri yüklenemedi:", err);
|
console.error("Yakıt verileri yüklenemedi:", err);
|
||||||
@@ -204,9 +203,40 @@
|
|||||||
liters: "",
|
liters: "",
|
||||||
km: "",
|
km: "",
|
||||||
personnel_id: "",
|
personnel_id: "",
|
||||||
goods_manager_id: goodsManagers[0]?.id || "",
|
goods_manager_id: "",
|
||||||
notes: ""
|
notes: ""
|
||||||
};
|
};
|
||||||
|
syncGoodsManagerSelection("");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getGoodsManagersByUnit(unitId) {
|
||||||
|
if (!unitId) return [];
|
||||||
|
const normalized = parseInt(unitId);
|
||||||
|
return goodsManagers.filter((manager) => manager.unit_id === normalized);
|
||||||
|
}
|
||||||
|
|
||||||
|
function syncGoodsManagerSelection(unitId = formData.unit_id) {
|
||||||
|
const candidates = getGoodsManagersByUnit(unitId);
|
||||||
|
filteredGoodsManagers = candidates;
|
||||||
|
|
||||||
|
if (!unitId || candidates.length === 0) {
|
||||||
|
formData.goods_manager_id = "";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const hasCurrent = candidates.some(
|
||||||
|
(manager) =>
|
||||||
|
manager.id.toString() === (formData.goods_manager_id ?? "").toString()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!hasCurrent) {
|
||||||
|
formData.goods_manager_id = candidates[0].id.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleUnitChange(event) {
|
||||||
|
formData.unit_id = event.target.value;
|
||||||
|
syncGoodsManagerSelection(formData.unit_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleCreateSlip() {
|
async function handleCreateSlip() {
|
||||||
@@ -1164,11 +1194,12 @@
|
|||||||
id="unit_id"
|
id="unit_id"
|
||||||
class="form-select"
|
class="form-select"
|
||||||
bind:value={formData.unit_id}
|
bind:value={formData.unit_id}
|
||||||
|
on:change={handleUnitChange}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option value="">Birlik Seçin</option>
|
<option value="">Birlik Seçin</option>
|
||||||
{#each units as unit}
|
{#each units as unit}
|
||||||
<option value={unit.id}>{unit.name}</option>
|
<option value={unit.id.toString()}>{unit.name}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@@ -1248,14 +1279,26 @@
|
|||||||
id="goods_manager_id"
|
id="goods_manager_id"
|
||||||
class="form-select"
|
class="form-select"
|
||||||
bind:value={formData.goods_manager_id}
|
bind:value={formData.goods_manager_id}
|
||||||
|
disabled={
|
||||||
|
!formData.unit_id ||
|
||||||
|
filteredGoodsManagers.length === 0
|
||||||
|
}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option value="">Mal Sorumlusu Seçin</option>
|
{#if !formData.unit_id}
|
||||||
{#each goodsManagers as manager}
|
<option value="">Önce birlik seçin</option>
|
||||||
<option value={manager.id}
|
{:else if filteredGoodsManagers.length === 0}
|
||||||
>{manager.rank} {manager.full_name}</option
|
<option value="">
|
||||||
>
|
Bu birliğe atanmış personel yok
|
||||||
{/each}
|
</option>
|
||||||
|
{:else}
|
||||||
|
<option value="">Mal Sorumlusu Seçin</option>
|
||||||
|
{#each filteredGoodsManagers as manager}
|
||||||
|
<option value={manager.id.toString()}>
|
||||||
|
{manager.rank} {manager.full_name}
|
||||||
|
</option>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group full-width">
|
<div class="form-group full-width">
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ async function loadGoodsManagers() {
|
|||||||
const response = await fetch('/api/unit-personnel');
|
const response = await fetch('/api/unit-personnel');
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
personnel = data.goodsManagers || [];
|
personnel = data.unitPersonnel || [];
|
||||||
} else {
|
} else {
|
||||||
error = 'Personel bilgileri yüklenemedi.';
|
error = 'Personel bilgileri yüklenemedi.';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user