fix(ui): shrink badges, card_number format XX-1234567, date-only fields
This commit is contained in:
@@ -198,6 +198,9 @@ def postcard_create(
|
||||
return None
|
||||
try:
|
||||
return datetime.fromisoformat(s)
|
||||
except ValueError:
|
||||
try:
|
||||
return datetime.strptime(s, "%Y-%m-%d")
|
||||
except ValueError:
|
||||
return None
|
||||
|
||||
@@ -273,6 +276,9 @@ def postcard_update(
|
||||
return None
|
||||
try:
|
||||
return datetime.fromisoformat(s)
|
||||
except ValueError:
|
||||
try:
|
||||
return datetime.strptime(s, "%Y-%m-%d")
|
||||
except ValueError:
|
||||
return None
|
||||
|
||||
|
||||
@@ -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); }
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user