fix(ui): shrink badges, card_number format XX-1234567, date-only fields

This commit is contained in:
2026-07-05 16:26:22 +08:00
parent 4ad37a71f7
commit e66515ce72
4 changed files with 18 additions and 12 deletions

View File

@@ -199,7 +199,10 @@ def postcard_create(
try:
return datetime.fromisoformat(s)
except ValueError:
return None
try:
return datetime.strptime(s, "%Y-%m-%d")
except ValueError:
return None
pc = Postcard(
profile_id=profile_id,
@@ -274,7 +277,10 @@ def postcard_update(
try:
return datetime.fromisoformat(s)
except ValueError:
return None
try:
return datetime.strptime(s, "%Y-%m-%d")
except ValueError:
return None
pc.card_number = card_number
pc.status = status

View File

@@ -39,7 +39,7 @@ a:hover { text-decoration: underline; }
/* Forms */
label { display: block; margin-top: 1rem; font-size: .85rem; font-weight: 500; color: var(--text-muted); }
input[type="text"], input[type="password"], input[type="datetime-local"], select, textarea {
input[type="text"], input[type="password"], input[type="datetime-local"], input[type="date"], select, textarea {
width: 100%; padding: .5rem .75rem; margin-top: .25rem; border: 1px solid var(--border); border-radius: 6px; font-size: .95rem; background: #fff;
}
input:focus, select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37,99,235,.1); }
@@ -93,7 +93,7 @@ code { background: var(--bg); padding: .15rem .4rem; border-radius: 4px; font-si
.postcard-info { display: flex; flex-direction: column; gap: .25rem; font-size: .9rem; }
/* Badge */
.badge { display: inline-block; padding: .2rem .6rem; border-radius: 999px; font-size: .75rem; font-weight: 600; color: #fff; }
.badge { display: inline-block; padding: .15rem .45rem; border-radius: 999px; font-size: .7rem; font-weight: 600; color: #fff; white-space: nowrap; }
.badge-sent { background: var(--sent); }
.badge-delivered { background: var(--delivered); }
.badge-received { background: var(--received); }

View File

@@ -45,11 +45,11 @@
{% if postcard.status in ('sent','delivered') %}
<dt>收件人</dt><dd>{{ postcard.recipient_name or '-' }}</dd>
<dt>国家/地区</dt><dd>{{ postcard.country or '-' }}</dd>
<dt>寄出时间</dt><dd>{{ postcard.send_time.strftime('%Y-%m-%d %H:%M') if postcard.send_time else '-' }}</dd>
<dt>到达时间</dt><dd>{{ postcard.arrival_time.strftime('%Y-%m-%d %H:%M') if postcard.arrival_time else '-' }}</dd>
<dt>寄出时间</dt><dd>{{ postcard.send_time.strftime('%Y-%m-%d') if postcard.send_time else '-' }}</dd>
<dt>到达时间</dt><dd>{{ postcard.arrival_time.strftime('%Y-%m-%d') if postcard.arrival_time else '-' }}</dd>
{% else %}
<dt>发件人</dt><dd>{{ postcard.sender_name or '-' }}</dd>
<dt>收到时间</dt><dd>{{ postcard.receive_time.strftime('%Y-%m-%d %H:%M') if postcard.receive_time else '-' }}</dd>
<dt>收到时间</dt><dd>{{ postcard.receive_time.strftime('%Y-%m-%d') if postcard.receive_time else '-' }}</dd>
{% endif %}
<dt>所属 Profile</dt><dd>{{ postcard.profile.nickname }}</dd>
</dl>

View File

@@ -5,8 +5,8 @@
<h1>{{ '编辑' if postcard else '新建' }}明信片</h1>
</div>
<form method="post" action="{{ '/postcards/%d/edit' % postcard.id if postcard else '/profiles/%d/postcards' % profile.id }}" class="form-card">
<label>编号 *</label>
<input type="text" name="card_number" value="{{ postcard.card_number if postcard else '' }}" required>
<label>编号 * <span style="font-weight:400;color:var(--text-muted);font-size:.8rem">格式AB-1234567</span></label>
<input type="text" name="card_number" value="{{ postcard.card_number if postcard else '' }}" required pattern="[A-Za-z]{2}-\d{7}" title="两个字母 + 短横线 + 7位数字如 AB-1234567">
<label>状态 *</label>
<select name="status" id="status-select" onchange="toggleFields()">
@@ -21,16 +21,16 @@
<label>国家/地区</label>
<input type="text" name="country" value="{{ postcard.country if postcard else '' }}">
<label>寄出时间</label>
<input type="datetime-local" name="send_time" value="{{ postcard.send_time.strftime('%Y-%m-%dT%H:%M') if postcard and postcard.send_time else '' }}">
<input type="date" name="send_time" value="{{ postcard.send_time.strftime('%Y-%m-%d') if postcard and postcard.send_time else '' }}">
<label>到达时间</label>
<input type="datetime-local" name="arrival_time" value="{{ postcard.arrival_time.strftime('%Y-%m-%dT%H:%M') if postcard and postcard.arrival_time else '' }}">
<input type="date" name="arrival_time" value="{{ postcard.arrival_time.strftime('%Y-%m-%d') if postcard and postcard.arrival_time else '' }}">
</div>
<div id="fields-received" style="display:none">
<label>发件人</label>
<input type="text" name="sender_name" value="{{ postcard.sender_name if postcard else '' }}">
<label>收到时间</label>
<input type="datetime-local" name="receive_time" value="{{ postcard.receive_time.strftime('%Y-%m-%dT%H:%M') if postcard and postcard.receive_time else '' }}">
<input type="date" name="receive_time" value="{{ postcard.receive_time.strftime('%Y-%m-%d') if postcard and postcard.receive_time else '' }}">
</div>
<div class="form-actions">