diff --git a/manifest.json b/manifest.json
index 0a4ced6..f5e3bb8 100644
--- a/manifest.json
+++ b/manifest.json
@@ -50,7 +50,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "wxab7b7831c69af51a",
+ "appid" : "wx245f0f3ebcfcf5a7",
"setting" : {
"urlCheck" : false,
"es6" : false,
diff --git a/pages/detail/detail.vue b/pages/detail/detail.vue
index 7052445..a24f9dc 100644
--- a/pages/detail/detail.vue
+++ b/pages/detail/detail.vue
@@ -9,9 +9,9 @@
- 组合进度值 (NV)
+ 组合总额 (NV)
- 状态:记录中
+ 账本追踪中
diff --git a/pages/index/index.vue b/pages/index/index.vue
index c6531e3..8172ffc 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -7,7 +7,7 @@
- 总指标估值 (CNY)
+ 账本总额 (CNY)
@@ -23,11 +23,11 @@
- 日内波动
+ 今日账面变动
{{ assetData.todayProfit >= 0 ? '+' : '' }}¥{{ assetData.todayProfit.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
- 累计变化
+ 历史总变动
{{ assetData.totalReturnRate >= 0 ? '+' : '' }}{{ assetData.totalReturnRate }}%
@@ -38,7 +38,7 @@
- 新建逻辑模型
+ 新建组合
@@ -74,11 +74,11 @@
- 当前分值
+ 当前估值
¥ {{ holding.value.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
- 累计变化
+ 历史总变动
{{ holding.returnRate >= 0 ? '+' : '' }}{{ holding.returnRate }}%
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/config/config.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/config/config.js.map
index 2bd9355..b0ad11c 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/config/config.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/config/config.js.map
@@ -1 +1 @@
-{"version":3,"file":"config.js","sources":["pages/config/config.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY29uZmlnL2NvbmZpZy52dWU"],"sourcesContent":["\r\n \r\n\r\n \r\n \r\n\r\n \r\n 组合名称\r\n \r\n \r\n\r\n \r\n 选择策略模板\r\n \r\n \r\n \r\n \r\n {{ selectedStrategy.name }}\r\n \r\n 点击选择策略逻辑\r\n \r\n \r\n \r\n {{ selectedStrategy.desc }}\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n 标的名称/代码\r\n \r\n \r\n \r\n 买入均价\r\n \r\n \r\n \r\n 持有数量\r\n \r\n \r\n \r\n\r\n \r\n 建仓日期\r\n onDateChange(e, index)\">\r\n \r\n {{ item.date || '请选择日期' }}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/config/config.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","computed","uni"],"mappings":";;;;;;;;;;;;;AAoGA,UAAM,aAAa;AAAA,MACjB,EAAE,MAAM,aAAa,MAAM,wBAAwB,OAAO,UAAW;AAAA,MACrE,EAAE,MAAM,WAAW,MAAM,mBAAmB,OAAO,UAAW;AAAA,MAC9D,EAAE,MAAM,eAAe,MAAM,iBAAiB,OAAO,UAAW;AAAA,MAChE,EAAE,MAAM,QAAQ,MAAM,oBAAoB,OAAO,UAAW;AAAA,IAC9D;AAEA,UAAM,gBAAgBA,cAAAA,IAAI,EAAE;AAG5B,UAAM,OAAOA,cAAAA,IAAI;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,EAAE,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAI;AAAA;AAAA,MAC9C;AAAA,IACH,CAAC;AAGD,UAAM,mBAAmBC,cAAQ,SAAC,MAAM;AACtC,UAAI,cAAc,UAAU;AAAI,eAAO;AACvC,aAAO,WAAW,cAAc,KAAK;AAAA,IACvC,CAAC;AAGD,UAAM,kBAAkBA,cAAQ,SAAC,MAAM;AACrC,UAAI,QAAQ;AACZ,WAAK,MAAM,OAAO,QAAQ,WAAS;AACjC,cAAM,IAAI,WAAW,MAAM,KAAK,KAAK;AACrC,cAAM,IAAI,WAAW,MAAM,MAAM,KAAK;AACtC,iBAAS,IAAI;AAAA,MACjB,CAAG;AAED,aAAO,MAAM,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,EAAC,CAAE;AAAA,IAC7F,CAAC;AAID,UAAM,mBAAmB,CAAC,MAAM;AAC9B,oBAAc,QAAQ,EAAE,OAAO;AAAA,IACjC;AAEA,UAAM,eAAe,CAAC,GAAG,UAAU;AACjC,WAAK,MAAM,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO;AAAA,IAC3C;AAGA,UAAM,cAAc,MAAM;AACxB,WAAK,MAAM,OAAO,KAAK,EAAE,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAI,CAAA;AAAA,IACtE;AAGA,UAAM,iBAAiB,CAAC,UAAU;AAChC,WAAK,MAAM,OAAO,OAAO,OAAO,CAAC;AAAA,IACnC;AAGA,UAAM,aAAa,MAAM;AAEvB,UAAI,CAAC,KAAK,MAAM;AAAM,eAAOC,cAAG,MAAC,UAAU,EAAE,OAAO,WAAW,MAAM,OAAQ,CAAA;AAC7E,UAAI,cAAc,UAAU;AAAI,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAO,SAAS,MAAM,OAAQ,CAAA;AAErFA,oBAAAA,MAAA,MAAA,OAAA,kCAAY,UAAU;AAAA,QACpB,GAAG,KAAK;AAAA,QACR,UAAU,WAAW,cAAc,KAAK,EAAE;AAAA,MAC9C,CAAG;AAEDA,oBAAAA,MAAI,YAAY,EAAE,OAAO,SAAU,CAAA;AACnC,iBAAW,MAAM;AACfA,sBAAG,MAAC,YAAW;AACfA,sBAAAA,MAAI,UAAU,EAAE,OAAO,OAAQ,CAAA;AAC/B,mBAAW,MAAMA,cAAG,MAAC,aAAc,GAAE,IAAI;AAAA,MAC1C,GAAE,GAAI;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3KA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"config.js","sources":["pages/config/config.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY29uZmlnL2NvbmZpZy52dWU"],"sourcesContent":["\r\n \r\n\r\n \r\n \r\n\r\n \r\n 组合名称\r\n \r\n \r\n\r\n \r\n 选择逻辑模板\r\n \r\n \r\n \r\n \r\n {{ selectedStrategy.name }}\r\n \r\n 点击选择逻辑规则\r\n \r\n \r\n \r\n {{ selectedStrategy.desc }}\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n 单元名称/代码\r\n \r\n \r\n \r\n 买入均价\r\n \r\n \r\n \r\n 持有数量\r\n \r\n \r\n \r\n\r\n \r\n 建仓日期\r\n onDateChange(e, index)\">\r\n \r\n {{ item.date || '请选择日期' }}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/config/config.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","computed","uni"],"mappings":";;;;;;;;;;;;;AAoGA,UAAM,aAAa;AAAA,MACjB,EAAE,MAAM,aAAa,MAAM,wBAAwB,OAAO,UAAW;AAAA,MACrE,EAAE,MAAM,WAAW,MAAM,mBAAmB,OAAO,UAAW;AAAA,MAC9D,EAAE,MAAM,eAAe,MAAM,iBAAiB,OAAO,UAAW;AAAA,MAChE,EAAE,MAAM,QAAQ,MAAM,oBAAoB,OAAO,UAAW;AAAA,IAC9D;AAEA,UAAM,gBAAgBA,cAAAA,IAAI,EAAE;AAG5B,UAAM,OAAOA,cAAAA,IAAI;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,EAAE,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAI;AAAA;AAAA,MAC9C;AAAA,IACH,CAAC;AAGD,UAAM,mBAAmBC,cAAQ,SAAC,MAAM;AACtC,UAAI,cAAc,UAAU;AAAI,eAAO;AACvC,aAAO,WAAW,cAAc,KAAK;AAAA,IACvC,CAAC;AAGD,UAAM,kBAAkBA,cAAQ,SAAC,MAAM;AACrC,UAAI,QAAQ;AACZ,WAAK,MAAM,OAAO,QAAQ,WAAS;AACjC,cAAM,IAAI,WAAW,MAAM,KAAK,KAAK;AACrC,cAAM,IAAI,WAAW,MAAM,MAAM,KAAK;AACtC,iBAAS,IAAI;AAAA,MACjB,CAAG;AAED,aAAO,MAAM,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,EAAC,CAAE;AAAA,IAC7F,CAAC;AAID,UAAM,mBAAmB,CAAC,MAAM;AAC9B,oBAAc,QAAQ,EAAE,OAAO;AAAA,IACjC;AAEA,UAAM,eAAe,CAAC,GAAG,UAAU;AACjC,WAAK,MAAM,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO;AAAA,IAC3C;AAGA,UAAM,cAAc,MAAM;AACxB,WAAK,MAAM,OAAO,KAAK,EAAE,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAI,CAAA;AAAA,IACtE;AAGA,UAAM,iBAAiB,CAAC,UAAU;AAChC,WAAK,MAAM,OAAO,OAAO,OAAO,CAAC;AAAA,IACnC;AAGA,UAAM,aAAa,MAAM;AAEvB,UAAI,CAAC,KAAK,MAAM;AAAM,eAAOC,cAAG,MAAC,UAAU,EAAE,OAAO,WAAW,MAAM,OAAQ,CAAA;AAC7E,UAAI,cAAc,UAAU;AAAI,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAO,SAAS,MAAM,OAAQ,CAAA;AAErFA,oBAAAA,MAAA,MAAA,OAAA,kCAAY,UAAU;AAAA,QACpB,GAAG,KAAK;AAAA,QACR,UAAU,WAAW,cAAc,KAAK,EAAE;AAAA,MAC9C,CAAG;AAEDA,oBAAAA,MAAI,YAAY,EAAE,OAAO,SAAU,CAAA;AACnC,iBAAW,MAAM;AACfA,sBAAG,MAAC,YAAW;AACfA,sBAAAA,MAAI,UAAU,EAAE,OAAO,OAAQ,CAAA;AAC/B,mBAAW,MAAMA,cAAG,MAAC,aAAc,GAAE,IAAI;AAAA,MAC1C,GAAE,GAAI;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3KA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/detail.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/detail.js.map
index 9745f4c..68d3845 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/detail.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/detail.js.map
@@ -1 +1 @@
-{"version":3,"file":"detail.js","sources":["pages/detail/detail.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGV0YWlsL2RldGFpbC52dWU"],"sourcesContent":["\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n H\r\n \r\n \r\n HFEA 风险平价\r\n \r\n 目标权重\r\n 季度调仓\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 监控中\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ item.name.charAt(0) }}\r\n \r\n \r\n {{ item.name }}\r\n {{ item.code }} · {{ item.shares }}股\r\n \r\n \r\n \r\n ¥{{ item.marketValue }}\r\n 仓位 {{ item.weight }}%\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n 持仓盈亏\r\n 0 ? 'text-red' : 'text-green'\">\r\n {{ item.pnl > 0 ? '+' : '' }}{{ item.pnl }}\r\n \r\n \r\n \r\n 盈亏比例\r\n 0 ? 'text-red' : 'text-green'\">\r\n {{ item.pnlPercent > 0 ? '+' : '' }}{{ item.pnlPercent }}%\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ log.date }}\r\n {{ log.time }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{ log.title }}\r\n {{ log.type === 'buy' ? '买入' : '卖出' }} {{ log.amount }}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/detail/detail.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","uni"],"mappings":";;;;;;;;;;;;;AAyJA,UAAM,YAAYA,cAAAA,IAAI;AAAA,MACpB,EAAE,MAAM,QAAQ,MAAM,WAAW,QAAQ,KAAK,aAAa,aAAa,QAAQ,IAAI,KAAK,OAAU,YAAY,MAAM,WAAW,wBAAyB;AAAA,MACzJ,EAAE,MAAM,OAAO,MAAM,UAAU,QAAQ,KAAK,aAAa,aAAa,QAAQ,IAAI,KAAK,SAAU,YAAY,MAAM,WAAW,4BAA6B;AAAA,IAC7J,CAAC;AAED,UAAM,OAAOA,cAAAA,IAAI;AAAA,MACf,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO,OAAO,aAAa,QAAQ,UAAW;AAAA,MACpF,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,QAAQ,OAAO,aAAa,QAAQ,OAAQ;AAAA,MAClF,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,QAAQ,WAAY;AAAA,MAChF,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,QAAQ,UAAW;AAAA;AAAA,IACjF,CAAC;AAED,UAAM,mBAAmB,MAAM;AAC7BC,oBAAAA,MAAI,WAAW,EAAE,KAAK,4BAA6B,CAAA;AAAA,IACrD;AACA,UAAM,YAAY,MAAMA,cAAG,MAAC,UAAU,EAAE,OAAO,MAAM,MAAM,OAAM,CAAE;AACnE,UAAM,aAAa,MAAMA,cAAG,MAAC,UAAU,EAAE,OAAO,MAAM,MAAM,OAAM,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKpE,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"detail.js","sources":["pages/detail/detail.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGV0YWlsL2RldGFpbC52dWU"],"sourcesContent":["\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n H\r\n \r\n \r\n HFEA 风险平价逻辑\r\n \r\n 目标权重\r\n 季度调仓\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 监控中\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ item.name.charAt(0) }}\r\n \r\n \r\n {{ item.name }}\r\n {{ item.code }} · {{ item.shares }}份\r\n \r\n \r\n \r\n ¥{{ item.marketValue }}\r\n 比例 {{ item.weight }}%\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n 变动额\r\n 0 ? 'text-red' : 'text-green'\">\r\n {{ item.pnl > 0 ? '+' : '' }}{{ item.pnl }}\r\n \r\n \r\n \r\n 偏离比例\r\n 0 ? 'text-red' : 'text-green'\">\r\n {{ item.pnlPercent > 0 ? '+' : '' }}{{ item.pnlPercent }}%\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ log.date }}\r\n {{ log.time }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{ log.title }}\r\n {{ log.type === 'buy' ? '录入增加' : '结出减少' }} {{ log.amount }}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/detail/detail.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","uni"],"mappings":";;;;;;;;;;;;;AAyJA,UAAM,YAAYA,cAAAA,IAAI;AAAA,MACpB,EAAE,MAAM,QAAQ,MAAM,WAAW,QAAQ,KAAK,aAAa,aAAa,QAAQ,IAAI,KAAK,OAAU,YAAY,MAAM,WAAW,wBAAyB;AAAA,MACzJ,EAAE,MAAM,OAAO,MAAM,UAAU,QAAQ,KAAK,aAAa,aAAa,QAAQ,IAAI,KAAK,SAAU,YAAY,MAAM,WAAW,4BAA6B;AAAA,IAC7J,CAAC;AAED,UAAM,OAAOA,cAAAA,IAAI;AAAA,MACf,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO,OAAO,aAAa,QAAQ,UAAW;AAAA,MACpF,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,QAAQ,OAAO,aAAa,QAAQ,OAAQ;AAAA,MAClF,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,QAAQ,WAAY;AAAA,MAChF,EAAE,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,QAAQ,UAAW;AAAA;AAAA,IACjF,CAAC;AAED,UAAM,mBAAmB,MAAM;AAC7BC,oBAAAA,MAAI,WAAW,EAAE,KAAK,4BAA6B,CAAA;AAAA,IACrD;AACA,UAAM,YAAY,MAAMA,cAAG,MAAC,UAAU,EAAE,OAAO,MAAM,MAAM,OAAM,CAAE;AACnE,UAAM,aAAa,MAAMA,cAAG,MAAC,UAAU,EAAE,OAAO,MAAM,MAAM,OAAM,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKpE,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
index fa94453..0ce7dff 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["pages/index/index.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n 新建策略组合\r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {{ holding.iconChar }}\r\n \r\n \r\n {{ holding.name }}\r\n {{ holding.tags }}\r\n \r\n \r\n \r\n ● {{ holding.status }}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n 当前市值\r\n ¥ {{ holding.value.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}\r\n \r\n \r\n 累计收益\r\n {{ holding.returnRate >= 0 ? '+' : '' }}{{ holding.returnRate }}%\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","api","uni","onMounted"],"mappings":";;;;;;;;;;;;;;AAiGA,UAAM,YAAYA,cAAAA,IAAI;AAAA,MACpB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB,CAAC;AAGD,UAAM,WAAWA,cAAAA,IAAI,CAAA,CAAE;AAGvB,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAM,WAAW,MAAMC,UAAAA,IAAI,OAAO,aAAY;AAC9C,YAAI,SAAS,SAAS,KAAK;AACzB,oBAAU,QAAQ,SAAS;AAAA,QAC5B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,gCAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGA,UAAM,oBAAoB,YAAY;AACpC,UAAI;AACF,cAAM,WAAW,MAAMD,UAAAA,IAAI,OAAO,YAAW;AAC7C,YAAI,SAAS,SAAS,KAAK;AACzB,mBAAS,QAAQ,SAAS;AAAA,QAC3B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,gCAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGAC,kBAAAA,UAAU,YAAY;AACpB,YAAM,QAAQ,IAAI;AAAA,QAChB,eAAgB;AAAA,QAChB,kBAAmB;AAAA,MACvB,CAAG;AAAA,IACH,CAAC;AAED,UAAM,WAAW,MAAM;AACrBD,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAwB,CAAA;AAAA,IAChD;AAEA,UAAM,WAAW,CAAC,cAAc;AAC9BA,oBAAG,MAAC,WAAW,EAAE,KAAK,2BAA2B,SAAS,GAAE,CAAE;AAAA,IAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/IA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"index.js","sources":["pages/index/index.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n 新建组合\r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {{ holding.iconChar }}\r\n \r\n \r\n {{ holding.name }}\r\n {{ holding.tags }}\r\n \r\n \r\n \r\n ● {{ holding.status }}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n 当前估值\r\n ¥ {{ holding.value.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}\r\n \r\n \r\n 历史总变动\r\n {{ holding.returnRate >= 0 ? '+' : '' }}{{ holding.returnRate }}%\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","api","uni","onMounted"],"mappings":";;;;;;;;;;;;;;AAiGA,UAAM,YAAYA,cAAAA,IAAI;AAAA,MACpB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB,CAAC;AAGD,UAAM,WAAWA,cAAAA,IAAI,CAAA,CAAE;AAGvB,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAM,WAAW,MAAMC,UAAAA,IAAI,OAAO,aAAY;AAC9C,YAAI,SAAS,SAAS,KAAK;AACzB,oBAAU,QAAQ,SAAS;AAAA,QAC5B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,gCAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGA,UAAM,oBAAoB,YAAY;AACpC,UAAI;AACF,cAAM,WAAW,MAAMD,UAAAA,IAAI,OAAO,YAAW;AAC7C,YAAI,SAAS,SAAS,KAAK;AACzB,mBAAS,QAAQ,SAAS;AAAA,QAC3B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,gCAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGAC,kBAAAA,UAAU,YAAY;AACpB,YAAM,QAAQ,IAAI;AAAA,QAChB,eAAgB;AAAA,QAChB,kBAAmB;AAAA,MACvB,CAAG;AAAA,IACH,CAAC;AAED,UAAM,WAAW,MAAM;AACrBD,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAwB,CAAA;AAAA,IAChD;AAEA,UAAM,WAAW,CAAC,cAAc;AAC9BA,oBAAG,MAAC,WAAW,EAAE,KAAK,2BAA2B,SAAS,GAAE,CAAE;AAAA,IAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/IA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/me/me.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/me/me.js.map
index 039b068..7cfc0b5 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/me/me.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/me/me.js.map
@@ -1 +1 @@
-{"version":3,"file":"me.js","sources":["pages/me/me.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbWUvbWUudnVl"],"sourcesContent":["\r\n \r\n \r\n\r\n \r\n \r\n 已捕获信号\r\n {{ userStats.signalsCaptured.toLocaleString() }}\r\n \r\n \r\n 模拟胜率\r\n {{ userStats.winRate }}%\r\n \r\n \r\n\r\n \r\n \r\n \r\n ASSET STRATEGY ADVISOR {{ appInfo.version }}\r\n 当前日期: {{ appInfo.currentDate }}\r\n \r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/me/me.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","api","uni","onMounted"],"mappings":";;;;;;;;;;;;;;AA2DA,UAAM,WAAWA,cAAAA,IAAI;AAAA,MACnB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,IACf,CAAC;AAGD,UAAM,YAAYA,cAAAA,IAAI;AAAA,MACpB,iBAAiB;AAAA,MACjB,SAAS;AAAA,IACX,CAAC;AAGD,UAAM,UAAUA,cAAAA,IAAI;AAAA,MAClB,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC;AAGD,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAMC,UAAAA,IAAI,KAAK,YAAW;AAC3C,YAAI,SAAS,SAAS,KAAK;AACzB,mBAAS,QAAQ,SAAS;AAAA,QAC3B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,yBAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGA,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAM,WAAW,MAAMD,UAAAA,IAAI,KAAK,aAAY;AAC5C,YAAI,SAAS,SAAS,KAAK;AACzB,oBAAU,QAAQ,SAAS;AAAA,QAC5B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,yBAAA,eAAe,KAAK;AAAA,MACnC;AAAA,IACH;AAGA,UAAM,eAAe,YAAY;AAC/B,UAAI;AACF,cAAM,WAAW,MAAMD,UAAAA,IAAI,IAAI,WAAU;AACzC,YAAI,SAAS,SAAS,KAAK;AACzB,kBAAQ,QAAQ,SAAS;AAAA,QAC1B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,0BAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGAC,kBAAAA,UAAU,YAAY;AACpB,YAAM,QAAQ,IAAI;AAAA,QAChB,cAAe;AAAA,QACf,eAAgB;AAAA,QAChB,aAAc;AAAA,MAClB,CAAG;AAAA,IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHD,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"me.js","sources":["pages/me/me.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbWUvbWUudnVl"],"sourcesContent":["\r\n \r\n \r\n\r\n \r\n \r\n 已记录事件\r\n {{ userStats.signalsCaptured.toLocaleString() }}\r\n \r\n \r\n 记录完整度\r\n {{ userStats.winRate }}%\r\n \r\n \r\n\r\n \r\n \r\n \r\n ASSET STRATEGY ADVISOR {{ appInfo.version }}\r\n 当前日期: {{ appInfo.currentDate }}\r\n \r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/me/me.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","api","uni","onMounted"],"mappings":";;;;;;;;;;;;;;AA2DA,UAAM,WAAWA,cAAAA,IAAI;AAAA,MACnB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,IACf,CAAC;AAGD,UAAM,YAAYA,cAAAA,IAAI;AAAA,MACpB,iBAAiB;AAAA,MACjB,SAAS;AAAA,IACX,CAAC;AAGD,UAAM,UAAUA,cAAAA,IAAI;AAAA,MAClB,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC;AAGD,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAMC,UAAAA,IAAI,KAAK,YAAW;AAC3C,YAAI,SAAS,SAAS,KAAK;AACzB,mBAAS,QAAQ,SAAS;AAAA,QAC3B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,yBAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGA,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAM,WAAW,MAAMD,UAAAA,IAAI,KAAK,aAAY;AAC5C,YAAI,SAAS,SAAS,KAAK;AACzB,oBAAU,QAAQ,SAAS;AAAA,QAC5B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,yBAAA,eAAe,KAAK;AAAA,MACnC;AAAA,IACH;AAGA,UAAM,eAAe,YAAY;AAC/B,UAAI;AACF,cAAM,WAAW,MAAMD,UAAAA,IAAI,IAAI,WAAU;AACzC,YAAI,SAAS,SAAS,KAAK;AACzB,kBAAQ,QAAQ,SAAS;AAAA,QAC1B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,0BAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGAC,kBAAAA,UAAU,YAAY;AACpB,YAAM,QAAQ,IAAI;AAAA,QAChB,cAAe;AAAA,QACf,eAAgB;AAAA,QAChB,aAAc;AAAA,MAClB,CAAG;AAAA,IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHD,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/edit/edit.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/edit/edit.js.map
index bd9ca75..76bbeab 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/edit/edit.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/edit/edit.js.map
@@ -1 +1 @@
-{"version":3,"file":"edit.js","sources":["pages/strategies/edit/edit.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3RyYXRlZ2llcy9lZGl0L2VkaXQudnVl"],"sourcesContent":["\r\n \r\n \r\n 选择策略模型\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ item.name }}\r\n {{ item.tag }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ currentStrategyInfo.description }}\r\n \r\n\r\n \r\n 参数配置\r\n \r\n \r\n \r\n \r\n 策略别名\r\n \r\n \r\n\r\n \r\n \r\n 再平衡周期\r\n \r\n \r\n {{ formData.period || '请选择' }}\r\n \r\n \r\n \r\n \r\n \r\n 偏离阈值 (%)\r\n \r\n \r\n sw\r\n \r\n 当资产权重偏离目标超过此数值时触发调仓。\r\n \r\n \r\n\r\n \r\n \r\n \r\n 快线周期 (Short)\r\n \r\n \r\n \r\n 慢线周期 (Long)\r\n \r\n \r\n \r\n \r\n 均线类型\r\n \r\n \r\n {{ formData.maType || 'SMA' }}\r\n \r\n \r\n \r\n \r\n \r\n 规则:快线上穿慢线买入,下穿卖出。\r\n \r\n \r\n\r\n \r\n \r\n ATR 周期\r\n \r\n \r\n \r\n ATR 倍数 (Multiplier)\r\n \r\n \r\n \r\n 趋势过滤均线 (可选)\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/strategies/edit/edit.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","computed","uni"],"mappings":";;;;;;;;;;;;;AAqHA,UAAM,cAAcA,cAAAA,IAAI,QAAQ;AAGhC,UAAM,gBAAgB;AAAA,MACpB;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,MACD;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,MACD;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,IACH;AAGA,UAAM,WAAWA,cAAAA,IAAI;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,MACf,SAAS;AAAA,IACX,CAAC;AAGD,UAAM,sBAAsBC,cAAQ,SAAC,MAAM;AACzC,aAAO,cAAc,KAAK,UAAQ,KAAK,QAAQ,YAAY,KAAK;AAAA,IAClE,CAAC;AAGD,UAAM,aAAa,CAAC,QAAQ;AAC1B,kBAAY,QAAQ;AAAA,IACtB;AAEA,UAAM,iBAAiB,CAAC,MAAM;AAC5B,YAAM,UAAU,CAAC,MAAM,MAAM,MAAM,OAAO,IAAI;AAC9C,eAAS,MAAM,SAAS,QAAQ,EAAE,OAAO,KAAK;AAAA,IAChD;AAEA,UAAM,iBAAiB,CAAC,MAAM;AAC5B,YAAM,QAAQ,CAAC,OAAO,KAAK;AAC3B,eAAS,MAAM,SAAS,MAAM,EAAE,OAAO,KAAK;AAAA,IAC9C;AAEA,UAAM,SAAS,MAAM;AACnBC,oBAAAA,MAAA,MAAA,OAAA,yCAAY,SAAS;AAAA,QACnB,MAAM,YAAY;AAAA,QAClB,QAAQ,SAAS;AAAA,MACrB,CAAG;AACDA,oBAAAA,MAAI,YAAY,EAAE,OAAO,MAAO,CAAA;AAChC,iBAAW,MAAM;AACfA,sBAAG,MAAC,YAAW;AACfA,sBAAG,MAAC,UAAU,EAAE,OAAO,SAAS,MAAM,UAAS,CAAE;AACjD,mBAAW,MAAMA,cAAG,MAAC,aAAc,GAAE,IAAI;AAAA,MAC1C,GAAE,GAAG;AAAA,IACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjMA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"edit.js","sources":["pages/strategies/edit/edit.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3RyYXRlZ2llcy9lZGl0L2VkaXQudnVl"],"sourcesContent":["\r\n \r\n \r\n 选择逻辑模型\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ item.name }}\r\n {{ item.tag }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ currentStrategyInfo.description }}\r\n \r\n\r\n \r\n 参数配置\r\n \r\n \r\n \r\n \r\n 模型别名\r\n \r\n \r\n\r\n \r\n \r\n 再平衡周期\r\n \r\n \r\n {{ formData.period || '请选择' }}\r\n \r\n \r\n \r\n \r\n \r\n 偏离阈值 (%)\r\n \r\n \r\n sw\r\n \r\n 当资产权重偏离目标超过此数值时触发调仓。\r\n \r\n \r\n\r\n \r\n \r\n \r\n 快线周期 (Short)\r\n \r\n \r\n \r\n 慢线周期 (Long)\r\n \r\n \r\n \r\n \r\n 均线类型\r\n \r\n \r\n {{ formData.maType || 'SMA' }}\r\n \r\n \r\n \r\n \r\n \r\n 规则:快线上穿慢线买入,下穿卖出。\r\n \r\n \r\n\r\n \r\n \r\n ATR 周期\r\n \r\n \r\n \r\n ATR 倍数 (Multiplier)\r\n \r\n \r\n \r\n 趋势过滤均线 (可选)\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/strategies/edit/edit.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","computed","uni"],"mappings":";;;;;;;;;;;;;AAqHA,UAAM,cAAcA,cAAAA,IAAI,QAAQ;AAGhC,UAAM,gBAAgB;AAAA,MACpB;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,MACD;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,MACD;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,IACH;AAGA,UAAM,WAAWA,cAAAA,IAAI;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,MACf,SAAS;AAAA,IACX,CAAC;AAGD,UAAM,sBAAsBC,cAAQ,SAAC,MAAM;AACzC,aAAO,cAAc,KAAK,UAAQ,KAAK,QAAQ,YAAY,KAAK;AAAA,IAClE,CAAC;AAGD,UAAM,aAAa,CAAC,QAAQ;AAC1B,kBAAY,QAAQ;AAAA,IACtB;AAEA,UAAM,iBAAiB,CAAC,MAAM;AAC5B,YAAM,UAAU,CAAC,MAAM,MAAM,MAAM,OAAO,IAAI;AAC9C,eAAS,MAAM,SAAS,QAAQ,EAAE,OAAO,KAAK;AAAA,IAChD;AAEA,UAAM,iBAAiB,CAAC,MAAM;AAC5B,YAAM,QAAQ,CAAC,OAAO,KAAK;AAC3B,eAAS,MAAM,SAAS,MAAM,EAAE,OAAO,KAAK;AAAA,IAC9C;AAEA,UAAM,SAAS,MAAM;AACnBC,oBAAAA,MAAA,MAAA,OAAA,yCAAY,SAAS;AAAA,QACnB,MAAM,YAAY;AAAA,QAClB,QAAQ,SAAS;AAAA,MACrB,CAAG;AACDA,oBAAAA,MAAI,YAAY,EAAE,OAAO,MAAO,CAAA;AAChC,iBAAW,MAAM;AACfA,sBAAG,MAAC,YAAW;AACfA,sBAAG,MAAC,UAAU,EAAE,OAAO,SAAS,MAAM,UAAS,CAAE;AACjD,mBAAW,MAAMA,cAAG,MAAC,aAAc,GAAE,IAAI;AAAA,MAC1C,GAAE,GAAG;AAAA,IACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjMA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/strategies.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/strategies.js.map
index 7d44d97..252487f 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/strategies.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/strategies/strategies.js.map
@@ -1 +1 @@
-{"version":3,"file":"strategies.js","sources":["pages/strategies/strategies.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3RyYXRlZ2llcy9zdHJhdGVnaWVzLnZ1ZQ"],"sourcesContent":["\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ item.iconChar }}\r\n \r\n \r\n {{ item.title }}\r\n {{ item.tag }}\r\n \r\n \r\n \r\n {{ item.desc }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/strategies/strategies.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","api","uni","onMounted"],"mappings":";;;;;;;;;;;;;;AAmEA,UAAM,aAAaA,cAAAA,IAAI,CAAA,CAAE;AAGzB,UAAM,kBAAkB,YAAY;AAClC,UAAI;AACF,cAAM,WAAW,MAAMC,UAAAA,IAAI,WAAW,cAAa;AACnD,YAAI,SAAS,SAAS,KAAK;AACzB,qBAAW,QAAQ,SAAS;AAAA,QAC7B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,yCAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGAC,kBAAAA,UAAU,YAAY;AACpB,YAAM,gBAAe;AAAA,IACvB,CAAC;AAGD,UAAM,UAAU,MAAM;AACpBD,oBAAAA,MAAI,WAAW,EAAE,KAAK,8BAA+B,CAAA;AAAA,IACvD;AAGA,UAAM,eAAe,CAAC,SAAS;AAC7BA,gFAAY,SAAS,KAAK,KAAK;AAC/BA,oBAAG,MAAC,WAAW,EAAE,KAAK,sCAAsC,KAAK,GAAE,CAAE;AAAA,IACvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9FA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
+{"version":3,"file":"strategies.js","sources":["pages/strategies/strategies.vue","D:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3RyYXRlZ2llcy9zdHJhdGVnaWVzLnZ1ZQ"],"sourcesContent":["\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ item.iconChar }}\r\n \r\n \r\n {{ item.title }}\r\n {{ item.tag }}\r\n \r\n \r\n \r\n {{ item.desc }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/admin/source/repos/AssetManager.UniApp/pages/strategies/strategies.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","api","uni","onMounted"],"mappings":";;;;;;;;;;;;;;AAmEA,UAAM,aAAaA,cAAAA,IAAI,CAAA,CAAE;AAGzB,UAAM,kBAAkB,YAAY;AAClC,UAAI;AACF,cAAM,WAAW,MAAMC,UAAAA,IAAI,WAAW,cAAa;AACnD,YAAI,SAAS,SAAS,KAAK;AACzB,qBAAW,QAAQ,SAAS;AAAA,QAC7B;AAAA,MACF,SAAQ,OAAO;AACdC,sBAAc,MAAA,MAAA,SAAA,yCAAA,aAAa,KAAK;AAAA,MACjC;AAAA,IACH;AAGAC,kBAAAA,UAAU,YAAY;AACpB,YAAM,gBAAe;AAAA,IACvB,CAAC;AAGD,UAAM,UAAU,MAAM;AACpBD,oBAAAA,MAAI,WAAW,EAAE,KAAK,8BAA+B,CAAA;AAAA,IACvD;AAGA,UAAM,eAAe,CAAC,SAAS;AAC7BA,gFAAY,SAAS,KAAK,KAAK;AAC/BA,oBAAG,MAAC,WAAW,EAAE,KAAK,sCAAsC,KAAK,GAAE,CAAE;AAAA,IACvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9FA,GAAG,WAAW,eAAe;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/api.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/api.js.map
index e741ebe..70cf5c3 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/api.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/api.js.map
@@ -1 +1 @@
-{"version":3,"file":"api.js","sources":["utils/api.js"],"sourcesContent":["/**\r\n * API工具类 - 统一封装后端API请求\r\n */\r\n\r\n// API基础URL\r\nconst BASE_URL = 'https://api.assetmanager.com';\r\n\r\n// 请求超时时间\r\nconst TIMEOUT = 10000;\r\n\r\n/**\r\n * 基础请求方法\r\n * @param {string} url - 请求URL\r\n * @param {string} method - 请求方法\r\n * @param {object} data - 请求数据\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nconst request = (url, method = 'GET', data = {}, headers = {}) => {\r\n // 获取存储的token\r\n const token = uni.getStorageSync('token');\r\n return new Promise((resolve, reject) => {\r\n uni.request({\r\n url: BASE_URL + url,\r\n method,\r\n data,\r\n header: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': token ? `Bearer ${token}` : '',\r\n ...headers\r\n },\r\n timeout: TIMEOUT,\r\n success: (res) => {\r\n if (res.statusCode === 200) {\r\n resolve(res.data);\r\n } else if (res.statusCode === 401) {\r\n // 未授权,清除token并重新登录\r\n uni.removeStorageSync('token');\r\n uni.removeStorageSync('userInfo');\r\n console.log('登录已过期,请重新登录');\r\n reject(new Error('登录已过期'));\r\n } else {\r\n reject(new Error(`请求失败: ${res.statusCode}`));\r\n }\r\n },\r\n fail: (err) => {\r\n // 当实际API不可用时,使用模拟数据\r\n console.log('API请求失败,使用模拟数据:', err);\r\n resolve(getMockData(url, method, data));\r\n }\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * GET请求\r\n * @param {string} url - 请求URL\r\n * @param {object} params - 请求参数\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const get = (url, params = {}, headers = {}) => {\r\n // 构建查询字符串\r\n const queryString = Object.keys(params)\r\n .map(key => `${key}=${encodeURIComponent(params[key])}`)\r\n .join('&');\r\n const fullUrl = queryString ? `${url}?${queryString}` : url;\r\n return request(fullUrl, 'GET', {}, headers);\r\n};\r\n\r\n/**\r\n * POST请求\r\n * @param {string} url - 请求URL\r\n * @param {object} data - 请求数据\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const post = (url, data = {}, headers = {}) => {\r\n return request(url, 'POST', data, headers);\r\n};\r\n\r\n/**\r\n * PUT请求\r\n * @param {string} url - 请求URL\r\n * @param {object} data - 请求数据\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const put = (url, data = {}, headers = {}) => {\r\n return request(url, 'PUT', data, headers);\r\n};\r\n\r\n/**\r\n * DELETE请求\r\n * @param {string} url - 请求URL\r\n * @param {object} params - 请求参数\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const del = (url, params = {}, headers = {}) => {\r\n const queryString = Object.keys(params)\r\n .map(key => `${key}=${encodeURIComponent(params[key])}`)\r\n .join('&');\r\n const fullUrl = queryString ? `${url}?${queryString}` : url;\r\n return request(fullUrl, 'DELETE', {}, headers);\r\n};\r\n\r\n/**\r\n * 模拟数据\r\n * @param {string} url - 请求URL\r\n * @param {string} method - 请求方法\r\n * @param {object} data - 请求数据\r\n * @returns {object} - 返回模拟数据\r\n */\r\nconst getMockData = (url, method, data) => {\r\n // 模拟API延迟\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n // 资产相关模拟数据\r\n if (url.includes('/assets')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n totalValue: 1284592.40,\r\n todayProfit: 12482.00,\r\n totalReturnRate: 24.82\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 持仓相关模拟数据\r\n if (url.includes('/holdings')) {\r\n resolve({\r\n code: 200,\r\n data: [\r\n {\r\n id: 'hfea-001',\r\n name: '美股全天候杠杆',\r\n tags: 'HFEA · 季度调仓',\r\n status: '监控中',\r\n statusType: 'green',\r\n iconChar: 'H',\r\n iconBgClass: 'bg-green-100',\r\n iconTextClass: 'text-green-700',\r\n value: 156240.00,\r\n returnRate: 42.82,\r\n returnType: 'positive'\r\n },\r\n {\r\n id: 'ma-002',\r\n name: '纳指双均线趋势',\r\n tags: '趋势跟踪 · 日线',\r\n status: '等待信号',\r\n statusType: 'gray',\r\n iconChar: 'T',\r\n iconBgClass: 'bg-blue-100',\r\n iconTextClass: 'text-blue-700',\r\n value: 412500.00,\r\n returnRate: -1.79,\r\n returnType: 'negative'\r\n }\r\n ],\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 策略相关模拟数据\r\n if (url.includes('/strategies')) {\r\n resolve({\r\n code: 200,\r\n data: [\r\n {\r\n id: 'hfea',\r\n iconChar: 'H',\r\n title: 'HFEA 风险平价策略',\r\n tag: '高风险 · 高预期收益',\r\n desc: '针对杠杆ETF平衡的对冲策略,核心逻辑为 TMF (3x长债) 与 UPRO (3x标普) 的季度平衡。',\r\n bgClass: 'bg-emerald-900',\r\n tagClass: 'text-emerald-700',\r\n tags: ['季调', '止损机制'],\r\n btnText: '配置参数',\r\n btnClass: 'btn-primary'\r\n },\r\n {\r\n id: 'ma',\r\n iconChar: 'T',\r\n title: '双均线趋势跟随',\r\n tag: '中风险 · 低回撤要求',\r\n desc: '利用快线(EMA10)上穿慢线(EMA60)捕捉强势波段,金叉买入,死叉离场。',\r\n bgClass: 'bg-blue-600',\r\n tagClass: 'text-blue-700',\r\n tags: ['日线', '左侧止盈'],\r\n btnText: '预览模型',\r\n btnClass: 'btn-secondary'\r\n },\r\n {\r\n id: 'chandelier',\r\n iconChar: 'S',\r\n title: '吊灯止损策略',\r\n tag: '风险控制 · 辅助',\r\n desc: '基于 ATR 波动率计算的动态止损线,锁住利润,防止回撤过大。',\r\n bgClass: 'bg-orange-500',\r\n tagClass: 'text-orange-700',\r\n tags: ['ATR', '动态止盈'],\r\n btnText: '配置参数',\r\n btnClass: 'btn-secondary'\r\n }\r\n ],\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 用户信息模拟数据\r\n if (url.includes('/user/info')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n userName: '首席策略员 0x42',\r\n memberLevel: '全球实验室 Pro',\r\n runningDays: 412\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 用户统计数据模拟数据\r\n if (url.includes('/user/stats')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n signalsCaptured: 1248,\r\n winRate: 58.4\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 应用信息模拟数据\r\n if (url.includes('/app/info')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n version: 'v2.4.0',\r\n currentDate: new Date().toISOString().split('T')[0]\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 微信登录模拟数据\r\n if (url.includes('/api/auth/wechat/login')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n token: 'mock-wechat-token-123456',\r\n userInfo: {\r\n id: 'user-001',\r\n openid: 'mock-openid-123456',\r\n nickname: '微信用户',\r\n avatar: 'https://via.placeholder.com/100',\r\n memberLevel: '全球实验室 Pro',\r\n runningDays: 412\r\n }\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 微信绑定模拟数据\r\n if (url.includes('/api/auth/wechat/bind')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n token: 'mock-wechat-token-789012',\r\n userInfo: {\r\n id: 'user-001',\r\n openid: 'mock-openid-123456',\r\n email: 'user@example.com',\r\n nickname: '微信用户',\r\n avatar: 'https://via.placeholder.com/100',\r\n memberLevel: '全球实验室 Pro',\r\n runningDays: 412\r\n }\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 默认返回\r\n resolve({\r\n code: 200,\r\n data: null,\r\n message: 'success'\r\n });\r\n }, 500);\r\n });\r\n};\r\n\r\n/**\r\n * API接口封装\r\n */\r\nexport const api = {\r\n // 资产相关API\r\n assets: {\r\n // 获取总资产数据\r\n getAssetData: () => get('/assets'),\r\n // 获取持仓组合数据\r\n getHoldings: () => get('/holdings')\r\n },\r\n \r\n // 策略相关API\r\n strategies: {\r\n // 获取策略列表\r\n getStrategies: () => get('/strategies'),\r\n // 获取单个策略详情\r\n getStrategyDetail: (id) => get(`/strategies/${id}`),\r\n // 创建新策略\r\n createStrategy: (data) => post('/strategies', data),\r\n // 更新策略\r\n updateStrategy: (id, data) => put(`/strategies/${id}`, data),\r\n // 删除策略\r\n deleteStrategy: (id) => del(`/strategies/${id}`)\r\n },\r\n \r\n // 用户相关API\r\n user: {\r\n // 获取用户信息\r\n getUserInfo: () => get('/user/info'),\r\n // 获取用户统计数据\r\n getUserStats: () => get('/user/stats'),\r\n // 更新用户信息\r\n updateUserInfo: (data) => put('/user/info', data)\r\n },\r\n \r\n // 认证相关API\r\n auth: {\r\n // 微信登录\r\n wechatLogin: (code) => post('/api/auth/wechat/login', { code }),\r\n // 微信绑定\r\n wechatBind: (data) => post('/api/auth/wechat/bind', data)\r\n },\r\n \r\n // 应用相关API\r\n app: {\r\n // 获取应用信息\r\n getAppInfo: () => get('/app/info')\r\n }\r\n};\r\n\r\nexport default api;"],"names":["uni"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"api.js","sources":["utils/api.js"],"sourcesContent":["/**\r\n * API工具类 - 统一封装后端API请求\r\n */\r\n\r\n// API基础URL\r\nconst BASE_URL = 'https://api.assetmanager.com';\r\n\r\n// 请求超时时间\r\nconst TIMEOUT = 10000;\r\n\r\n/**\r\n * 基础请求方法\r\n * @param {string} url - 请求URL\r\n * @param {string} method - 请求方法\r\n * @param {object} data - 请求数据\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nconst request = (url, method = 'GET', data = {}, headers = {}) => {\r\n // 获取存储的token\r\n const token = uni.getStorageSync('token');\r\n return new Promise((resolve, reject) => {\r\n uni.request({\r\n url: BASE_URL + url,\r\n method,\r\n data,\r\n header: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': token ? `Bearer ${token}` : '',\r\n ...headers\r\n },\r\n timeout: TIMEOUT,\r\n success: (res) => {\r\n if (res.statusCode === 200) {\r\n resolve(res.data);\r\n } else if (res.statusCode === 401) {\r\n // 未授权,清除token并重新登录\r\n uni.removeStorageSync('token');\r\n uni.removeStorageSync('userInfo');\r\n console.log('登录已过期,请重新登录');\r\n reject(new Error('登录已过期'));\r\n } else {\r\n reject(new Error(`请求失败: ${res.statusCode}`));\r\n }\r\n },\r\n fail: (err) => {\r\n // 当实际API不可用时,使用模拟数据\r\n console.log('API请求失败,使用模拟数据:', err);\r\n resolve(getMockData(url, method, data));\r\n }\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * GET请求\r\n * @param {string} url - 请求URL\r\n * @param {object} params - 请求参数\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const get = (url, params = {}, headers = {}) => {\r\n // 构建查询字符串\r\n const queryString = Object.keys(params)\r\n .map(key => `${key}=${encodeURIComponent(params[key])}`)\r\n .join('&');\r\n const fullUrl = queryString ? `${url}?${queryString}` : url;\r\n return request(fullUrl, 'GET', {}, headers);\r\n};\r\n\r\n/**\r\n * POST请求\r\n * @param {string} url - 请求URL\r\n * @param {object} data - 请求数据\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const post = (url, data = {}, headers = {}) => {\r\n return request(url, 'POST', data, headers);\r\n};\r\n\r\n/**\r\n * PUT请求\r\n * @param {string} url - 请求URL\r\n * @param {object} data - 请求数据\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const put = (url, data = {}, headers = {}) => {\r\n return request(url, 'PUT', data, headers);\r\n};\r\n\r\n/**\r\n * DELETE请求\r\n * @param {string} url - 请求URL\r\n * @param {object} params - 请求参数\r\n * @param {object} headers - 请求头\r\n * @returns {Promise} - 返回Promise对象\r\n */\r\nexport const del = (url, params = {}, headers = {}) => {\r\n const queryString = Object.keys(params)\r\n .map(key => `${key}=${encodeURIComponent(params[key])}`)\r\n .join('&');\r\n const fullUrl = queryString ? `${url}?${queryString}` : url;\r\n return request(fullUrl, 'DELETE', {}, headers);\r\n};\r\n\r\n/**\r\n * 模拟数据\r\n * @param {string} url - 请求URL\r\n * @param {string} method - 请求方法\r\n * @param {object} data - 请求数据\r\n * @returns {object} - 返回模拟数据\r\n */\r\nconst getMockData = (url, method, data) => {\r\n // 模拟API延迟\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n // 资产相关模拟数据\r\n if (url.includes('/assets')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n totalValue: 1284592.40,\r\n currency: 'CNY',\r\n todayProfit: 12482.00,\r\n todayProfitCurrency: 'CNY',\r\n totalReturnRate: 24.82\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 持仓相关模拟数据\r\n if (url.includes('/holdings')) {\r\n resolve({\r\n code: 200,\r\n data: [\r\n {\r\n id: 'hfea-001',\r\n name: '美股全天候杠杆',\r\n tags: 'HFEA · 季度调仓',\r\n status: '监控中',\r\n statusType: 'green',\r\n iconChar: 'H',\r\n iconBgClass: 'bg-green-100',\r\n iconTextClass: 'text-green-700',\r\n value: 156240.00,\r\n currency: 'USD',\r\n returnRate: 42.82,\r\n returnType: 'positive'\r\n },\r\n {\r\n id: 'ma-002',\r\n name: '纳指双均线趋势',\r\n tags: '趋势跟踪 · 日线',\r\n status: '等待信号',\r\n statusType: 'gray',\r\n iconChar: 'T',\r\n iconBgClass: 'bg-blue-100',\r\n iconTextClass: 'text-blue-700',\r\n value: 412500.00,\r\n currency: 'USD',\r\n returnRate: -1.79,\r\n returnType: 'negative'\r\n },\r\n {\r\n id: 'hk-003',\r\n name: '港股价值投资',\r\n tags: '价值投资 · 蓝筹',\r\n status: '持有中',\r\n statusType: 'green',\r\n iconChar: 'H',\r\n iconBgClass: 'bg-green-100',\r\n iconTextClass: 'text-green-700',\r\n value: 896000.00,\r\n currency: 'HKD',\r\n returnRate: 12.56,\r\n returnType: 'positive'\r\n }\r\n ],\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 策略相关模拟数据\r\n if (url.includes('/strategies')) {\r\n resolve({\r\n code: 200,\r\n data: [\r\n {\r\n id: 'hfea',\r\n iconChar: 'H',\r\n title: 'HFEA 风险平价逻辑',\r\n tag: '高风险 · 高预期收益',\r\n desc: '针对杠杆ETF平衡的对冲策略,核心逻辑为 TMF (3x长债) 与 UPRO (3x标普) 的季度平衡。',\r\n bgClass: 'bg-emerald-900',\r\n tagClass: 'text-emerald-700',\r\n tags: ['季调', '止损机制'],\r\n btnText: '配置参数',\r\n btnClass: 'btn-primary'\r\n },\r\n {\r\n id: 'ma',\r\n iconChar: 'T',\r\n title: '双均线趋势跟随',\r\n tag: '中风险 · 低回撤要求',\r\n desc: '利用快线(EMA10)上穿慢线(EMA60)捕捉强势波段,金叉买入,死叉离场。',\r\n bgClass: 'bg-blue-600',\r\n tagClass: 'text-blue-700',\r\n tags: ['日线', '左侧止盈'],\r\n btnText: '预览模型',\r\n btnClass: 'btn-secondary'\r\n },\r\n {\r\n id: 'chandelier',\r\n iconChar: 'S',\r\n title: '吊灯止损策略',\r\n tag: '风险控制 · 辅助',\r\n desc: '基于 ATR 波动率计算的动态止损线,锁住利润,防止回撤过大。',\r\n bgClass: 'bg-orange-500',\r\n tagClass: 'text-orange-700',\r\n tags: ['ATR', '动态止盈'],\r\n btnText: '配置参数',\r\n btnClass: 'btn-secondary'\r\n }\r\n ],\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 用户信息模拟数据\r\n if (url.includes('/user/info')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n userName: '首席策略员 0x42',\r\n memberLevel: '全球实验室 Pro',\r\n runningDays: 412\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 用户统计数据模拟数据\r\n if (url.includes('/user/stats')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n signalsCaptured: 1248,\r\n winRate: 58.4\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 应用信息模拟数据\r\n if (url.includes('/app/info')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n version: 'v2.4.0',\r\n currentDate: new Date().toISOString().split('T')[0]\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 微信登录模拟数据\r\n if (url.includes('/api/auth/wechat/login')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n token: 'mock-wechat-token-123456',\r\n userInfo: {\r\n id: 'user-001',\r\n openid: 'mock-openid-123456',\r\n nickname: '微信用户',\r\n avatar: 'https://via.placeholder.com/100',\r\n memberLevel: '全球实验室 Pro',\r\n runningDays: 412\r\n }\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 微信绑定模拟数据\r\n if (url.includes('/api/auth/wechat/bind')) {\r\n resolve({\r\n code: 200,\r\n data: {\r\n token: 'mock-wechat-token-789012',\r\n userInfo: {\r\n id: 'user-001',\r\n openid: 'mock-openid-123456',\r\n email: 'user@example.com',\r\n nickname: '微信用户',\r\n avatar: 'https://via.placeholder.com/100',\r\n memberLevel: '全球实验室 Pro',\r\n runningDays: 412\r\n }\r\n },\r\n message: 'success'\r\n });\r\n }\r\n \r\n // 默认返回\r\n resolve({\r\n code: 200,\r\n data: null,\r\n message: 'success'\r\n });\r\n }, 500);\r\n });\r\n};\r\n\r\n/**\r\n * API接口封装\r\n */\r\nexport const api = {\r\n // 资产相关API\r\n assets: {\r\n // 获取总资产数据\r\n getAssetData: () => get('/assets'),\r\n // 获取持仓组合数据\r\n getHoldings: () => get('/holdings')\r\n },\r\n \r\n // 策略相关API\r\n strategies: {\r\n // 获取策略列表\r\n getStrategies: () => get('/strategies'),\r\n // 获取单个策略详情\r\n getStrategyDetail: (id) => get(`/strategies/${id}`),\r\n // 创建新策略\r\n createStrategy: (data) => post('/strategies', data),\r\n // 更新策略\r\n updateStrategy: (id, data) => put(`/strategies/${id}`, data),\r\n // 删除策略\r\n deleteStrategy: (id) => del(`/strategies/${id}`)\r\n },\r\n \r\n // 用户相关API\r\n user: {\r\n // 获取用户信息\r\n getUserInfo: () => get('/user/info'),\r\n // 获取用户统计数据\r\n getUserStats: () => get('/user/stats'),\r\n // 更新用户信息\r\n updateUserInfo: (data) => put('/user/info', data)\r\n },\r\n \r\n // 认证相关API\r\n auth: {\r\n // 微信登录\r\n wechatLogin: (code) => post('/api/auth/wechat/login', { code }),\r\n // 微信绑定\r\n wechatBind: (data) => post('/api/auth/wechat/bind', data)\r\n },\r\n \r\n // 应用相关API\r\n app: {\r\n // 获取应用信息\r\n getAppInfo: () => get('/app/info')\r\n }\r\n};\r\n\r\nexport default api;"],"names":["uni"],"mappings":"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"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js
index aa24915..f68c729 100644
--- a/unpackage/dist/dev/mp-weixin/common/vendor.js
+++ b/unpackage/dist/dev/mp-weixin/common/vendor.js
@@ -7046,9 +7046,9 @@ function isConsoleWritable() {
return isWritable;
}
function initRuntimeSocketService() {
- const hosts = "198.18.0.1,100.117.139.1,192.168.0.236,10.195.102.223,127.0.0.1";
+ const hosts = "198.18.0.1,100.117.139.1,10.195.102.223,192.168.0.236,127.0.0.1";
const port = "8092";
- const id = "mp-weixin_ZuGrLn";
+ const id = "mp-weixin_pQupRq";
const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => {
} : initOnError();
diff --git a/unpackage/dist/dev/mp-weixin/pages/config/config.wxml b/unpackage/dist/dev/mp-weixin/pages/config/config.wxml
index 3ad7c18..0c153a3 100644
--- a/unpackage/dist/dev/mp-weixin/pages/config/config.wxml
+++ b/unpackage/dist/dev/mp-weixin/pages/config/config.wxml
@@ -1 +1 @@
-组合名称选择策略模板{{f}}点击选择策略逻辑{{l}}标的名称/代码买入均价持有数量建仓日期{{item.k}}
\ No newline at end of file
+组合名称选择逻辑模板{{f}}点击选择逻辑规则{{l}}单元名称/代码买入均价持有数量建仓日期{{item.k}}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/pages/detail/detail.js b/unpackage/dist/dev/mp-weixin/pages/detail/detail.js
index 7753771..3938057 100644
--- a/unpackage/dist/dev/mp-weixin/pages/detail/detail.js
+++ b/unpackage/dist/dev/mp-weixin/pages/detail/detail.js
@@ -66,7 +66,7 @@ const _sfc_main = {
d: k !== logs.value.length - 1
}, k !== logs.value.length - 1 ? {} : {}, {
e: common_vendor.t(log.title),
- f: common_vendor.t(log.type === "buy" ? "买入" : "卖出"),
+ f: common_vendor.t(log.type === "buy" ? "录入增加" : "结出减少"),
g: common_vendor.t(log.amount),
h: k
});
diff --git a/unpackage/dist/dev/mp-weixin/pages/detail/detail.wxml b/unpackage/dist/dev/mp-weixin/pages/detail/detail.wxml
index 57e4b14..a5d3a10 100644
--- a/unpackage/dist/dev/mp-weixin/pages/detail/detail.wxml
+++ b/unpackage/dist/dev/mp-weixin/pages/detail/detail.wxml
@@ -1 +1 @@
-HHFEA 风险平价目标权重季度调仓监控中{{item.a}}{{item.c}}{{item.d}} · {{item.e}}股¥{{item.f}}仓位 {{item.g}}%持仓盈亏{{item.h}}{{item.i}}盈亏比例{{item.k}}{{item.l}}% {{log.a}}{{log.b}}{{log.e}}{{log.f}} {{log.g}}
\ No newline at end of file
+HHFEA 风险平价逻辑目标权重季度调仓监控中{{item.a}}{{item.c}}{{item.d}} · {{item.e}}份¥{{item.f}}比例 {{item.g}}%变动额{{item.h}}{{item.i}}偏离比例{{item.k}}{{item.l}}% {{log.a}}{{log.b}}{{log.e}}{{log.f}} {{log.g}}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
index b923bed..9c4d4e5 100644
--- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
+++ b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
@@ -1 +1 @@
-新建策略组合{{holding.a}}{{holding.d}}{{holding.e}}● {{holding.f}}当前市值¥ {{holding.i}}累计收益{{holding.j}}{{holding.k}}%
\ No newline at end of file
+新建组合{{holding.a}}{{holding.d}}{{holding.e}}● {{holding.f}}当前估值¥ {{holding.i}}历史总变动{{holding.j}}{{holding.k}}%
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/pages/me/me.wxml b/unpackage/dist/dev/mp-weixin/pages/me/me.wxml
index b28d621..5bbb808 100644
--- a/unpackage/dist/dev/mp-weixin/pages/me/me.wxml
+++ b/unpackage/dist/dev/mp-weixin/pages/me/me.wxml
@@ -1 +1 @@
-已捕获信号{{d}}模拟胜率{{e}}%ASSET STRATEGY ADVISOR {{k}}当前日期: {{l}}
\ No newline at end of file
+已记录事件{{d}}记录完整度{{e}}%ASSET STRATEGY ADVISOR {{k}}当前日期: {{l}}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/pages/strategies/edit/edit.wxml b/unpackage/dist/dev/mp-weixin/pages/strategies/edit/edit.wxml
index b00a46a..04055e6 100644
--- a/unpackage/dist/dev/mp-weixin/pages/strategies/edit/edit.wxml
+++ b/unpackage/dist/dev/mp-weixin/pages/strategies/edit/edit.wxml
@@ -1 +1 @@
-选择策略模型{{item.d}}{{item.f}}{{d}}参数配置策略别名再平衡周期{{h}}偏离阈值 (%)sw当资产权重偏离目标超过此数值时触发调仓。快线周期 (Short)慢线周期 (Long)均线类型{{s}}规则:快线上穿慢线买入,下穿卖出。ATR 周期ATR 倍数 (Multiplier)趋势过滤均线 (可选)
\ No newline at end of file
+选择逻辑模型{{item.d}}{{item.f}}{{d}}参数配置模型别名再平衡周期{{h}}偏离阈值 (%)sw当资产权重偏离目标超过此数值时触发调仓。快线周期 (Short)慢线周期 (Long)均线类型{{s}}规则:快线上穿慢线买入,下穿卖出。ATR 周期ATR 倍数 (Multiplier)趋势过滤均线 (可选)
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/pages/strategies/strategies.wxml b/unpackage/dist/dev/mp-weixin/pages/strategies/strategies.wxml
index 7f2732c..21f4e79 100644
--- a/unpackage/dist/dev/mp-weixin/pages/strategies/strategies.wxml
+++ b/unpackage/dist/dev/mp-weixin/pages/strategies/strategies.wxml
@@ -1 +1 @@
-{{item.i}}
\ No newline at end of file
+{{item.i}}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/project.config.json b/unpackage/dist/dev/mp-weixin/project.config.json
index fd1928c..1736d4a 100644
--- a/unpackage/dist/dev/mp-weixin/project.config.json
+++ b/unpackage/dist/dev/mp-weixin/project.config.json
@@ -13,7 +13,7 @@
},
"compileType": "miniprogram",
"libVersion": "",
- "appid": "wxab7b7831c69af51a",
+ "appid": "wx245f0f3ebcfcf5a7",
"projectname": "个人资产策略管理",
"condition": {
"search": {
diff --git a/unpackage/dist/dev/mp-weixin/utils/api.js b/unpackage/dist/dev/mp-weixin/utils/api.js
index 9d0978f..3f213c2 100644
--- a/unpackage/dist/dev/mp-weixin/utils/api.js
+++ b/unpackage/dist/dev/mp-weixin/utils/api.js
@@ -58,7 +58,9 @@ const getMockData = (url, method, data) => {
code: 200,
data: {
totalValue: 12845924e-1,
+ currency: "CNY",
todayProfit: 12482,
+ todayProfitCurrency: "CNY",
totalReturnRate: 24.82
},
message: "success"
@@ -78,6 +80,7 @@ const getMockData = (url, method, data) => {
iconBgClass: "bg-green-100",
iconTextClass: "text-green-700",
value: 156240,
+ currency: "USD",
returnRate: 42.82,
returnType: "positive"
},
@@ -91,8 +94,23 @@ const getMockData = (url, method, data) => {
iconBgClass: "bg-blue-100",
iconTextClass: "text-blue-700",
value: 412500,
+ currency: "USD",
returnRate: -1.79,
returnType: "negative"
+ },
+ {
+ id: "hk-003",
+ name: "港股价值投资",
+ tags: "价值投资 · 蓝筹",
+ status: "持有中",
+ statusType: "green",
+ iconChar: "H",
+ iconBgClass: "bg-green-100",
+ iconTextClass: "text-green-700",
+ value: 896e3,
+ currency: "HKD",
+ returnRate: 12.56,
+ returnType: "positive"
}
],
message: "success"
@@ -105,7 +123,7 @@ const getMockData = (url, method, data) => {
{
id: "hfea",
iconChar: "H",
- title: "HFEA 风险平价策略",
+ title: "HFEA 风险平价逻辑",
tag: "高风险 · 高预期收益",
desc: "针对杠杆ETF平衡的对冲策略,核心逻辑为 TMF (3x长债) 与 UPRO (3x标普) 的季度平衡。",
bgClass: "bg-emerald-900",