Files
mapo-core/MP.SPEC/Pages/Articoli.razor
T
2026-05-27 16:20:09 +02:00

234 lines
13 KiB
Plaintext

@page "/ART"
@using MP.SPEC.Components
@using MP.SPEC.Data
<div class="card mb-5">
<div class="card-header table-primary">
<div class="d-flex justify-content-between">
<div class="px-0">
<div class="d-flex justify-content-between">
<div class="px-2">
<h3>Articoli </h3>
</div>
<div class="px-2">
@if (CanAdd)
{
<button class="btn btn-success" @onclick="AddNew">Nuovo <i class="bi bi-plus-square"></i></button>
}
</div>
</div>
</div>
<div class="px-0 align-content-center">
<div class="input-group">
<span class="input-group-text"><i class="fa fa-rectangle-list"></i></span>
<select @bind="@selTipoArt" class="form-select form-select-sm" style="width: 8rem; flex: 0 0 auto;" title="Selezionare il tipo di Articolo da mostrare" @bind:after="ResetDataAsync">
<option value="*">--- Tutti ---</option>
@if (ListTipoArt != null)
{
foreach (var item in ListTipoArt)
{
<option value="@item.value">@item.label</option>
}
}
</select>
<span class="input-group-text"><i class="fa fa-search"></i></span>
<input type="text" class="form-control form-control-sm" placeholder="Cerca (3+ char)" aria-label="Ricerca" title="Ricerca (3+ char)" @bind="@SearchVal" @bind:after="ResetDataAsync">
<button class="btn @searchCss" @onclick="() => ResetSearch()"><i class="fa fa-ban"></i></button>
<label class="input-group-text" for="maxRecord" title="Selezionare l'azienda da visualizzare"><i class="fa-solid fa-industry"></i></label>
<select @bind="@selAzienda" class="form-select form-select-sm" style="width: 15rem; flex: 0 0 auto;" title="Selezionare l'azienda da visualizzare" @bind:after="ReloadAziendaAsync">
@if (ListAziende != null)
{
foreach (var item in ListAziende)
{
<option value="@item.CodGruppo">@item.DescrGruppo</option>
}
}
</select>
<span class="input-group-text"><i class="fa fa-database"></i></span>
<input type="number" inputmode="numeric" min="10" max="100000" class="form-control form-control-sm text-end" style="width: 6rem; flex: 0 0 auto;" aria-label="Num record" title="Num massimo record da recuperare" @bind="@maxNumRecord" @bind:after="ReloadDataAsync">
</div>
</div>
</div>
@if (currRecord != null)
{
<div class="row">
<div class="col-12">
<div class="card mb-0">
<div class="card-header bg-primary text-light">Modifica</div>
<div class="card-body">
<div class="row">
<div class="col-3">
<div class="input-group">
<span class="input-group-text">Codice</span>
@if (isNewArt)
{
<input type="text" class="form-control" placeholder="Articolo" @bind-value="@currRecord.CodArticolo">
}
else
{
<input type="text" class="form-control" disabled placeholder="Articolo" @bind-value="@currRecord.CodArticolo">
}
</div>
</div>
<div class="col-5">
<div class="input-group">
<span class="input-group-text">Disegno</span>
<input type="text" class="form-control" placeholder="Disegno" @bind-value="@currRecord.Disegno">
</div>
</div>
<div class="col-4">
<div class="input-group" title="Azienda">
<span class="input-group-text">Azienda</span>
<select @bind="@currRecord.Azienda" class="form-select text-end">
@if (ListAziende != null)
{
foreach (var item in ListAziende.Where(x => x.CodGruppo != "*").ToList())
{
<option value="@item.CodGruppo">@item.DescrGruppo</option>
}
}
</select>
</div>
</div>
</div>
<div class="row mt-2">
<div class="col-3">
<div class="input-group" title="Tipo">
<span class="input-group-text">Tipo</span>
@if (currRecord.Tipo.Equals("KIT"))
{
<select @bind="@currRecord.Tipo" class="form-select text-end" disabled>
@if (ListTipoArt != null)
{
foreach (var item in ListTipoArt)
{
<option value="@item.value">@item.label</option>
}
}
</select>
}
else
{
<select @bind="@currRecord.Tipo" class="form-select text-end">
@if (ListTipoArt != null)
{
foreach (var item in ListTipoArt)
{
<option value="@item.value">@item.label</option>
}
}
</select>
}
</div>
</div>
<div class="col-5">
<div class="input-group">
<span class="input-group-text">Descrizione</span>
<input type="text" class="form-control" placeholder="Descrizione Articolo" @bind-value="@currRecord.DescArticolo">
</div>
</div>
<div class="col-2">
<div class="d-grid gap-2">
<button class="btn btn-warning" @onclick="() => ResetDataAsync()">Annulla <i class="bi bi-x-circle"></i></button>
</div>
</div>
<div class="col-2">
<div class="d-grid gap-2">
<button class="btn btn-success" @onclick="() => UpdateAsync(currRecord)">Salva <i class="bi bi-save"></i></button>
</div>
</div>
</div>
</div>
@*<div class="card-footer">Footer</div>*@
</div>
</div>
</div>
}
</div>
<div class="card-body">
@if (ListRecords == null || isLoading)
{
<LoadingData></LoadingData>
}
else if (totalCount == 0)
{
<div class="alert alert-warning text-center display-4">Nessun record trovato</div>
}
else
{
<div class="row">
<div class="col-12">
<table class="table table-sm table-striped">
<thead>
<tr>
<th>
@if (currRecord != null)
{
<button @onclick="() => resetSel()" class="btn btn-primary btn-sm"><i class="bi bi-arrow-counterclockwise"></i></button>
}
</th>
<th><i class="fa-solid fa-file"></i> Articolo</th>
<th><i class="fa-solid fa-compass-drafting"></i> Disegno</th>
<th><i class="fa-solid fa-file-word"></i> Descrizione</th>
<th><i class="fa-solid fa-rectangle-list"></i> Tipo</th>
<th><i class="fa-solid fa-industry"></i> Azienda</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var record in ListRecords)
{
<tr class="@CheckSelect(@record.CodArticolo)">
<td>
<button @onclick="() => selRecord(record)" class="btn btn-primary btn-sm me-1" title="Modifica Record"><i class="bi bi-pencil-square"></i></button>
@if (record.Tipo.Equals("KIT"))
{
<button class="btn btn-secondary btn-sm disabled" title="Veto duplicazione KIT"><i class="bi bi-clipboard-check"></i></button>
}
else
{
<button @onclick="() => cloneRecord(record)" class="btn btn-info btn-sm" title="Duplica Record"><i class="bi bi-clipboard-check"></i></button>
}
</td>
<td>
<div>@record.CodArticolo</div>
</td>
<td>
<div class="small">@record.Disegno</div>
</td>
<td>
<div class="small">@record.DescArticolo</div>
</td>
<td>
<div>@record.Tipo</div>
</td>
<td>@record.Azienda</td>
<td>
@if (ArticoloDelEnabled(record))
{
<button @onclick="() => deleteRecord(record)" class="btn btn-danger btn-sm"><i class="bi bi-trash-fill"></i></button>
}
else
{
<button class="btn btn-secondary disabled btn-sm"><i class="bi bi-trash-fill"></i></button>
}
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
}
</div>
<div class="card-footer py-1">
@if (totalCount > numRecord)
{
<DataPager PageSize="numRecord" currPage="currPage" numRecordChanged="ForceReload" numPageChanged="ForceReloadPage" totalCount="totalCount" showLoading="isLoading" />
}
</div>
</div>