88 lines
6.0 KiB
HTML
88 lines
6.0 KiB
HTML
{% extends "base.html" %}
|
||
{% block body %}
|
||
<h1 class="page">工作台</h1>
|
||
<div class="stat-row">
|
||
<div class="stat"><div class="v">{{ counts.get('pending_approval', 0) }}</div><div class="k">待审批</div></div>
|
||
<div class="stat"><div class="v">{{ counts.get('approved', 0) }}</div><div class="k">审批通过</div></div>
|
||
<div class="stat"><div class="v">{{ counts.get('draft', 0) }}</div><div class="k">草稿</div></div>
|
||
<div class="stat"><div class="v">{{ '%.2f'|format(month_total) }}</div><div class="k">审批通过订单总额(元)</div></div>
|
||
</div>
|
||
|
||
<div class="card tracking-dashboard" id="tracking-board">
|
||
{% from 'tracking_macros.html' import progress, invoice, tasks, actions with context %}
|
||
<div class="card-head"><div><h2>付款与交货待办</h2><p class="muted">先核对变更,再跟进付款与交货。同一订单可能出现在多个提醒中。</p></div><a href="{{ url_for('orders') }}">全部订单</a></div>
|
||
<div class="order-stage-links" aria-label="按订单进展查看">
|
||
{% for key in ['work_undelivered', 'work_invoice_due', 'work_completed'] %}<a class="order-stage {{ 'selected' if tracking_key == key else '' }}" data-stage="{{ key }}" href="{{ url_for('index', tracking=key) }}#tracking-board"><b>{{ TRACKING_FILTERS[key] }}</b><span>{{ tracking_counts[key] }} 单 →</span></a>{% endfor %}
|
||
</div>
|
||
<p class="muted">交货、收票或付款未登记,以及变更后待核对的订单,可在 <a href="{{ url_for('index', tracking='work_other') }}#tracking-board">其他待跟进({{ tracking_counts['work_other'] }})</a>查看。</p>
|
||
<div class="stat-row tracking-focus">
|
||
{% for key in ['prepayment','invoice_due','paid_undelivered','recheck'] %}
|
||
<a class="stat tracking-stat focus-{{ key }} {{ 'selected' if tracking_key == key else '' }}" data-tracking="{{ key }}" href="{{ url_for('index', tracking=key) }}#tracking-board"><div class="v">{{ tracking_counts[key] }}</div><div class="k">{{ TRACKING_FILTERS[key] }}</div><span class="stat-arrow" aria-hidden="true">→</span></a>
|
||
{% endfor %}
|
||
</div>
|
||
<div class="tracking-board-head">
|
||
<div><h3>{{ TRACKING_FILTERS[tracking_key] }} <span class="muted">共 {{ tracking_total }} 单</span></h3><p class="muted">同类优先显示较早订单;付款、交货、收票均完成后默认收起。</p></div>
|
||
<form method="get" action="{{ url_for('index') }}#tracking-board" class="toolbar tracking-filter">
|
||
<label for="board-filter">查看</label>
|
||
<select id="board-filter" name="tracking">{% for key, label in TRACKING_FILTERS.items() %}<option value="{{ key }}" {{ 'selected' if tracking_key == key else '' }}>{{ label }}({{ tracking_counts[key] }})</option>{% endfor %}</select>
|
||
<button class="btn sm">筛选</button>
|
||
</form>
|
||
</div>
|
||
<table class="grid tracking-table order-cards">
|
||
<thead><tr><th>订单 / 供应商</th><th class="num">金额</th><th>付款进度</th><th>交货进度</th><th>收票</th><th>待办 / 操作</th></tr></thead>
|
||
<tbody>{% for o in tracking_rows %}
|
||
<tr data-order-id="{{ o.id }}">
|
||
<td data-label="订单" class="order-identity"><a href="{{ url_for('order_view', oid=o.id) }}#order-tracking"><b>{{ o.order_no }}</b></a><div class="supplier-name">{{ o.supplier_name }}</div>{% if o.needs_prepayment %}<span class="badge track-partial">需提前付款{{ '(待核对)' if o.fulfillment_stale else '' }}</span>{% endif %}</td>
|
||
<td data-label="订单金额" class="num">¥{{ '%.2f'|format(o.total_amount) }}</td>
|
||
<td data-label="付款">{{ progress(o, 'payment') }}</td>
|
||
<td data-label="交货">{{ progress(o, 'delivery') }}</td>
|
||
<td data-label="收票">{{ invoice(o) }}</td>
|
||
<td data-label="待办 / 操作" class="order-next">{{ tasks(o) }}{{ actions(o, user) }}</td>
|
||
</tr>
|
||
{% else %}<tr class="empty-row"><td colspan="6" class="center muted">当前分类暂无订单。可切换分类查看其他订单。</td></tr>{% endfor %}</tbody>
|
||
</table>
|
||
{% if tracking_total > tracking_rows|length %}<p class="right"><a href="{{ url_for('orders', tracking=tracking_key) }}">查看全部 {{ tracking_total }} 单 →</a></p>{% endif %}
|
||
{% if tracking_key != 'open' %}<p><a href="{{ url_for('index') }}#tracking-board">返回全部待跟进({{ tracking_counts['open'] }})</a></p>{% endif %}
|
||
<div class="tracking-completed-link"><a data-tracking="closed" href="{{ url_for('index', tracking='closed') }}#tracking-board">查看已全部完成({{ tracking_counts['closed'] }})</a></div>
|
||
</div>
|
||
|
||
{% if todo %}
|
||
<div class="card">
|
||
<h2>待我处理({{ todo|length }})</h2>
|
||
<table class="grid">
|
||
<tr><th>单号</th><th>类型</th><th>供应商</th><th>金额</th><th>状态</th><th>提交时间</th><th>操作</th></tr>
|
||
{% for o in todo %}
|
||
<tr>
|
||
<td><a href="{{ url_for('order_view', oid=o.id) }}">{{ o.order_no }}</a></td>
|
||
<td>{{ o.doc_type_text }}</td>
|
||
<td>{{ o.supplier_name }}</td>
|
||
<td class="num">{{ '%.2f'|format(o.total_amount) }}</td>
|
||
<td><span class="badge {{ o.status }}">{{ o.status_text }}</span></td>
|
||
<td>{{ o.submitted_at.strftime('%m-%d %H:%M') if o.submitted_at else '-' }}</td>
|
||
<td><a class="btn sm primary" href="{{ url_for('order_view', oid=o.id) }}">去处理</a></td>
|
||
</tr>
|
||
{% endfor %}
|
||
</table>
|
||
</div>
|
||
{% endif %}
|
||
|
||
<div class="card">
|
||
<h2>我的订单</h2>
|
||
{% if my_orders %}
|
||
<table class="grid">
|
||
<tr><th>单号</th><th>类型</th><th>供应商</th><th>金额</th><th>状态</th><th>创建时间</th></tr>
|
||
{% for o in my_orders %}
|
||
<tr>
|
||
<td><a href="{{ url_for('order_view', oid=o.id) }}">{{ o.order_no }}</a></td>
|
||
<td>{{ o.doc_type_text }}</td>
|
||
<td>{{ o.supplier_name }}</td>
|
||
<td class="num">{{ '%.2f'|format(o.total_amount) }}</td>
|
||
<td><span class="badge {{ o.status }}">{{ o.status_text }}</span></td>
|
||
<td>{{ o.created_at.strftime('%Y-%m-%d %H:%M') }}</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</table>
|
||
{% else %}<p class="muted">暂无订单,点右上角「新建订单」开始。</p>{% endif %}
|
||
</div>
|
||
{% endblock %}
|