增加部分付款和部分交货状态、工作台筛选、权限校验、跟进记录及 v4 数据迁移;补充 Windows EXE 构建与验收脚本。附 16 页 PDF 使用升级手册及企业微信详细配置说明、生成脚本和测试截图。验证:76 项回归测试、EXE 浏览器验收与 PDF 逐页校验通过。
75 lines
4.2 KiB
HTML
75 lines
4.2 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">
|
||
<div class="card-head"><h2>付款与交货概况</h2><a href="{{ url_for('orders', status='approved') }}">查看全部</a></div>
|
||
<p class="muted">统计当前可见、审批通过的订单。各类数量可能重叠;部分付款和部分交货按订单状态统计。</p>
|
||
<div class="stat-row">
|
||
{% for key in ['prepayment','invoice_due','unpaid','paid','undelivered','partial_delivery','paid_undelivered','completed'] %}
|
||
<a class="stat tracking-stat" data-tracking="{{ key }}" href="{{ url_for('orders', tracking=key) }}"><div class="v">{{ tracking_counts[key] }}</div><div class="k">{{ TRACKING_FILTERS[key] }}</div></a>
|
||
{% endfor %}
|
||
</div>
|
||
<div class="toolbar tracking-shortcuts">{% for key in ['partial_payment','delivered','unrecorded','recheck'] %}<a class="btn sm" data-tracking="{{ key }}" href="{{ url_for('orders', tracking=key) }}">{{ TRACKING_FILTERS[key] }}({{ tracking_counts[key] }})</a>{% endfor %}</div>
|
||
<h3>最近审批通过的订单</h3>
|
||
<table class="grid tracking-table">
|
||
<tr><th>订单 / 供应商</th><th class="num">订单金额</th><th>预付款</th><th>收票</th><th>付款</th><th>交货</th><th>操作</th></tr>
|
||
{% for o in tracking_rows %}
|
||
<tr>
|
||
<td><a href="{{ url_for('order_view', oid=o.id) }}#order-tracking">{{ o.order_no }}</a><div class="muted">{{ o.supplier_name }}</div>{% if o.fulfillment_stale or o.payment_stale %}<div class="tracking-warning">变更后待核对</div>{% endif %}</td>
|
||
<td class="num">{{ '%.2f'|format(o.total_amount) }}</td><td>{{ '需要' if o.needs_prepayment else '—' }}</td>
|
||
<td><span class="badge track-{{ o.invoice_status }}">{{ o.invoice_status_text }}</span></td>
|
||
<td><span class="badge track-{{ o.payment_status }}">{{ o.payment_status_text }}</span></td>
|
||
<td><span class="badge track-{{ o.delivery_status }}">{{ o.delivery_status_text }}</span></td>
|
||
<td><a class="btn sm" href="{{ url_for('order_view', oid=o.id) }}#order-tracking">查看跟进</a></td>
|
||
</tr>
|
||
{% else %}<tr><td colspan="7" class="center muted">暂无审批通过的订单</td></tr>{% endfor %}
|
||
</table>
|
||
</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 %}
|