双栏布局:开单计划/关键位/复盘;复盘字段与情绪单

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-15 12:27:20 +08:00
parent 9fc41b6a46
commit 9b4bbbe8a3
6 changed files with 511 additions and 338 deletions
+75 -95
View File
@@ -3,104 +3,84 @@
{% block content %}
<h1 class="page-title">开单计划 <span style="font-size:.9rem;color:#888;font-weight:normal">今日 {{ today }}</span></h1>
<div class="card">
<h2>今日计划(开盘前制定,当日有效)</h2>
<form action="{{ url_for('add_plan') }}" method="post" class="form-row">
<div class="symbol-wrap" style="min-width:200px">
<input type="text" class="symbol-input" placeholder="输入中文名或同花顺代码" autocomplete="off" required>
<input type="hidden" name="symbol" required>
<input type="hidden" name="symbol_name">
<input type="hidden" name="market_code" required>
<input type="hidden" name="sina_code">
<div class="symbol-dropdown"></div>
<div class="symbol-selected"></div>
</div>
<select name="direction" required>
<option value="">选择方向</option>
<option value="long">做多</option>
<option value="short">做空</option>
</select>
<input name="zone_lower" type="number" step="0.0001" placeholder="决策区间下限" required>
<input name="zone_upper" type="number" step="0.0001" placeholder="决策区间上限" required>
<input name="stop_loss" type="number" step="0.0001" placeholder="止损价位" required>
<input name="take_profit" type="number" step="0.0001" placeholder="止盈价位" required>
<button type="submit" class="btn-primary">添加今日计划</button>
</form>
<p class="hint">计划仅当日有效,次日 0 点自动失效并归入历史;触发止盈/止损后标记为已完成。</p>
</div>
<div class="card">
<h2>今日进行中</h2>
<div class="list">
{% for p in plans %}
<div class="list-item">
<div>
<strong>{{ p.symbol_name or p.symbol }}</strong>
<span class="badge dir">{{ '做多' if p.direction == 'long' else '做空' }}</span>
{% if p.status == 'planned' %}
<span class="badge planned">待触发</span>
<div class="split-grid">
<div class="card">
<h2>今日计划</h2>
<div class="card-body">
<p class="hint" style="margin-bottom:1rem">开盘前制定,当日有效;下方为进行中计划。</p>
<form action="{{ url_for('add_plan') }}" method="post" class="form-row">
<div class="symbol-wrap" style="min-width:180px;flex:1">
<input type="text" class="symbol-input" placeholder="中文名或同花顺代码" autocomplete="off" required>
<input type="hidden" name="symbol" required>
<input type="hidden" name="symbol_name">
<input type="hidden" name="market_code" required>
<input type="hidden" name="sina_code">
<div class="symbol-dropdown"></div>
<div class="symbol-selected"></div>
</div>
<select name="direction" required>
<option value="">方向</option>
<option value="long">做多</option>
<option value="short">做空</option>
</select>
<input name="zone_lower" type="number" step="0.0001" placeholder="区间下限" required>
<input name="zone_upper" type="number" step="0.0001" placeholder="区间上限" required>
<input name="stop_loss" type="number" step="0.0001" placeholder="止损" required>
<input name="take_profit" type="number" step="0.0001" placeholder="止盈" required>
<button type="submit" class="btn-primary">添加</button>
</form>
<h3 style="font-size:.95rem;color:#a9a9ff;margin:1rem 0 .75rem">进行中</h3>
<div class="list card-scroll">
{% for p in plans %}
<div class="list-item">
<div>
<strong>{{ p.symbol_name or p.symbol }}</strong>
<span class="badge dir">{{ '做多' if p.direction == 'long' else '做空' }}</span>
{% if p.status == 'planned' %}<span class="badge planned">待触发</span>
{% else %}<span class="badge active">已激活</span>{% endif %}
</div>
<div>区间 {{ p.zone_lower }}~{{ p.zone_upper }} | 损{{ p.stop_loss }} 盈{{ p.take_profit }}</div>
<a href="{{ url_for('del_plan', pid=p.id) }}" class="btn-del" onclick="return confirm('删除?')">删除</a>
</div>
{% else %}
<span class="badge active">已激活</span>
{% endif %}
<div style="color:#888;padding:1rem">今日暂无进行中的计划</div>
{% endfor %}
</div>
</div>
</div>
<div class="card">
<h2>历史计划</h2>
<div class="card-body">
<form method="get" class="filter-row">
<div class="field"><label>开始</label><input type="date" name="start" value="{{ start }}"></div>
<div class="field"><label>结束</label><input type="date" name="end" value="{{ end }}"></div>
<button type="submit" class="btn-primary">筛选</button>
<a href="{{ url_for('plans') }}" style="color:#888;font-size:.85rem;padding:.7rem">重置</a>
</form>
<div class="card-scroll">
<table>
<thead><tr><th>日期</th><th>品种</th><th>方向</th><th>区间</th><th>状态</th></tr></thead>
<tbody>
{% for p in history %}
<tr>
<td>{{ p.plan_date or '' }}</td>
<td>{{ p.symbol_name or p.symbol }}</td>
<td><span class="badge dir">{{ '多' if p.direction == 'long' else '空' }}</span></td>
<td>{{ p.zone_lower }}~{{ p.zone_upper }}</td>
<td>
{% if p.status == 'closed' %}<span class="badge profit">完成</span>
{% elif p.status == 'expired' %}<span class="badge expired">失效</span>
{% else %}{{ p.status }}{% endif %}
</td>
</tr>
{% else %}
<tr><td colspan="5" style="color:#888">暂无历史</td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div>区间: {{ p.zone_lower }} ~ {{ p.zone_upper }}</div>
<div>止损: {{ p.stop_loss }} | 止盈: {{ p.take_profit }}</div>
<div style="font-size:.8rem;color:#888">同花顺: {{ p.symbol }}</div>
<a href="{{ url_for('del_plan', pid=p.id) }}" class="btn-del" onclick="return confirm('删除此计划?')">删除</a>
</div>
{% else %}
<div style="color:#888;padding:1rem">今日暂无开单计划</div>
{% endfor %}
</div>
</div>
<div class="card">
<h2>历史计划</h2>
<form method="get" class="filter-row">
<div class="field">
<label>开始日期</label>
<input type="date" name="start" value="{{ start }}">
</div>
<div class="field">
<label>结束日期</label>
<input type="date" name="end" value="{{ end }}">
</div>
<button type="submit" class="btn-primary">筛选</button>
<a href="{{ url_for('plans') }}" style="color:#888;font-size:.85rem;padding:.7rem">重置</a>
</form>
<table>
<thead>
<tr>
<th>日期</th>
<th>品种</th>
<th>方向</th>
<th>区间</th>
<th>止损</th>
<th>止盈</th>
<th>状态</th>
<th></th>
</tr>
</thead>
<tbody>
{% for p in history %}
<tr>
<td>{{ p.plan_date or '' }}</td>
<td>{{ p.symbol_name or p.symbol }}</td>
<td><span class="badge dir">{{ '做多' if p.direction == 'long' else '做空' }}</span></td>
<td>{{ p.zone_lower }} ~ {{ p.zone_upper }}</td>
<td>{{ p.stop_loss }}</td>
<td>{{ p.take_profit }}</td>
<td>
{% if p.status == 'closed' %}<span class="badge profit">已完成</span>
{% elif p.status == 'expired' %}<span class="badge expired">已失效</span>
{% else %}<span class="badge">{{ p.status }}</span>{% endif %}
</td>
<td><a href="{{ url_for('del_plan', pid=p.id) }}" class="btn-del" onclick="return confirm('删除?')"></a></td>
</tr>
{% else %}
<tr><td colspan="8" style="color:#888">暂无历史记录</td></tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}