From 2a713c73c4882cd19a86a679758311b415d22610 Mon Sep 17 00:00:00 2001 From: bboysoul Date: Fri, 25 Sep 2026 12:05:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B2=B9=E4=BB=B7=E5=8F=AA=E5=B1=95?= =?UTF-8?q?=E7=A4=BA92=E5=8F=B7=E3=80=81=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E5=80=92=E6=95=B0=E6=97=A5=E6=94=B9=E4=B8=A4=E5=88=97=E7=BD=91?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 油价格主行只保留 92# 价格,副行只留生效日期(95/98 下线) - 移动端倒数日从两端对齐改为 50%/50% 两列:标题左、天数右, 竖线与上方天气/金价、油价/股市列分界 167px 贯通,消除孤立单行突兀感 - 遵守窄屏环境条不截断规则(无 ellipsis),12 字标题上限内不溢出 - 组件测试 3 处油价断言同步 --- frontend/src/components/TodayEnvironmentStrip.test.ts | 6 +++--- frontend/src/components/TodayEnvironmentStrip.vue | 5 +---- frontend/src/style.css | 4 +++- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/TodayEnvironmentStrip.test.ts b/frontend/src/components/TodayEnvironmentStrip.test.ts index 4573158..1f13e8d 100644 --- a/frontend/src/components/TodayEnvironmentStrip.test.ts +++ b/frontend/src/components/TodayEnvironmentStrip.test.ts @@ -195,8 +195,8 @@ describe('TodayEnvironmentStrip', () => { } }) const oil = host.querySelector('.today-environment__oil')! expect(oil.classList.contains('is-fresh')).toBe(true) - expect(oil.querySelector('strong')?.textContent).toBe('92# 8.58 · 95# 9.12') - expect(oil.querySelector('small')?.textContent).toBe('98# 11.12 · 09-24生效') + expect(oil.querySelector('strong')?.textContent).toBe('92# 8.58') + expect(oil.querySelector('small')?.textContent).toBe('09-24生效') const ashare = host.querySelector('.today-environment__ashare')! expect(ashare.querySelector('strong')?.textContent).toBe('上证 3888.37') expect(ashare.querySelector('small')?.textContent).toBe('-1.22% · 09-24') @@ -213,7 +213,7 @@ describe('TodayEnvironmentStrip', () => { expect(host.querySelector('.today-environment__ashare small')?.textContent).toBe('+0.35% · 09-25') const oil = host.querySelector('.today-environment__oil')! expect(oil.classList.contains('is-stale')).toBe(true) - expect(oil.querySelector('small')?.textContent).toBe('98# 11.12 · 09-24生效 · 缓存') + expect(oil.querySelector('small')?.textContent).toBe('09-24生效 · 缓存') }) it('renders unavailable oil and index sources as two-line placeholders', async () => { diff --git a/frontend/src/components/TodayEnvironmentStrip.vue b/frontend/src/components/TodayEnvironmentStrip.vue index bc97969..10c2a95 100644 --- a/frontend/src/components/TodayEnvironmentStrip.vue +++ b/frontend/src/components/TodayEnvironmentStrip.vue @@ -169,18 +169,15 @@ const oilPrimary = computed(() => { const oil = props.environment?.oil if (!oil) return null const gas92 = priceText(oil.gas_92) - const gas95 = priceText(oil.gas_95) - return joinSegments([gas92 && `92# ${gas92}`, gas95 && `95# ${gas95}`]) || null + return gas92 ? `92# ${gas92}` : null }) const oilMeta = computed(() => { const oil = props.environment?.oil if (!oil || oilStatus.value === 'unavailable') return '' - const gas98 = priceText(oil.gas_98) const effective = typeof oil.effective_at === 'string' ? oil.effective_at.match(/^\d{4}-(\d{2}-\d{2})/)?.[1] ?? null : null return joinSegments([ - gas98 && `98# ${gas98}`, effective && `${effective}生效`, oilStatus.value === 'stale' ? '缓存' : null, ]) diff --git a/frontend/src/style.css b/frontend/src/style.css index 8952e56..d655fa8 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -193,7 +193,9 @@ main.today-main .topbar{margin-bottom:var(--space-12)} .today-main .task-tail{padding-left:var(--space-12);font-size:12px}.today-main .habit-row{gap:0;row-gap:5px}.today-main .habit-main{min-width:0;padding:0} .shell.today-active .unified-fab{box-shadow:0 8px 18px rgba(174,65,29,.22)}.shell.today-active .unified-fab>svg{width:30px;height:30px;stroke-width:1.5} @media(max-width:930px){main.today-main{padding-left:max(44px,calc((100% - 630px)/2));padding-right:max(44px,calc((100% - 630px)/2))}} -@media(max-width:720.98px){main.today-main{padding-left:var(--space-28)!important;padding-right:var(--space-28)!important;padding-bottom:calc(78px + var(--safe-area-bottom))}.today-environment{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:21px auto;align-items:stretch;column-gap:0;row-gap:7px;padding-bottom:var(--space-10)}.today-environment__calendar{grid-column:1/-1;grid-row:1;height:21px!important;padding:0;justify-content:space-between;align-items:start;border-left:0}.today-environment__weather,.today-environment__gold{grid-row:2;height:clamp(38px,calc(25vw - 55.75px),42px);padding-top:var(--space-6);border-top:1px solid var(--border-hairline)}.today-environment__weather{grid-column:1;padding-left:0;padding-right:var(--space-10);border-left:0}.today-environment__gold{grid-column:2;padding-left:var(--space-12)}.today-environment__weather strong,.today-environment__gold strong,.today-environment__gold-primary{line-height:16px;font-size:13px}.today-environment__calendar strong{font-size:15px}.today-environment__oil,.today-environment__ashare{grid-row:3;height:clamp(38px,calc(25vw - 55.75px),42px);padding-top:var(--space-6);padding-bottom:0;border-top:1px solid var(--border-hairline)}.today-environment__oil{grid-column:1;padding-left:0;padding-right:var(--space-10);border-left:0!important}.today-environment__ashare{grid-column:2;padding-left:var(--space-12)}.today-environment__countdown{grid-column:1/-1;grid-row:4;height:21px;padding:0;flex-direction:row;align-items:baseline;justify-content:space-between;gap:10px;border-top:1px solid var(--border-hairline)}.today-environment__countdown strong,.today-environment__oil strong,.today-environment__ashare strong{line-height:16px;font-size:13px}.today-environment__item small{line-height:13px}.today-heading{margin-top:var(--space-16)}.today-page-title{font-size:24px}.today-heading .today-remaining{margin-top:var(--space-4)}.today-main .task-row,.today-main .habit-row{height:58px;min-height:58px;max-height:58px}.today-context .completed-filter-pill{width:87px;height:44px;min-height:44px}.today-context .completed-filter-pill__track{width:30px;height:18px}.today-context .completed-filter-pill__thumb{width:14px;height:14px}.today-context .completed-filter-pill[aria-checked="true"] .completed-filter-pill__thumb{transform:translateX(12px)}} +@media(max-width:720.98px){main.today-main{padding-left:var(--space-28)!important;padding-right:var(--space-28)!important;padding-bottom:calc(78px + var(--safe-area-bottom))}.today-environment{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:21px auto;align-items:stretch;column-gap:0;row-gap:7px;padding-bottom:var(--space-10)}.today-environment__calendar{grid-column:1/-1;grid-row:1;height:21px!important;padding:0;justify-content:space-between;align-items:start;border-left:0}.today-environment__weather,.today-environment__gold{grid-row:2;height:clamp(38px,calc(25vw - 55.75px),42px);padding-top:var(--space-6);border-top:1px solid var(--border-hairline)}.today-environment__weather{grid-column:1;padding-left:0;padding-right:var(--space-10);border-left:0}.today-environment__gold{grid-column:2;padding-left:var(--space-12)}.today-environment__weather strong,.today-environment__gold strong,.today-environment__gold-primary{line-height:16px;font-size:13px}.today-environment__calendar strong{font-size:15px}.today-environment__oil,.today-environment__ashare{grid-row:3;height:clamp(38px,calc(25vw - 55.75px),42px);padding-top:var(--space-6);padding-bottom:0;border-top:1px solid var(--border-hairline)}.today-environment__oil{grid-column:1;padding-left:0;padding-right:var(--space-10);border-left:0!important}.today-environment__ashare{grid-column:2;padding-left:var(--space-12)}.today-environment__countdown{grid-column:1/-1;grid-row:4;height:21px;padding:0;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:0;border-top:1px solid var(--border-hairline)} +.today-environment__countdown strong{width:50%;box-sizing:border-box;display:flex;align-items:center;padding-left:var(--space-18);white-space:nowrap;font-size:13px} +.today-environment__countdown small{width:50%;box-sizing:border-box;display:flex;align-items:center;padding-left:var(--space-18);border-left:1px solid var(--border-hairline);white-space:nowrap;font-size:13px;font-weight:600;color:var(--text-primary)}.today-environment__countdown strong,.today-environment__oil strong,.today-environment__ashare strong{line-height:16px;font-size:13px}.today-environment__item small{line-height:13px}.today-heading{margin-top:var(--space-16)}.today-page-title{font-size:24px}.today-heading .today-remaining{margin-top:var(--space-4)}.today-main .task-row,.today-main .habit-row{height:58px;min-height:58px;max-height:58px}.today-context .completed-filter-pill{width:87px;height:44px;min-height:44px}.today-context .completed-filter-pill__track{width:30px;height:18px}.today-context .completed-filter-pill__thumb{width:14px;height:14px}.today-context .completed-filter-pill[aria-checked="true"] .completed-filter-pill__thumb{transform:translateX(12px)}} @media(max-width:380px){.today-environment__weather,.today-environment__gold,.today-environment__oil,.today-environment__ashare{height:40px;padding-top:var(--space-4);padding-bottom:var(--space-4)}} /* Approved Settings 01: continuous paper ledger. */