feat(albums): date-only pickers for start/end (create & edit, admin + app)
- 管理后台:DatePicker type=datetime → date;提交归一(开始=当天 00:00、 结束=当天 23:59 整天活动语义;契约仍 datetime 仅交互粒度) - App:去掉时间选择步骤(选日期即定;同上归一);表单显示只显 yyyy/M/d - e2e 日期填入改 '2026-10-01'(date 格式);widget 断言日期粒度 - admin 87/87 + build、app 397/397 全绿 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -58,18 +58,20 @@
|
||||
<!-- ElDatePicker 的透传 attr 被 ElTooltip 吞掉,data-test 挂不到 DOM:
|
||||
外层普通 div 承载选择器,测试经 div 内 input 定位 -->
|
||||
<div data-test="album-form-start-at">
|
||||
<!-- UI06:只选日期(开始=当天 00:00;契约仍 datetime) -->
|
||||
<ElDatePicker
|
||||
v-model="form.startAt"
|
||||
type="datetime"
|
||||
type="date"
|
||||
:placeholder="t('albumsManage.form.fieldStartAt')"
|
||||
/>
|
||||
</div>
|
||||
</ElFormItem>
|
||||
<ElFormItem :label="t('albumsManage.form.fieldEndAt')" :error="fieldErrors.endAt">
|
||||
<div data-test="album-form-end-at">
|
||||
<!-- UI06:只选日期(结束=当天 23:59 全天结束语义) -->
|
||||
<ElDatePicker
|
||||
v-model="form.endAt"
|
||||
type="datetime"
|
||||
type="date"
|
||||
clearable
|
||||
:placeholder="t('albumsManage.form.fieldEndAt')"
|
||||
/>
|
||||
@@ -332,14 +334,34 @@
|
||||
drafts['zh-CN'],
|
||||
drafts.en
|
||||
]) as Api.Album.Translation[]
|
||||
const endAt = form.endAt ? form.endAt.toISOString() : null
|
||||
// UI06 纯日期选择:开始=当天 00:00、结束=当天 23:59(整天活动语义)。
|
||||
const startAtDate = form.startAt!
|
||||
const startAt = new Date(
|
||||
startAtDate.getFullYear(),
|
||||
startAtDate.getMonth(),
|
||||
startAtDate.getDate(),
|
||||
0,
|
||||
0,
|
||||
0
|
||||
).toISOString()
|
||||
const endDate = form.endAt
|
||||
const endAt = endDate
|
||||
? new Date(
|
||||
endDate.getFullYear(),
|
||||
endDate.getMonth(),
|
||||
endDate.getDate(),
|
||||
23,
|
||||
59,
|
||||
59
|
||||
).toISOString()
|
||||
: null
|
||||
let saved: Api.Album.Detail
|
||||
if (albumId.value) {
|
||||
// 编辑:PATCH 全量可编辑字段(开关独立修改;translations 全量替换)
|
||||
saved = await fetchUpdateAlbum(albumId.value, {
|
||||
translations,
|
||||
defaultLocale: form.defaultLocale,
|
||||
startAt: form.startAt!.toISOString(),
|
||||
startAt,
|
||||
endAt,
|
||||
timezone: form.timezone.trim() || 'Asia/Shanghai',
|
||||
uploadEnabled: form.uploadEnabled,
|
||||
@@ -352,7 +374,7 @@
|
||||
saved = await fetchCreateAlbum({
|
||||
translations,
|
||||
defaultLocale: form.defaultLocale,
|
||||
startAt: form.startAt!.toISOString(),
|
||||
startAt,
|
||||
endAt,
|
||||
timezone: form.timezone.trim() || 'Asia/Shanghai',
|
||||
downloadEnabled: form.downloadEnabled,
|
||||
|
||||
Reference in New Issue
Block a user