OPEN-ISP v0.5 (pickle-lime) — rilis open-source perdana
Aplikasi billing & manajemen ISP (fiber optic) — PWA pelanggan, portal teknisi & kolektor, admin panel lengkap, multi-vendor OLT, RADIUS, WhatsApp/Telegram, pembayaran QRIS. Kredit & lisensi (ISC): - Base kode & repo: alijayanet/billing-rtrw oleh Alijaya Net — terima kasih banyak atas base kode dan repo yang bermanfaat. - Add-on: GoWA, LibreSpeed/OpenSpeedTest, Uptime Kuma, notification-forwarder. - Dikembangkan menjadi OPEN-ISP oleh oxpoe — https://github.com/oxpoe/open-isp
This commit is contained in:
commit
eaf05f2811
280 files changed
+123975
No files matched your search
@@ -0,0 +1,39 @@
|
||||
<%- include('partials/header') %>
|
||||
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px">
|
||||
<div>
|
||||
<h5 style="margin:0;font-weight:700"><%= t('tech.pool.title', 'Tiket Baru') %></h5>
|
||||
<div class="muted" style="font-size:12px"><%= t('tech.pool.subtitle', 'Daftar keluhan yang belum ditangani') %></div>
|
||||
</div>
|
||||
<div style="width:42px;height:42px;border-radius:50%;background:var(--ddim);color:var(--danger);display:grid;place-items:center;font-weight:800;flex:0 0 auto"><%= tickets.length %></div>
|
||||
</div>
|
||||
|
||||
<% if (tickets.length === 0) { %>
|
||||
<div class="p-empty">
|
||||
<i class="bi bi-clipboard-check"></i>
|
||||
<p style="font-size:13px"><%= t('tech.pool.empty', 'Tidak ada keluhan baru saat ini.') %><br><%= t('tech.pool.empty_hint', 'Semua pelanggan berjalan normal.') %></p>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<% tickets.forEach(function(ticket){ %>
|
||||
<div class="p-card" style="border-color:var(--danger-glow)">
|
||||
<div style="display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px">
|
||||
<span class="badge-status badge-open"><i class="bi bi-exclamation-circle-fill"></i> <%= t('tech.ticket.open', 'Belum Ditangani') %></span>
|
||||
<span class="muted" style="font-size:11px"><%= typeof formatDateLocal === 'function' ? formatDateLocal(ticket.created_at) : (ticket.created_at ? new Date(ticket.created_at).toLocaleString('id-ID', {day:'2-digit', month:'short', hour:'2-digit', minute:'2-digit'}) : '-') %></span>
|
||||
</div>
|
||||
|
||||
<div style="font-weight:700;font-size:15px"><%= ticket.customer_name %></div>
|
||||
<div class="muted" style="font-size:12px;margin:6px 0 0"><i class="bi bi-geo-alt-fill"></i> <%= ticket.customer_address || t('tech.ticket.no_address', 'Tidak ada alamat') %></div>
|
||||
|
||||
<div class="ticket-msg">
|
||||
<div class="subj" style="color:var(--danger)"><%= ticket.subject %></div>
|
||||
<div><%= ticket.message %></div>
|
||||
</div>
|
||||
|
||||
<form method="POST" action="/tech/tickets/<%= ticket.id %>/take">
|
||||
<button type="submit" class="p-btn primary" onclick="return confirm(<%- JSON.stringify(t('tech.pool.take_confirm', 'Ambil tiket ini untuk Anda kerjakan sekarang?')).split('<').join('\\u003c') %>)"><i class="bi bi-hand-index-thumb-fill"></i> <%= t('tech.pool.take_action', 'Ambil Tugas Ini') %></button>
|
||||
</form>
|
||||
</div>
|
||||
<% }); %>
|
||||
<% } %>
|
||||
|
||||
<%- include('partials/bottom_nav') %>
|
||||
Reference in new issue
Block a user