// 仓库管理 —— 发货单
window.ShipmentOrders = (() => {
let currentUser = null;
let itemIndex = 0;
const isSuperadmin = () => currentUser && currentUser.role === 'superadmin';
const isAdmin = () => currentUser && currentUser.role === 'admin';
const statusLabel = s => ({ pending: '待确认', approved: '已确认', rejected: '已驳回' }[s] || s);
const statusColor = s => ({ pending: '#f59e0b', approved: '#10b981', rejected: '#ef4444' }[s] || '#94a3b8');
const render = async () => {
try {
const res = await fetch('/api/auth/me', { credentials: 'include' });
currentUser = res.ok ? await res.json() : null;
} catch (e) { currentUser = null; }
return `
`;
};
const init = async () => {
stopPolling();
if (!currentUser) {
try {
const res = await fetch('/api/auth/me', { credentials: 'include' });
currentUser = res.ok ? await res.json() : null;
} catch (e) { currentUser = null; }
}
const el = document.getElementById('shipment-content');
if (!el) return;
if (isSuperadmin()) { await renderSuperadminView(el); startPolling(); }
else if (isAdmin()) { await renderAdminView(el); startPolling(); }
else el.innerHTML = '无权限
';
};
let _modelList = [];
const loadModels = async () => {
const res = await fetch('/api/warehouse/shipment-models', { credentials: 'include' });
const data = res.ok ? await res.json() : { list: [] };
_modelList = data.list || [];
};
const refreshModelDatalist = () => {
const dl = document.getElementById('sh-model-datalist');
if (!dl) return;
dl.innerHTML = _modelList.map(m => `