diff --git a/app/assets/weChatGroup.jpg b/app/assets/weChatGroup.jpg
index 7f9ac1b..1de05b0 100644
Binary files a/app/assets/weChatGroup.jpg and b/app/assets/weChatGroup.jpg differ
diff --git a/app/components/MobileFundTable.jsx b/app/components/MobileFundTable.jsx
index 63284b8..2e650c9 100644
--- a/app/components/MobileFundTable.jsx
+++ b/app/components/MobileFundTable.jsx
@@ -310,6 +310,7 @@ export default function MobileFundTable({
const original = info.row.original || {};
const code = original.code;
const isUpdated = original.isUpdated;
+ const hasDca = original.hasDca;
const hasHoldingAmount = original.holdingAmountValue != null;
const holdingAmountDisplay = hasHoldingAmount ? (original.holdingAmount ?? '—') : null;
const isFavorites = favorites?.has?.(code);
@@ -365,6 +366,7 @@ export default function MobileFundTable({
}}
>
{holdingAmountDisplay}
+ {hasDca && 定}
{isUpdated && ✓}
) : code ? (
@@ -386,6 +388,7 @@ export default function MobileFundTable({
}}
>
#{code}
+ {hasDca && 定}
{isUpdated && ✓}
) : null}
diff --git a/app/components/PcFundTable.jsx b/app/components/PcFundTable.jsx
index f966124..5748199 100644
--- a/app/components/PcFundTable.jsx
+++ b/app/components/PcFundTable.jsx
@@ -348,6 +348,7 @@ export default function PcFundTable({
const original = info.row.original || {};
const code = original.code;
const isUpdated = original.isUpdated;
+ const hasDca = original.hasDca;
const isFavorites = favorites?.has?.(code);
const isGroupTab = currentTab && currentTab !== 'all' && currentTab !== 'fav';
const rowContext = useContext(SortableRowContext);
@@ -399,6 +400,7 @@ export default function PcFundTable({
{code ?
#{code}
+ {hasDca && 定}
{isUpdated && ✓}
: null}
diff --git a/app/globals.css b/app/globals.css
index b113b7e..f788085 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -1412,6 +1412,28 @@ input[type="number"] {
transform: translateY(-1px);
}
+.dca-indicator {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-width: 16px;
+ height: 16px;
+ padding: 0 4px;
+ border-radius: 999px;
+ background: rgba(34, 211, 238, 0.15);
+ color: #22d3ee;
+ font-size: 10px;
+ font-weight: 500;
+ margin-left: 6px;
+ vertical-align: middle;
+ transform: translateY(-1px);
+}
+
+[data-theme="light"] .dca-indicator {
+ background: rgba(6, 182, 212, 0.15);
+ color: #0891b2;
+}
+
.code-text {
font-size: 11px;
}
diff --git a/app/page.jsx b/app/page.jsx
index d397bdf..22380d9 100644
--- a/app/page.jsx
+++ b/app/page.jsx
@@ -799,6 +799,7 @@ export default function HomePage() {
code: f.code,
fundName: f.name,
isUpdated: f.jzrq === todayStr,
+ hasDca: dcaPlans[f.code]?.enabled === true,
latestNav,
estimateNav,
yesterdayChangePercent,
@@ -818,7 +819,7 @@ export default function HomePage() {
holdingProfitValue,
};
}),
- [displayFunds, holdings, isTradingDay, todayStr, getHoldingProfit],
+ [displayFunds, holdings, isTradingDay, todayStr, getHoldingProfit, dcaPlans],
);
// 自动滚动选中 Tab 到可视区域
@@ -4160,6 +4161,7 @@ export default function HomePage() {
#{f.code}
+ {dcaPlans[f.code]?.enabled === true && 定}
{f.jzrq === todayStr && ✓}