-
Nama Leader / SPV
-
+
+ Customer {{ detail.customer_label }}
-
-
Alasan Penolakan
-
+
+ Tahap {{ detail.workflow_label }}
-
-
-
- Batal
- Tolak
-
-
-
-
-
-
- Detail Ticket
-
-
-
-
-
- Ticket No
- {{ detailItem.ticket_no }}
-
-
- Tenant ID
- {{ detailItem.tenant_id }}
-
-
- Customer ID
- {{ detailItem.customer_id }}
-
-
- Kode Tiket
- {{ detailItem.kode_tiket }}
-
-
- Deskripsi
- {{ detailItem.deskripsi }}
-
-
- Status
-
-
- {{ detailItem.status }}
-
-
-
-
- Prioritas
-
-
- {{ detailItem.prioritas }}
-
-
-
-
- SLA (menit)
- {{ detailItem.sla_minutes }}
-
-
- Ditugaskan Untuk
- {{ detailItem.ditugaskan_untuk }}
-
-
- Created By
- {{ detailItem.created_by }}
-
-
- Approved By
- {{ detailItem.approved_by || '-' }}
-
-
- Approved At
- {{ detailItem.approved_at || '-' }}
-
-
- Rejected By
- {{ detailItem.rejected_by || '-' }}
-
-
- Rejected At
- {{ detailItem.rejected_at || '-' }}
-
-
- Rejection Reason
- {{ detailItem.rejection_reason || '-' }}
-
-
- Assigned At
- {{ detailItem.assigned_at || '-' }}
-
-
- Resolved At
- {{ detailItem.resolved_at || '-' }}
-
-
- Closed At
- {{ detailItem.closed_at || '-' }}
-
-
- Created At
- {{ detailItem.created_at || '-' }}
-
-
- Updated At
- {{ detailItem.updated_at || '-' }}
-
-
-
-
-
- Tutup
-
-
+
+ Teknisi {{ detail.assignee_label }}
+
+
+
Informasi Pekerjaan {{ detail.description || 'Tidak ada deskripsi.' }}
+
+ Jenis {{ detail.ticket_type?.name || '-' }} Prioritas {{ detail.priority_label }} Dibuat oleh {{ detail.creator?.name || '-' }} Dibuat {{ detail.created_label }}
+
Riwayat
+ {{ log.activity }} {{ log.notes || '-' }} ·
+ {{ new Date(log.created_at).toLocaleString('id-ID') }}
+
+ Belum ada riwayat.
+ Buka Form Customer
+ {{ actionLabels[action] }}
+
+ Tutup
+
{{ actionLabels[currentAction] }} Teknisi
+
+
+
+ Leader Pilih leader
+
+ {{ x.name }}
+ Alasan Catatan Batal {{
+ saving ? 'Memproses...' : 'Konfirmasi'
+ }}
+
diff --git a/src/views/tickets/TicketDetailPage.vue b/src/views/tickets/TicketDetailPage.vue
new file mode 100644
index 00000000..51872c9f
--- /dev/null
+++ b/src/views/tickets/TicketDetailPage.vue
@@ -0,0 +1,544 @@
+
+
+
+
+
+ ← Kembali
+
{{ ticket?.ticket_no || 'Detail Ticket' }}
+ {{ ticket?.title }}
+
+
+ Buka Form Customer Aktivasi Customer {{ actionLabels[action] }}
+
+
+
+ Memuat detail ticket...
+
+
+ Approval Penugasan Mulai Kerja Isi Form Selesaikan Aktivasi
+
+
+
+ Status {{ statusLabels[ticket.status] || ticket.status }}
+
+
+ Customer {{ ticket.customer?.name || '-' }}
+
+
+ Sumber {{ ticket.customer_id ? 'Pemasangan baru' : 'Ticket umum' }}
+
+
+ Prioritas {{ priorityLabels[ticket.priority] }}
+
+
+ Informasi Pekerjaan {{ ticket.description || 'Tidak ada deskripsi.' }}
+
+ Jenis tiket {{ ticket.ticket_type?.name || '-' }} Tenant {{ ticket.tenant?.tenant_name || '-' }} Dibuat oleh {{ ticket.creator?.name || '-' }} SLA {{ ticket.sla_minutes ? `${ticket.sla_minutes} menit` : '-' }}
+
+
+ Proses Pemasangan Baru Tahap aktif: {{ {documentation:'Dokumentasi, Topologi & Port ODP',service:'Data Layanan',activation:'Aktivasi Customer'}[ticket.installation_step] }}
+
+ {{installationForm.stored_file_ids.length}} foto dokumentasi siap. Pilih ODP {{x.code}} · {{x.name}} Pilih port ODP Port {{x.port_number}}
+ Pilih profile paket {{x.name}} Pilih NAS {{x.name}} Pilih profile tagihan {{x.name}}
+
+ Simpan dan Lanjutkan Tahap
+
+
+
+
Material Pekerjaan
+
+ Material menjadi bagian dari penyelesaian ticket bila jenis ticket mewajibkannya.
+
+
+ + Material
+
+
+ {{ item.material_name }} {{ item.qty }} · {{ item.notes || 'Tanpa catatan' }} ·
+ {{ item.user?.name || '-' }}
+
+
Hapus
+
+
+ Belum ada material yang digunakan.
+ Tim Teknisi
+
+ {{ a.user?.name }} {{
+ a.is_leader ? 'Leader' : 'Anggota'
+ }}
+
+
+ Belum ada teknisi yang ditugaskan.
Riwayat Ticket
+ {{ log.activity }} {{ log.notes || '-' }} {{ new Date(log.created_at).toLocaleString('id-ID') }}
+
+ Belum ada riwayat.
+
+ {{ actionLabels[currentAction] }} Teknisi
+
+
+
+ Leader Pilih leader
+
+ {{ x.name }}
+ Alasan Catatan
+ Foto Bukti * {{ actionFiles.length }} foto siap dikirim.
Batal Konfirmasi
+ Tambah Material Pekerjaan
+
Material yang Dibawa Pilih material {{x.material_name}} · {{x.barcode_id}} {{x.material_name}} · sisa {{x.qty_remaining}} {{x.unit}}
+
+ Jumlah
+
+
+ Catatan
+
Batal Simpan Material
+
+ Aktivasi Customer
+
+
Username Koneksi
+
Password Koneksi
+
Profile paket, NAS, dan profile tagihan mengikuti detail customer.
+
+ Batal Aktifkan
+
+
+
diff --git a/src/views/tickets/TicketStatusList.vue b/src/views/tickets/TicketStatusList.vue
new file mode 100644
index 00000000..f7e5d52e
--- /dev/null
+++ b/src/views/tickets/TicketStatusList.vue
@@ -0,0 +1,12 @@
+
+
diff --git a/src/views/warehouse/ActiveItems.vue b/src/views/warehouse/ActiveItems.vue
new file mode 100644
index 00000000..c43adf65
--- /dev/null
+++ b/src/views/warehouse/ActiveItems.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+ Pengeluaran · {{ selected?.name }}
+
+ {{ x.barcode }} · {{ x.remaining_qty }} {{ x.unit }}
+ Pilih teknisi/user
+ {{ x.name }}
Batal Catat Pengeluaran
+
diff --git a/src/views/warehouse/DepletedItems.vue b/src/views/warehouse/DepletedItems.vue
new file mode 100644
index 00000000..92cdb3f1
--- /dev/null
+++ b/src/views/warehouse/DepletedItems.vue
@@ -0,0 +1,59 @@
+
+
+
+
+ router.push(`/warehouse/items/${item.id}`)"
+ />
+
+
diff --git a/src/views/warehouse/ItemCodes.vue b/src/views/warehouse/ItemCodes.vue
new file mode 100644
index 00000000..bdb878c8
--- /dev/null
+++ b/src/views/warehouse/ItemCodes.vue
@@ -0,0 +1,17 @@
+
+
action==='edit'?open(item):remove(item)" />
+{{selected?'Edit':'Tambah'}} Kode Barang Per Unit / serialized Berdasarkan jumlah / quantity {{unit.label}}
Batal Simpan
diff --git a/src/views/warehouse/PendingItems.vue b/src/views/warehouse/PendingItems.vue
new file mode 100644
index 00000000..3e3f2faf
--- /dev/null
+++ b/src/views/warehouse/PendingItems.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+ Tambah Barang Pending
+ Pilih gudang
+
+ {{ x.code }} · {{ x.name }}
+ Pilih barang
+
+ {{ x.code }} · {{ x.name }}
+
+
Batal Buat Draft Barcode dan Serial Number
+
+
+
+ Barcode
+ Jumlah
+ Serial Number
+
+
+
+
+ {{ x.barcode }}
+ {{ x.initial_qty }} {{ x.unit }}
+
+
+
+
+
+
Tutup Simpan SN
+
diff --git a/src/views/warehouse/TechnicianInventory.vue b/src/views/warehouse/TechnicianInventory.vue
new file mode 100644
index 00000000..9cfd07dd
--- /dev/null
+++ b/src/views/warehouse/TechnicianInventory.vue
@@ -0,0 +1,13 @@
+
+
openReturn(item)" />
Kembalikan ke Gudang {{selected?.material_name}} {{selected?.barcode}} · {{selected?.user}}
Batal Kembalikan
diff --git a/src/views/warehouse/Warehouse.vue b/src/views/warehouse/Warehouse.vue
new file mode 100644
index 00000000..24872531
--- /dev/null
+++ b/src/views/warehouse/Warehouse.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+ Tambah Barang ke Gudang Pilih kode barang {{ code.code }} · {{ code.name }} Jenis tracking, satuan, dan batas stok mengikuti master Kode Barang. Batal Simpan
+ Stok Masuk · {{ selected?.name }} Isi jumlah awal dalam {{ selected?.item_code?.unit }}. Jumlah ini menjadi stok awal barcode.
Batal Simpan Stok
+ Serahkan Material · {{ selected?.name }} Pilih barcode {{ barcode.barcode }} · tersedia {{ barcode.remaining_qty }} {{ barcode.unit }} Pilih penerima {{ user.name }} Jumlah yang diserahkan akan mengurangi sisa pada barcode terpilih.
Batal Serahkan
+
diff --git a/src/views/warehouse/WarehouseDetail.vue b/src/views/warehouse/WarehouseDetail.vue
new file mode 100644
index 00000000..c3edbe78
--- /dev/null
+++ b/src/views/warehouse/WarehouseDetail.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Detail Barang
+
+
Status
+
{{ item.status }}
+
+
+
Kode
+
{{ item.item_code?.code }}
+
+
+
Jumlah awal
+
{{ item.received_qty }} {{ item.unit }}
+
+
+
Sisa stok
+
+ {{ item.barcodes.reduce((n, x) => n + Number(x.remaining_qty), 0) }}
+ {{ item.unit }}
+
+
+
Histori Stok Barang
+ Belum ada histori.
+
+
+
{{ x.movement_type }}
+
+ {{ x.qty }} {{ item.unit }} · {{ new Date(x.created_at).toLocaleString('id-ID') }}
+
+
{{ x.notes }}
+
Detail Barcode
+ {{ x.barcode }}
+
+
+
Serial: {{ selectedBarcode().serial_number || '-' }}
+
+ Jumlah awal: {{ selectedBarcode().initial_qty }} {{ selectedBarcode().unit }}
+
+
Sisa: {{ selectedBarcode().remaining_qty }} {{ selectedBarcode().unit }}
+
Status: {{ selectedBarcode().status }}
+
Histori Barcode
+ Belum ada pergerakan barcode.
+
+
+
{{ x.movement_type }}
+
{{ x.qty }} · {{ new Date(x.created_at).toLocaleString('id-ID') }}
+
{{ x.notes }}
+
+
+
diff --git a/src/views/warehouse/Warehouses.vue b/src/views/warehouse/Warehouses.vue
new file mode 100644
index 00000000..1cccbb78
--- /dev/null
+++ b/src/views/warehouse/Warehouses.vue
@@ -0,0 +1 @@
+
action==='edit'?open(item):remove(item)"/>
{{selected?'Edit':'Tambah'}} Gudang
Batal Simpan