-
-
+
+
+
+
价格标签 (可选)
+
+ {#each defaultLabels as l}
+
+ {/each}
+
+
+ {#each addedPriceGroups as pg, i}
+
+
+ {pg.label}
+
+
+ pg.price = Number((e.target as HTMLInputElement).value)}
+ autocomplete="off"
+ />
+
+ {/each}
+
+
+
+ {#if customLabelError}
+
{customLabelError}
+ {/if}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/components/layout/BottomBar.svelte b/src/lib/components/layout/BottomBar.svelte
index aa6bb32..faa8cf1 100644
--- a/src/lib/components/layout/BottomBar.svelte
+++ b/src/lib/components/layout/BottomBar.svelte
@@ -3,7 +3,7 @@
import { Home, Plus, Search, Settings, Minus } from 'lucide-svelte';
import { page } from '$app/stores';
import { get } from 'svelte/store';
- import { addReviewCardStore } from '@/lib/stores/ReviewCardStore';
+ import { addStockStore } from '$lib/stores/StockStore';
// 路由配置
const navs = [
@@ -36,7 +36,7 @@
size="icon"
class="rounded-full w-16 h-16 shadow-2xl border-4 border-background bg-gradient-to-br from-primary via-primary to-primary/90 flex items-center justify-center transition-all duration-300 hover:scale-110 hover:shadow-[0_20px_40px_rgba(0,0,0,0.3)] active:scale-95 focus-visible:ring-4 focus-visible:ring-primary/20 absolute left-1/2 -translate-x-1/2 -top-6 z-10"
aria-label="添加"
- onclick={() => addReviewCardStore.set(true)}
+ onclick={() => addStockStore.set(true)}
>
diff --git a/src/lib/stores/ReviewCardStore.ts b/src/lib/stores/ReviewCardStore.ts
deleted file mode 100644
index b6eab01..0000000
--- a/src/lib/stores/ReviewCardStore.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { writable } from 'svelte/store';
-import type { ReviewCard } from '../types/review';
-
-// 控制添加卡片弹窗
-export const addReviewCardStore = writable(false);
-
-// 复盘卡片列表 store
-function createReviewCardStore() {
- const { subscribe, set, update } = writable
([]);
-
- return {
- subscribe,
- set,
- reset: () => set([]),
- add: (card: Omit) =>
- update(cards => [
- ...cards,
- {
- ...card,
- id: crypto.randomUUID(),
- starred: false,
- createdAt: new Date(),
- updatedAt: new Date()
- }
- ]),
- remove: (id: string) => update(cards => cards.filter(card => card.id !== id)),
- toggleStar: (id: string) => update(cards => cards.map(card => card.id === id ? { ...card, starred: !card.starred } : card)),
- updateCard: (id: string, data: Partial>) =>
- update(cards => cards.map(card => card.id === id ? { ...card, ...data, updatedAt: new Date() } : card))
- };
-}
-
-export const reviewCardStore = createReviewCardStore();
\ No newline at end of file
diff --git a/src/lib/stores/StockStore.ts b/src/lib/stores/StockStore.ts
new file mode 100644
index 0000000..50e273d
--- /dev/null
+++ b/src/lib/stores/StockStore.ts
@@ -0,0 +1,16 @@
+import { writable } from 'svelte/store';
+import type { StockInfo } from '$lib/types/review';
+
+function createStockStore() {
+ const { subscribe, set, update } = writable([]);
+ return {
+ subscribe,
+ set,
+ reset: () => set([]),
+ add: (stock: StockInfo) => update(list => [...list, stock]),
+ remove: (idx: number) => update(list => list.filter((_, i) => i !== idx)),
+ };
+}
+
+export const stockStore = createStockStore();
+export const addStockStore = writable(false);
\ No newline at end of file
diff --git a/src/lib/types/review.ts b/src/lib/types/review.ts
index 944d329..39502d7 100644
--- a/src/lib/types/review.ts
+++ b/src/lib/types/review.ts
@@ -1,32 +1,13 @@
-// 复盘卡片标签类型
-export const REVIEW_TAGS = ['情绪', '策略', '失误', '复盘'] as const;
-export type ReviewTag = typeof REVIEW_TAGS[number];
+// 股票信息类型和自定义价格标签类型
-// 价格组类型
-export const PRICE_LABELS = ['买入价', '止损价', '目标价', '卖出价'] as const;
-export type PriceLabel = typeof PRICE_LABELS[number];
-
-type PriceGroup = {
- price: number;
- label: PriceLabel;
+export type CustomPriceGroup = {
+ label: string; // 价格标签名
+ price: number; // 价格
};
-// 股票信息类型
export interface StockInfo {
- name: string;
- code: string;
- amount: number;
- priceGroups: PriceGroup[];
-}
-
-// 复盘卡片类型
-export interface ReviewCard {
- id: string;
- title: string;
- content: string;
- tags: ReviewTag[];
- stock: StockInfo;
- starred: boolean;
- createdAt: Date;
- updatedAt: Date;
+ name: string; // 股票名称
+ code: string; // 股票代码
+ tags: string[]; // 股票标签
+ priceGroups: CustomPriceGroup[]; // 价格标签+价格数组
}
diff --git a/src/routes/list/+page.svelte b/src/routes/list/+page.svelte
index 38ccc8c..b0f2324 100644
--- a/src/routes/list/+page.svelte
+++ b/src/routes/list/+page.svelte
@@ -1,91 +1,40 @@
-
-
瀑布流列表演示
+
股票列表
+
- {#each $reviewCardStore as card (card.id)}
+ {#each $stockStore as stock, idx (stock.name + stock.code)}
-
{card.title}
+
{stock.name}({stock.code})
+
+ {#each stock.priceGroups as group}
+
+ {group.label}
+ ¥{group.price}
+
+ {/each}
+
+
{/each}
- addReviewCardStore.set(false)} />
-
+ addStockStore.set(false)} />
\ No newline at end of file
+
+
\ No newline at end of file