DONE: remove verified by ajk, fix bug on pagination, improve UI

This commit is contained in:
ISMAIL MASSERAN
2026-04-27 12:06:54 +08:00
parent bd2306b073
commit 4425fa6176
20 changed files with 77081 additions and 535 deletions
@@ -5,10 +5,8 @@
<h4 class="pull-left nominee-add-page__title">
<i class="fa fa-user-plus text-muted"></i> Tambah Calon
</h4>
<router-link
:to="{ name: 'Maklumat Calon', query: { position_id: position_id } }"
class="btn btn-default pull-right"
>
<router-link :to="{ name: 'Maklumat Calon', query: { position_id: position_id } }"
class="btn btn-default pull-right">
<i class="fa fa-arrow-left"></i> Kembali
</router-link>
</div>
@@ -17,41 +15,24 @@
Lengkapkan maklumat calon. Medan bertanda <span class="text-danger">*</span> adalah wajib.
</p>
<form
class="nominee-add-form"
method="POST"
id="add_form"
:action="data.API + 'nominee'"
enctype="multipart/form-data"
@submit.prevent="add()"
>
<form class="nominee-add-form" method="POST" id="add_form" :action="data.API + 'nominee'"
enctype="multipart/form-data" @submit.prevent="add()">
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="nominee-name">Nama Calon <span class="text-danger">*</span></label>
<input
id="nominee-name"
type="text"
name="name"
class="form-control"
placeholder="Nama penuh"
required
/>
<input id="nominee-name" type="text" name="name" class="form-control"
placeholder="Nama penuh" required />
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="nominee-no-anggota">No. Anggota <span class="text-danger">*</span></label>
<input
id="nominee-no-anggota"
type="text"
name="no_anggota"
class="form-control"
placeholder="No. keahlian"
required
/>
<label for="nominee-no-anggota">No. Anggota <span
class="text-danger">*</span></label>
<input id="nominee-no-anggota" type="text" name="no_anggota" class="form-control"
placeholder="No. keahlian" required />
</div>
</div>
</div>
@@ -60,80 +41,43 @@
<div class="col-sm-6">
<div class="form-group">
<label for="nominee-unit">Unit <span class="text-danger">*</span></label>
<input
id="nominee-unit"
type="text"
name="unit"
class="form-control"
required
/>
<input id="nominee-unit" type="text" name="unit" class="form-control" required />
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="nominee-umur">Umur <span class="text-danger">*</span></label>
<input
id="nominee-umur"
type="number"
name="umur"
class="form-control"
min="1"
max="120"
placeholder="Tahun"
required
/>
<input id="nominee-umur" type="number" name="umur" class="form-control" min="1"
max="120" placeholder="Tahun" required />
</div>
</div>
</div>
<div class="form-group">
<label for="nominee-jawatan-sekarang">Jawatan Sekarang <span class="text-danger">*</span></label>
<input
id="nominee-jawatan-sekarang"
type="text"
name="jawatan_sekarang"
class="form-control"
required
/>
<label for="nominee-jawatan-sekarang">Jawatan Sekarang <span
class="text-danger">*</span></label>
<input id="nominee-jawatan-sekarang" type="text" name="jawatan_sekarang"
class="form-control" required />
</div>
<div class="form-group">
<label for="nominee-education">Taraf Pendidikan</label>
<input
id="nominee-education"
type="text"
name="education"
class="form-control"
placeholder="Pilihan"
/>
<input id="nominee-education" type="text" name="education" class="form-control"
placeholder="Pilihan" />
</div>
<div class="form-group">
<label for="nominee-experience">Pengalaman Kerja</label>
<textarea
id="nominee-experience"
name="experience"
class="form-control"
rows="4"
placeholder="Pilihan — senaraikan pengalaman relevan"
></textarea>
<textarea id="nominee-experience" name="experience" class="form-control" rows="4"
placeholder="Pilihan — senaraikan pengalaman relevan"></textarea>
</div>
<div class="form-group">
<label for="nominee-position-id">Jawatan Dicalonkan <span class="text-danger">*</span></label>
<select
id="nominee-position-id"
class="form-control"
v-model="position_id"
name="position_id"
required
>
<option value="0" disabled> Pilih jawatan </option>
<option
v-for="position in data.positions"
:key="position.id"
:value="position.id"
>
<label for="nominee-position-id">Sesi Dicalonkan <span class="text-danger">*</span></label>
<select id="nominee-position-id" class="form-control" v-model="position_id"
name="position_id" required>
<option value="0" disabled> Pilih sesi </option>
<option v-for="position in data.positions" :key="position.id" :value="position.id">
{{ position.name }}
</option>
</select>
@@ -147,27 +91,20 @@
<span class="text-muted small nominee-add-photo__hint">Pilihan</span>
</div>
<div class="panel-body">
<div
class="nominee-add-photo__preview"
:class="{ 'nominee-add-photo__preview--empty': !imageUrl }"
>
<div class="nominee-add-photo__preview"
:class="{ 'nominee-add-photo__preview--empty': !imageUrl }">
<img v-if="imageUrl" :src="imageUrl" alt="Pratonton gambar calon" />
<div v-else class="nominee-add-photo__placeholder">
<i class="fa fa-picture-o"></i>
<span>Tiada gambar dipilih</span>
</div>
</div>
<label class="btn btn-default btn-block nominee-add-photo__browse" for="nominee-file-input">
<label class="btn btn-default btn-block nominee-add-photo__browse"
for="nominee-file-input">
<i class="fa fa-folder-open"></i> Pilih fail
</label>
<input
id="nominee-file-input"
name="photo"
type="file"
class="nominee-add-photo__input"
accept="image/*"
@change="handleImageChange"
/>
<input id="nominee-file-input" name="photo" type="file" class="nominee-add-photo__input"
accept="image/*" @change="handleImageChange" />
<p class="text-muted small nominee-add-photo__formats">PNG, JPG atau GIF</p>
</div>
</div>
@@ -177,10 +114,8 @@
<hr class="nominee-add-form__rule" />
<div class="clearfix nominee-add-form__actions">
<router-link
:to="{ name: 'Maklumat Calon', query: { position_id: position_id } }"
class="btn btn-default"
>
<router-link :to="{ name: 'Maklumat Calon', query: { position_id: position_id } }"
class="btn btn-default">
<i class="fa fa-times"></i> Batal
</router-link>
<button type="submit" class="btn btn-primary" :disabled="loading">
@@ -365,7 +300,7 @@ export default {
text-align: right;
}
.nominee-add-form__actions .btn + .btn {
.nominee-add-form__actions .btn+.btn {
margin-left: 8px;
}