Files
ewoooc/templates/vendor_stockout_index_v2.html
OoO 605250619c
All checks were successful
CD Pipeline / deploy (push) Successful in 1m3s
Frontend V3 responsive production update
2026-05-12 18:27:29 +08:00

176 lines
8.1 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends 'ewoooc_base.html' %}
{% block title %}EwoooC 廠商缺貨{% endblock %}
{% block page_attrs %}data-page-group="monitor" data-page-id="vendor-index"{% endblock %}
{% block extra_css %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/page-vendor-index.css') }}">
{% endblock %}
{% block ewooo_content %}
<div class="vendor-v2-stack">
<section class="vendor-hero" aria-label="廠商缺貨概況">
<div class="vendor-hero-panel">
<div>
<div class="vendor-eyebrow momo-mono">
<i class="fas fa-box-open"></i>
VENDOR STOCKOUT
</div>
<h1 class="vendor-title">廠商缺貨</h1>
<p class="vendor-subtitle">
以匯入的缺貨清單、廠商聯絡資料與郵件發送紀錄為準,追蹤待處理缺貨、已發送通知與聯絡資料完整度。
</p>
</div>
<div class="vendor-actions">
<a class="vendor-action is-primary" href="{{ url_for('vendor.import_page') }}">
<i class="fas fa-file-import"></i>匯入 Excel
</a>
<a class="vendor-action" href="{{ url_for('vendor.list_page') }}">
<i class="fas fa-list-check"></i>查看清單
</a>
<a class="vendor-action" href="{{ url_for('vendor.vendor_management_page') }}">
<i class="fas fa-address-book"></i>廠商資料
</a>
</div>
</div>
<aside class="vendor-pulse">
<div>
<div class="vendor-pulse-label momo-mono">最新批次</div>
{% if stats.latest_batch_id %}
<div class="vendor-pulse-value momo-mono">{{ stats.latest_batch_count | number_format }}</div>
<div class="vendor-pulse-meta momo-mono">
批次 {{ stats.latest_batch_id }}<br>
{{ stats.latest_batch_time.strftime('%Y-%m-%d %H:%M') if stats.latest_batch_time else '沒有時間紀錄' }}
</div>
{% else %}
<div class="vendor-pulse-value momo-mono">0</div>
<div class="vendor-pulse-meta momo-mono">目前沒有匯入批次紀錄</div>
{% endif %}
</div>
</aside>
</section>
<section aria-label="廠商缺貨指標">
<div class="vendor-section-label">
<span class="num momo-mono">01</span>
<span class="title">即時指標</span>
</div>
<div class="vendor-kpi-grid">
<div class="vendor-card">
<div class="vendor-kpi-label momo-mono">缺貨總筆數</div>
<div class="vendor-kpi-value momo-mono">{{ stats.total_stockouts | number_format }}</div>
<div class="vendor-kpi-sub momo-mono">涵蓋 {{ stats.distinct_vendor_count | number_format }} 個來源廠商</div>
</div>
<div class="vendor-card">
<div class="vendor-kpi-label momo-mono">待發送</div>
<div class="vendor-kpi-value momo-mono is-danger">{{ stats.pending_stockouts | number_format }}</div>
<div class="vendor-kpi-sub momo-mono">失敗 {{ stats.failed_stockouts | number_format }} 筆</div>
</div>
<div class="vendor-card">
<div class="vendor-kpi-label momo-mono">已發送</div>
<div class="vendor-kpi-value momo-mono is-success">{{ stats.sent_stockouts | number_format }}</div>
<div class="vendor-kpi-sub momo-mono">重複 {{ stats.duplicate_stockouts | number_format }} 筆</div>
</div>
<div class="vendor-card">
<div class="vendor-kpi-label momo-mono">啟用廠商</div>
<div class="vendor-kpi-value momo-mono">{{ stats.active_vendors | number_format }}</div>
<div class="vendor-kpi-sub momo-mono">啟用郵件 {{ stats.active_emails | number_format }}</div>
</div>
</div>
</section>
<section aria-label="廠商缺貨工作流程">
<div class="vendor-section-label">
<span class="num momo-mono">02</span>
<span class="title">工作入口</span>
</div>
<div class="vendor-flow-grid">
<a class="vendor-flow-card" href="{{ url_for('vendor.import_page') }}">
<span class="vendor-flow-icon"><i class="fas fa-file-import"></i></span>
<span>
<span class="vendor-flow-title">Excel 匯入</span>
<span class="vendor-flow-meta momo-mono">建立缺貨批次</span>
</span>
</a>
<a class="vendor-flow-card" href="{{ url_for('vendor.list_page') }}">
<span class="vendor-flow-icon"><i class="fas fa-table-list"></i></span>
<span>
<span class="vendor-flow-title">缺貨清單</span>
<span class="vendor-flow-meta momo-mono">{{ stats.total_stockouts | number_format }} 筆記錄</span>
</span>
</a>
<a class="vendor-flow-card" href="{{ url_for('vendor.vendor_management_page') }}">
<span class="vendor-flow-icon"><i class="fas fa-address-card"></i></span>
<span>
<span class="vendor-flow-title">廠商管理</span>
<span class="vendor-flow-meta momo-mono">{{ stats.active_vendors | number_format }} 個啟用廠商</span>
</span>
</a>
<a class="vendor-flow-card" href="{{ url_for('vendor.send_email_page') }}">
<span class="vendor-flow-icon"><i class="fas fa-paper-plane"></i></span>
<span>
<span class="vendor-flow-title">郵件發送</span>
<span class="vendor-flow-meta momo-mono">{{ stats.pending_stockouts | number_format }} 筆待處理</span>
</span>
</a>
<a class="vendor-flow-card" href="{{ url_for('vendor.history_page') }}">
<span class="vendor-flow-icon"><i class="fas fa-clock-rotate-left"></i></span>
<span>
<span class="vendor-flow-title">發送歷史</span>
<span class="vendor-flow-meta momo-mono">{{ stats.email_total | number_format }} 筆郵件紀錄</span>
</span>
</a>
</div>
</section>
<section class="vendor-table-card" aria-label="資料狀態摘要">
<div class="vendor-table-head">
<span class="vendor-table-title">資料狀態摘要</span>
<span class="vendor-kpi-sub momo-mono">來源vendor_stockout / vendor_list / vendor_emails / email_send_log</span>
</div>
<div class="vendor-summary-grid">
<div class="vendor-summary-item">
<div class="vendor-card-label momo-mono">最新匯入</div>
{% if stats.latest_import_time %}
<div class="vendor-summary-title">{{ stats.latest_import_vendor or '未標記廠商' }}</div>
<div class="vendor-summary-meta momo-mono">
{{ stats.latest_import_time.strftime('%Y-%m-%d %H:%M') }}<br>
{{ stats.latest_import_product or '未標記商品' }}
</div>
{% else %}
<div class="vendor-summary-title">尚無匯入紀錄</div>
<div class="vendor-summary-meta momo-mono">資料庫目前沒有缺貨資料</div>
{% endif %}
</div>
<div class="vendor-summary-item">
<div class="vendor-card-label momo-mono">郵件成功率</div>
<div class="vendor-summary-title momo-mono">{{ stats.email_success_rate }}%</div>
<div class="vendor-summary-meta momo-mono">
成功 {{ stats.email_success | number_format }} / 總計 {{ stats.email_total | number_format }}<br>
失敗 {{ stats.email_failed | number_format }},待發送 {{ stats.email_pending | number_format }}
</div>
</div>
<div class="vendor-summary-item">
<div class="vendor-card-label momo-mono">最新郵件</div>
{% if stats.latest_email_time %}
<div class="vendor-summary-title momo-mono">{{ stats.latest_email_status or '未標記狀態' }}</div>
<div class="vendor-summary-meta momo-mono">
{{ stats.latest_email_time.strftime('%Y-%m-%d %H:%M') }}<br>
vendor_id {{ stats.latest_email_vendor_id }}
</div>
{% else %}
<div class="vendor-summary-title">尚無郵件紀錄</div>
<div class="vendor-summary-meta momo-mono">email_send_log 目前沒有資料</div>
{% endif %}
</div>
</div>
{% if stats.total_stockouts == 0 %}
<div class="vendor-empty momo-mono">
目前沒有匯入的缺貨資料;請先使用既有 Excel 匯入流程建立真實批次。
</div>
{% endif %}
</section>
</div>
{% endblock %}