Asset management/add external text field

This commit is contained in:
Luca Haid
2025-07-11 08:55:11 +00:00
parent 42adbdbc67
commit fb7a373ea3
4 changed files with 39 additions and 0 deletions

View File

@@ -92,6 +92,7 @@ class AssetManagementController extends TTCrud
$row['currentSite'] = $latestJournal->site;
$row['borrowDate'] = $latestJournal->borrowDate;
$row['expectedReturnDate'] = $latestJournal->expectedReturnDate;
$row['externalUser'] = $latestJournal->externalUser;
} else {
// Asset is available
$row['journalId'] = null;
@@ -100,6 +101,7 @@ class AssetManagementController extends TTCrud
$row['currentSite'] = null;
$row['borrowDate'] = null;
$row['expectedReturnDate'] = null;
$row['externalUser'] = null;
}
$row['reservations'] = $reservationMap[$asset->id] ?? [];
@@ -156,6 +158,7 @@ class AssetManagementController extends TTCrud
'assetId' => $post['assetId'],
'userId' => $post['userId'],
'site' => $post['site'],
'externalUser' => $post['externalUser'] ?? null,
'borrowReason' => $post['reason'] ?? null,
'expectedReturnDate' => $post['expectedReturnDate'] ?? null,
'borrowDate' => time(),

View File

@@ -5,6 +5,7 @@ class AssetManagementJournalModel extends TTCrudBaseModel {
public int $assetId;
public int $userId;
public string $site;
public ?string $externalUser;
public int $borrowDate;
public ?int $expectedReturnDate;
public ?int $returnDate;

View File

@@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class AssetManagementJournalAddExternalUser extends AbstractMigration
{
public function up(): void
{
if ($this->getEnvironment() == "thetool") {
$table = $this->table('AssetManagementJournal');
$table->addColumn('externalUser', 'string', [
'limit' => 255,
'null' => true,
'default' => null,
'after' => 'site',
]);
$table->update();
}
}
public function down(): void
{
if ($this->getEnvironment() == "thetool") {
$table = $this->table('AssetManagementJournal');
$table->removeColumn('externalUser');
$table->update();
}
}
}

View File

@@ -220,6 +220,7 @@ Vue.component('asset-borrow-return-widget', {
<div>
<div v-if="rowData.currentUserId">
<div><strong>Ausgeliehen von:</strong> {{ rowData.currentUser }}</div>
<div v-if="rowData.externalUser" class="text-info"><strong>Extern an:</strong> {{ rowData.externalUser }}</div>
<div><strong>Baustelle:</strong> {{ rowData.currentSite }}</div>
<div><strong>Seit:</strong> {{ formatDate(rowData.borrowDate, 'DD.MM.YYYY HH:mm') }}</div>
<div v-if="rowData.expectedReturnDate">
@@ -274,6 +275,7 @@ Vue.component('asset-borrow-return-widget', {
<p><strong>Gerät:</strong> {{ rowData.name }}</p>
<p><strong>Mitarbeiter:</strong> {{ selectedUserName }}</p>
<tt-input label="Baustelle / Projekt" v-model="borrowSite" sm row required/>
<tt-input label="Externer Entleiher (optional)" v-model="externalUser" sm row/>
<tt-date-picker label="Vorauss. Rückgabedatum" v-model="expectedReturnDate" :date-range="false" sm row/>
<tt-textarea label="Grund (optional)" v-model="borrowReason" sm row/>
</tt-modal>
@@ -296,6 +298,7 @@ Vue.component('asset-borrow-return-widget', {
borrowSite: '',
borrowReason: '',
returnReason: '',
externalUser: '',
expectedReturnDate: null,
reservationWarning: null,
}
@@ -338,6 +341,7 @@ Vue.component('asset-borrow-return-widget', {
userId: this.selectedUserId,
site: this.borrowSite,
reason: this.borrowReason,
externalUser: this.externalUser,
expectedReturnDate: this.expectedReturnDate,
force: force
};
@@ -589,6 +593,7 @@ Vue.component('asset-management-journal-modal', {
<h5 class="mb-1">{{ entry.userName }} @ {{ entry.site }}</h5>
<small>{{ formatDate(entry.borrowDate, 'DD.MM.YY HH:mm') }}</small>
</div>
<p v-if="entry.externalUser" class="mb-1"><strong>Extern an:</strong> <span class="text-info">{{ entry.externalUser }}</span></p>
<p class="mb-1"><strong>Grund:</strong> {{ entry.borrowReason || '-' }}</p>
<div v-if="entry.returnDate">
<small class="text-success">