From 4a198101f1f978571be5711fbe56ffe6fb2b60b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Mon, 11 May 2026 14:42:22 +0800 Subject: [PATCH] dev --- frontendNew/MIGRATION_PLAN.md | 60 ++ .../src/pages/Dcalc/Character/Forge/index.vue | 729 +++++++++++++++++- .../src/pages/Dcalc/Character/Index.vue | 38 +- .../pages/Dcalc/Character/Result/Index.vue | 208 +++++ .../Dcalc/Character/Skill/img/awake_50.png | Bin 0 -> 3299 bytes .../Dcalc/Character/Skill/img/awake_85.png | Bin 0 -> 3372 bytes .../pages/Dcalc/Character/Skill/img/skill.png | Bin 0 -> 545 bytes .../Dcalc/Character/Skill/img/skillActive.png | Bin 0 -> 1391 bytes .../pages/Dcalc/Character/Skill/img/up_1.png | Bin 0 -> 1001 bytes .../pages/Dcalc/Character/Skill/img/up_2.png | Bin 0 -> 1029 bytes .../pages/Dcalc/Character/Skill/img/vp_1.png | Bin 0 -> 736 bytes .../pages/Dcalc/Character/Skill/img/vp_2.png | Bin 0 -> 681 bytes .../src/pages/Dcalc/Character/Skill/index.vue | 705 ++++++++++++++++- frontendNew/src/stores/config.ts | 27 +- 14 files changed, 1687 insertions(+), 80 deletions(-) create mode 100644 frontendNew/MIGRATION_PLAN.md create mode 100644 frontendNew/src/pages/Dcalc/Character/Result/Index.vue create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/awake_50.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/awake_85.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/skill.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/skillActive.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/up_1.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/up_2.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/vp_1.png create mode 100644 frontendNew/src/pages/Dcalc/Character/Skill/img/vp_2.png diff --git a/frontendNew/MIGRATION_PLAN.md b/frontendNew/MIGRATION_PLAN.md new file mode 100644 index 00000000..cdff3bed --- /dev/null +++ b/frontendNew/MIGRATION_PLAN.md @@ -0,0 +1,60 @@ +# frontend -> frontendNew 迁移计划(执行中) + +## 目标 + +- 以 frontendNew 为主线承接 dcalc 核心能力。 +- 已完成的 equipment 作为基线,不重做主体,仅做一致性优化。 +- 当前优先迁移 Skill、Forge、Result,策略为“核心功能优先,视觉后置”。 +- 迁移期间保持 frontend 与 frontendNew 双端并行可用。 + +## 当前状态 + +- 已完成:`Character/EquipmentDictionary` 主体迁移并接入路由。 +- 进行中:`Character/Skill`、`Character/Forge` 从占位页向可编辑页迁移。 +- 新启动:`Character/Result` 结果面板接入与自动计算链路。 + +## 分阶段计划 + +### Phase 1 - 共享链路打通 + +1. 统一 Character 页角色加载、配置变更监听、结果自动计算触发。 +2. 将结果面板并入 Character 页面,形成“配置 + 结果”并行布局。 +3. 统一配置持久化触发点,保障刷新后状态可恢复。 + +### Phase 2 - Skill MVP + +1. 完成技能列表、搜索、基础 VP/UP 配置回写。 +2. 先确保写入 `configStore.config.skills`,后补复杂交互约束。 +3. 目标:可参与结果计算。 + +### Phase 3 - Forge MVP + +1. 子模块优先级:Equipments > Avatars > Oaths > Emblems/Jades/Sundry。 +2. 每个子模块完成即验证配置回写和计算结果联动。 +3. 目标:关键打造项可编辑并进入计算。 + +### Phase 4 - Result MVP + +1. 展示基础属性、套装/誓约信息、技能伤害列表。 +2. 支持伤害排序和基准设定/清空。 +3. 第二轮补技能次数编辑、Buffer 细分、高级对比。 + +### Phase 5 - 一致性优化与回归 + +1. 统一加载态/空态/错误态文案。 +2. 双端同角色同配置结果比对,输出差异清单。 +3. 阻塞级问题清零后进入主用切换。 + +## 验收标准 + +1. 路由可用:`/dcalc/character/:alter/equipment|skill|forge`。 +2. 数据可用:Skill 与 Forge 配置改动能触发结果刷新。 +3. 结果可用:Result 面板稳定展示基础属性与技能伤害。 +4. 持久化可用:刷新后配置不丢失。 +5. 双端可比对:关键字段(伤害、套装、核心属性)一致。 + +## 本次提交范围(已执行) + +1. 新增本计划文档。 +2. 新增 Result MVP 组件并接入 Character 页面。 +3. 在 Character 页面接入配置变更自动计算与离开页面自动保存。 diff --git a/frontendNew/src/pages/Dcalc/Character/Forge/index.vue b/frontendNew/src/pages/Dcalc/Character/Forge/index.vue index d8908fe5..5304d24a 100644 --- a/frontendNew/src/pages/Dcalc/Character/Forge/index.vue +++ b/frontendNew/src/pages/Dcalc/Character/Forge/index.vue @@ -1,13 +1,55 @@ diff --git a/frontendNew/src/pages/Dcalc/Character/Index.vue b/frontendNew/src/pages/Dcalc/Character/Index.vue index 4c92d007..41bc8f4f 100644 --- a/frontendNew/src/pages/Dcalc/Character/Index.vue +++ b/frontendNew/src/pages/Dcalc/Character/Index.vue @@ -1,5 +1,5 @@ diff --git a/frontendNew/src/pages/Dcalc/Character/Result/Index.vue b/frontendNew/src/pages/Dcalc/Character/Result/Index.vue new file mode 100644 index 00000000..ffac9cf5 --- /dev/null +++ b/frontendNew/src/pages/Dcalc/Character/Result/Index.vue @@ -0,0 +1,208 @@ + + + diff --git a/frontendNew/src/pages/Dcalc/Character/Skill/img/awake_50.png b/frontendNew/src/pages/Dcalc/Character/Skill/img/awake_50.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb5df99300e29033603f9150f1d30ea74db7d18 GIT binary patch literal 3299 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 literal 0 HcmV?d00001 diff --git a/frontendNew/src/pages/Dcalc/Character/Skill/img/up_1.png b/frontendNew/src/pages/Dcalc/Character/Skill/img/up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee582616fc0c8068b12dda34acc02d35dcb59b0 GIT binary patch literal 1001 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 P00000NkvXXu0mjftB*1{ literal 0 HcmV?d00001 diff --git a/frontendNew/src/pages/Dcalc/Character/Skill/index.vue b/frontendNew/src/pages/Dcalc/Character/Skill/index.vue index c2e31f59..f2da1dbd 100644 --- a/frontendNew/src/pages/Dcalc/Character/Skill/index.vue +++ b/frontendNew/src/pages/Dcalc/Character/Skill/index.vue @@ -1,54 +1,685 @@ + + diff --git a/frontendNew/src/stores/config.ts b/frontendNew/src/stores/config.ts index d2df4eb9..45ef2f4d 100644 --- a/frontendNew/src/stores/config.ts +++ b/frontendNew/src/stores/config.ts @@ -16,8 +16,6 @@ import type { IResultSkillCount } from "@/api/calc/type"; // | '魔法石' // | '武器', - - export interface IConfigEquip { id: string; reinforce: number; @@ -76,6 +74,13 @@ export interface IConfig { emblems: Record; } +export interface IChangeSourceLog { + id: number; + source: string; + detail: string; + time: string; +} + const defaultEqusConfig = { id: "", reinforce: 0, @@ -127,6 +132,7 @@ export const useConfigStore = defineStore("configStore", () => { }); const skillCountConfig = ref([]); + const changeSourceLogs = ref([]); const loadConfig = () => { const infoStore = useInfoStore(); @@ -263,6 +269,20 @@ export const useConfigStore = defineStore("configStore", () => { } }; + const pushChangeSource = (source: string, detail: string) => { + const next: IChangeSourceLog = { + id: Date.now() + Math.floor(Math.random() * 1000), + source, + detail, + time: new Date().toLocaleTimeString("zh-CN", { hour12: false }), + }; + changeSourceLogs.value = [next, ...changeSourceLogs.value].slice(0, 30); + }; + + const clearChangeSource = () => { + changeSourceLogs.value = []; + }; + const result = useAsyncState( () => { return calc(); @@ -289,5 +309,8 @@ export const useConfigStore = defineStore("configStore", () => { defaultAvatarConfig, defaultOathConfig, defaultEmblemConfig, + changeSourceLogs, + pushChangeSource, + clearChangeSource, }; });