diff --git a/entry/src/main/ets/components/FbTaskPanel.ets b/entry/src/main/ets/components/FbTaskPanel.ets index 63765e0..91898d3 100644 --- a/entry/src/main/ets/components/FbTaskPanel.ets +++ b/entry/src/main/ets/components/FbTaskPanel.ets @@ -1472,16 +1472,31 @@ export struct FbTaskPanel { .backgroundColor(FbColors.inputBg) .borderRadius(FbMetric.radiusS) } else { + /* 🔴 #84(用户 2026-11-05): + 「分类弹出来的框太窄了,应该和输入框一样宽。」 + 「颜色也不对。它的颜色应该是主题色:里面的文字颜色是主题色, + 背景色是比主题色浅一点的那个主题色。」 + + · `width('100%')` 管的是**控件本身**;弹出来的下拉菜单 + 还有自己的宽度(`optionWidth`),不给就按内容撑 ⇒ 很窄。 + 用 `optionWidth(OptionWidthMode.FIT_TRIGGER)` 让它跟触发器同宽。 + · 文字 `this.accent`、底色 `fbAlpha(this.accent, 0.10)` + —— 与面板里「+ 添加附件」那颗胶囊同一套(主题色 + 淡底), + 这样"可操作"的控件在全面板观感一致。 */ Select(this.catOptions()) .selected(this.catIndex()) .value(this.categoryOf() !== '' ? this.categoryOf() : '未分类') - .font({ size: FbMetric.fontSmall }) - .fontColor(FbColors.ink) - .selectedOptionFont({ size: FbMetric.fontSmall }) + .font({ size: FbMetric.fontSmall, weight: FontWeight.Medium }) + .fontColor(this.accent) + .selectedOptionFont({ size: FbMetric.fontSmall, weight: FontWeight.Medium }) + .selectedOptionFontColor(this.accent) .optionFont({ size: FbMetric.fontSmall }) + .optionFontColor(FbColors.ink) + .optionWidth(OptionWidthMode.FIT_TRIGGER) .width('100%') .height(40) - .backgroundColor(FbColors.inputBg) + .padding({ left: 4, right: 4 }) + .backgroundColor(fbAlpha(this.accent, 0.10)) .borderRadius(FbMetric.radiusS) .onSelect((idx: number): void => { /* index 0 = 「未分类」→ category_id 传 0 */ @@ -1507,16 +1522,21 @@ export struct FbTaskPanel { .backgroundColor(FbColors.inputBg) .borderRadius(FbMetric.radiusS) } else { + /* #84:与分类同一套(主题色文字 + 淡主题底色 + 菜单同宽) */ Select(this.repeatOptions()) .selected(this.repeatIndex()) .value(this.repeatOf() !== '' ? this.repeatWordOf(this.repeatOf()) : '不循环') - .font({ size: FbMetric.fontSmall }) - .fontColor(FbColors.ink) - .selectedOptionFont({ size: FbMetric.fontSmall }) + .font({ size: FbMetric.fontSmall, weight: FontWeight.Medium }) + .fontColor(this.accent) + .selectedOptionFont({ size: FbMetric.fontSmall, weight: FontWeight.Medium }) + .selectedOptionFontColor(this.accent) .optionFont({ size: FbMetric.fontSmall }) + .optionFontColor(FbColors.ink) + .optionWidth(OptionWidthMode.FIT_TRIGGER) .width('100%') .height(40) - .backgroundColor(FbColors.inputBg) + .padding({ left: 4, right: 4 }) + .backgroundColor(fbAlpha(this.accent, 0.10)) .borderRadius(FbMetric.radiusS) .onSelect((idx: number): void => { const rk: string = idx === 0 ? '' : FbTaskPanel.REPEAT_KEYS[idx - 1]; diff --git a/entry/src/main/ets/pages/home/FbHomePage.ets b/entry/src/main/ets/pages/home/FbHomePage.ets index c2691b5..52abdad 100644 --- a/entry/src/main/ets/pages/home/FbHomePage.ets +++ b/entry/src/main/ets/pages/home/FbHomePage.ets @@ -835,7 +835,19 @@ export struct FbHomePage { /** 拉全部看板 + 分类(面板的"挪分组"、表单的"分类"都要用) */ private async loadTaskMeta(): Promise { - if (this.tskBoards.length > 0) { + /* 🔴 #84(用户 2026-11-05):「鸿蒙端的分类那个地方没带进来。 + 明明是有分类的,但是它却显示的是未分类。」 + + **就是这个提前返回**:只看 `tskBoards` 有没有值。 + 而这个方法一旦先跑过一次、看板填上了,以后再进来就直接返回 —— + `tskCats`(分类)**永远停在上一次的赋值上**;如果第一次调用时 + `m.cats` 恰好是空(或被 #83 之前的版本错过了),就永远补不上。 + + ⇒ 改成"两样都有值才跳过"。任何一个为空就再拉一次 + (接口很轻:`?view=boards` 不带任务列表)。 + ⚠️ 不能只判 `tskCats.length`:新家庭可能真的一条分类都没建, + 那样每次都重拉。两条一起判才是"数据齐了"。 */ + if (this.tskBoards.length > 0 && this.tskCats.length > 0) { return; } await loadPath('tasks_meta', '/api/v1/tasks?view=boards', parseTaskMeta,