13 次代碼提交 c9bf4aba5f ... 5751e7b4c0

作者 SHA1 備註 提交日期
  Hexinkui 5751e7b4c0 Merge branch 'web3_transection' 3 周之前
  Hexinkui dc7efa80bd Merge branch 'main' of http://47.76.177.38:48976/Benita/Bit_Wise_World 3 周之前
  Hexinkui b6c5835099 实现了k线指标和主图副图 3 周之前
  Hexinkui 7bae3efdf1 Merge branch 'main' into web3_transection 3 周之前
  Hexinkui b08f6f636b Reapply "12/4完成工作" 3 周之前
  Hexinkui d0668dd2fd Revert "11111" 3 周之前
  Hexinkui 7802578d48 1 3 周之前
  Hexinkui fcac748180 Revert "12/4完成工作" 3 周之前
  Hexinkui ba3a6b25ce Merge branch 'web3_transection' 3 周之前
  Hexinkui fb31850663 Merge remote-tracking branch 'origin/main' into web3_transection 3 周之前
  Hexinkui 9c2526bc87 11111 3 周之前
  Hexinkui ba3d19938f Merge branch 'main' into web3_transection 3 周之前
  Hexinkui ac70e00907 111 3 周之前
共有 3 個文件被更改,包括 41 次插入1797 次删除
  1. 36 8
      src/views/bitcoin/lever/components/KLineChart.vue
  2. 3 1787
      src/views/market/details/MarketConditions.vue
  3. 2 2
      vue.config.js

+ 36 - 8
src/views/bitcoin/lever/components/KLineChart.vue

@@ -5,7 +5,7 @@
 </template>
 
 <script setup>
-import { onMounted, onBeforeUnmount, ref, watch, nextTick, toRaw } from 'vue'
+import { onMounted, onBeforeUnmount, ref, watch, nextTick, toRaw, defineExpose } from 'vue'
 import * as klinecharts from 'klinecharts'
 
 const props = defineProps({
@@ -58,6 +58,8 @@ const initChart = () => {
     yAxis: { inside: true, axisLine: { show: false }, tickLine: { show: false }, tickText: { color: text, size: 10, paddingLeft: 8 } },
   })
 
+  // 默认加载 MA 和 VOL
+  chartInstance.createTechnicalIndicator('MA', false, { id: 'candle_pane' })
   chartInstance.createTechnicalIndicator('VOL', false, { id: 'pane_1', heightRatio: 0.2 })
 
   // 初始加载
@@ -66,27 +68,55 @@ const initChart = () => {
   }
 }
 
-// --- 🔥 核心修复:智能判断是“更新”还是“重置” ---
+// --- 🎯 新增:暴露给父组件的方法 ---
+
+// 1. 设置主图指标
+const setMainIndicator = (name) => {
+  if (!chartInstance) return
+  // 移除常见主图指标
+  chartInstance.removeTechnicalIndicator('candle_pane', 'MA')
+  chartInstance.removeTechnicalIndicator('candle_pane', 'BOLL')
+
+  if (name && name !== 'Hide') {
+    chartInstance.createTechnicalIndicator(name, false, { id: 'candle_pane' })
+  }
+}
+
+// 2. 设置副图指标
+const setSubIndicator = (name) => {
+  if (!chartInstance) return
+  // 移除常见副图指标
+  const subs = ['VOL', 'MACD', 'KDJ', 'RSI', 'WR']
+  subs.forEach(s => chartInstance.removeTechnicalIndicator('pane_1', s))
+
+  if (name && name !== 'Hide') {
+    chartInstance.createTechnicalIndicator(name, false, { id: 'pane_1', heightRatio: 0.2 })
+  }
+}
+
+defineExpose({
+  setMainIndicator,
+  setSubIndicator
+})
+
+// --- 原有逻辑保持不变 ---
+
 watch(() => props.data, (newData) => {
   if (!chartInstance) return
 
   const rawData = toRaw(newData)
   const currentList = chartInstance.getDataList()
 
-  // 1. 如果新数据为空,清空图表
   if (rawData.length === 0) {
     chartInstance.clearData()
     return
   }
 
-  // 2. 如果当前图表为空,直接加载
   if (currentList.length === 0) {
     chartInstance.applyNewData(rawData)
     return
   }
 
-  // 3. 🔥 关键判断:
-  // 如果第一根 K 线的时间戳变了,说明切换了周期或币种 -> 全量重置
   const firstOld = currentList[0]
   const firstNew = rawData[0]
   if (firstOld.timestamp !== firstNew.timestamp) {
@@ -94,14 +124,12 @@ watch(() => props.data, (newData) => {
     return
   }
 
-  // 4. 如果第一根时间没变,说明是实时跳动或追加 -> 增量更新
   if (rawData.length > 0) {
     const lastData = rawData[rawData.length - 1]
     chartInstance.updateData(lastData)
   }
 }, { deep: true })
 
-// 监听精度
 watch(() => props.precision, (val) => {
   if (chartInstance) {
     if (chartInstance.setPriceVolumePrecision) chartInstance.setPriceVolumePrecision(val.price, val.volume)

文件差異過大導致無法顯示
+ 3 - 1787
src/views/market/details/MarketConditions.vue


+ 2 - 2
vue.config.js

@@ -11,8 +11,8 @@ module.exports = defineConfig({
         // ⚠️【重要】这里必须改成你真实的后端地址!
         // 如果后端在本地,可能是 http://localhost:8000
         // 如果是线上测试服,可能是 http://47.100.xx.xx
-        target: 'http://63.141.230.43:57676',
-
+          //'http://63.141.230.43:57676',
+        target: 'http://backend.66linknow.com', // ✅ 必须加上协议
         changeOrigin: true, // 允许跨域
 
       },

部分文件因文件數量過多而無法顯示