This commit is contained in:
2026-03-22 00:43:56 +08:00
parent 557e25d187
commit cd40757167
6 changed files with 86 additions and 73 deletions

View File

@@ -183,9 +183,9 @@
GlobalGuard <span>Audit V9.4</span>
</div>
<nav class="nav-top" aria-label="Main navigation">
<button onclick="app.nav('dashboard')" class="active" aria-current="page">Workspace</button>
<button onclick="app.nav('orders')">Order Queue (200+)</button>
<button onclick="app.nav('settings')">Settings</button>
<button id="nav-btn-dashboard" onclick="app.nav('dashboard')" class="active" aria-current="page">Workspace</button>
<button id="nav-btn-orders" onclick="app.nav('orders')">Order Queue (200+)</button>
<button id="nav-btn-settings" onclick="app.nav('settings')">Settings</button>
</nav>
<div class="user-area">
<div style="text-align: right; font-size:12px;">
@@ -193,7 +193,7 @@
<div style="color:rgba(255,255,255,0.6)">East China Audit Group</div>
</div>
<div class="avatar" aria-label="User avatar">A</div>
<button class="btn" style="background:rgba(255,255,255,0.1); padding:5px 10px;" onclick="app.showLogout()">Logout</button>
<button id="btn-logout" class="btn" style="background:rgba(255,255,255,0.1); padding:5px 10px;" onclick="app.showLogout()">Logout</button>
</div>
</header>
@@ -294,8 +294,8 @@
</select>
</div>
<div style="margin-left:auto; display:flex; gap:10px;">
<button class="btn btn-secondary" onclick="app.resetFilter()" aria-label="Reset all filters">Reset</button>
<button class="btn btn-primary" onclick="app.applyFilter()" aria-label="Apply filters and search">
<button id="btn-filter-reset" class="btn btn-secondary" onclick="app.resetFilter()" aria-label="Reset all filters">Reset</button>
<button id="btn-filter-search" class="btn btn-primary" onclick="app.applyFilter()" aria-label="Apply filters and search">
<svg class="icon" aria-hidden="true"><use xlink:href="#i-list"></use></svg> Search
</button>
</div>
@@ -324,8 +324,8 @@
</div>
<div style="margin-top:15px; display:flex; gap:10px; align-items:center;">
<button class="btn btn-primary" onclick="app.batchAction('approve')" aria-label="Batch approve selected orders">Batch Approve</button>
<button class="btn btn-danger" onclick="app.batchAction('reject')" aria-label="Batch reject selected orders">Batch Reject</button>
<button id="btn-batch-approve" class="btn btn-primary" onclick="app.batchAction('approve')" aria-label="Batch approve selected orders">Batch Approve</button>
<button id="btn-batch-reject" class="btn btn-danger" onclick="app.batchAction('reject')" aria-label="Batch reject selected orders">Batch Reject</button>
<span style="margin-left:auto; font-size:12px; color:var(--text-muted);" role="status" aria-live="polite">
Showing <strong id="current-count">0</strong> results / Total <span id="total-db-count">0</span>
</span>
@@ -372,8 +372,8 @@
<div class="drawer-body" id="d-content" role="region" aria-label="Order information">
</div>
<div class="drawer-footer" id="d-footer">
<button class="btn btn-danger" onclick="app.rejectCurrent()" aria-label="Reject this order">Reject Order</button>
<button class="btn btn-primary" onclick="app.approveCurrent()" aria-label="Approve this order">Approve Order</button>
<button id="btn-drawer-reject" class="btn btn-danger" onclick="app.rejectCurrent()" aria-label="Reject this order">Reject Order</button>
<button id="btn-drawer-approve" class="btn btn-primary" onclick="app.approveCurrent()" aria-label="Approve this order">Approve Order</button>
</div>
</aside>
@@ -393,8 +393,8 @@
<textarea class="input-control" id="reject-note" style="width:100%; height:80px;" placeholder="Notes (Optional)..." aria-label="Additional rejection notes"></textarea>
</div>
<div class="modal-actions">
<button onclick="app.closeModal('modal-reject')" aria-label="Cancel rejection">Cancel</button>
<button class="confirm" onclick="app.confirmReject()" aria-label="Confirm order rejection">Confirm Reject</button>
<button id="btn-reject-cancel" onclick="app.closeModal('modal-reject')" aria-label="Cancel rejection">Cancel</button>
<button id="btn-reject-confirm" class="confirm" onclick="app.confirmReject()" aria-label="Confirm order rejection">Confirm Reject</button>
</div>
</div>
</div>
@@ -406,8 +406,8 @@
<p style="color:var(--text-muted);">Are you sure you want to log out? Unsaved changes will be lost.</p>
</div>
<div class="modal-actions">
<button onclick="app.closeModal('modal-logout')" aria-label="Cancel logout">Cancel</button>
<button class="confirm" onclick="location.reload()" aria-label="Confirm logout">Confirm Logout</button>
<button id="btn-logout-cancel" onclick="app.closeModal('modal-logout')" aria-label="Cancel logout">Cancel</button>
<button id="btn-logout-confirm" class="confirm" onclick="location.reload()" aria-label="Confirm logout">Confirm Logout</button>
</div>
</div>
</div>
@@ -600,9 +600,10 @@ const app = {
return '';
}).join('');
const safeId = order.id.replace(/[^a-zA-Z0-9\-_]/g, '-');
htmlBuffer += `
<tr role="row">
<td role="cell"><input type="checkbox" class="row-check" value="${order.id}" onchange="app.toggleSelect('${order.id}')" aria-label="Select order ${order.id}" ${this.data.selectedIds.has(order.id) ? 'checked' : ''} ${order.status !== 'pending' ? 'disabled' : ''}></td>
<tr role="row" id="row-${safeId}">
<td role="cell"><input type="checkbox" id="check-${safeId}" class="row-check" value="${order.id}" onchange="app.toggleSelect('${order.id}')" aria-label="Select order ${order.id}" ${this.data.selectedIds.has(order.id) ? 'checked' : ''} ${order.status !== 'pending' ? 'disabled' : ''}></td>
<td role="cell">
<div style="font-weight:600; font-family:'Consolas', monospace;">${order.id}</div>
<div style="font-size:12px; color:var(--text-muted);">${order.date}</div>
@@ -616,13 +617,13 @@ const app = {
<td role="cell" style="font-weight:600; color:var(--text-main);">¥ ${order.total.toLocaleString()}</td>
<td role="cell">
<div style="font-weight:bold; color:${riskColor};">${order.score} / 100</div>
<div class="risk-bar-container" role="progressbar" aria-valuenow="${order.score}" aria-valuemin="0" aria-valuemax="100" aria-label="Risk score progress">
<div class="risk-bar-container" role="progressbar" aria-valuenow="${order.score}" aria-valuemin="0" aria-valuemax="100" aria-label="Risk score progress for order ${order.id}">
<div class="risk-bar-fill" style="width: ${order.score}%; background: ${riskColor};"></div>
</div>
</td>
<td role="cell">${statusBadge}</td>
<td role="cell" style="text-align:right;">
<button class="btn btn-secondary" style="padding:4px 8px;" onclick="app.openDrawer('${order.id}')" aria-label="View details for order ${order.id}">
<button id="view-${safeId}" class="btn btn-secondary" style="padding:4px 8px;" onclick="app.openDrawer('${order.id}')" aria-label="View details for order ${order.id}">
<svg class="icon" aria-hidden="true" style="margin:0;"><use xlink:href="#i-eye"></use></svg>
</button>
</td>